cool-workflow 0.1.98 → 0.2.1

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.
Files changed (315) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/README.md +18 -7
  4. package/apps/architecture-review/app.json +2 -2
  5. package/apps/architecture-review/workflow.js +12 -12
  6. package/apps/architecture-review-fast/app.json +1 -1
  7. package/apps/end-to-end-golden-path/app.json +1 -1
  8. package/apps/pr-review-fix-ci/app.json +1 -1
  9. package/apps/release-cut/app.json +1 -1
  10. package/apps/research-synthesis/app.json +1 -1
  11. package/dist/cli/dispatch.js +236 -0
  12. package/dist/cli/entry.js +120 -0
  13. package/dist/cli/io.js +21 -4
  14. package/dist/cli/parseargv.js +157 -0
  15. package/dist/cli.js +6 -33
  16. package/dist/core/capability-table.js +3518 -0
  17. package/dist/core/format/help.js +314 -0
  18. package/dist/{state-explosion/format.js → core/format/state-explosion-text.js} +10 -1
  19. package/dist/core/hash.js +137 -0
  20. package/dist/core/multi-agent/candidate-scoring.js +219 -0
  21. package/dist/core/multi-agent/collaboration.js +481 -0
  22. package/dist/core/multi-agent/coordinator.js +515 -0
  23. package/dist/core/multi-agent/eval-replay.js +306 -0
  24. package/dist/core/multi-agent/runtime.js +929 -0
  25. package/dist/core/multi-agent/topology.js +298 -0
  26. package/dist/core/multi-agent/trust-policy.js +197 -0
  27. package/dist/core/pipeline/commit-gate.js +320 -0
  28. package/dist/{pipeline-contract.js → core/pipeline/contract.js} +24 -37
  29. package/dist/core/pipeline/dispatch.js +103 -0
  30. package/dist/core/pipeline/drive-decide.js +227 -0
  31. package/dist/core/pipeline/error-feedback.js +161 -0
  32. package/dist/core/pipeline/loop-expansion.js +124 -0
  33. package/dist/{result-normalize.js → core/pipeline/result-normalize.js} +14 -37
  34. package/dist/core/pipeline/runner.js +230 -0
  35. package/dist/{contract-migration.js → core/state/contract-migration.js} +68 -92
  36. package/dist/{state-migrations.js → core/state/migrations.js} +103 -96
  37. package/dist/core/state/node-projection.js +95 -0
  38. package/dist/core/state/node-snapshot.js +230 -0
  39. package/dist/core/state/run-paths.js +93 -0
  40. package/dist/{schema-validate.js → core/state/schema-validate.js} +35 -28
  41. package/dist/core/state/schema.js +50 -0
  42. package/dist/core/state/state-explosion/digest.js +243 -0
  43. package/dist/core/state/state-explosion/graph.js +527 -0
  44. package/dist/{state-explosion → core/state/state-explosion}/helpers.js +34 -3
  45. package/dist/core/state/state-explosion/report.js +187 -0
  46. package/dist/{state-explosion → core/state/state-explosion}/size.js +25 -7
  47. package/dist/{state-node.js → core/state/state-node.js} +90 -113
  48. package/dist/core/state/types.js +19 -0
  49. package/dist/{validation.js → core/state/validation.js} +64 -131
  50. package/dist/core/trust/evidence-grounding.js +134 -0
  51. package/dist/core/trust/ledger.js +199 -0
  52. package/dist/{telemetry-attestation.js → core/trust/telemetry-attestation.js} +94 -68
  53. package/dist/core/trust/telemetry-ledger.js +127 -0
  54. package/dist/core/types.js +20 -0
  55. package/dist/core/version.js +16 -0
  56. package/dist/{workflow-app-framework.js → core/workflow-apps/app-schema.js} +337 -426
  57. package/dist/mcp/dispatch.js +104 -0
  58. package/dist/mcp/server.js +144 -0
  59. package/dist/mcp-server.js +6 -84
  60. package/dist/{agent-config.js → shell/agent-config.js} +118 -71
  61. package/dist/shell/app-run-cli.js +88 -0
  62. package/dist/shell/audit-cli.js +259 -0
  63. package/dist/shell/audit-provenance.js +83 -0
  64. package/dist/shell/candidate-scoring-io.js +459 -0
  65. package/dist/shell/collaboration-io.js +264 -0
  66. package/dist/shell/commit-summary.js +104 -0
  67. package/dist/shell/commit.js +290 -0
  68. package/dist/shell/coordinator-io.js +476 -0
  69. package/dist/shell/demo-cli.js +19 -0
  70. package/dist/shell/dispatch.js +162 -0
  71. package/dist/shell/doctor.js +292 -0
  72. package/dist/shell/drive.js +885 -0
  73. package/dist/shell/error-feedback-io.js +305 -0
  74. package/dist/shell/eval-io.js +473 -0
  75. package/dist/{multi-agent-eval/format.js → shell/eval-text.js} +78 -49
  76. package/dist/{evidence-reasoning.js → shell/evidence-reasoning.js} +124 -255
  77. package/dist/shell/exec-backend-cli.js +88 -0
  78. package/dist/shell/execution-backend/agent.js +507 -0
  79. package/dist/shell/execution-backend/ci.js +15 -0
  80. package/dist/shell/execution-backend/container.js +69 -0
  81. package/dist/shell/execution-backend/envelopes.js +55 -0
  82. package/dist/shell/execution-backend/local.js +113 -0
  83. package/dist/shell/execution-backend/probes.js +175 -0
  84. package/dist/shell/execution-backend/registry.js +402 -0
  85. package/dist/shell/execution-backend/remote.js +128 -0
  86. package/dist/shell/execution-backend/types.js +11 -0
  87. package/dist/shell/feedback-cli.js +81 -0
  88. package/dist/shell/feedback-operations.js +48 -0
  89. package/dist/shell/fs-atomic.js +276 -0
  90. package/dist/shell/harness.js +98 -0
  91. package/dist/shell/ledger-cli.js +212 -0
  92. package/dist/shell/ledger-io.js +169 -0
  93. package/dist/shell/man-cli.js +89 -0
  94. package/dist/shell/metrics-cli.js +100 -0
  95. package/dist/shell/multi-agent-cli.js +1002 -0
  96. package/dist/shell/multi-agent-host.js +563 -0
  97. package/dist/shell/multi-agent-io.js +387 -0
  98. package/dist/{multi-agent-operator-ux.js → shell/multi-agent-operator-ux.js} +234 -191
  99. package/dist/shell/node-store.js +124 -0
  100. package/dist/{observability/format.js → shell/observability-format.js} +7 -1
  101. package/dist/{observability/intake.js → shell/observability-intake.js} +79 -56
  102. package/dist/{observability.js → shell/observability.js} +159 -332
  103. package/dist/{onramp.js → shell/onramp.js} +11 -0
  104. package/dist/{operator-ux/format.js → shell/operator-ux-text.js} +250 -239
  105. package/dist/shell/operator-ux.js +431 -0
  106. package/dist/shell/orchestrator.js +231 -0
  107. package/dist/shell/pipeline-cli.js +667 -0
  108. package/dist/shell/pipeline.js +217 -0
  109. package/dist/shell/reclamation-io.js +1366 -0
  110. package/dist/shell/registry-cli.js +344 -0
  111. package/dist/{remote-source.js → shell/remote-source.js} +2 -2
  112. package/dist/shell/report-cli.js +101 -0
  113. package/dist/shell/report-view-cli.js +117 -0
  114. package/dist/{orchestrator → shell}/report.js +289 -282
  115. package/dist/shell/reporter.js +62 -0
  116. package/dist/shell/run-export-cli.js +106 -0
  117. package/dist/shell/run-export.js +680 -0
  118. package/dist/shell/run-registry-io.js +1014 -0
  119. package/dist/shell/run-store.js +164 -0
  120. package/dist/{sandbox-profile.js → shell/sandbox-profile.js} +134 -95
  121. package/dist/{scheduler.js → shell/scheduler-io.js} +257 -48
  122. package/dist/shell/scheduling-io.js +321 -0
  123. package/dist/shell/state-cli.js +181 -0
  124. package/dist/shell/state-explosion-cli.js +197 -0
  125. package/dist/shell/telemetry-cli.js +85 -0
  126. package/dist/{telemetry-demo.js → shell/telemetry-demo.js} +149 -119
  127. package/dist/shell/telemetry-ledger-io.js +132 -0
  128. package/dist/{term.js → shell/term.js} +36 -46
  129. package/dist/shell/topology-io.js +361 -0
  130. package/dist/shell/trust-audit.js +472 -0
  131. package/dist/{multi-agent-trust.js → shell/trust-policy-io.js} +67 -205
  132. package/dist/shell/verifier.js +48 -0
  133. package/dist/shell/workbench-host.js +258 -0
  134. package/dist/shell/workbench-text.js +18 -0
  135. package/dist/shell/workbench.js +170 -0
  136. package/dist/shell/worker-cli.js +124 -0
  137. package/dist/shell/worker-isolation.js +852 -0
  138. package/dist/shell/workflow-app-loader.js +650 -0
  139. package/docs/agent-delegation-drive.7.md +4 -0
  140. package/docs/cli-mcp-parity.7.md +282 -219
  141. package/docs/contract-migration-tooling.7.md +4 -0
  142. package/docs/control-plane-scheduling.7.md +4 -0
  143. package/docs/durable-state-and-locking.7.md +4 -0
  144. package/docs/evidence-adoption-reasoning-chain.7.md +4 -0
  145. package/docs/execution-backends.7.md +4 -0
  146. package/docs/multi-agent-cli-mcp-surface.7.md +4 -0
  147. package/docs/multi-agent-eval-replay-harness.7.md +4 -0
  148. package/docs/multi-agent-operator-ux.7.md +4 -0
  149. package/docs/node-snapshot-diff-replay.7.md +4 -0
  150. package/docs/observability-cost-accounting.7.md +6 -1
  151. package/docs/project-index.md +137 -71
  152. package/docs/real-execution-backends.7.md +4 -0
  153. package/docs/release-and-migration.7.md +4 -0
  154. package/docs/release-tooling.7.md +4 -0
  155. package/docs/remote-source-review.7.md +4 -4
  156. package/docs/report-verifiable-bundle.7.md +1 -1
  157. package/docs/run-registry-control-plane.7.md +4 -0
  158. package/docs/run-retention-reclamation.7.md +25 -0
  159. package/docs/security-trust-hardening.7.md +3 -1
  160. package/docs/state-explosion-management.7.md +4 -0
  161. package/docs/team-collaboration.7.md +4 -0
  162. package/docs/web-desktop-workbench.7.md +15 -1
  163. package/manifest/plugin.manifest.json +1 -1
  164. package/manifest/source-context-profiles.json +9 -13
  165. package/package.json +1 -1
  166. package/scripts/agents/agent-adapter-core.js +22 -2
  167. package/scripts/agents/claude-p-agent.js +8 -3
  168. package/scripts/agents/cw-attest-wrap.js +2 -2
  169. package/scripts/agents/gemini-agent.js +5 -1
  170. package/scripts/agents/opencode-agent.js +5 -1
  171. package/scripts/bump-version.js +4 -3
  172. package/scripts/canonical-apps.js +4 -4
  173. package/scripts/dogfood-architecture-review.js +2 -3
  174. package/scripts/dogfood-release.js +3 -3
  175. package/scripts/gen-parity-doc.js +15 -2
  176. package/scripts/golden-path.js +4 -4
  177. package/scripts/onramp-check.js +1 -1
  178. package/scripts/parity-check.js +38 -21
  179. package/scripts/release-flow.js +2 -2
  180. package/scripts/sync-project-index.js +51 -27
  181. package/scripts/validate-run-state-schema.js +2 -2
  182. package/scripts/version-sync-check.js +30 -30
  183. package/dist/candidate-scoring.js +0 -729
  184. package/dist/capability-core.js +0 -1189
  185. package/dist/capability-registry.js +0 -885
  186. package/dist/cli/command-surface.js +0 -494
  187. package/dist/cli/format.js +0 -56
  188. package/dist/cli/handlers/audit.js +0 -82
  189. package/dist/cli/handlers/blackboard.js +0 -81
  190. package/dist/cli/handlers/candidate.js +0 -40
  191. package/dist/cli/handlers/clones.js +0 -34
  192. package/dist/cli/handlers/collaboration.js +0 -61
  193. package/dist/cli/handlers/eval.js +0 -40
  194. package/dist/cli/handlers/ledger.js +0 -169
  195. package/dist/cli/handlers/maintenance.js +0 -107
  196. package/dist/cli/handlers/multi-agent.js +0 -165
  197. package/dist/cli/handlers/node.js +0 -41
  198. package/dist/cli/handlers/operational.js +0 -155
  199. package/dist/cli/handlers/operator.js +0 -146
  200. package/dist/cli/handlers/registry.js +0 -68
  201. package/dist/cli/handlers/run.js +0 -153
  202. package/dist/cli/handlers/scheduling.js +0 -132
  203. package/dist/cli/handlers/workbench.js +0 -41
  204. package/dist/cli/handlers/worker.js +0 -45
  205. package/dist/cli/run-summary.js +0 -45
  206. package/dist/clones.js +0 -162
  207. package/dist/collaboration.js +0 -726
  208. package/dist/commit.js +0 -592
  209. package/dist/compare.js +0 -18
  210. package/dist/coordinator/classify.js +0 -45
  211. package/dist/coordinator/paths.js +0 -42
  212. package/dist/coordinator/util.js +0 -126
  213. package/dist/coordinator.js +0 -990
  214. package/dist/daemon.js +0 -44
  215. package/dist/dispatch.js +0 -250
  216. package/dist/doctor.js +0 -212
  217. package/dist/drive.js +0 -864
  218. package/dist/error-feedback.js +0 -419
  219. package/dist/evidence-grounding.js +0 -184
  220. package/dist/execution-backend/agent.js +0 -354
  221. package/dist/execution-backend/probes.js +0 -112
  222. package/dist/execution-backend/util.js +0 -47
  223. package/dist/execution-backend.js +0 -961
  224. package/dist/gates.js +0 -48
  225. package/dist/harness.js +0 -61
  226. package/dist/ledger.js +0 -313
  227. package/dist/loop-expansion.js +0 -60
  228. package/dist/mcp/tool-call.js +0 -470
  229. package/dist/mcp/tool-definitions.js +0 -1066
  230. package/dist/mcp-surface.js +0 -30
  231. package/dist/multi-agent/graph.js +0 -84
  232. package/dist/multi-agent/helpers.js +0 -141
  233. package/dist/multi-agent/ids.js +0 -20
  234. package/dist/multi-agent/paths.js +0 -22
  235. package/dist/multi-agent-eval/normalize.js +0 -51
  236. package/dist/multi-agent-eval.js +0 -678
  237. package/dist/multi-agent-host.js +0 -777
  238. package/dist/multi-agent.js +0 -984
  239. package/dist/node-projection.js +0 -59
  240. package/dist/node-snapshot.js +0 -260
  241. package/dist/operator-ux.js +0 -631
  242. package/dist/orchestrator/app-operations.js +0 -211
  243. package/dist/orchestrator/audit-operations.js +0 -182
  244. package/dist/orchestrator/candidate-operations.js +0 -117
  245. package/dist/orchestrator/cli-options.js +0 -294
  246. package/dist/orchestrator/collaboration-operations.js +0 -86
  247. package/dist/orchestrator/feedback-operations.js +0 -81
  248. package/dist/orchestrator/host-operations.js +0 -78
  249. package/dist/orchestrator/lifecycle-operations.js +0 -650
  250. package/dist/orchestrator/migration-operations.js +0 -44
  251. package/dist/orchestrator/multi-agent-operations.js +0 -362
  252. package/dist/orchestrator/topology-operations.js +0 -84
  253. package/dist/orchestrator.js +0 -925
  254. package/dist/pipeline-runner.js +0 -285
  255. package/dist/reclamation/hash.js +0 -72
  256. package/dist/reclamation.js +0 -812
  257. package/dist/reporter.js +0 -67
  258. package/dist/run-export.js +0 -815
  259. package/dist/run-registry/derive.js +0 -175
  260. package/dist/run-registry/format.js +0 -124
  261. package/dist/run-registry/gc.js +0 -251
  262. package/dist/run-registry/policy.js +0 -16
  263. package/dist/run-registry/queue.js +0 -115
  264. package/dist/run-registry.js +0 -850
  265. package/dist/run-state-schema.js +0 -68
  266. package/dist/scheduling.js +0 -184
  267. package/dist/state-explosion.js +0 -1014
  268. package/dist/state.js +0 -367
  269. package/dist/telemetry-ledger.js +0 -196
  270. package/dist/topology.js +0 -565
  271. package/dist/triggers.js +0 -184
  272. package/dist/trust-audit.js +0 -644
  273. package/dist/types/blackboard.js +0 -2
  274. package/dist/types/candidate.js +0 -2
  275. package/dist/types/collaboration.js +0 -2
  276. package/dist/types/core.js +0 -2
  277. package/dist/types/drive.js +0 -10
  278. package/dist/types/error-feedback.js +0 -2
  279. package/dist/types/evidence-reasoning.js +0 -2
  280. package/dist/types/execution-backend.js +0 -2
  281. package/dist/types/multi-agent.js +0 -2
  282. package/dist/types/observability.js +0 -2
  283. package/dist/types/pipeline.js +0 -2
  284. package/dist/types/reclamation.js +0 -8
  285. package/dist/types/report-bundle.js +0 -6
  286. package/dist/types/result.js +0 -2
  287. package/dist/types/run-registry.js +0 -2
  288. package/dist/types/run.js +0 -2
  289. package/dist/types/sandbox.js +0 -2
  290. package/dist/types/schedule.js +0 -2
  291. package/dist/types/state-node.js +0 -2
  292. package/dist/types/topology.js +0 -2
  293. package/dist/types/trust.js +0 -2
  294. package/dist/types/workbench.js +0 -2
  295. package/dist/types/worker.js +0 -2
  296. package/dist/types/workflow-app.js +0 -2
  297. package/dist/types.js +0 -44
  298. package/dist/util/fingerprint.js +0 -19
  299. package/dist/util/fingerprint.test.js +0 -27
  300. package/dist/verifier.js +0 -78
  301. package/dist/version.js +0 -8
  302. package/dist/workbench-host.js +0 -192
  303. package/dist/workbench.js +0 -192
  304. package/dist/worker-accept/acceptance.js +0 -114
  305. package/dist/worker-accept/blackboard-fanout.js +0 -80
  306. package/dist/worker-accept/blackboard-linkage.js +0 -19
  307. package/dist/worker-accept/context.js +0 -2
  308. package/dist/worker-accept/telemetry-ledger.js +0 -126
  309. package/dist/worker-accept/validation.js +0 -77
  310. package/dist/worker-accept/verifier-completion.js +0 -73
  311. package/dist/worker-isolation/helpers.js +0 -51
  312. package/dist/worker-isolation/paths.js +0 -46
  313. package/dist/worker-isolation.js +0 -656
  314. package/dist/workflow-api.js +0 -131
  315. /package/dist/{types → core/types}/boundary.js +0 -0
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ // cli/parseargv.ts — parseArgv, KNOWN_COMMANDS, suggestCommand.
3
+ //
4
+ // Pure. Byte-exact port of src/orchestrator.ts:789-887 in the old build.
5
+ // See docs/rebuild/PLAN.md byte-compat item 15 and SPEC/cli-surface.md "Argument
6
+ // parsing (parseArgv)" / SPEC/orchestrator.md "Module-level exports".
7
+ //
8
+ // Rules (do not "clean up" — every one of these is pinned by a conformance
9
+ // case):
10
+ // - first token is the command, taken as-is;
11
+ // - "--" is the POSIX end-of-options mark: every later token is a
12
+ // positional, even one that starts with "-" or "--";
13
+ // - a token with no leading "-" is a positional;
14
+ // - a single-dash token maps through the short-alias table below; a name
15
+ // not in the table keeps its own name ("-dir" -> option "dir"); joined
16
+ // short flags like "-qr" are NOT split apart, the key stays "qr";
17
+ // - a flag's value is the NEXT token only when that token does not start
18
+ // with "-" (single or double dash); otherwise the value is `true`;
19
+ // - "--key=value" gives a value that may itself start with "-";
20
+ // - a repeated option becomes an array of values.
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.KNOWN_COMMANDS = void 0;
23
+ exports.parseArgv = parseArgv;
24
+ exports.suggestCommand = suggestCommand;
25
+ /** src/orchestrator.ts:811 — single-dash short-flag table. */
26
+ const SHORT_FLAG_TABLE = {
27
+ q: "question",
28
+ r: "repo",
29
+ d: "dir",
30
+ l: "link",
31
+ a: "agent-command",
32
+ h: "help",
33
+ v: "version",
34
+ };
35
+ function looksLikeFlagValue(token) {
36
+ return token !== undefined && !token.startsWith("-");
37
+ }
38
+ /** src/orchestrator.ts:1009-1016 — appendOption: a repeated key becomes an
39
+ * array; a third+ occurrence pushes onto that same array. */
40
+ function appendOption(options, key, value) {
41
+ if (Object.prototype.hasOwnProperty.call(options, key)) {
42
+ const existing = options[key];
43
+ if (Array.isArray(existing)) {
44
+ existing.push(value);
45
+ }
46
+ else {
47
+ options[key] = [existing, value];
48
+ }
49
+ }
50
+ else {
51
+ options[key] = value;
52
+ }
53
+ }
54
+ function parseArgv(argv) {
55
+ const command = argv.length > 0 ? argv[0] : "";
56
+ const rest = argv.slice(1);
57
+ const positionals = [];
58
+ const options = {};
59
+ let i = 0;
60
+ let endOfOptions = false;
61
+ while (i < rest.length) {
62
+ const token = rest[i];
63
+ if (endOfOptions) {
64
+ positionals.push(token);
65
+ i += 1;
66
+ continue;
67
+ }
68
+ if (token === "--") {
69
+ endOfOptions = true;
70
+ i += 1;
71
+ continue;
72
+ }
73
+ if (!token.startsWith("-")) {
74
+ positionals.push(token);
75
+ i += 1;
76
+ continue;
77
+ }
78
+ // token starts with "-" (either "-x" or "--flag[=value]").
79
+ const isLong = token.startsWith("--");
80
+ const body = isLong ? token.slice(2) : token.slice(1);
81
+ const eqIndex = body.indexOf("=");
82
+ if (eqIndex !== -1) {
83
+ const rawKey = body.slice(0, eqIndex);
84
+ const value = body.slice(eqIndex + 1);
85
+ const key = isLong ? rawKey : SHORT_FLAG_TABLE[rawKey] || rawKey;
86
+ appendOption(options, key, value);
87
+ i += 1;
88
+ continue;
89
+ }
90
+ const key = isLong ? body : SHORT_FLAG_TABLE[body] || body;
91
+ const next = rest[i + 1];
92
+ if (looksLikeFlagValue(next)) {
93
+ appendOption(options, key, next);
94
+ i += 2;
95
+ }
96
+ else {
97
+ appendOption(options, key, true);
98
+ i += 1;
99
+ }
100
+ }
101
+ return { command, positionals, options };
102
+ }
103
+ /** src/orchestrator.ts:842-851 — every top-level command name, used for
104
+ * "did you mean". NOTE: this deliberately does NOT include "ledger" even
105
+ * though the dispatcher handles it and formatHelp lists it — a known,
106
+ * intentionally-preserved wart (see docs/rebuild/PLAN.md "Kept byte-for-byte"). */
107
+ exports.KNOWN_COMMANDS = new Set([
108
+ "help", "list", "doctor", "info", "search", "man", "init", "quickstart",
109
+ "plan", "status", "next", "dispatch", "result", "state", "commit", "report",
110
+ "app", "sandbox", "backend", "contract", "node", "feedback", "worker",
111
+ "audit", "candidate", "review", "loop", "schedule", "routine", "registry",
112
+ "run", "queue", "clones", "orphans", "history", "audit-run", "multi-agent",
113
+ "topology", "summary", "blackboard", "coordinator", "metrics", "operator",
114
+ "sched", "gc", "telemetry", "migration", "demo", "workbench", "approve",
115
+ "reject", "comment", "handoff", "graph", "eval", "version", "update", "fix",
116
+ ]);
117
+ /** Levenshtein edit distance between two strings. */
118
+ function levenshtein(a, b) {
119
+ const m = a.length;
120
+ const n = b.length;
121
+ const dp = new Array(n + 1);
122
+ for (let j = 0; j <= n; j += 1)
123
+ dp[j] = j;
124
+ for (let i = 1; i <= m; i += 1) {
125
+ let prev = dp[0];
126
+ dp[0] = i;
127
+ for (let j = 1; j <= n; j += 1) {
128
+ const temp = dp[j];
129
+ dp[j] = a[i - 1] === b[j - 1]
130
+ ? prev
131
+ : 1 + Math.min(prev, dp[j], dp[j - 1]);
132
+ prev = temp;
133
+ }
134
+ }
135
+ return dp[n];
136
+ }
137
+ /** src/orchestrator.ts:875-887 — nearest known command by edit distance.
138
+ * Gives `undefined` when the input is under 2 chars, or when the best
139
+ * distance is over 3 or over half the input length. */
140
+ function suggestCommand(input) {
141
+ if (!input || input.length < 2)
142
+ return undefined;
143
+ let best;
144
+ let bestDistance = Infinity;
145
+ for (const candidate of exports.KNOWN_COMMANDS) {
146
+ const distance = levenshtein(input, candidate);
147
+ if (distance < bestDistance) {
148
+ bestDistance = distance;
149
+ best = candidate;
150
+ }
151
+ }
152
+ if (best === undefined)
153
+ return undefined;
154
+ if (bestDistance > 3 || bestDistance > input.length / 2)
155
+ return undefined;
156
+ return best;
157
+ }
package/dist/cli.js CHANGED
@@ -1,36 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ // src/cli.ts — the real CLI binary entry point. Compiles to dist/cli.js,
4
+ // which scripts/cw.js requires and which conformance/run.js drives
5
+ // directly with `node dist/cli.js <args>`. Byte-exact shape of src/cli.ts
6
+ // in the old build (import, call, catch — nothing else lives here).
3
7
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.recoveryHint = recoveryHint;
5
- const command_surface_1 = require("./cli/command-surface");
6
- const term_1 = require("./term");
7
- (0, command_surface_1.runCli)(process.argv.slice(2)).catch((error) => {
8
- const message = error instanceof Error ? error.message : String(error);
9
- const err = process.stderr;
10
- // Errors go to stderr → color must key off stderr (not the term default).
11
- err.write(`${(0, term_1.bold)("cw:", err)} ${(0, term_1.red)(message, err)}\n`);
12
- // Brew-style recovery: a failed command should suggest a concrete next move. The hint
13
- // is TTY-gated (tryHint dims only on a TTY) and goes to stderr, so piped stdout stays
14
- // clean. It points at CW's OWN diagnose/discovery verbs (vendor-neutral) — never a model.
15
- const hint = recoveryHint(message);
16
- if (hint)
17
- err.write(` ${(0, term_1.tryHint)(hint, err)}\n`);
18
- process.exitCode = 1;
19
- });
20
- /** Map a top-level error message to ONE copy-pasteable recovery command (brew's `Try:`).
21
- * Content-based so it stays correct for any vendor; returns undefined rather than a
22
- * wrong guess when nothing matches (no hint beats a misleading one). */
23
- function recoveryHint(message) {
24
- const m = message.toLowerCase();
25
- if (m.startsWith("unknown command"))
26
- return "cw help";
27
- if (m.includes("not configured") || m.includes("agent backend"))
28
- return "cw doctor";
29
- if (m.includes("missing") && m.includes("repo"))
30
- return 'cw -q "<question>" -dir <project-folder>';
31
- if (m.includes("app") && (m.includes("not found") || m.includes("not available")))
32
- return "cw app list";
33
- if (m.includes("run id") || m.includes("run not found"))
34
- return "cw run list";
35
- return undefined;
36
- }
8
+ const entry_1 = require("./cli/entry");
9
+ (0, entry_1.main)(process.argv.slice(2));