Repository navigation
Closed
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/enhancementmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientNice to have; do when convenientstatus:done
Description
Relocated from dezren39/darwin-nix#294 on 2026-10-28 (placement audit): mcpx's single source lives in developing-today/code (pkgs/mcpx); re-home tracked at #309. Original body below; issue references inside it are historical (dezren39/nix numbering).
mcpx is mostly a gateway, but one planned surface turns a sentence into a script against the configured servers.
Today mcpx prompt "<what you want>" matches a saved recipe or generates a script to review, governed by prompt.autonomy (decision 0002: off < advise < ask < propose < apply < run).
Wanted, as one declared feature across CLI, /v1, MCP and the plugin:
- Script only: a sentence in, the script bytes out (typed against the generated client, type-checked), without running anything. This is the default at
propose. - Run: the same, executed, with the result returned (at
run, subject to the daemon'sautonomy.maxceiling). - Where the model comes from must be stated: a caller-supplied model/provider, not MCP sampling (deprecated in 2026-07-28).
- Generated scripts saved as recipes on request, so a repeated sentence becomes a recipe match instead of a regeneration.
Related: #112 (hooks), #113 (administration by intent), decision 0002.
Acceptance criteria
mcpx prompt "<sentence>"can return the generated script bytes without executing anything (script-only mode), typed against the generated client and type-checked before it is returned.- Run mode executes the same generated script and returns its result, gated by the caller's autonomy level and the daemon's
autonomy.maxceiling. - The model/provider used for generation is caller-supplied and stated in the response; MCP sampling is not used.
- A generated script can be saved as a recipe on request, and a later identical sentence matches the saved recipe instead of regenerating.
- The feature behaves the same across the CLI,
/v1, MCP, and plugin surfaces, with tests covering script-only vs run gating.
Metadata
Metadata
Assignees
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/enhancementmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientNice to have; do when convenientstatus:done
Activity
developing-today commentedon Oct 28, 2026
CODE-886
dezren39 commentedon Oct 28, 2026
History carried over from dezren39/darwin-nix#294 (verbatim, oldest first):
@dezren39 · 2026-10-27T14:50:30Z
Intake review
Fleet-monitor intake pass (2026-10-27). Related: #112 (hooks), #113 (administration by intent), decision 0002 (autonomy ladder) — all cited in the issue. The body already specifies the four surfaces and the autonomy gating well; I appended acceptance criteria and normalized labels (kind/enhancement, priority/low, effort/l, app/mcpx).
Notes / risks: this is a design-level feature, not a bug — the caller-supplied model requirement (no MCP sampling, deprecated 2026-07-28) is the load-bearing constraint and should be settled before implementation. Suggested approach: land script-only mode first (it is the default at
proposeand the safest slice), then run mode behind the autonomy ceiling, then recipe saving.@dezren39 · 2026-10-28T19:23:17Z
Triage verdict (task 2318): LARGELY IMPLEMENTED — one acceptance item fails and is routed.
Verified at developing-today/code main
35726e8e(mcpx source:pkgs/mcpx):internal/cli/consumer.go:421CmdPrompttakes--autonomy/--run; at propose the scriptSourceis returned unexecuted, at run it executes, and a daemon-ceiling clamp is reported on stderr (Resolution.ClampedBy), with e2e coverage ininternal/e2e/autonomy_test.goandceiling_test.go. Generated scripts are validated before return (internal/cli/script_validate_test.go).Resolution.Saveand the CLI prints 'keep it withmcpx recipes save <name> -'.Resolution.Modelis in the response shape.Client.Intenttakes (prompt, autonomy, values, session) — no model/provider from the caller; the daemon's only provider config is its ownrepair.provider/repair.modelsettings (internal/daemon/consumer.goresolveProvider). And when no provider answers,generate()(daemon/consumer.go, 'generation by sampling', ~:605+) falls back to an MCP sampling request through the broker (elicit.SampleAsk) — the CLI even calls that the default state ('generated by sampling; review it before running'). Sampling is deprecated in 2026-07-28 and this issue's acceptance says it must not be used for generation.Routing: remainder enqueued as task 2644 (queue
repo-health-nix-pilot, deduperepo-health:v1:fix:dezren39/nix:issue:294): caller-supplied model/provider on the intent path (CLI flag + /v1 field), and remove the sampling fallback fromgenerate()so no-provider returns the existing no-model resolution instead. This issue stays open for that remainder.52 remaining items
dezren39 commentedon Oct 29, 2026
🤖 Agent note · parked
compare with the recordsremains QUEUED (queued since 00:35Z, unchanged through this shift's ~5-minute poll) — fleet runner stall, not a PR failure.compare with the recordssettles green → merge PR mcpx prompt: caller-supplied model/provider on the intent path + remove the MCP sampling fallback from generate() (#1961) #2004 and complete task 2904.mcpx prompt: caller-supplied model/provider on the intent path + remo…
dezren39 commentedon Oct 29, 2026
🤖 Agent note · done