ticket: accept mcp tools call

This commit is contained in:
Keisuke Hirata 2026-06-20 17:48:39 +09:00
parent 381db88e33
commit 92432ad750
No known key found for this signature in database
3 changed files with 68 additions and 2 deletions

View File

@ -1 +1,2 @@
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WSD","kind":"blocked_by","related_ticket":"00001KVHR3WS6","note":"tools/call execution requires registered MCP tools. `00001KVHR3WS6` is queued and depends on lifecycle; leave this Ticket queued until tool registration is closed.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
{"id":"orch-plan-20260620-084746-2","ticket_id":"00001KVHR3WSD","kind":"accepted_plan","accepted_plan":{"summary":"Registered MCP tool invocationを existing ordinary Tool pathから MCP `tools/call` に接続する。PreToolCall/Tool permission denial は server request 前に適用し、normal result / MCP `isError` / JSON-RPC protocol error を区別し、content/structuredContent/_meta を boundedに Tool resultへ変換する。","branch":"impl/00001KVHR3WSD-mcp-tools-call","worktree":"/home/hare/Projects/yoi/.worktree/00001KVHR3WSD-mcp-tools-call","role_plan":"ユーザーが blocker のない作業の並列実行を許可したため、Dashboard/Console refactor と並行して MCP `tools/call` Ticket を専用 worktree `.worktree/00001KVHR3WSD-mcp-tools-call` で開始する。Coder は child worktree narrow write scopeで実装し、Reviewer は permission-before-call、ordinary Tool history path、bounded result serialization、no resources/prompts/list_changed scope creep を確認する。"},"author":"yoi-orchestrator","at":"2026-06-20T08:47:46Z"}

View File

@ -1,8 +1,8 @@
---
title: 'MCP: execute tools/call through ordinary Tool path'
state: 'queued'
state: 'inprogress'
created_at: '2026-06-20T05:30:04Z'
updated_at: '2026-06-20T06:00:44Z'
updated_at: '2026-06-20T08:48:15Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['mcp', 'tools-call', 'permission', 'history', 'bounded-output']

View File

@ -27,3 +27,68 @@ Next:
- `00001KVHR3WS6` が closed になった後、改めて reroute する。
---
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T08:48:07Z -->
## Decision
Routing decision: implementation_ready_parallel
Reason:
- User directive: 「blocker無いなら並列にやっちゃえよ」。この指示により、未解決 blocker がない Ticket は並列実装対象として扱う。
- 前回は `00001KVHR3WS6` tool registration が未完了だったため blocked/queued hold としたが、現在 `00001KVHR3WS6` は closed。
- Ticket body は MCP `tools/call` execution、permission-before-call、ordinary Tool result/history path、normal result / MCP `isError` / JSON-RPC protocol error の区別、bounded result serialization を実装可能な粒度で定義している。
- 現在 inprogress は Dashboard/Console TUI refactor `00001KVHX0WBE` のみで、作業領域は TUI/CLI naming/module boundary。MCP `tools/call` 実装とは直接 conflict しないため、別 worktree / sibling Coder Pod で並列化できる。
- Orchestrator worktree は clean、matching branch/worktree はなし。
- Risk domain は mcp / tools-call / permission / history / bounded-output だが、Ticket は permission denied before server request、ordinary Tool result/history path、bounded output、untrusted content treatment を明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。
Evidence checked:
- Ticket `00001KVHR3WSD` body / thread / relations / artifacts。
- `TicketRelationQuery(00001KVHR3WSD)`: outgoing `depends_on 00001KVHR3WS6` is now closed。
- `TicketOrchestrationPlanQuery(00001KVHR3WSD)`: previous `blocked_by 00001KVHR3WS6` is resolved; accepted plan recorded now。
- Workspace state:
- Orchestrator worktree clean at `381db88e`
- inprogress: `00001KVHX0WBE` only。
- visible spawned child: Dashboard/Console Coder only。
- no matching MCP tools-call branch/worktree。
IntentPacket:
Intent:
- Route invocation of registered MCP-backed Yoi tools to MCP `tools/call` through ordinary Yoi Tool execution/result/history paths。
- Enforce existing PreToolCall / Tool permission policy before any MCP server request is sent。
Binding decisions / invariants:
- Permission denial must occur before sending `tools/call` to the MCP server。
- MCP result content is untrusted and must not become hidden context injection。
- Results must be recorded through ordinary Tool call/result history path。
- Distinguish normal result, MCP `isError: true`, and JSON-RPC protocol error。
- Serialize content blocks / structuredContent / `_meta` boundedly; oversize/rich results must be truncated or rejected by explicit policy。
- Preserve lifecycle/registration redaction and bounds from previous MCP Tickets。
- Do not implement resources/read, prompts/get, list_changed, sampling, or elicitation in this Ticket。
Requirements / acceptance criteria:
- MCP mock tool returns normal result through ordinary Yoi Tool result。
- MCP `isError: true` is represented distinctly from JSON-RPC protocol failure。
- Permission denied call is not sent to MCP server。
- Oversize/rich results are bounded/truncated or rejected according to explicit policy。
- Tool history shows ordinary tool call/result, not hidden context injection。
- Tests cover normal result, `isError`, protocol error, permission denial, and output bounds。
Escalate if:
- Existing ToolRegistry contribution path cannot route invocation without broad provider-substrate redesign。
- Permission-before-call cannot be represented without changing Tool policy architecture。
- Result serialization requires product decisions beyond a safe bounded subset。
Next action:
- Record `queued -> inprogress` and commit Ticket records before creating implementation worktree and spawning Coder。
---
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T08:48:15Z from: queued to: inprogress reason: orchestrator_acceptance_parallel_mcp_tools_call field: state -->
## State changed
User explicitly authorized parallel implementation when no blocker exists. Ticket body/thread, relation metadata, closed MCP tool-registration dependency, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded MCP tools/call context were checked. Dependency `00001KVHR3WS6` is closed, no matching worktree/branch exists, and no missing planning decision was found. Accepting this queued Ticket for parallel implementation before worktree/Pod side effects.
---