cool-workflow 0.1.84 → 0.1.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +47 -331
- package/apps/architecture-review/app.json +1 -1
- package/apps/architecture-review-fast/app.json +1 -1
- package/apps/architecture-review-fast/workflow.js +2 -0
- package/apps/end-to-end-golden-path/app.json +1 -1
- package/apps/pr-review-fix-ci/app.json +1 -1
- package/apps/release-cut/app.json +1 -1
- package/apps/research-synthesis/app.json +1 -1
- package/dist/capability-core.js +220 -5
- package/dist/capability-registry.js +90 -51
- package/dist/cli/command-surface.js +47 -2
- package/dist/doctor.js +37 -1
- package/dist/mcp/tool-call.js +428 -0
- package/dist/mcp/tool-definitions.js +1027 -0
- package/dist/mcp-surface.js +5 -1416
- package/dist/onramp.js +421 -0
- package/dist/orchestrator.js +20 -15
- package/dist/run-export.js +139 -1
- package/dist/telemetry-demo.js +119 -0
- package/dist/types/report-bundle.js +6 -0
- package/dist/types.js +1 -0
- package/dist/version.js +1 -1
- package/dist/workbench-host.js +1 -8
- package/docs/agent-delegation-drive.7.md +23 -2
- package/docs/cli-mcp-parity.7.md +38 -7
- package/docs/contract-migration-tooling.7.md +4 -0
- package/docs/control-plane-scheduling.7.md +4 -0
- package/docs/dogfood-one-real-repo.7.md +9 -1
- package/docs/durable-state-and-locking.7.md +4 -0
- package/docs/evidence-adoption-reasoning-chain.7.md +4 -0
- package/docs/execution-backends.7.md +4 -0
- package/docs/getting-started.md +40 -2
- package/docs/index.md +51 -37
- package/docs/multi-agent-cli-mcp-surface.7.md +4 -0
- package/docs/multi-agent-eval-replay-harness.7.md +4 -0
- package/docs/multi-agent-operator-ux.7.md +4 -0
- package/docs/node-snapshot-diff-replay.7.md +4 -0
- package/docs/observability-cost-accounting.7.md +4 -0
- package/docs/project-index.md +23 -7
- package/docs/real-execution-backends.7.md +4 -0
- package/docs/release-and-migration.7.md +5 -1
- package/docs/release-history.md +342 -0
- package/docs/release-tooling.7.md +18 -0
- package/docs/report-verifiable-bundle.7.md +123 -0
- package/docs/run-registry-control-plane.7.md +4 -0
- package/docs/run-retention-reclamation.7.md +4 -0
- package/docs/state-explosion-management.7.md +4 -0
- package/docs/team-collaboration.7.md +4 -0
- package/docs/web-desktop-workbench.7.md +4 -0
- package/manifest/plugin.manifest.json +1 -1
- package/manifest/source-context-profiles.json +1 -1
- package/package.json +2 -1
- package/scripts/architecture-review-fast.js +44 -2
- package/scripts/canonical-apps.js +4 -4
- package/scripts/dogfood-release.js +55 -133
- package/scripts/golden-path.js +4 -4
- package/scripts/onramp-check.js +47 -0
- package/scripts/parity-check.js +740 -2
- package/scripts/release-check.js +2 -0
- package/scripts/source-context.js +31 -5
- package/scripts/version-sync-check.js +4 -2
package/dist/doctor.js
CHANGED
|
@@ -25,6 +25,7 @@ const node_os_1 = __importDefault(require("node:os"));
|
|
|
25
25
|
const node_path_1 = __importDefault(require("node:path"));
|
|
26
26
|
const node_child_process_1 = require("node:child_process");
|
|
27
27
|
const agent_config_1 = require("./agent-config");
|
|
28
|
+
const onramp_1 = require("./onramp");
|
|
28
29
|
/** Resolve a bare binary name against $PATH (or accept an explicit path). Returns
|
|
29
30
|
* the resolved path, or undefined when not found. No spawning. */
|
|
30
31
|
function whichBinary(bin, env) {
|
|
@@ -136,7 +137,15 @@ function runDoctor(args = {}, env = process.env, cwd = process.cwd()) {
|
|
|
136
137
|
? "ready — all checks passed"
|
|
137
138
|
: `ready, with ${warns} warning${warns === 1 ? "" : "s"}`
|
|
138
139
|
: `${fails} blocking problem${fails === 1 ? "" : "s"} found`;
|
|
139
|
-
return {
|
|
140
|
+
return {
|
|
141
|
+
schemaVersion: 1,
|
|
142
|
+
ok,
|
|
143
|
+
checks,
|
|
144
|
+
summary,
|
|
145
|
+
...((0, onramp_1.optionEnabled)(args.onramp)
|
|
146
|
+
? { onramp: (0, onramp_1.buildDoctorOnramp)({ cwd, env, changedFrom: typeof args["changed-from"] === "string" ? args["changed-from"] : undefined }) }
|
|
147
|
+
: {})
|
|
148
|
+
};
|
|
140
149
|
}
|
|
141
150
|
/** Human rendering (TTY/default). `--json` callers use the report object directly. */
|
|
142
151
|
function formatDoctorReport(report) {
|
|
@@ -149,5 +158,32 @@ function formatDoctorReport(report) {
|
|
|
149
158
|
}
|
|
150
159
|
lines.push("");
|
|
151
160
|
lines.push(`${report.ok ? "✓" : "✗"} ${report.summary}`);
|
|
161
|
+
if (report.onramp) {
|
|
162
|
+
lines.push("");
|
|
163
|
+
lines.push("Onramp");
|
|
164
|
+
lines.push(` ${report.onramp.summary}`);
|
|
165
|
+
if (report.onramp.recommendedChecks) {
|
|
166
|
+
lines.push("");
|
|
167
|
+
lines.push(" Recommended Checks");
|
|
168
|
+
for (const command of report.onramp.recommendedChecks.commands)
|
|
169
|
+
lines.push(` - ${command}`);
|
|
170
|
+
}
|
|
171
|
+
if (report.onramp.contract && !report.onramp.contract.ok) {
|
|
172
|
+
lines.push("");
|
|
173
|
+
lines.push(" Contract Issues");
|
|
174
|
+
for (const issue of report.onramp.contract.issues) {
|
|
175
|
+
lines.push(` - ${issue.code}: ${issue.detail}`);
|
|
176
|
+
lines.push(` fix: ${issue.fix}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
for (const section of report.onramp.sections) {
|
|
180
|
+
lines.push("");
|
|
181
|
+
lines.push(` ${section.title}: ${section.summary}`);
|
|
182
|
+
for (const action of section.actions) {
|
|
183
|
+
lines.push(` - ${action.command}`);
|
|
184
|
+
lines.push(` ${action.reason}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
152
188
|
return lines.join("\n");
|
|
153
189
|
}
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.callTool = callTool;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const orchestrator_1 = require("../orchestrator");
|
|
10
|
+
const scheduler_1 = require("../scheduler");
|
|
11
|
+
const triggers_1 = require("../triggers");
|
|
12
|
+
const workbench_1 = require("../workbench");
|
|
13
|
+
const capability_core_1 = require("../capability-core");
|
|
14
|
+
const baseRunner = new orchestrator_1.CoolWorkflowRunner({
|
|
15
|
+
pluginRoot: node_path_1.default.resolve(__dirname, "../..")
|
|
16
|
+
});
|
|
17
|
+
// This is an EXPLICIT switch by design, NOT a descriptor-driven generic dispatcher
|
|
18
|
+
// (FreeBSD-audit R1, assessed & closed as won't-do). A data-routing rewrite is
|
|
19
|
+
// ACTIVELY DANGEROUS here, not just risky: (1) `descriptor.entry` does NOT reliably
|
|
20
|
+
// name the function an arm calls (e.g. cw_app_run entry="validateApp" actually calls
|
|
21
|
+
// appRun; cw_commit entry="commit" calls commitEnvelope), so `runner[entry](args)`
|
|
22
|
+
// would silently call the WRONG method; (2) the parity gate is token-set-only +
|
|
23
|
+
// payload-probes ~30 read-only runId caps, so ~150 multi-positional/write arms are
|
|
24
|
+
// UNPROBED — a mis-marshalling generic dispatcher would pass BOTH gates green = the
|
|
25
|
+
// existential public false-green (a CW red line — see DIRECTION.md). The arms
|
|
26
|
+
// work and parity guards the surface; the real defect the audit flagged (a DEAD
|
|
27
|
+
// dispatcher) was already removed (#131). Cheap safe hardening, if ever wanted:
|
|
28
|
+
// broaden parity-check payload probes to cover multi-positional/write arms, and
|
|
29
|
+
// correct the wrong `entry` metadata — NOT a dispatch rewrite.
|
|
30
|
+
function callTool(name, args) {
|
|
31
|
+
const cwd = resolveInvocationCwd(args);
|
|
32
|
+
if (cwd)
|
|
33
|
+
args = { ...args, cwd };
|
|
34
|
+
const runner = baseRunner.withBaseDir(cwd);
|
|
35
|
+
const workCwd = cwd || process.cwd();
|
|
36
|
+
const scheduler = new scheduler_1.Scheduler(workCwd);
|
|
37
|
+
const triggers = new triggers_1.RoutineTriggerBridge(workCwd);
|
|
38
|
+
switch (name) {
|
|
39
|
+
case "cw_list":
|
|
40
|
+
return runner.listWorkflows();
|
|
41
|
+
case "cw_plan":
|
|
42
|
+
return (0, capability_core_1.planSummary)(runner, String(args.workflowId || ""), args);
|
|
43
|
+
case "cw_app_run":
|
|
44
|
+
return (0, capability_core_1.appRun)(runner, args);
|
|
45
|
+
case "cw_status":
|
|
46
|
+
return runner.status(String(args.runId || ""));
|
|
47
|
+
case "cw_init":
|
|
48
|
+
return runner.init(String(args.workflowId || ""), args);
|
|
49
|
+
case "cw_next":
|
|
50
|
+
return runner.next(String(args.runId || ""), args);
|
|
51
|
+
case "cw_state_check":
|
|
52
|
+
return runner.checkState(String(args.runId || ""), args);
|
|
53
|
+
case "cw_contract_show":
|
|
54
|
+
return runner.showContract(String(args.runId || ""), (0, capability_core_1.optionalString)(args.contractId));
|
|
55
|
+
case "cw_node_list":
|
|
56
|
+
return runner.listNodes(String(args.runId || ""));
|
|
57
|
+
case "cw_node_show":
|
|
58
|
+
return runner.showNode(String(args.runId || ""), String(args.nodeId || ""));
|
|
59
|
+
case "cw_node_graph":
|
|
60
|
+
return runner.graphNodes(String(args.runId || ""));
|
|
61
|
+
case "cw_node_snapshot":
|
|
62
|
+
return runner.nodeSnapshot(String(args.runId || ""), String(args.nodeId || ""), args);
|
|
63
|
+
case "cw_node_diff":
|
|
64
|
+
return runner.nodeDiff(String(args.runId || ""), String(args.baselineSnapshotId || args.baseline || ""), String(args.candidateSnapshotId || args.candidate || ""));
|
|
65
|
+
case "cw_node_replay":
|
|
66
|
+
return runner.nodeReplay(String(args.runId || ""), String(args.snapshotId || ""), args);
|
|
67
|
+
case "cw_node_replay_verify":
|
|
68
|
+
return runner.nodeReplayVerify(String(args.runId || ""), String(args.replayId || ""), args);
|
|
69
|
+
case "cw_migration_list":
|
|
70
|
+
return runner.migrationList();
|
|
71
|
+
case "cw_migration_check":
|
|
72
|
+
return runner.migrationCheck(String(args.target || args.runId || ""), args);
|
|
73
|
+
case "cw_migration_prove":
|
|
74
|
+
return runner.migrationProve(String(args.target || args.runId || ""), args);
|
|
75
|
+
case "cw_operator_status":
|
|
76
|
+
return runner.operatorStatus(String(args.runId || ""));
|
|
77
|
+
case "cw_operator_graph":
|
|
78
|
+
return runner.operatorGraph(String(args.runId || ""));
|
|
79
|
+
case "cw_operator_report":
|
|
80
|
+
return runner.operatorReport(String(args.runId || ""));
|
|
81
|
+
case "cw_worker_summary":
|
|
82
|
+
return runner.summarizeWorkerRecords(String(args.runId || ""));
|
|
83
|
+
case "cw_candidate_summary":
|
|
84
|
+
return runner.summarizeCandidateOperatorRecords(String(args.runId || ""));
|
|
85
|
+
case "cw_feedback_summary":
|
|
86
|
+
return runner.summarizeFeedbackRecords(String(args.runId || ""));
|
|
87
|
+
case "cw_commit_summary":
|
|
88
|
+
return runner.summarizeCommitRecords(String(args.runId || ""));
|
|
89
|
+
case "cw_multi_agent_summary":
|
|
90
|
+
return runner.multiAgentSummary(String(args.runId || ""));
|
|
91
|
+
case "cw_multi_agent_graph":
|
|
92
|
+
return runner.multiAgentOperatorGraph(String(args.runId || ""));
|
|
93
|
+
case "cw_multi_agent_dependencies":
|
|
94
|
+
return runner.multiAgentDependencies(String(args.runId || ""));
|
|
95
|
+
case "cw_multi_agent_failures":
|
|
96
|
+
return runner.multiAgentFailures(String(args.runId || ""));
|
|
97
|
+
case "cw_multi_agent_evidence":
|
|
98
|
+
return runner.multiAgentEvidence(String(args.runId || ""));
|
|
99
|
+
case "cw_evidence_reasoning":
|
|
100
|
+
return runner.multiAgentReasoning(String(args.runId || ""), args);
|
|
101
|
+
case "cw_evidence_reasoning_refresh":
|
|
102
|
+
return runner.multiAgentReasoningRefresh(String(args.runId || ""));
|
|
103
|
+
case "cw_multi_agent_run":
|
|
104
|
+
return runner.hostMultiAgentRun((0, capability_core_1.optionalString)(args.runId), args);
|
|
105
|
+
case "cw_multi_agent_status":
|
|
106
|
+
return runner.hostMultiAgentStatus(String(args.runId || ""));
|
|
107
|
+
case "cw_multi_agent_step":
|
|
108
|
+
return runner.hostMultiAgentStep(String(args.runId || ""), args);
|
|
109
|
+
case "cw_multi_agent_blackboard":
|
|
110
|
+
return runner.hostMultiAgentBlackboard(String(args.runId || ""), (0, capability_core_1.optionalString)(args.action || args.operation), args);
|
|
111
|
+
case "cw_multi_agent_score":
|
|
112
|
+
return runner.hostMultiAgentScore(String(args.runId || ""), args);
|
|
113
|
+
case "cw_multi_agent_select":
|
|
114
|
+
return runner.hostMultiAgentSelect(String(args.runId || ""), args);
|
|
115
|
+
case "cw_summary_refresh":
|
|
116
|
+
return runner.summaryRefresh(String(args.runId || ""), args);
|
|
117
|
+
case "cw_summary_show":
|
|
118
|
+
return runner.summaryShow(String(args.runId || ""));
|
|
119
|
+
case "cw_blackboard_summarize":
|
|
120
|
+
return runner.blackboardSummarize(String(args.runId || ""), args);
|
|
121
|
+
case "cw_multi_agent_summarize":
|
|
122
|
+
return runner.multiAgentSummarize(String(args.runId || ""));
|
|
123
|
+
case "cw_multi_agent_graph_compact":
|
|
124
|
+
return runner.multiAgentGraphView(String(args.runId || ""), args);
|
|
125
|
+
case "cw_eval_snapshot":
|
|
126
|
+
return runner.evalSnapshot(String(args.runId || ""), args);
|
|
127
|
+
case "cw_eval_replay":
|
|
128
|
+
return runner.evalReplay(String(args.snapshot || args.snapshotId || args.path || ""), args);
|
|
129
|
+
case "cw_eval_compare":
|
|
130
|
+
return runner.evalCompare(String(args.baseline || args.baselinePath || ""), String(args.replay || args.replayPath || ""));
|
|
131
|
+
case "cw_eval_score":
|
|
132
|
+
return runner.evalScore(String(args.replay || args.replayPath || args.path || ""));
|
|
133
|
+
case "cw_eval_gate":
|
|
134
|
+
return runner.evalGate(String(args.suite || args.suiteId || args.path || ""));
|
|
135
|
+
case "cw_eval_report":
|
|
136
|
+
return runner.evalReport(String(args.replay || args.replayPath || args.path || ""));
|
|
137
|
+
case "cw_multi_agent_run_create":
|
|
138
|
+
return runner.createMultiAgentRun(String(args.runId || ""), args);
|
|
139
|
+
case "cw_multi_agent_run_transition":
|
|
140
|
+
return runner.transitionMultiAgentRun(String(args.runId || ""), String(args.multiAgentRunId || args.id || ""), args);
|
|
141
|
+
case "cw_multi_agent_run_show":
|
|
142
|
+
return runner.showMultiAgentRun(String(args.runId || ""), String(args.multiAgentRunId || args.id || ""));
|
|
143
|
+
case "cw_multi_agent_role_create":
|
|
144
|
+
return runner.createAgentRole(String(args.runId || ""), args);
|
|
145
|
+
case "cw_multi_agent_role_show":
|
|
146
|
+
return runner.showAgentRole(String(args.runId || ""), String(args.roleId || args.id || ""));
|
|
147
|
+
case "cw_multi_agent_group_create":
|
|
148
|
+
return runner.createAgentGroup(String(args.runId || ""), args);
|
|
149
|
+
case "cw_multi_agent_group_show":
|
|
150
|
+
return runner.showAgentGroup(String(args.runId || ""), String(args.groupId || args.id || ""));
|
|
151
|
+
case "cw_multi_agent_membership_create":
|
|
152
|
+
return runner.assignAgentMembership(String(args.runId || ""), args);
|
|
153
|
+
case "cw_multi_agent_membership_show":
|
|
154
|
+
return runner.showAgentMembership(String(args.runId || ""), String(args.membershipId || args.id || ""));
|
|
155
|
+
case "cw_multi_agent_fanout_create":
|
|
156
|
+
return runner.createAgentFanout(String(args.runId || ""), args);
|
|
157
|
+
case "cw_multi_agent_fanout_show":
|
|
158
|
+
return runner.showAgentFanout(String(args.runId || ""), String(args.fanoutId || args.id || ""));
|
|
159
|
+
case "cw_multi_agent_fanin_collect":
|
|
160
|
+
return runner.collectAgentFanin(String(args.runId || ""), args);
|
|
161
|
+
case "cw_multi_agent_fanin_show":
|
|
162
|
+
return runner.showAgentFanin(String(args.runId || ""), String(args.faninId || args.id || ""));
|
|
163
|
+
case "cw_topology_list":
|
|
164
|
+
return runner.listTopologies();
|
|
165
|
+
case "cw_topology_show":
|
|
166
|
+
if (args.runId && (args.topologyRunId || args.id))
|
|
167
|
+
return runner.showTopologyRun(String(args.runId || ""), String(args.topologyRunId || args.id || ""));
|
|
168
|
+
return runner.showTopology(String(args.topologyId || args.id || ""));
|
|
169
|
+
case "cw_topology_validate":
|
|
170
|
+
return runner.validateTopology(String(args.topologyId || args.id || ""));
|
|
171
|
+
case "cw_topology_apply":
|
|
172
|
+
return runner.applyTopology(String(args.runId || ""), String(args.topologyId || args.id || ""), args);
|
|
173
|
+
case "cw_topology_summary":
|
|
174
|
+
return runner.topologySummary(String(args.runId || ""));
|
|
175
|
+
case "cw_topology_graph":
|
|
176
|
+
return runner.topologyGraph(String(args.runId || ""));
|
|
177
|
+
case "cw_blackboard_summary":
|
|
178
|
+
return runner.blackboardSummary(String(args.runId || ""), args);
|
|
179
|
+
case "cw_blackboard_graph":
|
|
180
|
+
return runner.blackboardGraph(String(args.runId || ""));
|
|
181
|
+
case "cw_blackboard_resolve":
|
|
182
|
+
return runner.resolveRunBlackboard(String(args.runId || ""), args);
|
|
183
|
+
case "cw_blackboard_topic_create":
|
|
184
|
+
return runner.createBlackboardTopic(String(args.runId || ""), args);
|
|
185
|
+
case "cw_blackboard_message_post":
|
|
186
|
+
return runner.postBlackboardMessage(String(args.runId || ""), args);
|
|
187
|
+
case "cw_blackboard_message_list":
|
|
188
|
+
return runner.listBlackboardMessages(String(args.runId || ""), args);
|
|
189
|
+
case "cw_blackboard_context_put":
|
|
190
|
+
return runner.putBlackboardContext(String(args.runId || ""), args);
|
|
191
|
+
case "cw_blackboard_artifact_add":
|
|
192
|
+
return runner.addBlackboardArtifact(String(args.runId || ""), args);
|
|
193
|
+
case "cw_blackboard_artifact_list":
|
|
194
|
+
return runner.listBlackboardArtifacts(String(args.runId || ""), args);
|
|
195
|
+
case "cw_blackboard_snapshot":
|
|
196
|
+
return runner.snapshotBlackboard(String(args.runId || ""), args);
|
|
197
|
+
case "cw_coordinator_summary":
|
|
198
|
+
return runner.coordinatorSummary(String(args.runId || ""), args);
|
|
199
|
+
case "cw_coordinator_decision":
|
|
200
|
+
return runner.recordCoordinatorDecision(String(args.runId || ""), args);
|
|
201
|
+
case "cw_audit_summary":
|
|
202
|
+
return runner.auditSummary(String(args.runId || ""));
|
|
203
|
+
case "cw_audit_verify":
|
|
204
|
+
return (0, capability_core_1.auditVerify)(runner, args);
|
|
205
|
+
case "cw_audit_worker":
|
|
206
|
+
return runner.workerAudit(String(args.runId || ""), String(args.workerId || ""));
|
|
207
|
+
case "cw_audit_provenance":
|
|
208
|
+
return runner.evidenceProvenance(String(args.runId || ""), args);
|
|
209
|
+
case "cw_audit_multi_agent":
|
|
210
|
+
return runner.auditMultiAgent(String(args.runId || ""));
|
|
211
|
+
case "cw_audit_policy":
|
|
212
|
+
return runner.auditPolicy(String(args.runId || ""));
|
|
213
|
+
case "cw_audit_role":
|
|
214
|
+
return runner.auditRole(String(args.runId || ""), String(args.roleId || args.id || ""));
|
|
215
|
+
case "cw_audit_blackboard":
|
|
216
|
+
return runner.auditBlackboard(String(args.runId || ""));
|
|
217
|
+
case "cw_audit_judge":
|
|
218
|
+
return runner.auditJudge(String(args.runId || ""));
|
|
219
|
+
case "cw_audit_attest":
|
|
220
|
+
return runner.recordAuditAttestation(String(args.runId || ""), args);
|
|
221
|
+
case "cw_audit_decision":
|
|
222
|
+
return runner.recordAuditDecision(String(args.runId || ""), String(args.workerId || ""), args);
|
|
223
|
+
case "cw_dispatch":
|
|
224
|
+
return runner.dispatch(String(args.runId || ""), args);
|
|
225
|
+
case "cw_sandbox_list":
|
|
226
|
+
return runner.listSandboxProfiles(args);
|
|
227
|
+
case "cw_sandbox_show":
|
|
228
|
+
return runner.showSandboxProfile(String(args.profileId || ""), args);
|
|
229
|
+
case "cw_sandbox_validate":
|
|
230
|
+
return runner.validateSandboxProfile(String(args.profileFile || ""), args);
|
|
231
|
+
case "cw_sandbox_choose":
|
|
232
|
+
case "cw_sandbox_resolve":
|
|
233
|
+
return (0, capability_core_1.sandboxChoose)(runner, args);
|
|
234
|
+
case "cw_backend_list":
|
|
235
|
+
return runner.listBackends(args);
|
|
236
|
+
case "cw_backend_show":
|
|
237
|
+
return runner.showBackend(String(args.backendId || args.backend || ""), args);
|
|
238
|
+
case "cw_backend_probe":
|
|
239
|
+
return runner.probeBackend((0, capability_core_1.optionalString)(args.backendId || args.backend), args);
|
|
240
|
+
case "cw_backend_agent_config_show":
|
|
241
|
+
return (0, capability_core_1.backendAgentConfigShow)(args);
|
|
242
|
+
case "cw_backend_agent_config_set":
|
|
243
|
+
return (0, capability_core_1.backendAgentConfigSet)(args);
|
|
244
|
+
case "cw_result":
|
|
245
|
+
return runner.recordResult(String(args.runId || ""), String(args.taskId || ""), String(args.resultPath || ""), args);
|
|
246
|
+
case "cw_commit":
|
|
247
|
+
return (0, capability_core_1.commitEnvelope)(runner, String(args.runId || ""), args);
|
|
248
|
+
case "cw_report":
|
|
249
|
+
return runner.report(String(args.runId || ""));
|
|
250
|
+
case "cw_app_list":
|
|
251
|
+
return runner.listApps();
|
|
252
|
+
case "cw_app_show":
|
|
253
|
+
return runner.showApp(String(args.appId || ""));
|
|
254
|
+
case "cw_app_validate":
|
|
255
|
+
return runner.validateApp(String(args.target || args.appId || args.path || ""));
|
|
256
|
+
case "cw_app_init":
|
|
257
|
+
return runner.initApp(String(args.appId || ""), args);
|
|
258
|
+
case "cw_app_package":
|
|
259
|
+
return runner.packageApp(String(args.appId || ""), args);
|
|
260
|
+
case "cw_worker_list":
|
|
261
|
+
return runner.listWorkers(String(args.runId || ""), args);
|
|
262
|
+
case "cw_worker_show":
|
|
263
|
+
return runner.showWorker(String(args.runId || ""), String(args.workerId || ""));
|
|
264
|
+
case "cw_worker_manifest":
|
|
265
|
+
return runner.showWorkerManifest(String(args.runId || ""), String(args.workerId || ""));
|
|
266
|
+
case "cw_worker_output":
|
|
267
|
+
return runner.recordWorkerOutput(String(args.runId || ""), String(args.workerId || ""), String(args.resultPath || ""), args);
|
|
268
|
+
case "cw_worker_fail":
|
|
269
|
+
return runner.recordWorkerFailure(String(args.runId || ""), String(args.workerId || ""), String(args.message || ""), args);
|
|
270
|
+
case "cw_worker_validate":
|
|
271
|
+
return runner.validateWorker(String(args.runId || ""), String(args.workerId || ""), (0, capability_core_1.optionalString)(args.path || args.resultPath));
|
|
272
|
+
case "cw_candidate_list":
|
|
273
|
+
return runner.listCandidates(String(args.runId || ""), args);
|
|
274
|
+
case "cw_candidate_show":
|
|
275
|
+
return runner.showCandidate(String(args.runId || ""), String(args.candidateId || ""));
|
|
276
|
+
case "cw_candidate_register":
|
|
277
|
+
return runner.registerCandidate(String(args.runId || ""), args);
|
|
278
|
+
case "cw_candidate_score":
|
|
279
|
+
return runner.scoreCandidate(String(args.runId || ""), String(args.candidateId || ""), args);
|
|
280
|
+
case "cw_candidate_rank":
|
|
281
|
+
return runner.rankCandidates(String(args.runId || ""), args);
|
|
282
|
+
case "cw_candidate_select":
|
|
283
|
+
return runner.selectCandidate(String(args.runId || ""), String(args.candidateId || ""), args);
|
|
284
|
+
case "cw_candidate_reject":
|
|
285
|
+
return runner.rejectCandidate(String(args.runId || ""), String(args.candidateId || ""), String(args.reason || "rejected"));
|
|
286
|
+
// ---- Team Collaboration (v0.1.32) ----
|
|
287
|
+
case "cw_approve":
|
|
288
|
+
return runner.collaborationApprove(String(args.runId || ""), String(args.targetKind || args.kind || ""), String(args.targetId || args.target || ""), args);
|
|
289
|
+
case "cw_reject":
|
|
290
|
+
return runner.collaborationReject(String(args.runId || ""), String(args.targetKind || args.kind || ""), String(args.targetId || args.target || ""), args);
|
|
291
|
+
case "cw_comment_add":
|
|
292
|
+
return runner.collaborationComment(String(args.runId || ""), String(args.targetKind || args.kind || ""), String(args.targetId || args.target || ""), args);
|
|
293
|
+
case "cw_comment_list":
|
|
294
|
+
return runner.collaborationCommentList(String(args.runId || ""), args);
|
|
295
|
+
case "cw_handoff":
|
|
296
|
+
return runner.collaborationHandoff(String(args.runId || ""), String(args.targetKind || args.kind || ""), String(args.targetId || args.target || ""), args);
|
|
297
|
+
case "cw_review_status":
|
|
298
|
+
return runner.reviewStatus(String(args.runId || ""), args);
|
|
299
|
+
case "cw_review_policy":
|
|
300
|
+
return runner.reviewPolicy(String(args.runId || ""), args);
|
|
301
|
+
case "cw_feedback_list":
|
|
302
|
+
return runner.listFeedback(String(args.runId || ""), args);
|
|
303
|
+
case "cw_feedback_show":
|
|
304
|
+
return runner.showFeedback(String(args.runId || ""), String(args.feedbackId || ""));
|
|
305
|
+
case "cw_feedback_collect":
|
|
306
|
+
return runner.collectFeedback(String(args.runId || ""));
|
|
307
|
+
case "cw_feedback_task":
|
|
308
|
+
return runner.createFeedbackTask(String(args.runId || ""), String(args.feedbackId || ""), args);
|
|
309
|
+
case "cw_feedback_resolve":
|
|
310
|
+
return runner.resolveFeedback(String(args.runId || ""), String(args.feedbackId || ""), args);
|
|
311
|
+
case "cw_schedule_create":
|
|
312
|
+
return scheduler.create(args);
|
|
313
|
+
case "cw_schedule_list":
|
|
314
|
+
return scheduler.list(args.status ? String(args.status) : undefined);
|
|
315
|
+
case "cw_schedule_delete":
|
|
316
|
+
return scheduler.delete(String(args.id || ""));
|
|
317
|
+
case "cw_schedule_due":
|
|
318
|
+
return scheduler.due();
|
|
319
|
+
case "cw_schedule_complete":
|
|
320
|
+
return scheduler.complete(String(args.id || ""), args);
|
|
321
|
+
case "cw_schedule_pause":
|
|
322
|
+
return scheduler.pause(String(args.id || ""));
|
|
323
|
+
case "cw_schedule_resume":
|
|
324
|
+
return scheduler.resume(String(args.id || ""));
|
|
325
|
+
case "cw_schedule_run_now":
|
|
326
|
+
return scheduler.runNow(String(args.id || ""));
|
|
327
|
+
case "cw_schedule_history":
|
|
328
|
+
return scheduler.history(args.id ? String(args.id) : undefined);
|
|
329
|
+
case "cw_routine_create":
|
|
330
|
+
return triggers.create(args);
|
|
331
|
+
case "cw_routine_list":
|
|
332
|
+
return triggers.list(args.kind ? String(args.kind) : undefined);
|
|
333
|
+
case "cw_routine_delete":
|
|
334
|
+
return triggers.delete(String(args.id || ""));
|
|
335
|
+
case "cw_routine_fire":
|
|
336
|
+
return triggers.fire(String(args.kind || "api"), args.payload || args);
|
|
337
|
+
case "cw_routine_events":
|
|
338
|
+
return triggers.events(args.id ? String(args.id) : undefined);
|
|
339
|
+
case "cw_registry_refresh":
|
|
340
|
+
return (0, capability_core_1.runRegistryRefresh)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
341
|
+
case "cw_registry_show":
|
|
342
|
+
return (0, capability_core_1.runRegistryShow)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
343
|
+
case "cw_metrics_show":
|
|
344
|
+
return runner.metricsShow(String(args.runId || ""), args);
|
|
345
|
+
case "cw_metrics_summary":
|
|
346
|
+
return (0, capability_core_1.metricsSummary)((0, capability_core_1.runRegistryFor)(args, runner), runner, args);
|
|
347
|
+
case "cw_run_search":
|
|
348
|
+
return (0, capability_core_1.runSearch)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
349
|
+
case "cw_run_list":
|
|
350
|
+
return (0, capability_core_1.runList)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
351
|
+
case "cw_run_show":
|
|
352
|
+
return (0, capability_core_1.runShow)((0, capability_core_1.runRegistryFor)(args, runner), String(args.runId || ""), args);
|
|
353
|
+
case "cw_run_resume":
|
|
354
|
+
return (0, capability_core_1.runResume)((0, capability_core_1.runRegistryFor)(args, runner), runner, String(args.runId || ""), args);
|
|
355
|
+
case "cw_run_archive":
|
|
356
|
+
return (0, capability_core_1.runArchive)((0, capability_core_1.runRegistryFor)(args, runner), (0, capability_core_1.optionalString)(args.runId), args);
|
|
357
|
+
case "cw_run_rerun":
|
|
358
|
+
return (0, capability_core_1.runRerun)((0, capability_core_1.runRegistryFor)(args, runner), String(args.runId || ""), args);
|
|
359
|
+
case "cw_run_export":
|
|
360
|
+
return (0, capability_core_1.runExportArchive)(runner, String(args.runId || ""), args);
|
|
361
|
+
case "cw_run_import":
|
|
362
|
+
return (0, capability_core_1.runImportArchive)(runner, args);
|
|
363
|
+
case "cw_run_verify_import":
|
|
364
|
+
return (0, capability_core_1.runVerifyImport)(runner, String(args.runId || ""), args);
|
|
365
|
+
case "cw_run_inspect_archive":
|
|
366
|
+
return (0, capability_core_1.runInspectArchive)(runner, args);
|
|
367
|
+
case "cw_report_verify_bundle":
|
|
368
|
+
return (0, capability_core_1.runVerifyReportBundle)(runner, args);
|
|
369
|
+
case "cw_report_bundle":
|
|
370
|
+
return (0, capability_core_1.reportBundle)(runner, String(args.runId || ""), args);
|
|
371
|
+
case "cw_run_drive":
|
|
372
|
+
return (0, capability_core_1.runDrivePreview)(runner, args);
|
|
373
|
+
case "cw_run_drive_step":
|
|
374
|
+
return (0, capability_core_1.runDrive)(runner, args);
|
|
375
|
+
case "cw_queue_add":
|
|
376
|
+
return (0, capability_core_1.queueAdd)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
377
|
+
case "cw_queue_list":
|
|
378
|
+
return (0, capability_core_1.queueList)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
379
|
+
case "cw_queue_drain":
|
|
380
|
+
return (0, capability_core_1.queueDrain)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
381
|
+
case "cw_queue_show":
|
|
382
|
+
return (0, capability_core_1.queueShow)((0, capability_core_1.runRegistryFor)(args, runner), String(args.id || ""));
|
|
383
|
+
case "cw_sched_plan":
|
|
384
|
+
return (0, capability_core_1.schedPlan)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
385
|
+
case "cw_sched_lease":
|
|
386
|
+
return (0, capability_core_1.schedLease)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
387
|
+
case "cw_sched_release":
|
|
388
|
+
return (0, capability_core_1.schedRelease)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
389
|
+
case "cw_sched_complete":
|
|
390
|
+
return (0, capability_core_1.schedComplete)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
391
|
+
case "cw_sched_reclaim":
|
|
392
|
+
return (0, capability_core_1.schedReclaim)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
393
|
+
case "cw_sched_reset":
|
|
394
|
+
return (0, capability_core_1.schedReset)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
395
|
+
case "cw_sched_policy_show":
|
|
396
|
+
return (0, capability_core_1.schedPolicyShow)((0, capability_core_1.runRegistryFor)(args, runner));
|
|
397
|
+
case "cw_sched_policy_set":
|
|
398
|
+
return (0, capability_core_1.schedPolicySet)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
399
|
+
case "cw_gc_plan":
|
|
400
|
+
return (0, capability_core_1.gcPlan)((0, capability_core_1.runRegistryFor)(args, runner), (0, capability_core_1.optionalString)(args.runId), args);
|
|
401
|
+
case "cw_gc_run":
|
|
402
|
+
return (0, capability_core_1.gcRun)((0, capability_core_1.runRegistryFor)(args, runner), (0, capability_core_1.optionalString)(args.runId), args);
|
|
403
|
+
case "cw_gc_verify":
|
|
404
|
+
return (0, capability_core_1.gcVerify)((0, capability_core_1.runRegistryFor)(args, runner), String(args.runId || ""), args);
|
|
405
|
+
case "cw_telemetry_verify":
|
|
406
|
+
return (0, capability_core_1.telemetryVerify)(runner, args);
|
|
407
|
+
case "cw_history":
|
|
408
|
+
return (0, capability_core_1.runHistory)((0, capability_core_1.runRegistryFor)(args, runner), args);
|
|
409
|
+
case "cw_workbench_view":
|
|
410
|
+
return (0, workbench_1.buildWorkbenchRunView)(runner, String(args.runId || ""));
|
|
411
|
+
case "cw_workbench_serve":
|
|
412
|
+
// MCP cannot start a blocking server; it returns the descriptor only
|
|
413
|
+
// (identical to `cw workbench serve --json`). The CLI default additionally
|
|
414
|
+
// starts the localhost host — declared divergence (see capability-registry).
|
|
415
|
+
return (0, workbench_1.buildWorkbenchServeDescriptor)(runner, { ...args, once: true });
|
|
416
|
+
default:
|
|
417
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
function resolveInvocationCwd(args) {
|
|
421
|
+
const value = (0, capability_core_1.optionalString)(args.cwd);
|
|
422
|
+
if (!value)
|
|
423
|
+
return undefined;
|
|
424
|
+
const resolved = node_path_1.default.resolve(value);
|
|
425
|
+
if (!node_fs_1.default.statSync(resolved).isDirectory())
|
|
426
|
+
throw new Error(`MCP cwd is not a directory: ${resolved}`);
|
|
427
|
+
return resolved;
|
|
428
|
+
}
|