cool-workflow 0.2.4 → 0.2.5
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/.gemini-plugin/mcp.json +10 -0
- package/.gemini-plugin/plugin.json +40 -0
- package/.opencode-plugin/mcp.json +10 -0
- package/.opencode-plugin/plugin.json +40 -0
- package/README.md +202 -48
- 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 +32 -4
- package/dist/cli/entry.js +11 -19
- package/dist/cli/global-flags.js +113 -0
- package/dist/cli/parseargv.js +7 -1
- package/dist/core/capability-data.js +337 -8
- package/dist/core/format/help.js +73 -3
- package/dist/core/format/recovery-hint.js +32 -0
- package/dist/core/multi-agent/collaboration.js +35 -6
- package/dist/core/multi-agent/runtime.js +7 -0
- package/dist/core/multi-agent/trust-policy.js +7 -1
- package/dist/core/pipeline/contract.js +7 -0
- package/dist/core/pipeline/error-feedback.js +2 -2
- package/dist/core/trust/evidence-grounding.js +13 -1
- package/dist/core/util/cli-args.js +22 -0
- package/dist/core/version.js +1 -1
- package/dist/mcp/dispatch.js +22 -2
- package/dist/mcp/server.js +124 -13
- package/dist/mcp-server.js +20 -0
- package/dist/shell/commit.js +8 -2
- package/dist/shell/coordinator-io.js +73 -1
- package/dist/shell/drive.js +120 -63
- package/dist/shell/error-feedback-io.js +6 -0
- package/dist/shell/execution-backend/agent.js +195 -23
- package/dist/shell/execution-backend/container.js +44 -10
- package/dist/shell/execution-backend/local.js +32 -0
- package/dist/shell/fs-atomic.js +93 -12
- package/dist/shell/ledger-cli.js +9 -2
- package/dist/shell/multi-agent-cli.js +5 -1
- package/dist/shell/onramp.js +48 -5
- package/dist/shell/pipeline.js +2 -1
- package/dist/shell/reclamation-io.js +10 -9
- package/dist/shell/run-export.js +52 -4
- package/dist/shell/run-store.js +156 -0
- package/dist/shell/scheduler-io.js +101 -10
- package/dist/shell/telemetry-ledger-io.js +36 -24
- package/dist/shell/trust-audit.js +104 -10
- package/dist/shell/workbench-host.js +121 -10
- package/dist/shell/workbench.js +79 -5
- package/dist/shell/worker-isolation.js +1 -1
- package/dist/wiring/capability-table/basics.js +5 -0
- package/dist/wiring/capability-table/exec-backend.js +40 -22
- package/dist/wiring/capability-table/pipeline.js +32 -0
- package/dist/wiring/capability-table/registry-core.js +26 -3
- package/dist/wiring/capability-table/reporting.js +7 -1
- package/dist/wiring/capability-table/scheduling-registry.js +8 -2
- package/dist/wiring/capability-table/trust-ledger.js +54 -12
- package/docs/agent-delegation-drive.7.md +15 -0
- package/docs/cli-mcp-parity.7.md +25 -0
- package/docs/contract-migration-tooling.7.md +2 -0
- package/docs/control-plane-scheduling.7.md +36 -0
- package/docs/cross-agent-ledger.7.md +20 -8
- package/docs/durable-state-and-locking.7.md +2 -0
- package/docs/evidence-adoption-reasoning-chain.7.md +2 -0
- package/docs/execution-backends.7.md +2 -0
- package/docs/fix.7.md +4 -4
- package/docs/getting-started.md +40 -32
- package/docs/index.md +17 -0
- package/docs/launch/demo.tape +4 -3
- package/docs/mcp-app-surface.7.md +6 -0
- package/docs/multi-agent-cli-mcp-surface.7.md +2 -0
- package/docs/multi-agent-eval-replay-harness.7.md +2 -0
- package/docs/multi-agent-operator-ux.7.md +2 -0
- package/docs/node-snapshot-diff-replay.7.md +2 -0
- package/docs/observability-cost-accounting.7.md +2 -0
- package/docs/project-index.md +39 -9
- package/docs/real-execution-backends.7.md +2 -0
- package/docs/release-and-migration.7.md +2 -0
- package/docs/release-tooling.7.md +2 -0
- package/docs/routine.7.md +22 -0
- package/docs/run-registry-control-plane.7.md +2 -0
- package/docs/run-retention-reclamation.7.md +10 -4
- package/docs/state-explosion-management.7.md +2 -0
- package/docs/team-collaboration.7.md +2 -0
- package/docs/trust-audit-anchor.7.md +2 -0
- package/docs/web-desktop-workbench.7.md +24 -2
- package/docs/workflow-app-framework.7.md +31 -0
- package/manifest/plugin.manifest.json +1 -1
- package/manifest/source-context-profiles.json +4 -3
- package/package.json +4 -2
- package/scripts/agents/agent-adapter-core.js +26 -0
- package/scripts/agents/claude-p-agent.js +4 -1
- package/scripts/agents/codex-agent.js +4 -0
- package/scripts/agents/cw-attest-wrap.js +1 -1
- package/scripts/agents/gemini-agent.js +4 -0
- package/scripts/agents/opencode-agent.js +5 -0
- package/scripts/block-unapproved-tag.js +160 -0
- package/scripts/canonical-apps.js +4 -4
- package/scripts/children/batch-delegate-child.js +72 -4
- package/scripts/children/http-batch-delegate-child.js +132 -0
- package/scripts/children/http-delegate-child.js +8 -0
- package/scripts/dogfood-release.js +2 -2
- package/scripts/fake-date-for-reproduction.js +1 -1
- package/scripts/golden-path.js +4 -4
- package/scripts/lang-policy-check.js +82 -0
- package/scripts/purity-gate.js +16 -3
- package/scripts/release-check.js +2 -1
- package/scripts/release-flow.js +128 -30
- package/scripts/release-gate.js +184 -0
- package/scripts/release-oneclick.js +38 -7
- package/scripts/release-tags.js +47 -0
- package/scripts/verdict-keygen.js +2 -2
- package/scripts/verify-bump-reproduction.js +193 -0
- package/scripts/verify-verdict-signature.js +1 -1
- package/ui/workbench/app.css +41 -9
- package/ui/workbench/app.js +160 -27
- package/ui/workbench/index.html +2 -2
- package/docs/agent-framework.md +0 -177
- package/docs/designs/handoff-ledger.md +0 -145
- package/docs/dogfood/resume-drive-real-agent-2026-06-14.md +0 -40
- package/docs/launch/launch-kit.md +0 -195
- package/docs/launch/pre-launch-checklist.md +0 -53
- package/docs/readme-v0.1.87-full.md +0 -301
- package/docs/routines.md +0 -101
- package/docs/scheduled-tasks.md +0 -80
- package/scripts/agents/claude-p-agent.sh +0 -9
- package/scripts/block-unapproved-tag.sh +0 -75
- package/scripts/release-gate.sh +0 -94
- package/scripts/verify-bump-reproduction.sh +0 -148
- package/scripts/verify-container-selfref.js +0 -64
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cool-workflow",
|
|
3
3
|
"description": "A workflow control plane and run-time you are able to check: it sends out jobs in TypeScript, makes certain of work against facts before it goes through, puts state into fixed records, orders jobs by time, runs jobs again and again, gets a group of agents to do their parts together, and talks MCP. It gives the doing of the work to outside agents — it never runs the models itself.",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.5",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "COOLWHITE LLC"
|
|
7
7
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cool-workflow",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "A workflow control plane and run-time you are able to check: it sends out jobs in TypeScript, makes certain of work against facts before it goes through, puts state into fixed records, orders jobs by time, runs jobs again and again, gets a group of agents to do their parts together, and talks MCP. It gives the doing of the work to outside agents — it never runs the models itself.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "COOLWHITE LLC"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cool-workflow",
|
|
3
|
+
"description": "A workflow control plane and run-time you are able to check: it sends out jobs in TypeScript, makes certain of work against facts before it goes through, puts state into fixed records, orders jobs by time, runs jobs again and again, gets a group of agents to do their parts together, and talks MCP. It gives the doing of the work to outside agents — it never runs the models itself.",
|
|
4
|
+
"version": "0.2.5",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "COOLWHITE LLC"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/coo1white/cool-workflow",
|
|
9
|
+
"license": "BSD-2-Clause",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"workflow",
|
|
12
|
+
"control-plane",
|
|
13
|
+
"dynamic-workflows",
|
|
14
|
+
"subagents",
|
|
15
|
+
"orchestration",
|
|
16
|
+
"agents",
|
|
17
|
+
"multi-agent",
|
|
18
|
+
"mcp"
|
|
19
|
+
],
|
|
20
|
+
"skills": "./skills/",
|
|
21
|
+
"mcpServers": "./.gemini-plugin/mcp.json",
|
|
22
|
+
"interface": {
|
|
23
|
+
"displayName": "Cool Workflow",
|
|
24
|
+
"shortDescription": "A workflow control plane you are able to check.",
|
|
25
|
+
"longDescription": "Cool Workflow (CW) is a workflow control plane and run-time you are able to check. It gives you: a TypeScript COL run-time, Workflow App framework agreements, a Router and Orchestrator, Subagent Dispatch, a same-every-time Harness, a hard-questioning Verifier, Git and State Commit, Sandbox Profiles, time-ordered jobs, jobs that come round again, a high-level Multi-Agent CLI and MCP host face, and an MCP JSON-RPC 2.0 bridge. Builders make workflow apps they are able to use again; CW gives the doing of the work to an outside agent host and keeps a checked, play-again record of state — it never puts a model API inside itself.",
|
|
26
|
+
"developerName": "COOLWHITE LLC",
|
|
27
|
+
"category": "Productivity",
|
|
28
|
+
"capabilities": [
|
|
29
|
+
"Interactive",
|
|
30
|
+
"Read",
|
|
31
|
+
"Write"
|
|
32
|
+
],
|
|
33
|
+
"brandColor": "#2563EB",
|
|
34
|
+
"defaultPrompt": [
|
|
35
|
+
"Use Cool Workflow to plan this as phases and agents.",
|
|
36
|
+
"Run the architecture review workflow with CW.",
|
|
37
|
+
"Create a reusable CW workflow for this task."
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cool-workflow",
|
|
3
|
+
"description": "A workflow control plane and run-time you are able to check: it sends out jobs in TypeScript, makes certain of work against facts before it goes through, puts state into fixed records, orders jobs by time, runs jobs again and again, gets a group of agents to do their parts together, and talks MCP. It gives the doing of the work to outside agents — it never runs the models itself.",
|
|
4
|
+
"version": "0.2.5",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "COOLWHITE LLC"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/coo1white/cool-workflow",
|
|
9
|
+
"license": "BSD-2-Clause",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"workflow",
|
|
12
|
+
"control-plane",
|
|
13
|
+
"dynamic-workflows",
|
|
14
|
+
"subagents",
|
|
15
|
+
"orchestration",
|
|
16
|
+
"agents",
|
|
17
|
+
"multi-agent",
|
|
18
|
+
"mcp"
|
|
19
|
+
],
|
|
20
|
+
"skills": "./skills/",
|
|
21
|
+
"mcpServers": "./.opencode-plugin/mcp.json",
|
|
22
|
+
"interface": {
|
|
23
|
+
"displayName": "Cool Workflow",
|
|
24
|
+
"shortDescription": "A workflow control plane you are able to check.",
|
|
25
|
+
"longDescription": "Cool Workflow (CW) is a workflow control plane and run-time you are able to check. It gives you: a TypeScript COL run-time, Workflow App framework agreements, a Router and Orchestrator, Subagent Dispatch, a same-every-time Harness, a hard-questioning Verifier, Git and State Commit, Sandbox Profiles, time-ordered jobs, jobs that come round again, a high-level Multi-Agent CLI and MCP host face, and an MCP JSON-RPC 2.0 bridge. Builders make workflow apps they are able to use again; CW gives the doing of the work to an outside agent host and keeps a checked, play-again record of state — it never puts a model API inside itself.",
|
|
26
|
+
"developerName": "COOLWHITE LLC",
|
|
27
|
+
"category": "Productivity",
|
|
28
|
+
"capabilities": [
|
|
29
|
+
"Interactive",
|
|
30
|
+
"Read",
|
|
31
|
+
"Write"
|
|
32
|
+
],
|
|
33
|
+
"brandColor": "#2563EB",
|
|
34
|
+
"defaultPrompt": [
|
|
35
|
+
"Use Cool Workflow to plan this as phases and agents.",
|
|
36
|
+
"Run the architecture review workflow with CW.",
|
|
37
|
+
"Create a reusable CW workflow for this task."
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
[](https://github.com/coo1white/cool-workflow/tags)
|
|
13
13
|
[](https://github.com/coo1white/cool-workflow/blob/main/LICENSE)
|
|
14
14
|
|
|
15
|
-
### Get a saved
|
|
15
|
+
### Get a saved report from your AI agent, with every claim tied to a line of code — not a chat answer you lose.
|
|
16
16
|
|
|
17
17
|
<br>
|
|
18
18
|
|
|
@@ -20,9 +20,25 @@
|
|
|
20
20
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
## What is this?
|
|
24
|
+
|
|
25
|
+
You may already use an AI coding agent — a tool like `claude`, `codex`, or
|
|
26
|
+
`gemini` that reads your code and answers questions about it. The answer comes
|
|
27
|
+
back as a chat message. Chat is easy to lose, and hard to check.
|
|
28
|
+
|
|
29
|
+
Cool Workflow (`cw`) is a small command-line tool that fixes that. Point it at
|
|
30
|
+
a repo — or any folder of docs — and:
|
|
31
|
+
|
|
32
|
+
- **It plans the work.** Your question becomes a set of small tasks.
|
|
33
|
+
- **Your agent does the work.** CW never runs a model itself. Your own agent
|
|
34
|
+
does the reading and the thinking.
|
|
35
|
+
- **It keeps a record.** Every step is saved as plain JSON files on your own
|
|
36
|
+
disk, under `.cw/`. You can read them, compare them, and pick a run up again
|
|
37
|
+
later.
|
|
38
|
+
- **It checks the results.** A result with no evidence does not get through —
|
|
39
|
+
it stops in a clear `unexplained` state instead.
|
|
40
|
+
- **It writes a report.** Every claim points to a real place in your code,
|
|
41
|
+
like `file.ts:42`. Click it and see for yourself.
|
|
26
42
|
|
|
27
43
|
> **The model is fuel. CW is the black-box recorder, the dashboard, and the gearbox — never the engine.**
|
|
28
44
|
> It never calls a model API, never holds your keys, and never uploads your code. Your agent spends the
|
|
@@ -48,12 +64,16 @@ cw version
|
|
|
48
64
|
Upgrade later with `brew update && brew upgrade cool-workflow`.
|
|
49
65
|
</details>
|
|
50
66
|
|
|
51
|
-
**You need:** Node.js v18
|
|
52
|
-
`
|
|
67
|
+
**You need:** Node.js v18 or newer, and one agent CLI on your machine —
|
|
68
|
+
`claude`, `codex`, `gemini`, or `opencode`. CW finds them by itself. No agent
|
|
69
|
+
yet? Step 1 below still works — **CW never runs a model itself.**
|
|
70
|
+
|
|
71
|
+
Not sure what you have? `cw doctor` checks your setup and `cw fix` prints the
|
|
72
|
+
commands that put it right.
|
|
53
73
|
|
|
54
74
|
## Quick Start
|
|
55
75
|
|
|
56
|
-
### 1 ·
|
|
76
|
+
### 1 · See it work — 30 seconds, no agent needed
|
|
57
77
|
|
|
58
78
|
```bash
|
|
59
79
|
cw demo tamper
|
|
@@ -61,25 +81,32 @@ cw demo tamper
|
|
|
61
81
|
# → VERDICT: tamper-evidence holds ✓
|
|
62
82
|
```
|
|
63
83
|
|
|
84
|
+
This is CW's trust check working on itself: it makes a signed record, breaks
|
|
85
|
+
it on purpose in three ways, and catches all three breaks.
|
|
86
|
+
|
|
64
87
|
### 2 · Ask a question about your code — one command
|
|
65
88
|
|
|
89
|
+
Go to any project folder and run:
|
|
90
|
+
|
|
66
91
|
```bash
|
|
67
92
|
cw -q "How does auth work end-to-end here?"
|
|
68
93
|
```
|
|
69
94
|
|
|
70
|
-
Any question works
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
`-deepseek`).
|
|
74
|
-
|
|
95
|
+
Any question works — "how does X work", "is it safe to change Y", "what would
|
|
96
|
+
break if Z rotated". CW uses the current repo and the first agent it finds on
|
|
97
|
+
your `PATH`. Want a specific agent? Add a flag (`-claude`, `-codex`, `-gemini`,
|
|
98
|
+
`-opencode`, `-deepseek`). DeepSeek is the one with no auto-detect — it runs
|
|
99
|
+
through `opencode` — so `-deepseek` is the only way to get it. You can
|
|
100
|
+
point CW at any folder, or at a **repo on the web by
|
|
101
|
+
URL** — CW clones it and reviews the copy:
|
|
75
102
|
|
|
76
103
|
```bash
|
|
77
104
|
cw -q "What are the security risks?" -dir /path/to/project
|
|
78
105
|
cw -q "Is it safe to swap this queue for Redis?" --link https://github.com/owner/repo
|
|
79
106
|
```
|
|
80
107
|
|
|
81
|
-
**Not just code.**
|
|
82
|
-
same saved
|
|
108
|
+
**Not just code.** Point CW at a folder of docs, notes, or papers and it reads
|
|
109
|
+
them as sources for the same saved report:
|
|
83
110
|
|
|
84
111
|
```bash
|
|
85
112
|
cw quickstart research-synthesis --repo /path/to/papers \
|
|
@@ -88,41 +115,47 @@ cw quickstart research-synthesis --repo /path/to/papers \
|
|
|
88
115
|
|
|
89
116
|
### 3 · Open the report
|
|
90
117
|
|
|
91
|
-
The command prints the path. Every finding
|
|
118
|
+
The command prints the path when it is done. Every finding has a clickable
|
|
119
|
+
`file.ts:42` pointer:
|
|
92
120
|
|
|
93
121
|
```bash
|
|
94
122
|
cat .cw/runs/<run-id>/report.md
|
|
95
123
|
```
|
|
96
124
|
|
|
97
|
-
While it runs you get a calm
|
|
98
|
-
that updates in place
|
|
125
|
+
While it runs you get a calm live view — a small rolling window of tool calls
|
|
126
|
+
that updates in place, not an endless wall of text — and a clean findings
|
|
127
|
+
table at the end.
|
|
99
128
|
|
|
100
129
|
---
|
|
101
130
|
|
|
102
131
|
## Why Cool Workflow
|
|
103
132
|
|
|
104
|
-
Most agent
|
|
105
|
-
is long, parallel, or high-stakes, you
|
|
106
|
-
**runtime problem** —
|
|
133
|
+
Most agent tools run a whole task as one long prompt, then hand you a chat
|
|
134
|
+
message. When the work is long, parallel, or high-stakes, you cannot tell what
|
|
135
|
+
happened or trust the result. CW treats that as a **runtime problem** — like an
|
|
136
|
+
operating system keeping processes safe and visible — and rests on four
|
|
137
|
+
commitments:
|
|
107
138
|
|
|
108
139
|
| Commitment | What it means for you |
|
|
109
140
|
|---|---|
|
|
110
|
-
| **Model as fuel, not engine** | CW never calls a model API.
|
|
111
|
-
| **Evidence-gated decisions** | Every
|
|
141
|
+
| **Model as fuel, not engine** | CW never calls a model API. Your agent does all the model work, so you can swap agents freely, and your keys and code never leave your machine. |
|
|
142
|
+
| **Evidence-gated decisions** | Every accepted result records its **basis, authority, rationale, and the option it beat.** Missing evidence does not slip through — the result stops in a visible `unexplained` state. |
|
|
112
143
|
| **Deterministic, local replay** | Every step is plain JSON under `.cw/runs/<id>/` — read it, diff it, resume it, replay it. No hidden database; the runtime never *guesses* success. |
|
|
113
|
-
| **Vendor-neutral by design** | One source-of-truth manifest generates every vendor adapter (Claude, Codex, …) over
|
|
144
|
+
| **Vendor-neutral by design** | One source-of-truth manifest generates every vendor adapter (Claude, Codex, …) over one shared CLI + MCP runtime, with a fail-closed drift check. No lock-in. |
|
|
114
145
|
|
|
115
|
-
**What CW is not.** CW is not the model — it never calls a model API and never
|
|
116
|
-
your agent does that work
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
on
|
|
146
|
+
**What CW is not.** CW is not the model — it never calls a model API and never
|
|
147
|
+
holds your keys; your agent does that work in its own process. It is not a CI
|
|
148
|
+
system or a build tool — it keeps and checks the record of agent work; it does
|
|
149
|
+
not take the place of your tests or your release pipeline. And it is not a big
|
|
150
|
+
framework to build on — it is a small set of commands over plain `.cw/` files
|
|
151
|
+
on your own disk, not a library your code has to wrap itself around.
|
|
120
152
|
|
|
121
153
|
## How It Works
|
|
122
154
|
|
|
123
|
-
CW is a small TypeScript tool with **zero runtime dependencies**. It drives
|
|
124
|
-
any folder — in saved
|
|
125
|
-
|
|
155
|
+
CW is a small TypeScript tool with **zero runtime dependencies**. It drives
|
|
156
|
+
your agent over a repo — or any folder — in saved stages that you can replay,
|
|
157
|
+
writing everything to disk as files you can open and read. It never imports a
|
|
158
|
+
model SDK or stores an API key.
|
|
126
159
|
|
|
127
160
|
<div align="center">
|
|
128
161
|
<img src="https://raw.githubusercontent.com/coo1white/cool-workflow/main/docs/assets/cw-pipeline.png" alt="The CW pipeline: ask, plan, dispatch (delegated to your agent), verify (evidence gate, fails closed), commit verified state, and a saved, cited, signed report — every step recorded as durable .cw/ JSON." width="100%">
|
|
@@ -137,22 +170,24 @@ ask simple → run simple → verify simple → resume simple
|
|
|
137
170
|
| Workflow | What it produces |
|
|
138
171
|
|---|---|
|
|
139
172
|
| `architecture-review` | Map a repo, rank risks, and back every claim with `file:line` evidence |
|
|
140
|
-
| `pr-review-fix-ci` | Review a PR or branch,
|
|
173
|
+
| `pr-review-fix-ci` | Review a PR or branch, work out why CI fails, and propose + verify fixes |
|
|
141
174
|
| `research-synthesis` | Answer a question over a local folder of files — your docs, notes, or papers |
|
|
142
175
|
| `release-cut` | Run a gated, reviewed release with dry-run evidence |
|
|
143
176
|
|
|
144
|
-
Every app writes the same thing: a saved
|
|
145
|
-
|
|
177
|
+
Every app writes the same thing: a saved report you can check again offline,
|
|
178
|
+
with every claim tied to its source. These four are the main lanes;
|
|
179
|
+
`cw app list` shows all eight installed apps.
|
|
146
180
|
|
|
147
181
|
```bash
|
|
148
182
|
cw app list # see everything installed
|
|
149
183
|
cw doctor # check your setup → cw fix shows the fix commands
|
|
150
184
|
```
|
|
151
185
|
|
|
152
|
-
**Multi-agent, when you need it.** Fan work out across agents with built-in
|
|
153
|
-
(
|
|
154
|
-
|
|
155
|
-
|
|
186
|
+
**Multi-agent, when you need it.** Fan work out across agents with built-in
|
|
187
|
+
topologies (ready-made team shapes), compose flows (a task can run a whole
|
|
188
|
+
child workflow with `subWorkflow`, or a `loop()` phase can go round until a
|
|
189
|
+
condition or a token budget says stop), and re-run fast — `cw run <app>
|
|
190
|
+
--drive --incremental` reuses every step whose inputs did not change.
|
|
156
191
|
|
|
157
192
|
<div align="center">
|
|
158
193
|
<img src="https://raw.githubusercontent.com/coo1white/cool-workflow/main/docs/assets/topologies.svg" alt="Built-in multi-agent topologies: map-reduce (fan out, fold in), debate (argue then draw a verdict), and judge-panel (N independent judges score one candidate)." width="92%">
|
|
@@ -160,10 +195,11 @@ every step whose inputs didn't change.
|
|
|
160
195
|
|
|
161
196
|
## Can You Trust the Report?
|
|
162
197
|
|
|
163
|
-
CW
|
|
164
|
-
`cw report verify-bundle` checks — **offline, with nothing
|
|
165
|
-
|
|
166
|
-
|
|
198
|
+
CW does not run the model — it keeps the books. Your agent signs its findings
|
|
199
|
+
(**ed25519**), and `cw report verify-bundle` checks — **offline, with nothing
|
|
200
|
+
but the public key** — that every signed finding is in the report unaltered.
|
|
201
|
+
Edit a finding, in the report or in the agent's own result, and the check
|
|
202
|
+
fails. CW holds no private key: the agent signs, CW only verifies.
|
|
167
203
|
|
|
168
204
|
```bash
|
|
169
205
|
cw demo tamper # proves it in 30s — edits a signed result, watch it fail
|
|
@@ -171,14 +207,104 @@ cw -q "…" --bundle # seal a run into one portable
|
|
|
171
207
|
cw report verify-bundle report.cwrun.json # anyone can re-check it offline, with just the file
|
|
172
208
|
```
|
|
173
209
|
|
|
174
|
-
This
|
|
175
|
-
|
|
210
|
+
This proves the agent's **signed findings** reached you unaltered — not that
|
|
211
|
+
nothing else was added, and not that nothing was left out. For exactly what is
|
|
212
|
+
and is not proven, see the **[Trust Model](https://github.com/coo1white/cool-workflow/blob/main/plugins/cool-workflow/docs/trust-model.md)**.
|
|
176
213
|
|
|
177
214
|
## Use It From Your Editor
|
|
178
215
|
|
|
179
|
-
CW
|
|
180
|
-
|
|
181
|
-
|
|
216
|
+
CW offers the same runtime over **MCP** — a standard way for editors to call
|
|
217
|
+
tools. **Claude Desktop, Cursor, and VS Code call CW as a tool**, so your
|
|
218
|
+
agent can plan a run, drive it, and verify a report without leaving the
|
|
219
|
+
editor. CLI and MCP share one registry and are parity-checked. See the
|
|
220
|
+
**[Wiki](https://github.com/coo1white/cool-workflow/wiki)**.
|
|
221
|
+
|
|
222
|
+
The MCP server is `scripts/mcp-server.js` inside the installed package. After
|
|
223
|
+
`npm install -g cool-workflow`, its full path is:
|
|
224
|
+
|
|
225
|
+
```text
|
|
226
|
+
<output of `npm root -g`>/cool-workflow/scripts/mcp-server.js
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Put that path in the configs below where you see `/path/from/npm-root-g/…`.
|
|
230
|
+
|
|
231
|
+
<details>
|
|
232
|
+
<summary><b>Claude Code</b></summary>
|
|
233
|
+
|
|
234
|
+
The simple way — as a plugin (this wires MCP for you):
|
|
235
|
+
|
|
236
|
+
```text
|
|
237
|
+
/plugin marketplace add coo1white/cool-workflow
|
|
238
|
+
/plugin install cool-workflow@cool-workflow
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Or add only the MCP server, one line in your terminal:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
claude mcp add cool-workflow -- node "$(npm root -g)/cool-workflow/scripts/mcp-server.js"
|
|
245
|
+
```
|
|
246
|
+
</details>
|
|
247
|
+
|
|
248
|
+
<details>
|
|
249
|
+
<summary><b>Claude Desktop</b></summary>
|
|
250
|
+
|
|
251
|
+
Add this to `claude_desktop_config.json`
|
|
252
|
+
(macOS: `~/Library/Application Support/Claude/`,
|
|
253
|
+
Windows: `%APPDATA%\Claude\`), then restart Claude Desktop:
|
|
254
|
+
|
|
255
|
+
```json
|
|
256
|
+
{
|
|
257
|
+
"mcpServers": {
|
|
258
|
+
"cool-workflow": {
|
|
259
|
+
"command": "node",
|
|
260
|
+
"args": ["/path/from/npm-root-g/cool-workflow/scripts/mcp-server.js"]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
</details>
|
|
266
|
+
|
|
267
|
+
<details>
|
|
268
|
+
<summary><b>Cursor</b></summary>
|
|
269
|
+
|
|
270
|
+
Add the same `mcpServers` block to `~/.cursor/mcp.json`
|
|
271
|
+
(or `.cursor/mcp.json` inside one project):
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"mcpServers": {
|
|
276
|
+
"cool-workflow": {
|
|
277
|
+
"command": "node",
|
|
278
|
+
"args": ["/path/from/npm-root-g/cool-workflow/scripts/mcp-server.js"]
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
</details>
|
|
284
|
+
|
|
285
|
+
<details>
|
|
286
|
+
<summary><b>VS Code</b></summary>
|
|
287
|
+
|
|
288
|
+
VS Code uses a `servers` key. Add this to `.vscode/mcp.json` in your project
|
|
289
|
+
(or run **MCP: Add Server** from the Command Palette):
|
|
290
|
+
|
|
291
|
+
```json
|
|
292
|
+
{
|
|
293
|
+
"servers": {
|
|
294
|
+
"cool-workflow": {
|
|
295
|
+
"type": "stdio",
|
|
296
|
+
"command": "node",
|
|
297
|
+
"args": ["/path/from/npm-root-g/cool-workflow/scripts/mcp-server.js"]
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
</details>
|
|
303
|
+
|
|
304
|
+
Once connected, your agent sees the `cw_*` tools — `cw_plan`, `cw_status`,
|
|
305
|
+
`cw_report`, and the rest — the same registry the CLI uses, parity-checked.
|
|
306
|
+
More on the MCP surface — parity, manifests, vendor targets — is on the wiki
|
|
307
|
+
page **[MCP And Manifests](https://github.com/coo1white/cool-workflow/wiki/MCP-And-Manifests)**.
|
|
182
308
|
|
|
183
309
|
## Troubleshooting
|
|
184
310
|
|
|
@@ -188,6 +314,33 @@ one registry and are parity-checked. See the **[Wiki](https://github.com/coo1whi
|
|
|
188
314
|
| `status: blocked` | Set `CW_AGENT_COMMAND=builtin:claude` or pass `-claude` |
|
|
189
315
|
| `claude: command not found` | Install Claude Code and run again |
|
|
190
316
|
| Where is my report? | `<repo>/.cw/runs/<id>/report.md` |
|
|
317
|
+
| `Missing required input: question` | Add `-q "<question>"` — CW now prints this same `Try:` line for you |
|
|
318
|
+
| Run stopped before the end | `cw quickstart <app> --resume --run <id>` takes it to the end (`cw run resume <id> --drive` does the same) |
|
|
319
|
+
| What flags does a command take? | `cw help doctor`, `cw help quickstart`, `cw help ledger` now list a `Flags` block under the command |
|
|
320
|
+
|
|
321
|
+
## Repo Map
|
|
322
|
+
|
|
323
|
+
What every top-level folder and file is for, one line each. Most of these
|
|
324
|
+
places are fixed by a tool, a test, or the release chain — they are where
|
|
325
|
+
they are for a reason.
|
|
326
|
+
|
|
327
|
+
| Place | What it is |
|
|
328
|
+
|---|---|
|
|
329
|
+
| [`plugins/cool-workflow/`](https://github.com/coo1white/cool-workflow/blob/main/plugins/cool-workflow/) | The product itself: TypeScript source (`src/`), committed build (`dist/`), tests, scripts, man-page docs, manifests |
|
|
330
|
+
| [`docs/`](https://github.com/coo1white/cool-workflow/blob/main/docs/) | Repo-level docs: wiki source, audits, benchmark notes, the v2 rebuild SPEC, architecture plans |
|
|
331
|
+
| [`v2/conformance/`](https://github.com/coo1white/cool-workflow/blob/main/v2/conformance/) | Black-box conformance suite — pins the shipping CLI's observable behavior byte for byte; CI runs it on every PR |
|
|
332
|
+
| [`eval/`](https://github.com/coo1white/cool-workflow/blob/main/eval/) | Eval cases for the four workflow skills (ci-triage, pr-review, design-qa, deploy-check) |
|
|
333
|
+
| [`examples/`](https://github.com/coo1white/cool-workflow/blob/main/examples/) | Worked examples, e.g. a real published self-audit with line-cited findings |
|
|
334
|
+
| [`scripts/bench/`](https://github.com/coo1white/cool-workflow/blob/main/scripts/bench/) | The benchmark runner (see [docs/benchmark.md](https://github.com/coo1white/cool-workflow/blob/main/docs/benchmark.md)) |
|
|
335
|
+
| [`Formula/`](https://github.com/coo1white/cool-workflow/blob/main/Formula/) | Homebrew formula — `brew` only finds it at this exact path |
|
|
336
|
+
| `.cw-release/` | Append-only release trust records: gate markers, signed reviewer verdicts. Never edit or delete by hand |
|
|
337
|
+
| `.github/` | CI workflows: build/test matrix, conformance, CodeQL, gitleaks, release gate, npm publish |
|
|
338
|
+
| `.claude-plugin/`, `.agents/plugins/` | Plugin/marketplace manifests so LLM clients can discover CW |
|
|
339
|
+
| [`AGENTS.md`](https://github.com/coo1white/cool-workflow/blob/main/AGENTS.md) / [`CLAUDE.md`](https://github.com/coo1white/cool-workflow/blob/main/CLAUDE.md) / [`Codex.md`](https://github.com/coo1white/cool-workflow/blob/main/Codex.md) | The binding rules for coding agents working ON this repo; the agents auto-load these from the root |
|
|
340
|
+
| [`DIRECTION.md`](https://github.com/coo1white/cool-workflow/blob/main/DIRECTION.md) | Where the project goes — and, on purpose, does not go |
|
|
341
|
+
| [`PROJECT_MEMORY.md`](https://github.com/coo1white/cool-workflow/blob/main/PROJECT_MEMORY.md) | Long-term project memory: lessons that must outlive any one session |
|
|
342
|
+
| [`ITERATION_LOG.md`](https://github.com/coo1white/cool-workflow/blob/main/ITERATION_LOG.md) | Append-only development cycle log; the release gate reads it for the cadence check |
|
|
343
|
+
| [`CHANGELOG.md`](https://github.com/coo1white/cool-workflow/blob/main/CHANGELOG.md) / [`RELEASE.md`](https://github.com/coo1white/cool-workflow/blob/main/RELEASE.md) | Release notes (each entry goes into the GitHub Release as-is) / the release runbook |
|
|
191
344
|
|
|
192
345
|
## Docs & Wiki
|
|
193
346
|
|
|
@@ -201,7 +354,8 @@ Building on CW? See the [Getting Started doc](https://github.com/coo1white/cool-
|
|
|
201
354
|
[Project Index](https://github.com/coo1white/cool-workflow/blob/main/plugins/cool-workflow/docs/project-index.md), and
|
|
202
355
|
[CLI ↔ MCP Parity](https://github.com/coo1white/cool-workflow/blob/main/plugins/cool-workflow/docs/cli-mcp-parity.7.md).
|
|
203
356
|
|
|
204
|
-
CW dogfoods its own release process —
|
|
357
|
+
CW dogfoods its own release process — it runs its own tool on itself, and
|
|
358
|
+
every cut runs the `release-cut` workflow against this repo.
|
|
205
359
|
|
|
206
360
|
## License
|
|
207
361
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"id": "architecture-review",
|
|
4
4
|
"title": "Architecture Review",
|
|
5
5
|
"summary": "Map a repository architecture, assess risks, verify important findings, and synthesize an evidence-backed verdict.",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.5",
|
|
7
7
|
"author": "COOLWHITE LLC",
|
|
8
8
|
"inputs": [
|
|
9
9
|
{
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"id": "architecture-review-fast",
|
|
4
4
|
"title": "Architecture Review Fast",
|
|
5
5
|
"summary": "Run a shorter architecture review with parallel map and assess phases for faster first results.",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.5",
|
|
7
7
|
"author": "COOLWHITE LLC",
|
|
8
8
|
"inputs": [
|
|
9
9
|
{
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"id": "pr-review-fix-ci",
|
|
4
4
|
"title": "PR Review Fix CI",
|
|
5
5
|
"summary": "Review a pull request or branch, inspect CI failures, diagnose actionable issues, optionally patch, verify, and summarize with evidence.",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.5",
|
|
7
7
|
"author": "COOLWHITE LLC",
|
|
8
8
|
"inputs": [
|
|
9
9
|
{
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"id": "release-cut",
|
|
4
4
|
"title": "Release Cut",
|
|
5
5
|
"summary": "Prepare a release with checklist discipline: version checks, changelog, tests, packaging, release notes, and final verification.",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.5",
|
|
7
7
|
"author": "COOLWHITE LLC",
|
|
8
8
|
"inputs": [
|
|
9
9
|
{
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"id": "research-synthesis",
|
|
4
4
|
"title": "Research Synthesis",
|
|
5
5
|
"summary": "Split a research question into claims, investigate sources, cross-check evidence, verify claims, and synthesize a concise answer.",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.5",
|
|
7
7
|
"author": "COOLWHITE LLC",
|
|
8
8
|
"inputs": [
|
|
9
9
|
{
|
package/dist/cli/dispatch.js
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
// one into a real capability-table row; nothing new is ever added here.
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.KNOWN_COMMANDS = void 0;
|
|
24
|
+
exports.shouldRenderHuman = shouldRenderHuman;
|
|
24
25
|
exports.dispatch = dispatch;
|
|
25
26
|
const help_1 = require("../core/format/help");
|
|
26
27
|
const capability_table_1 = require("../core/capability-table");
|
|
@@ -28,18 +29,41 @@ const parseargv_1 = require("./parseargv");
|
|
|
28
29
|
Object.defineProperty(exports, "KNOWN_COMMANDS", { enumerable: true, get: function () { return parseargv_1.KNOWN_COMMANDS; } });
|
|
29
30
|
const io_1 = require("./io");
|
|
30
31
|
const cli_args_1 = require("../core/util/cli-args");
|
|
32
|
+
const global_flags_1 = require("./global-flags");
|
|
31
33
|
function firstPositional(args, index = 0) {
|
|
32
34
|
return args.positionals[index];
|
|
33
35
|
}
|
|
36
|
+
/** The one rendering-mode decision for a `jsonMode: "default"` row's
|
|
37
|
+
* OPTIONAL human projection (CliBinding.humanRender): true ONLY when the
|
|
38
|
+
* row is "default", the caller did NOT ask for JSON (`--json`/`--format
|
|
39
|
+
* json`), the row declares a humanRender, AND stdout is a real TTY.
|
|
40
|
+
* Every other combination — every pipe, every script, every conformance
|
|
41
|
+
* run — stays byte-identical JSON. Deliberately does NOT read
|
|
42
|
+
* FORCE_COLOR/NO_COLOR: color env vars style output, they never pick
|
|
43
|
+
* the output mode (cli-color-env pipes with FORCE_COLOR=1 and must stay
|
|
44
|
+
* JSON). Pure of the injectable `stream` (default process.stdout),
|
|
45
|
+
* following shell/workbench-host.ts's printServeHint pattern. */
|
|
46
|
+
function shouldRenderHuman(jsonMode, options, hasHumanRender, stream = process.stdout) {
|
|
47
|
+
return jsonMode === "default" && !(0, cli_args_1.wantsJson)(options) && hasHumanRender && Boolean(stream.isTTY);
|
|
48
|
+
}
|
|
34
49
|
/** Writes a `CliHandlerResult` to stdout and applies its exit code, per
|
|
35
50
|
* the row's `jsonMode`:
|
|
36
51
|
* - `"default"` — always prints `result.json` as JSON (falls back to
|
|
37
|
-
* `result.text` when a row has no canonical JSON shape).
|
|
52
|
+
* `result.text` when a row has no canonical JSON shape). On a real
|
|
53
|
+
* TTY, a row that declares `humanRender` prints that human text
|
|
54
|
+
* instead (see shouldRenderHuman above — piped bytes never change).
|
|
38
55
|
* - `"flag"` — prints `result.text` normally, `result.json` under
|
|
39
56
|
* `--json`/`--format json`.
|
|
40
57
|
* - `"human"` — always prints `result.text`; there is no JSON form. */
|
|
41
|
-
function renderCliResult(result,
|
|
42
|
-
|
|
58
|
+
function renderCliResult(result, cli, options) {
|
|
59
|
+
if (shouldRenderHuman(cli.jsonMode, options, Boolean(cli.humanRender)) && result.json !== undefined) {
|
|
60
|
+
const human = cli.humanRender(result.json);
|
|
61
|
+
process.stdout.write(human.endsWith("\n") ? human : `${human}\n`);
|
|
62
|
+
if (result.exitCode !== undefined)
|
|
63
|
+
process.exitCode = result.exitCode;
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const useJson = cli.jsonMode === "default" || (cli.jsonMode === "flag" && (0, cli_args_1.wantsJson)(options));
|
|
43
67
|
if (useJson && result.json !== undefined) {
|
|
44
68
|
(0, io_1.printJson)(result.json);
|
|
45
69
|
}
|
|
@@ -75,8 +99,12 @@ async function dispatchTable(args) {
|
|
|
75
99
|
positionals: args.positionals.slice(consumed),
|
|
76
100
|
options: args.options,
|
|
77
101
|
};
|
|
102
|
+
// Rows that declare a complete flag list get the TTY-only unknown-flag
|
|
103
|
+
// warning (one stderr line; stdout and the exit code never change —
|
|
104
|
+
// see cli/global-flags.ts).
|
|
105
|
+
(0, global_flags_1.warnUnknownFlags)(row.cli, args.options);
|
|
78
106
|
const result = await row.cli.handler(cliArgs);
|
|
79
|
-
renderCliResult(result, row.cli
|
|
107
|
+
renderCliResult(result, row.cli, args.options);
|
|
80
108
|
return true;
|
|
81
109
|
}
|
|
82
110
|
return false;
|