13 KiB
作成
LocalTicketBackend によって作成されました。
Intake summary
Marked ready by yoi ticket state.
State changed
Marked ready by yoi ticket state.
State changed
Ticket を workspace-panel が queued にしました。
Decision
Routing decision: implementation_ready_parallel
Reason:
- Workspace Dashboard Queue により、この Ticket は Orchestrator routing 対象として明示許可された。
- User standing directive: blocker が無いものは並列実行する。現在
00001KVJHYP4QPlugin instance lifecycle Coder が inprogress だが、この Ticket は MCP CLI inspection namespaceであり直接 dependency/conflict はない。Potential shared CLI parser edits are manageable in separate worktree and will be resolved at merge/review boundary。 - Ticket body は
yoi mcpnamespace、list/show/tools/resources/prompts commands、human/JSON output、workspace/profile resolution、read-only inspection boundary、static-vs-live availability、secret/content redaction、acceptance testsを実装可能な粒度で定義している。 - 未解決 blocker relation はない。Relations are
relatedcontext to completed MCP foundation Tickets。 - Orchestrator worktree は clean、matching branch/worktree はなし。
- Risk domain は CLI / MCP / inspection / secrets / read-only boundary だが、Ticket は no server process start、no tool execution、no resources/prompts content fetch、secrets/content non-printing、bounded outputを明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。
Evidence checked:
- Ticket
00001KVJKHAFEbody / thread / relations / artifacts。 TicketRelationQuery(00001KVJKHAFE): only non-blockingrelatedrecords to completed MCP config/lifecycle/tools/resources/list_changed Tickets。TicketOrchestrationPlanQuery(00001KVJKHAFE): no previous plan records; accepted plan recorded now。- Workspace state:
- Orchestrator worktree clean at
142fdffb。 - queued: this Ticket only。
- inprogress:
00001KVJHYP4QPlugin instance lifecycle。 - visible spawned child:
yoi-coder-00001KVJHYP4Qrunning。 - no matching MCP CLI branch/worktree。
- Orchestrator worktree clean at
IntentPacket:
Intent:
- Add read-only
yoi mcpCLI inspection namespace for configured/resolved MCP servers and provider-discovered tools/resources/prompts eligibility。 - Provide bounded human-readable and JSON reports without bypassing runtime Tool/resource/prompt paths。
Binding decisions / invariants:
- CLI inspection must not start MCP server processes。
- CLI inspection must not call MCP tools or fetch resource/prompt content。
- Static config/resolution and live Pod state must be distinguished explicitly。
- If live state is unavailable/unimplemented, output must say
not live/unavailable, not silently stale。 - Secrets, resolved secret/env values, resource contents, and prompt full text must not be printed in human or JSON output。
- External server descriptions/schemas/annotations are untrusted and bounded/truncated。
- Keep MCP separate from Plugin CLI namespace。
- No Streamable HTTP/OAuth/sampling/elicitation/install/update/distribution implementation。
Requirements / acceptance criteria:
yoi --helpshows MCP CLI namespace。yoi mcp list --jsonreturns resolved MCP server bounded structured report。yoi mcp show <server> --jsonreturns server identity, transport kind, trust policy summary, capabilities summary, diagnostics。yoi mcp tools [<server>] --jsonreturns Yoi stable tool name, MCP server/tool identity, schema availability, registration status/diagnostics。yoi mcp resources [<server>] --jsonandyoi mcp prompts [<server>] --jsonreturn summaries/eligibility without content fetch。- Human-readable output distinguishes empty/missing/invalid/unavailable。
- Focused CLI tests cover list/show/tools/resources/prompts, missing server, invalid config, JSON output, and secret/content non-leakage。
- Validation includes fmt, focused tests, check, diff, TicketDoctor, Nix build。
Next action:
- Record
queued -> inprogressand commit Ticket records before creating implementation worktree and spawning Coder。
State changed
Ticket body/thread, relation metadata, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded MCP CLI inspection context were checked. There is no unresolved blocking dependency, no direct conflict with current Plugin instance lifecycle work, no matching worktree/branch, and no missing planning decision. Accepting this queued Ticket for parallel implementation before worktree/Pod side effects.
Implementation report
Implementation orchestration start:
- Acceptance records were committed on Orchestrator branch:
12d7e69f ticket: accept mcp cli inspection。 - Created implementation worktree
/home/hare/Projects/yoi/.worktree/00001KVJKHAFE-mcp-cli-inspectionon branchimpl/00001KVJKHAFE-mcp-cli-inspectionat12d7e69f。 - Spawned Coder Pod
yoi-coder-00001KVJKHAFEwith write scope limited to the implementation worktree and read-only root scope only for runtime workspace identity。 - Coder task explicitly forbids root/original workspace implementation, MCP server process startup, tools/call/resource/prompt content fetch, Plugin CLI namespace mixing, merge, Ticket close, and cleanup。
Next action:
- Wait for Coder implementation report, then inspect branch diff/validation evidence and route to Reviewer。
Implementation report
Coder implementation report received from yoi-coder-00001KVJKHAFE.
Implementation commit:
c91f5fc9 mcp: add cli inspection
Changed areas reported:
- Added
crates/yoi/src/mcp_cli.rs:- Read-only
yoi mcpinspection reports。 - Commands:
list,show,tools,resources,prompts。 - Human and
--jsonoutput。 - Static resolved config inspection only; no MCP server processes are started。
- Live/provider-discovered state is explicitly reported as
not_live/unavailable。 - Env values, secret refs, env refs, args, resource content, and prompt content are redacted/omitted。
- Resource/prompt operation eligibility is reported without content fetch。
- Read-only
- Updated
crates/yoi/src/main.rs:- Added
mcpnamespace to parser, dispatcher, help output, and parser tests。
- Added
Coder validation reported:
cargo test -p yoi mcp: passed。cargo check -p yoi: passed。cargo fmt --check: passed。git diff --check: passed。cargo run -p yoi -- --help | grep -E 'yoi mcp (list|show|tools)': passed; help shows MCP namespace。yoi ticket doctor: passed。
Package impact:
- No dependency, lockfile, source-filter, or
package.nixchanges。 - Nix not run because packaging inputs were not changed。
Known risks / deferrals:
- Live Pod MCP state is not integrated; provider-discovered tools/resources/prompts are therefore reported as
not_live/unavailablerather than stale or fabricated。 toolscannot list Yoi stable provider tool names without live discovery; JSON schema includes future item shape, but item list is empty in static mode。- Touched
crates/yoi/src/main.rsCLI parser/help, so there is possible narrow conflict risk with parallel Plugin Service/Ingress work. No Plugin Service/Ingress files were touched。
Orchestrator evidence checked before review dispatch:
- Implementation worktree is clean。
- HEAD is
c91f5fc9。 - Diff from acceptance
12d7e69f..HEADis one implementation commit touching 2 files, about 1438 insertions / 1 deletion。 git diff --check 12d7e69f..HEADproduced no diagnostics。
Next action:
- Dispatch Reviewer for r1 review against Ticket requirements, with focus on read-only inspection boundary, no process start/no tools-call/no resource-prompt content fetch, static vs live unavailable honesty, redaction, JSON/human shape, help/tests, and conflict risk。
Plan
Review dispatch:
- Spawned Reviewer Pod
yoi-reviewer-00001KVJKHAFE-r1against implementation branchimpl/00001KVJKHAFE-mcp-cli-inspection。 - Review target commit:
c91f5fc9 mcp: add cli inspection。 - Review baseline:
12d7e69f。 - Reviewer task focuses on read-only inspection boundary, no process start/no tools-call/no resource/prompt content fetch, static vs live unavailable honesty, secret/content redaction, JSON/human report shape, namespace separation from Plugin CLI, help/tests, scope creep absence, and parallel CLI merge conflict risk。
- Reviewer is instructed not to edit source, commit, merge, close the Ticket, or use TicketReview directly; it will report verdict/evidence back to Orchestrator。
Review: approve
Verdict: approve
確認範囲:
- Ticket contract / Orchestrator IntentPacket。
- Implementation diff:
12d7e69f..c91f5fc9。 - 主な対象:
crates/yoi/src/mcp_cli.rscrates/yoi/src/main.rs
- MCP CLI path の process spawn / MCP client / tool-call / resource-read / prompt-get behavior を検索。
crates/yoi/src/main.rsの merge conflict risk も確認。
Blocking issues: none。
Approval evidence:
- MCP CLI は static/read-only に留まっている。
mcp_cli.rsは manifest/profile config types を使い、MCP runtime/client path を import していない。inspect_static_configは Profile/config を resolve して static-only diagnostics を report し、stdio lifecycle/client API を呼ばない。- CLI implementation から
std::process::Command,Command::new,spawn, MCP lifecycle/client calls, ToolRegistry calls,tools/callpath は見つからない。
- Resource/prompt content fetch はない。
resources/read/prompts/getは operation label / stable name としてだけ出ており、registration_status: "not_live",content_state: "not_fetched"を返す。
- Static vs live state is explicit。
- JSON includes
inspection_modebooleans:starts_servers: false,calls_tools: false,fetches_resource_or_prompt_content: false。 - Reports include
live_state.status = "not_live"; human output sayslive: not live / unavailable。
- JSON includes
- Secrets/args are redacted。
- stdio args are summarized as
arg_countplusargs_redacted: true。 - env config is summarized by counts/kinds with
values_redacted: true; env literal values, secret refs, and env refs are not emitted。 - Tests cover non-leakage for arg secret, literal env value, secret ref, and env ref。
- stdio args are summarized as
- MCP namespace remains separate。
main.rsadds distinct top-levelmcpparser/dispatcher path; Plugin CLI is not mixed beyond adjacency in top-level help/parsing。
- Top-level
yoi --helpshows MCP namespace and commands。
Non-blocking concerns / follow-ups:
- Implementation is intentionally static-only. It does not surface real live provider-discovered tools/resources/prompts or live
notifications/*/list_changedrestart/reinitialize diagnostics. It clearly reports unavailable/not live, which matches this implementation boundary; future live-state inspection can extend it。 yoi mcp --help/ subcommand help may flow throughParseErrorand error exit rather than normal help exit. Top-levelyoi --helpsatisfies the stated acceptance criterion, so this is not blocking。
Reviewer validation:
cargo fmt --check: passed。git diff --check 12d7e69f..HEAD: passed。cargo test -p yoi mcp: passed, 8 tests。cargo check -p yoi: passed。cargo run -p yoi -- --help: passed; output includesyoi mcp list,show, andtools|resources|prompts。cargo run -p yoi -- ticket doctor: passed,doctor: ok。- Conflict-risk check:
main.rsmerge risk low; trivial merge check produced no conflict markers。 nix build .#yoi --no-linknot run because no package/source-filter concern was found。
Worktree status at review end: source tree clean; ignored target/ only。