cool-workflow 0.2.1 → 0.2.2

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 (93) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/apps/architecture-review/app.json +1 -1
  4. package/apps/architecture-review-fast/app.json +1 -1
  5. package/apps/end-to-end-golden-path/app.json +1 -1
  6. package/apps/pr-review-fix-ci/app.json +1 -1
  7. package/apps/release-cut/app.json +1 -1
  8. package/apps/research-synthesis/app.json +1 -1
  9. package/dist/cli/dispatch.js +18 -86
  10. package/dist/cli/parseargv.js +5 -2
  11. package/dist/core/capability-data.js +270 -0
  12. package/dist/core/capability-table.js +16 -3504
  13. package/dist/core/format/help.js +28 -5
  14. package/dist/core/multi-agent/collaboration.js +3 -2
  15. package/dist/core/multi-agent/coordinator.js +4 -3
  16. package/dist/core/pipeline/commit-gate.js +2 -1
  17. package/dist/core/state/state-explosion/digest.js +3 -2
  18. package/dist/core/state/state-explosion/graph.js +9 -8
  19. package/dist/core/state/state-explosion/helpers.js +2 -1
  20. package/dist/core/trust/ledger.js +2 -1
  21. package/dist/core/types/execution-backend.js +18 -0
  22. package/dist/core/types/observability.js +7 -0
  23. package/dist/core/util/collate.js +23 -0
  24. package/dist/core/version.js +1 -1
  25. package/dist/shell/audit-cli.js +46 -2
  26. package/dist/shell/commit-summary.js +2 -1
  27. package/dist/shell/drive.js +26 -10
  28. package/dist/shell/evidence-reasoning.js +4 -3
  29. package/dist/shell/execution-backend/registry.js +2 -1
  30. package/dist/shell/execution-backend/types.js +0 -9
  31. package/dist/shell/fs-atomic.js +14 -1
  32. package/dist/shell/multi-agent-operator-ux.js +4 -3
  33. package/dist/shell/observability.js +12 -11
  34. package/dist/shell/onramp.js +17 -1
  35. package/dist/shell/operator-ux-text.js +2 -1
  36. package/dist/shell/operator-ux.js +7 -6
  37. package/dist/shell/pipeline-cli.js +82 -72
  38. package/dist/shell/reclamation-io.js +2 -1
  39. package/dist/shell/report.js +2 -1
  40. package/dist/shell/run-store.js +17 -0
  41. package/dist/shell/state-explosion-cli.js +2 -1
  42. package/dist/shell/topology-io.js +2 -1
  43. package/dist/shell/trust-audit.js +41 -2
  44. package/dist/shell/worker-cli.js +9 -1
  45. package/dist/shell/worker-isolation.js +34 -9
  46. package/dist/shell/workflow-app-loader.js +3 -2
  47. package/dist/wiring/capability-table/basics.js +66 -0
  48. package/dist/wiring/capability-table/exec-backend.js +162 -0
  49. package/dist/wiring/capability-table/index.js +42 -0
  50. package/dist/wiring/capability-table/multi-agent.js +623 -0
  51. package/dist/wiring/capability-table/parity.js +466 -0
  52. package/dist/wiring/capability-table/pipeline.js +280 -0
  53. package/dist/wiring/capability-table/registry-core.js +189 -0
  54. package/dist/wiring/capability-table/reporting.js +394 -0
  55. package/dist/wiring/capability-table/scheduling-registry.js +558 -0
  56. package/dist/wiring/capability-table/state.js +173 -0
  57. package/dist/wiring/capability-table/trust-ledger.js +134 -0
  58. package/dist/wiring/capability-table/workflow-apps.js +366 -0
  59. package/docs/agent-delegation-drive.7.md +2 -0
  60. package/docs/cli-mcp-parity.7.md +7 -2
  61. package/docs/contract-migration-tooling.7.md +2 -0
  62. package/docs/control-plane-scheduling.7.md +2 -0
  63. package/docs/durable-state-and-locking.7.md +22 -0
  64. package/docs/evidence-adoption-reasoning-chain.7.md +2 -0
  65. package/docs/execution-backends.7.md +2 -0
  66. package/docs/index.md +1 -0
  67. package/docs/multi-agent-cli-mcp-surface.7.md +2 -0
  68. package/docs/multi-agent-eval-replay-harness.7.md +2 -0
  69. package/docs/multi-agent-operator-ux.7.md +2 -0
  70. package/docs/node-snapshot-diff-replay.7.md +2 -0
  71. package/docs/observability-cost-accounting.7.md +2 -0
  72. package/docs/project-index.md +25 -5
  73. package/docs/real-execution-backends.7.md +2 -0
  74. package/docs/release-and-migration.7.md +2 -0
  75. package/docs/release-tooling.7.md +2 -0
  76. package/docs/run-registry-control-plane.7.md +2 -0
  77. package/docs/run-retention-reclamation.7.md +2 -0
  78. package/docs/security-trust-hardening.7.md +30 -0
  79. package/docs/state-explosion-management.7.md +2 -0
  80. package/docs/team-collaboration.7.md +2 -0
  81. package/docs/trust-audit-anchor.7.md +69 -0
  82. package/docs/web-desktop-workbench.7.md +2 -0
  83. package/manifest/plugin.manifest.json +1 -1
  84. package/package.json +3 -1
  85. package/scripts/bump-version.js +24 -2
  86. package/scripts/canonical-apps.js +4 -4
  87. package/scripts/dogfood-release.js +1 -1
  88. package/scripts/golden-path.js +4 -4
  89. package/scripts/purity-baseline.json +68 -0
  90. package/scripts/purity-gate.js +239 -0
  91. package/scripts/release-check.js +8 -1
  92. package/scripts/version-sync-check.js +33 -12
  93. package/workflows/README.md +19 -0
@@ -20,7 +20,7 @@ const repoRoot = path.resolve(pluginRoot, "..", "..");
20
20
  // CI checks out HEAD, so HEAD === the tree it is releasing.
21
21
  //
22
22
  // Fallback to the filesystem only when we cannot read from HEAD: not a git work
23
- // tree, or the path is not tracked at HEAD (e.g. the gitignored package-lock).
23
+ // tree, or the path is not tracked at HEAD.
24
24
  // node + git only — no ripgrep (CI portability rule).
25
25
  const insideGitWorkTree = (() => {
26
26
  const r = spawnSync("git", ["rev-parse", "--is-inside-work-tree"], { cwd: repoRoot, encoding: "utf8" });
@@ -36,7 +36,7 @@ function readReleaseSource(relativePath) {
36
36
  maxBuffer: 1024 * 1024 * 32
37
37
  });
38
38
  if (r.status === 0) return { text: r.stdout, exists: true, fromHead: true };
39
- // Not tracked at HEAD — fall through to the working tree (e.g. package-lock).
39
+ // Not tracked at HEAD — fall through to the working tree.
40
40
  }
41
41
  const abs = path.join(repoRoot, relativePath);
42
42
  if (!fs.existsSync(abs)) return { text: null, exists: false, fromHead: false };
@@ -56,9 +56,14 @@ const canonicalApps = CANONICAL_APP_IDS;
56
56
  function main() {
57
57
  const checks = [];
58
58
  checkJson("plugins/cool-workflow/package.json", "version", VERSION, checks);
59
- // package-lock.json is a gitignored install artifact (the documented install
60
- // uses `npm install --no-package-lock`), so only validate it when present.
59
+ // package-lock.json is tracked now, but the documented install still works
60
+ // without it (`npm install --no-package-lock`), so only validate it when
61
+ // present. Check BOTH version fields: the top-level one and the root-package
62
+ // entry packages[""].version — the second one is the field npm keeps in step
63
+ // with package.json on `npm install`, and it is the one that went stale
64
+ // (0.1.97) through the v0.2.0/v0.2.1 cuts while only the first was checked.
61
65
  checkJsonIfPresent("plugins/cool-workflow/package-lock.json", "version", VERSION, checks);
66
+ checkNestedJsonIfPresent("plugins/cool-workflow/package-lock.json", ["packages", "", "version"], VERSION, checks);
62
67
  checkJson("plugins/cool-workflow/.codex-plugin/plugin.json", "version", VERSION, checks);
63
68
  checkJson("plugins/cool-workflow/server.json", "version", VERSION, checks);
64
69
  checkNestedJson("plugins/cool-workflow/server.json", ["packages", 0, "version"], VERSION, checks);
@@ -160,7 +165,7 @@ function main() {
160
165
  checkIncludes("plugins/cool-workflow/docs/run-retention-reclamation.7.md", VERSION, checks);
161
166
  checkIncludes("plugins/cool-workflow/docs/index.md", "run-retention-reclamation.7.md", checks);
162
167
  checkIncludes("plugins/cool-workflow/test/run-retention-reclamation-smoke.js", "run-retention-reclamation-smoke", checks);
163
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "gc.plan", checks);
168
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/scheduling-registry.ts", "gc.plan", checks);
164
169
  checkIncludes("plugins/cool-workflow/docs/durable-state-and-locking.7.md", "Durable State & Locking", checks);
165
170
  checkIncludes("plugins/cool-workflow/docs/durable-state-and-locking.7.md", VERSION, checks);
166
171
  checkIncludes("plugins/cool-workflow/docs/index.md", "durable-state-and-locking.7.md", checks);
@@ -168,33 +173,37 @@ function main() {
168
173
  checkIncludes("plugins/cool-workflow/src/shell/fs-atomic.ts", "withFileLock", checks);
169
174
  checkIncludes("plugins/cool-workflow/src/shell/drive.ts", "driveStep", checks);
170
175
  checkIncludes("plugins/cool-workflow/dist/shell/drive.js", "driveStep", checks);
171
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "run.drive", checks);
176
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/pipeline.ts", "run.drive", checks);
172
177
  checkIncludes("plugins/cool-workflow/src/shell/collaboration-io.ts", "deriveReviewState", checks);
173
178
  checkIncludes("plugins/cool-workflow/dist/shell/collaboration-io.js", "deriveReviewState", checks);
174
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "review.status", checks);
179
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/multi-agent.ts", "review.status", checks);
175
180
  checkIncludes("plugins/cool-workflow/src/shell/observability.ts", "deriveMetricsReport", checks);
176
181
  checkIncludes("plugins/cool-workflow/dist/shell/observability.js", "deriveMetricsReport", checks);
177
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "metrics.show", checks);
182
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/reporting.ts", "metrics.show", checks);
178
183
  checkIncludes("plugins/cool-workflow/manifest/pricing.policy.json", "schemaVersion", checks);
179
184
  checkIncludes("plugins/cool-workflow/src/shell/workbench.ts", "buildWorkbenchRunView", checks);
180
185
  checkIncludes("plugins/cool-workflow/dist/shell/workbench.js", "buildWorkbenchRunView", checks);
181
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "workbench.view", checks);
186
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/reporting.ts", "workbench.view", checks);
182
187
  checkIncludes("plugins/cool-workflow/src/shell/execution-backend/registry.ts", "ExecutionBackend", checks);
183
188
  checkIncludes("plugins/cool-workflow/dist/shell/execution-backend/registry.js", "ExecutionBackend", checks);
184
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "backend.list", checks);
189
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/exec-backend.ts", "backend.list", checks);
185
190
  checkIncludes("plugins/cool-workflow/src/shell/run-registry-io.ts", "RunRegistry", checks);
186
191
  checkIncludes("plugins/cool-workflow/dist/shell/run-registry-io.js", "RunRegistry", checks);
187
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "registry.refresh", checks);
192
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/scheduling-registry.ts", "registry.refresh", checks);
188
193
  checkIncludes("plugins/cool-workflow/package.json", "parity:check", checks);
189
194
  checkIncludes("plugins/cool-workflow/scripts/parity-check.js", "buildParityReport", checks);
190
195
  checkIncludes("plugins/cool-workflow/test/cli-mcp-parity-smoke.js", "cli-mcp-parity-smoke", checks);
191
- checkIncludes("plugins/cool-workflow/src/core/capability-table.ts", "export const REGISTRY", checks);
196
+ checkIncludes("plugins/cool-workflow/src/wiring/capability-table/registry-core.ts", "export const REGISTRY", checks);
192
197
  checkIncludes("plugins/cool-workflow/src/shell/pipeline-cli.ts", "planSummary", checks);
193
198
  checkIncludes("plugins/cool-workflow/dist/core/capability-table.js", "REGISTRY", checks);
194
199
  checkIncludes("plugins/cool-workflow/docs/multi-agent-runtime-core.7.md", "Multi-Agent Runtime Core", checks);
195
200
  checkIncludes("plugins/cool-workflow/docs/dogfood-one-real-repo.7.md", "Dogfood One Real Repo", checks);
196
201
  checkIncludes("plugins/cool-workflow/docs/getting-started.md", "npm run release:check", checks);
197
202
  checkIncludes("plugins/cool-workflow/package.json", "eval:replay", checks);
203
+ checkIncludes("plugins/cool-workflow/docs/trust-audit-anchor.7.md", "Trust Audit Anchor", checks);
204
+ checkIncludes("plugins/cool-workflow/docs/trust-audit-anchor.7.md", VERSION, checks);
205
+ checkIncludes("plugins/cool-workflow/docs/index.md", "trust-audit-anchor.7.md", checks);
206
+ checkIncludes("plugins/cool-workflow/test/trust-audit-anchor-smoke.js", "trust-audit-anchor-smoke", checks);
198
207
  checkIncludes("plugins/cool-workflow/docs/release-and-migration.7.md", VERSION, checks);
199
208
  checkIncludes("CHANGELOG.md", `## ${VERSION}`, checks);
200
209
  checkIncludes("RELEASE.md", VERSION, checks);
@@ -227,6 +236,18 @@ function checkNestedJson(relativePath, keyPath, expected, checks) {
227
236
  checks.push({ path: relativePath, key: keyPath.join("."), value });
228
237
  }
229
238
 
239
+ function checkNestedJsonIfPresent(relativePath, keyPath, expected, checks) {
240
+ const src = readReleaseSource(relativePath);
241
+ if (!src.exists) {
242
+ checks.push({ path: relativePath, key: keyPath.join("."), skipped: "absent" });
243
+ return;
244
+ }
245
+ let value = JSON.parse(src.text);
246
+ for (const key of keyPath) value = value?.[key];
247
+ assert.equal(value, expected, `${relativePath}.${keyPath.join(".")} must be ${expected}`);
248
+ checks.push({ path: relativePath, key: keyPath.join("."), value });
249
+ }
250
+
230
251
  function checkJsonIfPresent(relativePath, key, expected, checks) {
231
252
  const src = readReleaseSource(relativePath);
232
253
  if (!src.exists) {
@@ -0,0 +1,19 @@
1
+ # workflows/ — legacy compatibility surface (pinned, do not remove)
2
+
3
+ `architecture-review.workflow.js` and `research-synthesis.workflow.js` are
4
+ the old, pre-`apps/` workflow-file format. The real, current homes for
5
+ these two workflows are `apps/architecture-review/` and
6
+ `apps/research-synthesis/` — these files exist ONLY so an id from before
7
+ the `apps/` format still resolves.
8
+
9
+ This is deliberate duplication, not drift to clean up: each file here
10
+ registers its OWN distinct id (`legacy-architecture-review`,
11
+ `legacy-research-synthesis`), pinned by
12
+ `v2/conformance/cases/multiagent-app-list.case.js` and
13
+ `plugins/cool-workflow/test/workflow-app-framework-smoke.js`. `cw list` /
14
+ `cw app list` show both the real app and its legacy id side by side
15
+ (`src/shell/workflow-app-loader.ts` discovers both roots).
16
+
17
+ Per this project's own POLA rule, removing or thinning either file would
18
+ change `cw list`'s output bytes — that is a breaking change, only doable
19
+ behind a major-version break, not a routine cleanup.