wicked-crew 0.7.39 → 0.7.45
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 +3 -0
- package/dist/api/audit.d.ts.map +1 -1
- package/dist/api/audit.js +2 -0
- package/dist/api/audit.js.map +1 -1
- package/dist/api/capture.d.ts +149 -0
- package/dist/api/capture.d.ts.map +1 -0
- package/dist/api/capture.js +330 -0
- package/dist/api/capture.js.map +1 -0
- package/dist/api/chat-citations.d.ts +174 -0
- package/dist/api/chat-citations.d.ts.map +1 -0
- package/dist/api/chat-citations.js +528 -0
- package/dist/api/chat-citations.js.map +1 -0
- package/dist/api/chat-scope.d.ts +37 -1
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +131 -7
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +20 -1
- package/dist/api/chat-transcripts.d.ts.map +1 -1
- package/dist/api/chat-transcripts.js +29 -0
- package/dist/api/chat-transcripts.js.map +1 -1
- package/dist/api/delivery-cache.d.ts +2 -2
- package/dist/api/delivery-freeze.d.ts +66 -0
- package/dist/api/delivery-freeze.d.ts.map +1 -0
- package/dist/api/delivery-freeze.js +104 -0
- package/dist/api/delivery-freeze.js.map +1 -0
- package/dist/api/delivery-index.d.ts +53 -9
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +115 -22
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/demo.d.ts +90 -0
- package/dist/api/demo.d.ts.map +1 -0
- package/dist/api/demo.js +492 -0
- package/dist/api/demo.js.map +1 -0
- package/dist/api/diagnostics.d.ts +64 -1
- package/dist/api/diagnostics.d.ts.map +1 -1
- package/dist/api/diagnostics.js +129 -1
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/api/eval-sample.d.ts +6 -6
- package/dist/api/governance-steering.d.ts +2 -2
- package/dist/api/mcp.d.ts +282 -0
- package/dist/api/mcp.d.ts.map +1 -0
- package/dist/api/mcp.js +521 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/plan-schema.d.ts +56 -0
- package/dist/api/plan-schema.d.ts.map +1 -0
- package/dist/api/plan-schema.js +26 -0
- package/dist/api/plan-schema.js.map +1 -0
- package/dist/api/roster-standing.d.ts +15 -2
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +55 -3
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +647 -59
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +906 -146
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-files.d.ts.map +1 -1
- package/dist/api/run-files.js +31 -2
- package/dist/api/run-files.js.map +1 -1
- package/dist/api/run-liveness.d.ts +41 -0
- package/dist/api/run-liveness.d.ts.map +1 -0
- package/dist/api/run-liveness.js +166 -0
- package/dist/api/run-liveness.js.map +1 -0
- package/dist/api/run-timing-index.d.ts +10 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +24 -0
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +20 -4
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-probe.d.ts +141 -0
- package/dist/api/seat-probe.d.ts.map +1 -0
- package/dist/api/seat-probe.js +257 -0
- package/dist/api/seat-probe.js.map +1 -0
- package/dist/api/seat-record.d.ts +40 -0
- package/dist/api/seat-record.d.ts.map +1 -0
- package/dist/api/seat-record.js +218 -0
- package/dist/api/seat-record.js.map +1 -0
- package/dist/api/seat-signin.d.ts.map +1 -1
- package/dist/api/seat-signin.js +3 -1
- package/dist/api/seat-signin.js.map +1 -1
- package/dist/api/seat-standing.d.ts +24 -4
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +50 -3
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/server.d.ts +34 -48
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +316 -116
- package/dist/api/server.js.map +1 -1
- package/dist/api/skills.d.ts +3 -1
- package/dist/api/skills.d.ts.map +1 -1
- package/dist/api/skills.js +7 -2
- package/dist/api/skills.js.map +1 -1
- package/dist/api/stall-watchdog.d.ts +34 -3
- package/dist/api/stall-watchdog.d.ts.map +1 -1
- package/dist/api/stall-watchdog.js +107 -8
- package/dist/api/stall-watchdog.js.map +1 -1
- package/dist/api/steering-landing.d.ts +6 -6
- package/dist/api/steering-landing.d.ts.map +1 -1
- package/dist/api/steering-landing.js +7 -9
- package/dist/api/steering-landing.js.map +1 -1
- package/dist/api/testing.d.ts +6 -4
- package/dist/api/testing.d.ts.map +1 -1
- package/dist/api/testing.js +82 -47
- package/dist/api/testing.js.map +1 -1
- package/dist/campaign/boot-resume.d.ts +34 -0
- package/dist/campaign/boot-resume.d.ts.map +1 -0
- package/dist/campaign/boot-resume.js +45 -0
- package/dist/campaign/boot-resume.js.map +1 -0
- package/dist/campaigns/rollup.d.ts +4 -1
- package/dist/campaigns/rollup.d.ts.map +1 -1
- package/dist/campaigns/rollup.js +6 -1
- package/dist/campaigns/rollup.js.map +1 -1
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/cli/bearer.d.ts +27 -1
- package/dist/cli/bearer.d.ts.map +1 -1
- package/dist/cli/bearer.js +62 -2
- package/dist/cli/bearer.js.map +1 -1
- package/dist/cli/governance.d.ts +11 -0
- package/dist/cli/governance.d.ts.map +1 -1
- package/dist/cli/governance.js +8 -2
- package/dist/cli/governance.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +140 -75
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.d.ts +11 -0
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +40 -9
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/service.d.ts +78 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +334 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/core/adapter.d.ts +247 -14
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +638 -161
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts +4 -1
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +15 -1
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/bus-notice.d.ts +27 -0
- package/dist/core/bus-notice.d.ts.map +1 -0
- package/dist/core/bus-notice.js +24 -0
- package/dist/core/bus-notice.js.map +1 -0
- package/dist/core/bus.d.ts +99 -0
- package/dist/core/bus.d.ts.map +1 -0
- package/dist/core/bus.js +176 -0
- package/dist/core/bus.js.map +1 -0
- package/dist/core/deliver-exclusions.d.ts +71 -0
- package/dist/core/deliver-exclusions.d.ts.map +1 -0
- package/dist/core/deliver-exclusions.js +110 -0
- package/dist/core/deliver-exclusions.js.map +1 -0
- package/dist/core/deliver-text.d.ts +61 -14
- package/dist/core/deliver-text.d.ts.map +1 -1
- package/dist/core/deliver-text.js +178 -30
- package/dist/core/deliver-text.js.map +1 -1
- package/dist/core/deliver-triage.d.ts +11 -2
- package/dist/core/deliver-triage.d.ts.map +1 -1
- package/dist/core/deliver-triage.js +19 -1
- package/dist/core/deliver-triage.js.map +1 -1
- package/dist/core/deliver.d.ts +161 -3
- package/dist/core/deliver.d.ts.map +1 -1
- package/dist/core/deliver.js +463 -25
- package/dist/core/deliver.js.map +1 -1
- package/dist/core/deliverable-floor.d.ts.map +1 -1
- package/dist/core/deliverable-floor.js +5 -7
- package/dist/core/deliverable-floor.js.map +1 -1
- package/dist/core/engine-bus.d.ts +40 -0
- package/dist/core/engine-bus.d.ts.map +1 -0
- package/dist/core/engine-bus.js +27 -0
- package/dist/core/engine-bus.js.map +1 -0
- package/dist/core/estate-mcp-client.d.ts +87 -5
- package/dist/core/estate-mcp-client.d.ts.map +1 -1
- package/dist/core/estate-mcp-client.js +90 -11
- package/dist/core/estate-mcp-client.js.map +1 -1
- package/dist/core/linked-issues.d.ts +46 -0
- package/dist/core/linked-issues.d.ts.map +1 -0
- package/dist/core/linked-issues.js +123 -0
- package/dist/core/linked-issues.js.map +1 -0
- package/dist/core/run-identity.d.ts +100 -0
- package/dist/core/run-identity.d.ts.map +1 -0
- package/dist/core/run-identity.js +178 -0
- package/dist/core/run-identity.js.map +1 -0
- package/dist/core/shutdown.d.ts +16 -0
- package/dist/core/shutdown.d.ts.map +1 -0
- package/dist/core/shutdown.js +39 -0
- package/dist/core/shutdown.js.map +1 -0
- package/dist/core/types.d.ts +15 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -1
- package/dist/interactive/bridge-pool.d.ts +67 -3
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +129 -13
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/bridge-root.d.ts +9 -0
- package/dist/interactive/bridge-root.d.ts.map +1 -1
- package/dist/interactive/bridge-root.js +11 -4
- package/dist/interactive/bridge-root.js.map +1 -1
- package/dist/interactive/chat-events.d.ts +14 -9
- package/dist/interactive/chat-events.d.ts.map +1 -1
- package/dist/interactive/chat-events.js +55 -57
- package/dist/interactive/chat-events.js.map +1 -1
- package/dist/interactive/council-outcome.d.ts +1 -0
- package/dist/interactive/council-outcome.d.ts.map +1 -1
- package/dist/interactive/council-outcome.js +33 -0
- package/dist/interactive/council-outcome.js.map +1 -1
- package/dist/interactive/draft-events.d.ts +36 -17
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +121 -92
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/draft-skill.d.ts +59 -0
- package/dist/interactive/draft-skill.d.ts.map +1 -1
- package/dist/interactive/draft-skill.js +233 -0
- package/dist/interactive/draft-skill.js.map +1 -1
- package/dist/interactive/edit-events.d.ts +1 -14
- package/dist/interactive/edit-events.d.ts.map +1 -1
- package/dist/interactive/edit-events.js +37 -70
- package/dist/interactive/edit-events.js.map +1 -1
- package/dist/interactive/proxy-routes.d.ts +2 -2
- package/dist/interactive/proxy-routes.d.ts.map +1 -1
- package/dist/interactive/proxy-routes.js +4 -13
- package/dist/interactive/proxy-routes.js.map +1 -1
- package/dist/interactive/ws-relay.d.ts +9 -10
- package/dist/interactive/ws-relay.d.ts.map +1 -1
- package/dist/interactive/ws-relay.js +23 -50
- package/dist/interactive/ws-relay.js.map +1 -1
- package/dist/mcp/broker.d.ts +88 -0
- package/dist/mcp/broker.d.ts.map +1 -0
- package/dist/mcp/broker.js +307 -0
- package/dist/mcp/broker.js.map +1 -0
- package/dist/mcp/call-records.d.ts +61 -0
- package/dist/mcp/call-records.d.ts.map +1 -0
- package/dist/mcp/call-records.js +135 -0
- package/dist/mcp/call-records.js.map +1 -0
- package/dist/mcp/classify.d.ts +45 -0
- package/dist/mcp/classify.d.ts.map +1 -0
- package/dist/mcp/classify.js +83 -0
- package/dist/mcp/classify.js.map +1 -0
- package/dist/mcp/discovery.d.ts +24 -0
- package/dist/mcp/discovery.d.ts.map +1 -0
- package/dist/mcp/discovery.js +78 -0
- package/dist/mcp/discovery.js.map +1 -0
- package/dist/mcp/invoke.d.ts +36 -0
- package/dist/mcp/invoke.d.ts.map +1 -0
- package/dist/mcp/invoke.js +80 -0
- package/dist/mcp/invoke.js.map +1 -0
- package/dist/mcp/policies.d.ts +110 -0
- package/dist/mcp/policies.d.ts.map +1 -0
- package/dist/mcp/policies.js +400 -0
- package/dist/mcp/policies.js.map +1 -0
- package/dist/mcp/probe.d.ts +66 -0
- package/dist/mcp/probe.d.ts.map +1 -0
- package/dist/mcp/probe.js +116 -0
- package/dist/mcp/probe.js.map +1 -0
- package/dist/mcp/redact.d.ts +34 -0
- package/dist/mcp/redact.d.ts.map +1 -0
- package/dist/mcp/redact.js +84 -0
- package/dist/mcp/redact.js.map +1 -0
- package/dist/mcp/registry-store.d.ts +69 -0
- package/dist/mcp/registry-store.d.ts.map +1 -0
- package/dist/mcp/registry-store.js +82 -0
- package/dist/mcp/registry-store.js.map +1 -0
- package/dist/mcp/registry.d.ts +147 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +509 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/rest.d.ts +111 -0
- package/dist/mcp/rest.d.ts.map +1 -0
- package/dist/mcp/rest.js +606 -0
- package/dist/mcp/rest.js.map +1 -0
- package/dist/mcp/secrets.d.ts +66 -0
- package/dist/mcp/secrets.d.ts.map +1 -0
- package/dist/mcp/secrets.js +180 -0
- package/dist/mcp/secrets.js.map +1 -0
- package/dist/mcp/tool-list.d.ts +25 -0
- package/dist/mcp/tool-list.d.ts.map +1 -0
- package/dist/mcp/tool-list.js +62 -0
- package/dist/mcp/tool-list.js.map +1 -0
- package/dist/mcp/upstream-error.d.ts +12 -0
- package/dist/mcp/upstream-error.d.ts.map +1 -0
- package/dist/mcp/upstream-error.js +14 -0
- package/dist/mcp/upstream-error.js.map +1 -0
- package/dist/mcp/usage.d.ts +31 -0
- package/dist/mcp/usage.d.ts.map +1 -0
- package/dist/mcp/usage.js +159 -0
- package/dist/mcp/usage.js.map +1 -0
- package/dist/presets/routes.d.ts +53 -0
- package/dist/presets/routes.d.ts.map +1 -0
- package/dist/presets/routes.js +115 -0
- package/dist/presets/routes.js.map +1 -0
- package/dist/projects/activity.d.ts +6 -18
- package/dist/projects/activity.d.ts.map +1 -1
- package/dist/projects/activity.js +17 -60
- package/dist/projects/activity.js.map +1 -1
- package/dist/projects/events.d.ts +6 -5
- package/dist/projects/events.d.ts.map +1 -1
- package/dist/projects/events.js +33 -58
- package/dist/projects/events.js.map +1 -1
- package/dist/projects/graph.d.ts +11 -0
- package/dist/projects/graph.d.ts.map +1 -1
- package/dist/projects/graph.js +12 -0
- package/dist/projects/graph.js.map +1 -1
- package/dist/projects/routes.d.ts.map +1 -1
- package/dist/projects/routes.js +19 -0
- package/dist/projects/routes.js.map +1 -1
- package/dist/projects/state-home-preflight.d.ts.map +1 -1
- package/dist/projects/state-home-preflight.js +7 -0
- package/dist/projects/state-home-preflight.js.map +1 -1
- package/dist/projects/state-home-registry.d.ts.map +1 -1
- package/dist/projects/state-home-registry.js +9 -1
- package/dist/projects/state-home-registry.js.map +1 -1
- package/dist/qe/acceptance.d.ts +28 -28
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +60 -61
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/qe/test-sets.d.ts +3 -5
- package/dist/qe/test-sets.d.ts.map +1 -1
- package/dist/qe/test-sets.js +5 -7
- package/dist/qe/test-sets.js.map +1 -1
- package/dist/skills/installed.d.ts +51 -0
- package/dist/skills/installed.d.ts.map +1 -0
- package/dist/skills/installed.js +46 -0
- package/dist/skills/installed.js.map +1 -0
- package/dist/skills/phase-skill-gaps.d.ts +108 -0
- package/dist/skills/phase-skill-gaps.d.ts.map +1 -0
- package/dist/skills/phase-skill-gaps.js +199 -0
- package/dist/skills/phase-skill-gaps.js.map +1 -0
- package/dist/skills/runtime.d.ts +1 -1
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +2 -1
- package/dist/skills/runtime.js.map +1 -1
- package/dist/standing-orders/evaluator.d.ts +113 -0
- package/dist/standing-orders/evaluator.d.ts.map +1 -0
- package/dist/standing-orders/evaluator.js +225 -0
- package/dist/standing-orders/evaluator.js.map +1 -0
- package/dist/standing-orders/history.d.ts +58 -0
- package/dist/standing-orders/history.d.ts.map +1 -0
- package/dist/standing-orders/history.js +117 -0
- package/dist/standing-orders/history.js.map +1 -0
- package/dist/standing-orders/parse.d.ts +19 -0
- package/dist/standing-orders/parse.d.ts.map +1 -0
- package/dist/standing-orders/parse.js +75 -0
- package/dist/standing-orders/parse.js.map +1 -0
- package/dist/standing-orders/routes.d.ts +180 -0
- package/dist/standing-orders/routes.d.ts.map +1 -0
- package/dist/standing-orders/routes.js +95 -0
- package/dist/standing-orders/routes.js.map +1 -0
- package/dist/standing-orders/store.d.ts +154 -0
- package/dist/standing-orders/store.d.ts.map +1 -0
- package/dist/standing-orders/store.js +189 -0
- package/dist/standing-orders/store.js.map +1 -0
- package/dist/studio/assets/index-CvV5qITf.css +32 -0
- package/dist/studio/assets/index-jCOy6Ns7.js +568 -0
- package/dist/studio/index.html +3 -3
- package/dist/studio/testid-inventory.json +3307 -897
- package/dist/team/key.d.ts +5 -0
- package/dist/team/key.d.ts.map +1 -0
- package/dist/team/key.js +21 -0
- package/dist/team/key.js.map +1 -0
- package/dist/team/routes.d.ts +196 -0
- package/dist/team/routes.d.ts.map +1 -0
- package/dist/team/routes.js +274 -0
- package/dist/team/routes.js.map +1 -0
- package/dist/team/ws-relay.d.ts +39 -0
- package/dist/team/ws-relay.d.ts.map +1 -0
- package/dist/team/ws-relay.js +63 -0
- package/dist/team/ws-relay.js.map +1 -0
- package/endpoint-manifest.json +502 -6
- package/package.json +6 -6
- package/dist/interactive/demo-events.d.ts +0 -367
- package/dist/interactive/demo-events.d.ts.map +0 -1
- package/dist/interactive/demo-events.js +0 -1293
- package/dist/interactive/demo-events.js.map +0 -1
- package/dist/qe/gate-events.d.ts +0 -113
- package/dist/qe/gate-events.d.ts.map +0 -1
- package/dist/qe/gate-events.js +0 -172
- package/dist/qe/gate-events.js.map +0 -1
- package/dist/studio/assets/index-BRDAN35i.js +0 -548
- package/dist/studio/assets/index-Drfcsy8b.css +0 -32
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The seat record: each seat's week, folded from the runs' durable event logs (studio's weekly
|
|
3
|
+
* 1:1 per agent). `GET /roster/record?days=7`.
|
|
4
|
+
*
|
|
5
|
+
* Nothing new is stored. The fold reads what the engine already records per run:
|
|
6
|
+
*
|
|
7
|
+
* - who ran a unit: `unitDistributed.cli`, moved by `unitReassigned.newCli`; a unit no frame
|
|
8
|
+
* names falls back to the unit row's `assigned_cli`;
|
|
9
|
+
* - units run: the distinct units a seat was dispatched on (`unitDispatched`) inside the window;
|
|
10
|
+
* - first pass: the unit's FIRST `gateEvaluated` in the window passed (`combined` and no `denial`);
|
|
11
|
+
* `gated` is how many units had a gate evaluation at all;
|
|
12
|
+
* - rework: a unit dispatched more than once (a retry or a send-back) or given a
|
|
13
|
+
* `unitReworkAmended`, counted against the seat that ran its first dispatch;
|
|
14
|
+
* - stalls: distinct units that went quiet (`workerStalled`, the engine's or the daemon
|
|
15
|
+
* watchdog's), against the seat running the unit then;
|
|
16
|
+
* - benched: runs whose `benched_seats` names the seat, with the reasons;
|
|
17
|
+
* - cost: the sum of `cliUsage.costUsd` where a price was known; `null` when none was.
|
|
18
|
+
*
|
|
19
|
+
* The window is by event time (`ts`, millis). A run that ended before the window opened is not
|
|
20
|
+
* read at all; the reads are capped at {@link SEAT_RECORD_RUN_CAP} runs, newest first, and the
|
|
21
|
+
* answer says when the cap cut.
|
|
22
|
+
*/
|
|
23
|
+
export const SEAT_RECORD_DEFAULT_DAYS = 7;
|
|
24
|
+
export const SEAT_RECORD_MAX_DAYS = 30;
|
|
25
|
+
export const SEAT_RECORD_RUN_CAP = 200;
|
|
26
|
+
const emptyPhase = () => ({ units: 0, gated: 0, firstPass: 0, rework: 0, stalls: 0 });
|
|
27
|
+
function emptySeat(cli) {
|
|
28
|
+
return { cli, units: 0, gated: 0, firstPass: 0, rework: 0, stalls: 0, benched: 0, benchReasons: {}, costUsd: null, costedUsage: 0, byPhase: {} };
|
|
29
|
+
}
|
|
30
|
+
const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : undefined);
|
|
31
|
+
const str = (v) => (typeof v === 'string' && v !== '' ? v : undefined);
|
|
32
|
+
/** Whether a run can have any event inside the window: it ended in it, or has not ended. */
|
|
33
|
+
export function runTouchesWindow(view, since) {
|
|
34
|
+
const endedSec = num(view.session.ended_at);
|
|
35
|
+
if (endedSec !== undefined)
|
|
36
|
+
return endedSec * 1000 >= since;
|
|
37
|
+
const finished = num(view.session.finished_at);
|
|
38
|
+
if (finished !== undefined)
|
|
39
|
+
return finished >= since;
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
/** Fold one run's events into the seat map. `since` is the window start, unix millis. */
|
|
43
|
+
export function foldRunIntoSeats(seats, view, events, since) {
|
|
44
|
+
const seat = (cli) => {
|
|
45
|
+
let s = seats.get(cli);
|
|
46
|
+
if (s === undefined) {
|
|
47
|
+
s = emptySeat(cli);
|
|
48
|
+
seats.set(cli, s);
|
|
49
|
+
}
|
|
50
|
+
return s;
|
|
51
|
+
};
|
|
52
|
+
const unitRow = new Map(view.units.map((u) => [u.ord, u]));
|
|
53
|
+
const phaseOf = (ord) => {
|
|
54
|
+
const u = unitRow.get(ord);
|
|
55
|
+
return str(u?.phase_ref) ?? str(u?.stage) ?? 'unit';
|
|
56
|
+
};
|
|
57
|
+
const phase = (s, ord) => {
|
|
58
|
+
const key = phaseOf(ord);
|
|
59
|
+
let p = s.byPhase[key];
|
|
60
|
+
if (p === undefined) {
|
|
61
|
+
p = emptyPhase();
|
|
62
|
+
s.byPhase[key] = p;
|
|
63
|
+
}
|
|
64
|
+
return p;
|
|
65
|
+
};
|
|
66
|
+
const owner = new Map();
|
|
67
|
+
const ownerOf = (ord) => owner.get(ord) ?? str(unitRow.get(ord)?.assigned_cli) ?? undefined;
|
|
68
|
+
const ranBy = new Map();
|
|
69
|
+
const firstBy = new Map();
|
|
70
|
+
const dispatches = new Map();
|
|
71
|
+
const amended = new Set();
|
|
72
|
+
const gatedOnce = new Set();
|
|
73
|
+
const stalled = new Set();
|
|
74
|
+
let touched = false;
|
|
75
|
+
const sorted = [...events].sort((a, b) => (a.ts - b.ts) || ((num(a.seq) ?? 0) - (num(b.seq) ?? 0)));
|
|
76
|
+
for (const raw of sorted) {
|
|
77
|
+
const e = raw;
|
|
78
|
+
const ord = num(e['ord']);
|
|
79
|
+
const inWindow = e.ts >= since;
|
|
80
|
+
if (inWindow)
|
|
81
|
+
touched = true;
|
|
82
|
+
// Ownership is tracked from the whole log (a unit distributed before the window may run in it).
|
|
83
|
+
if (e.type === 'unitDistributed' && ord !== undefined && str(e['cli']) !== undefined) {
|
|
84
|
+
owner.set(ord, e['cli']);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (e.type === 'unitReassigned' && ord !== undefined) {
|
|
88
|
+
const next = str(e['newCli']);
|
|
89
|
+
if (next !== undefined)
|
|
90
|
+
owner.set(ord, next);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (!inWindow || ord === undefined)
|
|
94
|
+
continue;
|
|
95
|
+
const cli = ownerOf(ord);
|
|
96
|
+
switch (e.type) {
|
|
97
|
+
case 'unitDispatched': {
|
|
98
|
+
if (cli === undefined)
|
|
99
|
+
break;
|
|
100
|
+
dispatches.set(ord, (dispatches.get(ord) ?? 0) + 1);
|
|
101
|
+
if (!firstBy.has(ord))
|
|
102
|
+
firstBy.set(ord, cli);
|
|
103
|
+
let set = ranBy.get(ord);
|
|
104
|
+
if (set === undefined) {
|
|
105
|
+
set = new Set();
|
|
106
|
+
ranBy.set(ord, set);
|
|
107
|
+
}
|
|
108
|
+
if (!set.has(cli)) {
|
|
109
|
+
set.add(cli);
|
|
110
|
+
const s = seat(cli);
|
|
111
|
+
s.units += 1;
|
|
112
|
+
phase(s, ord).units += 1;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case 'gateEvaluated': {
|
|
117
|
+
if (cli === undefined || gatedOnce.has(ord))
|
|
118
|
+
break;
|
|
119
|
+
gatedOnce.add(ord);
|
|
120
|
+
const s = seat(cli);
|
|
121
|
+
const p = phase(s, ord);
|
|
122
|
+
s.gated += 1;
|
|
123
|
+
p.gated += 1;
|
|
124
|
+
if (e['combined'] === true && (e['denial'] ?? null) === null) {
|
|
125
|
+
s.firstPass += 1;
|
|
126
|
+
p.firstPass += 1;
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case 'unitReworkAmended':
|
|
131
|
+
amended.add(ord);
|
|
132
|
+
break;
|
|
133
|
+
case 'workerStalled': {
|
|
134
|
+
if (cli === undefined)
|
|
135
|
+
break;
|
|
136
|
+
const key = `${cli}\u0000${ord}`;
|
|
137
|
+
if (stalled.has(key))
|
|
138
|
+
break;
|
|
139
|
+
stalled.add(key);
|
|
140
|
+
const s = seat(cli);
|
|
141
|
+
s.stalls += 1;
|
|
142
|
+
phase(s, ord).stalls += 1;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
case 'cliUsage': {
|
|
146
|
+
if (cli === undefined)
|
|
147
|
+
break;
|
|
148
|
+
const s = seat(cli);
|
|
149
|
+
const cost = num(e['costUsd']);
|
|
150
|
+
if (cost !== undefined) {
|
|
151
|
+
s.costUsd = (s.costUsd ?? 0) + cost;
|
|
152
|
+
s.costedUsage += 1;
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
default:
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Rework: a unit sent back or retried, against the seat that ran it first.
|
|
161
|
+
for (const [ord, first] of firstBy) {
|
|
162
|
+
if ((dispatches.get(ord) ?? 0) > 1 || amended.has(ord)) {
|
|
163
|
+
const s = seat(first);
|
|
164
|
+
s.rework += 1;
|
|
165
|
+
phase(s, ord).rework += 1;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Benched: the run's own record of the seats it never convened (no time on it, so a run counts
|
|
169
|
+
// only when it has an event inside the window).
|
|
170
|
+
if (touched) {
|
|
171
|
+
const benched = view.session.benched_seats ?? [];
|
|
172
|
+
const seen = new Set();
|
|
173
|
+
for (const b of benched) {
|
|
174
|
+
if (typeof b?.cli !== 'string' || seen.has(b.cli))
|
|
175
|
+
continue;
|
|
176
|
+
seen.add(b.cli);
|
|
177
|
+
const s = seat(b.cli);
|
|
178
|
+
s.benched += 1;
|
|
179
|
+
const reason = str(b.reason) ?? 'benched';
|
|
180
|
+
s.benchReasons[reason] = (s.benchReasons[reason] ?? 0) + 1;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/** Round a summed cost to cents' hundredths so float dust never reaches the wire. */
|
|
185
|
+
function tidy(s) {
|
|
186
|
+
return s.costUsd === null ? s : { ...s, costUsd: Math.round(s.costUsd * 10_000) / 10_000 };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* The whole read: pick the runs that can touch the window (newest first, capped), read each log,
|
|
190
|
+
* fold. `readEvents` answers `null` when the engine has no event-log binding — the caller turns
|
|
191
|
+
* that into a 503 (a missing binding is not an empty week).
|
|
192
|
+
*/
|
|
193
|
+
export async function seatRecord(views, readEvents, opts) {
|
|
194
|
+
const since = opts.now - opts.days * 86_400_000;
|
|
195
|
+
const candidates = views
|
|
196
|
+
.filter((v) => runTouchesWindow(v, since))
|
|
197
|
+
// Newest launch first; an undated run (no `run.launched` record) sorts LAST, so a pile of
|
|
198
|
+
// pre-field runs can never crowd a dated run out of the cap. Ties by id, for a stable read.
|
|
199
|
+
.sort((a, b) => ((num(b.session.created_at) ?? -Infinity) - (num(a.session.created_at) ?? -Infinity)) ||
|
|
200
|
+
a.session.id.localeCompare(b.session.id));
|
|
201
|
+
const read = candidates.slice(0, SEAT_RECORD_RUN_CAP);
|
|
202
|
+
const seats = new Map();
|
|
203
|
+
for (const v of read) {
|
|
204
|
+
const events = await readEvents(v.session.id);
|
|
205
|
+
if (events === null)
|
|
206
|
+
return null;
|
|
207
|
+
foldRunIntoSeats(seats, v, events, since);
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
days: opts.days,
|
|
211
|
+
since,
|
|
212
|
+
until: opts.now,
|
|
213
|
+
runsRead: read.length,
|
|
214
|
+
truncated: candidates.length > read.length,
|
|
215
|
+
seats: [...seats.values()].sort((a, b) => a.cli.localeCompare(b.cli)).map(tidy),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=seat-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-record.js","sourceRoot":"","sources":["../../src/api/seat-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-signin.d.ts","sourceRoot":"","sources":["../../src/api/seat-signin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seat-signin.d.ts","sourceRoot":"","sources":["../../src/api/seat-signin.ts"],"names":[],"mappings":"AA+CA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AASD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAiBvD;AAWD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,EACzB,EAAE,GAAE,aAAkB,GACrB,OAAO,GAAG,IAAI,CAkHhB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,GAAG,SAA6C,CAAC;AAEtF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,GAAE,MAAM,GAAG,SAA4B,GAC9C,IAAI,CAQN"}
|
package/dist/api/seat-signin.js
CHANGED
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
// a file can prove a login HAPPENED, but its absence proves nothing when the secret lives in
|
|
16
16
|
// the OS keychain — and `false` would send an operator to re-login a working seat.
|
|
17
17
|
// - `true` is "a credential artifact exists", NOT "the credential still works". An expired
|
|
18
|
-
// OAuth token reads `true` here
|
|
18
|
+
// OAuth token reads `true` here. For claude and codex the roster therefore asks the seat's own
|
|
19
|
+
// auth-status command (`seat-probe.ts`, crew#630) and reads this file only until it answers;
|
|
20
|
+
// for every seat, the seat's own refusal (seat-health.ts) overrides both.
|
|
19
21
|
//
|
|
20
22
|
// Per-seat rules (each documented at its branch). EVERY known seat is probed under its OWN root
|
|
21
23
|
// in the worker home (wicked-core#410, F-010: the engine now runs codex/pi/copilot/opencode seats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-signin.js","sourceRoot":"","sources":["../../src/api/seat-signin.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,iGAAiG;AACjG,2FAA2F;AAC3F,8FAA8F;AAC9F,4FAA4F;AAC5F,iCAAiC;AACjC,EAAE;AACF,kDAAkD;AAClD,EAAE;AACF,8FAA8F;AAC9F,wEAAwE;AACxE,4FAA4F;AAC5F,gGAAgG;AAChG,+FAA+F;AAC/F,qFAAqF;AACrF,2FAA2F;AAC3F,
|
|
1
|
+
{"version":3,"file":"seat-signin.js","sourceRoot":"","sources":["../../src/api/seat-signin.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
* and the one bench is the engine's per-run ballot ledger.
|
|
35
35
|
*/
|
|
36
36
|
import type { SeatAuthFailure } from './seat-health.js';
|
|
37
|
+
import type { SeatProbeReading } from './seat-probe.js';
|
|
37
38
|
/** The seat's auth state, read for what it MEANS for the seat's usability. */
|
|
38
39
|
export type SeatAuth = 'signed_in' | 'signed_out' | 'not_required' | 'unknown';
|
|
39
40
|
/**
|
|
@@ -77,17 +78,36 @@ export interface SeatStanding {
|
|
|
77
78
|
free_tier_source?: FreeTierSource;
|
|
78
79
|
/** Where `auth` came from (F-A45-006): `seat-stderr` = the seat ITSELF reported no credential
|
|
79
80
|
* (a council ballot, a worker failure or the ACP handshake said "No API key found" / 401 …),
|
|
80
|
-
* which overrides
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
* which overrides everything else; `probe` (crew#630) = the seat's own auth-status command
|
|
82
|
+
* answered (`seat-probe.ts`), which overrides the credential-file heuristic; absent = the
|
|
83
|
+
* file heuristic (`signed_in`) decided. */
|
|
84
|
+
auth_source?: 'seat-stderr' | 'probe';
|
|
85
|
+
/** Present with `auth_source: 'seat-stderr'`, and with `probe` when it read signed out: the
|
|
86
|
+
* seat's own words, bounded. */
|
|
83
87
|
auth_evidence?: string;
|
|
88
|
+
/** Present with `auth_source: 'probe'`: ISO-8601 of the probe the reading is from. */
|
|
89
|
+
probed_at?: string;
|
|
90
|
+
/** How far `auth` was VERIFIED (crew#645): `live` — the seat answered an authenticated request,
|
|
91
|
+
* or refused one for want of a credential (its own words decided); `status` — only the CLI's
|
|
92
|
+
* status command answered, which reads the stored login and not the session (an expired OAuth
|
|
93
|
+
* login still reads signed in there); `unverified` — nothing asked the seat (no status command,
|
|
94
|
+
* or its check has not answered or could not tell). */
|
|
95
|
+
login_check: LoginCheck;
|
|
96
|
+
/** Present unless `login_check` is `live`: why the login is not verified, in the operator's words
|
|
97
|
+
* (it starts "login unverified"). */
|
|
98
|
+
login_note?: string;
|
|
84
99
|
council_eligible: boolean;
|
|
85
100
|
/** Present when `council_eligible` is false: the one reason, in the operator's words. */
|
|
86
101
|
council_ineligible_reason?: string;
|
|
87
102
|
}
|
|
103
|
+
/** See {@link SeatStanding.login_check}. */
|
|
104
|
+
export type LoginCheck = 'live' | 'status' | 'unverified';
|
|
105
|
+
/** The probe input: its answer, `'pending'` for a probed seat whose check has not answered yet,
|
|
106
|
+
* `undefined` for a seat with no probe. */
|
|
107
|
+
export type ProbeInput = SeatProbeReading | 'pending' | undefined;
|
|
88
108
|
/** A seat whose `auth` lets it take a turn — the ONE predicate the roster and the chat share. */
|
|
89
109
|
export declare function authUsable(auth: SeatAuth): boolean;
|
|
90
|
-
export declare function seatStanding(seat: StandingSeat, signedIn: boolean | null, authFailure?: SeatAuthFailure | null): SeatStanding;
|
|
110
|
+
export declare function seatStanding(seat: StandingSeat, signedIn: boolean | null, authFailure?: SeatAuthFailure | null, probeInput?: ProbeInput): SeatStanding;
|
|
91
111
|
/** Why a seat was not seated (F-A45-011; `ChatSeatRefusal.source` on the wire): `auth` — signed
|
|
92
112
|
* out; `scope` — the scoped-chat admission rule;
|
|
93
113
|
* `budget` — the engine did not seat it (its warm-up timed out or it was dropped at dispatch; R5b —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEtD,8EAA8E;AAC9E,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE3D,CAAC;AAEH,gGAAgG;AAChG,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAE3D,4GAA4G;AAC5G,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,cAAc,CAAA;CAAE,CAgBhJ;AAED,sGAAsG;AACtG,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,GAAG,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,sGAAsG;IACtG,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC9C,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAClC
|
|
1
|
+
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,17 +71,28 @@ export function seatAuth(seat, signedIn) {
|
|
|
71
71
|
export function authUsable(auth) {
|
|
72
72
|
return auth !== 'signed_out';
|
|
73
73
|
}
|
|
74
|
-
export function seatStanding(seat, signedIn, authFailure = null) {
|
|
74
|
+
export function seatStanding(seat, signedIn, authFailure = null, probeInput = undefined) {
|
|
75
|
+
const probe = probeInput === 'pending' ? undefined : probeInput;
|
|
75
76
|
// F-A45-006: the seat's OWN report beats the file probe. The fresh rig's pi read `signed_in`
|
|
76
77
|
// off a present-but-empty `auth.json` while every ballot failed "No API key found"; when the seat
|
|
77
78
|
// itself says it has no credential, `auth` is `signed_out` — the free tier does not apply either
|
|
78
79
|
// (a seat that answers on a free tier does not say "No API key") — and the evidence rides along.
|
|
80
|
+
// crew#630: next, the seat's own auth-status command, when it answered; the file last.
|
|
79
81
|
const read = authFailure !== null
|
|
80
82
|
? { auth: 'signed_out', auth_source: 'seat-stderr', auth_evidence: authFailure.detail }
|
|
81
|
-
:
|
|
83
|
+
: probe !== undefined && probe.signedIn !== null
|
|
84
|
+
? {
|
|
85
|
+
auth: probe.signedIn ? 'signed_in' : 'signed_out',
|
|
86
|
+
auth_source: 'probe',
|
|
87
|
+
probed_at: probe.probedAt,
|
|
88
|
+
...(probe.signedIn ? {} : { auth_evidence: probe.detail }),
|
|
89
|
+
}
|
|
90
|
+
: seatAuth(seat, signedIn);
|
|
82
91
|
const auth = read.auth;
|
|
92
|
+
const login = loginCheck(seat.key, authFailure, probeInput);
|
|
83
93
|
const base = {
|
|
84
94
|
...read,
|
|
95
|
+
...login,
|
|
85
96
|
council_eligible: true,
|
|
86
97
|
};
|
|
87
98
|
if (seat.enabled_for_council === false) {
|
|
@@ -93,7 +104,20 @@ export function seatStanding(seat, signedIn, authFailure = null) {
|
|
|
93
104
|
council_eligible: false,
|
|
94
105
|
council_ineligible_reason: authFailure !== null
|
|
95
106
|
? `signed out — the seat itself reported no credential (${authFailure.source}: ${authFailure.detail}); sign it in from the System page`
|
|
96
|
-
:
|
|
107
|
+
: read.auth_source === 'probe'
|
|
108
|
+
? `signed out — the seat's own auth check says it cannot authenticate (${read.auth_evidence ?? 'not logged in'}); sign it in from the System page`
|
|
109
|
+
: 'signed out — a council would bench this seat on its first ballot; sign it in from the System page',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// crew#645: a seat that HAS a login check which has not answered is not routed to on the file's
|
|
113
|
+
// word — a launch waits for the check (`SeatProbe.ensureFresh`), and anything that routes before
|
|
114
|
+
// it answers (the seconds after a boot) leaves the seat out of the council. `auth` stays
|
|
115
|
+
// `unknown`, so a chat still offers it (a chat is not a council; its first refusal signs it out).
|
|
116
|
+
if (probeInput === 'pending' && authFailure === null) {
|
|
117
|
+
return {
|
|
118
|
+
...base,
|
|
119
|
+
council_eligible: false,
|
|
120
|
+
council_ineligible_reason: "login not verified yet — the seat's own auth check is still running; a launch waits for it, so launch again in a few seconds",
|
|
97
121
|
};
|
|
98
122
|
}
|
|
99
123
|
// (R5 / R5b, DES-L3 PR-3D) No `inactive` arm and no crew council bench any more: `health.status`
|
|
@@ -135,4 +159,27 @@ export function chatSeatAdmission(seat, auth, scoped) {
|
|
|
135
159
|
}
|
|
136
160
|
return reasons.length === 0 ? { ok: true } : { ok: false, reason: reasons.join('; '), source };
|
|
137
161
|
}
|
|
162
|
+
/** How far the seat's login was verified, and why not further (crew#645). */
|
|
163
|
+
function loginCheck(key, authFailure, probe) {
|
|
164
|
+
if (authFailure !== null)
|
|
165
|
+
return { login_check: 'live' };
|
|
166
|
+
if (probe === 'pending') {
|
|
167
|
+
return { login_check: 'unverified', login_note: "login unverified — the seat's own auth check has not answered yet" };
|
|
168
|
+
}
|
|
169
|
+
if (probe === undefined) {
|
|
170
|
+
return {
|
|
171
|
+
login_check: 'unverified',
|
|
172
|
+
login_note: `login unverified — nothing asked ${key} whether its login works (no auth-status check), so its sign-in is read from its credential file; its first refused turn signs it out`,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
if (probe.signedIn === null) {
|
|
176
|
+
return { login_check: 'unverified', login_note: `login unverified — the seat's own auth check could not tell (${probe.detail})` };
|
|
177
|
+
}
|
|
178
|
+
if (probe.check === 'live')
|
|
179
|
+
return { login_check: 'live' };
|
|
180
|
+
return {
|
|
181
|
+
login_check: 'status',
|
|
182
|
+
login_note: `login unverified — only the CLI's status command answered, and it reads the stored login, not the session (${probe.detail})`,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
138
185
|
//# sourceMappingURL=seat-standing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;
|
|
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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Fastify from 'fastify';
|
|
2
2
|
import { type AuthOptions } from './auth.js';
|
|
3
|
+
import { type ChatCitationDeps, type VerifyOptions } from './chat-citations.js';
|
|
3
4
|
import { CoreAdapter } from '../core/adapter.js';
|
|
4
5
|
import type { PluginSource } from '../skills/plugin-source.js';
|
|
5
6
|
import { type VenvProvisioner } from '../skills/venv.js';
|
|
@@ -14,19 +15,6 @@ export declare function defaultStudioRoot(): string;
|
|
|
14
15
|
export interface CreateServerOptions {
|
|
15
16
|
/** Override the studio asset root (tests point this at a temp fixture dir). */
|
|
16
17
|
studioRoot?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Opt-in QE gate-event consumption over wicked-bus (Phase 6a). When enabled,
|
|
19
|
-
* a durable subscriber folds `wicked.qe.gate.*` / `wicked.qe.deploy.completed`
|
|
20
|
-
* into the acceptance route's freshness cache; when absent (the default),
|
|
21
|
-
* the route's lazy ledger read stands alone — same answers, read on demand.
|
|
22
|
-
*/
|
|
23
|
-
qeGateEvents?: {
|
|
24
|
-
enabled: boolean;
|
|
25
|
-
/** Bus db path; omit for wicked-bus's own default resolution. */
|
|
26
|
-
dbPath?: string;
|
|
27
|
-
/** Poll cadence, ms (tests shorten it). */
|
|
28
|
-
pollIntervalMs?: number;
|
|
29
|
-
};
|
|
30
18
|
/**
|
|
31
19
|
* Opt-in governed answering of wicked-interactive first-draft generation (task #86 spike,
|
|
32
20
|
* Phase 7c). When enabled, a durable subscriber answers `wicked.interactive.doc.created`
|
|
@@ -36,7 +24,7 @@ export interface CreateServerOptions {
|
|
|
36
24
|
*/
|
|
37
25
|
interactiveDraftEvents?: {
|
|
38
26
|
enabled: boolean;
|
|
39
|
-
/**
|
|
27
|
+
/** The bus db; omit for the one the adapter handed its engine (`busDbPath`, core/bus.ts). */
|
|
40
28
|
dbPath?: string;
|
|
41
29
|
/** Poll cadence, ms (tests shorten it). */
|
|
42
30
|
pollIntervalMs?: number;
|
|
@@ -63,7 +51,7 @@ export interface CreateServerOptions {
|
|
|
63
51
|
*/
|
|
64
52
|
interactiveEditEvents?: {
|
|
65
53
|
enabled: boolean;
|
|
66
|
-
/**
|
|
54
|
+
/** The bus db; omit for the one the adapter handed its engine (`busDbPath`, core/bus.ts). */
|
|
67
55
|
dbPath?: string;
|
|
68
56
|
/** Poll cadence, ms (tests shorten it). */
|
|
69
57
|
pollIntervalMs?: number;
|
|
@@ -77,36 +65,7 @@ export interface CreateServerOptions {
|
|
|
77
65
|
/** Seat roster override (JSON array); omit for the production council roster. */
|
|
78
66
|
clisJson?: string;
|
|
79
67
|
/** Docs-root resolver override (tests); default = per-project `interactiveRoot` setting.
|
|
80
|
-
* Used ONLY as the demo-kind gate
|
|
81
|
-
* demo seam. */
|
|
82
|
-
resolveDocsRoot?: (projectId: string | undefined) => string;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Opt-in governed answering of wicked-interactive DEMO docs (CREW-UX-9 — video generation's
|
|
86
|
-
* missing brain, the retired assist agent's Step 8). When enabled, a durable subscriber
|
|
87
|
-
* answers `wicked.interactive.doc.created` (kind:demo) with a governed `interactive-demo`
|
|
88
|
-
* run that authors `demo.spec.mjs`, installs it into the doc workspace, and ends in
|
|
89
|
-
* `wicked.interactive.demo.requested` — the model-free service then records the video
|
|
90
|
-
* (Playwright + ffmpeg) and lands the storyboard version itself. Step feedback on a demo doc
|
|
91
|
-
* (`feedback.processed`, manifest kind demo) is answered by RE-authoring the spec and
|
|
92
|
-
* re-emitting demo.requested (assist SKILL.md Step 8c). When absent (the default), demo docs
|
|
93
|
-
* keep their "Learning …" placeholder — the pre-CREW-UX-9 state.
|
|
94
|
-
*/
|
|
95
|
-
interactiveDemoEvents?: {
|
|
96
|
-
enabled: boolean;
|
|
97
|
-
/** Bus db path; omit for wicked-bus's own default resolution (honors WICKED_BUS_DATA_DIR). */
|
|
98
|
-
dbPath?: string;
|
|
99
|
-
/** Poll cadence, ms (tests shorten it). */
|
|
100
|
-
pollIntervalMs?: number;
|
|
101
|
-
/** Heartbeat narration cadence, ms (default 15000). */
|
|
102
|
-
heartbeatMs?: number;
|
|
103
|
-
/** Durable replay-dedup ledger path (default ~/.wicked-crew/interactive-demo-ledger.json). */
|
|
104
|
-
ledgerPath?: string;
|
|
105
|
-
/** Where governed workers write specs (default ~/.wicked-crew/interactive-demos). */
|
|
106
|
-
demoDir?: string;
|
|
107
|
-
/** Seat roster override (JSON array); omit for the production council roster. */
|
|
108
|
-
clisJson?: string;
|
|
109
|
-
/** Docs-root resolver override (tests); default = per-project `interactiveRoot` setting. */
|
|
68
|
+
* Used ONLY as the demo-kind gate — a demo doc's step feedback is declined honestly. */
|
|
110
69
|
resolveDocsRoot?: (projectId: string | undefined) => string;
|
|
111
70
|
};
|
|
112
71
|
/**
|
|
@@ -121,7 +80,7 @@ export interface CreateServerOptions {
|
|
|
121
80
|
*/
|
|
122
81
|
interactiveChatEvents?: {
|
|
123
82
|
enabled: boolean;
|
|
124
|
-
/**
|
|
83
|
+
/** The bus db; omit for the one the adapter handed its engine (`busDbPath`, core/bus.ts). */
|
|
125
84
|
dbPath?: string;
|
|
126
85
|
/** Poll cadence, ms (tests shorten it). */
|
|
127
86
|
pollIntervalMs?: number;
|
|
@@ -148,7 +107,7 @@ export interface CreateServerOptions {
|
|
|
148
107
|
*/
|
|
149
108
|
projectEvents?: {
|
|
150
109
|
disabled?: boolean;
|
|
151
|
-
/**
|
|
110
|
+
/** The bus db; omit for the one the adapter handed its engine (`busDbPath`, core/bus.ts). */
|
|
152
111
|
dbPath?: string;
|
|
153
112
|
/** Poll cadence for the /ws activity bridge, ms (tests shorten it). */
|
|
154
113
|
pollIntervalMs?: number;
|
|
@@ -168,9 +127,18 @@ export interface CreateServerOptions {
|
|
|
168
127
|
* wicked.interactive.** bus event is bridged onto the /ws stream as an `interactiveEvent`
|
|
169
128
|
* frame so the studio needs exactly ONE socket. `disabled: true` turns it off (tests).
|
|
170
129
|
*/
|
|
130
|
+
/**
|
|
131
|
+
* DES-TEAMING-002 §4.5 (T8) — the team-row → `/ws` relay (`teamEvent` frames). Armed
|
|
132
|
+
* when the adapter hands the engine a bus (`busDbPath`); `disabled: true` turns it off.
|
|
133
|
+
*/
|
|
134
|
+
teamWsRelay?: {
|
|
135
|
+
disabled?: boolean;
|
|
136
|
+
/** Poll cadence, ms (tests shorten it). */
|
|
137
|
+
pollIntervalMs?: number;
|
|
138
|
+
};
|
|
171
139
|
interactiveWsRelay?: {
|
|
172
140
|
disabled?: boolean;
|
|
173
|
-
/**
|
|
141
|
+
/** The bus db; omit for the one the adapter handed its engine (`busDbPath`, core/bus.ts). */
|
|
174
142
|
dbPath?: string;
|
|
175
143
|
/** Poll cadence, ms (tests shorten it). */
|
|
176
144
|
pollIntervalMs?: number;
|
|
@@ -219,6 +187,9 @@ export interface CreateServerOptions {
|
|
|
219
187
|
escalateAction?: 'reassign' | 'notify';
|
|
220
188
|
/** Per-run automatic-reassign budget override — bypasses the settings read (tests). */
|
|
221
189
|
maxEscalations?: number;
|
|
190
|
+
/** Process-liveness override (crew#629): default = the daemon's own process tree
|
|
191
|
+
* (`RunLivenessSampler`); tests pass a stub or `null` (frame-only clock). */
|
|
192
|
+
busy?: ((runIds: string[]) => Promise<ReadonlyMap<string, string>>) | null;
|
|
222
193
|
};
|
|
223
194
|
/**
|
|
224
195
|
* The background delivery-derivation cache's sweep (GET /runs p99): every `sweepIntervalMs`
|
|
@@ -251,6 +222,19 @@ export interface CreateServerOptions {
|
|
|
251
222
|
source?: () => PluginSource | null;
|
|
252
223
|
provisionVenv?: VenvProvisioner;
|
|
253
224
|
};
|
|
225
|
+
/**
|
|
226
|
+
* Chat citation verification (crew#561). DEFAULT-ON: every terminal `chatReply` of a chat with
|
|
227
|
+
* read roots has its cited paths, `path:line` / `path:symbol` refs and commit SHAs checked
|
|
228
|
+
* against those roots, and the verdicts ride `/ws` as one `chatCitations` frame. The pass runs
|
|
229
|
+
* AFTER the reply is broadcast, so it never delays an answer, and it is bounded (see
|
|
230
|
+
* `chat-citations.ts`). `disabled: true` turns it off; `deps` / `limits` let a test drive it
|
|
231
|
+
* without a repo, a git or the default budget.
|
|
232
|
+
*/
|
|
233
|
+
chatCitations?: {
|
|
234
|
+
disabled?: boolean;
|
|
235
|
+
deps?: ChatCitationDeps;
|
|
236
|
+
limits?: VerifyOptions;
|
|
237
|
+
};
|
|
254
238
|
}
|
|
255
239
|
export declare function createServer(adapter: CoreAdapter, options?: CreateServerOptions): Promise<ReturnType<typeof Fastify>>;
|
|
256
240
|
export interface StartedServer {
|
|
@@ -258,5 +242,7 @@ export interface StartedServer {
|
|
|
258
242
|
port: number;
|
|
259
243
|
host: string;
|
|
260
244
|
}
|
|
245
|
+
/** The URL a worker on this host reaches the daemon at: a wildcard bind is reached on loopback. */
|
|
246
|
+
export declare function brokerUrlFor(host: string, port: number): string;
|
|
261
247
|
export declare function startServer(adapter: CoreAdapter, port?: number, host?: string, options?: CreateServerOptions): Promise<StartedServer>;
|
|
262
248
|
//# sourceMappingURL=server.d.ts.map
|
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;AAW9B,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
|