@doidor/agentrig 0.10.0 β 0.11.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 +26 -6
- package/dist/cli.js +14 -1
- 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 +65 -3
- package/dist/commands/doctor.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 +33 -1
- 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/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 +54 -175
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/loader.js +36 -0
- package/dist/prompts/loader.js.map +1 -0
- package/dist/prompts/templates/dynamic-eval.md +5 -0
- package/dist/prompts/templates/investigate.md +19 -0
- package/dist/prompts/templates/judge.md +38 -0
- package/dist/prompts/templates/producer-baseline-note.md +1 -0
- package/dist/prompts/templates/producer-handoff-checklist.md +24 -0
- package/dist/prompts/templates/producer-harness-note.md +1 -0
- package/dist/prompts/templates/producer.md +10 -0
- package/dist/prompts/templates/scaffold-scenarios.md +56 -0
- package/dist/prompts/templates/system-message.md +5 -0
- package/dist/prompts/templates/tailor.md +38 -0
- package/dist/prompts/templates/update.md +14 -0
- package/knowledge/manifest.json +1 -1
- package/knowledge/templates/AGENTS.md +1 -1
- 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 +1 -1
- package/knowledge/templates/eval/checks.json +4 -3
- package/knowledge/templates/eval/static-audit.mjs +25 -1
- package/knowledge/templates/rules/coding-standards.md +1 -0
- package/knowledge/templates/skills/harness-eval/SKILL.md +4 -0
- package/knowledge/templates/skills/skill-authoring/SKILL.md +1 -1
- package/knowledge/templates/skills/skill-improver/SKILL.md +1 -1
- package/knowledge/templates/wiki/README.md +4 -8
- package/knowledge/templates/wiki/index.md +3 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -213,26 +213,46 @@ All best practices are plain text under [`knowledge/`](knowledge/). Edit `PRINCI
|
|
|
213
213
|
templates, or `checks.json`, then propagate to any repo:
|
|
214
214
|
|
|
215
215
|
```bash
|
|
216
|
-
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
|
|
217
219
|
```
|
|
218
220
|
|
|
219
|
-
`update` refreshes AgentRig-owned files in place
|
|
220
|
-
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.
|
|
221
224
|
|
|
222
225
|
## Commands
|
|
223
226
|
|
|
224
227
|
| Command | Description |
|
|
225
228
|
|---------|-------------|
|
|
226
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 |
|
|
227
|
-
| `agentrig compile [path]` | Project AGENTS.md + rules into every agent surface (local + remote) |
|
|
228
|
-
| `agentrig update [path]` | Re-sync the latest best practices (re-compiles surfaces) |
|
|
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 |
|
|
229
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) |
|
|
230
234
|
| `agentrig dashboard [path] [--html [file]] [--no-tasks] [--json]` | Roster, live GitHub tasks, score, evals |
|
|
231
|
-
| `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**?) |
|
|
232
236
|
|
|
233
237
|
Common options: `--model <id>`, `--dry-run`, `--skip-agent`, `--force` (init only), `--verbose`.
|
|
234
238
|
Set `AGENTRIG_PROVIDER` to choose the agent backend (default `copilot`).
|
|
235
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
|
+
|
|
236
256
|
## Requirements
|
|
237
257
|
|
|
238
258
|
- Node.js β₯ 22 (Node 20 is EOL; tested on the current LTS lines, 22 and 24).
|
package/dist/cli.js
CHANGED
|
@@ -7,11 +7,13 @@ 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",
|
|
@@ -65,10 +67,15 @@ ${color.bold("Commands:")}
|
|
|
65
67
|
skills, wiki entries, etc. are preserved.
|
|
66
68
|
--force overwrite existing user content with the canonical templates
|
|
67
69
|
update [path] Re-sync the latest best practices into an existing harness
|
|
68
|
-
--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)
|
|
69
73
|
compile [path] Project AGENTS.md + rules into every agent surface (local + remote):
|
|
70
74
|
copilot-instructions, .github/instructions, CLAUDE.md, .cursor/rules,
|
|
71
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
|
|
72
79
|
eval [path] Evaluate the harness itself (defaults to the full agentic, harness-on run)
|
|
73
80
|
--static fast deterministic structural audit, no model (use in CI)
|
|
74
81
|
--rubric print what's evaluated (rubric axes, issue codes, scenarios)
|
|
@@ -140,6 +147,7 @@ async function main() {
|
|
|
140
147
|
return await updateCommand(repoRoot, {
|
|
141
148
|
dryRun: Boolean(flags["dry-run"]),
|
|
142
149
|
diff: Boolean(flags.diff),
|
|
150
|
+
autoFix: Boolean(flags["auto-fix"]),
|
|
143
151
|
...(model ? { model } : {}),
|
|
144
152
|
verbose: Boolean(flags.verbose),
|
|
145
153
|
skipAgent: Boolean(flags["skip-agent"]),
|
|
@@ -171,6 +179,11 @@ async function main() {
|
|
|
171
179
|
return await doctorCommand(repoRoot, { json: Boolean(flags.json) });
|
|
172
180
|
case "compile":
|
|
173
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
|
+
});
|
|
174
187
|
case "dashboard":
|
|
175
188
|
return dashboardCommand(repoRoot, {
|
|
176
189
|
json: Boolean(flags.json),
|
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,UAAU;IACV,mBAAmB;IACnB,iBAAiB;IACjB,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,10 +1,13 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, realpathSync } from "node:fs";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
2
3
|
import { auditHarness } from "../core/audit.js";
|
|
3
4
|
import { readState, isInstalled } from "../core/state.js";
|
|
4
5
|
import { validateSetupSteps } from "../core/setupsteps.js";
|
|
6
|
+
import { runValidation } from "../core/validate.js";
|
|
5
7
|
import { color, log } from "../core/logger.js";
|
|
6
8
|
import { getProvider } from "../agent/index.js";
|
|
7
9
|
import { join } from "../core/fsutil.js";
|
|
10
|
+
import pkg from "../version.js";
|
|
8
11
|
/** Aggregate calibration results per judge (mirror of score.mjs calibrate --report). Returns
|
|
9
12
|
* the worst judge (lowest agreement) so doctor can decide whether to flag a warning. */
|
|
10
13
|
function summarizeCalibration(repoRoot) {
|
|
@@ -31,6 +34,32 @@ function summarizeCalibration(repoRoot) {
|
|
|
31
34
|
bias: v.n ? v.biasSum / v.n : 0,
|
|
32
35
|
}));
|
|
33
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
|
+
}
|
|
34
63
|
/** Quick health check: is a harness installed, is the agent reachable, and what is the score. */
|
|
35
64
|
export async function doctorCommand(repoRoot, options) {
|
|
36
65
|
const installed = isInstalled(repoRoot);
|
|
@@ -40,10 +69,15 @@ export async function doctorCommand(repoRoot, options) {
|
|
|
40
69
|
const provider = getProvider();
|
|
41
70
|
const pre = await provider.preflight();
|
|
42
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 };
|
|
43
76
|
// Worst judge below 80% agreement = a real concern (P5 gate). Missing calibration = warning only.
|
|
44
77
|
const CALIB_THRESHOLD = 0.8;
|
|
45
78
|
const worstJudge = calibration.sort((a, b) => a.agreement - b.agreement)[0] ?? null;
|
|
46
79
|
const calibrationOk = !worstJudge || worstJudge.agreement >= CALIB_THRESHOLD;
|
|
80
|
+
const versionStale = provenance.npmLatest && provenance.npmLatest !== provenance.current;
|
|
47
81
|
if (options.json) {
|
|
48
82
|
console.log(JSON.stringify({
|
|
49
83
|
installed,
|
|
@@ -53,8 +87,10 @@ export async function doctorCommand(repoRoot, options) {
|
|
|
53
87
|
setupSteps: setup,
|
|
54
88
|
agent: { provider: provider.name, ...pre },
|
|
55
89
|
calibration: { threshold: CALIB_THRESHOLD, judges: calibration, ok: calibrationOk },
|
|
90
|
+
install: provenance,
|
|
91
|
+
validation,
|
|
56
92
|
}, null, 2));
|
|
57
|
-
return installed && pre.ok && calibrationOk ? 0 : 1;
|
|
93
|
+
return installed && pre.ok && calibrationOk && !validation.hasBlockers ? 0 : 1;
|
|
58
94
|
}
|
|
59
95
|
log.info(color.bold("AgentRig β doctor\n"));
|
|
60
96
|
log.info(` harness installed : ${installed ? color.green("yes") : color.red("no")}`);
|
|
@@ -69,6 +105,32 @@ export async function doctorCommand(repoRoot, options) {
|
|
|
69
105
|
: color.red(`${setup.errors.length} error(s)`);
|
|
70
106
|
log.info(` setup-steps.yml : ${setupStatus}`);
|
|
71
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
|
+
}
|
|
72
134
|
if (calibration.length === 0) {
|
|
73
135
|
log.info(` judge calibration : ${color.dim("no calibration runs yet (see .agentrig/eval/calibration/README.md)")}`);
|
|
74
136
|
}
|
|
@@ -80,6 +142,6 @@ export async function doctorCommand(repoRoot, options) {
|
|
|
80
142
|
}
|
|
81
143
|
if (!installed)
|
|
82
144
|
log.info(color.dim("\n Run `agentrig init` to install a harness."));
|
|
83
|
-
return installed && pre.ok && calibrationOk ? 0 : 1;
|
|
145
|
+
return installed && pre.ok && calibrationOk && !validation.hasBlockers ? 0 : 1;
|
|
84
146
|
}
|
|
85
147
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { isInstalled } from "../core/state.js";
|
|
2
|
+
import { autoFix } from "../core/fix.js";
|
|
3
|
+
import { runValidation } from "../core/validate.js";
|
|
4
|
+
import { color, log } from "../core/logger.js";
|
|
5
|
+
/**
|
|
6
|
+
* Apply deterministic auto-fixes for A1 failures the audit would otherwise leave broken:
|
|
7
|
+
* invalid YAML and unknown model ids. No agent or network needed.
|
|
8
|
+
*/
|
|
9
|
+
export function fixCommand(repoRoot, options) {
|
|
10
|
+
if (!isInstalled(repoRoot)) {
|
|
11
|
+
log.error("No AgentRig harness here. Run `agentrig init` first.");
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
const validation = runValidation(repoRoot);
|
|
15
|
+
if (!validation.hasBlockers) {
|
|
16
|
+
if (options.json)
|
|
17
|
+
console.log(JSON.stringify({ ok: true, actions: [], unresolved: [] }, null, 2));
|
|
18
|
+
else
|
|
19
|
+
log.ok("Nothing to fix β no broken YAML or unknown model ids.");
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
const result = autoFix(repoRoot, {
|
|
23
|
+
yamlFindings: validation.yaml,
|
|
24
|
+
modelFindings: validation.models,
|
|
25
|
+
dryRun: options.dryRun,
|
|
26
|
+
});
|
|
27
|
+
if (options.json) {
|
|
28
|
+
console.log(JSON.stringify({ ok: result.unresolved.length === 0, ...result, dryRun: Boolean(options.dryRun) }, null, 2));
|
|
29
|
+
return result.unresolved.length === 0 ? 0 : 1;
|
|
30
|
+
}
|
|
31
|
+
log.info(color.bold(`AgentRig β fix${options.dryRun ? " (dry run)" : ""}\n`));
|
|
32
|
+
if (result.actions.length === 0) {
|
|
33
|
+
log.warn("No deterministic fix available for the findings β see `unresolved` below.");
|
|
34
|
+
}
|
|
35
|
+
for (const a of result.actions) {
|
|
36
|
+
log.ok(`${a.path}: ${a.description}`);
|
|
37
|
+
if (!options.dryRun)
|
|
38
|
+
log.info(color.dim(` β³ backup written to ${a.backup}`));
|
|
39
|
+
}
|
|
40
|
+
if (result.unresolved.length) {
|
|
41
|
+
log.info("");
|
|
42
|
+
log.warn(`${result.unresolved.length} unresolved finding(s) β manual reconciliation needed:`);
|
|
43
|
+
for (const u of result.unresolved)
|
|
44
|
+
log.info(` ${color.yellow("Β·")} ${u.path}: ${u.reason}`);
|
|
45
|
+
}
|
|
46
|
+
log.info("");
|
|
47
|
+
log.info(color.dim(options.dryRun
|
|
48
|
+
? "Re-run without --dry-run to apply these changes."
|
|
49
|
+
: "Review with `git diff` and revert any `.bak` backups you don't need."));
|
|
50
|
+
return result.unresolved.length === 0 ? 0 : 1;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=fix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
|