cool-workflow 0.1.85 → 0.1.87

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 (69) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/README.md +53 -332
  4. package/apps/architecture-review/app.json +1 -1
  5. package/apps/architecture-review-fast/app.json +1 -1
  6. package/apps/architecture-review-fast/workflow.js +2 -0
  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/capability-core.js +131 -3
  12. package/dist/capability-registry.js +108 -50
  13. package/dist/cli/command-surface.js +83 -10
  14. package/dist/cli.js +2 -1
  15. package/dist/doctor.js +50 -5
  16. package/dist/execution-backend.js +8 -0
  17. package/dist/mcp/tool-call.js +428 -0
  18. package/dist/mcp/tool-definitions.js +1027 -0
  19. package/dist/mcp-surface.js +5 -1442
  20. package/dist/onramp.js +421 -0
  21. package/dist/operator-ux/format.js +21 -15
  22. package/dist/operator-ux.js +2 -1
  23. package/dist/orchestrator.js +190 -87
  24. package/dist/term.js +93 -0
  25. package/dist/version.js +1 -1
  26. package/dist/workbench-host.js +1 -8
  27. package/docs/agent-delegation-drive.7.md +45 -8
  28. package/docs/cli-mcp-parity.7.md +41 -6
  29. package/docs/contract-migration-tooling.7.md +6 -0
  30. package/docs/control-plane-scheduling.7.md +6 -0
  31. package/docs/dogfood-one-real-repo.7.md +9 -1
  32. package/docs/durable-state-and-locking.7.md +6 -0
  33. package/docs/evidence-adoption-reasoning-chain.7.md +6 -0
  34. package/docs/execution-backends.7.md +6 -0
  35. package/docs/getting-started.md +40 -2
  36. package/docs/index.md +51 -38
  37. package/docs/multi-agent-cli-mcp-surface.7.md +6 -0
  38. package/docs/multi-agent-eval-replay-harness.7.md +6 -0
  39. package/docs/multi-agent-operator-ux.7.md +6 -0
  40. package/docs/node-snapshot-diff-replay.7.md +6 -0
  41. package/docs/observability-cost-accounting.7.md +6 -0
  42. package/docs/project-index.md +24 -7
  43. package/docs/real-execution-backends.7.md +6 -0
  44. package/docs/release-and-migration.7.md +7 -1
  45. package/docs/release-history.md +352 -0
  46. package/docs/release-tooling.7.md +28 -0
  47. package/docs/run-registry-control-plane.7.md +6 -0
  48. package/docs/run-retention-reclamation.7.md +6 -0
  49. package/docs/state-explosion-management.7.md +6 -0
  50. package/docs/team-collaboration.7.md +6 -0
  51. package/docs/web-desktop-workbench.7.md +6 -0
  52. package/manifest/plugin.manifest.json +1 -1
  53. package/manifest/source-context-profiles.json +1 -1
  54. package/package.json +2 -1
  55. package/scripts/agents/agent-adapter-core.js +180 -0
  56. package/scripts/agents/builtin-templates.json +4 -1
  57. package/scripts/agents/codex-agent.js +134 -0
  58. package/scripts/agents/gemini-agent.js +115 -0
  59. package/scripts/agents/opencode-agent.js +119 -0
  60. package/scripts/architecture-review-fast.js +44 -2
  61. package/scripts/canonical-apps.js +4 -4
  62. package/scripts/dogfood-release.js +55 -133
  63. package/scripts/golden-path.js +4 -4
  64. package/scripts/onramp-check.js +47 -0
  65. package/scripts/parity-check.js +741 -2
  66. package/scripts/release-check.js +5 -3
  67. package/scripts/release-gate.sh +1 -1
  68. package/scripts/source-context.js +31 -5
  69. package/scripts/version-sync-check.js +4 -2
@@ -15,6 +15,7 @@ const checks = [
15
15
  "README.md",
16
16
  "docs/index.md",
17
17
  "docs/getting-started.md",
18
+ "docs/release-history.md",
18
19
  "docs/release-and-migration.7.md",
19
20
  "docs/multi-agent-cli-mcp-surface.7.md",
20
21
  "docs/multi-agent-operator-ux.7.md",
@@ -57,10 +58,11 @@ const checks = [
57
58
  // from that fresh build — strictly stronger than a bare `npm run build`.
58
59
  { name: "dist freshness", command: ["npm", "run", "dist:check"] },
59
60
  { name: "type check", command: ["npm", "run", "check"] },
61
+ { name: "onramp contract", command: ["npm", "run", "onramp:check"] },
60
62
  { name: "run-state schema consistency", command: ["node", "scripts/validate-run-state-schema.js"] },
61
- // Parallel suite (test:ci = run-all.js --concurrency auto). Each smoke runs in
62
- // a private cwd + state roots (CW_HOME/HOME/TMPDIR), so concurrency is race-free.
63
- // The bare `npm test` and the tag-gate (release-gate.sh) stay sequential as the
63
+ // Every test path uses --concurrency auto by default (parallel, race-free:
64
+ // each smoke runs in a private cwd + state roots). The release tag-gate
65
+ // (release-gate.sh) forces CW_TEST_CONCURRENCY=1 to stay sequential as the
64
66
  // deterministic backstop.
65
67
  { name: "tests", command: ["npm", "run", "test:ci"] },
66
68
  { name: "canonical apps", command: ["npm", "run", "canonical-apps"] },
@@ -30,7 +30,7 @@ say "[1/6] build"
30
30
  npm run --prefix plugins/cool-workflow build >/dev/null 2>&1 || fail "build failed"
31
31
 
32
32
  say "[2/6] tests"
33
- npm test --prefix plugins/cool-workflow >/dev/null 2>&1 || fail "tests failed"
33
+ CW_TEST_CONCURRENCY=1 npm test --prefix plugins/cool-workflow >/dev/null 2>&1 || fail "tests failed"
34
34
 
35
35
  if [[ -n "$PREV_TAG" ]]; then
36
36
  RANGE="$PREV_TAG..HEAD"
@@ -59,6 +59,7 @@ function main() {
59
59
  }
60
60
 
61
61
  const files = gitLines(["ls-tree", "-r", "--name-only", ref]).filter((file) => !changedPaths || changedPaths.has(file));
62
+ const blobs = gitBlobs(ref, files);
62
63
  let exportedLines = 0;
63
64
  const buffered = cachePath ? [] : null;
64
65
  const emit = (value) => {
@@ -68,7 +69,8 @@ function main() {
68
69
 
69
70
  for (const file of files) {
70
71
  const classification = classify(file, profile);
71
- const blob = gitBlob(ref, file);
72
+ const blob = blobs.get(file);
73
+ if (!blob) die(`cannot read ${file} at ${ref}`);
72
74
  const binary = isBinary(blob);
73
75
  const record = {
74
76
  schemaVersion: profiles.schemaVersion,
@@ -161,10 +163,34 @@ function git(argv) {
161
163
  return result.stdout;
162
164
  }
163
165
 
164
- function gitBlob(ref, file) {
165
- const result = spawnSync("git", ["show", `${ref}:${file}`], { cwd: repoRoot, encoding: "buffer", maxBuffer: 1024 * 1024 * 64 });
166
- if (result.status !== 0) die((result.stderr || result.stdout || `cannot read ${file} at ${ref}`).toString().trim());
167
- return result.stdout;
166
+ function gitBlobs(ref, files) {
167
+ const blobs = new Map();
168
+ if (files.length === 0) return blobs;
169
+ const input = files.map((file) => `${ref}:${file}\n`).join("");
170
+ const result = spawnSync("git", ["cat-file", "--batch"], {
171
+ cwd: repoRoot,
172
+ input: Buffer.from(input, "utf8"),
173
+ maxBuffer: 1024 * 1024 * 256
174
+ });
175
+ if (result.status !== 0) die((result.stderr || result.stdout || `git cat-file --batch failed`).toString().trim());
176
+
177
+ let offset = 0;
178
+ for (const file of files) {
179
+ const headerEnd = result.stdout.indexOf(10, offset);
180
+ if (headerEnd < 0) die(`cannot read ${file} at ${ref}: truncated batch header`);
181
+ const header = result.stdout.slice(offset, headerEnd).toString("utf8");
182
+ offset = headerEnd + 1;
183
+ const parts = header.split(" ");
184
+ if (parts.length !== 3 || parts[1] !== "blob") die(`cannot read ${file} at ${ref}: ${header}`);
185
+ const size = Number(parts[2]);
186
+ if (!Number.isSafeInteger(size) || size < 0) die(`cannot read ${file} at ${ref}: invalid blob size`);
187
+ const end = offset + size;
188
+ if (end > result.stdout.length) die(`cannot read ${file} at ${ref}: truncated blob`);
189
+ blobs.set(file, result.stdout.slice(offset, end));
190
+ offset = end;
191
+ if (result.stdout[offset] === 10) offset++;
192
+ }
193
+ return blobs;
168
194
  }
169
195
 
170
196
  function classify(file, profile) {
@@ -78,10 +78,12 @@ function main() {
78
78
  checkIncludes("plugins/cool-workflow/scripts/dogfood-release.js", VERSION, checks);
79
79
  checkIncludes("plugins/cool-workflow/test/dogfood-release-smoke.js", VERSION, checks);
80
80
  checkIncludes("plugins/cool-workflow/test/coordinator-blackboard-smoke.js", "coordinator-blackboard-smoke", checks);
81
- checkIncludes("plugins/cool-workflow/test/multi-agent-topologies-smoke.js", "multi-agent-topologies-smoke", checks);
81
+ checkIncludes("plugins/cool-workflow/test/multi-agent-topologies-map-reduce-smoke.js", "multi-agent-topologies-map-reduce-smoke", checks);
82
+ checkIncludes("plugins/cool-workflow/test/multi-agent-topologies-debate-smoke.js", "multi-agent-topologies-debate-smoke", checks);
83
+ checkIncludes("plugins/cool-workflow/test/multi-agent-topologies-judge-panel-smoke.js", "multi-agent-topologies-judge-panel-smoke", checks);
82
84
  checkIncludes("plugins/cool-workflow/test/multi-agent-cli-mcp-surface-smoke.js", "multi-agent-cli-mcp-surface-smoke", checks);
83
85
  checkIncludes("plugins/cool-workflow/test/multi-agent-eval-replay-harness-smoke.js", "multi-agent-eval-replay-smoke", checks);
84
- checkIncludes("plugins/cool-workflow/test/state-explosion-management-smoke.js", "state-explosion-management-smoke", checks);
86
+ checkIncludes("plugins/cool-workflow/test/blackboard-state-explosion-management-smoke.js", "blackboard-state-explosion-management-smoke", checks);
85
87
  checkIncludes("plugins/cool-workflow/test/evidence-adoption-reasoning-smoke.js", "evidence-adoption-reasoning-smoke", checks);
86
88
  checkIncludes("plugins/cool-workflow/test/mcp-app-surface-smoke.js", VERSION, checks);
87
89
  checkIncludes("plugins/cool-workflow/test/canonical-workflow-apps-smoke.js", VERSION, checks);