wicked-crew 0.7.0 → 0.7.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 +103 -0
- package/dist/api/endpoint-manifest-live.d.ts +29 -0
- package/dist/api/endpoint-manifest-live.d.ts.map +1 -0
- package/dist/api/endpoint-manifest-live.js +72 -0
- package/dist/api/endpoint-manifest-live.js.map +1 -0
- package/dist/api/endpoint-manifest.d.ts +107 -0
- package/dist/api/endpoint-manifest.d.ts.map +1 -0
- package/dist/api/endpoint-manifest.js +108 -0
- package/dist/api/endpoint-manifest.js.map +1 -0
- package/dist/api/requirements.d.ts +7 -0
- package/dist/api/requirements.d.ts.map +1 -1
- package/dist/api/requirements.js +23 -2
- package/dist/api/requirements.js.map +1 -1
- package/dist/api/routes.d.ts +4 -4
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +48 -8
- package/dist/api/routes.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +50 -4
- package/dist/api/server.js.map +1 -1
- package/dist/cli/index.js +13 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +12 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +59 -6
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/deliverable-floor.d.ts +65 -13
- package/dist/core/deliverable-floor.d.ts.map +1 -1
- package/dist/core/deliverable-floor.js +96 -21
- package/dist/core/deliverable-floor.js.map +1 -1
- package/dist/interactive/bridge-pool.d.ts +24 -0
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +26 -2
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/edit-events.d.ts +3 -2
- package/dist/interactive/edit-events.d.ts.map +1 -1
- package/dist/interactive/edit-events.js +15 -7
- package/dist/interactive/edit-events.js.map +1 -1
- package/dist/projects/graph-paths.d.ts +32 -2
- package/dist/projects/graph-paths.d.ts.map +1 -1
- package/dist/projects/graph-paths.js +49 -4
- package/dist/projects/graph-paths.js.map +1 -1
- package/dist/projects/graph.d.ts +13 -1
- package/dist/projects/graph.d.ts.map +1 -1
- package/dist/projects/graph.js +73 -19
- package/dist/projects/graph.js.map +1 -1
- package/dist/projects/routes.d.ts +10 -0
- package/dist/projects/routes.d.ts.map +1 -1
- package/dist/projects/routes.js +18 -1
- package/dist/projects/routes.js.map +1 -1
- package/dist/qe/ledger.d.ts +3 -2
- package/dist/qe/ledger.d.ts.map +1 -1
- package/dist/qe/ledger.js +5 -4
- package/dist/qe/ledger.js.map +1 -1
- package/dist/studio/assets/{index-8p8uwCxG.js → index-D-BFUYnY.js} +76 -76
- package/dist/studio/index.html +1 -1
- package/endpoint-manifest.json +624 -0
- package/package.json +8 -5
package/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# wicked-crew
|
|
2
|
+
|
|
3
|
+
**The harness for your agent harnesses** — run the coding-agent CLIs you already use as governed
|
|
4
|
+
workers through durable, multi-agent workflows. Intent in, verified work out: the evaluator is
|
|
5
|
+
structurally not the creator, gates are deny-dominates, and "done" is re-derived from evidence
|
|
6
|
+
instead of asserted.
|
|
7
|
+
|
|
8
|
+
Local-first: loopback only, no accounts, no billing, no model reselling. Crew drives the agents
|
|
9
|
+
*you* already pay for, on *your* auth and *your* plan.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
Requires Node.js ≥ 22 and at least one coding-agent CLI on your machine (e.g. Claude Code, Codex).
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g wicked-crew
|
|
17
|
+
wicked-crew serve
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Or without installing:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx wicked-crew serve
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or use the family installer — [`npx wicked-installer`](https://www.npmjs.com/package/wicked-installer)
|
|
27
|
+
installs/updates the whole wicked-\* family, crew included.
|
|
28
|
+
|
|
29
|
+
`serve` starts the daemon on `http://127.0.0.1:7701` (override with `--port` or `CREW_PORT`) and
|
|
30
|
+
serves the bundled **wicked-studio** browser console same-origin — open the URL and you have the
|
|
31
|
+
control room: launch and steer runs, answer human gates, browse projects and evidence, watch live
|
|
32
|
+
engine events. Durable state (runs, evidence, event log) lives in `~/.wicked-crew/` (`--db`
|
|
33
|
+
overrides).
|
|
34
|
+
|
|
35
|
+
## Quickstart
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 1. Start the daemon (leave it running)
|
|
39
|
+
wicked-crew serve
|
|
40
|
+
|
|
41
|
+
# 2. Launch a governed run — from the console at http://127.0.0.1:7701,
|
|
42
|
+
# or headless over the API:
|
|
43
|
+
curl -X POST http://127.0.0.1:7701/api/v1/runs \
|
|
44
|
+
-H 'content-type: application/json' \
|
|
45
|
+
-d '{"problem": "Add input validation to the signup form", "workflow": "feature"}'
|
|
46
|
+
|
|
47
|
+
# 3. Watch it move through the workflow's phases; approve or reject at the gates.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
One run token moves through the workflow's phases with a gate between every one — e.g. for
|
|
51
|
+
`feature`: clarify → design → build → adversarial-review → test → review. Each phase is executed
|
|
52
|
+
by a versioned skill on an assigned CLI worker; the gates decide, and every decision is audited.
|
|
53
|
+
|
|
54
|
+
## The governed-run model
|
|
55
|
+
|
|
56
|
+
- **You own the workflow; the agent owns the work.** The orchestrator sequences phases and holds
|
|
57
|
+
the gates; the agent does the coding inside a phase.
|
|
58
|
+
- **Workflows are data.** `feature` / `bug` / `migration` ship built-in; new ones are drop-in JSON
|
|
59
|
+
files, not code.
|
|
60
|
+
- **Gates are real, not self-graded.** Phase transitions resolve **deny-dominates** on a
|
|
61
|
+
deterministic structural floor, with an independent evaluator seat that reads cold evidence
|
|
62
|
+
only — a model may fail a gate, never solely approve one.
|
|
63
|
+
- **Evidence, not assertion.** "Done" is re-derived from evidence at the gate, never claimed by
|
|
64
|
+
the agent that did the work.
|
|
65
|
+
|
|
66
|
+
The engine underneath is [wicked-core](https://github.com/mikeparcewski/wicked-core) (Rust,
|
|
67
|
+
single-writer), embedded via the `wicked-core-ts` napi bridge — the daemon is a thin REST+WS
|
|
68
|
+
layer over it.
|
|
69
|
+
|
|
70
|
+
## The acceptance gate
|
|
71
|
+
|
|
72
|
+
`GET /api/v1/runs/:id/acceptance` answers "does the QE evidence ledger accept this run's work?" —
|
|
73
|
+
crew's machine gate, absorbed from the retired wicked-testing product. <!-- historical --> It reads the repo's
|
|
74
|
+
evidence ledger (a wicked-ledger store at `<repo>/.wicked-qe/`, written by wicked-garden's QE
|
|
75
|
+
skills; legacy `.wicked-testing/` ledgers are still read) and resolves the workflow's acceptance
|
|
76
|
+
requirement **deny-dominates**: only a `PASS` verdict satisfies it. `FAIL`, `CONDITIONAL`,
|
|
77
|
+
`PARTIAL`, `INCONCLUSIVE`, a missing ledger, or a missing verdict each deny with their own named
|
|
78
|
+
reason — no evidence is never a pass. The route always returns 200 for a known run ("no verdict"
|
|
79
|
+
is a real answer about the gate, not an error); `?qeRun=<id>` pins the read to one QE run.
|
|
80
|
+
|
|
81
|
+
## CLI
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
wicked-crew serve|start|resume|gate|status|mcp
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
| command | what it does |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `serve` | run the daemon: REST `/api/v1` + WS `/ws` + the bundled studio console |
|
|
90
|
+
| `start` | boot and launch a run headless (`--problem`, `--workflow`, `--repo`) |
|
|
91
|
+
| `resume` | resume a persisted run (`--session <id>`) |
|
|
92
|
+
| `gate` | answer a pending human gate from the terminal |
|
|
93
|
+
| `status` | inspect run state |
|
|
94
|
+
| `mcp` | stdio MCP server — crew-as-a-tool for coding agents |
|
|
95
|
+
|
|
96
|
+
## Links
|
|
97
|
+
|
|
98
|
+
- Repo: <https://github.com/mikeparcewski/wicked-crew>
|
|
99
|
+
- Site & docs: <https://wc.wickedagile.com>
|
|
100
|
+
- Wire contract (every `/api/v1` + `/ws` shape, types-only): [`wicked-crew-api-types`](https://www.npmjs.com/package/wicked-crew-api-types)
|
|
101
|
+
- Engine: [wicked-core](https://github.com/mikeparcewski/wicked-core) · Console: [wicked-studio](https://github.com/mikeparcewski/wicked-studio)
|
|
102
|
+
|
|
103
|
+
MIT
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the LIVE endpoint manifest by booting the real server assembly (TH-11).
|
|
3
|
+
*
|
|
4
|
+
* A separate module from endpoint-manifest.ts on purpose: this imports `createServer` while
|
|
5
|
+
* server.ts imports the hook installer — folding both into one file would make the cycle
|
|
6
|
+
* structural instead of avoiding it.
|
|
7
|
+
*
|
|
8
|
+
* # Why boot `createServer` rather than re-list routes by hand
|
|
9
|
+
*
|
|
10
|
+
* The manifest's whole value is that it cannot drift from the daemon: it is read from the same
|
|
11
|
+
* `onRoute` hook, over the same registration calls (`registerRoutes`, project routes, terminal
|
|
12
|
+
* WS, `/ws`, interactive event routes), that the served daemon runs. A hand-maintained list would
|
|
13
|
+
* be a second spelling of the route table — the exact thing the manifest exists to end.
|
|
14
|
+
*
|
|
15
|
+
* # What is faked, and why it is safe
|
|
16
|
+
*
|
|
17
|
+
* Route REGISTRATION never calls the engine — only handlers do, and no request is ever injected
|
|
18
|
+
* here. The adapter stub answers the three things `createServer` itself asks at boot:
|
|
19
|
+
* `getSettings()` (worker-config root export), `projectsSupported()` → false (skips membership
|
|
20
|
+
* hydration), and `stub: true` (any answering seam that were ever armed would refuse rather than
|
|
21
|
+
* subscribe). Every optional seam is disabled explicitly, the audit trail goes to a temp file
|
|
22
|
+
* (never `~/.wicked-crew/audit.log`), and `studioRoot` points at a nonexistent directory so the
|
|
23
|
+
* server boots HEADLESS — deliberately: the static wildcard route depends on whether a studio
|
|
24
|
+
* bundle is installed on the generating machine, and a committed manifest must not vary by
|
|
25
|
+
* install state. The manifest documents the API + WS surface.
|
|
26
|
+
*/
|
|
27
|
+
import { type EndpointManifest } from './endpoint-manifest.js';
|
|
28
|
+
export declare function collectLiveEndpointManifest(): Promise<EndpointManifest>;
|
|
29
|
+
//# sourceMappingURL=endpoint-manifest-live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-manifest-live.d.ts","sourceRoot":"","sources":["../../src/api/endpoint-manifest-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAmC7E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the LIVE endpoint manifest by booting the real server assembly (TH-11).
|
|
3
|
+
*
|
|
4
|
+
* A separate module from endpoint-manifest.ts on purpose: this imports `createServer` while
|
|
5
|
+
* server.ts imports the hook installer — folding both into one file would make the cycle
|
|
6
|
+
* structural instead of avoiding it.
|
|
7
|
+
*
|
|
8
|
+
* # Why boot `createServer` rather than re-list routes by hand
|
|
9
|
+
*
|
|
10
|
+
* The manifest's whole value is that it cannot drift from the daemon: it is read from the same
|
|
11
|
+
* `onRoute` hook, over the same registration calls (`registerRoutes`, project routes, terminal
|
|
12
|
+
* WS, `/ws`, interactive event routes), that the served daemon runs. A hand-maintained list would
|
|
13
|
+
* be a second spelling of the route table — the exact thing the manifest exists to end.
|
|
14
|
+
*
|
|
15
|
+
* # What is faked, and why it is safe
|
|
16
|
+
*
|
|
17
|
+
* Route REGISTRATION never calls the engine — only handlers do, and no request is ever injected
|
|
18
|
+
* here. The adapter stub answers the three things `createServer` itself asks at boot:
|
|
19
|
+
* `getSettings()` (worker-config root export), `projectsSupported()` → false (skips membership
|
|
20
|
+
* hydration), and `stub: true` (any answering seam that were ever armed would refuse rather than
|
|
21
|
+
* subscribe). Every optional seam is disabled explicitly, the audit trail goes to a temp file
|
|
22
|
+
* (never `~/.wicked-crew/audit.log`), and `studioRoot` points at a nonexistent directory so the
|
|
23
|
+
* server boots HEADLESS — deliberately: the static wildcard route depends on whether a studio
|
|
24
|
+
* bundle is installed on the generating machine, and a committed manifest must not vary by
|
|
25
|
+
* install state. The manifest documents the API + WS surface.
|
|
26
|
+
*/
|
|
27
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
28
|
+
import { tmpdir } from 'node:os';
|
|
29
|
+
import { join } from 'node:path';
|
|
30
|
+
import { createServer } from './server.js';
|
|
31
|
+
import { buildEndpointManifest } from './endpoint-manifest.js';
|
|
32
|
+
export async function collectLiveEndpointManifest() {
|
|
33
|
+
// Deterministic boot: auth mode is pinned OFF via options (no env/file resolution), and the
|
|
34
|
+
// logger is silenced for the duration — this runs inside test output and CI logs.
|
|
35
|
+
const savedLogLevel = process.env['LOG_LEVEL'];
|
|
36
|
+
process.env['LOG_LEVEL'] = 'silent';
|
|
37
|
+
const scratch = mkdtempSync(join(tmpdir(), 'crew-endpoint-manifest-'));
|
|
38
|
+
const adapter = {
|
|
39
|
+
stub: true,
|
|
40
|
+
projectsSupported: () => false,
|
|
41
|
+
getSettings: async () => ({}),
|
|
42
|
+
// The daemon's single CoreEvent fan-out subscribes at boot; no event ever arrives here.
|
|
43
|
+
onEvent: () => () => { },
|
|
44
|
+
};
|
|
45
|
+
try {
|
|
46
|
+
const app = await createServer(adapter, {
|
|
47
|
+
auth: { mode: 'off' },
|
|
48
|
+
auditPath: join(scratch, 'audit.log'),
|
|
49
|
+
projectEvents: { disabled: true },
|
|
50
|
+
interactiveWsRelay: { disabled: true },
|
|
51
|
+
seatHealthProbe: { enabled: false },
|
|
52
|
+
stallWatchdog: { enabled: false },
|
|
53
|
+
// Nonexistent on purpose — headless boot; see the module header.
|
|
54
|
+
studioRoot: join(scratch, 'no-studio-bundle'),
|
|
55
|
+
});
|
|
56
|
+
try {
|
|
57
|
+
await app.ready();
|
|
58
|
+
return buildEndpointManifest(app.endpointManifest ?? []);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
await app.close();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
if (savedLogLevel === undefined)
|
|
66
|
+
delete process.env['LOG_LEVEL'];
|
|
67
|
+
else
|
|
68
|
+
process.env['LOG_LEVEL'] = savedLogLevel;
|
|
69
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=endpoint-manifest-live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-manifest-live.js","sourceRoot":"","sources":["../../src/api/endpoint-manifest-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AAEtF,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,4FAA4F;IAC5F,kFAAkF;IAClF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;QAC9B,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7B,wFAAwF;QACxF,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;KACE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;YACtC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YACrC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YACnC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YACjC,iEAAiE;YACjE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;YAC5D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;QAC9C,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The endpoint manifest (TH-11) — crew's route table as a MACHINE-READABLE build artifact.
|
|
3
|
+
*
|
|
4
|
+
* # Why this exists
|
|
5
|
+
*
|
|
6
|
+
* routes.ts declares zero fastify schemas (verified: grep `schema:` = 0), no OpenAPI spec exists
|
|
7
|
+
* anywhere in crew, and `wicked-crew-api-types` is types-only with no endpoint-to-type binding —
|
|
8
|
+
* so nothing machine-readable said which methods+paths this daemon serves, what a request body is
|
|
9
|
+
* called, or which status codes a route can answer. Request validation is NOT a vacuum (13
|
|
10
|
+
* `.strict()` zod objects guard the bodies), but zod objects are route-internal: a test harness,
|
|
11
|
+
* a drift check, or an API-test generator had nothing to read. With no fastify schemas declared,
|
|
12
|
+
* `@fastify/swagger` has nothing to generate from either — the `onRoute` hook IS the cheap path.
|
|
13
|
+
*
|
|
14
|
+
* # How it works
|
|
15
|
+
*
|
|
16
|
+
* {@link installEndpointManifestHook} registers a fastify `onRoute` hook (added by `createServer`
|
|
17
|
+
* BEFORE any route registration, so every route the daemon serves is seen) that accumulates one
|
|
18
|
+
* {@link EndpointEntry} per method+path. Two declaration channels feed the type/status fields:
|
|
19
|
+
*
|
|
20
|
+
* 1. `config.manifest` on the route options ({@link ManifestRouteConfig}) — the explicit
|
|
21
|
+
* channel. Names should reference `wicked-crew-api-types` exports where one exists
|
|
22
|
+
* (`LaunchRunBody`, `GateDecision`, …) so the manifest binds endpoints to the published
|
|
23
|
+
* wire contract; a structural spelling (`'{ runId: string }'`) is the honest fallback for
|
|
24
|
+
* wire shapes the contract has no name for.
|
|
25
|
+
* 2. `schema.response` keys, when fastify schemas start existing (the longer-term
|
|
26
|
+
* zod-to-json-schema path) — status codes are folded in automatically, so migrating a route
|
|
27
|
+
* to real fastify schemas enriches the manifest without touching this module.
|
|
28
|
+
*
|
|
29
|
+
* Routes that declare neither still land in the manifest with `requestType`/`responseType` null
|
|
30
|
+
* and `statusCodes: []` — the manifest records "where declared", never invents.
|
|
31
|
+
*
|
|
32
|
+
* # What consumes it
|
|
33
|
+
*
|
|
34
|
+
* - `scripts/generate-endpoint-manifest.ts` (npm run manifest:endpoints) writes the committed
|
|
35
|
+
* `endpoint-manifest.json` at the package root — the build artifact.
|
|
36
|
+
* - `tests/endpoint-manifest.test.ts` rebuilds the live route table and fails on ANY drift from
|
|
37
|
+
* the committed file, so an added/removed/renamed endpoint fails CI until the manifest is
|
|
38
|
+
* regenerated and the diff reviewed. The manifest diff IS the API regression trigger.
|
|
39
|
+
* - `scripts/generate-api-tests.ts` derives positive + 400/404/409 negative API tests from the
|
|
40
|
+
* committed manifest (see `tests/generated/`).
|
|
41
|
+
*
|
|
42
|
+
* HEAD entries are dropped: fastify v5 auto-exposes a HEAD twin for every GET
|
|
43
|
+
* (`exposeHeadRoutes`), which would double the GET surface with rows nobody declared.
|
|
44
|
+
*/
|
|
45
|
+
import type { FastifyInstance } from 'fastify';
|
|
46
|
+
/** The explicit per-route declaration channel — `{ config: { manifest: {...} } }` on a route. */
|
|
47
|
+
export interface ManifestRouteConfig {
|
|
48
|
+
/** Request-body type name — a `wicked-crew-api-types` export where one exists. */
|
|
49
|
+
requestType?: string;
|
|
50
|
+
/** Success-response type name, or a structural spelling when the contract has no name for it. */
|
|
51
|
+
responseType?: string;
|
|
52
|
+
/** Every status code this route answers on purpose (success + named error codes). */
|
|
53
|
+
statusCodes?: number[];
|
|
54
|
+
}
|
|
55
|
+
declare module 'fastify' {
|
|
56
|
+
interface FastifyContextConfig {
|
|
57
|
+
/** TH-11 — this route's row in the committed endpoint manifest. */
|
|
58
|
+
manifest?: ManifestRouteConfig;
|
|
59
|
+
}
|
|
60
|
+
interface FastifyInstance {
|
|
61
|
+
/** Accumulated by `createServer`'s onRoute hook; read after `app.ready()`. */
|
|
62
|
+
endpointManifest?: EndpointEntry[];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** One method+path the daemon serves. */
|
|
66
|
+
export interface EndpointEntry {
|
|
67
|
+
method: string;
|
|
68
|
+
path: string;
|
|
69
|
+
/** Declared request-body type name, or null — "where declared", never invented. */
|
|
70
|
+
requestType: string | null;
|
|
71
|
+
/** Declared response type name, or null. */
|
|
72
|
+
responseType: string | null;
|
|
73
|
+
/** Declared status codes (config.manifest + fastify schema.response keys), sorted. */
|
|
74
|
+
statusCodes: number[];
|
|
75
|
+
/** Present (true) only on websocket routes (`/ws`, `/ws/terminals/:id`). */
|
|
76
|
+
websocket?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** The committed artifact's shape (endpoint-manifest.json). */
|
|
79
|
+
export interface EndpointManifest {
|
|
80
|
+
version: 1;
|
|
81
|
+
/**
|
|
82
|
+
* The `wicked-crew-api-types` version this route table was generated against — the published
|
|
83
|
+
* wire contract the type names bind to. Evidence manifests that cite endpoints should carry
|
|
84
|
+
* this (recon R8/R11: api-types drift is live; studio pinned ^0.8.0 against 0.10.0).
|
|
85
|
+
*/
|
|
86
|
+
apiTypesVersion: string;
|
|
87
|
+
/** Sorted by path, then method — a stable order so drift diffs are readable. */
|
|
88
|
+
endpoints: EndpointEntry[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Register the accumulating `onRoute` hook. MUST run before any route is registered — fastify
|
|
92
|
+
* only replays `onRoute` for routes added after the hook exists. Returns the live array the hook
|
|
93
|
+
* appends to; `createServer` exposes it as `app.endpointManifest`.
|
|
94
|
+
*/
|
|
95
|
+
export declare function installEndpointManifestHook(app: FastifyInstance): EndpointEntry[];
|
|
96
|
+
/**
|
|
97
|
+
* The published wire contract's version, read from the actually-installed dependency.
|
|
98
|
+
*
|
|
99
|
+
* NOT `require('wicked-crew-api-types/package.json')`: that package's exports map exposes only
|
|
100
|
+
* `.` (types-only, no runtime condition), so both the subpath and a bare resolve are refused.
|
|
101
|
+
* Walking the resolver's candidate directories and reading the file with fs sidesteps the
|
|
102
|
+
* exports map while still honoring the real resolution order (workspace link included).
|
|
103
|
+
*/
|
|
104
|
+
export declare function apiTypesVersion(): string;
|
|
105
|
+
/** Entries → the committed artifact: stable order, contract version stamped. */
|
|
106
|
+
export declare function buildEndpointManifest(entries: EndpointEntry[]): EndpointManifest;
|
|
107
|
+
//# sourceMappingURL=endpoint-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-manifest.d.ts","sourceRoot":"","sources":["../../src/api/endpoint-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAE7D,iGAAiG;AACjG,MAAM,WAAW,mBAAmB;IAClC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,oBAAoB;QAC5B,mEAAmE;QACnE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;KAChC;IACD,UAAU,eAAe;QACvB,8EAA8E;QAC9E,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;KACpC;CACF;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4CAA4C;IAC5C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sFAAsF;IACtF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa,EAAE,CAgCjF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAWxC;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAKhF"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The endpoint manifest (TH-11) — crew's route table as a MACHINE-READABLE build artifact.
|
|
3
|
+
*
|
|
4
|
+
* # Why this exists
|
|
5
|
+
*
|
|
6
|
+
* routes.ts declares zero fastify schemas (verified: grep `schema:` = 0), no OpenAPI spec exists
|
|
7
|
+
* anywhere in crew, and `wicked-crew-api-types` is types-only with no endpoint-to-type binding —
|
|
8
|
+
* so nothing machine-readable said which methods+paths this daemon serves, what a request body is
|
|
9
|
+
* called, or which status codes a route can answer. Request validation is NOT a vacuum (13
|
|
10
|
+
* `.strict()` zod objects guard the bodies), but zod objects are route-internal: a test harness,
|
|
11
|
+
* a drift check, or an API-test generator had nothing to read. With no fastify schemas declared,
|
|
12
|
+
* `@fastify/swagger` has nothing to generate from either — the `onRoute` hook IS the cheap path.
|
|
13
|
+
*
|
|
14
|
+
* # How it works
|
|
15
|
+
*
|
|
16
|
+
* {@link installEndpointManifestHook} registers a fastify `onRoute` hook (added by `createServer`
|
|
17
|
+
* BEFORE any route registration, so every route the daemon serves is seen) that accumulates one
|
|
18
|
+
* {@link EndpointEntry} per method+path. Two declaration channels feed the type/status fields:
|
|
19
|
+
*
|
|
20
|
+
* 1. `config.manifest` on the route options ({@link ManifestRouteConfig}) — the explicit
|
|
21
|
+
* channel. Names should reference `wicked-crew-api-types` exports where one exists
|
|
22
|
+
* (`LaunchRunBody`, `GateDecision`, …) so the manifest binds endpoints to the published
|
|
23
|
+
* wire contract; a structural spelling (`'{ runId: string }'`) is the honest fallback for
|
|
24
|
+
* wire shapes the contract has no name for.
|
|
25
|
+
* 2. `schema.response` keys, when fastify schemas start existing (the longer-term
|
|
26
|
+
* zod-to-json-schema path) — status codes are folded in automatically, so migrating a route
|
|
27
|
+
* to real fastify schemas enriches the manifest without touching this module.
|
|
28
|
+
*
|
|
29
|
+
* Routes that declare neither still land in the manifest with `requestType`/`responseType` null
|
|
30
|
+
* and `statusCodes: []` — the manifest records "where declared", never invents.
|
|
31
|
+
*
|
|
32
|
+
* # What consumes it
|
|
33
|
+
*
|
|
34
|
+
* - `scripts/generate-endpoint-manifest.ts` (npm run manifest:endpoints) writes the committed
|
|
35
|
+
* `endpoint-manifest.json` at the package root — the build artifact.
|
|
36
|
+
* - `tests/endpoint-manifest.test.ts` rebuilds the live route table and fails on ANY drift from
|
|
37
|
+
* the committed file, so an added/removed/renamed endpoint fails CI until the manifest is
|
|
38
|
+
* regenerated and the diff reviewed. The manifest diff IS the API regression trigger.
|
|
39
|
+
* - `scripts/generate-api-tests.ts` derives positive + 400/404/409 negative API tests from the
|
|
40
|
+
* committed manifest (see `tests/generated/`).
|
|
41
|
+
*
|
|
42
|
+
* HEAD entries are dropped: fastify v5 auto-exposes a HEAD twin for every GET
|
|
43
|
+
* (`exposeHeadRoutes`), which would double the GET surface with rows nobody declared.
|
|
44
|
+
*/
|
|
45
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
46
|
+
import { createRequire } from 'node:module';
|
|
47
|
+
import { join } from 'node:path';
|
|
48
|
+
/**
|
|
49
|
+
* Register the accumulating `onRoute` hook. MUST run before any route is registered — fastify
|
|
50
|
+
* only replays `onRoute` for routes added after the hook exists. Returns the live array the hook
|
|
51
|
+
* appends to; `createServer` exposes it as `app.endpointManifest`.
|
|
52
|
+
*/
|
|
53
|
+
export function installEndpointManifestHook(app) {
|
|
54
|
+
const entries = [];
|
|
55
|
+
app.addHook('onRoute', (route) => {
|
|
56
|
+
const methods = Array.isArray(route.method) ? route.method : [route.method];
|
|
57
|
+
const declared = route.config?.manifest;
|
|
58
|
+
// The future-proofing channel: fastify response schemas keyed by status code. None exist
|
|
59
|
+
// today (routes.ts declares zero), but the fold means the zod→fastify-schema migration
|
|
60
|
+
// enriches the manifest for free.
|
|
61
|
+
const schemaResponse = route.schema
|
|
62
|
+
?.response;
|
|
63
|
+
const schemaCodes = Object.keys(schemaResponse ?? {})
|
|
64
|
+
.map(Number)
|
|
65
|
+
.filter((n) => Number.isInteger(n) && n >= 100 && n <= 599);
|
|
66
|
+
const statusCodes = [...new Set([...(declared?.statusCodes ?? []), ...schemaCodes])].sort((a, b) => a - b);
|
|
67
|
+
const websocket = route.websocket === true;
|
|
68
|
+
for (const method of methods) {
|
|
69
|
+
// Fastify v5 auto-exposes a HEAD twin per GET; recording it would double the GET surface
|
|
70
|
+
// with rows nobody declared and no client calls on purpose.
|
|
71
|
+
if (method === 'HEAD')
|
|
72
|
+
continue;
|
|
73
|
+
entries.push({
|
|
74
|
+
method,
|
|
75
|
+
path: route.url,
|
|
76
|
+
requestType: declared?.requestType ?? null,
|
|
77
|
+
responseType: declared?.responseType ?? null,
|
|
78
|
+
statusCodes,
|
|
79
|
+
...(websocket ? { websocket: true } : {}),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return entries;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The published wire contract's version, read from the actually-installed dependency.
|
|
87
|
+
*
|
|
88
|
+
* NOT `require('wicked-crew-api-types/package.json')`: that package's exports map exposes only
|
|
89
|
+
* `.` (types-only, no runtime condition), so both the subpath and a bare resolve are refused.
|
|
90
|
+
* Walking the resolver's candidate directories and reading the file with fs sidesteps the
|
|
91
|
+
* exports map while still honoring the real resolution order (workspace link included).
|
|
92
|
+
*/
|
|
93
|
+
export function apiTypesVersion() {
|
|
94
|
+
const require = createRequire(import.meta.url);
|
|
95
|
+
for (const dir of require.resolve.paths('wicked-crew-api-types') ?? []) {
|
|
96
|
+
const pkgPath = join(dir, 'wicked-crew-api-types', 'package.json');
|
|
97
|
+
if (existsSync(pkgPath)) {
|
|
98
|
+
return JSON.parse(readFileSync(pkgPath, 'utf8')).version;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
throw new Error('wicked-crew-api-types is not resolvable from packages/crew — the manifest cannot stamp the wire-contract version');
|
|
102
|
+
}
|
|
103
|
+
/** Entries → the committed artifact: stable order, contract version stamped. */
|
|
104
|
+
export function buildEndpointManifest(entries) {
|
|
105
|
+
const endpoints = [...entries].sort((a, b) => a.path.localeCompare(b.path) || a.method.localeCompare(b.method));
|
|
106
|
+
return { version: 1, apiTypesVersion: apiTypesVersion(), endpoints };
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=endpoint-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-manifest.js","sourceRoot":"","sources":["../../src/api/endpoint-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,13 @@ export interface RequirementsPage {
|
|
|
57
57
|
* this the caller cannot tell which one it is looking at. (FINDING-065)
|
|
58
58
|
*/
|
|
59
59
|
source: 'store' | 'artifact';
|
|
60
|
+
/**
|
|
61
|
+
* Override keys that matched no requirement in this corpus — operator edits stranded by an
|
|
62
|
+
* estate id-scheme migration (method/field SymbolIds re-mint on a full re-extract) or by an
|
|
63
|
+
* artifact regeneration that renamed their domain/reqId. Counted so the edits' existence is
|
|
64
|
+
* never silent; deliberately NOT re-keyed (module header says why).
|
|
65
|
+
*/
|
|
66
|
+
orphanedOverrides: number;
|
|
60
67
|
}
|
|
61
68
|
/** Tokenized AND-match: every whitespace-separated term must appear in the haystack. */
|
|
62
69
|
export declare function listRequirements(repo: RepoEntry, query: RequirementsQuery): Promise<RequirementsPage | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/api/requirements.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/api/requirements.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAmBlD,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,aAAa,CAAC;AAE/D;;;4CAG4C;AAC5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAM5D;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,0FAA0F;IAC1F,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,gBAAgB,EAAE,OAAO,EAAE,CAAC;CAC7B;AAkRD,MAAM,WAAW,iBAAiB;IAChC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wFAAwF;AACxF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA0BlC;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmBnC;AAED,2FAA2F;AAC3F,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmBnC"}
|
package/dist/api/requirements.js
CHANGED
|
@@ -19,8 +19,18 @@
|
|
|
19
19
|
* Why an OVERRIDES sidecar: the artifact is DERIVED (regenerated from the estate
|
|
20
20
|
* store), so operator edits written into it would be clobbered on the next
|
|
21
21
|
* `domain-graph` run. Edits live in `requirements_overrides.json` beside the artifact,
|
|
22
|
-
* keyed `domain::reqId
|
|
23
|
-
* regeneration and keeps provenance honest
|
|
22
|
+
* keyed `domain::reqId` (store-built indexes key by the estate SymbolId), and are
|
|
23
|
+
* merged at read time — the overlay survives regeneration and keeps provenance honest
|
|
24
|
+
* (`riskSource: operator` vs `data`).
|
|
25
|
+
*
|
|
26
|
+
* ORPHANED OVERRIDES: an override key matches by exact string, so a key the corpus no
|
|
27
|
+
* longer mints simply stops matching — silently. That happens on an estate id-scheme
|
|
28
|
+
* migration (a full re-extract re-keys method/field SymbolIds; module-level ids
|
|
29
|
+
* survive) and on artifact regeneration that renames a domain or reqId. The index
|
|
30
|
+
* therefore COUNTS the keys that matched no row and surfaces the count as
|
|
31
|
+
* `orphanedOverrides` on every page, so the edits' existence is never invisible. It
|
|
32
|
+
* does NOT re-key them: the old→new mapping is estate's to define, and guessing it
|
|
33
|
+
* here would attach an operator's risk note to the wrong symbol.
|
|
24
34
|
*/
|
|
25
35
|
import { readFile, writeFile, rename, mkdir, stat } from 'node:fs/promises';
|
|
26
36
|
import { dirname } from 'node:path';
|
|
@@ -38,6 +48,14 @@ export function categoryOf(file) {
|
|
|
38
48
|
return 'config-data';
|
|
39
49
|
return 'functional';
|
|
40
50
|
}
|
|
51
|
+
/** Keys in the overrides sidecar that no corpus row claimed — counted, never dropped silently. */
|
|
52
|
+
function countOrphanedOverrides(overrides, byKey) {
|
|
53
|
+
let orphaned = 0;
|
|
54
|
+
for (const key of Object.keys(overrides))
|
|
55
|
+
if (!byKey.has(key))
|
|
56
|
+
orphaned += 1;
|
|
57
|
+
return orphaned;
|
|
58
|
+
}
|
|
41
59
|
const RISK_RE = /risk/i;
|
|
42
60
|
const RISK_PREFIX = '[RISK]';
|
|
43
61
|
/** WAL churn during extraction touches the db every few seconds — don't rebuild a
|
|
@@ -158,6 +176,7 @@ async function buildStoreIndex(repo, sourceMtime, ovMtime) {
|
|
|
158
176
|
overridesMtimeMs: ovMtime,
|
|
159
177
|
builtAtMs: Date.now(),
|
|
160
178
|
total: entries.length,
|
|
179
|
+
orphanedOverrides: countOrphanedOverrides(overrides, byKey),
|
|
161
180
|
};
|
|
162
181
|
}
|
|
163
182
|
async function buildIndex(repo) {
|
|
@@ -241,6 +260,7 @@ async function buildIndex(repo) {
|
|
|
241
260
|
overridesMtimeMs: ovMtime,
|
|
242
261
|
builtAtMs: Date.now(),
|
|
243
262
|
total: entries.length,
|
|
263
|
+
orphanedOverrides: countOrphanedOverrides(overrides, byKey),
|
|
244
264
|
};
|
|
245
265
|
cache.set(repo.root_path, index);
|
|
246
266
|
return index;
|
|
@@ -276,6 +296,7 @@ export async function listRequirements(repo, query) {
|
|
|
276
296
|
limit: query.limit,
|
|
277
297
|
items: matched.slice(query.offset, query.offset + query.limit),
|
|
278
298
|
source: index.fromStore ? 'store' : 'artifact',
|
|
299
|
+
orphanedOverrides: index.orphanedOverrides,
|
|
279
300
|
};
|
|
280
301
|
}
|
|
281
302
|
export async function getRequirement(repo, key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/api/requirements.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/api/requirements.ts"],"names":[],"mappings":"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"}
|
package/dist/api/routes.d.ts
CHANGED
|
@@ -46,9 +46,9 @@ export declare const LaunchSchema: z.ZodEffects<z.ZodObject<{
|
|
|
46
46
|
retryOf: z.ZodOptional<z.ZodString>;
|
|
47
47
|
}, "strict", z.ZodTypeAny, {
|
|
48
48
|
problem: string;
|
|
49
|
-
retryOf?: string | undefined;
|
|
50
49
|
deliver?: "pr" | undefined;
|
|
51
50
|
projectId?: string | undefined;
|
|
51
|
+
retryOf?: string | undefined;
|
|
52
52
|
sessionId?: string | undefined;
|
|
53
53
|
clisJson?: string | undefined;
|
|
54
54
|
entityMode?: "shared" | "isolated" | undefined;
|
|
@@ -57,9 +57,9 @@ export declare const LaunchSchema: z.ZodEffects<z.ZodObject<{
|
|
|
57
57
|
workflow?: string | undefined;
|
|
58
58
|
}, {
|
|
59
59
|
problem: string;
|
|
60
|
-
retryOf?: string | undefined;
|
|
61
60
|
deliver?: "pr" | undefined;
|
|
62
61
|
projectId?: string | undefined;
|
|
62
|
+
retryOf?: string | undefined;
|
|
63
63
|
sessionId?: string | undefined;
|
|
64
64
|
clisJson?: string | undefined;
|
|
65
65
|
entityMode?: "shared" | "isolated" | undefined;
|
|
@@ -68,9 +68,9 @@ export declare const LaunchSchema: z.ZodEffects<z.ZodObject<{
|
|
|
68
68
|
workflow?: string | undefined;
|
|
69
69
|
}>, {
|
|
70
70
|
problem: string;
|
|
71
|
-
retryOf?: string | undefined;
|
|
72
71
|
deliver?: "pr" | undefined;
|
|
73
72
|
projectId?: string | undefined;
|
|
73
|
+
retryOf?: string | undefined;
|
|
74
74
|
sessionId?: string | undefined;
|
|
75
75
|
clisJson?: string | undefined;
|
|
76
76
|
entityMode?: "shared" | "isolated" | undefined;
|
|
@@ -79,9 +79,9 @@ export declare const LaunchSchema: z.ZodEffects<z.ZodObject<{
|
|
|
79
79
|
workflow?: string | undefined;
|
|
80
80
|
}, {
|
|
81
81
|
problem: string;
|
|
82
|
-
retryOf?: string | undefined;
|
|
83
82
|
deliver?: "pr" | undefined;
|
|
84
83
|
projectId?: string | undefined;
|
|
84
|
+
retryOf?: string | undefined;
|
|
85
85
|
sessionId?: string | undefined;
|
|
86
86
|
clisJson?: string | undefined;
|
|
87
87
|
entityMode?: "shared" | "isolated" | undefined;
|