agentxchain 0.8.8 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -142
- package/bin/agentxchain.js +186 -5
- package/dashboard/app.js +305 -0
- package/dashboard/components/blocked.js +145 -0
- package/dashboard/components/cross-repo.js +126 -0
- package/dashboard/components/gate.js +311 -0
- package/dashboard/components/hooks.js +177 -0
- package/dashboard/components/initiative.js +147 -0
- package/dashboard/components/ledger.js +165 -0
- package/dashboard/components/timeline.js +222 -0
- package/dashboard/index.html +352 -0
- package/package.json +14 -6
- package/scripts/live-api-proxy-preflight-smoke.sh +531 -0
- package/scripts/publish-from-tag.sh +88 -0
- package/scripts/release-postflight.sh +231 -0
- package/scripts/release-preflight.sh +167 -0
- package/src/commands/accept-turn.js +160 -0
- package/src/commands/approve-completion.js +80 -0
- package/src/commands/approve-transition.js +85 -0
- package/src/commands/dashboard.js +70 -0
- package/src/commands/init.js +516 -0
- package/src/commands/migrate.js +348 -0
- package/src/commands/multi.js +549 -0
- package/src/commands/plugin.js +157 -0
- package/src/commands/reject-turn.js +204 -0
- package/src/commands/resume.js +389 -0
- package/src/commands/status.js +196 -3
- package/src/commands/step.js +947 -0
- package/src/commands/template-list.js +33 -0
- package/src/commands/template-set.js +279 -0
- package/src/commands/validate.js +20 -11
- package/src/commands/verify.js +71 -0
- package/src/lib/adapters/api-proxy-adapter.js +1076 -0
- package/src/lib/adapters/local-cli-adapter.js +337 -0
- package/src/lib/adapters/manual-adapter.js +169 -0
- package/src/lib/blocked-state.js +94 -0
- package/src/lib/config.js +97 -1
- package/src/lib/context-compressor.js +121 -0
- package/src/lib/context-section-parser.js +220 -0
- package/src/lib/coordinator-acceptance.js +428 -0
- package/src/lib/coordinator-config.js +461 -0
- package/src/lib/coordinator-dispatch.js +276 -0
- package/src/lib/coordinator-gates.js +487 -0
- package/src/lib/coordinator-hooks.js +239 -0
- package/src/lib/coordinator-recovery.js +523 -0
- package/src/lib/coordinator-state.js +365 -0
- package/src/lib/cross-repo-context.js +247 -0
- package/src/lib/dashboard/bridge-server.js +284 -0
- package/src/lib/dashboard/file-watcher.js +93 -0
- package/src/lib/dashboard/state-reader.js +96 -0
- package/src/lib/dispatch-bundle.js +568 -0
- package/src/lib/dispatch-manifest.js +252 -0
- package/src/lib/gate-evaluator.js +285 -0
- package/src/lib/governed-state.js +2139 -0
- package/src/lib/governed-templates.js +145 -0
- package/src/lib/hook-runner.js +788 -0
- package/src/lib/normalized-config.js +539 -0
- package/src/lib/plugin-config-schema.js +192 -0
- package/src/lib/plugins.js +692 -0
- package/src/lib/protocol-conformance.js +291 -0
- package/src/lib/reference-conformance-adapter.js +717 -0
- package/src/lib/repo-observer.js +597 -0
- package/src/lib/repo.js +0 -31
- package/src/lib/schema.js +121 -0
- package/src/lib/schemas/turn-result.schema.json +205 -0
- package/src/lib/token-budget.js +206 -0
- package/src/lib/token-counter.js +27 -0
- package/src/lib/turn-paths.js +67 -0
- package/src/lib/turn-result-validator.js +496 -0
- package/src/lib/validation.js +137 -0
- package/src/templates/governed/api-service.json +31 -0
- package/src/templates/governed/cli-tool.json +30 -0
- package/src/templates/governed/generic.json +10 -0
- package/src/templates/governed/web-app.json +30 -0
package/README.md
CHANGED
|
@@ -1,202 +1,186 @@
|
|
|
1
1
|
# agentxchain
|
|
2
2
|
|
|
3
|
-
CLI for multi-agent
|
|
3
|
+
CLI for governed multi-agent software delivery.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The canonical mode is governed delivery: orchestrator-owned state, structured turn results, phase gates, mandatory challenge, and explicit human approvals where required.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
npm install -g agentxchain
|
|
9
|
-
```
|
|
7
|
+
Legacy IDE-window coordination is still shipped as a compatibility mode for teams that want lock-based handoff in Cursor, VS Code, or Claude Code.
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
## Docs
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
- [Quickstart](https://agentxchain.dev/docs/quickstart.html)
|
|
12
|
+
- [CLI reference](https://agentxchain.dev/docs/cli.html)
|
|
13
|
+
- [Adapter reference](https://agentxchain.dev/docs/adapters.html)
|
|
14
|
+
- [Protocol spec (v6)](https://agentxchain.dev/docs/protocol.html)
|
|
15
|
+
- [Why governed multi-agent delivery matters](https://agentxchain.dev/why.html)
|
|
16
16
|
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
### Happy path: net-new project
|
|
17
|
+
## Install
|
|
20
18
|
|
|
21
19
|
```bash
|
|
22
|
-
|
|
23
|
-
cd my-agentxchain-project # default with init -y, or your chosen folder name
|
|
24
|
-
agentxchain kickoff
|
|
20
|
+
npm install -g agentxchain
|
|
25
21
|
```
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
Run these commands from inside your existing project folder:
|
|
23
|
+
Or run without installing:
|
|
30
24
|
|
|
31
25
|
```bash
|
|
32
|
-
agentxchain
|
|
33
|
-
agentxchain generate
|
|
34
|
-
agentxchain kickoff
|
|
26
|
+
npx agentxchain init --governed -y
|
|
35
27
|
```
|
|
36
28
|
|
|
37
|
-
|
|
29
|
+
## Quick Start
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
## Commands
|
|
42
|
-
|
|
43
|
-
| Command | What it does |
|
|
44
|
-
|---------|-------------|
|
|
45
|
-
| `init` | Create project folder with agents, protocol files, and templates |
|
|
46
|
-
| `kickoff` | Guided PM-first flow: PM kickoff, validate, launch remaining, release |
|
|
47
|
-
| `start` | Open a Cursor window per agent + copy prompts to clipboard |
|
|
48
|
-
| `supervise` | Run watcher and optional AppleScript auto-nudge together |
|
|
49
|
-
| `generate` | Regenerate agent files from `agentxchain.json` |
|
|
50
|
-
| `validate` | Enforce PM signoff + waves/phases + turn artifact schema |
|
|
51
|
-
| `status` | Show lock holder, phase, turn number, agents |
|
|
52
|
-
| `doctor` | Validate local setup (tools, trigger flow, accessibility checks) |
|
|
53
|
-
| `claim` | Human takes control (agents stop claiming) |
|
|
54
|
-
| `release` | Hand lock back to agents |
|
|
55
|
-
| `stop` | Stop watch daemon, end Claude Code sessions; Cursor/VS Code chats close manually |
|
|
56
|
-
| `branch` | Show/set Cursor branch override for launches |
|
|
57
|
-
| `watch` | Referee loop: validates turns, writes next trigger, and force-releases stale locks |
|
|
58
|
-
| `config` | View/edit config, add/remove agents, change rules |
|
|
59
|
-
| `rebind` | Rebuild Cursor workspace/prompt bindings for agents |
|
|
60
|
-
| `update` | Self-update CLI from npm |
|
|
61
|
-
|
|
62
|
-
### Full command list
|
|
31
|
+
### Governed workflow
|
|
63
32
|
|
|
64
33
|
```bash
|
|
65
|
-
agentxchain init
|
|
34
|
+
npx agentxchain init --governed -y
|
|
35
|
+
cd my-agentxchain-project
|
|
36
|
+
git init
|
|
37
|
+
git add -A
|
|
38
|
+
git commit -m "initial governed scaffold"
|
|
66
39
|
agentxchain status
|
|
67
|
-
agentxchain
|
|
68
|
-
agentxchain kickoff
|
|
69
|
-
agentxchain stop
|
|
70
|
-
agentxchain branch
|
|
71
|
-
agentxchain config
|
|
72
|
-
agentxchain rebind
|
|
73
|
-
agentxchain generate
|
|
74
|
-
agentxchain watch
|
|
75
|
-
agentxchain supervise
|
|
76
|
-
agentxchain claim
|
|
77
|
-
agentxchain release
|
|
78
|
-
agentxchain update
|
|
79
|
-
agentxchain doctor
|
|
80
|
-
agentxchain validate
|
|
40
|
+
agentxchain step --role pm
|
|
81
41
|
```
|
|
82
42
|
|
|
83
|
-
|
|
43
|
+
If you want template-specific planning artifacts from day one:
|
|
84
44
|
|
|
85
45
|
```bash
|
|
86
|
-
agentxchain
|
|
87
|
-
agentxchain start --ide vscode # VS Code — uses .agent.md custom agents + hooks
|
|
88
|
-
agentxchain start --ide claude-code # Claude Code — spawns CLI processes
|
|
46
|
+
npx agentxchain init --governed --template api-service -y
|
|
89
47
|
```
|
|
90
48
|
|
|
91
|
-
|
|
49
|
+
Built-in governed templates:
|
|
92
50
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
agentxchain kickoff --interval 2 # nudge poll interval override
|
|
98
|
-
agentxchain kickoff --no-autonudge # skip auto-nudge prompt
|
|
99
|
-
|
|
100
|
-
agentxchain start --agent pm # launch only one specific agent
|
|
101
|
-
agentxchain start --remaining # launch all agents except PM (PM-first flow)
|
|
102
|
-
agentxchain start --dry-run # preview agents without launching
|
|
103
|
-
agentxchain validate --mode kickoff # required before --remaining
|
|
104
|
-
agentxchain validate --mode turn --agent pm
|
|
105
|
-
agentxchain validate --json # machine-readable validation output
|
|
106
|
-
agentxchain watch --daemon # run watch in background
|
|
107
|
-
agentxchain supervise --autonudge # run watch + AppleScript nudge loop
|
|
108
|
-
agentxchain supervise --autonudge --send # auto-press Enter after paste
|
|
109
|
-
agentxchain supervise --interval 2 # set auto-nudge poll interval
|
|
110
|
-
agentxchain rebind # regenerate agent prompt/workspace bindings
|
|
111
|
-
agentxchain rebind --open # regenerate and reopen all Cursor agent windows
|
|
112
|
-
agentxchain rebind --agent pm # regenerate one agent binding only
|
|
113
|
-
agentxchain claim --agent pm # guarded claim as agent turn owner
|
|
114
|
-
agentxchain release --agent pm # guarded release as agent turn owner
|
|
115
|
-
agentxchain release --force # force-release non-human holder lock
|
|
116
|
-
agentxchain config --set "rules.strict_next_owner true" # TALK-only next owner (no cyclic fallback)
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## macOS auto-nudge (AppleScript)
|
|
51
|
+
- `generic`: baseline governed scaffold
|
|
52
|
+
- `api-service`: API contract, operational readiness, error budget
|
|
53
|
+
- `cli-tool`: command surface, platform support, distribution checklist
|
|
54
|
+
- `web-app`: user flows, UI acceptance, browser support
|
|
120
55
|
|
|
121
|
-
|
|
56
|
+
`step` writes a turn-scoped bundle under `.agentxchain/dispatch/turns/<turn_id>/` and expects a staged result at `.agentxchain/staging/<turn_id>/turn-result.json`. Typical continuation:
|
|
122
57
|
|
|
123
58
|
```bash
|
|
124
|
-
agentxchain
|
|
125
|
-
agentxchain
|
|
59
|
+
agentxchain validate --mode turn
|
|
60
|
+
agentxchain accept-turn
|
|
61
|
+
agentxchain approve-transition
|
|
62
|
+
agentxchain step --role dev
|
|
63
|
+
agentxchain step --role qa
|
|
64
|
+
agentxchain approve-completion
|
|
126
65
|
```
|
|
127
66
|
|
|
128
|
-
|
|
67
|
+
Default governed scaffolding configures QA as `api_proxy` with `ANTHROPIC_API_KEY`. For a provider-free walkthrough, switch the QA runtime to `manual` before the QA step.
|
|
68
|
+
|
|
69
|
+
### Migrate a legacy project
|
|
129
70
|
|
|
130
71
|
```bash
|
|
131
|
-
|
|
132
|
-
|
|
72
|
+
agentxchain migrate
|
|
73
|
+
agentxchain status
|
|
74
|
+
agentxchain step
|
|
133
75
|
```
|
|
134
76
|
|
|
135
|
-
|
|
136
|
-
- Requires macOS (`osascript`) and `jq` (`brew install jq`)
|
|
137
|
-
- Grant Accessibility permissions to Terminal and Cursor
|
|
138
|
-
- The script watches `.agentxchain-trigger.json`, which is written by `agentxchain watch`
|
|
139
|
-
- `run-autonudge.sh` now requires watch to be running first
|
|
140
|
-
- The script only nudges when it finds a unique matching agent window (no random fallback)
|
|
141
|
-
|
|
142
|
-
## How it works
|
|
77
|
+
## Command Sets
|
|
143
78
|
|
|
144
|
-
###
|
|
79
|
+
### Governed
|
|
145
80
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
81
|
+
| Command | What it does |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `init --governed [--template <id>]` | Create a governed project, optionally with project-shape-specific planning artifacts |
|
|
84
|
+
| `migrate` | Convert a legacy v3 project to governed format |
|
|
85
|
+
| `status` | Show current run, template, phase, turn, and approval state |
|
|
86
|
+
| `resume` | Initialize or continue a governed run and assign the next turn |
|
|
87
|
+
| `step` | Run one governed turn end to end or resume an active turn |
|
|
88
|
+
| `accept-turn` | Accept the staged governed turn result |
|
|
89
|
+
| `reject-turn` | Reject the staged result, retry, or reassign |
|
|
90
|
+
| `approve-transition` | Approve a pending human-gated phase transition |
|
|
91
|
+
| `approve-completion` | Approve a pending human-gated run completion |
|
|
92
|
+
| `validate` | Validate governed kickoff wiring, a staged turn, or both |
|
|
93
|
+
| `dashboard` | Open the read-only governance dashboard in your browser for repo-local runs or multi-repo coordinator initiatives |
|
|
94
|
+
| `plugin install|list|remove` | Install, inspect, or remove governed hook plugins backed by `agentxchain-plugin.json` manifests |
|
|
95
|
+
|
|
96
|
+
### Shared utilities
|
|
154
97
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
98
|
+
| Command | What it does |
|
|
99
|
+
|---|---|
|
|
100
|
+
| `config` | View or edit project configuration |
|
|
101
|
+
| `update` | Update the CLI from npm |
|
|
158
102
|
|
|
159
|
-
###
|
|
103
|
+
### Legacy v3 compatibility
|
|
160
104
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
105
|
+
| Command | What it does |
|
|
106
|
+
|---|---|
|
|
107
|
+
| `init` | Create a legacy project folder |
|
|
108
|
+
| `start` | Launch legacy agents in IDE sessions |
|
|
109
|
+
| `kickoff` | Guided PM-first legacy setup flow |
|
|
110
|
+
| `watch` | Referee loop for legacy lock-based handoff |
|
|
111
|
+
| `supervise` | Run `watch` plus optional macOS auto-nudge |
|
|
112
|
+
| `claim` / `release` | Human override of legacy lock ownership |
|
|
113
|
+
| `rebind` | Rebuild Cursor bindings |
|
|
114
|
+
| `generate` | Regenerate VS Code agent files |
|
|
115
|
+
| `branch` | Manage Cursor branch override for launches |
|
|
116
|
+
| `doctor` | Check local environment and setup |
|
|
117
|
+
| `stop` | Stop watch daemon and local sessions |
|
|
118
|
+
|
|
119
|
+
## Governed Flow
|
|
120
|
+
|
|
121
|
+
1. `agentxchain step` initializes or resumes the run if needed.
|
|
122
|
+
2. It assigns the next role for the current phase.
|
|
123
|
+
3. It writes `.agentxchain/dispatch/turns/<turn_id>/`.
|
|
124
|
+
4. The assigned role writes `.agentxchain/staging/<turn_id>/turn-result.json`.
|
|
125
|
+
5. The orchestrator validates and either accepts, rejects, advances phase, pauses for approval, or completes the run.
|
|
126
|
+
|
|
127
|
+
Important governed files:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
agentxchain.json
|
|
131
|
+
.agentxchain/state.json
|
|
132
|
+
.agentxchain/history.jsonl
|
|
133
|
+
.agentxchain/decision-ledger.jsonl
|
|
134
|
+
.agentxchain/dispatch/turns/<turn_id>/
|
|
135
|
+
.agentxchain/staging/<turn_id>/turn-result.json
|
|
136
|
+
TALK.md
|
|
137
|
+
.planning/
|
|
138
|
+
```
|
|
165
139
|
|
|
166
|
-
|
|
140
|
+
### Runtime support today
|
|
167
141
|
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
- **User-defined teams** — any number of agents, any roles
|
|
172
|
-
- **No API keys or cloud required** — everything runs locally
|
|
173
|
-
- **Human-in-the-loop** — claim/release to intervene anytime
|
|
174
|
-
- **Team templates** — SaaS MVP, Landing Page, Bug Squad, API Builder, Refactor Team
|
|
175
|
-
- **Lock TTL** — `watch` can force-release stale locks as a safety net
|
|
142
|
+
- `manual`: implemented
|
|
143
|
+
- `local_cli`: implemented
|
|
144
|
+
- `api_proxy`: implemented for synchronous review-only turns and stages a provider-backed result during `step`
|
|
176
145
|
|
|
177
|
-
##
|
|
146
|
+
## Legacy IDE Mode
|
|
178
147
|
|
|
179
|
-
|
|
148
|
+
Legacy mode is still useful if you specifically want one IDE session per agent and lock-file coordination.
|
|
180
149
|
|
|
181
150
|
```bash
|
|
182
|
-
|
|
151
|
+
agentxchain start # Cursor (default)
|
|
152
|
+
agentxchain start --ide vscode
|
|
153
|
+
agentxchain start --ide claude-code
|
|
154
|
+
agentxchain kickoff
|
|
155
|
+
agentxchain supervise --autonudge
|
|
183
156
|
```
|
|
184
157
|
|
|
185
|
-
|
|
158
|
+
In this mode, agents hand off through `lock.json`, `state.json`, triggers, and `TALK.md`. For new projects, prefer governed mode unless IDE-window choreography is the goal.
|
|
159
|
+
|
|
160
|
+
## macOS Auto-Nudge
|
|
161
|
+
|
|
162
|
+
`supervise --autonudge` is legacy-only and macOS-only.
|
|
186
163
|
|
|
187
164
|
```bash
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
bash scripts/publish-npm.sh minor # minor bump + publish
|
|
165
|
+
agentxchain supervise --autonudge
|
|
166
|
+
agentxchain supervise --autonudge --send
|
|
191
167
|
```
|
|
192
168
|
|
|
193
|
-
|
|
169
|
+
Requires:
|
|
170
|
+
|
|
171
|
+
- `osascript`
|
|
172
|
+
- `jq`
|
|
173
|
+
- Accessibility permissions for Terminal and Cursor
|
|
194
174
|
|
|
195
175
|
## Links
|
|
196
176
|
|
|
197
177
|
- [agentxchain.dev](https://agentxchain.dev)
|
|
178
|
+
- [Quickstart](https://agentxchain.dev/docs/quickstart.html)
|
|
179
|
+
- [CLI reference](https://agentxchain.dev/docs/cli.html)
|
|
180
|
+
- [Adapter reference](https://agentxchain.dev/docs/adapters.html)
|
|
181
|
+
- [Protocol spec (v6)](https://agentxchain.dev/docs/protocol.html)
|
|
198
182
|
- [GitHub](https://github.com/shivamtiwari93/agentXchain.dev)
|
|
199
|
-
- [Protocol v3 spec](https://github.com/shivamtiwari93/agentXchain.dev/blob/main/PROTOCOL-v3.md)
|
|
183
|
+
- [Legacy Protocol v3 spec](https://github.com/shivamtiwari93/agentXchain.dev/blob/main/PROTOCOL-v3.md)
|
|
200
184
|
|
|
201
185
|
## License
|
|
202
186
|
|
package/bin/agentxchain.js
CHANGED
|
@@ -59,9 +59,33 @@ import { generateCommand } from '../src/commands/generate.js';
|
|
|
59
59
|
import { doctorCommand } from '../src/commands/doctor.js';
|
|
60
60
|
import { superviseCommand } from '../src/commands/supervise.js';
|
|
61
61
|
import { validateCommand } from '../src/commands/validate.js';
|
|
62
|
+
import { verifyProtocolCommand } from '../src/commands/verify.js';
|
|
62
63
|
import { kickoffCommand } from '../src/commands/kickoff.js';
|
|
63
64
|
import { rebindCommand } from '../src/commands/rebind.js';
|
|
64
65
|
import { branchCommand } from '../src/commands/branch.js';
|
|
66
|
+
import { migrateCommand } from '../src/commands/migrate.js';
|
|
67
|
+
import { resumeCommand } from '../src/commands/resume.js';
|
|
68
|
+
import { acceptTurnCommand } from '../src/commands/accept-turn.js';
|
|
69
|
+
import { rejectTurnCommand } from '../src/commands/reject-turn.js';
|
|
70
|
+
import { stepCommand } from '../src/commands/step.js';
|
|
71
|
+
import { approveTransitionCommand } from '../src/commands/approve-transition.js';
|
|
72
|
+
import { approveCompletionCommand } from '../src/commands/approve-completion.js';
|
|
73
|
+
import { dashboardCommand } from '../src/commands/dashboard.js';
|
|
74
|
+
import {
|
|
75
|
+
pluginInstallCommand,
|
|
76
|
+
pluginListCommand,
|
|
77
|
+
pluginRemoveCommand,
|
|
78
|
+
pluginUpgradeCommand,
|
|
79
|
+
} from '../src/commands/plugin.js';
|
|
80
|
+
import { templateSetCommand } from '../src/commands/template-set.js';
|
|
81
|
+
import { templateListCommand } from '../src/commands/template-list.js';
|
|
82
|
+
import {
|
|
83
|
+
multiInitCommand,
|
|
84
|
+
multiStatusCommand,
|
|
85
|
+
multiStepCommand,
|
|
86
|
+
multiApproveGateCommand,
|
|
87
|
+
multiResyncCommand,
|
|
88
|
+
} from '../src/commands/multi.js';
|
|
65
89
|
|
|
66
90
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
67
91
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8'));
|
|
@@ -70,24 +94,27 @@ const program = new Command();
|
|
|
70
94
|
|
|
71
95
|
program
|
|
72
96
|
.name('agentxchain')
|
|
73
|
-
.description('
|
|
97
|
+
.description('Governed multi-agent software delivery orchestration')
|
|
74
98
|
.version(pkg.version);
|
|
75
99
|
|
|
76
100
|
program
|
|
77
101
|
.command('init')
|
|
78
102
|
.description('Create a new AgentXchain project folder')
|
|
79
103
|
.option('-y, --yes', 'Skip prompts, use defaults')
|
|
104
|
+
.option('--governed', 'Create a governed project (orchestrator-owned state)')
|
|
105
|
+
.option('--template <id>', 'Governed scaffold template: generic, api-service, cli-tool, web-app')
|
|
106
|
+
.option('--schema-version <version>', 'Schema version (3 for legacy, or use --governed for current)')
|
|
80
107
|
.action(initCommand);
|
|
81
108
|
|
|
82
109
|
program
|
|
83
110
|
.command('status')
|
|
84
|
-
.description('Show
|
|
111
|
+
.description('Show current run or lock status')
|
|
85
112
|
.option('-j, --json', 'Output as JSON')
|
|
86
113
|
.action(statusCommand);
|
|
87
114
|
|
|
88
115
|
program
|
|
89
116
|
.command('start')
|
|
90
|
-
.description('Launch agents in your IDE')
|
|
117
|
+
.description('Launch legacy v3 agents in your IDE')
|
|
91
118
|
.option('--ide <ide>', 'Target IDE: cursor, vscode, claude-code', 'cursor')
|
|
92
119
|
.option('--agent <id>', 'Launch a specific agent only')
|
|
93
120
|
.option('--remaining', 'Launch all remaining agents except PM (for PM-first flow)')
|
|
@@ -96,7 +123,7 @@ program
|
|
|
96
123
|
|
|
97
124
|
program
|
|
98
125
|
.command('kickoff')
|
|
99
|
-
.description('Guided PM-first first-run workflow')
|
|
126
|
+
.description('Guided legacy PM-first first-run workflow')
|
|
100
127
|
.option('--ide <ide>', 'Target IDE: cursor, vscode, claude-code', 'cursor')
|
|
101
128
|
.option('--send', 'When using Cursor auto-nudge, auto-send nudges')
|
|
102
129
|
.option('--interval <seconds>', 'Auto-nudge poll interval in seconds', '3')
|
|
@@ -176,10 +203,164 @@ program
|
|
|
176
203
|
|
|
177
204
|
program
|
|
178
205
|
.command('validate')
|
|
179
|
-
.description('Validate
|
|
206
|
+
.description('Validate project protocol artifacts')
|
|
180
207
|
.option('--mode <mode>', 'Validation mode: kickoff, turn, full', 'full')
|
|
181
208
|
.option('--agent <id>', 'Expected agent for last history entry (turn mode)')
|
|
182
209
|
.option('-j, --json', 'Output as JSON')
|
|
183
210
|
.action(validateCommand);
|
|
184
211
|
|
|
212
|
+
const verifyCmd = program
|
|
213
|
+
.command('verify')
|
|
214
|
+
.description('Verify protocol conformance targets');
|
|
215
|
+
|
|
216
|
+
verifyCmd
|
|
217
|
+
.command('protocol')
|
|
218
|
+
.description('Run the protocol conformance fixture suite against a target implementation')
|
|
219
|
+
.option('--tier <tier>', 'Conformance tier to verify (1, 2, or 3)', '1')
|
|
220
|
+
.option('--surface <surface>', 'Restrict verification to a single surface')
|
|
221
|
+
.option('--target <path>', 'Target root containing .agentxchain-conformance/capabilities.json', '.')
|
|
222
|
+
.option('--format <format>', 'Output format: text or json', 'text')
|
|
223
|
+
.action(verifyProtocolCommand);
|
|
224
|
+
|
|
225
|
+
program
|
|
226
|
+
.command('migrate')
|
|
227
|
+
.description('Migrate a legacy v3 project to governed format')
|
|
228
|
+
.option('-y, --yes', 'Skip confirmation prompts')
|
|
229
|
+
.option('-j, --json', 'Output migration report as JSON')
|
|
230
|
+
.action(migrateCommand);
|
|
231
|
+
|
|
232
|
+
program
|
|
233
|
+
.command('resume')
|
|
234
|
+
.description('Resume a governed project: initialize or continue a run and assign the next turn')
|
|
235
|
+
.option('--role <role>', 'Override the target role (default: phase entry role)')
|
|
236
|
+
.option('--turn <id>', 'Target a specific retained turn when multiple exist')
|
|
237
|
+
.action(resumeCommand);
|
|
238
|
+
|
|
239
|
+
program
|
|
240
|
+
.command('accept-turn')
|
|
241
|
+
.description('Accept the currently staged governed turn result')
|
|
242
|
+
.option('--turn <id>', 'Target a specific active turn when multiple turns exist')
|
|
243
|
+
.option('--resolution <mode>', 'Conflict resolution mode for conflicted turns (standard, human_merge)', 'standard')
|
|
244
|
+
.action(acceptTurnCommand);
|
|
245
|
+
|
|
246
|
+
program
|
|
247
|
+
.command('reject-turn')
|
|
248
|
+
.description('Reject the current governed turn result and retry or escalate')
|
|
249
|
+
.option('--turn <id>', 'Target a specific active turn when multiple turns exist')
|
|
250
|
+
.option('--reason <reason>', 'Operator reason for the rejection')
|
|
251
|
+
.option('--reassign', 'Immediately re-dispatch a conflicted turn with conflict context')
|
|
252
|
+
.action(rejectTurnCommand);
|
|
253
|
+
|
|
254
|
+
program
|
|
255
|
+
.command('step')
|
|
256
|
+
.description('Run a single governed turn: assign, dispatch, wait, validate, accept/reject')
|
|
257
|
+
.option('--role <role>', 'Override the target role (default: phase entry role)')
|
|
258
|
+
.option('--resume', 'Resume waiting for an already-active turn')
|
|
259
|
+
.option('--turn <id>', 'Target a specific active turn (required with --resume when multiple turns exist)')
|
|
260
|
+
.option('--poll <seconds>', 'Polling interval for manual adapter in seconds', '2')
|
|
261
|
+
.option('--verbose', 'Stream local_cli subprocess output while the turn is running')
|
|
262
|
+
.option('--auto-reject', 'Auto-reject and retry on validation failure')
|
|
263
|
+
.action(stepCommand);
|
|
264
|
+
|
|
265
|
+
program
|
|
266
|
+
.command('approve-transition')
|
|
267
|
+
.description('Approve a pending phase transition that requires human sign-off')
|
|
268
|
+
.action(approveTransitionCommand);
|
|
269
|
+
|
|
270
|
+
program
|
|
271
|
+
.command('approve-completion')
|
|
272
|
+
.description('Approve a pending run completion that requires human sign-off')
|
|
273
|
+
.action(approveCompletionCommand);
|
|
274
|
+
|
|
275
|
+
program
|
|
276
|
+
.command('dashboard')
|
|
277
|
+
.description('Open the read-only governance dashboard in your browser')
|
|
278
|
+
.option('--port <port>', 'Server port', '3847')
|
|
279
|
+
.option('--no-open', 'Do not auto-open the browser')
|
|
280
|
+
.action(dashboardCommand);
|
|
281
|
+
|
|
282
|
+
const pluginCmd = program
|
|
283
|
+
.command('plugin')
|
|
284
|
+
.description('Manage governed project plugins');
|
|
285
|
+
|
|
286
|
+
pluginCmd
|
|
287
|
+
.command('install <source>')
|
|
288
|
+
.description('Install a plugin from a local path, archive, or npm package spec')
|
|
289
|
+
.option('--config <json>', 'Inline JSON plugin config validated against config_schema')
|
|
290
|
+
.option('--config-file <path>', 'Read plugin config JSON from a file')
|
|
291
|
+
.option('-j, --json', 'Output as JSON')
|
|
292
|
+
.action(pluginInstallCommand);
|
|
293
|
+
|
|
294
|
+
pluginCmd
|
|
295
|
+
.command('list')
|
|
296
|
+
.description('List installed plugins')
|
|
297
|
+
.option('-j, --json', 'Output as JSON')
|
|
298
|
+
.action(pluginListCommand);
|
|
299
|
+
|
|
300
|
+
pluginCmd
|
|
301
|
+
.command('remove <name>')
|
|
302
|
+
.description('Remove an installed plugin')
|
|
303
|
+
.option('-j, --json', 'Output as JSON')
|
|
304
|
+
.action(pluginRemoveCommand);
|
|
305
|
+
|
|
306
|
+
pluginCmd
|
|
307
|
+
.command('upgrade <name> [source]')
|
|
308
|
+
.description('Upgrade an installed plugin atomically, rolling back on failure')
|
|
309
|
+
.option('--config <json>', 'Inline JSON plugin config validated against config_schema')
|
|
310
|
+
.option('--config-file <path>', 'Read plugin config JSON from a file')
|
|
311
|
+
.option('-j, --json', 'Output as JSON')
|
|
312
|
+
.action(pluginUpgradeCommand);
|
|
313
|
+
|
|
314
|
+
const templateCmd = program
|
|
315
|
+
.command('template')
|
|
316
|
+
.description('Manage governed project templates');
|
|
317
|
+
|
|
318
|
+
templateCmd
|
|
319
|
+
.command('set <id>')
|
|
320
|
+
.description('Set or change the governed template for this project')
|
|
321
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
322
|
+
.option('--dry-run', 'Print what would change without writing anything')
|
|
323
|
+
.action(templateSetCommand);
|
|
324
|
+
|
|
325
|
+
templateCmd
|
|
326
|
+
.command('list')
|
|
327
|
+
.description('List available governed templates')
|
|
328
|
+
.option('-j, --json', 'Output as JSON')
|
|
329
|
+
.action(templateListCommand);
|
|
330
|
+
|
|
331
|
+
const multiCmd = program
|
|
332
|
+
.command('multi')
|
|
333
|
+
.description('Multi-repo coordinator orchestration');
|
|
334
|
+
|
|
335
|
+
multiCmd
|
|
336
|
+
.command('init')
|
|
337
|
+
.description('Bootstrap a multi-repo coordinator run')
|
|
338
|
+
.option('-j, --json', 'Output as JSON')
|
|
339
|
+
.action(multiInitCommand);
|
|
340
|
+
|
|
341
|
+
multiCmd
|
|
342
|
+
.command('status')
|
|
343
|
+
.description('Show coordinator status and repo-run snapshots')
|
|
344
|
+
.option('-j, --json', 'Output as JSON')
|
|
345
|
+
.action(multiStatusCommand);
|
|
346
|
+
|
|
347
|
+
multiCmd
|
|
348
|
+
.command('step')
|
|
349
|
+
.description('Select the next workstream and dispatch a coordinator turn')
|
|
350
|
+
.option('-j, --json', 'Output as JSON')
|
|
351
|
+
.action(multiStepCommand);
|
|
352
|
+
|
|
353
|
+
multiCmd
|
|
354
|
+
.command('approve-gate')
|
|
355
|
+
.description('Approve a pending phase transition or completion gate')
|
|
356
|
+
.option('-j, --json', 'Output as JSON')
|
|
357
|
+
.action(multiApproveGateCommand);
|
|
358
|
+
|
|
359
|
+
multiCmd
|
|
360
|
+
.command('resync')
|
|
361
|
+
.description('Detect divergence and rebuild coordinator state from repo authority')
|
|
362
|
+
.option('-j, --json', 'Output as JSON')
|
|
363
|
+
.option('--dry-run', 'Detect divergence without resyncing')
|
|
364
|
+
.action(multiResyncCommand);
|
|
365
|
+
|
|
185
366
|
program.parse();
|