@ai-dossier/cli 0.25.0 → 0.27.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 +116 -8
- package/dist/cache-resolver.d.ts.map +1 -1
- package/dist/cache-resolver.js +3 -6
- package/dist/cache-resolver.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/classify.d.ts +11 -0
- package/dist/commands/classify.d.ts.map +1 -0
- package/dist/commands/classify.js +136 -0
- package/dist/commands/classify.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -25
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/sched.d.ts +0 -24
- package/dist/commands/sched.d.ts.map +1 -1
- package/dist/commands/sched.js +139 -40
- package/dist/commands/sched.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/engine-version.d.ts +45 -0
- package/dist/engine-version.d.ts.map +1 -0
- package/dist/engine-version.js +122 -0
- package/dist/engine-version.js.map +1 -0
- package/dist/gh.d.ts +38 -4
- package/dist/gh.d.ts.map +1 -1
- package/dist/gh.js +88 -9
- package/dist/gh.js.map +1 -1
- package/dist/hard-block-labels.d.ts +24 -0
- package/dist/hard-block-labels.d.ts.map +1 -0
- package/dist/hard-block-labels.js +36 -0
- package/dist/hard-block-labels.js.map +1 -0
- package/dist/package-info.d.ts +11 -0
- package/dist/package-info.d.ts.map +1 -0
- package/dist/package-info.js +39 -0
- package/dist/package-info.js.map +1 -0
- package/dist/plan-artifact.d.ts +1 -1
- package/dist/plan-artifact.d.ts.map +1 -1
- package/dist/plan-artifact.js.map +1 -1
- package/dist/prescreen.d.ts +66 -0
- package/dist/prescreen.d.ts.map +1 -0
- package/dist/prescreen.js +187 -0
- package/dist/prescreen.js.map +1 -0
- package/dist/ttl-cache.d.ts +18 -0
- package/dist/ttl-cache.d.ts.map +1 -0
- package/dist/ttl-cache.js +31 -0
- package/dist/ttl-cache.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -869,6 +869,94 @@ rather than the raw recorded `model=` — a consumer selecting on a routed spell
|
|
|
869
869
|
|
|
870
870
|
---
|
|
871
871
|
|
|
872
|
+
## Classify Pre-Screen (`classify`)
|
|
873
|
+
|
|
874
|
+
The deterministic gate `issue-cycle-classifier` runs **before any model call** (#538).
|
|
875
|
+
`docs/reports/batch-pilot-2-execution.md` §4.1 measured the classifier costing ~64k
|
|
876
|
+
tokens/dispatch at mid tier with full repo exploration — including for issues that hit an
|
|
877
|
+
obvious RFC-0001 E.2 floor rule a deterministic check can catch for free — over the same
|
|
878
|
+
§2.2 15-issue classify set.
|
|
879
|
+
|
|
880
|
+
```bash
|
|
881
|
+
ai-dossier classify prescreen --issue 538 [--repo owner/name] [--submitted-set 4,5..9]
|
|
882
|
+
```
|
|
883
|
+
|
|
884
|
+
`--submitted-set` names the issues batched/submitted alongside this one (fleet-style
|
|
885
|
+
selection grammar) — an open `Depends on #N` inside that set does not count toward rule 9.
|
|
886
|
+
|
|
887
|
+
Prints a single JSON verdict — no model call anywhere, exits 0 for either verdict
|
|
888
|
+
(`verdict` is the payload, not a pass/fail gate); an invalid `--issue`/`--repo`/
|
|
889
|
+
`--submitted-set` still exits 1 before any lookup:
|
|
890
|
+
|
|
891
|
+
```json
|
|
892
|
+
{
|
|
893
|
+
"issue": 538,
|
|
894
|
+
"state": "OPEN",
|
|
895
|
+
"verdict": "full",
|
|
896
|
+
"reasons": [
|
|
897
|
+
{ "check": "text-floor", "message": "Title/body/labels match 'rule1-risk-floor-area' (keyword: 'terraform')." }
|
|
898
|
+
],
|
|
899
|
+
"plan_artifact": "absent",
|
|
900
|
+
"degraded": false,
|
|
901
|
+
"warnings": [],
|
|
902
|
+
"checked_at": "2026-09-01T22:00:00.000Z"
|
|
903
|
+
}
|
|
904
|
+
```
|
|
905
|
+
|
|
906
|
+
`state` lets a consumer tell a CLOSED issue apart from a read failure (`state: null`).
|
|
907
|
+
`plan_artifact` is `present` (path-floor/file-count ran), `absent` (no plan:v1 comment —
|
|
908
|
+
expected, not an error), or `unreadable` (couldn't even check — `path-floor`/`file-count`
|
|
909
|
+
were skipped, not silently passed). `checked_at` is the one non-deterministic field: two
|
|
910
|
+
runs of an unchanged issue can differ only there. `degraded`/`warnings` are the fail-open
|
|
911
|
+
signal — when any lookup couldn't complete (fetching the issue, its comments, or a
|
|
912
|
+
dependency's state), `degraded: true` and `warnings` names exactly what didn't run; the
|
|
913
|
+
verdict still reflects whatever DID complete rather than blocking on the gap:
|
|
914
|
+
|
|
915
|
+
```json
|
|
916
|
+
{
|
|
917
|
+
"issue": 538,
|
|
918
|
+
"state": null,
|
|
919
|
+
"verdict": "candidate",
|
|
920
|
+
"reasons": [],
|
|
921
|
+
"plan_artifact": null,
|
|
922
|
+
"degraded": true,
|
|
923
|
+
"warnings": ["Could not read issue #538: gh is not authenticated.\nFix: run 'gh auth login' …"],
|
|
924
|
+
"checked_at": "2026-09-01T22:00:05.000Z"
|
|
925
|
+
}
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
`verdict: "full"` means an obvious floor hit was found — the classifier should skip
|
|
929
|
+
straight to posting `mode=full` with the recorded reason, no repo exploration needed.
|
|
930
|
+
`verdict: "candidate"` means proceed to the bounded mechanical-tier classify pass (issue
|
|
931
|
+
text + `reasons`/`warnings` as context, still no repo exploration unless that pass's
|
|
932
|
+
`confidence` lands below 0.6, which triggers the dossier's single mid-tier escalation).
|
|
933
|
+
|
|
934
|
+
Coverage is deliberately partial — it catches the OBVIOUS floor hits, not all of them:
|
|
935
|
+
|
|
936
|
+
| Check | What it catches | Source |
|
|
937
|
+
|---|---|---|
|
|
938
|
+
| `hard-block-label` | `decision-pending`, `needs-clarification`, `epic`, `decomposed` | same policy as the `sched enqueue` pre-screen (#507), shared via `hard-block-labels.ts` |
|
|
939
|
+
| `text-floor` | A text-keyword approximation of RFC-0001 E.2 rules 1/3/4 (risk-floor area, new package/workspace, deploy pipeline) scanned over title + body + labels | `prescreen.ts`'s `TEXT_FLOOR_PATTERNS`; the matched keyword is named in the reason message |
|
|
940
|
+
| `path-floor` | Rule 1's path-based risk floor, reusing `plan validate`'s `scanRiskFloor` (capped at 8 reasons — a plan:v1 artifact is comment-sourced, untrusted input) | requires a `plan:v1` artifact already on the issue |
|
|
941
|
+
| `file-count` | Rule 5, "Predicted files > 8" | requires a `plan:v1` artifact already on the issue |
|
|
942
|
+
| `open-dependency` | Rule 9, an open `Depends on #N` outside `--submitted-set` (capped at 8 reasons; refs themselves capped at 32 per issue — an issue body is untrusted input) | resolved via `gh issue view <N> --json state` |
|
|
943
|
+
|
|
944
|
+
What it does NOT catch — rule 2 beyond the bare `migration` keyword, rule 7 (hard
|
|
945
|
+
rollback), rule 8 (visual/browser review), rules 5/6 (file/diff size) when no plan:v1
|
|
946
|
+
artifact exists, and rule 10 (confidence) — is intentional: those need either file-level
|
|
947
|
+
detail no pre-screen has, or judgment. They fall through to `verdict: "candidate"` and are
|
|
948
|
+
exactly what the mechanical-tier classify pass exists to handle instead of a mid-tier,
|
|
949
|
+
repo-exploring one. A text-keyword scan is deliberately conservative about false
|
|
950
|
+
positives: bare words like `auth`/`infra`/`infrastructure` collide with benign phrasing
|
|
951
|
+
(`gh auth`, "test infrastructure") often enough in real issue text that they are excluded
|
|
952
|
+
in favor of more specific compound terms — verified against a real 15-issue regression
|
|
953
|
+
fixture (`cli/src/__tests__/fixtures/prescreen-regression-issues.json`, from
|
|
954
|
+
`docs/reports/batch-pilot-2-execution.md` §2.2's actual classify set). Methodology and the
|
|
955
|
+
measured pre-screen hit rate:
|
|
956
|
+
[docs/reports/issue-538-classifier-cost-methodology.md](../docs/reports/issue-538-classifier-cost-methodology.md).
|
|
957
|
+
|
|
958
|
+
---
|
|
959
|
+
|
|
872
960
|
## Plan Artifacts (`plan`) — plan:v1
|
|
873
961
|
|
|
874
962
|
Issues used to be planned up to three times (triage, batch prep, plan-issue). The
|
|
@@ -917,7 +1005,7 @@ respectively; `get --json` includes the comment's `author`.
|
|
|
917
1005
|
```bash
|
|
918
1006
|
ai-dossier sched enqueue --issues 101,105..109 [--mode full|slot] [--batch b1] [--more-members-expected] [--deps 100,104] [--tier mechanical|mid|strong] [--repo owner/name]
|
|
919
1007
|
ai-dossier sched enqueue --from-manifest batch-prep.json [--repo owner/name]
|
|
920
|
-
ai-dossier sched start [--interval <seconds>] [--once] [--json]
|
|
1008
|
+
ai-dossier sched start [--interval <seconds>] [--once] [--auto-upgrade] [--json]
|
|
921
1009
|
ai-dossier sched status [--json]
|
|
922
1010
|
ai-dossier sched pause | resume
|
|
923
1011
|
ai-dossier sched abandon --issue 42 [--reason "..."] | --batch b1 [--reason "..."]
|
|
@@ -1001,7 +1089,17 @@ against ground truth.
|
|
|
1001
1089
|
`/proc` start-times (a reused pid is never signalled; best-effort on macOS/Windows),
|
|
1002
1090
|
and a FAILED ground-truth poll (gh outage) pauses that unit's stall/verify decisions
|
|
1003
1091
|
instead of guessing — an outage never kills a healthy agent. All events are journaled
|
|
1004
|
-
to `events.jsonl`, and `status` shows the live phase per unit.
|
|
1092
|
+
to `events.jsonl`, and `status` shows the live phase per unit. Since #537, every tick
|
|
1093
|
+
also checks the installed `@ai-dossier/sched` against npm registry latest (best-effort,
|
|
1094
|
+
cached — `cache.engineVersionTtlSeconds`, default 300s — and non-blocking, never stalls
|
|
1095
|
+
a tick): when behind, it journals `engine-stale` once per distinct (installed, latest)
|
|
1096
|
+
pair and warns on stderr, surfaced again in `status` below. `--auto-upgrade` (or
|
|
1097
|
+
`auto_upgrade: true` in `config.json`, the flag wins when both are set) lets a
|
|
1098
|
+
cron-driven `--once` self-upgrade (`npm i -g @ai-dossier/cli@latest`) once behind, but
|
|
1099
|
+
only after re-confirming no slot is mid-dispatch on a fresh post-tick state read; the
|
|
1100
|
+
continuous (non-`--once`) loop only ever journals/warns, never self-upgrades, since a
|
|
1101
|
+
multi-minute install must not stall reconciliation. The attempt's outcome is journaled
|
|
1102
|
+
too (`engine-auto-upgrade-attempted` / `engine-auto-upgrade-failed`).
|
|
1005
1103
|
- **`status`** renders the queue (with `pr` and `cleanup` columns), parked PRs
|
|
1006
1104
|
(watched, zero slots, with the last poll's age), slots (with pid, live phase,
|
|
1007
1105
|
last-progress, recoveries), batches, runnable units, and the blocked/failed sets. A blocked entry names every
|
|
@@ -1012,8 +1110,13 @@ against ground truth.
|
|
|
1012
1110
|
been recorded (#505 below), a `⚠ Dispatch health: N consecutive suspect-dispatch
|
|
1013
1111
|
exit(s) (last: <unit>)` warning line prints too, saying whether it's just informational
|
|
1014
1112
|
or likely why the scheduler is paused; the same counters ride along in `--json` as
|
|
1015
|
-
`dispatch_health.{consecutive_suspect,last_suspect_unit}`.
|
|
1016
|
-
|
|
1113
|
+
`dispatch_health.{consecutive_suspect,last_suspect_unit}`. Since #537, a `⚠ Engine
|
|
1114
|
+
stale: installed @ai-dossier/sched@X, npm latest Y — upgrade: npm i -g
|
|
1115
|
+
@ai-dossier/cli@latest` line prints when the engine is behind — read from the same
|
|
1116
|
+
cache `start` writes (`--json`: `engine_staleness: {installed, latest, stale}`), never
|
|
1117
|
+
a live network call, so `status` stays fast and offline-friendly even when `start` has
|
|
1118
|
+
never run or the cache has expired (it just shows nothing in that case). `--json` emits
|
|
1119
|
+
the same report as data.
|
|
1017
1120
|
- **`pause`/`resume`** gate *new* assignments only — live units keep running. A pause can
|
|
1018
1121
|
be manual (`sched pause`) or automatic: `DISPATCH_UNHEALTHY_THRESHOLD` (2) consecutive
|
|
1019
1122
|
suspect-dispatch exits from DIFFERENT units — an unverified agent exit within 60s of
|
|
@@ -1035,9 +1138,12 @@ State is written atomically (tmp + fsync + rename), so a process killed between
|
|
|
1035
1138
|
always leaves the previous complete state, and a scheduler restart resumes identically
|
|
1036
1139
|
from `state.json` (pre-#464/#468/#472/#500/#505/#504 state files — schema
|
|
1037
1140
|
1.0.0/1.1.0/1.2.0/1.3.0/1.4.0/1.5.0/1.6.0 — migrate to 1.7.0 on load). A corrupt state file is a loud
|
|
1038
|
-
error naming the file — never a silent queue reset
|
|
1039
|
-
|
|
1040
|
-
`
|
|
1141
|
+
error naming the file — never a silent queue reset — except a state file written by a
|
|
1142
|
+
newer schema than the installed engine, which is not corruption: `load()` throws the more
|
|
1143
|
+
specific `EngineTooOldError` (#537), pointing at an engine upgrade
|
|
1144
|
+
(`npm i -g @ai-dossier/cli@latest`) rather than at deleting real queue data. Concurrency is
|
|
1145
|
+
serialized by a `.sched-lock` directory mutex (stolen from dead holders). `config.json`
|
|
1146
|
+
holds `max_slots` (default 3, bounds concurrently-live units), `stall_timeout_ms` (default
|
|
1041
1147
|
1 800 000 — but the `implement` phase defaults to 5 400 000, overridable per phase via
|
|
1042
1148
|
`dispatch.phase_stall_timeout_ms: {"<phase>": <ms>}`, #495), `reconcile_interval_ms`
|
|
1043
1149
|
(default 60 000), and the optional `dispatch` section (including `report_prompt` for
|
|
@@ -1047,7 +1153,9 @@ substitutes `{issue}` and `{gen}`; `dispatch.tiers.<tier>` — `{command?, model
|
|
|
1047
1153
|
— overrides the command/model/prompt for one tier only, #527, falling back to the
|
|
1048
1154
|
top-level `command`/`tier_models`/`prompt` shorthand for any field left unset);
|
|
1049
1155
|
`pr_poll_interval_ms` (default 150 000) sets the
|
|
1050
|
-
parked-PR poll cadence;
|
|
1156
|
+
parked-PR poll cadence; `auto_upgrade` (default false, #537) lets a cron-driven
|
|
1157
|
+
`sched start --once` self-upgrade when behind npm latest — the `--auto-upgrade` CLI flag
|
|
1158
|
+
overrides this when passed; an issue with an unmerged dependency — or a batch behind an unmerged batch —
|
|
1051
1159
|
is never runnable.
|
|
1052
1160
|
|
|
1053
1161
|
Library consumers: see [`@ai-dossier/sched`](../packages/sched/README.md).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-resolver.d.ts","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,SAAS,QAA+C,CAAC;AACtE,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgCD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4BnF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CActE;
|
|
1
|
+
{"version":3,"file":"cache-resolver.d.ts","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,SAAS,QAA+C,CAAC;AACtE,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgCD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4BnF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CActE;AASD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAwF1B;AAED,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA2BnF;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,IAAI,CAsBN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO7E"}
|
package/dist/cache-resolver.js
CHANGED
|
@@ -30,10 +30,10 @@ exports.parseMaxAgeOption = parseMaxAgeOption;
|
|
|
30
30
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
31
31
|
const node_os_1 = __importDefault(require("node:os"));
|
|
32
32
|
const node_path_1 = __importDefault(require("node:path"));
|
|
33
|
-
const config_1 = require("./config");
|
|
34
33
|
const duration_1 = require("./duration");
|
|
35
34
|
const helpers_1 = require("./helpers");
|
|
36
35
|
const multi_registry_1 = require("./multi-registry");
|
|
36
|
+
const ttl_cache_1 = require("./ttl-cache");
|
|
37
37
|
const version_1 = require("./version");
|
|
38
38
|
exports.DEFAULT_RESOLUTION_TTL_SECONDS = 300;
|
|
39
39
|
exports.CACHE_DIR = node_path_1.default.join(node_os_1.default.homedir(), '.dossier', 'cache');
|
|
@@ -115,10 +115,7 @@ function highestCachedSemver(dossierName) {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
function getConfiguredTtlSeconds() {
|
|
118
|
-
|
|
119
|
-
if (typeof raw === 'number' && Number.isFinite(raw) && raw >= 0)
|
|
120
|
-
return raw;
|
|
121
|
-
return exports.DEFAULT_RESOLUTION_TTL_SECONDS;
|
|
118
|
+
return (0, ttl_cache_1.getConfiguredTtlSeconds)('cache.resolutionTtlSeconds', exports.DEFAULT_RESOLUTION_TTL_SECONDS);
|
|
122
119
|
}
|
|
123
120
|
/**
|
|
124
121
|
* Resolve a versionless dossier name to a concrete version.
|
|
@@ -138,7 +135,7 @@ async function resolveCachedVersion(dossierName, opts = {}) {
|
|
|
138
135
|
const cached = readResolution(dossierName);
|
|
139
136
|
if (cached) {
|
|
140
137
|
const ageMs = Date.now() - new Date(cached.resolved_at).getTime();
|
|
141
|
-
if (
|
|
138
|
+
if ((0, ttl_cache_1.isWithinTtl)(cached.resolved_at, ttl)) {
|
|
142
139
|
if (process.env.DOSSIER_DEBUG) {
|
|
143
140
|
process.stderr.write(`[cache-resolver] '${dossierName}' served from resolution cache: ` +
|
|
144
141
|
`version=${cached.resolved_version}, age=${(0, duration_1.formatAge)(ageMs, ' ago')}, ttl=${ttl}s, registry=${cached.source_registry ?? 'unknown'}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-resolver.js","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;AAoEH,0CA4BC;AAGD,kDAcC;
|
|
1
|
+
{"version":3,"file":"cache-resolver.js","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ const pkg = require('../package.json');
|
|
|
10
10
|
const cache_1 = require("./commands/cache");
|
|
11
11
|
const cap_1 = require("./commands/cap");
|
|
12
12
|
const checksum_1 = require("./commands/checksum");
|
|
13
|
+
const classify_1 = require("./commands/classify");
|
|
13
14
|
const commands_1 = require("./commands/commands");
|
|
14
15
|
const config_cmd_1 = require("./commands/config-cmd");
|
|
15
16
|
const create_1 = require("./commands/create");
|
|
@@ -100,6 +101,7 @@ Agent-friendly: Run \`ai-dossier --agent\` for machine-readable capabilities.`);
|
|
|
100
101
|
(0, doctor_1.registerDoctorCommand)(commander_1.program);
|
|
101
102
|
(0, traces_1.registerTracesCommand)(commander_1.program);
|
|
102
103
|
(0, runstate_1.registerRunstateCommand)(commander_1.program);
|
|
104
|
+
(0, classify_1.registerClassifyCommand)(commander_1.program);
|
|
103
105
|
(0, plan_1.registerPlanCommand)(commander_1.program);
|
|
104
106
|
(0, sched_1.registerSchedCommand)(commander_1.program);
|
|
105
107
|
(0, cap_1.registerCapCommand)(commander_1.program);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ai-dossier classify` — the deterministic pre-screen `issue-cycle-classifier` runs before any
|
|
3
|
+
* model call (#538). Patterned on `plan validate` (`commands/plan.ts`): a single JSON verdict,
|
|
4
|
+
* no model call anywhere, always exits 0 once arguments validate — `verdict` is the payload, not
|
|
5
|
+
* a pass/fail gate. (An invalid `--issue`/`--repo` still exits 1 before any lookup, same as
|
|
6
|
+
* every other command built on `requireIssueTarget`.)
|
|
7
|
+
*/
|
|
8
|
+
import type { Command } from 'commander';
|
|
9
|
+
/** Registers the `classify` command tree (currently just `prescreen`). */
|
|
10
|
+
export declare function registerClassifyCommand(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=classify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/commands/classify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqLzC,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM9D"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ai-dossier classify` — the deterministic pre-screen `issue-cycle-classifier` runs before any
|
|
4
|
+
* model call (#538). Patterned on `plan validate` (`commands/plan.ts`): a single JSON verdict,
|
|
5
|
+
* no model call anywhere, always exits 0 once arguments validate — `verdict` is the payload, not
|
|
6
|
+
* a pass/fail gate. (An invalid `--issue`/`--repo` still exits 1 before any lookup, same as
|
|
7
|
+
* every other command built on `requireIssueTarget`.)
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.registerClassifyCommand = registerClassifyCommand;
|
|
11
|
+
const gh_1 = require("../gh");
|
|
12
|
+
const issue_selection_1 = require("../issue-selection");
|
|
13
|
+
const plan_artifact_1 = require("../plan-artifact");
|
|
14
|
+
const prescreen_1 = require("../prescreen");
|
|
15
|
+
/** GitHub's `state` value for an open issue. */
|
|
16
|
+
const GH_STATE_OPEN = 'OPEN';
|
|
17
|
+
/** Parse `--submitted-set` (`4,5` or `4..9`), failing through the CLI's exit path — same pattern as `sched.ts`'s `issueList`. */
|
|
18
|
+
function parseSubmittedSet(raw) {
|
|
19
|
+
if (raw === undefined)
|
|
20
|
+
return null;
|
|
21
|
+
try {
|
|
22
|
+
return new Set((0, issue_selection_1.parseIssueSelection)(raw));
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
(0, gh_1.fail)([`--submitted-set: ${err.message}`]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve each `Depends on #N` reference to whether it is open and outside `submittedSet` —
|
|
30
|
+
* fails open (drops the ref from `open` rather than erroring the whole prescreen) on a lookup
|
|
31
|
+
* failure, the same discipline #507's `screenHardBlockLabels` established: a nice-to-have check
|
|
32
|
+
* must never hard-fail the command it augments, but a dropped check must be visible, not silent
|
|
33
|
+
* — `unresolved` exists so the caller can say so.
|
|
34
|
+
*/
|
|
35
|
+
function resolveOpenDependencies(refs, submittedSet, repo) {
|
|
36
|
+
const open = [];
|
|
37
|
+
const unresolved = [];
|
|
38
|
+
for (const dep of refs) {
|
|
39
|
+
if (submittedSet?.has(dep))
|
|
40
|
+
continue; // in-set: rule 9 explicitly exempts this (RFC-0001 E.2)
|
|
41
|
+
const result = (0, gh_1.tryFetchIssueState)(String(dep), repo);
|
|
42
|
+
if (!result.ok) {
|
|
43
|
+
unresolved.push(dep);
|
|
44
|
+
}
|
|
45
|
+
else if (result.state === GH_STATE_OPEN) {
|
|
46
|
+
open.push(dep);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return { open, unresolved };
|
|
50
|
+
}
|
|
51
|
+
/** The plan:v1 artifact's predicted files, when the issue already carries one — distinguishes "no artifact" from "couldn't read comments" so a transient `gh` failure never silently looks like a clean issue. */
|
|
52
|
+
function fetchPredictedFiles(issue, repo) {
|
|
53
|
+
const comments = (0, gh_1.tryFetchComments)(issue, repo);
|
|
54
|
+
if (!comments.ok)
|
|
55
|
+
return { status: 'unreadable', error: comments.error };
|
|
56
|
+
const bodies = comments.comments.map((c) => (typeof c?.body === 'string' ? c.body : ''));
|
|
57
|
+
const latest = (0, plan_artifact_1.findLatestPlan)(bodies);
|
|
58
|
+
if (latest === null)
|
|
59
|
+
return { status: 'absent' };
|
|
60
|
+
return { status: 'present', files: latest.artifact.predictedFiles };
|
|
61
|
+
}
|
|
62
|
+
/** The one JSON shape every path emits — success and failure alike carry the same five keys, plus `degraded`/`warnings` when something didn't run cleanly. */
|
|
63
|
+
function emitVerdict(fields) {
|
|
64
|
+
const { issue, state, verdict, reasons, planArtifact, warnings } = fields;
|
|
65
|
+
for (const w of warnings)
|
|
66
|
+
console.error(`⚠ ${w}`);
|
|
67
|
+
console.log(JSON.stringify({
|
|
68
|
+
issue,
|
|
69
|
+
state,
|
|
70
|
+
verdict,
|
|
71
|
+
reasons,
|
|
72
|
+
plan_artifact: planArtifact,
|
|
73
|
+
degraded: warnings.length > 0,
|
|
74
|
+
warnings,
|
|
75
|
+
// Not part of the deterministic verdict — documented in cli/README.md as the one
|
|
76
|
+
// non-reproducible field two identical runs may disagree on.
|
|
77
|
+
checked_at: new Date().toISOString(),
|
|
78
|
+
}, null, 2));
|
|
79
|
+
}
|
|
80
|
+
function registerPrescreenSubcommand(cmd) {
|
|
81
|
+
cmd
|
|
82
|
+
.command('prescreen')
|
|
83
|
+
.description('Deterministically pre-screen an issue for the classify pass (JSON verdict, no model call)')
|
|
84
|
+
.requiredOption('--issue <number>', 'GitHub issue number')
|
|
85
|
+
.option('--repo <owner/name>', 'Target repository (defaults to the current one)')
|
|
86
|
+
.option('--submitted-set <selection>', 'Issues batched/submitted with this one (e.g. "4,5" or "4..9") — an open "Depends on #N" inside this set does not count toward rule 9')
|
|
87
|
+
.action((options) => {
|
|
88
|
+
(0, gh_1.requireIssueTarget)(options);
|
|
89
|
+
const submittedSet = parseSubmittedSet(options.submittedSet);
|
|
90
|
+
const meta = (0, gh_1.tryFetchIssueMeta)(options.issue, options.repo);
|
|
91
|
+
if (!meta.ok) {
|
|
92
|
+
emitVerdict({
|
|
93
|
+
issue: Number(options.issue),
|
|
94
|
+
state: null,
|
|
95
|
+
verdict: 'candidate',
|
|
96
|
+
reasons: [],
|
|
97
|
+
planArtifact: null,
|
|
98
|
+
warnings: [meta.error],
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const predicted = fetchPredictedFiles(options.issue, options.repo);
|
|
103
|
+
const depRefs = (0, prescreen_1.extractDependencyRefs)(`${meta.title}\n${meta.body}`);
|
|
104
|
+
const { open: openDependencies, unresolved } = resolveOpenDependencies(depRefs, submittedSet, options.repo);
|
|
105
|
+
const result = (0, prescreen_1.prescreenIssue)({
|
|
106
|
+
title: meta.title,
|
|
107
|
+
body: meta.body,
|
|
108
|
+
labels: meta.labels,
|
|
109
|
+
predictedFiles: predicted.status === 'present' ? predicted.files : undefined,
|
|
110
|
+
openDependencies,
|
|
111
|
+
});
|
|
112
|
+
const warnings = [];
|
|
113
|
+
if (predicted.status === 'unreadable') {
|
|
114
|
+
warnings.push(`Could not read comments to check for a plan:v1 artifact — path-floor and file-count checks were skipped: ${predicted.error}`);
|
|
115
|
+
}
|
|
116
|
+
if (unresolved.length > 0) {
|
|
117
|
+
warnings.push(`Could not resolve open/closed state for dependency issue(s) ${unresolved.map((n) => `#${n}`).join(', ')} — rule-9 check may be incomplete for them.`);
|
|
118
|
+
}
|
|
119
|
+
emitVerdict({
|
|
120
|
+
issue: Number(options.issue),
|
|
121
|
+
state: meta.state,
|
|
122
|
+
verdict: result.verdict,
|
|
123
|
+
reasons: result.reasons,
|
|
124
|
+
planArtifact: predicted.status,
|
|
125
|
+
warnings,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/** Registers the `classify` command tree (currently just `prescreen`). */
|
|
130
|
+
function registerClassifyCommand(program) {
|
|
131
|
+
const classifyCmd = program
|
|
132
|
+
.command('classify')
|
|
133
|
+
.description('Deterministic pre-screen for the issue-cycle-classifier pipeline');
|
|
134
|
+
registerPrescreenSubcommand(classifyCmd);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/commands/classify.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAwLH,0DAMC;AA3LD,8BAMe;AACf,wDAAyD;AACzD,oDAAkD;AAClD,4CAA2F;AAQ3F,gDAAgD;AAChD,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,iIAAiI;AACjI,SAAS,iBAAiB,CAAC,GAAuB;IAChD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,IAAA,qCAAmB,EAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,SAAI,EAAC,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AASD;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,IAAc,EACd,YAAgC,EAChC,IAAwB;IAExB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,wDAAwD;QAC9F,MAAM,MAAM,GAAG,IAAA,uBAAkB,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC;AAUD,kNAAkN;AAClN,SAAS,mBAAmB,CAAC,KAAa,EAAE,IAAwB;IAClE,MAAM,QAAQ,GAAG,IAAA,qBAAgB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;AACtE,CAAC;AAED,8JAA8J;AAC9J,SAAS,WAAW,CAAC,MAOpB;IACC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC1E,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;QACE,KAAK;QACL,KAAK;QACL,OAAO;QACP,OAAO;QACP,aAAa,EAAE,YAAY;QAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC7B,QAAQ;QACR,iFAAiF;QACjF,6DAA6D;QAC7D,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAY;IAC/C,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CACV,2FAA2F,CAC5F;SACA,cAAc,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,iDAAiD,CAAC;SAChF,MAAM,CACL,6BAA6B,EAC7B,sIAAsI,CACvI;SACA,MAAM,CAAC,CAAC,OAAyB,EAAE,EAAE;QACpC,IAAA,uBAAkB,EAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,IAAA,sBAAiB,EAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,WAAW,CAAC;gBACV,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC5B,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;aACvB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAA,iCAAqB,EAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,uBAAuB,CACpE,OAAO,EACP,YAAY,EACZ,OAAO,CAAC,IAAI,CACb,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC5E,gBAAgB;SACjB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,SAAS,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CACX,4GAA4G,SAAS,CAAC,KAAK,EAAE,CAC9H,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CACX,+DAA+D,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CACtJ,CAAC;QACJ,CAAC;QAED,WAAW,CAAC;YACV,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,SAAS,CAAC,MAAM;YAC9B,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,0EAA0E;AAC1E,SAAgB,uBAAuB,CAAC,OAAgB;IACtD,MAAM,WAAW,GAAG,OAAO;SACxB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,kEAAkE,CAAC,CAAC;IAEnF,2BAA2B,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,gBAAgB,IAAI,WAAW,CAe9C;AAcD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAgBtE;AAED,wBAAgB,cAAc,IAAI,WAAW,CAuC5C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAgB1D;AAyBD,wBAAgB,cAAc,IAAI,WAAW,CAgB5C;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAUvD;AAwBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CA6B5D;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB5D"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -24,6 +24,7 @@ exports.registerDoctorCommand = registerDoctorCommand;
|
|
|
24
24
|
const node_child_process_1 = require("node:child_process");
|
|
25
25
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
26
26
|
const node_path_1 = __importDefault(require("node:path"));
|
|
27
|
+
const package_info_1 = require("../package-info");
|
|
27
28
|
// ── Individual checks ────────────────────────────────────────────────────────
|
|
28
29
|
function checkNodeVersion() {
|
|
29
30
|
const [major] = process.versions.node.split('.').map(Number);
|
|
@@ -53,33 +54,9 @@ function isPackageInstalled(packageName) {
|
|
|
53
54
|
return false;
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Try to read a package's version from its package.json.
|
|
58
|
-
*/
|
|
59
|
-
function getPackageVersion(packageName) {
|
|
60
|
-
try {
|
|
61
|
-
const entryPath = require.resolve(packageName);
|
|
62
|
-
// Walk up to find the package.json
|
|
63
|
-
let dir = node_path_1.default.dirname(entryPath);
|
|
64
|
-
for (let i = 0; i < 10; i++) {
|
|
65
|
-
const pkgFile = node_path_1.default.join(dir, 'package.json');
|
|
66
|
-
if (node_fs_1.default.existsSync(pkgFile)) {
|
|
67
|
-
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgFile, 'utf8'));
|
|
68
|
-
if (pkg.name === packageName) {
|
|
69
|
-
return pkg.version ?? null;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
dir = node_path_1.default.dirname(dir);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// not installed
|
|
77
|
-
}
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
57
|
function checkPackageInstalled(packageName) {
|
|
81
58
|
const installed = isPackageInstalled(packageName);
|
|
82
|
-
const version = installed ? getPackageVersion(packageName) : null;
|
|
59
|
+
const version = installed ? (0, package_info_1.getPackageVersion)(packageName) : null;
|
|
83
60
|
if (installed) {
|
|
84
61
|
return {
|
|
85
62
|
name: packageName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sched.d.ts
CHANGED
|
@@ -9,29 +9,5 @@
|
|
|
9
9
|
* cheap-tier report dispatch.
|
|
10
10
|
*/
|
|
11
11
|
import type { Command } from 'commander';
|
|
12
|
-
/**
|
|
13
|
-
* Labels that mean an issue was already determined undispatchable — by a
|
|
14
|
-
* prior full-cycle hand-off (`decision-pending`, applied by the Guiding
|
|
15
|
-
* Principle hand-off) or by triage (`needs-clarification`, `epic`,
|
|
16
|
-
* `decomposed`, the same three gate-issue Step 2 hard-blocks on). This is
|
|
17
|
-
* NOT gate-issue's list verbatim: gate-issue additionally hard-blocks
|
|
18
|
-
* `batch-epic`, a batch-ANCHOR concern with no equivalent for a per-issue
|
|
19
|
-
* enqueue screen, so it is deliberately left out here. Enqueueing one of
|
|
20
|
-
* these anyway just re-burns the same block a dispatched agent (and the
|
|
21
|
-
* escalation ladder behind it) would rediscover on its own; checking here
|
|
22
|
-
* costs one `gh` call instead of a slot-hour.
|
|
23
|
-
*
|
|
24
|
-
* Order is significant: when an issue carries more than one of these
|
|
25
|
-
* labels, the FIRST match in this array is the one recorded in `reason` —
|
|
26
|
-
* reordering the array changes which reason gets recorded.
|
|
27
|
-
*
|
|
28
|
-
* `decision-pending` here is the GitHub LABEL, not the `IssueStatus` value
|
|
29
|
-
* of the same name (`packages/sched/src/types.ts`) — a labelled issue lands
|
|
30
|
-
* as `status: 'blocked'` with a `label:` reason, same as the other three;
|
|
31
|
-
* see the comment on `enqueue.ts`'s status assignment for why.
|
|
32
|
-
*/
|
|
33
|
-
export declare const HARD_BLOCK_LABELS: readonly ["decision-pending", "needs-clarification", "epic", "decomposed"];
|
|
34
|
-
/** The first hard-block label `labels` carries (case-insensitive), or `null`. */
|
|
35
|
-
export declare function pickHardBlockLabel(labels: readonly string[]): string | null;
|
|
36
12
|
export declare function registerSchedCommand(program: Command): void;
|
|
37
13
|
//# sourceMappingURL=sched.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sched.d.ts","sourceRoot":"","sources":["../../src/commands/sched.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"sched.d.ts","sourceRoot":"","sources":["../../src/commands/sched.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAs+BzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc3D"}
|