wicked-crew 0.7.34 → 0.7.36
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/chat-scope.d.ts +29 -1
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +67 -12
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +60 -0
- package/dist/api/chat-transcripts.d.ts.map +1 -0
- package/dist/api/chat-transcripts.js +139 -0
- package/dist/api/chat-transcripts.js.map +1 -0
- package/dist/api/chat-turns.d.ts +43 -4
- package/dist/api/chat-turns.d.ts.map +1 -1
- package/dist/api/chat-turns.js +73 -6
- package/dist/api/chat-turns.js.map +1 -1
- package/dist/api/delivery-cache.d.ts +23 -6
- package/dist/api/delivery-cache.d.ts.map +1 -1
- package/dist/api/delivery-cache.js +27 -17
- package/dist/api/delivery-cache.js.map +1 -1
- package/dist/api/delivery-index.d.ts +45 -3
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +79 -4
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/requirements.d.ts +3 -5
- package/dist/api/requirements.d.ts.map +1 -1
- package/dist/api/requirements.js +30 -146
- package/dist/api/requirements.js.map +1 -1
- package/dist/api/retry-index.d.ts +14 -0
- package/dist/api/retry-index.d.ts.map +1 -1
- package/dist/api/retry-index.js +29 -0
- package/dist/api/retry-index.js.map +1 -1
- package/dist/api/roster-standing.d.ts +4 -4
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +24 -12
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +142 -10
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +292 -44
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +22 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +34 -0
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-health.d.ts +2 -46
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +28 -111
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-standing.d.ts +9 -8
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +22 -32
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +114 -12
- package/dist/api/server.js.map +1 -1
- package/dist/api/skills.d.ts +2 -2
- package/dist/api/skills.d.ts.map +1 -1
- package/dist/api/skills.js +5 -2
- package/dist/api/skills.js.map +1 -1
- package/dist/api/stall-frame-index.d.ts +68 -0
- package/dist/api/stall-frame-index.d.ts.map +1 -0
- package/dist/api/stall-frame-index.js +106 -0
- package/dist/api/stall-frame-index.js.map +1 -0
- package/dist/api/stall-watchdog.d.ts +22 -2
- package/dist/api/stall-watchdog.d.ts.map +1 -1
- package/dist/api/stall-watchdog.js +41 -11
- package/dist/api/stall-watchdog.js.map +1 -1
- package/dist/campaigns/plan.d.ts +12 -2
- package/dist/campaigns/plan.d.ts.map +1 -1
- package/dist/campaigns/plan.js +3 -0
- package/dist/campaigns/plan.js.map +1 -1
- package/dist/campaigns/rollup.d.ts +5 -0
- package/dist/campaigns/rollup.d.ts.map +1 -1
- package/dist/campaigns/rollup.js +3 -2
- package/dist/campaigns/rollup.js.map +1 -1
- package/dist/campaigns/routes.d.ts +5 -2
- package/dist/campaigns/routes.d.ts.map +1 -1
- package/dist/campaigns/routes.js +13 -3
- package/dist/campaigns/routes.js.map +1 -1
- package/dist/cli/index.js +137 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/port.d.ts +19 -0
- package/dist/cli/port.d.ts.map +1 -0
- package/dist/cli/port.js +39 -0
- package/dist/cli/port.js.map +1 -0
- package/dist/core/adapter.d.ts +68 -2
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +176 -23
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts +57 -1
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +143 -21
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/cursor.d.ts +7 -0
- package/dist/core/cursor.d.ts.map +1 -1
- package/dist/core/cursor.js +7 -1
- package/dist/core/cursor.js.map +1 -1
- package/dist/core/deliver-text.d.ts +35 -2
- package/dist/core/deliver-text.d.ts.map +1 -1
- package/dist/core/deliver-text.js +127 -17
- package/dist/core/deliver-text.js.map +1 -1
- package/dist/core/deliver-triage.d.ts.map +1 -1
- package/dist/core/deliver-triage.js +5 -2
- package/dist/core/deliver-triage.js.map +1 -1
- package/dist/core/deliver.d.ts +76 -2
- package/dist/core/deliver.d.ts.map +1 -1
- package/dist/core/deliver.js +209 -16
- package/dist/core/deliver.js.map +1 -1
- package/dist/core/engine-roster.d.ts +4 -3
- package/dist/core/engine-roster.d.ts.map +1 -1
- package/dist/core/engine-roster.js +10 -14
- package/dist/core/engine-roster.js.map +1 -1
- package/dist/core/types.d.ts +30 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +6 -4
- package/dist/core/types.js.map +1 -1
- package/dist/core/versions.d.ts +17 -0
- package/dist/core/versions.d.ts.map +1 -0
- package/dist/core/versions.js +35 -0
- package/dist/core/versions.js.map +1 -0
- package/dist/interactive/bridge-pool.d.ts +66 -14
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +130 -17
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/bridge-root.d.ts +47 -16
- package/dist/interactive/bridge-root.d.ts.map +1 -1
- package/dist/interactive/bridge-root.js +102 -31
- package/dist/interactive/bridge-root.js.map +1 -1
- package/dist/interactive/doc-delete-routes.d.ts +3 -1
- package/dist/interactive/doc-delete-routes.d.ts.map +1 -1
- package/dist/interactive/doc-delete-routes.js.map +1 -1
- package/dist/interactive/doc-list-routes.d.ts +3 -1
- package/dist/interactive/doc-list-routes.d.ts.map +1 -1
- package/dist/interactive/doc-list-routes.js.map +1 -1
- package/dist/interactive/docs-index.d.ts +3 -1
- package/dist/interactive/docs-index.d.ts.map +1 -1
- package/dist/interactive/docs-index.js +1 -1
- package/dist/interactive/docs-index.js.map +1 -1
- package/dist/interactive/project-root.d.ts +8 -2
- package/dist/interactive/project-root.d.ts.map +1 -1
- package/dist/interactive/project-root.js +1 -1
- package/dist/interactive/project-root.js.map +1 -1
- package/dist/interactive/proxy-routes.d.ts +3 -1
- package/dist/interactive/proxy-routes.d.ts.map +1 -1
- package/dist/interactive/proxy-routes.js.map +1 -1
- package/dist/projects/graph.d.ts +4 -0
- package/dist/projects/graph.d.ts.map +1 -1
- package/dist/projects/graph.js +4 -2
- package/dist/projects/graph.js.map +1 -1
- package/dist/projects/routes.d.ts +2 -2
- package/dist/projects/state-home-preflight.d.ts +30 -7
- package/dist/projects/state-home-preflight.d.ts.map +1 -1
- package/dist/projects/state-home-preflight.js +59 -16
- 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 +2 -0
- package/dist/projects/state-home-registry.js.map +1 -1
- package/dist/qe/acceptance.d.ts +9 -0
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +16 -1
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/qe/author-workflow.d.ts.map +1 -1
- package/dist/qe/author-workflow.js +2 -1
- package/dist/qe/author-workflow.js.map +1 -1
- package/dist/skills/base-skill.d.ts +32 -10
- package/dist/skills/base-skill.d.ts.map +1 -1
- package/dist/skills/base-skill.js +36 -27
- package/dist/skills/base-skill.js.map +1 -1
- package/dist/skills/guards.d.ts.map +1 -1
- package/dist/skills/guards.js +3 -0
- package/dist/skills/guards.js.map +1 -1
- package/dist/skills/runtime.d.ts +9 -5
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +11 -7
- package/dist/skills/runtime.js.map +1 -1
- package/dist/skills/store.d.ts +30 -0
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +159 -3
- package/dist/skills/store.js.map +1 -1
- package/dist/skills/tree.d.ts +12 -0
- package/dist/skills/tree.d.ts.map +1 -1
- package/dist/skills/tree.js +26 -0
- package/dist/skills/tree.js.map +1 -1
- package/dist/studio/assets/index-Dk98qXKv.js +546 -0
- package/dist/studio/index.html +1 -1
- package/dist/studio/testid-inventory.json +89 -5
- package/endpoint-manifest.json +13 -1
- package/package.json +4 -4
- package/dist/studio/assets/index-DhojBZ1T.js +0 -544
|
@@ -18,6 +18,8 @@ import type { AuditLog } from './audit.js';
|
|
|
18
18
|
import type { Actor, AuditEntry } from '../core/types.js';
|
|
19
19
|
export declare class RunTimingIndex {
|
|
20
20
|
private readonly runToCreatedAt;
|
|
21
|
+
/** runId → terminal instant, unix SECONDS (`AgentSession.ended_at`; api-types 0.38.0, crew#496). */
|
|
22
|
+
private readonly runToEndedAt;
|
|
21
23
|
/**
|
|
22
24
|
* Consume pre-read `run.launched` entries — the seam that lets `createServer` feed this index
|
|
23
25
|
* from the ONE `readAll({ action: 'run.launched' })` it already runs for `RetryIndex` +
|
|
@@ -40,6 +42,26 @@ export declare class RunTimingIndex {
|
|
|
40
42
|
set(runId: string, launchedAtMillis: number): void;
|
|
41
43
|
/** The run's launch time in unix SECONDS, or `undefined` (the DTO spells that as an ABSENT field). */
|
|
42
44
|
createdAtFor(runId: string): number | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Consume pre-read `run.ended` entries (crew#496 / studio#230) — the daemon records one when it
|
|
47
|
+
* sees a run's terminal frame (`sessionCompleted` | `sessionFailed` | `runCancelled`). The run's
|
|
48
|
+
* FIRST terminal instant wins, the same rule the live {@link setEnded} applies: the trail answers
|
|
49
|
+
* newest first, so the OLDEST entry per run (the last one seen) is kept — a resume/retry
|
|
50
|
+
* re-terminal recorded after a hydrate failure never moves an already-dated run either way.
|
|
51
|
+
* `ts <= 0` stamps nothing. One more filtered scan at boot, in the same try as the `run.launched`
|
|
52
|
+
* scan (DES-L8 §5 PR-8B).
|
|
53
|
+
*/
|
|
54
|
+
hydrateFromEndedEntries(entries: AuditEntry[]): void;
|
|
55
|
+
/**
|
|
56
|
+
* Record a run's terminal instant (unix MILLIS — the `run.ended` audit entry's own `ts`, so the
|
|
57
|
+
* live answer and the post-restart rehydrate agree to the second). Idempotent per run: the first
|
|
58
|
+
* stamp wins — a second terminal frame (resume, retry) re-stamps nothing.
|
|
59
|
+
*/
|
|
60
|
+
setEnded(runId: string, endedAtMillis: number): void;
|
|
61
|
+
/** The run's terminal time in unix SECONDS, or `undefined` (ABSENT on the wire — never null,
|
|
62
|
+
* never fabricated: a live run, a pre-field run, a run that terminalled before THIS daemon
|
|
63
|
+
* booted, a lost trail). */
|
|
64
|
+
endedAtFor(runId: string): number | undefined;
|
|
43
65
|
}
|
|
44
66
|
/**
|
|
45
67
|
* Record a `run.launched` audit entry AND stamp the run-timing index with the SAME durable `ts`, so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-timing-index.d.ts","sourceRoot":"","sources":["../../src/api/run-timing-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW1D,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;
|
|
1
|
+
{"version":3,"file":"run-timing-index.d.ts","sourceRoot":"","sources":["../../src/api/run-timing-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW1D,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAE1D;;;;OAIG;IACH,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAQrD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAIlD,sGAAsG;IACtG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/C;;;;;;;;OAQG;IACH,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAOpD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAKpD;;iCAE6B;IAC7B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAG9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EACf,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAIR"}
|
|
@@ -24,6 +24,8 @@ function toSeconds(millis) {
|
|
|
24
24
|
}
|
|
25
25
|
export class RunTimingIndex {
|
|
26
26
|
runToCreatedAt = new Map();
|
|
27
|
+
/** runId → terminal instant, unix SECONDS (`AgentSession.ended_at`; api-types 0.38.0, crew#496). */
|
|
28
|
+
runToEndedAt = new Map();
|
|
27
29
|
/**
|
|
28
30
|
* Consume pre-read `run.launched` entries — the seam that lets `createServer` feed this index
|
|
29
31
|
* from the ONE `readAll({ action: 'run.launched' })` it already runs for `RetryIndex` +
|
|
@@ -63,6 +65,38 @@ export class RunTimingIndex {
|
|
|
63
65
|
createdAtFor(runId) {
|
|
64
66
|
return this.runToCreatedAt.get(runId);
|
|
65
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Consume pre-read `run.ended` entries (crew#496 / studio#230) — the daemon records one when it
|
|
70
|
+
* sees a run's terminal frame (`sessionCompleted` | `sessionFailed` | `runCancelled`). The run's
|
|
71
|
+
* FIRST terminal instant wins, the same rule the live {@link setEnded} applies: the trail answers
|
|
72
|
+
* newest first, so the OLDEST entry per run (the last one seen) is kept — a resume/retry
|
|
73
|
+
* re-terminal recorded after a hydrate failure never moves an already-dated run either way.
|
|
74
|
+
* `ts <= 0` stamps nothing. One more filtered scan at boot, in the same try as the `run.launched`
|
|
75
|
+
* scan (DES-L8 §5 PR-8B).
|
|
76
|
+
*/
|
|
77
|
+
hydrateFromEndedEntries(entries) {
|
|
78
|
+
for (const entry of entries) {
|
|
79
|
+
if (typeof entry.runId !== 'string' || typeof entry.ts !== 'number' || entry.ts <= 0)
|
|
80
|
+
continue;
|
|
81
|
+
this.runToEndedAt.set(entry.runId, toSeconds(entry.ts)); // newest-first trail ⇒ the oldest wins
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Record a run's terminal instant (unix MILLIS — the `run.ended` audit entry's own `ts`, so the
|
|
86
|
+
* live answer and the post-restart rehydrate agree to the second). Idempotent per run: the first
|
|
87
|
+
* stamp wins — a second terminal frame (resume, retry) re-stamps nothing.
|
|
88
|
+
*/
|
|
89
|
+
setEnded(runId, endedAtMillis) {
|
|
90
|
+
if (this.runToEndedAt.has(runId))
|
|
91
|
+
return;
|
|
92
|
+
this.runToEndedAt.set(runId, toSeconds(endedAtMillis));
|
|
93
|
+
}
|
|
94
|
+
/** The run's terminal time in unix SECONDS, or `undefined` (ABSENT on the wire — never null,
|
|
95
|
+
* never fabricated: a live run, a pre-field run, a run that terminalled before THIS daemon
|
|
96
|
+
* booted, a lost trail). */
|
|
97
|
+
endedAtFor(runId) {
|
|
98
|
+
return this.runToEndedAt.get(runId);
|
|
99
|
+
}
|
|
66
100
|
}
|
|
67
101
|
/**
|
|
68
102
|
* Record a `run.launched` audit entry AND stamp the run-timing index with the SAME durable `ts`, so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-timing-index.js","sourceRoot":"","sources":["../../src/api/run-timing-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;;;GAIG;AACH,SAAS,SAAS,CAAC,MAAc;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,OAAO,cAAc;IACR,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-timing-index.js","sourceRoot":"","sources":["../../src/api/run-timing-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,6 @@
|
|
|
1
1
|
import type { CoreEvent, SeatHealth } from '../core/types.js';
|
|
2
2
|
import { DaemonSignalLog } from '../core/daemon-signal-log.js';
|
|
3
3
|
export type { SeatHealth };
|
|
4
|
-
/** Rolling window for the repeated-acpFallback rule. */
|
|
5
|
-
export declare const FALLBACK_WINDOW_MS: number;
|
|
6
|
-
/** Fallbacks within the window that flip a seat inactive. */
|
|
7
|
-
export declare const FALLBACK_THRESHOLD = 3;
|
|
8
|
-
/**
|
|
9
|
-
* The council BENCH fold (independent review of #533, F-1): `councilSeatFailed { cli, kind }` is the
|
|
10
|
-
* engine's own evidence that a seat cannot hold a ballot — `non_zero_exit` ("Not logged in", "No
|
|
11
|
-
* API key found", "exceeded your monthly quota") or `timed_out` (opencode past the 40 s dispatch
|
|
12
|
-
* budget on the phase-4 rig). Until this fold existed the tracker never read it, so a seat benched
|
|
13
|
-
* in every council kept `health: active` and the roster's `council_eligible` prediction could not
|
|
14
|
-
* learn. The fold is bounded on purpose: only PRIMARY failures count (`benched` is the engine's
|
|
15
|
-
* derivative of an earlier failure, not a new observation), only within {@link COUNCIL_BENCH_WINDOW_MS},
|
|
16
|
-
* and only from {@link COUNCIL_BENCH_THRESHOLD} failures up (one timed-out ballot is weather). It
|
|
17
|
-
* does NOT flip `health` — a chat is not a council and the free tier may still answer — it feeds
|
|
18
|
-
* `council_eligible` through {@link SeatHealthTracker.councilBenchFor}, and an ok unit output clears
|
|
19
|
-
* it like every other recovery.
|
|
20
|
-
*/
|
|
21
|
-
export declare const COUNCIL_BENCH_WINDOW_MS: number;
|
|
22
|
-
export declare const COUNCIL_BENCH_THRESHOLD = 2;
|
|
23
|
-
/** The `councilSeatFailed.kind` values that are the seat's OWN failure (the engine's `benched` is derivative). */
|
|
24
|
-
export declare const COUNCIL_PRIMARY_FAILURE_KINDS: ReadonlySet<string>;
|
|
25
|
-
/** What the roster carries as `council_bench` when a seat is benched by this daemon's recent evidence. */
|
|
26
|
-
export interface CouncilBench {
|
|
27
|
-
/** Primary ballot failures inside the window. */
|
|
28
|
-
failures: number;
|
|
29
|
-
last_kind: string;
|
|
30
|
-
/** ISO-8601 of the last failure. */
|
|
31
|
-
last_at: string;
|
|
32
|
-
/** The run the last failure happened in, when the frame named one. */
|
|
33
|
-
last_run?: string;
|
|
34
|
-
/** A bounded excerpt of the last failure's detail / stderr, when there was one. */
|
|
35
|
-
last_detail?: string;
|
|
36
|
-
window_ms: number;
|
|
37
|
-
}
|
|
38
4
|
/**
|
|
39
5
|
* What a seat's OWN output says when it has no credential (F-A45-006, wave 6): the fresh rig's pi
|
|
40
6
|
* failed every ballot with "No API key found" while the roster read `signed_in: true` off a present
|
|
@@ -69,10 +35,6 @@ export declare class SeatHealthTracker {
|
|
|
69
35
|
private readonly entries;
|
|
70
36
|
/** `${session}:${ord}` → cli key. `unitOutputCaptured` carries no seat; this is the correlation. */
|
|
71
37
|
private readonly assignments;
|
|
72
|
-
/** cli key → recent failure-fallback timestamps (epoch ms), pruned to the rolling window. */
|
|
73
|
-
private readonly fallbacks;
|
|
74
|
-
/** cli key → primary council ballot failures inside {@link COUNCIL_BENCH_WINDOW_MS}. */
|
|
75
|
-
private readonly councilFailures;
|
|
76
38
|
/** cli key → the seat's latest own "no credential" report (F-A45-006), cleared by an ok output. */
|
|
77
39
|
private readonly authFailures;
|
|
78
40
|
/** Default `since` for seats that have never changed state. */
|
|
@@ -92,20 +54,14 @@ export declare class SeatHealthTracker {
|
|
|
92
54
|
markActive(key: string, atMs?: number): void;
|
|
93
55
|
/** Record a seat's own "no credential" report (F-A45-006) — the newest report wins. */
|
|
94
56
|
private recordAuthFailure;
|
|
57
|
+
/** Stamp an OBSERVED error on the seat — `lastErrorAt` only; the status stays `active` (R5). */
|
|
58
|
+
private stampError;
|
|
95
59
|
/**
|
|
96
60
|
* The seat's own latest "no credential" report inside {@link AUTH_FAILURE_WINDOW_MS} with no ok
|
|
97
61
|
* output since (F-A45-006), or `null`. `seatStanding` reads it as `auth: 'signed_out'` — the seat
|
|
98
62
|
* said so itself — whatever the credential-file probe reads.
|
|
99
63
|
*/
|
|
100
64
|
authFailureFor(key: string, nowMs?: number): SeatAuthFailure | null;
|
|
101
|
-
/**
|
|
102
|
-
* The seat's council bench from THIS daemon's recent evidence, or `null`: fewer than
|
|
103
|
-
* {@link COUNCIL_BENCH_THRESHOLD} primary ballot failures inside {@link COUNCIL_BENCH_WINDOW_MS}
|
|
104
|
-
* (older ones have aged out), or an ok output since.
|
|
105
|
-
*/
|
|
106
|
-
councilBenchFor(key: string, nowMs?: number): CouncilBench | null;
|
|
107
|
-
/** Flip a seat INACTIVE with the error excerpt; `since` survives while already inactive. */
|
|
108
|
-
markInactive(key: string, message: string, atMs?: number): void;
|
|
109
65
|
/** The seat's health — a seat never seen in an event is ACTIVE with no message (the default). */
|
|
110
66
|
healthFor(key: string): SeatHealth;
|
|
111
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-health.d.ts","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,eAAe,EAEhB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"seat-health.d.ts","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,eAAe,EAEhB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EAAE,UAAU,EAAE,CAAC;AAmC3B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAezC,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD;yFACyF;AACzF,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAShB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0G;IACvI,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;gBAEzB,IAAI,GAAE;QACjC;;;WAGG;QACH,SAAS,CAAC,EAAE,eAAe,CAAC;QAC5B,wEAAwE;QACxE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KACtB;IAEN,4FAA4F;IAC5F,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAgI9B,oFAAoF;IACpF,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAa,GAAG,IAAI;IAUhD,uFAAuF;IACvF,OAAO,CAAC,iBAAiB;IAgBzB,gGAAgG;IAChG,OAAO,CAAC,UAAU;IAUlB;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,eAAe,GAAG,IAAI;IAevE,iGAAiG;IACjG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAGnC"}
|
package/dist/api/seat-health.js
CHANGED
|
@@ -36,27 +36,17 @@
|
|
|
36
36
|
// `ok` output flips it active — recovery by real work, no probe required.
|
|
37
37
|
import { SIGNAL_CORRELATION_WINDOW_MS, } from '../core/daemon-signal-log.js';
|
|
38
38
|
import { triageDeliverFailure } from '../core/deliver-triage.js';
|
|
39
|
-
/** Rolling window for the repeated-acpFallback rule. */
|
|
40
|
-
export const FALLBACK_WINDOW_MS = 10 * 60 * 1000;
|
|
41
|
-
/** Fallbacks within the window that flip a seat inactive. */
|
|
42
|
-
export const FALLBACK_THRESHOLD = 3;
|
|
43
39
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* `council_eligible` through {@link SeatHealthTracker.councilBenchFor}, and an ok unit output clears
|
|
54
|
-
* it like every other recovery.
|
|
40
|
+
* (R5 / R5b — DES-L3 PR-3D, F-RC2-006 / F-RC2-021 / F-RC2-041 / F-RC2-004) What this tracker NO
|
|
41
|
+
* LONGER does: flip a seat `inactive` on a `stepFailed{workerError}`, on quota / 401 / timeout
|
|
42
|
+
* phrases, or on repeated ACP fallbacks; and keep a daemon-wide council-count bench
|
|
43
|
+
* (`council_bench`, 30-min window). Both were second classifiers beside the engine's own per-run
|
|
44
|
+
* ballot ledger (`session.benched_seats`, `unitDistributed.degradedReason`) and they blamed the
|
|
45
|
+
* seat for launch refusals and load timeouts — a roster at 0 eligible seats that only a restart
|
|
46
|
+
* cleared. Seat health is now: the engine's bench (per run) + the seat's OWN auth refusal
|
|
47
|
+
* (`auth: signed_out`, cleared by an ok output). `health.status` is always `active`; observed
|
|
48
|
+
* errors stamp `lastErrorAt` and nothing else.
|
|
55
49
|
*/
|
|
56
|
-
export const COUNCIL_BENCH_WINDOW_MS = 30 * 60 * 1000;
|
|
57
|
-
export const COUNCIL_BENCH_THRESHOLD = 2;
|
|
58
|
-
/** The `councilSeatFailed.kind` values that are the seat's OWN failure (the engine's `benched` is derivative). */
|
|
59
|
-
export const COUNCIL_PRIMARY_FAILURE_KINDS = new Set(['non_zero_exit', 'timed_out']);
|
|
60
50
|
/** Health messages are operator-facing chips, not transcripts — bound them hard. */
|
|
61
51
|
const EXCERPT_MAX = 240;
|
|
62
52
|
function excerpt(s) {
|
|
@@ -65,18 +55,6 @@ function excerpt(s) {
|
|
|
65
55
|
}
|
|
66
56
|
/** The wrapped runner's seat-naming failure message: "(cli `x` exited N) …" (execute_wrapped.rs). */
|
|
67
57
|
const CLI_IN_DETAIL = /\(cli `([^`]+)` exited /;
|
|
68
|
-
/**
|
|
69
|
-
* Seat-level failure signatures in a `stepFailed` detail. Deliberately narrow: a unit that failed
|
|
70
|
-
* its WORK (missing deliverable, gate veto) says nothing about the seat's health, so only strings
|
|
71
|
-
* that name the CLI process, its transport, or its account state qualify.
|
|
72
|
-
*/
|
|
73
|
-
const SEAT_FAILURE_PATTERNS = [
|
|
74
|
-
CLI_IN_DETAIL, // non-zero exit, seat named by the runner itself
|
|
75
|
-
/timeout waiting/i, // ACP "timeout waiting for response id=…" (acp_runner.rs)
|
|
76
|
-
/\bHTTP\/?[0-9.]*\s+401\b|\b401\s+unauthori[sz]ed\b|\bunauthori[sz]ed\b/i, // auth: needs a re-login (a 401 only as an HTTP status — never a bare number, review M-3 of #536)
|
|
77
|
-
/\bquota\b|rate.?limit|too many requests|\b429\b/i, // quota/rate ceiling
|
|
78
|
-
/\bout of credits\b|\binsufficient credits\b/i, // account balance
|
|
79
|
-
];
|
|
80
58
|
/** `acpFallback` kinds that are deliberate routing rather than a failure — never counted:
|
|
81
59
|
* `governance_requires_wrapped` (crew#276) and `read_only_requires_wrapped` (wicked-core#431 —
|
|
82
60
|
* an `executes_code: false` unit on an ACP seat not admitted to input governance is routed to the
|
|
@@ -115,7 +93,7 @@ export function isAuthRefusal(text) {
|
|
|
115
93
|
const AUTH_FALLBACK_KINDS = new Set(['auth_required', 'auth_failed', 'unauthenticated']);
|
|
116
94
|
/** How long a seat's own "no credential" report keeps its `auth` at `signed_out` with no ok output
|
|
117
95
|
* since — the same window as the council bench; an ok unit output clears it at once. */
|
|
118
|
-
export const AUTH_FAILURE_WINDOW_MS =
|
|
96
|
+
export const AUTH_FAILURE_WINDOW_MS = 30 * 60 * 1000;
|
|
119
97
|
/**
|
|
120
98
|
* In-memory per-seat health, folded from live CoreEvents. In-memory ON PURPOSE: health is a
|
|
121
99
|
* statement about the running platform's ability to reach a CLI right now — a daemon restart
|
|
@@ -127,10 +105,6 @@ export class SeatHealthTracker {
|
|
|
127
105
|
entries = new Map();
|
|
128
106
|
/** `${session}:${ord}` → cli key. `unitOutputCaptured` carries no seat; this is the correlation. */
|
|
129
107
|
assignments = new Map();
|
|
130
|
-
/** cli key → recent failure-fallback timestamps (epoch ms), pruned to the rolling window. */
|
|
131
|
-
fallbacks = new Map();
|
|
132
|
-
/** cli key → primary council ballot failures inside {@link COUNCIL_BENCH_WINDOW_MS}. */
|
|
133
|
-
councilFailures = new Map();
|
|
134
108
|
/** cli key → the seat's latest own "no credential" report (F-A45-006), cleared by an ok output. */
|
|
135
109
|
authFailures = new Map();
|
|
136
110
|
/** Default `since` for seats that have never changed state. */
|
|
@@ -185,7 +159,6 @@ export class SeatHealthTracker {
|
|
|
185
159
|
// (`core/deliver-triage.ts`), it flips nobody.
|
|
186
160
|
if (triageDeliverFailure(detail) !== null)
|
|
187
161
|
return;
|
|
188
|
-
const failureKind = str(event.failureKind);
|
|
189
162
|
// The detail names the seat when the wrapped runner produced it; otherwise fall back to
|
|
190
163
|
// the unit's assignment (a workerError detail is the CLI's own output and rarely does).
|
|
191
164
|
const named = CLI_IN_DETAIL.exec(detail)?.[1];
|
|
@@ -198,11 +171,11 @@ export class SeatHealthTracker {
|
|
|
198
171
|
// F-A45-006: the seat's own words beat the file probe — "No API key found" flips `auth`.
|
|
199
172
|
if (isAuthRefusal(detail))
|
|
200
173
|
this.recordAuthFailure(seat, detail, 'worker', at, session);
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
174
|
+
// (R5) Every other worker failure is an OBSERVED error, never a status flip: a launch
|
|
175
|
+
// refusal, a load timeout or a worker crash says nothing about whether the seat can take
|
|
176
|
+
// the next turn — the engine's per-run ballot ledger judges that (F-RC2-006).
|
|
177
|
+
else
|
|
178
|
+
this.stampError(seat, at);
|
|
206
179
|
return;
|
|
207
180
|
}
|
|
208
181
|
case 'councilSeatFailed': {
|
|
@@ -214,19 +187,11 @@ export class SeatHealthTracker {
|
|
|
214
187
|
if (cli !== undefined && (kind === 'not_logged_in' || isAuthRefusal(detail))) {
|
|
215
188
|
this.recordAuthFailure(cli, detail !== '' ? detail : (kind ?? 'not logged in'), 'ballot', at, session);
|
|
216
189
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
// An observed error — stamped, never a status flip (see COUNCIL_BENCH_WINDOW_MS).
|
|
223
|
-
const prev = this.entries.get(cli);
|
|
224
|
-
this.entries.set(cli, {
|
|
225
|
-
status: prev?.status ?? 'active',
|
|
226
|
-
...(prev?.message !== undefined ? { message: prev.message } : {}),
|
|
227
|
-
since: prev?.since ?? this.startedAt,
|
|
228
|
-
lastErrorAt: new Date(at).toISOString(),
|
|
229
|
-
});
|
|
190
|
+
// (R5b) An observed error — stamped, never counted: the engine benches the seat for the
|
|
191
|
+
// run at its own ballot threshold and says so in `unitDistributed.degradedReason`; crew
|
|
192
|
+
// keeps no cross-run council ledger any more (one bench ledger, DES-L3 PR-3D).
|
|
193
|
+
if (cli !== undefined && kind !== undefined && kind !== 'benched')
|
|
194
|
+
this.stampError(cli, at);
|
|
230
195
|
return;
|
|
231
196
|
}
|
|
232
197
|
case 'acpFallback': {
|
|
@@ -242,24 +207,9 @@ export class SeatHealthTracker {
|
|
|
242
207
|
const why = str(event.reason) ?? fallbackKind;
|
|
243
208
|
this.recordAuthFailure(cliKey, why, 'acp', at, session);
|
|
244
209
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
this.
|
|
248
|
-
if (fresh.length >= FALLBACK_THRESHOLD) {
|
|
249
|
-
const reason = str(event.reason) ?? fallbackKind ?? 'unknown';
|
|
250
|
-
this.markInactive(cliKey, `repeated ACP fallback (${fresh.length} in 10 min): ${reason}`, at);
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
// One fallback is not inactive (session death falls back and the unit can still work),
|
|
254
|
-
// but it IS an observed error — stamp lastErrorAt without flipping the status.
|
|
255
|
-
const prev = this.entries.get(cliKey);
|
|
256
|
-
this.entries.set(cliKey, {
|
|
257
|
-
status: prev?.status ?? 'active',
|
|
258
|
-
...(prev?.message !== undefined ? { message: prev.message } : {}),
|
|
259
|
-
since: prev?.since ?? this.startedAt,
|
|
260
|
-
lastErrorAt: new Date(at).toISOString(),
|
|
261
|
-
});
|
|
262
|
-
}
|
|
210
|
+
// (R5) A fallback — one or many — is an observed error, never a status flip: the unit
|
|
211
|
+
// still runs on the wrapped carrier, and the seat's next turn is the engine's call.
|
|
212
|
+
this.stampError(cliKey, at);
|
|
263
213
|
// ── crew#411: signal correlation ───────────────────────────────────────
|
|
264
214
|
// A session_died fallback is a silent bridge exit-0; whether the daemon was
|
|
265
215
|
// also signalled at the same time determines the likely cause. Both branches
|
|
@@ -305,8 +255,6 @@ export class SeatHealthTracker {
|
|
|
305
255
|
since: prev?.status === 'active' ? prev.since : new Date(atMs).toISOString(),
|
|
306
256
|
...(prev?.lastErrorAt !== undefined ? { lastErrorAt: prev.lastErrorAt } : {}),
|
|
307
257
|
});
|
|
308
|
-
this.fallbacks.delete(key); // an ok output resets the repeated-fallback window too
|
|
309
|
-
this.councilFailures.delete(key); // …and the council bench: real work is the recovery
|
|
310
258
|
this.authFailures.delete(key); // …and the seat's own "no credential" report (F-A45-006)
|
|
311
259
|
}
|
|
312
260
|
/** Record a seat's own "no credential" report (F-A45-006) — the newest report wins. */
|
|
@@ -317,9 +265,13 @@ export class SeatHealthTracker {
|
|
|
317
265
|
source,
|
|
318
266
|
...(session !== undefined ? { session } : {}),
|
|
319
267
|
});
|
|
268
|
+
this.stampError(key, atMs);
|
|
269
|
+
}
|
|
270
|
+
/** Stamp an OBSERVED error on the seat — `lastErrorAt` only; the status stays `active` (R5). */
|
|
271
|
+
stampError(key, atMs) {
|
|
320
272
|
const prev = this.entries.get(key);
|
|
321
273
|
this.entries.set(key, {
|
|
322
|
-
status:
|
|
274
|
+
status: 'active',
|
|
323
275
|
...(prev?.message !== undefined ? { message: prev.message } : {}),
|
|
324
276
|
since: prev?.since ?? this.startedAt,
|
|
325
277
|
lastErrorAt: new Date(atMs).toISOString(),
|
|
@@ -345,41 +297,6 @@ export class SeatHealthTracker {
|
|
|
345
297
|
...(rec.session !== undefined ? { run: rec.session } : {}),
|
|
346
298
|
};
|
|
347
299
|
}
|
|
348
|
-
/**
|
|
349
|
-
* The seat's council bench from THIS daemon's recent evidence, or `null`: fewer than
|
|
350
|
-
* {@link COUNCIL_BENCH_THRESHOLD} primary ballot failures inside {@link COUNCIL_BENCH_WINDOW_MS}
|
|
351
|
-
* (older ones have aged out), or an ok output since.
|
|
352
|
-
*/
|
|
353
|
-
councilBenchFor(key, nowMs = Date.now()) {
|
|
354
|
-
const fresh = (this.councilFailures.get(key) ?? []).filter((f) => nowMs - f.at < COUNCIL_BENCH_WINDOW_MS);
|
|
355
|
-
if (fresh.length === 0) {
|
|
356
|
-
this.councilFailures.delete(key);
|
|
357
|
-
return null;
|
|
358
|
-
}
|
|
359
|
-
this.councilFailures.set(key, fresh);
|
|
360
|
-
if (fresh.length < COUNCIL_BENCH_THRESHOLD)
|
|
361
|
-
return null;
|
|
362
|
-
const last = fresh[fresh.length - 1];
|
|
363
|
-
return {
|
|
364
|
-
failures: fresh.length,
|
|
365
|
-
last_kind: last.kind,
|
|
366
|
-
last_at: new Date(last.at).toISOString(),
|
|
367
|
-
...(last.session !== undefined ? { last_run: last.session } : {}),
|
|
368
|
-
...(last.detail !== '' ? { last_detail: last.detail } : {}),
|
|
369
|
-
window_ms: COUNCIL_BENCH_WINDOW_MS,
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
/** Flip a seat INACTIVE with the error excerpt; `since` survives while already inactive. */
|
|
373
|
-
markInactive(key, message, atMs = Date.now()) {
|
|
374
|
-
const prev = this.entries.get(key);
|
|
375
|
-
const iso = new Date(atMs).toISOString();
|
|
376
|
-
this.entries.set(key, {
|
|
377
|
-
status: 'inactive',
|
|
378
|
-
message: excerpt(message),
|
|
379
|
-
since: prev?.status === 'inactive' ? prev.since : iso,
|
|
380
|
-
lastErrorAt: iso,
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
300
|
/** The seat's health — a seat never seen in an event is ACTIVE with no message (the default). */
|
|
384
301
|
healthFor(key) {
|
|
385
302
|
return this.entries.get(key) ?? { status: 'active', since: this.startedAt };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-health.js","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seat-health.js","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,9 +29,11 @@
|
|
|
29
29
|
* ACP adapter asks permissions or whose record arms the kernel write floor). Every refusal
|
|
30
30
|
* carries every reason that applies, so the thread can say WHY a seat is missing.
|
|
31
31
|
*
|
|
32
|
-
* Pure, synchronous, no IO: the probe result and the
|
|
32
|
+
* Pure, synchronous, no IO: the probe result and the seat's own auth refusal are the inputs. The
|
|
33
|
+
* runtime HEALTH record is not one any more (R5 / R5b, DES-L3 PR-3D) — `inactive` is never produced
|
|
34
|
+
* and the one bench is the engine's per-run ballot ledger.
|
|
33
35
|
*/
|
|
34
|
-
import type {
|
|
36
|
+
import type { SeatAuthFailure } from './seat-health.js';
|
|
35
37
|
/** The seat's auth state, read for what it MEANS for the seat's usability. */
|
|
36
38
|
export type SeatAuth = 'signed_in' | 'signed_out' | 'not_required' | 'unknown';
|
|
37
39
|
/**
|
|
@@ -82,17 +84,16 @@ export interface SeatStanding {
|
|
|
82
84
|
council_eligible: boolean;
|
|
83
85
|
/** Present when `council_eligible` is false: the one reason, in the operator's words. */
|
|
84
86
|
council_ineligible_reason?: string;
|
|
85
|
-
/** Present when THIS daemon's recent councils benched the seat (`SeatHealthTracker.councilBenchFor`). */
|
|
86
|
-
council_bench?: CouncilBench;
|
|
87
87
|
}
|
|
88
88
|
/** A seat whose `auth` lets it take a turn — the ONE predicate the roster and the chat share. */
|
|
89
89
|
export declare function authUsable(auth: SeatAuth): boolean;
|
|
90
|
-
export declare function seatStanding(seat: StandingSeat, signedIn: boolean | null,
|
|
90
|
+
export declare function seatStanding(seat: StandingSeat, signedIn: boolean | null, authFailure?: SeatAuthFailure | null): SeatStanding;
|
|
91
91
|
/** Why a seat was not seated (F-A45-011; `ChatSeatRefusal.source` on the wire): `auth` — signed
|
|
92
|
-
* out; `scope` — the scoped-chat admission rule;
|
|
93
|
-
* `budget` — the engine did not seat it (its warm-up timed out or it was dropped at dispatch
|
|
92
|
+
* out; `scope` — the scoped-chat admission rule;
|
|
93
|
+
* `budget` — the engine did not seat it (its warm-up timed out or it was dropped at dispatch; R5b —
|
|
94
|
+
* crew keeps no council bench of its own, so the engine's per-run bench surfaces here);
|
|
94
95
|
* `engine` — the engine refused it with its own reason. */
|
|
95
|
-
export type ChatRefusalSource = 'auth' | 'scope' | '
|
|
96
|
+
export type ChatRefusalSource = 'auth' | 'scope' | 'budget' | 'engine';
|
|
96
97
|
export type ChatAdmission = {
|
|
97
98
|
ok: true;
|
|
98
99
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA
|
|
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;;+FAE2F;IAC3F,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yFAAyF;IACzF,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAElD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,OAAO,GAAG,IAAI,EACxB,WAAW,GAAE,eAAe,GAAG,IAAW,GACzC,YAAY,CAkCd;AAED;;;;4DAI4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEpG;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,aAAa,CAwBpG"}
|
|
@@ -29,7 +29,9 @@
|
|
|
29
29
|
* ACP adapter asks permissions or whose record arms the kernel write floor). Every refusal
|
|
30
30
|
* carries every reason that applies, so the thread can say WHY a seat is missing.
|
|
31
31
|
*
|
|
32
|
-
* Pure, synchronous, no IO: the probe result and the
|
|
32
|
+
* Pure, synchronous, no IO: the probe result and the seat's own auth refusal are the inputs. The
|
|
33
|
+
* runtime HEALTH record is not one any more (R5 / R5b, DES-L3 PR-3D) — `inactive` is never produced
|
|
34
|
+
* and the one bench is the engine's per-run ballot ledger.
|
|
33
35
|
*/
|
|
34
36
|
/**
|
|
35
37
|
* Seats known to answer with NO credential at all — a free tier the CLI selects by itself when no
|
|
@@ -69,7 +71,7 @@ export function seatAuth(seat, signedIn) {
|
|
|
69
71
|
export function authUsable(auth) {
|
|
70
72
|
return auth !== 'signed_out';
|
|
71
73
|
}
|
|
72
|
-
export function seatStanding(seat, signedIn,
|
|
74
|
+
export function seatStanding(seat, signedIn, authFailure = null) {
|
|
73
75
|
// F-A45-006: the seat's OWN report beats the file probe. The fresh rig's pi read `signed_in`
|
|
74
76
|
// off a present-but-empty `auth.json` while every ballot failed "No API key found"; when the seat
|
|
75
77
|
// itself says it has no credential, `auth` is `signed_out` — the free tier does not apply either
|
|
@@ -94,27 +96,12 @@ export function seatStanding(seat, signedIn, health, bench = null, authFailure =
|
|
|
94
96
|
: 'signed out — a council would bench this seat on its first ballot; sign it in from the System page',
|
|
95
97
|
};
|
|
96
98
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
if (bench !== null) {
|
|
105
|
-
// The engine's own evidence, from THIS daemon's recent runs (independent review of #533, F-1):
|
|
106
|
-
// a seat that failed its ballots is benched whatever its auth reading says — the free tier
|
|
107
|
-
// that answers a chat can still time out a 40 s dispatch budget.
|
|
108
|
-
const minutes = Math.max(1, Math.round(bench.window_ms / 60_000));
|
|
109
|
-
return {
|
|
110
|
-
...base,
|
|
111
|
-
council_eligible: false,
|
|
112
|
-
council_ineligible_reason: `benched by this daemon's recent councils: ${bench.failures} ballot failures in the last ${minutes} min — ` +
|
|
113
|
-
`last ${bench.last_kind}${bench.last_run !== undefined ? ` on run ${bench.last_run.slice(0, 8)}` : ''}` +
|
|
114
|
-
`${bench.last_detail !== undefined ? ` (${bench.last_detail})` : ''}; an ok unit output clears it`,
|
|
115
|
-
council_bench: bench,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
99
|
+
// (R5 / R5b, DES-L3 PR-3D) No `inactive` arm and no crew council bench any more: `health.status`
|
|
100
|
+
// is always `active` (observed errors stamp `lastErrorAt` only), and the one bench is the
|
|
101
|
+
// engine's per-run ballot ledger, read from the run (`session.benched_seats`,
|
|
102
|
+
// `unitDistributed.degradedReason`) — never predicted here from a cross-run count. The runtime
|
|
103
|
+
// health reading is therefore no longer an INPUT to standing: the parameter is gone rather than
|
|
104
|
+
// silenced, so a caller cannot think it still decides something.
|
|
118
105
|
return base;
|
|
119
106
|
}
|
|
120
107
|
/**
|
|
@@ -133,15 +120,18 @@ export function chatSeatAdmission(seat, auth, scoped) {
|
|
|
133
120
|
reasons.push('signed out — it cannot take a turn until it is signed in from the System page');
|
|
134
121
|
source = 'auth';
|
|
135
122
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
123
|
+
const acp = seat.acp ?? undefined;
|
|
124
|
+
if (acp === undefined) {
|
|
125
|
+
// F-W1-003 = A (approved 2026-09-15): chat runs on ACP-adapter seats only, scoped AND
|
|
126
|
+
// unscoped. A seat with no ACP adapter is a WRAPPED seat — it does governed work in runs, but
|
|
127
|
+
// it has no in-process turn/permission channel to hold a chat session, so it is never a chat
|
|
128
|
+
// seat and is not offered in either mode (was: admitted to an unscoped chat).
|
|
129
|
+
reasons.push('it has no ACP adapter, so it is not a chat seat — chat runs on ACP-adapter seats only, and ' +
|
|
130
|
+
'this seat does governed work in runs instead');
|
|
131
|
+
}
|
|
132
|
+
else if (scoped && acp.acp_input_governance !== true && acp.os_sandbox !== true) {
|
|
133
|
+
reasons.push('its ACP adapter asks no permissions and its record arms no OS sandbox, so a scoped chat ' +
|
|
134
|
+
'could not hold the repositories read-only for it (open the chat unscoped to include it)');
|
|
145
135
|
}
|
|
146
136
|
return reasons.length === 0 ? { ok: true } : { ok: false, reason: reasons.join('; '), source };
|
|
147
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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"}
|