diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/Design.md | 22 | ||||
| -rw-r--r-- | doc/Specifications.md | 21 |
2 files changed, 42 insertions, 1 deletions
diff --git a/doc/Design.md b/doc/Design.md index d3ace2a..1ca8cbe 100644 --- a/doc/Design.md +++ b/doc/Design.md @@ -198,6 +198,28 @@ message: <localized status> result: <final natural-language answer; completed only> ``` `result`は選択localeで生成する。内部Tool名、policy internals、chain-of-thoughtは返さない。 + +### 5.6 MCP 2026-07-28 / dual-era境界 + +- 公式C# SDK `2.0.0`へwire処理を委譲する。独自に`server/discover`、必須`_meta`、MCP routing header、modern error codeを再実装しない。 +- HTTP transportは`Stateless = true`。modern HTTP requestごとにserver contextを作成し、`Mcp-Session-Id`を使用しない。 +- SDKのlegacy initialize fallbackは維持する。Legacy SSEはSDK defaultの無効状態を使い、独自GET拒否middlewareは置かない。 +- Agent Sessionは`session_id`で明示的に管理するapplication stateであり、transport sessionとは独立する。 + +### 5.7 Tasks Extension + +- `ModelContextProtocol.Extensions.Tasks 2.0.0`の`WithTasks` filterを`agent_run`だけoptional task対応として登録する。`agent_status`は同期Toolのまま維持する。 +- `PersistentMcpTaskStore`は`state/mcp-tasks/<task-id>.json`へWriteThrough後のatomic moveで保存する。directoryのuser-only DACLはApp層で作成する。 +- store作成IDをAgent Task IDとして使用し、Agent registryのterminal completionを待ってSDK filterへ最終結果を返す。非Tasks callは従来どおりenqueue直後に返す。 +- `tasks/cancel`のrequest cancellationをAgent TaskのCancellationTokenへ接続する。restart recoveryではworking/input-requiredを`failed`、reasonを`server_restarted`とする。 +- 既定TTLは24時間、poll intervalは1000 ms。期限切れfileはaccess時に削除する。 + +### 5.8 起動preflightとHTTP request log + +- Appはtransport構築前に`WindowsPlatformCheck`を実行する。administrator/BFE/WFP probeが1つでも失敗した場合はhostをbuild/startせずfatalとする。 +- `StartAsync`完了後にだけ`IMcpHostObserver.Ready`を通知するため、「起動中」と「接続可能」を区別できる。 +- HTTP middlewareはsocket endpointとrouting metadataだけを`logs/http.jsonl`へJSON Linesで保存する。forwarded header、credential header、query、payloadは保存しない。 +- `RollingFileWriter`をapplication/http logで共用し、同じsize/retention policyでrotationする。stdioの運用出力はstderrだけへ送る。 --- ## 6. Ollama統合設計 ### 6.1 APIモデル diff --git a/doc/Specifications.md b/doc/Specifications.md index 2aa19c5..e723d03 100644 --- a/doc/Specifications.md +++ b/doc/Specifications.md @@ -173,6 +173,25 @@ agent-mcp check [--config <path>] [--lang <locale>] CLIは起動方式と表示言語を変更するためのI/Fであり、SandboxPolicyやOllama sampling値を個別overrideするI/Fにしない。 +### 5.7 MCP 2026-07-28とTasks Extension + +| ID | 要件 | +| --- | --- | +| MCP-2026-01 | HTTPの主経路はMCP `2026-07-28`とし、`server/discover`およびrequest単位の必須`_meta`を処理する。 | +| MCP-2026-02 | HTTPはstatelessとし、`Mcp-Session-Id`を発行・要求しない。既存`session_id`はAgent会話IDでありtransport sessionではない。 | +| MCP-2026-03 | 旧initialize clientは公式SDKのdual-era fallbackで受け付けるが、Legacy HTTP+SSE endpointは提供しない。 | +| MCP-2026-04 | `io.modelcontextprotocol/tasks`を公式Extensionとして宣言する。対応clientの`agent_run`はTask result、非対応clientは従来のqueued textを受け取る。 | +| MCP-2026-05 | MCP Task IDとAgent Task IDは同一UUIDで相関し、`tasks/get`と`agent_status`のどちらからも同じ作業を追跡可能にする。 | +| MCP-2026-06 | Agentの`queued/planning/running`はMCP `working`へ、terminal状態は対応するTask terminal状態へ写像する。 | +| MCP-2026-07 | MCP Taskは設定可能なTTL/poll intervalを持ち、process restart後の未完了Taskは`failed/server_restarted`へ確定する。実行は再開しない。 | + +### 5.8 起動・HTTP観測性 + +- `serve`はbind前に管理者権限、BFE、WFP transaction、filter add/deleteを検査し、不足時は具体的なerrorと対処をstderrへ出してexit code 2で終了しなければならない。 +- ready messageは実際のtransport開始後だけ出力し、HTTPではendpoint/protocol/stateless/PID/log path、stdioではprotocol/PID/log pathを含める。 +- HTTP request logは実socketのremote/local endpoint、method、path、status、duration、標準MCP routing headerを記録可能とする。 +- `Authorization`、`Cookie`、query、body、prompt、画像、Base64をrequest logへ記録してはならず、`X-Forwarded-For`を接続元として信用してはならない。 + --- ## 6. Ollama機能仕様 @@ -437,7 +456,7 @@ Context要約を開始する利用率閾値は設定可能でなければならã | REC-02 | Process hang | timeout後、安全にJob配下を停止。 | | REC-03 | Application終了 | Job Object配下を必ずkillする。 | | REC-04 | stdio EOF/Client消失 | 当該Client所有のTaskを安全停止する。 | -| REC-05 | Streamable HTTP session終了 | 当該Session所有のTaskを安全停止する。通常のHTTP request完了は切断とみなさない。 | +| REC-05 | Streamable HTTP server停止/明示cancel | 対象Taskを安全停止する。stateless HTTPのrequest完了やsocket切断はAgent Session終了とみなさない。 | | REC-06 | crash後起動 | Recovery Journalに基づき残留Task Resourceをcleanにしてからserveする。 | | REC-07 | cleanup失敗 | serveを開始せずfatal errorとする。 | |
