wicked-crew 0.7.8 → 0.7.10
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/dist/api/audit.d.ts +9 -1
- package/dist/api/audit.d.ts.map +1 -1
- package/dist/api/audit.js +11 -3
- package/dist/api/audit.js.map +1 -1
- package/dist/api/delivery-index.d.ts +94 -7
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +182 -4
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/elicitation-cache.d.ts +10 -0
- package/dist/api/elicitation-cache.d.ts.map +1 -1
- package/dist/api/elicitation-cache.js +18 -0
- package/dist/api/elicitation-cache.js.map +1 -1
- package/dist/api/governance-steering.d.ts +8 -0
- package/dist/api/governance-steering.d.ts.map +1 -1
- package/dist/api/governance-steering.js +36 -12
- package/dist/api/governance-steering.js.map +1 -1
- package/dist/api/post-hoc-deliver.d.ts +38 -0
- package/dist/api/post-hoc-deliver.d.ts.map +1 -0
- package/dist/api/post-hoc-deliver.js +57 -0
- package/dist/api/post-hoc-deliver.js.map +1 -0
- package/dist/api/routes.d.ts +34 -7
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +314 -35
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-signin.d.ts +18 -2
- package/dist/api/seat-signin.d.ts.map +1 -1
- package/dist/api/seat-signin.js +21 -2
- package/dist/api/seat-signin.js.map +1 -1
- package/dist/api/server.d.ts +22 -7
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +131 -22
- package/dist/api/server.js.map +1 -1
- package/dist/api/stall-watchdog.d.ts +46 -21
- package/dist/api/stall-watchdog.d.ts.map +1 -1
- package/dist/api/stall-watchdog.js +193 -19
- package/dist/api/stall-watchdog.js.map +1 -1
- package/dist/api/steering-landing.d.ts +130 -0
- package/dist/api/steering-landing.d.ts.map +1 -0
- package/dist/api/steering-landing.js +423 -0
- package/dist/api/steering-landing.js.map +1 -0
- package/dist/api/testing.d.ts +3 -0
- package/dist/api/testing.d.ts.map +1 -1
- package/dist/api/testing.js +146 -18
- package/dist/api/testing.js.map +1 -1
- package/dist/api/unit-output.d.ts.map +1 -1
- package/dist/api/unit-output.js +7 -1
- package/dist/api/unit-output.js.map +1 -1
- package/dist/campaigns/plan.d.ts +46 -0
- package/dist/campaigns/plan.d.ts.map +1 -1
- package/dist/campaigns/plan.js +80 -0
- package/dist/campaigns/plan.js.map +1 -1
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/campaigns/worktrees.d.ts +39 -0
- package/dist/campaigns/worktrees.d.ts.map +1 -0
- package/dist/campaigns/worktrees.js +95 -0
- package/dist/campaigns/worktrees.js.map +1 -0
- package/dist/cli/index.js +46 -13
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +65 -13
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +148 -31
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts +54 -9
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +116 -11
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/types.d.ts +25 -12
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +14 -0
- package/dist/core/types.js.map +1 -1
- package/dist/interactive/chat-events.d.ts.map +1 -1
- package/dist/interactive/chat-events.js +5 -2
- package/dist/interactive/chat-events.js.map +1 -1
- package/dist/interactive/demo-events.d.ts.map +1 -1
- package/dist/interactive/demo-events.js +5 -2
- package/dist/interactive/demo-events.js.map +1 -1
- package/dist/interactive/doc-delete-routes.d.ts +69 -0
- package/dist/interactive/doc-delete-routes.d.ts.map +1 -0
- package/dist/interactive/doc-delete-routes.js +240 -0
- package/dist/interactive/doc-delete-routes.js.map +1 -0
- package/dist/interactive/doc-ledger-sweep.d.ts +53 -0
- package/dist/interactive/doc-ledger-sweep.d.ts.map +1 -0
- package/dist/interactive/doc-ledger-sweep.js +45 -0
- package/dist/interactive/doc-ledger-sweep.js.map +1 -0
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +5 -2
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/edit-events.d.ts.map +1 -1
- package/dist/interactive/edit-events.js +5 -2
- package/dist/interactive/edit-events.js.map +1 -1
- package/dist/interactive/ledger.d.ts +20 -0
- package/dist/interactive/ledger.d.ts.map +1 -1
- package/dist/interactive/ledger.js +32 -0
- package/dist/interactive/ledger.js.map +1 -1
- package/dist/interactive/ws-relay.d.ts +10 -0
- package/dist/interactive/ws-relay.d.ts.map +1 -1
- package/dist/interactive/ws-relay.js +16 -0
- package/dist/interactive/ws-relay.js.map +1 -1
- package/dist/projects/graph-paths.d.ts +7 -22
- package/dist/projects/graph-paths.d.ts.map +1 -1
- package/dist/projects/graph-paths.js +10 -37
- package/dist/projects/graph-paths.js.map +1 -1
- package/dist/projects/settings.d.ts +32 -2
- package/dist/projects/settings.d.ts.map +1 -1
- package/dist/projects/settings.js +48 -6
- package/dist/projects/settings.js.map +1 -1
- package/dist/projects/state-home.d.ts +42 -0
- package/dist/projects/state-home.d.ts.map +1 -0
- package/dist/projects/state-home.js +55 -0
- package/dist/projects/state-home.js.map +1 -0
- package/dist/qe/acceptance.d.ts +9 -0
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +21 -1
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/studio/assets/{index-BdQQv2hz.js → index-gtE6scX0.js} +98 -98
- package/dist/studio/index.html +1 -1
- package/dist/studio/testid-inventory.json +70 -4
- package/endpoint-manifest.json +28 -2
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/projects/settings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/projects/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAOH,6FAA6F;AAC7F,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,EACjE,UAAU,GAAE,MAAiE,GAC5E,MAAM,CAQR;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;gBAEhD,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA6B;IA0B/E,uEAAuE;IACvE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAIvC,8FAA8F;IAC9F,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe;IAQ/D,OAAO,CAAC,OAAO;CAMhB"}
|
|
@@ -12,20 +12,62 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Written atomically (tmp + rename), read tolerantly: a corrupt file costs the settings, never
|
|
14
14
|
* the daemon's boot — an unreadable row simply resolves to the shared default root.
|
|
15
|
+
*
|
|
16
|
+
* # The file FOLLOWS `--db` (crew#353, the settings instance of crew#330's principle)
|
|
17
|
+
*
|
|
18
|
+
* This was the last durable store still resolving from `homedir()` unconditionally: a daemon
|
|
19
|
+
* isolated with `--db $SCRATCH/core.db` read and WROTE the developer's real
|
|
20
|
+
* `~/.wicked-crew/project-settings.json` — worse than the graphs crew#330 caught, because a
|
|
21
|
+
* scratch daemon's PATCH could silently rewrite a real project's `interactiveRoot` binding.
|
|
22
|
+
* The default path now resolves through the shared state-home seam (`state-home.ts`, the one
|
|
23
|
+
* `graph-paths.ts` uses): env override, then the bootstrap-configured `--db` parent, then the
|
|
24
|
+
* historical homedir default — byte-identical without `--db`.
|
|
25
|
+
*
|
|
26
|
+
* MIGRATION IS DELIBERATELY LOUD, NEVER SILENT. An overridden state home does NOT fall back to
|
|
27
|
+
* reading the default root's file: the two stores hold bindings keyed by project ids from two
|
|
28
|
+
* different core dbs, so inheriting them silently would be exactly the cross-contamination the
|
|
29
|
+
* isolation exists to prevent — and silently SHADOWING them is how this class of bug hides. When
|
|
30
|
+
* the override root has no settings file but the default root has one, the daemon says so at
|
|
31
|
+
* boot (both paths named, copy instruction included) and starts empty at the override root.
|
|
15
32
|
*/
|
|
16
|
-
import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
33
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
17
34
|
import { homedir } from 'node:os';
|
|
18
35
|
import { dirname, join } from 'node:path';
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
import { crewStateHome } from './state-home.js';
|
|
37
|
+
/**
|
|
38
|
+
* Where the store lives. Precedence mirrors `projectGraphRoot` exactly: the explicit
|
|
39
|
+
* `WICKED_CREW_PROJECT_SETTINGS` env override (the more specific instruction, and what the test
|
|
40
|
+
* suite pins), then the daemon's state home — the `--db` parent when the bootstrap configured
|
|
41
|
+
* one (crew#353), the historical `~/.wicked-crew` default otherwise.
|
|
42
|
+
*
|
|
43
|
+
* `onLegacyShadow` fires (once, at resolution) when the state-home path is NOT the default root,
|
|
44
|
+
* holds no settings file yet, and the default root DOES hold one — the "your settings appear to
|
|
45
|
+
* have vanished" moment an operator must hear about rather than debug (see the module header).
|
|
46
|
+
* Deliberately NOT fired for the env override: that path is spelled explicitly per run (tests,
|
|
47
|
+
* proof scripts), so shadowing there is the caller's stated intent, not a surprise.
|
|
48
|
+
* `legacyPath` is injectable so the warning is testable without touching a real home directory.
|
|
49
|
+
*/
|
|
50
|
+
export function defaultSettingsPath(env = process.env, onLegacyShadow, legacyPath = join(homedir(), '.wicked-crew', 'project-settings.json')) {
|
|
51
|
+
const override = env['WICKED_CREW_PROJECT_SETTINGS'];
|
|
52
|
+
if (override !== undefined)
|
|
53
|
+
return override;
|
|
54
|
+
const path = join(crewStateHome(), 'project-settings.json');
|
|
55
|
+
if (onLegacyShadow !== undefined && path !== legacyPath && !existsSync(path) && existsSync(legacyPath)) {
|
|
56
|
+
onLegacyShadow(legacyPath, path);
|
|
57
|
+
}
|
|
58
|
+
return path;
|
|
21
59
|
}
|
|
22
60
|
export class ProjectSettingsStore {
|
|
23
61
|
path;
|
|
24
62
|
rows = {};
|
|
25
|
-
constructor(path =
|
|
26
|
-
this.path =
|
|
63
|
+
constructor(path, warn = (m) => console.warn(m)) {
|
|
64
|
+
this.path =
|
|
65
|
+
path ??
|
|
66
|
+
defaultSettingsPath(process.env, (legacy, active) => warn(`project-settings: the state home (${dirname(active)}) has no project-settings.json, but the default ` +
|
|
67
|
+
`root has one (${legacy}). This daemon starts with EMPTY project settings and will neither read nor ` +
|
|
68
|
+
`write the default root's file — copy it to ${active} if this daemon should inherit those bindings (crew#353).`));
|
|
27
69
|
try {
|
|
28
|
-
const parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
70
|
+
const parsed = JSON.parse(readFileSync(this.path, 'utf8'));
|
|
29
71
|
for (const [id, row] of Object.entries(parsed?.projects ?? {})) {
|
|
30
72
|
// Per-row validation, like the handoff ledger: one malformed row must not blank the map.
|
|
31
73
|
if (typeof row !== 'object' || row === null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/projects/settings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/projects/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAyB,OAAO,CAAC,GAAG,EACpC,cAAiE,EACjE,aAAqB,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC;IAE7E,MAAM,QAAQ,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC5D,IAAI,cAAc,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,oBAAoB;IACd,IAAI,CAAS;IACb,IAAI,GAAoC,EAAE,CAAC;IAE5D,YAAY,IAAa,EAAE,OAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI;YACP,IAAI;gBACJ,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAClD,IAAI,CACF,qCAAqC,OAAO,CAAC,MAAM,CAAC,kDAAkD;oBACpG,iBAAiB,MAAM,8EAA8E;oBACrG,8CAA8C,MAAM,2DAA2D,CAClH,CACF,CAAC;QACJ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAmD,CAAC;YAC7G,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC/D,yFAAyF;gBACzF,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;oBAAE,SAAS;gBACtD,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACpE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yFAAyF;YACzF,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,8FAA8F;IAC9F,GAAG,CAAC,SAAiB,EAAE,KAAsB;QAC3C,MAAM,IAAI,GAAoB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QACrG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO;QACb,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9C,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The daemon's RESOLVED state home — the ONE directory every crew-side durable store hangs off.
|
|
3
|
+
*
|
|
4
|
+
* # Why this module exists (crew#330 → crew#351 → crew#353)
|
|
5
|
+
*
|
|
6
|
+
* `~/.wicked-crew` is the daemon's DEFAULT state home, not its definition. A daemon started with
|
|
7
|
+
* `--db $SCRATCH/core.db` reads as fully isolated — and anything durable that still resolves from
|
|
8
|
+
* `homedir()` unconditionally silently escapes the isolation and lands in the developer's real
|
|
9
|
+
* home, keyed by ids only the scratch store ever knew, with nothing to reap it. crew#330 observed
|
|
10
|
+
* exactly that for project graphs (41.7 MB of them); #351 fixed it with a bootstrap-threaded state
|
|
11
|
+
* home private to `graph-paths.ts`; crew#353 found the SAME escape in the project settings store.
|
|
12
|
+
*
|
|
13
|
+
* Rather than grow one private seam per store (two setters the bootstrap must remember to call in
|
|
14
|
+
* tandem is how the second one got missed), the seam lives here once: the CLI bootstrap threads
|
|
15
|
+
* the resolved `--db` parent in via {@link setCrewStateHome}, and every store that keeps durable
|
|
16
|
+
* state under the crew home resolves its root through {@link crewStateHome}. Today that is the
|
|
17
|
+
* project graphs (`graph-paths.ts`) and the project settings store (`settings.ts`); a new durable
|
|
18
|
+
* store should resolve here too, never from `homedir()` directly.
|
|
19
|
+
*
|
|
20
|
+
* With no `--db` the resolved state home IS `~/.wicked-crew`, so the default daemon's paths are
|
|
21
|
+
* byte-identical to what they were before either fix. Per-store env overrides
|
|
22
|
+
* (`WICKED_CREW_PROJECT_GRAPH_ROOT`, `WICKED_CREW_PROJECT_SETTINGS`) still outrank the configured
|
|
23
|
+
* state home at their own resolution sites: they are the more specific instruction, and the one
|
|
24
|
+
* the tests and proof scripts already use.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Thread the daemon's ACTUAL state home in — called from the CLI bootstrap (the one place that
|
|
28
|
+
* knows the resolved `--db`), before the server constructs any store. `undefined` clears it
|
|
29
|
+
* (tests). Idempotent; the last call wins, which is harmless because a process boots one daemon.
|
|
30
|
+
*/
|
|
31
|
+
export declare function setCrewStateHome(stateHome: string | undefined): void;
|
|
32
|
+
/** The state home every durable store resolves under: the bootstrap-configured `--db` parent when
|
|
33
|
+
* a daemon is running, the historical `~/.wicked-crew` default otherwise. */
|
|
34
|
+
export declare function crewStateHome(): string;
|
|
35
|
+
/**
|
|
36
|
+
* A core-db path → the state home it implies. Pure and exported so the bootstrap and the
|
|
37
|
+
* regression tests spell the derivation once: `dirname` of the ABSOLUTE db path, so a relative
|
|
38
|
+
* `--db ./scratch/core.db` still lands its stores next to the db it named rather than resolving
|
|
39
|
+
* differently on every later `join`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function stateHomeOfDb(dbPath: string): string;
|
|
42
|
+
//# sourceMappingURL=state-home.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-home.d.ts","sourceRoot":"","sources":["../../src/projects/state-home.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEpE;AAED;8EAC8E;AAC9E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The daemon's RESOLVED state home — the ONE directory every crew-side durable store hangs off.
|
|
3
|
+
*
|
|
4
|
+
* # Why this module exists (crew#330 → crew#351 → crew#353)
|
|
5
|
+
*
|
|
6
|
+
* `~/.wicked-crew` is the daemon's DEFAULT state home, not its definition. A daemon started with
|
|
7
|
+
* `--db $SCRATCH/core.db` reads as fully isolated — and anything durable that still resolves from
|
|
8
|
+
* `homedir()` unconditionally silently escapes the isolation and lands in the developer's real
|
|
9
|
+
* home, keyed by ids only the scratch store ever knew, with nothing to reap it. crew#330 observed
|
|
10
|
+
* exactly that for project graphs (41.7 MB of them); #351 fixed it with a bootstrap-threaded state
|
|
11
|
+
* home private to `graph-paths.ts`; crew#353 found the SAME escape in the project settings store.
|
|
12
|
+
*
|
|
13
|
+
* Rather than grow one private seam per store (two setters the bootstrap must remember to call in
|
|
14
|
+
* tandem is how the second one got missed), the seam lives here once: the CLI bootstrap threads
|
|
15
|
+
* the resolved `--db` parent in via {@link setCrewStateHome}, and every store that keeps durable
|
|
16
|
+
* state under the crew home resolves its root through {@link crewStateHome}. Today that is the
|
|
17
|
+
* project graphs (`graph-paths.ts`) and the project settings store (`settings.ts`); a new durable
|
|
18
|
+
* store should resolve here too, never from `homedir()` directly.
|
|
19
|
+
*
|
|
20
|
+
* With no `--db` the resolved state home IS `~/.wicked-crew`, so the default daemon's paths are
|
|
21
|
+
* byte-identical to what they were before either fix. Per-store env overrides
|
|
22
|
+
* (`WICKED_CREW_PROJECT_GRAPH_ROOT`, `WICKED_CREW_PROJECT_SETTINGS`) still outrank the configured
|
|
23
|
+
* state home at their own resolution sites: they are the more specific instruction, and the one
|
|
24
|
+
* the tests and proof scripts already use.
|
|
25
|
+
*/
|
|
26
|
+
import { homedir } from 'node:os';
|
|
27
|
+
import { dirname, join, resolve } from 'node:path';
|
|
28
|
+
/**
|
|
29
|
+
* Set once at bootstrap from the `--db` parent; `undefined` for library consumers and unit tests
|
|
30
|
+
* that never boot a daemon (they fall through to the homedir default, the pre-#330 behaviour).
|
|
31
|
+
*/
|
|
32
|
+
let configuredStateHome;
|
|
33
|
+
/**
|
|
34
|
+
* Thread the daemon's ACTUAL state home in — called from the CLI bootstrap (the one place that
|
|
35
|
+
* knows the resolved `--db`), before the server constructs any store. `undefined` clears it
|
|
36
|
+
* (tests). Idempotent; the last call wins, which is harmless because a process boots one daemon.
|
|
37
|
+
*/
|
|
38
|
+
export function setCrewStateHome(stateHome) {
|
|
39
|
+
configuredStateHome = stateHome;
|
|
40
|
+
}
|
|
41
|
+
/** The state home every durable store resolves under: the bootstrap-configured `--db` parent when
|
|
42
|
+
* a daemon is running, the historical `~/.wicked-crew` default otherwise. */
|
|
43
|
+
export function crewStateHome() {
|
|
44
|
+
return configuredStateHome ?? join(homedir(), '.wicked-crew');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A core-db path → the state home it implies. Pure and exported so the bootstrap and the
|
|
48
|
+
* regression tests spell the derivation once: `dirname` of the ABSOLUTE db path, so a relative
|
|
49
|
+
* `--db ./scratch/core.db` still lands its stores next to the db it named rather than resolving
|
|
50
|
+
* differently on every later `join`.
|
|
51
|
+
*/
|
|
52
|
+
export function stateHomeOfDb(dbPath) {
|
|
53
|
+
return dirname(resolve(dbPath));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=state-home.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-home.js","sourceRoot":"","sources":["../../src/projects/state-home.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD;;;GAGG;AACH,IAAI,mBAAuC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC5D,mBAAmB,GAAG,SAAS,CAAC;AAClC,CAAC;AAED;8EAC8E;AAC9E,MAAM,UAAU,aAAa;IAC3B,OAAO,mBAAmB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/qe/acceptance.d.ts
CHANGED
|
@@ -60,6 +60,15 @@ export declare function acceptancePhaseIds(workflow: WorkflowDef | null): string
|
|
|
60
60
|
* full registry (built-ins + user workflows). Free-text runs are excluded by
|
|
61
61
|
* construction: their planned units are `u1`, `u2`, … — not phase ids — and
|
|
62
62
|
* they declare nothing.
|
|
63
|
+
*
|
|
64
|
+
* PER-RUN COMPOSITION (crew#293/#311, default-on since crew#393): a launch can append run-scoped
|
|
65
|
+
* phases the definition never had — the deliverable floor, then the deliver phase — so a
|
|
66
|
+
* delivered run's unit sequence is `<def's phases…, [verify-deliverables,] [deliver]>`. When the
|
|
67
|
+
* exact sequence matches nothing, the trailing appendages are stripped (in reverse composition
|
|
68
|
+
* order) and the match retried: the acceptance requirement lives on the DEFINITION, and a run
|
|
69
|
+
* must not lose its gate because it also delivered. A def that carries its own `deliver` phase
|
|
70
|
+
* (an operator overlay) still wins the EXACT match first, so stripping never mistakes a declared
|
|
71
|
+
* phase for an appendage.
|
|
63
72
|
*/
|
|
64
73
|
export declare function resolveRunWorkflow(run: SessionView, workflows: WorkflowDef[]): WorkflowDef | null;
|
|
65
74
|
/** The gate's resolution of one run's acceptance requirement. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../../src/qe/acceptance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACZ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../../src/qe/acceptance.ts"],"names":[],"mappings":"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"}
|
package/dist/qe/acceptance.js
CHANGED
|
@@ -36,6 +36,8 @@
|
|
|
36
36
|
*/
|
|
37
37
|
import { VERDICT_VALUES } from 'wicked-ledger';
|
|
38
38
|
import { basename } from 'node:path';
|
|
39
|
+
import { DELIVER_PHASE_ID } from '../core/deliver.js';
|
|
40
|
+
import { DELIVERABLE_FLOOR_PHASE_ID } from '../core/deliverable-floor.js';
|
|
39
41
|
import { readAcceptanceState, summarizeManifest } from './ledger.js';
|
|
40
42
|
import { resolveConformance } from './conformance.js';
|
|
41
43
|
/**
|
|
@@ -71,6 +73,15 @@ export function acceptancePhaseIds(workflow) {
|
|
|
71
73
|
* full registry (built-ins + user workflows). Free-text runs are excluded by
|
|
72
74
|
* construction: their planned units are `u1`, `u2`, … — not phase ids — and
|
|
73
75
|
* they declare nothing.
|
|
76
|
+
*
|
|
77
|
+
* PER-RUN COMPOSITION (crew#293/#311, default-on since crew#393): a launch can append run-scoped
|
|
78
|
+
* phases the definition never had — the deliverable floor, then the deliver phase — so a
|
|
79
|
+
* delivered run's unit sequence is `<def's phases…, [verify-deliverables,] [deliver]>`. When the
|
|
80
|
+
* exact sequence matches nothing, the trailing appendages are stripped (in reverse composition
|
|
81
|
+
* order) and the match retried: the acceptance requirement lives on the DEFINITION, and a run
|
|
82
|
+
* must not lose its gate because it also delivered. A def that carries its own `deliver` phase
|
|
83
|
+
* (an operator overlay) still wins the EXACT match first, so stripping never mistakes a declared
|
|
84
|
+
* phase for an appendage.
|
|
74
85
|
*/
|
|
75
86
|
export function resolveRunWorkflow(run, workflows) {
|
|
76
87
|
const direct = workflows.find((w) => w.id === run.session.workflow_id);
|
|
@@ -86,7 +97,16 @@ export function resolveRunWorkflow(run, workflows) {
|
|
|
86
97
|
});
|
|
87
98
|
if (phases.length === 0 || phases.some((p) => p === '' || /^u\d+$/.test(p)))
|
|
88
99
|
return null;
|
|
89
|
-
|
|
100
|
+
const bySequence = (seq) => workflows.find((w) => w.phases.length === seq.length && w.phases.every((p, i) => p.id === seq[i])) ?? null;
|
|
101
|
+
const exact = bySequence(phases);
|
|
102
|
+
if (exact !== null)
|
|
103
|
+
return exact;
|
|
104
|
+
const stripped = [...phases];
|
|
105
|
+
if (stripped[stripped.length - 1] === DELIVER_PHASE_ID)
|
|
106
|
+
stripped.pop();
|
|
107
|
+
if (stripped[stripped.length - 1] === DELIVERABLE_FLOOR_PHASE_ID)
|
|
108
|
+
stripped.pop();
|
|
109
|
+
return stripped.length < phases.length ? bySequence(stripped) : null;
|
|
90
110
|
}
|
|
91
111
|
/** Narrow an arbitrary string from the store to the ledger's verdict enum. */
|
|
92
112
|
function asVerdict(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/qe/acceptance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ/C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/qe/acceptance.ts"],"names":[],"mappings":"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"}
|