wicked-crew 0.8.1 → 0.8.3
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/ask-paths.d.ts +90 -0
- package/dist/api/ask-paths.d.ts.map +1 -0
- package/dist/api/ask-paths.js +145 -0
- package/dist/api/ask-paths.js.map +1 -0
- package/dist/api/ask-relay.d.ts +150 -0
- package/dist/api/ask-relay.d.ts.map +1 -0
- package/dist/api/ask-relay.js +601 -0
- package/dist/api/ask-relay.js.map +1 -0
- package/dist/api/auth.d.ts +5 -1
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +23 -0
- package/dist/api/auth.js.map +1 -1
- package/dist/api/chat-scope.d.ts +25 -2
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +47 -4
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/diagnostics.d.ts +5 -2
- package/dist/api/diagnostics.d.ts.map +1 -1
- package/dist/api/diagnostics.js +7 -3
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/api/eval-sample.d.ts +12 -12
- package/dist/api/governance-health.d.ts.map +1 -1
- package/dist/api/governance-health.js +9 -6
- package/dist/api/governance-health.js.map +1 -1
- package/dist/api/mcp.d.ts +10 -10
- package/dist/api/mcp.d.ts.map +1 -1
- package/dist/api/mcp.js +6 -1
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/plan-schema.d.ts +14 -0
- package/dist/api/plan-schema.d.ts.map +1 -1
- package/dist/api/plan-schema.js +4 -0
- package/dist/api/plan-schema.js.map +1 -1
- package/dist/api/recording.d.ts +30 -1
- package/dist/api/recording.d.ts.map +1 -1
- package/dist/api/recording.js +54 -6
- package/dist/api/recording.js.map +1 -1
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +6 -2
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +144 -14
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +346 -204
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-standing.d.ts +9 -1
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +27 -1
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/server.d.ts +34 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +143 -14
- package/dist/api/server.js.map +1 -1
- package/dist/api/stall-watchdog.d.ts +10 -2
- package/dist/api/stall-watchdog.d.ts.map +1 -1
- package/dist/api/stall-watchdog.js +32 -13
- package/dist/api/stall-watchdog.js.map +1 -1
- package/dist/api/testing.d.ts +4 -4
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/cli/governance.d.ts +7 -0
- package/dist/cli/governance.d.ts.map +1 -1
- package/dist/cli/governance.js +14 -1
- package/dist/cli/governance.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +36 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +1 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +8 -0
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts +50 -7
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +242 -42
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/governance-store.d.ts +9 -0
- package/dist/core/governance-store.d.ts.map +1 -1
- package/dist/core/governance-store.js +13 -0
- package/dist/core/governance-store.js.map +1 -1
- package/dist/core/run-boot-resume.d.ts +55 -0
- package/dist/core/run-boot-resume.d.ts.map +1 -0
- package/dist/core/run-boot-resume.js +94 -0
- package/dist/core/run-boot-resume.js.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/decisions/chat-recorder.d.ts +18 -0
- package/dist/decisions/chat-recorder.d.ts.map +1 -1
- package/dist/decisions/chat-recorder.js +107 -14
- package/dist/decisions/chat-recorder.js.map +1 -1
- package/dist/decisions/consider.d.ts +13 -0
- package/dist/decisions/consider.d.ts.map +1 -1
- package/dist/decisions/consider.js +20 -4
- package/dist/decisions/consider.js.map +1 -1
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +3 -2
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/doc-grounding.d.ts +37 -0
- package/dist/interactive/doc-grounding.d.ts.map +1 -1
- package/dist/interactive/doc-grounding.js +63 -0
- package/dist/interactive/doc-grounding.js.map +1 -1
- package/dist/interactive/doc-list-routes.d.ts +5 -0
- package/dist/interactive/doc-list-routes.d.ts.map +1 -1
- package/dist/interactive/doc-list-routes.js +7 -1
- package/dist/interactive/doc-list-routes.js.map +1 -1
- package/dist/interactive/draft-events.d.ts +32 -2
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +94 -20
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/draft-skill.d.ts.map +1 -1
- package/dist/interactive/draft-skill.js +24 -6
- package/dist/interactive/draft-skill.js.map +1 -1
- package/dist/interactive/review-events.d.ts +1 -1
- package/dist/interactive/review-events.d.ts.map +1 -1
- package/dist/interactive/review-events.js +4 -2
- package/dist/interactive/review-events.js.map +1 -1
- package/dist/skills/live-generations.d.ts +16 -11
- package/dist/skills/live-generations.d.ts.map +1 -1
- package/dist/skills/live-generations.js +28 -14
- package/dist/skills/live-generations.js.map +1 -1
- package/dist/skills/store.d.ts +16 -0
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +18 -0
- package/dist/skills/store.js.map +1 -1
- package/dist/studio/assets/index-BKkB4En4.js +581 -0
- package/dist/studio/assets/index-CGjbTpLl.css +32 -0
- package/dist/studio/editors/wicked-page/editor.json +1 -1
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +275 -5
- package/dist/team/routes.d.ts +38 -0
- package/dist/team/routes.d.ts.map +1 -1
- package/endpoint-manifest.json +1 -1
- package/package.json +4 -4
- package/dist/studio/assets/index-D9cD_lY1.js +0 -580
- package/dist/studio/assets/index-DEBAWrq3.css +0 -32
|
@@ -146,5 +146,13 @@ export type ChatAdmission = {
|
|
|
146
146
|
* `council_eligible` / health are deliberately NOT consulted here — a seat benched in councils can
|
|
147
147
|
* still answer a chat, and saying otherwise would refuse a working seat.
|
|
148
148
|
*/
|
|
149
|
-
export declare function chatSeatAdmission(seat: StandingSeat, auth: SeatAuth, scoped: boolean
|
|
149
|
+
export declare function chatSeatAdmission(seat: StandingSeat, auth: SeatAuth, scoped: boolean,
|
|
150
|
+
/** `pool`: the warm chat pool (an ACP session held read-only — the structural rules below).
|
|
151
|
+
* `path` (ASK-C1/C2, DES-ASK-TEAM-CHAT-001 §4.2): an ask is a team RUN. The seat's standing
|
|
152
|
+
* (signed in, enabled) is the gate; the structural rule stays ONLY where the run itself cannot
|
|
153
|
+
* hold the repositories read-only — a scoped ask that is not bound to one repository (several
|
|
154
|
+
* repos, a project, everything): no worktree, no guard, no default sandbox (codex on #810 r9).
|
|
155
|
+
* `path-bound`: a single-repo ask — the run is bound (worktree snapshot + guard + mutation
|
|
156
|
+
* check), so every seat in standing is eligible, wrapped ones included. */
|
|
157
|
+
kind?: 'pool' | 'path' | 'path-bound'): ChatAdmission;
|
|
150
158
|
//# sourceMappingURL=seat-standing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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"}
|
|
@@ -203,14 +203,40 @@ export function seatStanding(seat, signedIn, authFailure = null, probeInput = un
|
|
|
203
203
|
* `council_eligible` / health are deliberately NOT consulted here — a seat benched in councils can
|
|
204
204
|
* still answer a chat, and saying otherwise would refuse a working seat.
|
|
205
205
|
*/
|
|
206
|
-
export function chatSeatAdmission(seat, auth, scoped
|
|
206
|
+
export function chatSeatAdmission(seat, auth, scoped,
|
|
207
|
+
/** `pool`: the warm chat pool (an ACP session held read-only — the structural rules below).
|
|
208
|
+
* `path` (ASK-C1/C2, DES-ASK-TEAM-CHAT-001 §4.2): an ask is a team RUN. The seat's standing
|
|
209
|
+
* (signed in, enabled) is the gate; the structural rule stays ONLY where the run itself cannot
|
|
210
|
+
* hold the repositories read-only — a scoped ask that is not bound to one repository (several
|
|
211
|
+
* repos, a project, everything): no worktree, no guard, no default sandbox (codex on #810 r9).
|
|
212
|
+
* `path-bound`: a single-repo ask — the run is bound (worktree snapshot + guard + mutation
|
|
213
|
+
* check), so every seat in standing is eligible, wrapped ones included. */
|
|
214
|
+
kind = 'pool') {
|
|
207
215
|
const reasons = [];
|
|
208
216
|
let source = 'scope';
|
|
209
217
|
if (!authUsable(auth)) {
|
|
210
218
|
reasons.push('signed out — it cannot take a turn until it is signed in from the System page');
|
|
211
219
|
source = 'auth';
|
|
212
220
|
}
|
|
221
|
+
if (seat.enabled_for_council === false) {
|
|
222
|
+
reasons.push('disabled for the council, so it takes no turn');
|
|
223
|
+
}
|
|
224
|
+
if (kind === 'path-bound' || (kind === 'path' && !scoped)) {
|
|
225
|
+
return reasons.length === 0 ? { ok: true } : { ok: false, reason: reasons.join('; '), source };
|
|
226
|
+
}
|
|
213
227
|
const acp = seat.acp ?? undefined;
|
|
228
|
+
if (kind === 'path') {
|
|
229
|
+
// A scoped ask the run cannot bind: the seat must hold itself read-only.
|
|
230
|
+
if (acp === undefined) {
|
|
231
|
+
reasons.push('it has no ACP adapter and this ask reads several repositories (or a project) the run cannot bind, ' +
|
|
232
|
+
'so nothing would hold them read-only for it — scope the ask to one repository to include it');
|
|
233
|
+
}
|
|
234
|
+
else if (acp.acp_input_governance !== true && acp.os_sandbox !== true) {
|
|
235
|
+
reasons.push('its ACP adapter asks no permissions and its record arms no OS sandbox, and this ask reads several ' +
|
|
236
|
+
'repositories (or a project) the run cannot bind — scope the ask to one repository to include it');
|
|
237
|
+
}
|
|
238
|
+
return reasons.length === 0 ? { ok: true } : { ok: false, reason: reasons.join('; '), source };
|
|
239
|
+
}
|
|
214
240
|
if (acp === undefined) {
|
|
215
241
|
// F-W1-003 = A (approved 2026-09-15): chat runs on ACP-adapter seats only, scoped AND
|
|
216
242
|
// unscoped. A seat with no ACP adapter is a WRAPPED seat — it does governed work in runs, but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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"}
|
package/dist/api/server.d.ts
CHANGED
|
@@ -217,6 +217,11 @@ export interface CreateServerOptions {
|
|
|
217
217
|
* `enabled` defaults to ON in the daemon and OFF under a test runner (VITEST /
|
|
218
218
|
* NODE_ENV=test), the seat-health-probe posture.
|
|
219
219
|
*/
|
|
220
|
+
/** The seats' standing (tests: a sign-in answer instead of the credential-file heuristic and
|
|
221
|
+
* the live auth-status probes, so admission is host-independent). */
|
|
222
|
+
seats?: {
|
|
223
|
+
signedIn?: (seatKey: string, workerRoot?: string) => boolean | null;
|
|
224
|
+
};
|
|
220
225
|
stallWatchdog?: {
|
|
221
226
|
enabled?: boolean;
|
|
222
227
|
/** Sweep cadence, ms (default 30 s; tests shorten it). */
|
|
@@ -278,11 +283,40 @@ export interface CreateServerOptions {
|
|
|
278
283
|
limits?: VerifyOptions;
|
|
279
284
|
};
|
|
280
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* Per-stage boot timings, ms (crew#741): where a slow boot's seconds went, instead of one
|
|
288
|
+
* `startupMs`. EXCLUSIVE stages that sum to the boot: `setup`, `skills`, `venv`, `routes`,
|
|
289
|
+
* `studio`, `listen` here; `wicked-crew serve` prepends `preflight` and `engine`. The key set is
|
|
290
|
+
* open — a harness reads the stages it knows.
|
|
291
|
+
*/
|
|
292
|
+
export type BootStages = Readonly<Record<string, number>>;
|
|
293
|
+
/**
|
|
294
|
+
* A lap clock for the boot: `lap(name)` closes the stage that ran since the previous lap (or since
|
|
295
|
+
* construction) and rounds it to whole ms; `set` records (or corrects) a stage measured elsewhere —
|
|
296
|
+
* a re-`set` key keeps its position. Stages are reported in the order they were first recorded.
|
|
297
|
+
*/
|
|
298
|
+
export declare class BootStageClock {
|
|
299
|
+
private readonly stages;
|
|
300
|
+
private mark;
|
|
301
|
+
lap(name: string): number;
|
|
302
|
+
set(name: string, ms: number): void;
|
|
303
|
+
snapshot(): BootStages;
|
|
304
|
+
/** One human line: `setup 12ms · skills 1203ms · venv 0ms · …` */
|
|
305
|
+
describe(): string;
|
|
306
|
+
}
|
|
307
|
+
declare module 'fastify' {
|
|
308
|
+
interface FastifyInstance {
|
|
309
|
+
/** crew#741 — the boot's stage clock; `startServer` adds `listen` and hands the snapshot back. */
|
|
310
|
+
bootStages?: BootStageClock;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
281
313
|
export declare function createServer(adapter: CoreAdapter, options?: CreateServerOptions): Promise<ReturnType<typeof Fastify>>;
|
|
282
314
|
export interface StartedServer {
|
|
283
315
|
app: ReturnType<typeof Fastify>;
|
|
284
316
|
port: number;
|
|
285
317
|
host: string;
|
|
318
|
+
/** crew#741: the boot's exclusive per-stage ms (`setup`, `skills`, `venv`, `routes`, `studio`, `listen`). */
|
|
319
|
+
stages: BootStages;
|
|
286
320
|
}
|
|
287
321
|
/** The URL a worker on this host reaches the daemon at: a wildcard bind is reached on loopback. */
|
|
288
322
|
export declare function brokerUrlFor(host: string, port: number): string;
|
package/dist/api/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAe9B,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAQ7E,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
|
package/dist/api/server.js
CHANGED
|
@@ -25,7 +25,7 @@ import { DeliveryDerivationCache } from './delivery-cache.js';
|
|
|
25
25
|
import { coreUnitId } from './evidence.js';
|
|
26
26
|
import { registerClient, broadcast } from '../events/bus.js';
|
|
27
27
|
import { TerminalHub, registerTerminalWs } from '../events/terminals.js';
|
|
28
|
-
import { INTERACTIVE_DRAFT_WORKFLOW_DEF, startInteractiveDraftSubscriber } from '../interactive/draft-events.js';
|
|
28
|
+
import { INTERACTIVE_DRAFT_WORKFLOW_DEF, startInteractiveDraftSubscriber, isAnotherProjectsDraftKey } from '../interactive/draft-events.js';
|
|
29
29
|
import { INTERACTIVE_EDIT_WORKFLOW_DEF, startInteractiveEditSubscriber } from '../interactive/edit-events.js';
|
|
30
30
|
import { putLearnedThemeViaBridge, startInteractiveThemeSubscriber } from '../interactive/theme-events.js';
|
|
31
31
|
import { authoringRunsFromLedgers, isAnotherProjectsReviewKey, readDocVersionViaBridge, startInteractiveReviewSubscriber } from '../interactive/review-events.js';
|
|
@@ -52,6 +52,8 @@ import { platformSecretStore } from '../mcp/secrets.js';
|
|
|
52
52
|
import { startProjectBus, MEMBERSHIP_ATTACHED, membershipAttachedKey } from '../projects/events.js';
|
|
53
53
|
import { startInteractiveWsRelay, registerInteractiveEventRoutes } from '../interactive/ws-relay.js';
|
|
54
54
|
import { startTeamWsRelay } from '../team/ws-relay.js';
|
|
55
|
+
import { AskPathIndex } from './ask-paths.js';
|
|
56
|
+
import { AskRelay } from './ask-relay.js';
|
|
55
57
|
import { MembershipIndex } from '../projects/membership-index.js';
|
|
56
58
|
import { writeRunEvidencePointer } from '../projects/charter.js';
|
|
57
59
|
import { engineBenchesUnclassifiedSeats, CoreAdapter } from '../core/adapter.js';
|
|
@@ -66,6 +68,7 @@ import { installEndpointManifestHook } from './endpoint-manifest.js';
|
|
|
66
68
|
import { WorkerStallWatchdog } from './stall-watchdog.js';
|
|
67
69
|
import { RunLivenessSampler } from './run-liveness.js';
|
|
68
70
|
import { resumeRunningCampaigns } from '../campaign/boot-resume.js';
|
|
71
|
+
import { resumeOrphanedRuns } from '../core/run-boot-resume.js';
|
|
69
72
|
import { StandingOrderStore } from '../standing-orders/store.js';
|
|
70
73
|
import { StandingOrderEvaluator } from '../standing-orders/evaluator.js';
|
|
71
74
|
import { registerStandingOrderRoutes } from '../standing-orders/routes.js';
|
|
@@ -106,7 +109,36 @@ const LOOPBACK_ORIGIN = /^http:\/\/(127\.0\.0\.1|localhost):\d+$/;
|
|
|
106
109
|
export function defaultStudioRoot() {
|
|
107
110
|
return fileURLToPath(new URL('../studio', import.meta.url));
|
|
108
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* A lap clock for the boot: `lap(name)` closes the stage that ran since the previous lap (or since
|
|
114
|
+
* construction) and rounds it to whole ms; `set` records (or corrects) a stage measured elsewhere —
|
|
115
|
+
* a re-`set` key keeps its position. Stages are reported in the order they were first recorded.
|
|
116
|
+
*/
|
|
117
|
+
export class BootStageClock {
|
|
118
|
+
stages = {};
|
|
119
|
+
mark = performance.now();
|
|
120
|
+
lap(name) {
|
|
121
|
+
const now = performance.now();
|
|
122
|
+
const ms = Math.max(0, Math.round(now - this.mark));
|
|
123
|
+
this.stages[name] = ms;
|
|
124
|
+
this.mark = now;
|
|
125
|
+
return ms;
|
|
126
|
+
}
|
|
127
|
+
set(name, ms) {
|
|
128
|
+
this.stages[name] = Math.max(0, Math.round(ms));
|
|
129
|
+
}
|
|
130
|
+
snapshot() {
|
|
131
|
+
return { ...this.stages };
|
|
132
|
+
}
|
|
133
|
+
/** One human line: `setup 12ms · skills 1203ms · venv 0ms · …` */
|
|
134
|
+
describe() {
|
|
135
|
+
return Object.entries(this.stages)
|
|
136
|
+
.map(([name, ms]) => `${name} ${ms}ms`)
|
|
137
|
+
.join(' · ');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
109
140
|
export async function createServer(adapter, options) {
|
|
141
|
+
const bootClock = new BootStageClock();
|
|
110
142
|
// The diagnostics error ring: a tee on the pino stream that keeps the last ~20 error-level
|
|
111
143
|
// lines in memory (crew has no log file of its own — stdout belongs to whoever launched the
|
|
112
144
|
// daemon), surfaced read-only on GET /diagnostics. Built before Fastify so the logger's
|
|
@@ -148,7 +180,10 @@ export async function createServer(adapter, options) {
|
|
|
148
180
|
// `runtime.rosterWithStanding`), the four interactive seams (`roster`), and the adapter's own
|
|
149
181
|
// launches (`setRosterProvider` → `seatsForWorkflow` / `wicked-crew start`). Read at call time,
|
|
150
182
|
// so a seat signed in from the System page is eligible on the very next launch.
|
|
151
|
-
const rosterWithStanding = rosterWithStandingFactory({
|
|
183
|
+
const rosterWithStanding = rosterWithStandingFactory({
|
|
184
|
+
seatHealth,
|
|
185
|
+
...(options?.seats?.signedIn !== undefined ? { signedIn: options.seats.signedIn } : {}),
|
|
186
|
+
});
|
|
152
187
|
// Runtime-guarded, not typed away: the integration suites drive `createServer` over PARTIAL fake
|
|
153
188
|
// adapters (cast to `CoreAdapter`) that never grew this method — the real adapter always has it.
|
|
154
189
|
if (typeof adapter.setRosterProvider === 'function') {
|
|
@@ -202,19 +237,26 @@ export async function createServer(adapter, options) {
|
|
|
202
237
|
// was refused — discovered at each run's first worker. Judged here, before any seam creates
|
|
203
238
|
// anything under those roots (`serve` asserts the same rule before the engine spawns).
|
|
204
239
|
assertWickedRootsOutsideStateHome(process.env, crewStateHome());
|
|
240
|
+
// crew#741: everything above (logger, settings, roots) is `setup`; the skills seam is its own
|
|
241
|
+
// stage, with the provisioner's time (`venv`) read from the store and carved OUT of it — `0`
|
|
242
|
+
// when the baseline env already carried its verified ready marker (`SkillsStore.ensureVenv`'s
|
|
243
|
+
// fast path), which is the acceptance that a boot on an unchanged baseline re-runs no `uv sync`.
|
|
244
|
+
bootClock.lap('setup');
|
|
205
245
|
let skillsRuntime;
|
|
246
|
+
let skillsStore;
|
|
206
247
|
if (options?.skills?.disabled !== true) {
|
|
207
248
|
const source = options?.skills?.source;
|
|
208
249
|
const skillsRoot = resolveSkillsRoot();
|
|
209
250
|
assertSkillsRootFenced(skillsRoot, { stateHome: crewStateHome() });
|
|
251
|
+
skillsStore = new SkillsStore({
|
|
252
|
+
root: skillsRoot,
|
|
253
|
+
registeredSkillRefs: () => registeredSkillRefs(adapter.listWorkflows()),
|
|
254
|
+
provisionVenv: options?.skills?.provisionVenv ?? uvSyncBaseline,
|
|
255
|
+
...(source !== undefined ? { source } : {}),
|
|
256
|
+
warn: (m) => app.log.warn(m),
|
|
257
|
+
});
|
|
210
258
|
skillsRuntime = new SkillsRuntime({
|
|
211
|
-
store:
|
|
212
|
-
root: skillsRoot,
|
|
213
|
-
registeredSkillRefs: () => registeredSkillRefs(adapter.listWorkflows()),
|
|
214
|
-
provisionVenv: options?.skills?.provisionVenv ?? uvSyncBaseline,
|
|
215
|
-
...(source !== undefined ? { source } : {}),
|
|
216
|
-
warn: (m) => app.log.warn(m),
|
|
217
|
-
}),
|
|
259
|
+
store: skillsStore,
|
|
218
260
|
log: (m) => app.log.warn(m),
|
|
219
261
|
});
|
|
220
262
|
// The base skill setting (crew#554 / wicked-core#468) is applied BEFORE the ladder runs, so
|
|
@@ -226,6 +268,12 @@ export async function createServer(adapter, options) {
|
|
|
226
268
|
skillsRuntime.configureBaseSkill(bootSettings);
|
|
227
269
|
await skillsRuntime.apply();
|
|
228
270
|
}
|
|
271
|
+
// Exclusive peers (codex on #846): `venv` is the provisioner path's time, `skills` the rest of
|
|
272
|
+
// the seam (seed, validate, hash, stage, flip) — the stages sum, never double-count.
|
|
273
|
+
const skillsMs = bootClock.lap('skills');
|
|
274
|
+
const venvMs = skillsStore?.venvStage().ms ?? 0;
|
|
275
|
+
bootClock.set('skills', skillsMs - venvMs);
|
|
276
|
+
bootClock.set('venv', venvMs);
|
|
229
277
|
// The state-home PREFLIGHT (wicked-core#411 / crew#497; F-RC1-011, F-RC2-020): an entry under the
|
|
230
278
|
// state home that core's fence registry cannot classify refuses EVERY worker launch — and until
|
|
231
279
|
// now the daemon booted green over it, the refusal surfacing at each run's first worker as a
|
|
@@ -270,6 +318,9 @@ export async function createServer(adapter, options) {
|
|
|
270
318
|
// `run.launched` entries that carry a `chatId`) and kept in sync by the event loop.
|
|
271
319
|
const chatRetained = new Map();
|
|
272
320
|
const runToChat = new Map();
|
|
321
|
+
// ASK-C1/C2: the daemon's record of each chat's ask path (which run answers which chat, the PA,
|
|
322
|
+
// the reviewer, the helpers) — written by the routes, read by the relay below. In-memory.
|
|
323
|
+
const askPaths = new AskPathIndex();
|
|
273
324
|
// Retry lineage (CREW-UX-3) + ad-hoc group attach (wicked-studio#27): both durable records
|
|
274
325
|
// live in the trail's `run.launched` entries, so ONE exhaustive scan feeds both indexes —
|
|
275
326
|
// boot stays at three full-file trail scans, not four (the crew#321 consolidation note).
|
|
@@ -515,7 +566,9 @@ export async function createServer(adapter, options) {
|
|
|
515
566
|
const docReviewsDir = () => reviewSub?.reviewsDir ?? join(options?.interactiveEditEvents?.editDir ?? join(crewStateDir, 'interactive-edits'), REVIEWS_DIRNAME);
|
|
516
567
|
const dropDocLedgerRows = (documentId, projectId) => {
|
|
517
568
|
// EP-C2: a review row names its project, so the same-named document of ANOTHER project keeps its rows.
|
|
518
|
-
const sweep = sweepDocLedgers(documentId, docLedgerSources(),
|
|
569
|
+
const sweep = sweepDocLedgers(documentId, docLedgerSources(),
|
|
570
|
+
// crew#809: a draft row names its project too.
|
|
571
|
+
(key) => isAnotherProjectsReviewKey(key, documentId, projectId) || isAnotherProjectsDraftKey(key, documentId, projectId));
|
|
519
572
|
// EP-C2: the document's recorded reviews go with it — a later document of the same name must
|
|
520
573
|
// not inherit them (the same ghost the ledger rows would be). Its own project's only: the
|
|
521
574
|
// review store is partitioned per project, like the docs roots.
|
|
@@ -576,9 +629,12 @@ export async function createServer(adapter, options) {
|
|
|
576
629
|
dbPath: teamBusDb,
|
|
577
630
|
projectOf: (runId) => membershipIndex.projectOf(runId),
|
|
578
631
|
// Standing orders (behaviour 10) read the same team rows: a finding can wake the operator.
|
|
632
|
+
// ASK-C2: the ask relay reads them too (path.started → the PA; step.completed → the
|
|
633
|
+
// reply's text source).
|
|
579
634
|
broadcast: (frame) => {
|
|
580
635
|
broadcast(frame);
|
|
581
636
|
void standingOrderEvaluator?.onTeamFrame(frame);
|
|
637
|
+
askRelay.onTeamRow(frame.event);
|
|
582
638
|
},
|
|
583
639
|
...(options?.teamWsRelay?.pollIntervalMs !== undefined
|
|
584
640
|
? { pollIntervalMs: options.teamWsRelay.pollIntervalMs }
|
|
@@ -935,6 +991,11 @@ export async function createServer(adapter, options) {
|
|
|
935
991
|
...(cursor?.cli !== undefined ? { cli: cursor.cli } : {}),
|
|
936
992
|
...(Array.isArray(v.session.clis) ? { seats: v.session.clis } : {}),
|
|
937
993
|
...(avoid.length > 0 ? { avoid } : {}),
|
|
994
|
+
// crew#833: the seats THIS RUN benched (`benched_seats`, engine ≥ wave 6) are never a
|
|
995
|
+
// failover target — the run already failed over away from them on the same error.
|
|
996
|
+
...(Array.isArray(v.session.benched_seats) && v.session.benched_seats.length > 0
|
|
997
|
+
? { benched: v.session.benched_seats.map((b) => ({ cli: b.cli, reason: b.reason })) }
|
|
998
|
+
: {}),
|
|
938
999
|
// crew #580 / #581: a tool cursor is notified about, never reassigned.
|
|
939
1000
|
...(cursor !== undefined ? { executor: cursor.executor } : {}),
|
|
940
1001
|
};
|
|
@@ -1019,6 +1080,30 @@ export async function createServer(adapter, options) {
|
|
|
1019
1080
|
// CoreEvent stream below; `POST /chats/:id/messages` refuses a send to a busy seat and the
|
|
1020
1081
|
// chat frames leave here stamped with the `turn_id` they answer.
|
|
1021
1082
|
const chatTurns = new ChatTurnIndex();
|
|
1083
|
+
// ASK-C2 (DES-ASK-TEAM-CHAT-001 §5.2): the ask relay — the answer unit's deltas as chatDelta, the
|
|
1084
|
+
// step.completed row's output as the chatReply, both fed back through the fold below so the turn
|
|
1085
|
+
// index stamps them and the transcript/recorder/citations/ws consumers are unchanged.
|
|
1086
|
+
const askRelay = new AskRelay({
|
|
1087
|
+
paths: askPaths,
|
|
1088
|
+
turns: chatTurns,
|
|
1089
|
+
workOutput: (unitId) => adapter.workOutput(unitId),
|
|
1090
|
+
units: async (runId) => {
|
|
1091
|
+
const view = (await adapter.sessionsDetail()).find((v) => v.session.id === runId);
|
|
1092
|
+
return (view?.units ?? []).map((u) => {
|
|
1093
|
+
const la = u.last_attempt;
|
|
1094
|
+
return {
|
|
1095
|
+
id: u.id,
|
|
1096
|
+
ord: u.ord,
|
|
1097
|
+
status: String(u.status),
|
|
1098
|
+
assigned_cli: u.assigned_cli ?? null,
|
|
1099
|
+
...(typeof la === 'number' ? { last_attempt: la } : {}),
|
|
1100
|
+
};
|
|
1101
|
+
});
|
|
1102
|
+
},
|
|
1103
|
+
fold: (frame) => onEngineEvent(frame),
|
|
1104
|
+
recorderReconcile: (chat, turnId, seats) => chatDecisionRecorder?.reconcile(chat, turnId, seats),
|
|
1105
|
+
log: (m) => app.log.warn(m),
|
|
1106
|
+
});
|
|
1022
1107
|
// Chat transcripts at rest (DES-L5, D-13): one JSONL per LIVE chat under `<state home>/chats/`,
|
|
1023
1108
|
// written from the stamped frames below, dropped with the chat on `chatClosed`, served on
|
|
1024
1109
|
// `GET /chats/:id.messages`.
|
|
@@ -1098,10 +1183,14 @@ export async function createServer(adapter, options) {
|
|
|
1098
1183
|
// prefill remains reproducible across a daemon restart (crew#619).
|
|
1099
1184
|
chatTranscripts.clearOrphaned(new Set(chatRetained.keys()));
|
|
1100
1185
|
}
|
|
1101
|
-
const
|
|
1186
|
+
const onEngineEvent = (event) => {
|
|
1102
1187
|
gateCache.ingest(event);
|
|
1103
1188
|
elicitationCache.ingest(event);
|
|
1104
1189
|
seatHealth.ingest(event);
|
|
1190
|
+
// ASK-C2: a path run's unit + terminal frames become the chat's frames (re-entering this fold
|
|
1191
|
+
// as chatDelta / chatReply, which the relay ignores — no recursion).
|
|
1192
|
+
if (typeof event.session === 'string')
|
|
1193
|
+
void askRelay.onCoreEvent(event);
|
|
1105
1194
|
if (event.type === 'chatClosed' && typeof event.chat === 'string') {
|
|
1106
1195
|
chatScopes.closed(event.chat);
|
|
1107
1196
|
// DC-S4b: whatever the chat's open turns gathered is recorded now — into the ledger and onto
|
|
@@ -1290,7 +1379,8 @@ export async function createServer(adapter, options) {
|
|
|
1290
1379
|
}
|
|
1291
1380
|
})();
|
|
1292
1381
|
}
|
|
1293
|
-
}
|
|
1382
|
+
};
|
|
1383
|
+
const offEvent = adapter.onEvent(onEngineEvent);
|
|
1294
1384
|
// Skills keystone (codex round 4): every launch the daemon hands the engine — run, resume, gate
|
|
1295
1385
|
// answer, campaign — opens a generation pin BEFORE the engine call, released only by the engine's
|
|
1296
1386
|
// `skillsSnapshotHanded` report or the terminal frame (live-generations.ts). Unregistered on
|
|
@@ -1469,6 +1559,35 @@ export async function createServer(adapter, options) {
|
|
|
1469
1559
|
// Routes that say something to the thread (a refused chat seat, F-2R2-007) emit through the
|
|
1470
1560
|
// SAME /ws fan-out the engine's frames take.
|
|
1471
1561
|
broadcast: (frame) => broadcast(frame),
|
|
1562
|
+
// ASK-C1/C2: the ask-path index the routes write and the relay reads.
|
|
1563
|
+
askPaths,
|
|
1564
|
+
// ASK-C1: DELETE /chats/:id on an ask path closes through the same fold an engine
|
|
1565
|
+
// `chatClosed` takes (scope slot, decisions, considerations, retention-aware transcript).
|
|
1566
|
+
closeChat: async (frame, runId, ticket) => {
|
|
1567
|
+
// End cancels the path's run: its retention hold goes first, so the fold drops the
|
|
1568
|
+
// transcript with the chat (a reused id starts empty — codex on #808 r3, 1).
|
|
1569
|
+
if (runId !== undefined && typeof frame.chat === 'string') {
|
|
1570
|
+
const retaining = chatRetained.get(frame.chat);
|
|
1571
|
+
retaining?.delete(runId);
|
|
1572
|
+
if (retaining !== undefined && retaining.size === 0)
|
|
1573
|
+
chatRetained.delete(frame.chat);
|
|
1574
|
+
runToChat.delete(runId);
|
|
1575
|
+
askRelay.forget(runId);
|
|
1576
|
+
}
|
|
1577
|
+
// The recorder settles the chat's open turns NOW — resolving the project while the index
|
|
1578
|
+
// still names this chat's (the id is parked `closing` until the fold below frees it), and
|
|
1579
|
+
// writing the transcript's decisions record before the file is dropped. A deferred close
|
|
1580
|
+
// could otherwise file the ended chat's words under a replacement's project and append
|
|
1581
|
+
// them to its transcript (codex on #808 r4, 1). The fold's own call then finds nothing.
|
|
1582
|
+
if (typeof frame.chat === 'string')
|
|
1583
|
+
await chatDecisionRecorder?.closed(frame.chat);
|
|
1584
|
+
// The id is held for this close alone (no timer, a second DELETE joined); the fold frees
|
|
1585
|
+
// it. Not held any more = settled elsewhere: nothing to fold (codex on #808 r5, 1+2).
|
|
1586
|
+
if (typeof frame.chat !== 'string' || !chatScopes.isHeld(frame.chat, ticket))
|
|
1587
|
+
return;
|
|
1588
|
+
chatScopes.closeHeld(frame.chat, ticket);
|
|
1589
|
+
onEngineEvent(frame);
|
|
1590
|
+
},
|
|
1472
1591
|
// crew#619: retain a chat's transcript for the lifetime of its promoted run.
|
|
1473
1592
|
linkChatRun,
|
|
1474
1593
|
// TR-W5a: the `watch.*` settings guard validates against the registry's entries.
|
|
@@ -1548,9 +1667,15 @@ export async function createServer(adapter, options) {
|
|
|
1548
1667
|
// crew#471: a campaign the previous daemon left `running` is crash-resumed by the engine (its
|
|
1549
1668
|
// node runs froze with that process) — asked once, at boot, never for a paused one.
|
|
1550
1669
|
void resumeRunningCampaigns(adapter, (m) => app.log.warn(m));
|
|
1670
|
+
// crew#830: a run the previous daemon left `executing` with no worker is marked `runOrphaned` by
|
|
1671
|
+
// the engine at bootstrap (core#124) but never moved — resume every run whose trail ends on that
|
|
1672
|
+
// frame, once, and audit it as `run.resumed {via: 'boot'}`; a live run (trail continues) is untouched.
|
|
1673
|
+
void resumeOrphanedRuns(adapter, audit, DAEMON_ACTOR, (m) => app.log.warn(m));
|
|
1551
1674
|
// The UI-emittable direction of the interactive seam. Registered unconditionally (a null relay
|
|
1552
1675
|
// answers 503, not 404) and BEFORE the static/SPA fallback below, like every other API route.
|
|
1553
1676
|
registerInteractiveEventRoutes(app, interactiveRelay);
|
|
1677
|
+
// crew#741: route registration + index hydration, from the skills seam to here, is `routes`.
|
|
1678
|
+
bootClock.lap('routes');
|
|
1554
1679
|
// Serve the bundled studio SPA same-origin (DES-STUDIO-SERVING-001 §3). The
|
|
1555
1680
|
// API routes, `/ws`, and terminal WS are registered ABOVE and keep winning:
|
|
1556
1681
|
// static uses `wildcard: false` (only serves files that physically exist),
|
|
@@ -1606,6 +1731,8 @@ export async function createServer(adapter, options) {
|
|
|
1606
1731
|
// Dev / headless run without a built bundle: degrade gracefully (§3.1).
|
|
1607
1732
|
app.log.warn(`studio bundle not found at ${studioRoot} — serving API + WS only (headless)`);
|
|
1608
1733
|
}
|
|
1734
|
+
bootClock.lap('studio');
|
|
1735
|
+
app.decorate('bootStages', bootClock);
|
|
1609
1736
|
return app;
|
|
1610
1737
|
}
|
|
1611
1738
|
/** The URL a worker on this host reaches the daemon at: a wildcard bind is reached on loopback. */
|
|
@@ -1616,14 +1743,16 @@ export function brokerUrlFor(host, port) {
|
|
|
1616
1743
|
export async function startServer(adapter, port = 7701, host = '127.0.0.1', options) {
|
|
1617
1744
|
const app = await createServer(adapter, options);
|
|
1618
1745
|
await app.listen({ port, host });
|
|
1746
|
+
const clock = app.bootStages ?? new BootStageClock();
|
|
1747
|
+
clock.lap('listen');
|
|
1619
1748
|
const addr = app.server.address();
|
|
1620
1749
|
const boundPort = typeof addr === 'object' && addr ? addr.port : port;
|
|
1621
1750
|
const boundHost = typeof addr === 'object' && addr ? addr.address : host;
|
|
1622
|
-
app.log.info(`wicked-crew daemon listening on ${boundHost}:${boundPort}`);
|
|
1751
|
+
app.log.info(`wicked-crew daemon listening on ${boundHost}:${boundPort} (boot: ${clock.describe()})`);
|
|
1623
1752
|
// DES-MCP-TOOLS-001 S1/S3: the in-process engine hands each governed worker this URL (with its
|
|
1624
1753
|
// `WICKED_MCP_TOKEN`) as `WICKED_CREW_URL`, so the garden shim reaches THIS daemon's broker. The
|
|
1625
1754
|
// engine reads the daemon's own env at every spawn; a daemon that never listened hands none.
|
|
1626
1755
|
process.env['WICKED_CREW_URL'] = brokerUrlFor(boundHost, boundPort);
|
|
1627
|
-
return { app, port: boundPort, host: boundHost };
|
|
1756
|
+
return { app, port: boundPort, host: boundHost, stages: clock.snapshot() };
|
|
1628
1757
|
}
|
|
1629
1758
|
//# sourceMappingURL=server.js.map
|