@doidor/agentrig 0.9.0 → 0.11.0
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 +88 -33
- package/dist/agent/copilot.js +46 -5
- package/dist/agent/copilot.js.map +1 -1
- package/dist/cli.js +44 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/compile.js +3 -0
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.js +115 -8
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/eval-dynamic.js +316 -0
- package/dist/commands/eval-dynamic.js.map +1 -0
- package/dist/commands/eval-scaffold.js +173 -0
- package/dist/commands/eval-scaffold.js.map +1 -0
- package/dist/commands/eval.js +184 -55
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/fix.js +52 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/update.js +182 -16
- package/dist/commands/update.js.map +1 -1
- package/dist/core/audit.js +269 -9
- package/dist/core/audit.js.map +1 -1
- package/dist/core/compile.js +5 -1
- package/dist/core/compile.js.map +1 -1
- package/dist/core/fix.js +108 -0
- package/dist/core/fix.js.map +1 -0
- package/dist/core/install.js +50 -4
- package/dist/core/install.js.map +1 -1
- package/dist/core/markers.js +85 -0
- package/dist/core/markers.js.map +1 -0
- package/dist/core/model-family.js +31 -0
- package/dist/core/model-family.js.map +1 -0
- package/dist/core/scenario-runner.js +298 -0
- package/dist/core/scenario-runner.js.map +1 -0
- package/dist/core/state.js +11 -0
- package/dist/core/state.js.map +1 -1
- package/dist/core/validate.js +129 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/prompts/index.js +121 -30
- package/dist/prompts/index.js.map +1 -1
- package/knowledge/PRINCIPLES.md +2 -2
- package/knowledge/manifest.json +16 -1
- package/knowledge/templates/AGENTS.md +8 -7
- package/knowledge/templates/agents/README.md +4 -4
- package/knowledge/templates/agents/developer.yml +1 -1
- package/knowledge/templates/agents/judge.yml +1 -1
- package/knowledge/templates/agents/reviewer.yml +1 -1
- package/knowledge/templates/agents/triager.yml +5 -4
- package/knowledge/templates/dashboard/dashboard.mjs +12 -5
- package/knowledge/templates/eval/RUBRIC.md +87 -64
- package/knowledge/templates/eval/axes.json +25 -25
- package/knowledge/templates/eval/calibration/README.md +54 -0
- package/knowledge/templates/eval/calibration/review/seed-correct.yml +43 -0
- package/knowledge/templates/eval/calibration/run/seed-correct.yml +35 -0
- package/knowledge/templates/eval/calibration/run/seed-no-verify.yml +34 -0
- package/knowledge/templates/eval/checks.json +92 -14
- package/knowledge/templates/eval/scenarios/add-small-feature/README.md +17 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/fixture/SPEC.md +25 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/fixture/package.json +9 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/fixture/src/slugify.js +5 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/fixture/tests/feature.test.js +31 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/judge_brief.md +25 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/oracle.yml +41 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/prompt.md +17 -0
- package/knowledge/templates/eval/scenarios/add-small-feature/scenario.yml +22 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/README.md +18 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/fixture/package.json +9 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/fixture/src/math.js +13 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/fixture/tests/add.test.js +7 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/fixture/tests/divide.test.js +11 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/fixture/tests/multiply.test.js +7 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/judge_brief.md +20 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/oracle.yml +33 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/prompt.md +12 -0
- package/knowledge/templates/eval/scenarios/fix-failing-test/scenario.yml +23 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/README.md +17 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/fixture/baseline/package.json +6 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/fixture/baseline/src/format.js +4 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/fixture/baseline/src/pagination.js +7 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/fixture/change/src/format.js +6 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/fixture/change/src/pagination.js +7 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/judge_brief.md +38 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/oracle.yml +29 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/prompt.md +33 -0
- package/knowledge/templates/eval/scenarios/review-catches-bug/scenario.yml +23 -0
- package/knowledge/templates/eval/score.mjs +368 -42
- package/knowledge/templates/eval/static-audit.mjs +228 -17
- package/knowledge/templates/harness/state-machine.yml +18 -12
- package/knowledge/templates/skills/harness-eval/SKILL.md +59 -54
- package/knowledge/templates/skills/log-gotcha/SKILL.md +68 -0
- package/knowledge/templates/skills/self-verify/SKILL.md +32 -8
- package/package.json +4 -3
- package/knowledge/templates/eval/scenarios/README.md +0 -24
- package/knowledge/templates/eval/scenarios/add-small-feature.md +0 -28
- package/knowledge/templates/eval/scenarios/fix-failing-test.md +0 -27
- package/knowledge/templates/eval/scenarios/review-catches-bug.md +0 -30
package/README.md
CHANGED
|
@@ -108,48 +108,83 @@ the generated files. Commit them so remote agents (and teammates' tools) pick th
|
|
|
108
108
|
This is a first-class feature, not an afterthought — and it's **repo-specific and runnable by you**.
|
|
109
109
|
The eval kit installs into your repo (`.agentrig/eval/`) and is tailored to it during `init`, so you
|
|
110
110
|
can measure whether AgentRig actually helps *here*. `agentrig eval` **defaults to the full agentic,
|
|
111
|
-
harness-on run**; add `--static` for the fast no-model audit.
|
|
111
|
+
harness-on run**; add `--static` for the fast no-model audit. Three layers, each making a different
|
|
112
|
+
**bounded** claim:
|
|
112
113
|
|
|
113
|
-
- **
|
|
114
|
-
|
|
114
|
+
- **Layer A1 — install completeness** (deterministic, no model). Every canonical artifact present
|
|
115
|
+
where the manifest says it should be. This is what CI gates on.
|
|
116
|
+
|
|
117
|
+
- **Layer A2 — quality probes** (deterministic, no model). Cheap content sanity: parseable YAML,
|
|
118
|
+
no unfilled `{{PLACEHOLDER}}` in `AGENTS.md`, every skill carries the required frontmatter,
|
|
119
|
+
developer/reviewer use **different model families** (not just different ids), `axes.json` has an
|
|
120
|
+
issue code per axis. Diagnostic — surfaces drift without failing the build.
|
|
115
121
|
|
|
116
122
|
```bash
|
|
117
|
-
agentrig eval --static #
|
|
118
|
-
agentrig eval --static --min 80 # CI gate
|
|
123
|
+
agentrig eval --static # both A1 and A2; prints sections separately
|
|
124
|
+
agentrig eval --static --min 80 # CI gate on A1 (Install Completeness)
|
|
119
125
|
```
|
|
120
126
|
|
|
121
|
-
- **
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
- **Layer B — dynamic behavioral eval** (agentic, **isolated** producer + judge, fixture-based).
|
|
128
|
+
For each scenario in `.agentrig/eval/scenarios/*/`:
|
|
129
|
+
1. Seed a throwaway worktree from `scenarios/<id>/fixture/`.
|
|
130
|
+
2. Producer model runs `prompt.md` in the worktree.
|
|
131
|
+
3. **Deterministic oracle** (`scenarios/<id>/oracle.yml`) scores hard axes (correctness, tests,
|
|
132
|
+
scope, regression_risk) by running commands and inspecting the diff. No LLM.
|
|
133
|
+
4. **Judge model** — a *different family* from the producer — runs in its own cwd with
|
|
134
|
+
`prompt.md` + `diff.patch` + `transcript.md` + `oracle.json`. It does NOT see the producer's
|
|
135
|
+
worktree or reasoning trace. It writes scores to a JSON file the orchestrator validates.
|
|
136
|
+
5. `score.mjs save` enforces tier (`0`/`0.5`/`1.0`), issue code, evidence, **veto axes**
|
|
137
|
+
(correctness, gate_compliance — cosmetics can never paper over a real regression), and
|
|
138
|
+
**producer/judge family divergence** (override is recorded so reviewers can spot it).
|
|
127
139
|
|
|
128
140
|
```bash
|
|
129
|
-
agentrig eval
|
|
130
|
-
agentrig eval --dynamic --
|
|
131
|
-
agentrig eval --
|
|
141
|
+
agentrig eval --dynamic # defaults: developer.yml + reviewer.yml models
|
|
142
|
+
agentrig eval --dynamic --producer-model claude-sonnet-4.6 --judge-model gpt-5.5 # explicit override
|
|
143
|
+
agentrig eval --dynamic --scenario fix-failing-test --n 5
|
|
144
|
+
agentrig eval --rubric # print rubric (axes, codes, scenarios) without running
|
|
132
145
|
node .agentrig/eval/score.mjs report
|
|
133
146
|
```
|
|
134
147
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
148
|
+
By default, the producer model is read from `.agentrig/agents/developer.yml` and the judge from
|
|
149
|
+
`.agentrig/agents/reviewer.yml` — the install-completeness audit already enforces these come
|
|
150
|
+
from different model families. Override with explicit flags or `AGENTRIG_PRODUCER_MODEL` /
|
|
151
|
+
`AGENTRIG_JUDGE_MODEL` env vars.
|
|
139
152
|
|
|
140
|
-
### Does the harness actually help? (harness lift)
|
|
153
|
+
### Does the harness actually help? (statistical harness lift)
|
|
141
154
|
|
|
142
|
-
Prove the harness earns its keep in *your* repo by running
|
|
155
|
+
Prove the harness earns its keep in *your* repo by running each scenario **with** and **without**
|
|
156
|
+
it, **with multiple paired trials** (single-trial deltas are coin flips):
|
|
143
157
|
|
|
144
158
|
```bash
|
|
145
|
-
agentrig eval --dynamic --scenario <id> --variant harness
|
|
146
|
-
agentrig eval --dynamic --scenario <id> --variant baseline
|
|
159
|
+
agentrig eval --dynamic --scenario <id> --variant harness --n 5
|
|
160
|
+
agentrig eval --dynamic --scenario <id> --variant baseline --n 5
|
|
147
161
|
node .agentrig/eval/score.mjs compare --scenario <id> --baseline baseline
|
|
148
162
|
```
|
|
149
163
|
|
|
150
|
-
`compare --baseline`
|
|
151
|
-
|
|
152
|
-
|
|
164
|
+
`compare --baseline` pairs trial *i* of harness with trial *i* of baseline, computes the **median
|
|
165
|
+
delta** and a **binomial sign-test p-value**, and prints one of three verdicts:
|
|
166
|
+
|
|
167
|
+
- **HELPS** — p < 0.05 and median > 0.05 (the harness measurably improves behavior here)
|
|
168
|
+
- **HURTS** — p < 0.05 and median < -0.05 (regression — investigate before merging the change)
|
|
169
|
+
- **INCONCLUSIVE** — n < 3, p ≥ 0.05, or effect smaller than ±0.05 (need more trials)
|
|
170
|
+
|
|
171
|
+
A "HELPS" verdict on a real fixture, in a different model family than the judge, is the only thing
|
|
172
|
+
that justifies the line "AgentRig improved agent behavior on this repo." Anything less is honest
|
|
173
|
+
**inconclusive**.
|
|
174
|
+
|
|
175
|
+
### Calibrating the judge
|
|
176
|
+
|
|
177
|
+
A lazy judge that returns 1.0 on every axis passes every save validation but tells you nothing.
|
|
178
|
+
`.agentrig/eval/calibration/` ships hand-labeled rubric instances; `score.mjs calibrate` runs the
|
|
179
|
+
judge over them and reports % within ±0.5 tier + signed bias. `agentrig doctor` flags any judge
|
|
180
|
+
below **80% agreement**. See `.agentrig/eval/calibration/README.md` for the format.
|
|
181
|
+
|
|
182
|
+
### Scope honesty
|
|
183
|
+
|
|
184
|
+
The static audit verifies install completeness, not "is this harness good." The dynamic eval, with
|
|
185
|
+
a calibrated judge and ≥5 paired trials, gives you a statistical signal of behavior change between
|
|
186
|
+
variants — but it's still measuring agent + model behavior on synthetic fixtures, not your real
|
|
187
|
+
PR workload. Treat green checks as evidence, not certainty.
|
|
153
188
|
|
|
154
189
|
## Dashboard
|
|
155
190
|
|
|
@@ -160,7 +195,7 @@ CLI:
|
|
|
160
195
|
- **Agent roster** — every role and the model it runs on.
|
|
161
196
|
- **Live GitHub tasks** — open issues/PRs carrying each harness label, grouped by workflow state and
|
|
162
197
|
showing assignees, fetched via the `gh` CLI (degrades gracefully when `gh` is absent/unauthed).
|
|
163
|
-
- **
|
|
198
|
+
- **Install Completeness + Quality Probes** — the latest static-audit scores and any weak principles.
|
|
164
199
|
- **Evals** — the latest dynamic-eval summary.
|
|
165
200
|
- **Limits** — the hard caps from the state machine.
|
|
166
201
|
|
|
@@ -178,26 +213,46 @@ All best practices are plain text under [`knowledge/`](knowledge/). Edit `PRINCI
|
|
|
178
213
|
templates, or `checks.json`, then propagate to any repo:
|
|
179
214
|
|
|
180
215
|
```bash
|
|
181
|
-
agentrig update
|
|
216
|
+
agentrig update # re-sync the latest canonical artifacts, reconciling local customizations
|
|
217
|
+
agentrig update --diff # preview drift classified 🔴 broken / 🟡 stale / 🟢 enhancement / ⚪ mixed
|
|
218
|
+
agentrig update --auto-fix # repair deterministic A1 failures (broken YAML / unknown model id) from canonical
|
|
182
219
|
```
|
|
183
220
|
|
|
184
|
-
`update` refreshes AgentRig-owned files in place
|
|
185
|
-
customize (like `AGENTS.md`),
|
|
221
|
+
`update` refreshes AgentRig-owned files in place, asks the agent to merge changes into files you
|
|
222
|
+
customize (like `AGENTS.md`), validates the result (YAML + model ids), and records every
|
|
223
|
+
preserved-file decision in `.agentrig/state.json` so the next update doesn't re-nag.
|
|
186
224
|
|
|
187
225
|
## Commands
|
|
188
226
|
|
|
189
227
|
| Command | Description |
|
|
190
228
|
|---------|-------------|
|
|
191
229
|
| `agentrig init [path]` | Investigate + install a tailored harness, then compile surfaces. **Non-destructive by default** — preserves existing AGENTS.md / .mcp.json / .agents/rules; `--force` to overwrite |
|
|
192
|
-
| `agentrig compile [path]` | Project AGENTS.md + rules into every agent surface (local + remote) |
|
|
193
|
-
| `agentrig update [path]` | Re-sync the latest best practices (re-compiles surfaces) |
|
|
194
|
-
| `agentrig
|
|
230
|
+
| `agentrig compile [path]` | Project AGENTS.md + rules into every agent surface (local + remote); re-populates auto-maintained marker blocks (e.g. `AGENTRIG:skills-inventory`) |
|
|
231
|
+
| `agentrig update [path] [--diff] [--auto-fix]` | Re-sync the latest best practices (re-compiles surfaces). `--diff` classifies preserved-file drift (🔴 broken / 🟡 stale / 🟢 enhancement / ⚪ mixed); `--auto-fix` runs `fix` after the refresh |
|
|
232
|
+
| `agentrig fix [path] [--dry-run]` | Deterministically repair the install: restore broken YAML from canonical, replace unknown model ids with `auto`. No agent needed; `.bak` files are written before each change |
|
|
233
|
+
| `agentrig eval [path] [--static\|--rubric] [--scenario id] [--variant name] [--n trials] [--producer-model id] [--judge-model id]` | Evaluate the harness (default: agentic; `--static` for the cheap CI-safe audit; `--rubric` shows what's measured) |
|
|
195
234
|
| `agentrig dashboard [path] [--html [file]] [--no-tasks] [--json]` | Roster, live GitHub tasks, score, evals |
|
|
196
|
-
| `agentrig doctor [path] [--json]` | Health check (installed? agent reachable? score?) |
|
|
235
|
+
| `agentrig doctor [path] [--json]` | Health check (installed? agent reachable? score? **validation findings**? **linked-checkout vs npm latest**?) |
|
|
197
236
|
|
|
198
237
|
Common options: `--model <id>`, `--dry-run`, `--skip-agent`, `--force` (init only), `--verbose`.
|
|
199
238
|
Set `AGENTRIG_PROVIDER` to choose the agent backend (default `copilot`).
|
|
200
239
|
|
|
240
|
+
### Self-healing the install
|
|
241
|
+
|
|
242
|
+
`agentrig update` now refuses to leave a broken install in place. After the refresh + reconcile, it
|
|
243
|
+
runs two deterministic validators and exits non-zero if either fails:
|
|
244
|
+
|
|
245
|
+
- **YAML validation** parses every `.agentrig/**/*.yml` (using `parseAllDocuments` so multi-doc
|
|
246
|
+
scenarios are tolerated). A `state-machine.yml` that doesn't parse blocks the update.
|
|
247
|
+
- **Model-ID validation** matches every `.agentrig/agents/*.yml`'s `model:` against the Copilot SDK
|
|
248
|
+
registry (live, when reachable) or a curated allowlist (offline fallback), with "did you mean…"
|
|
249
|
+
suggestions for typos and stale ids.
|
|
250
|
+
|
|
251
|
+
Run `agentrig update --auto-fix` (or `agentrig fix` standalone) to repair both classes from
|
|
252
|
+
canonical without an agent. Decisions are recorded in `.agentrig/state.json` under `reconciled[]`,
|
|
253
|
+
so the next `update` skips re-prompting on files you've consciously diverged on — unless canonical
|
|
254
|
+
has drifted past the hash that was recorded at decision time.
|
|
255
|
+
|
|
201
256
|
## Requirements
|
|
202
257
|
|
|
203
258
|
- Node.js ≥ 22 (Node 20 is EOL; tested on the current LTS lines, 22 and 24).
|
package/dist/agent/copilot.js
CHANGED
|
@@ -37,6 +37,37 @@ export class CopilotProvider {
|
|
|
37
37
|
await client.stop().catch(() => undefined);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
+
async validateModel(modelId) {
|
|
41
|
+
const client = new CopilotClient({
|
|
42
|
+
logLevel: "none",
|
|
43
|
+
env: { ...process.env, NODE_NO_WARNINGS: "1" },
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
await client.start();
|
|
47
|
+
const models = await client.listModels();
|
|
48
|
+
const ids = models.map((m) => m.id);
|
|
49
|
+
if (ids.includes(modelId))
|
|
50
|
+
return { ok: true };
|
|
51
|
+
// "did you mean…" — same family by prefix, sorted alphabetically.
|
|
52
|
+
const prefix = modelId.split(/[-.]/)[0].toLowerCase();
|
|
53
|
+
const near = ids.filter((id) => id.toLowerCase().startsWith(prefix)).sort();
|
|
54
|
+
return {
|
|
55
|
+
ok: false,
|
|
56
|
+
available: ids.sort(),
|
|
57
|
+
detail: near.length
|
|
58
|
+
? `Did you mean: ${near.slice(0, 5).join(", ")}?`
|
|
59
|
+
: `Available: ${ids.slice(0, 8).join(", ")}${ids.length > 8 ? ", …" : ""}`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
// If the listing call itself fails (offline, auth issue), don't block — let
|
|
64
|
+
// startConversation surface the real error.
|
|
65
|
+
return { ok: true, detail: `validateModel skipped: ${err.message}` };
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
await client.stop().catch(() => undefined);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
40
71
|
async startConversation(options) {
|
|
41
72
|
const client = new CopilotClient({
|
|
42
73
|
workingDirectory: options.cwd,
|
|
@@ -44,11 +75,21 @@ export class CopilotProvider {
|
|
|
44
75
|
env: { ...process.env, NODE_NO_WARNINGS: "1" },
|
|
45
76
|
});
|
|
46
77
|
await client.start();
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
78
|
+
// From here on, if anything throws (typically createSession failing because the model id is
|
|
79
|
+
// unknown for this account), we MUST stop the client — otherwise its child runtime keeps the
|
|
80
|
+
// event loop alive and `agentrig eval --dynamic` hangs after the report prints.
|
|
81
|
+
let session;
|
|
82
|
+
try {
|
|
83
|
+
session = await client.createSession({
|
|
84
|
+
...(options.model ? { model: options.model } : {}),
|
|
85
|
+
onPermissionRequest: approveAll,
|
|
86
|
+
...(options.systemMessage ? { systemMessage: { content: options.systemMessage } } : {}),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
await client.stop().catch(() => undefined);
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
52
93
|
const emit = options.onEvent;
|
|
53
94
|
if (emit) {
|
|
54
95
|
session.on("assistant.intent", (event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/agent/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/agent/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EACL,iBAAiB,GAMlB,MAAM,eAAe,CAAC;AAEvB,SAAS,aAAa,CAAC,IAAyC;IAC9D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,SAAS,CAAC;IAE1B,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oEAAoE,EAAE,CAAC;YACrG,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,MAAM,CAAC,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;QAC3G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAqC,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7F,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAC/C,kEAAkE;YAClE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5E,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACjB,CAAC,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACjD,CAAC,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;aAC7E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,4EAA4E;YAC5E,4CAA4C;YAC5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAClF,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAA4B;QAClD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,gBAAgB,EAAE,OAAO,CAAC,GAAG;YAC7B,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,4FAA4F;QAC5F,6FAA6F;QAC7F,gFAAgF;QAChF,IAAI,OAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;gBACnC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,mBAAmB,EAAE,UAAU;gBAC/B,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAI,KAAK,CAAC,IAAwC,EAAE,MAAM,CAAC;gBACvE,IAAI,MAAM;oBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAAI,KAAK,CAAC,IAAyC,EAAE,OAAO,CAAC;gBAC1E,IAAI,OAAO;oBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAA8E,CAAC;gBAClG,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAuE,CAAC;gBAC3F,IAAI,CAAC;oBACH,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI;oBACtE,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK;iBAC5B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;gBACpC,IAAI,OAAO;oBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBAC1C,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE9C,OAAO;YACL,oFAAoF;YACpF,uFAAuF;YACvF,oDAAoD;YACpD,IAAI,CAAC,MAAc;gBACjB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC7C,IAAI,YAAY,GAAG,EAAE,CAAC;oBACtB,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;oBAEpB,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;wBAClC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5B,CAAC,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;wBAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;wBACpC,IAAI,OAAO;4BAAE,YAAY,GAAG,OAAO,CAAC;oBACtC,CAAC,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAEtF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;wBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;wBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;wBACxC,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;4BAC5B,MAAM,CAAC,GAAG,EAAE;gCACV,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gCAC5C,MAAM,CAAC,IAAI,iBAAiB,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;4BAChH,CAAC,CAAC,CAAC;wBACL,CAAC;6BAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;4BAC7B,MAAM,CAAC,GAAG,EAAE;gCACV,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gCAC5C,MAAM,CAAC,IAAI,iBAAiB,CAAC,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;4BAC5G,CAAC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,IAAI,KAAK,CAAC,KAAK;wBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;oBAE/B,SAAS,MAAM,CAAC,MAAkB;wBAChC,IAAI,OAAO;4BAAE,OAAO;wBACpB,OAAO,GAAG,IAAI,CAAC;wBACf,aAAa,CAAC,KAAK,CAAC,CAAC;wBACrB,WAAW,EAAE,CAAC;wBACd,UAAU,EAAE,CAAC;wBACb,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,CAAC;oBACX,CAAC;oBAED,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;YACL,CAAC;YACD,KAAK,CAAC,GAAG;gBACP,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
|
package/dist/cli.js
CHANGED
|
@@ -7,14 +7,19 @@ import { evalCommand } from "./commands/eval.js";
|
|
|
7
7
|
import { doctorCommand } from "./commands/doctor.js";
|
|
8
8
|
import { dashboardCommand } from "./commands/dashboard.js";
|
|
9
9
|
import { compileCommand } from "./commands/compile.js";
|
|
10
|
+
import { fixCommand } from "./commands/fix.js";
|
|
10
11
|
import pkg from "./version.js";
|
|
11
12
|
const BOOLEAN_FLAGS = new Set([
|
|
12
13
|
"dry-run",
|
|
13
14
|
"diff",
|
|
14
15
|
"skip-agent",
|
|
16
|
+
"auto-fix",
|
|
15
17
|
"static",
|
|
16
18
|
"dynamic",
|
|
17
19
|
"rubric",
|
|
20
|
+
"scaffold",
|
|
21
|
+
"allow-same-family",
|
|
22
|
+
"include-bundled",
|
|
18
23
|
"json",
|
|
19
24
|
"no-tasks",
|
|
20
25
|
"verbose",
|
|
@@ -62,23 +67,37 @@ ${color.bold("Commands:")}
|
|
|
62
67
|
skills, wiki entries, etc. are preserved.
|
|
63
68
|
--force overwrite existing user content with the canonical templates
|
|
64
69
|
update [path] Re-sync the latest best practices into an existing harness
|
|
65
|
-
--diff
|
|
70
|
+
--diff show how your preserved files differ from canonical
|
|
71
|
+
--auto-fix after refresh, restore broken YAML & invalid model ids from
|
|
72
|
+
canonical (deterministic, no agent required)
|
|
66
73
|
compile [path] Project AGENTS.md + rules into every agent surface (local + remote):
|
|
67
74
|
copilot-instructions, .github/instructions, CLAUDE.md, .cursor/rules,
|
|
68
75
|
MCP, and copilot-setup-steps.yml
|
|
76
|
+
fix [path] Deterministically repair the install: restore broken YAML from canonical,
|
|
77
|
+
replace unknown model ids with a safe fallback. No agent needed.
|
|
78
|
+
--dry-run show what would change without writing
|
|
69
79
|
eval [path] Evaluate the harness itself (defaults to the full agentic, harness-on run)
|
|
70
80
|
--static fast deterministic structural audit, no model (use in CI)
|
|
71
81
|
--rubric print what's evaluated (rubric axes, issue codes, scenarios)
|
|
72
|
-
--
|
|
73
|
-
|
|
74
|
-
--
|
|
82
|
+
--scaffold generate repo-specific scenarios via an agent turn, using the
|
|
83
|
+
bundled generic scenarios as templates (--scaffold-count N, default 2)
|
|
84
|
+
--include-bundled include the generic 'bundled' template scenarios in the run
|
|
85
|
+
(default: only repo-specific scenarios run)
|
|
86
|
+
--scenario <id> run one scenario only (e.g. fix-failing-test)
|
|
87
|
+
--variant <name> label this run (default 'harness'; 'baseline' = harness OFF)
|
|
88
|
+
--producer-model <id> producer model (default: developer.yml model)
|
|
89
|
+
--judge-model <id> judge model (default: reviewer.yml model — different family)
|
|
90
|
+
--allow-same-family override the producer/judge family check (recorded in results)
|
|
91
|
+
--n <int> trials per scenario (default 1 single, 5 in baseline mode)
|
|
92
|
+
--seed <int> reproducibility seed (passed through where supported)
|
|
93
|
+
--timeout <min> absolute cap per agent turn (default 45)
|
|
75
94
|
doctor [path] Quick health check (installed? agent reachable? score?)
|
|
76
95
|
dashboard [path] Show agent roster, live GitHub tasks, harness score, and evals
|
|
77
96
|
--html [file] write a self-contained HTML dashboard
|
|
78
97
|
--no-tasks skip live GitHub lookups (offline)
|
|
79
98
|
|
|
80
99
|
${color.bold("Options:")}
|
|
81
|
-
--model <id> Model to use for agentic steps (e.g. claude-sonnet-4.
|
|
100
|
+
--model <id> Model to use for agentic steps (e.g. claude-sonnet-4.6, gpt-5.5)
|
|
82
101
|
--dry-run Show what would happen without writing or calling the model
|
|
83
102
|
--force (init) overwrite existing user files (off by default; init is non-destructive)
|
|
84
103
|
--skip-agent Install/update the canonical harness without the agentic steps
|
|
@@ -128,6 +147,7 @@ async function main() {
|
|
|
128
147
|
return await updateCommand(repoRoot, {
|
|
129
148
|
dryRun: Boolean(flags["dry-run"]),
|
|
130
149
|
diff: Boolean(flags.diff),
|
|
150
|
+
autoFix: Boolean(flags["auto-fix"]),
|
|
131
151
|
...(model ? { model } : {}),
|
|
132
152
|
verbose: Boolean(flags.verbose),
|
|
133
153
|
skipAgent: Boolean(flags["skip-agent"]),
|
|
@@ -139,7 +159,15 @@ async function main() {
|
|
|
139
159
|
mode,
|
|
140
160
|
json: Boolean(flags.json),
|
|
141
161
|
rubric: Boolean(flags.rubric),
|
|
162
|
+
scaffold: Boolean(flags.scaffold),
|
|
163
|
+
...(flags["scaffold-count"] != null ? { scaffoldCount: Number(flags["scaffold-count"]) } : {}),
|
|
164
|
+
...(flags["include-bundled"] ? { includeBundled: true } : {}),
|
|
142
165
|
...(model ? { model } : {}),
|
|
166
|
+
...(typeof flags["producer-model"] === "string" ? { producerModel: flags["producer-model"] } : {}),
|
|
167
|
+
...(typeof flags["judge-model"] === "string" ? { judgeModel: flags["judge-model"] } : {}),
|
|
168
|
+
...(flags["allow-same-family"] ? { allowSameFamily: true } : {}),
|
|
169
|
+
...(flags.n != null ? { trials: Number(flags.n) } : {}),
|
|
170
|
+
...(flags.seed != null ? { seed: Number(flags.seed) } : {}),
|
|
143
171
|
...(flags.min != null ? { min: Number(flags.min) } : {}),
|
|
144
172
|
...(typeof flags.scenario === "string" ? { scenario: flags.scenario } : {}),
|
|
145
173
|
...(typeof flags.variant === "string" ? { variant: flags.variant } : {}),
|
|
@@ -151,6 +179,11 @@ async function main() {
|
|
|
151
179
|
return await doctorCommand(repoRoot, { json: Boolean(flags.json) });
|
|
152
180
|
case "compile":
|
|
153
181
|
return compileCommand(repoRoot, { json: Boolean(flags.json) });
|
|
182
|
+
case "fix":
|
|
183
|
+
return fixCommand(repoRoot, {
|
|
184
|
+
dryRun: Boolean(flags["dry-run"]),
|
|
185
|
+
json: Boolean(flags.json),
|
|
186
|
+
});
|
|
154
187
|
case "dashboard":
|
|
155
188
|
return dashboardCommand(repoRoot, {
|
|
156
189
|
json: Boolean(flags.json),
|
|
@@ -170,5 +203,10 @@ async function main() {
|
|
|
170
203
|
return 1;
|
|
171
204
|
}
|
|
172
205
|
}
|
|
173
|
-
|
|
206
|
+
// Setting process.exitCode (instead of calling process.exit immediately) lets pending
|
|
207
|
+
// stdout writes drain when output is piped to another process — required because the
|
|
208
|
+
// JSON audit report can exceed the macOS pipe buffer and would otherwise be truncated.
|
|
209
|
+
main().then((code) => {
|
|
210
|
+
process.exitCode = code;
|
|
211
|
+
});
|
|
174
212
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,GAAG,MAAM,cAAc,CAAC;AAQ/B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,SAAS;IACT,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,UAAU;IACV,SAAS;IACT,KAAK;IACL,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,IAAI,OAA2B,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3E,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAClB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;;EAEpC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;EAEpB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/compile.js
CHANGED
|
@@ -15,6 +15,9 @@ export function compileCommand(repoRoot, options) {
|
|
|
15
15
|
return setup.ok ? 0 : 1;
|
|
16
16
|
}
|
|
17
17
|
log.info(color.bold("AgentRig — compiling agent surfaces\n"));
|
|
18
|
+
if (result.markers.updated.length) {
|
|
19
|
+
log.ok(`AGENTS.md: refreshed marker block${result.markers.updated.length === 1 ? "" : "s"} — ${result.markers.updated.join(", ")}`);
|
|
20
|
+
}
|
|
18
21
|
for (const p of result.generated)
|
|
19
22
|
log.info(` ${color.green("✚")} ${p}`);
|
|
20
23
|
for (const s of result.skipped)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAM/C,sGAAsG;AACtG,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAuB;IACtE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnF,GAAG,CAAC,EAAE,CAAC,eAAe,MAAM,CAAC,SAAS,CAAC,MAAM,oCAAoC,CAAC,CAAC;IACnF,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC,CAAC;IACxG,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,qBAAqB,CAAC,KAA4C;IAChF,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO;IAC3B,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,8CAA8C,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM;QAAE,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ;QAAE,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;AACrG,CAAC"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,8 +1,65 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, realpathSync } from "node:fs";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
1
3
|
import { auditHarness } from "../core/audit.js";
|
|
2
4
|
import { readState, isInstalled } from "../core/state.js";
|
|
3
5
|
import { validateSetupSteps } from "../core/setupsteps.js";
|
|
6
|
+
import { runValidation } from "../core/validate.js";
|
|
4
7
|
import { color, log } from "../core/logger.js";
|
|
5
8
|
import { getProvider } from "../agent/index.js";
|
|
9
|
+
import { join } from "../core/fsutil.js";
|
|
10
|
+
import pkg from "../version.js";
|
|
11
|
+
/** Aggregate calibration results per judge (mirror of score.mjs calibrate --report). Returns
|
|
12
|
+
* the worst judge (lowest agreement) so doctor can decide whether to flag a warning. */
|
|
13
|
+
function summarizeCalibration(repoRoot) {
|
|
14
|
+
const dir = join(repoRoot, ".agentrig/eval/calibration/results");
|
|
15
|
+
if (!existsSync(dir))
|
|
16
|
+
return [];
|
|
17
|
+
const byJudge = new Map();
|
|
18
|
+
for (const f of readdirSync(dir).filter((f) => f.endsWith(".json"))) {
|
|
19
|
+
try {
|
|
20
|
+
const rec = JSON.parse(readFileSync(join(dir, f), "utf8"));
|
|
21
|
+
const j = rec.judgeModel ?? "unknown";
|
|
22
|
+
const acc = byJudge.get(j) ?? { agreementSum: 0, biasSum: 0, n: 0 };
|
|
23
|
+
acc.agreementSum += rec.agreement ?? 0;
|
|
24
|
+
acc.biasSum += rec.bias ?? 0;
|
|
25
|
+
acc.n += 1;
|
|
26
|
+
byJudge.set(j, acc);
|
|
27
|
+
}
|
|
28
|
+
catch { /* skip */ }
|
|
29
|
+
}
|
|
30
|
+
return [...byJudge.entries()].map(([judge, v]) => ({
|
|
31
|
+
judge,
|
|
32
|
+
n: v.n,
|
|
33
|
+
agreement: v.n ? v.agreementSum / v.n : 0,
|
|
34
|
+
bias: v.n ? v.biasSum / v.n : 0,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detect when the global `agentrig` binary resolves to a development checkout (typically via
|
|
39
|
+
* `npm link` or `npm install -g <local-path>`). When linked, the CLI shipped on npm may already
|
|
40
|
+
* be ahead — and the user's `agentrig --version` looks "current" only because they're running
|
|
41
|
+
* their own working copy. We surface both the realpath and the latest npm version so they can
|
|
42
|
+
* decide whether to `npm install -g @doidor/agentrig@latest`.
|
|
43
|
+
*/
|
|
44
|
+
function detectInstallProvenance() {
|
|
45
|
+
const argv1 = process.argv[1] ?? "";
|
|
46
|
+
let real = argv1;
|
|
47
|
+
try {
|
|
48
|
+
real = realpathSync(argv1);
|
|
49
|
+
}
|
|
50
|
+
catch { /* ignore */ }
|
|
51
|
+
// A registry install lives under <prefix>/lib/node_modules/<scope>/<name>/…
|
|
52
|
+
// A linked install resolves to a path WITHOUT a `node_modules/<scope>/<name>` ancestor.
|
|
53
|
+
const source = /[\\/]node_modules[\\/]@?[^\\/]+[\\/][^\\/]+[\\/]/.test(real)
|
|
54
|
+
? "registry"
|
|
55
|
+
: argv1
|
|
56
|
+
? "linked-checkout"
|
|
57
|
+
: "unknown";
|
|
58
|
+
// Best-effort latest-version probe (3s timeout). Offline / unreachable → null, no harm.
|
|
59
|
+
const res = spawnSync("npm", ["view", "@doidor/agentrig", "version"], { encoding: "utf8", timeout: 3000 });
|
|
60
|
+
const npmLatest = res.status === 0 ? res.stdout.trim() : null;
|
|
61
|
+
return { argv1, realpath: real, source, npmLatest, current: pkg.version };
|
|
62
|
+
}
|
|
6
63
|
/** Quick health check: is a harness installed, is the agent reachable, and what is the score. */
|
|
7
64
|
export async function doctorCommand(repoRoot, options) {
|
|
8
65
|
const installed = isInstalled(repoRoot);
|
|
@@ -11,30 +68,80 @@ export async function doctorCommand(repoRoot, options) {
|
|
|
11
68
|
const setup = validateSetupSteps(repoRoot);
|
|
12
69
|
const provider = getProvider();
|
|
13
70
|
const pre = await provider.preflight();
|
|
71
|
+
const calibration = summarizeCalibration(repoRoot);
|
|
72
|
+
const provenance = detectInstallProvenance();
|
|
73
|
+
// Validation (broken YAML / unknown model ids). These are FATAL — a doctor that returns 0 on
|
|
74
|
+
// a broken install gives the operator a false sense of safety.
|
|
75
|
+
const validation = installed ? runValidation(repoRoot) : { yaml: [], models: [], hasBlockers: false };
|
|
76
|
+
// Worst judge below 80% agreement = a real concern (P5 gate). Missing calibration = warning only.
|
|
77
|
+
const CALIB_THRESHOLD = 0.8;
|
|
78
|
+
const worstJudge = calibration.sort((a, b) => a.agreement - b.agreement)[0] ?? null;
|
|
79
|
+
const calibrationOk = !worstJudge || worstJudge.agreement >= CALIB_THRESHOLD;
|
|
80
|
+
const versionStale = provenance.npmLatest && provenance.npmLatest !== provenance.current;
|
|
14
81
|
if (options.json) {
|
|
15
82
|
console.log(JSON.stringify({
|
|
16
83
|
installed,
|
|
17
84
|
knowledgeVersion: state?.knowledgeVersion ?? null,
|
|
18
|
-
|
|
85
|
+
installCompleteness: report.harnessScore,
|
|
86
|
+
qualityProbes: report.qualityScore,
|
|
19
87
|
setupSteps: setup,
|
|
20
88
|
agent: { provider: provider.name, ...pre },
|
|
89
|
+
calibration: { threshold: CALIB_THRESHOLD, judges: calibration, ok: calibrationOk },
|
|
90
|
+
install: provenance,
|
|
91
|
+
validation,
|
|
21
92
|
}, null, 2));
|
|
22
|
-
return installed && pre.ok ? 0 : 1;
|
|
93
|
+
return installed && pre.ok && calibrationOk && !validation.hasBlockers ? 0 : 1;
|
|
23
94
|
}
|
|
24
95
|
log.info(color.bold("AgentRig — doctor\n"));
|
|
25
|
-
log.info(` harness installed
|
|
96
|
+
log.info(` harness installed : ${installed ? color.green("yes") : color.red("no")}`);
|
|
26
97
|
if (state)
|
|
27
|
-
log.info(` knowledge version
|
|
28
|
-
log.info(`
|
|
98
|
+
log.info(` knowledge version : ${state.knowledgeVersion}`);
|
|
99
|
+
log.info(` install completeness : ${report.harnessScore}%`);
|
|
100
|
+
log.info(` quality probes : ${report.qualityScore}%`);
|
|
29
101
|
const setupStatus = !setup.present
|
|
30
102
|
? color.dim("not present")
|
|
31
103
|
: setup.ok
|
|
32
104
|
? color.green(setup.warnings.length ? `valid (${setup.warnings.length} warning)` : "valid")
|
|
33
105
|
: color.red(`${setup.errors.length} error(s)`);
|
|
34
|
-
log.info(` setup-steps.yml
|
|
35
|
-
log.info(` agent (${provider.name})
|
|
106
|
+
log.info(` setup-steps.yml : ${setupStatus}`);
|
|
107
|
+
log.info(` agent (${provider.name}) : ${pre.ok ? color.green(pre.detail) : color.red(pre.detail)}`);
|
|
108
|
+
// Validation hard-failures bubble up under their own heading.
|
|
109
|
+
if (validation.yaml.length || validation.models.length) {
|
|
110
|
+
log.info("");
|
|
111
|
+
log.info(color.bold(" Validation"));
|
|
112
|
+
for (const y of validation.yaml)
|
|
113
|
+
log.info(` ${color.red("✗")} ${y.path}: invalid YAML — ${y.error.split("\n")[0]}`);
|
|
114
|
+
for (const m of validation.models) {
|
|
115
|
+
const hint = m.suggestions.length ? ` ${color.dim(`did you mean: ${m.suggestions.join(", ")}?`)}` : "";
|
|
116
|
+
log.info(` ${color.red("✗")} ${m.path}: unknown model "${m.value}"${hint}`);
|
|
117
|
+
}
|
|
118
|
+
log.info(color.dim(" Run `agentrig fix` to repair these deterministically from canonical."));
|
|
119
|
+
}
|
|
120
|
+
// Install provenance + version freshness.
|
|
121
|
+
log.info("");
|
|
122
|
+
log.info(color.bold(" Install"));
|
|
123
|
+
log.info(` agentrig version : ${provenance.current}${versionStale ? color.yellow(` (npm latest: ${provenance.npmLatest})`) : color.green(" (latest)")}`);
|
|
124
|
+
if (provenance.source === "linked-checkout") {
|
|
125
|
+
log.info(` install source : ${color.yellow("linked checkout")} ${color.dim(`→ ${provenance.realpath}`)}`);
|
|
126
|
+
log.info(color.dim(" Your `agentrig` binary points to a local dev checkout. Run `npm install -g @doidor/agentrig@latest` to switch back to the published version."));
|
|
127
|
+
}
|
|
128
|
+
else if (provenance.source === "registry") {
|
|
129
|
+
log.info(` install source : ${color.green("npm registry")} ${color.dim(`→ ${provenance.realpath}`)}`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
log.info(` install source : ${color.dim("unknown")}`);
|
|
133
|
+
}
|
|
134
|
+
if (calibration.length === 0) {
|
|
135
|
+
log.info(` judge calibration : ${color.dim("no calibration runs yet (see .agentrig/eval/calibration/README.md)")}`);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
for (const c of calibration.sort((a, b) => a.agreement - b.agreement)) {
|
|
139
|
+
const mark = c.agreement >= CALIB_THRESHOLD ? color.green("ok") : color.red(`below ${CALIB_THRESHOLD * 100}% threshold`);
|
|
140
|
+
log.info(` judge ${c.judge.padEnd(15)} : ${(c.agreement * 100).toFixed(1)}% agreement, bias ${c.bias.toFixed(2)} ${mark}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
36
143
|
if (!installed)
|
|
37
144
|
log.info(color.dim("\n Run `agentrig init` to install a harness."));
|
|
38
|
-
return installed && pre.ok ? 0 : 1;
|
|
145
|
+
return installed && pre.ok && calibrationOk && !validation.hasBlockers ? 0 : 1;
|
|
39
146
|
}
|
|
40
147
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|