cool-workflow 0.2.2 → 0.2.4
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/apps/architecture-review/app.json +1 -1
- package/apps/architecture-review-fast/app.json +1 -1
- 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/cli/dispatch.js +13 -6
- package/dist/cli/entry.js +41 -1
- package/dist/cli/io.js +12 -22
- package/dist/cli/parseargv.js +1 -0
- package/dist/core/capability-data.js +3 -2
- package/dist/core/format/completion.js +68 -0
- package/dist/core/format/help.js +31 -6
- package/dist/core/format/safe-json.js +73 -0
- package/dist/core/format/state-explosion-text.js +1 -1
- package/dist/core/multi-agent/candidate-scoring.js +5 -1
- package/dist/core/multi-agent/collaboration.js +3 -3
- package/dist/core/multi-agent/coordinator.js +5 -5
- package/dist/core/multi-agent/runtime.js +4 -4
- package/dist/core/multi-agent/topology.js +3 -3
- package/dist/core/pipeline/dispatch.js +18 -4
- package/dist/core/pipeline/drive-decide.js +2 -1
- package/dist/core/state/migrations.js +16 -1
- package/dist/core/state/state-explosion/digest.js +13 -13
- package/dist/core/state/state-explosion/graph.js +17 -11
- package/dist/core/state/state-explosion/report.js +6 -6
- package/dist/core/util/cli-args.js +33 -0
- package/dist/core/util/numeric-flag.js +40 -0
- package/dist/core/version.js +1 -1
- package/dist/mcp/server.js +99 -11
- package/dist/shell/audit-cli.js +57 -25
- package/dist/shell/coordinator-io.js +73 -13
- package/dist/shell/dispatch.js +1 -1
- package/dist/shell/doctor.js +80 -1
- package/dist/shell/drive.js +251 -49
- package/dist/shell/eval-text.js +2 -2
- package/dist/shell/evidence-reasoning.js +4 -4
- package/dist/shell/execution-backend/agent.js +30 -2
- package/dist/shell/execution-backend/container.js +4 -1
- package/dist/shell/execution-backend/local.js +19 -11
- package/dist/shell/feedback-cli.js +6 -6
- package/dist/shell/fs-atomic.js +218 -29
- package/dist/shell/man-cli.js +6 -0
- package/dist/shell/metrics-cli.js +2 -1
- package/dist/shell/multi-agent-cli.js +367 -323
- package/dist/shell/multi-agent-host.js +9 -9
- package/dist/shell/multi-agent-operator-ux.js +80 -38
- package/dist/shell/node-store.js +10 -4
- package/dist/shell/observability.js +1 -1
- package/dist/shell/operator-ux-text.js +22 -22
- package/dist/shell/operator-ux.js +15 -14
- package/dist/shell/orchestrator.js +49 -38
- package/dist/shell/pipeline-cli.js +107 -42
- package/dist/shell/reclamation-io.js +88 -10
- package/dist/shell/registry-cli.js +23 -17
- package/dist/shell/remote-source.js +13 -8
- package/dist/shell/report-cli.js +45 -0
- package/dist/shell/report.js +2 -1
- package/dist/shell/run-registry-io.js +78 -19
- package/dist/shell/run-store.js +74 -2
- package/dist/shell/scheduling-io.js +12 -13
- package/dist/shell/state-cli.js +2 -7
- package/dist/shell/state-explosion-cli.js +17 -9
- package/dist/shell/topology-io.js +36 -5
- package/dist/shell/trust-audit.js +224 -22
- package/dist/shell/trust-policy-io.js +1 -1
- package/dist/shell/worker-cli.js +35 -31
- package/dist/shell/workflow-app-loader.js +67 -1
- package/dist/wiring/capability-table/basics.js +33 -8
- package/dist/wiring/capability-table/exec-backend.js +28 -19
- package/dist/wiring/capability-table/multi-agent.js +187 -180
- package/dist/wiring/capability-table/parity.js +1 -0
- package/dist/wiring/capability-table/pipeline.js +64 -52
- package/dist/wiring/capability-table/registry-core.js +30 -11
- package/dist/wiring/capability-table/reporting.js +147 -106
- package/dist/wiring/capability-table/scheduling-registry.js +201 -167
- package/dist/wiring/capability-table/state.js +59 -51
- package/dist/wiring/capability-table/trust-ledger.js +52 -28
- package/dist/wiring/capability-table/workflow-apps.js +85 -70
- package/docs/agent-delegation-drive.7.md +4 -0
- package/docs/candidate-scoring.7.md +1 -1
- package/docs/canonical-workflow-apps.7.md +7 -7
- package/docs/cli-mcp-parity.7.md +26 -16
- package/docs/contract-migration-tooling.7.md +4 -0
- package/docs/control-plane-scheduling.7.md +4 -0
- package/docs/coordinator-blackboard.7.md +17 -17
- package/docs/dogfood-one-real-repo.7.md +11 -11
- package/docs/durable-state-and-locking.7.md +4 -0
- package/docs/end-to-end-golden-path.7.md +14 -14
- package/docs/evidence-adoption-reasoning-chain.7.md +4 -0
- package/docs/execution-backends.7.md +4 -0
- package/docs/getting-started.md +37 -37
- package/docs/multi-agent-cli-mcp-surface.7.md +21 -17
- package/docs/multi-agent-eval-replay-harness.7.md +17 -13
- package/docs/multi-agent-operator-ux.7.md +23 -19
- package/docs/multi-agent-runtime-core.7.md +22 -22
- package/docs/multi-agent-topologies.7.md +6 -6
- package/docs/multi-agent-trust-policy-audit.7.md +11 -11
- package/docs/node-snapshot-diff-replay.7.md +4 -0
- package/docs/observability-cost-accounting.7.md +4 -0
- package/docs/operator-ux.7.md +34 -34
- package/docs/pipeline-runner.7.md +4 -4
- package/docs/project-index.md +31 -4
- package/docs/real-execution-backends.7.md +4 -0
- package/docs/release-and-migration.7.md +5 -1
- package/docs/release-tooling.7.md +22 -0
- package/docs/routines.md +4 -4
- package/docs/run-registry-control-plane.7.md +23 -19
- package/docs/run-retention-reclamation.7.md +24 -3
- package/docs/scheduled-tasks.md +14 -14
- package/docs/security-trust-hardening.7.md +15 -15
- package/docs/state-explosion-management.7.md +14 -10
- package/docs/team-collaboration.7.md +4 -0
- package/docs/trust-audit-anchor.7.md +4 -0
- package/docs/unix-principles.md +3 -1
- package/docs/verifier-gated-commit.7.md +1 -1
- package/docs/web-desktop-workbench.7.md +4 -0
- package/docs/workflow-app-framework.7.md +13 -13
- package/manifest/plugin.manifest.json +1 -1
- package/package.json +3 -2
- package/scripts/agents/claude-p-agent.js +2 -2
- package/scripts/block-unapproved-tag.sh +42 -6
- package/scripts/bump-version.js +27 -10
- package/scripts/canonical-apps.js +4 -4
- package/scripts/children/batch-delegate-child.js +52 -2
- package/scripts/dogfood-release.js +1 -1
- package/scripts/fake-date-for-reproduction.js +44 -0
- package/scripts/golden-path.js +4 -4
- package/scripts/purity-baseline.json +0 -27
- package/scripts/release-flow.js +194 -13
- package/scripts/release-oneclick.js +407 -0
- package/scripts/verdict-keygen.js +83 -0
- package/scripts/verify-bump-reproduction.sh +148 -0
- package/scripts/verify-verdict-signature.js +61 -0
- package/scripts/version-sync-check.js +39 -22
- package/skills/cool-workflow/SKILL.md +9 -9
- package/skills/cool-workflow/references/commands.md +89 -88
- package/ui/workbench/app.css +37 -1
- package/ui/workbench/app.js +124 -6
package/docs/operator-ux.7.md
CHANGED
|
@@ -10,7 +10,7 @@ deterministic summaries for people, while it keeps JSON for scripts and MCP.
|
|
|
10
10
|
Human status is the default:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
|
|
13
|
+
cw status <run-id>
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
The status view gives you run id, workflow/app id and version, loop stage, active
|
|
@@ -21,8 +21,8 @@ path, and the next command it puts forward.
|
|
|
21
21
|
Machine-readable status is still there for you:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
cw status <run-id> --json
|
|
25
|
+
cw status <run-id> --format json
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
`CoolWorkflowRunner.status()` and MCP `cw_status` still give back structured
|
|
@@ -39,19 +39,19 @@ The things it puts forward are deterministic and use only commands that are in
|
|
|
39
39
|
the CW CLI. Examples:
|
|
40
40
|
|
|
41
41
|
```text
|
|
42
|
-
|
|
42
|
+
cw dispatch <run-id> --limit 4
|
|
43
43
|
reason: pending tasks are ready for the active phase
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
cw worker manifest <run-id> <worker-id>
|
|
46
46
|
reason: running workers need their manifests inspected
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
cw feedback show <run-id> <feedback-id>
|
|
49
49
|
reason: open feedback should be resolved before more dispatch
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
cw candidate register <run-id> --worker <worker-id>
|
|
52
52
|
reason: a completed worker result has not been registered as a candidate
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
cw commit <run-id> --selection <selection-id>
|
|
55
55
|
reason: a verified selected candidate is ready for a verifier-gated commit
|
|
56
56
|
```
|
|
57
57
|
|
|
@@ -63,15 +63,15 @@ work is done, the advisor points to `cw report <run-id> --show`.
|
|
|
63
63
|
Use the top-level graph command for a small console map:
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
cw graph <run-id>
|
|
67
|
+
cw graph <run-id> --json
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
The legacy node command still works:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
cw node graph <run-id>
|
|
74
|
+
cw node graph <run-id> --json
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
The human graph puts phases, tasks, dispatches, workers, result nodes,
|
|
@@ -90,10 +90,10 @@ v0.1.21 adds clear multi-agent operator views that answer who is dependent on
|
|
|
90
90
|
whom, who is blocked, and which evidence went into the accepted result:
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
cw multi-agent graph <run-id>
|
|
94
|
+
cw multi-agent dependencies <run-id>
|
|
95
|
+
cw multi-agent failures <run-id>
|
|
96
|
+
cw multi-agent evidence <run-id>
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
The same derived model is in `status`, `report --show`, and
|
|
@@ -106,14 +106,14 @@ trace from agent membership to verifier-gated commit.
|
|
|
106
106
|
`cw report` still writes the Markdown report file and prints its path:
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
|
|
109
|
+
cw report <run-id>
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
Use `--show` or `--summary` when the operator needs a console report that is easy to read:
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
cw report <run-id> --show
|
|
116
|
+
cw report <run-id> --summary
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
The console report gives the same high-value status panels plus active and
|
|
@@ -124,25 +124,25 @@ pending tasks, evidence paths and locators, and resource inspection commands.
|
|
|
124
124
|
The chief run resources have human summaries by default and JSON when you ask for it:
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
cw worker summary <run-id>
|
|
128
|
+
cw worker summary <run-id> --json
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
cw candidate summary <run-id>
|
|
131
|
+
cw candidate summary <run-id> --json
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
cw feedback summary <run-id>
|
|
134
|
+
cw feedback summary <run-id> --json
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
cw commit summary <run-id>
|
|
137
|
+
cw commit summary <run-id> --json
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
139
|
+
cw multi-agent summary <run-id>
|
|
140
|
+
cw multi-agent summary <run-id> --json
|
|
141
|
+
cw multi-agent graph <run-id>
|
|
142
|
+
cw multi-agent graph <run-id> --json
|
|
143
|
+
cw multi-agent dependencies <run-id>
|
|
144
|
+
cw multi-agent failures <run-id>
|
|
145
|
+
cw multi-agent evidence <run-id>
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
Worker summaries show allocated/running/verified/failed/rejected counts,
|
|
@@ -93,10 +93,10 @@ commit stage.
|
|
|
93
93
|
Commands that look at runs print stable JSON:
|
|
94
94
|
|
|
95
95
|
```text
|
|
96
|
-
cw
|
|
97
|
-
cw
|
|
98
|
-
cw
|
|
99
|
-
cw
|
|
96
|
+
cw contract show <run-id> [contract-id]
|
|
97
|
+
cw node list <run-id>
|
|
98
|
+
cw node show <run-id> <node-id>
|
|
99
|
+
cw node graph <run-id>
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
## EXAMPLES
|
package/docs/project-index.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# Cool Workflow Project Index
|
|
2
2
|
|
|
3
|
-
Generated from the current repository code on 2026-07-
|
|
3
|
+
Generated from the current repository code on 2026-07-11 by `npm run sync:project-index`.
|
|
4
4
|
|
|
5
5
|
## Snapshot
|
|
6
6
|
|
|
7
7
|
- Package: `cool-workflow`
|
|
8
|
-
- Version: `0.2.
|
|
9
|
-
- Source modules: `
|
|
8
|
+
- Version: `0.2.4`
|
|
9
|
+
- Source modules: `149`
|
|
10
10
|
- Workflow apps: `8`
|
|
11
11
|
- Docs: `62`
|
|
12
|
-
- Smoke tests: `
|
|
12
|
+
- Smoke tests: `204`
|
|
13
13
|
- Repository: https://github.com/coo1white/cool-workflow
|
|
14
14
|
|
|
15
15
|
## Architecture
|
|
@@ -84,7 +84,9 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
84
84
|
- [cli/parseargv.ts](../src/cli/parseargv.ts)
|
|
85
85
|
- [core/capability-data.ts](../src/core/capability-data.ts)
|
|
86
86
|
- [core/capability-table.ts](../src/core/capability-table.ts)
|
|
87
|
+
- [core/format/completion.ts](../src/core/format/completion.ts)
|
|
87
88
|
- [core/format/help.ts](../src/core/format/help.ts)
|
|
89
|
+
- [core/format/safe-json.ts](../src/core/format/safe-json.ts)
|
|
88
90
|
- [core/format/state-explosion-text.ts](../src/core/format/state-explosion-text.ts)
|
|
89
91
|
- [core/hash.ts](../src/core/hash.ts)
|
|
90
92
|
- [core/multi-agent/collaboration.ts](../src/core/multi-agent/collaboration.ts)
|
|
@@ -116,7 +118,9 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
116
118
|
- [core/types/boundary.ts](../src/core/types/boundary.ts)
|
|
117
119
|
- [core/types/execution-backend.ts](../src/core/types/execution-backend.ts)
|
|
118
120
|
- [core/types/observability.ts](../src/core/types/observability.ts)
|
|
121
|
+
- [core/util/cli-args.ts](../src/core/util/cli-args.ts)
|
|
119
122
|
- [core/util/collate.ts](../src/core/util/collate.ts)
|
|
123
|
+
- [core/util/numeric-flag.ts](../src/core/util/numeric-flag.ts)
|
|
120
124
|
- [mcp/dispatch.ts](../src/mcp/dispatch.ts)
|
|
121
125
|
- [mcp/server.ts](../src/mcp/server.ts)
|
|
122
126
|
- [shell/agent-config.ts](../src/shell/agent-config.ts)
|
|
@@ -281,6 +285,7 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
281
285
|
Smoke tests mirror the public contracts. The high-signal suites are:
|
|
282
286
|
|
|
283
287
|
- [agent-backend-concurrent-user-env-smoke.js](../test/agent-backend-concurrent-user-env-smoke.js)
|
|
288
|
+
- [agent-backend-sandbox-deny-smoke.js](../test/agent-backend-sandbox-deny-smoke.js)
|
|
284
289
|
- [agent-backend-user-env-smoke.js](../test/agent-backend-user-env-smoke.js)
|
|
285
290
|
- [agent-config-atomic-write-smoke.js](../test/agent-config-atomic-write-smoke.js)
|
|
286
291
|
- [agent-delegation-drive-smoke.js](../test/agent-delegation-drive-smoke.js)
|
|
@@ -303,6 +308,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
303
308
|
- [claude-p-agent-wrapper-smoke.js](../test/claude-p-agent-wrapper-smoke.js)
|
|
304
309
|
- [cli-arg-parsing-smoke.js](../test/cli-arg-parsing-smoke.js)
|
|
305
310
|
- [cli-command-surface-smoke.js](../test/cli-command-surface-smoke.js)
|
|
311
|
+
- [cli-epipe-smoke.js](../test/cli-epipe-smoke.js)
|
|
306
312
|
- [cli-format-smoke.js](../test/cli-format-smoke.js)
|
|
307
313
|
- [cli-handler-clones-smoke.js](../test/cli-handler-clones-smoke.js)
|
|
308
314
|
- [cli-handler-eval-node-smoke.js](../test/cli-handler-eval-node-smoke.js)
|
|
@@ -324,6 +330,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
324
330
|
- [contract-migration-tooling-smoke.js](../test/contract-migration-tooling-smoke.js)
|
|
325
331
|
- [control-plane-scheduling-smoke.js](../test/control-plane-scheduling-smoke.js)
|
|
326
332
|
- [coordinator-blackboard-smoke.js](../test/coordinator-blackboard-smoke.js)
|
|
333
|
+
- [coordinator-topology-persist-dirty-tracking-smoke.js](../test/coordinator-topology-persist-dirty-tracking-smoke.js)
|
|
327
334
|
- [cw-help-per-command-smoke.js](../test/cw-help-per-command-smoke.js)
|
|
328
335
|
- [dead-export-removal-guard-smoke.js](../test/dead-export-removal-guard-smoke.js)
|
|
329
336
|
- [deepseek-agent-wrapper-smoke.js](../test/deepseek-agent-wrapper-smoke.js)
|
|
@@ -331,11 +338,15 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
331
338
|
- [demo-bundle-smoke.js](../test/demo-bundle-smoke.js)
|
|
332
339
|
- [det-ids-b-smoke.js](../test/det-ids-b-smoke.js)
|
|
333
340
|
- [dispatch-legacy-burndown-smoke.js](../test/dispatch-legacy-burndown-smoke.js)
|
|
341
|
+
- [doctor-audit-integrity-repair-smoke.js](../test/doctor-audit-integrity-repair-smoke.js)
|
|
334
342
|
- [doctor-smoke.js](../test/doctor-smoke.js)
|
|
335
343
|
- [dogfood-architecture-review-smoke.js](../test/dogfood-architecture-review-smoke.js)
|
|
336
344
|
- [dogfood-release-smoke.js](../test/dogfood-release-smoke.js)
|
|
345
|
+
- [drive-async-real-signal-smoke.js](../test/drive-async-real-signal-smoke.js)
|
|
337
346
|
- [drive-concurrency-flag-smoke.js](../test/drive-concurrency-flag-smoke.js)
|
|
347
|
+
- [drive-concurrent-round-sigkill-smoke.js](../test/drive-concurrent-round-sigkill-smoke.js)
|
|
338
348
|
- [drive-exhaustion-blocked-smoke.js](../test/drive-exhaustion-blocked-smoke.js)
|
|
349
|
+
- [drive-round-cache-serial-smoke.js](../test/drive-round-cache-serial-smoke.js)
|
|
339
350
|
- [durable-atomic-write-smoke.js](../test/durable-atomic-write-smoke.js)
|
|
340
351
|
- [end-to-end-demo-smoke.js](../test/end-to-end-demo-smoke.js)
|
|
341
352
|
- [end-to-end-golden-path-smoke.js](../test/end-to-end-golden-path-smoke.js)
|
|
@@ -348,6 +359,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
348
359
|
- [execution-backends-smoke.js](../test/execution-backends-smoke.js)
|
|
349
360
|
- [feedback-ops-unit-smoke.js](../test/feedback-ops-unit-smoke.js)
|
|
350
361
|
- [freebsd-audit-fixes-smoke.js](../test/freebsd-audit-fixes-smoke.js)
|
|
362
|
+
- [fs-atomic-lock-steal-race-smoke.js](../test/fs-atomic-lock-steal-race-smoke.js)
|
|
351
363
|
- [gemini-agent-wrapper-smoke.js](../test/gemini-agent-wrapper-smoke.js)
|
|
352
364
|
- [gemini-opencode-agent-wrapper-smoke.js](../test/gemini-opencode-agent-wrapper-smoke.js)
|
|
353
365
|
- [h7-custom-profile-persist-smoke.js](../test/h7-custom-profile-persist-smoke.js)
|
|
@@ -357,9 +369,11 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
357
369
|
- [ledger-resolution-smoke.js](../test/ledger-resolution-smoke.js)
|
|
358
370
|
- [ledger-verify-smoke.js](../test/ledger-verify-smoke.js)
|
|
359
371
|
- [loop-bounded-expansion-smoke.js](../test/loop-bounded-expansion-smoke.js)
|
|
372
|
+
- [man-run-registry-traversal-smoke.js](../test/man-run-registry-traversal-smoke.js)
|
|
360
373
|
- [mcp-app-surface-smoke.js](../test/mcp-app-surface-smoke.js)
|
|
361
374
|
- [mcp-surface-registry-smoke.js](../test/mcp-surface-registry-smoke.js)
|
|
362
375
|
- [mcp-tool-call-coverage-smoke.js](../test/mcp-tool-call-coverage-smoke.js)
|
|
376
|
+
- [mcp-untrusted-content-advisory-smoke.js](../test/mcp-untrusted-content-advisory-smoke.js)
|
|
363
377
|
- [metrics-summary-limit-smoke.js](../test/metrics-summary-limit-smoke.js)
|
|
364
378
|
- [multi-agent-cli-mcp-surface-smoke.js](../test/multi-agent-cli-mcp-surface-smoke.js)
|
|
365
379
|
- [multi-agent-eval-determinism-regression-smoke.js](../test/multi-agent-eval-determinism-regression-smoke.js)
|
|
@@ -367,6 +381,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
367
381
|
- [multi-agent-eval-replay-smoke.js](../test/multi-agent-eval-replay-smoke.js)
|
|
368
382
|
- [multi-agent-operator-ux-smoke.js](../test/multi-agent-operator-ux-smoke.js)
|
|
369
383
|
- [multi-agent-runtime-core-smoke.js](../test/multi-agent-runtime-core-smoke.js)
|
|
384
|
+
- [multi-agent-state-lock-concurrency-smoke.js](../test/multi-agent-state-lock-concurrency-smoke.js)
|
|
370
385
|
- [multi-agent-topologies-debate-smoke.js](../test/multi-agent-topologies-debate-smoke.js)
|
|
371
386
|
- [multi-agent-topologies-judge-panel-smoke.js](../test/multi-agent-topologies-judge-panel-smoke.js)
|
|
372
387
|
- [multi-agent-topologies-map-reduce-smoke.js](../test/multi-agent-topologies-map-reduce-smoke.js)
|
|
@@ -375,6 +390,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
375
390
|
- [node-snapshot-diff-replay-smoke.js](../test/node-snapshot-diff-replay-smoke.js)
|
|
376
391
|
- [npm-global-install-smoke.js](../test/npm-global-install-smoke.js)
|
|
377
392
|
- [npm-trusted-publish-smoke.js](../test/npm-trusted-publish-smoke.js)
|
|
393
|
+
- [numeric-flag-parsing-smoke.js](../test/numeric-flag-parsing-smoke.js)
|
|
378
394
|
- [observability-cost-accounting-smoke.js](../test/observability-cost-accounting-smoke.js)
|
|
379
395
|
- [one-way-boundary-smoke.js](../test/one-way-boundary-smoke.js)
|
|
380
396
|
- [onramp-check-smoke.js](../test/onramp-check-smoke.js)
|
|
@@ -401,9 +417,11 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
401
417
|
- [readme-trust-claim-smoke.js](../test/readme-trust-claim-smoke.js)
|
|
402
418
|
- [real-execution-backends-smoke.js](../test/real-execution-backends-smoke.js)
|
|
403
419
|
- [registry-corrupt-fail-closed-smoke.js](../test/registry-corrupt-fail-closed-smoke.js)
|
|
420
|
+
- [registry-corrupt-state-distinct-error-smoke.js](../test/registry-corrupt-state-distinct-error-smoke.js)
|
|
404
421
|
- [release-check-skip-smoke.js](../test/release-check-skip-smoke.js)
|
|
405
422
|
- [release-flow-smoke.js](../test/release-flow-smoke.js)
|
|
406
423
|
- [release-gate-smoke.js](../test/release-gate-smoke.js)
|
|
424
|
+
- [release-oneclick-smoke.js](../test/release-oneclick-smoke.js)
|
|
407
425
|
- [release-pipeline-hygiene-smoke.js](../test/release-pipeline-hygiene-smoke.js)
|
|
408
426
|
- [release-tooling-smoke.js](../test/release-tooling-smoke.js)
|
|
409
427
|
- [remote-link-archive-smoke.js](../test/remote-link-archive-smoke.js)
|
|
@@ -437,10 +455,14 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
437
455
|
- [schema-validation-smoke.js](../test/schema-validation-smoke.js)
|
|
438
456
|
- [security-trust-hardening-smoke.js](../test/security-trust-hardening-smoke.js)
|
|
439
457
|
- [self-audit-hardening-smoke.js](../test/self-audit-hardening-smoke.js)
|
|
458
|
+
- [sigint-sigterm-drive-loop-smoke.js](../test/sigint-sigterm-drive-loop-smoke.js)
|
|
459
|
+
- [smoke-duration-scheduling-smoke.js](../test/smoke-duration-scheduling-smoke.js)
|
|
440
460
|
- [source-context-batch-smoke.js](../test/source-context-batch-smoke.js)
|
|
441
461
|
- [source-context-profile-smoke.js](../test/source-context-profile-smoke.js)
|
|
442
462
|
- [state-node-smoke.js](../test/state-node-smoke.js)
|
|
463
|
+
- [status-run-flag-smoke.js](../test/status-run-flag-smoke.js)
|
|
443
464
|
- [sub-workflow-nesting-smoke.js](../test/sub-workflow-nesting-smoke.js)
|
|
465
|
+
- [summary-show-no-checkpoint-write-smoke.js](../test/summary-show-no-checkpoint-write-smoke.js)
|
|
444
466
|
- [surface-explicit-cwd-smoke.js](../test/surface-explicit-cwd-smoke.js)
|
|
445
467
|
- [tamper-evidence-demo-smoke.js](../test/tamper-evidence-demo-smoke.js)
|
|
446
468
|
- [team-collaboration-smoke.js](../test/team-collaboration-smoke.js)
|
|
@@ -452,11 +474,16 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
452
474
|
- [telemetry-verify-signatures-smoke.js](../test/telemetry-verify-signatures-smoke.js)
|
|
453
475
|
- [token-budget-enforcement-smoke.js](../test/token-budget-enforcement-smoke.js)
|
|
454
476
|
- [trust-audit-anchor-smoke.js](../test/trust-audit-anchor-smoke.js)
|
|
477
|
+
- [trust-audit-append-lock-concurrency-smoke.js](../test/trust-audit-append-lock-concurrency-smoke.js)
|
|
478
|
+
- [trust-audit-append-tail-cache-smoke.js](../test/trust-audit-append-tail-cache-smoke.js)
|
|
455
479
|
- [vendor-manifest-load-smoke.js](../test/vendor-manifest-load-smoke.js)
|
|
456
480
|
- [vendor-preflight-smoke.js](../test/vendor-preflight-smoke.js)
|
|
481
|
+
- [verdict-signing-workflow-smoke.js](../test/verdict-signing-workflow-smoke.js)
|
|
457
482
|
- [verifier-gated-commit-smoke.js](../test/verifier-gated-commit-smoke.js)
|
|
483
|
+
- [verify-bump-reproduction-smoke.js](../test/verify-bump-reproduction-smoke.js)
|
|
458
484
|
- [verify-import-audit-chain-smoke.js](../test/verify-import-audit-chain-smoke.js)
|
|
459
485
|
- [web-desktop-workbench-smoke.js](../test/web-desktop-workbench-smoke.js)
|
|
486
|
+
- [wiring-lazy-shell-imports-smoke.js](../test/wiring-lazy-shell-imports-smoke.js)
|
|
460
487
|
- [worker-accept-path-architecture-smoke.js](../test/worker-accept-path-architecture-smoke.js)
|
|
461
488
|
- [worker-isolation-smoke.js](../test/worker-isolation-smoke.js)
|
|
462
489
|
- [worker-retry-count-smoke.js](../test/worker-retry-count-smoke.js)
|
|
@@ -9,7 +9,7 @@ Maintainers cutting CW releases should use `npm run release:check` from
|
|
|
9
9
|
files can check compatibility with:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
cw state check <run-id>
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Use `--state /path/to/state.json` when checking a state file outside the
|
|
@@ -335,3 +335,7 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
|
|
|
335
335
|
0.2.1
|
|
336
336
|
|
|
337
337
|
0.2.2
|
|
338
|
+
|
|
339
|
+
0.2.3
|
|
340
|
+
|
|
341
|
+
0.2.4
|
|
@@ -170,14 +170,32 @@ model you set up does the review. CW starts the agent argv-style (`shell:false`)
|
|
|
170
170
|
takes on the agent's own credentials, and pulls in no model SDK — the red line.
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
|
+
# the operator's one-command release (scripts/release-oneclick.js — preflight,
|
|
174
|
+
# gated cut, tag-only push, CI wait, npm confirmation, verdict-record PR):
|
|
175
|
+
npm run release -- 0.2.4
|
|
173
176
|
# check only (gate + independent review, no mutation):
|
|
174
177
|
node plugins/cool-workflow/scripts/release-flow.js --check
|
|
175
178
|
# cut a tag once review is green (when --push, also creates the GitHub Release):
|
|
176
179
|
node plugins/cool-workflow/scripts/release-flow.js --cut --version 0.1.77 [--push] [--no-release]
|
|
180
|
+
# run ONLY the cut's fail-fast preflight (seconds; used by release-oneclick.js):
|
|
181
|
+
node plugins/cool-workflow/scripts/release-flow.js --cut --version 0.1.77 --push --preflight-only
|
|
177
182
|
# backfill / re-create the GitHub Release for an already-pushed tag (no gate/cut):
|
|
178
183
|
node plugins/cool-workflow/scripts/release-flow.js --release --version 0.1.77 [--soft]
|
|
179
184
|
```
|
|
180
185
|
|
|
186
|
+
A `--cut` starts with a fail-fast **preflight** (added after the v0.2.3 cut,
|
|
187
|
+
where each of these fired only AFTER the gate/vendor/reviewer had already
|
|
188
|
+
spent real time and tokens): the version flag, the signing key (present AND
|
|
189
|
+
matching the committed `verdict-signing.pub` — once that pubkey is in the
|
|
190
|
+
repo, an unsigned cut is refused up front instead of failing later in CI),
|
|
191
|
+
no pre-existing `vX.Y.Z` tag (local or on origin), a `## X.Y.Z` CHANGELOG
|
|
192
|
+
section, a clean tracked tree, and — for `--push` — HEAD equal to the
|
|
193
|
+
`origin/main` tip (`--allow-stale-head` skips that one check for a
|
|
194
|
+
deliberate re-cut). The push at the end moves ONLY `refs/tags/vX.Y.Z`: the
|
|
195
|
+
verdict commit is a one-hop leaf on the reviewed commit, reachable through
|
|
196
|
+
the tag alone, so main's branch protection is never in the path and no
|
|
197
|
+
stray remote branch is created.
|
|
198
|
+
|
|
181
199
|
The per-platform difference is config, not code — set the reviewer agent here:
|
|
182
200
|
|
|
183
201
|
| Platform | Reviewer config |
|
|
@@ -298,3 +316,7 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
|
|
|
298
316
|
0.2.1
|
|
299
317
|
|
|
300
318
|
0.2.2
|
|
319
|
+
|
|
320
|
+
0.2.3
|
|
321
|
+
|
|
322
|
+
0.2.4
|
package/docs/routines.md
CHANGED
|
@@ -15,7 +15,7 @@ CW keeps routine data in:
|
|
|
15
15
|
Create an API trigger:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
18
|
+
cw routine create \
|
|
19
19
|
--kind api \
|
|
20
20
|
--prompt "Handle this API event."
|
|
21
21
|
```
|
|
@@ -23,7 +23,7 @@ node scripts/cw.js routine create \
|
|
|
23
23
|
Create a GitHub trigger:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
|
|
26
|
+
cw routine create \
|
|
27
27
|
--kind github \
|
|
28
28
|
--prompt "Review this GitHub event." \
|
|
29
29
|
--match '{"action":"opened"}'
|
|
@@ -32,13 +32,13 @@ node scripts/cw.js routine create \
|
|
|
32
32
|
Fire a trigger from a payload file:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
cw routine fire github payload.json
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Inspect events:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
|
|
41
|
+
cw routine events
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
## Long Architecture Reviews
|
|
@@ -251,25 +251,25 @@ freshness, and provenance back to its `.cw/runs/<id>/`. Filter with `--app` and
|
|
|
251
251
|
## CLI
|
|
252
252
|
|
|
253
253
|
```text
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
254
|
+
cw registry refresh [--scope repo|home] [--json]
|
|
255
|
+
cw registry show [--scope repo|home] [--json]
|
|
256
|
+
cw run search [--app ID] [--status STATE] [--text Q] [--repo PATH] [--since ISO] [--until ISO] [--limit N] [--offset N] [--scope repo|home] [--json]
|
|
257
|
+
cw run list [--scope repo|home] [--json]
|
|
258
|
+
cw run show <run-id> [--scope repo|home] [--json]
|
|
259
|
+
cw run resume <run-id> [--limit N] [--drive [--once]] [--json]
|
|
260
|
+
cw run archive <run-id> [--reason TEXT] [--unarchive]
|
|
261
|
+
cw run archive --older-than-days N [--state completed --state failed]
|
|
262
|
+
cw run rerun <run-id> [--reason TEXT]
|
|
263
|
+
cw run export <run-id> --output PATH
|
|
264
|
+
cw run import PATH --target DIR
|
|
265
|
+
cw run verify-import <run-id> [--cwd DIR]
|
|
266
|
+
cw run inspect-archive PATH [--json]
|
|
267
|
+
cw run restore PATH --target DIR [--json]
|
|
268
|
+
cw queue add [--app ID|--workflow ID|--runId ID] [--repo PATH] [--priority N] [--note TEXT]
|
|
269
|
+
cw queue list [--status STATE] [--repo PATH] [--json]
|
|
270
|
+
cw queue show <queue-id>
|
|
271
|
+
cw queue drain [--limit N] [--repo PATH]
|
|
272
|
+
cw history [--app ID] [--status STATE] [--limit N] [--offset N] [--scope repo|home] [--json]
|
|
273
273
|
```
|
|
274
274
|
|
|
275
275
|
Read commands print short human panels by default (lifecycle, freshness, counts,
|
|
@@ -478,3 +478,7 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
|
|
|
478
478
|
0.2.1
|
|
479
479
|
|
|
480
480
|
0.2.2
|
|
481
|
+
|
|
482
|
+
0.2.3
|
|
483
|
+
|
|
484
|
+
0.2.4
|
|
@@ -107,6 +107,22 @@ scratch dir) is **re-pointed** to the retained `results/<task-id>.md` copy, and
|
|
|
107
107
|
result-node snapshot is shown to stay `valid` (not `absent`) — so no surviving
|
|
108
108
|
node points to a freed path. Opt out with `--keep-scratch`.
|
|
109
109
|
|
|
110
|
+
## Commit snapshots — never reconstructable, always downgrades to verify-only
|
|
111
|
+
|
|
112
|
+
`commitState` embeds the FULL run into `commits/<id>.json` on every commit, so
|
|
113
|
+
these grow unbounded in both count and per-file size with no cap. Reclaiming them
|
|
114
|
+
frees the run's superseded, non-`verifierGated` "checkpoint" commit snapshots —
|
|
115
|
+
the run's LATEST commit and every `verifierGated` commit (the actual
|
|
116
|
+
audit-significant milestones) are always kept. `run.commits`' own lightweight
|
|
117
|
+
metadata (id, `verifierGated`, evidence digests, acceptance rationale — everything
|
|
118
|
+
`extractSkeleton` seals) lives in `state.json`, not the snapshot file, so it stays
|
|
119
|
+
fully intact and queryable regardless. Unlike a node snapshot, a commit snapshot is
|
|
120
|
+
a genuine point-in-time capture with no `ReconstructionRecipe` — reclaiming even
|
|
121
|
+
one downgrades capability to `verify-only`, never `re-runnable-by-reconstruction`.
|
|
122
|
+
Each reclaimed commit's own `StateNode` had its `snapshot` artifact stripped (not
|
|
123
|
+
re-pointed — there is no retained alternative) before the free, so `prepareFree`'s
|
|
124
|
+
dangling-reference proof covers this kind too. Opt out with `--keep-commits`.
|
|
125
|
+
|
|
110
126
|
## Orphan runs — a second pure-scratch case, OUTSIDE this transaction
|
|
111
127
|
|
|
112
128
|
A run directory can also be pure scratch a different way: a process killed or
|
|
@@ -131,8 +147,8 @@ class of run; it is left `retained` indefinitely rather than guessed at.
|
|
|
131
147
|
## CLI
|
|
132
148
|
|
|
133
149
|
```
|
|
134
|
-
cw gc plan [run-id] [--reclaimAfterArchiveDays N] [--keep-scratch] [--keep-snapshots] [--scope repo|home] [--json]
|
|
135
|
-
cw gc run [run-id] [--reclaimAfterArchiveDays N] [--keep-scratch] [--keep-snapshots] [--limit N] [--actor NAME] [--json]
|
|
150
|
+
cw gc plan [run-id] [--reclaimAfterArchiveDays N] [--keep-scratch] [--keep-snapshots] [--keep-commits] [--scope repo|home] [--json]
|
|
151
|
+
cw gc run [run-id] [--reclaimAfterArchiveDays N] [--keep-scratch] [--keep-snapshots] [--keep-commits] [--limit N] [--actor NAME] [--json]
|
|
136
152
|
cw gc verify <run-id> [--scope repo|home] [--json]
|
|
137
153
|
```
|
|
138
154
|
|
|
@@ -163,7 +179,8 @@ rule: only ISO timestamps may be now-derived.
|
|
|
163
179
|
|
|
164
180
|
Retention/reclamation thresholds extend `RunRegistryPolicy` (alongside
|
|
165
181
|
`archiveOlderThanDays`), never a new policy file: `reclaimAfterArchiveDays`,
|
|
166
|
-
`keepSnapshots`, `keepScratch`, `reclaimStates`, `maxReclaimRuns`,
|
|
182
|
+
`keepSnapshots`, `keepScratch`, `keepCommits`, `reclaimStates`, `maxReclaimRuns`,
|
|
183
|
+
`maxReclaimBytes`.
|
|
167
184
|
Back-compatible defaults reclaim nothing; pre-v0.1.39 runs load unchanged.
|
|
168
185
|
|
|
169
186
|
## Compatibility
|
|
@@ -267,3 +284,7 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
|
|
|
267
284
|
0.2.1
|
|
268
285
|
|
|
269
286
|
0.2.2
|
|
287
|
+
|
|
288
|
+
0.2.3
|
|
289
|
+
|
|
290
|
+
0.2.4
|
package/docs/scheduled-tasks.md
CHANGED
|
@@ -14,7 +14,7 @@ CW keeps schedules in:
|
|
|
14
14
|
Make a `/loop`-ready schedule:
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
cw loop \
|
|
18
18
|
--intervalMinutes 30 \
|
|
19
19
|
--prompt "Check this workflow and continue if work is due."
|
|
20
20
|
```
|
|
@@ -22,7 +22,7 @@ node scripts/cw.js loop \
|
|
|
22
22
|
Make a loop:
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
|
|
25
|
+
cw schedule create \
|
|
26
26
|
--kind loop \
|
|
27
27
|
--intervalMinutes 30 \
|
|
28
28
|
--prompt "Check this workflow and continue if work is due."
|
|
@@ -31,7 +31,7 @@ node scripts/cw.js schedule create \
|
|
|
31
31
|
Make a cron schedule:
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
|
|
34
|
+
cw schedule create \
|
|
35
35
|
--kind cron \
|
|
36
36
|
--cron "*/15 * * * *" \
|
|
37
37
|
--prompt "Run the due workflow scan."
|
|
@@ -40,7 +40,7 @@ node scripts/cw.js schedule create \
|
|
|
40
40
|
Make a reminder:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
|
|
43
|
+
cw schedule create \
|
|
44
44
|
--kind reminder \
|
|
45
45
|
--delayMinutes 60 \
|
|
46
46
|
--prompt "Remind me to inspect the report."
|
|
@@ -49,26 +49,26 @@ node scripts/cw.js schedule create \
|
|
|
49
49
|
List and look through:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
cw schedule list
|
|
53
|
+
cw schedule due
|
|
54
|
+
cw schedule complete <schedule-id>
|
|
55
|
+
cw schedule pause <schedule-id>
|
|
56
|
+
cw schedule resume <schedule-id>
|
|
57
|
+
cw schedule run-now <schedule-id>
|
|
58
|
+
cw schedule history <schedule-id>
|
|
59
|
+
cw schedule delete <schedule-id>
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
Run the local desktop-like daemon one time:
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
|
-
|
|
65
|
+
cw schedule daemon --once
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
Run it without stopping:
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
|
|
71
|
+
cw schedule daemon --intervalSeconds 60
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
## Notes
|
|
@@ -82,21 +82,21 @@ With the require flag off (the default), none of this changes: a plain
|
|
|
82
82
|
## CLI
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
85
|
+
cw audit summary <run-id>
|
|
86
|
+
cw audit worker <run-id> <worker-id>
|
|
87
|
+
cw audit provenance <run-id> [--worker ID|--candidate ID|--commit ID]
|
|
88
|
+
cw audit multi-agent <run-id>
|
|
89
|
+
cw audit policy <run-id>
|
|
90
|
+
cw audit role <run-id> <role-id>
|
|
91
|
+
cw audit blackboard <run-id>
|
|
92
|
+
cw audit judge <run-id>
|
|
93
|
+
cw audit attest <run-id> --worker <worker-id> --hostEnforced true
|
|
94
|
+
cw audit decision <run-id> <worker-id> --path <path>
|
|
95
|
+
cw audit decision <run-id> <worker-id> --command "npm test"
|
|
96
|
+
cw audit decision <run-id> <worker-id> --network example.com
|
|
97
|
+
cw audit decision <run-id> <worker-id> --env SECRET_NAME
|
|
98
|
+
cw worker output <run-id> <worker-id> <result-file> [--allow-unattested]
|
|
99
|
+
cw result <run-id> <task-id> <result-file> [--allow-unattested]
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Denied audit decisions are put into audit files and joined to feedback/error
|