instar 1.3.525 → 1.3.526
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +40 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +23 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +86 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +56 -2
- package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
- package/dist/monitoring/ActiveWorkSilenceSentinel.js +174 -10
- package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
- package/dist/monitoring/PromiseBeacon.d.ts +48 -0
- package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
- package/dist/monitoring/PromiseBeacon.js +186 -41
- package/dist/monitoring/PromiseBeacon.js.map +1 -1
- package/dist/monitoring/SubagentTracker.d.ts +9 -0
- package/dist/monitoring/SubagentTracker.d.ts.map +1 -1
- package/dist/monitoring/SubagentTracker.js +11 -0
- package/dist/monitoring/SubagentTracker.js.map +1 -1
- package/dist/monitoring/sentinelWiring.d.ts +20 -1
- package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
- package/dist/monitoring/sentinelWiring.js +26 -0
- package/dist/monitoring/sentinelWiring.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +7 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/scaffold/templates.ts +7 -0
- package/upgrades/1.3.526.md +83 -0
- package/upgrades/side-effects/honest-progress-messaging.md +150 -0
|
@@ -23,7 +23,9 @@
|
|
|
23
23
|
* via the notify path. No new blocking authority.
|
|
24
24
|
*/
|
|
25
25
|
import { EventEmitter } from 'node:events';
|
|
26
|
-
export type SilenceStatus = 'detected' | 'nudged' | 'recovered' | 'recovering' | 'recovery-failed' | 'escalated';
|
|
26
|
+
export type SilenceStatus = 'detected' | 'nudged' | 'recovered' | 'recovering' | 'recovery-failed' | 'suppressed-active' | 'escalated';
|
|
27
|
+
/** Observability funnel events (HONEST-PROGRESS-MESSAGING E). */
|
|
28
|
+
export type SilenceFunnelEvent = 'detected' | 'suppressed_active_indicator' | 'suppressed_subagent_live' | 'suppressed_corroborate_error' | 'escalated_indeterminate' | 'escalated_frozen_indicator' | 'escalated_legacy';
|
|
27
29
|
export interface SilenceState {
|
|
28
30
|
sessionName: string;
|
|
29
31
|
detectedAt: number;
|
|
@@ -33,6 +35,13 @@ export interface SilenceState {
|
|
|
33
35
|
/** Auto-recovery (respawn) attempts made for this stall episode. Bounded by
|
|
34
36
|
* maxAutoRecoveries to prevent a respawn-loop on a session that stays stuck. */
|
|
35
37
|
recoveryAttempts: number;
|
|
38
|
+
/** A1/A5: when escalation was suppressed because the live frame still showed an
|
|
39
|
+
* active-work indicator, the wall-clock the suppression began AND the frozen
|
|
40
|
+
* frame's hash. If the SAME frame stays byte-identical past
|
|
41
|
+
* activeWorkMaxFrozenIndicatorMs, A5 escalates (a frozen-indicator hang).
|
|
42
|
+
* Reset whenever the frame changes (genuine progress). */
|
|
43
|
+
activeFrozenSince?: number;
|
|
44
|
+
activeFrozenHash?: string;
|
|
36
45
|
}
|
|
37
46
|
export interface SessionRegistryEntry {
|
|
38
47
|
sessionName: string;
|
|
@@ -57,6 +66,27 @@ export interface ActiveWorkSilenceSentinelDeps {
|
|
|
57
66
|
* ask-the-user escalation. DESTRUCTIVE (discards in-context work), so it only
|
|
58
67
|
* runs after the nudge fails AND is bounded by maxAutoRecoveries. */
|
|
59
68
|
recoverFn?: (sessionName: string) => Promise<boolean>;
|
|
69
|
+
/** Capture the session's CURRENT live tmux frame (HONEST-PROGRESS-MESSAGING
|
|
70
|
+
* A1/A2). Used to corroborate a wedge before escalating. When absent, the
|
|
71
|
+
* sentinel keeps its legacy behavior (escalate on threshold+nudge, no
|
|
72
|
+
* corroboration) — back-compat for callers that don't wire it. */
|
|
73
|
+
captureFrame?: (sessionName: string) => string | null;
|
|
74
|
+
/** Does this live frame still show an active-work indicator (spinner / "esc to
|
|
75
|
+
* interrupt" / "(running)")? Wired to looksActivelyWorking(). A1: if true, the
|
|
76
|
+
* session is in an active turn — suppress, never escalate. */
|
|
77
|
+
looksActivelyWorking?: (frame: string, sessionName: string) => boolean;
|
|
78
|
+
/** Is this live frame a clean idle prompt (turn finished, waiting for input)?
|
|
79
|
+
* A2(b): a clean idle prompt is NOT a wedge — only an indeterminate non-prompt
|
|
80
|
+
* frame is. When absent, the indeterminate check degrades to "no active-work
|
|
81
|
+
* indicator" alone. */
|
|
82
|
+
isCleanIdlePrompt?: (frame: string, sessionName: string) => boolean;
|
|
83
|
+
/** Does the session have a live sub-agent (SubagentTracker, no stoppedAt)?
|
|
84
|
+
* A2(c): a session whose sub-agent is mid-work is not wedged — suppress. */
|
|
85
|
+
hasActiveSubagents?: (sessionName: string) => boolean;
|
|
86
|
+
/** Observability hook (HONEST-PROGRESS-MESSAGING E). Records a funnel event so
|
|
87
|
+
* the suppressed-vs-escalated rates are auditable. Never throws into the
|
|
88
|
+
* sentinel; best-effort. */
|
|
89
|
+
recordEvent?: (event: SilenceFunnelEvent, sessionName: string, detail?: string) => void;
|
|
60
90
|
/** Override Date.now for tests. */
|
|
61
91
|
now?: () => number;
|
|
62
92
|
/** Override timer setters for tests. */
|
|
@@ -67,10 +97,19 @@ export interface ActiveWorkSilenceSentinelConfig {
|
|
|
67
97
|
enabled?: boolean;
|
|
68
98
|
/** Tick interval — how often we walk the registry (ms). Default 60s. */
|
|
69
99
|
tickIntervalMs?: number;
|
|
70
|
-
/** Silence threshold — output gap that triggers detection (ms). Default
|
|
100
|
+
/** Silence threshold — output gap that triggers detection (ms). Default 30m
|
|
101
|
+
* (HONEST-PROGRESS-MESSAGING A4 — raised from 15m; with A1/A2 corroboration
|
|
102
|
+
* this collapses the false-positive rate without missing a genuine wedge). */
|
|
71
103
|
silenceThresholdMs?: number;
|
|
72
104
|
/** Verify window — how long after nudge before declaring escalate (ms). Default 30s. */
|
|
73
105
|
verifyWindowMs?: number;
|
|
106
|
+
/** Frozen-indicator hard timeout (HONEST-PROGRESS-MESSAGING A5). A1 suppresses
|
|
107
|
+
* escalation whenever the live frame still shows an active-work indicator —
|
|
108
|
+
* which would permanently hide a genuine hang that froze mid-tool with the
|
|
109
|
+
* indicator still on screen. Backstop: if a frame WITH an active-work
|
|
110
|
+
* indicator stays byte-identical this long, escalate once with an extra-hedged
|
|
111
|
+
* message. Default 90m. */
|
|
112
|
+
activeWorkMaxFrozenIndicatorMs?: number;
|
|
74
113
|
/** Auto-recover (respawn) a stalled session after the nudge fails, instead of
|
|
75
114
|
* only asking the user. DARK by default — destructive (discards in-context
|
|
76
115
|
* work), so opt-in. When off, behaviour is unchanged (nudge → ask). */
|
|
@@ -100,7 +139,22 @@ export declare class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
100
139
|
clear(sessionName: string): void;
|
|
101
140
|
private runNudge;
|
|
102
141
|
private verifyNudge;
|
|
142
|
+
/**
|
|
143
|
+
* Corroboration gate (HONEST-PROGRESS-MESSAGING A1/A2/A5). Before claiming a
|
|
144
|
+
* session is stuck, re-capture its LIVE frame and prove it really is wedged —
|
|
145
|
+
* a static scrollback on a session that is mid-tool, mid-sub-agent, or just
|
|
146
|
+
* finished is NOT a freeze. The whole path FAILS CLOSED (FD-6): any error
|
|
147
|
+
* suppresses the escalation rather than risk a false "it's stuck" claim.
|
|
148
|
+
*/
|
|
103
149
|
private escalate;
|
|
150
|
+
/** Mark a session as suppressed-active and (re)stamp the frozen-frame timer.
|
|
151
|
+
* A changed frame hash resets the A5 timer (genuine progress within the turn). */
|
|
152
|
+
private markSuppressedActive;
|
|
153
|
+
/** The autoRecover-or-ask escalation, reached only after corroboration (or in
|
|
154
|
+
* the legacy no-capture path). */
|
|
155
|
+
private proceedEscalation;
|
|
156
|
+
/** A3 honest wording — evidence + uncertainty, never an asserted conclusion. */
|
|
157
|
+
private honestAskMessage;
|
|
104
158
|
/**
|
|
105
159
|
* Auto-recovery ladder (dark by default): notify in the stalled session's own
|
|
106
160
|
* topic, respawn it, then notify the outcome. Bounded by maxAutoRecoveries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveWorkSilenceSentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB;qFACiF;IACjF,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ActiveWorkSilenceSentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,WAAW,CAAC;AAEhB,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,6BAA6B,GAC7B,0BAA0B,GAC1B,8BAA8B,GAC9B,yBAAyB,GACzB,4BAA4B,GAC5B,kBAAkB,CAAC;AAEvB,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB;qFACiF;IACjF,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;+DAI2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,wEAAwE;IACxE,YAAY,EAAE,MAAM,oBAAoB,EAAE,CAAC;IAC3C,iFAAiF;IACjF,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD;wDACoD;IACpD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D;;;;0EAIsE;IACtE,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD;;;uEAGmE;IACnE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD;;mEAE+D;IAC/D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACvE;;;4BAGwB;IACxB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACpE;iFAC6E;IAC7E,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD;;iCAE6B;IAC7B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxF,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACzE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;mFAE+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wFAAwF;IACxF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;gCAK4B;IAC5B,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC;;4EAEwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;+DAE2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAYD,qBAAa,yBAA0B,SAAQ,YAAY;IAQ7C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4C;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoD;IACjF,OAAO,CAAC,UAAU,CAA+C;IACjE,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAAK;gBAEM,IAAI,EAAE,6BAA6B,EAAE,GAAG,GAAE,+BAAoC;IAK3G,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAUZ,uEAAuE;IACvE,IAAI,IAAI,IAAI;IAkCZ,0DAA0D;IAC1D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAiBvD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAK9C,UAAU,IAAI,YAAY,EAAE;IAI5B,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;YAOlB,QAAQ;IAwBtB,OAAO,CAAC,WAAW;IAoBnB;;;;;;OAMG;YACW,QAAQ;IAsGtB;uFACmF;IACnF,OAAO,CAAC,oBAAoB;IAc5B;uCACmC;IACnC,OAAO,CAAC,iBAAiB;IAiBzB,gFAAgF;IAChF,OAAO,CAAC,gBAAgB;IAOxB;;;;;OAKG;YACW,WAAW;YA2CX,MAAM;IAQpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAIlB;wEACoE;IACpE,WAAW,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAGxD"}
|
|
@@ -26,8 +26,9 @@ import { EventEmitter } from 'node:events';
|
|
|
26
26
|
const DEFAULT_CONFIG = {
|
|
27
27
|
enabled: true,
|
|
28
28
|
tickIntervalMs: 60_000,
|
|
29
|
-
silenceThresholdMs:
|
|
29
|
+
silenceThresholdMs: 30 * 60_000,
|
|
30
30
|
verifyWindowMs: 30_000,
|
|
31
|
+
activeWorkMaxFrozenIndicatorMs: 90 * 60_000,
|
|
31
32
|
autoRecover: false,
|
|
32
33
|
maxAutoRecoveries: 1,
|
|
33
34
|
};
|
|
@@ -67,6 +68,7 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
67
68
|
this.lastTickAt = Date.now();
|
|
68
69
|
const now = (this.deps.now ?? Date.now)();
|
|
69
70
|
const sessions = this.deps.listSessions();
|
|
71
|
+
const pastThreshold = new Set();
|
|
70
72
|
for (const s of sessions) {
|
|
71
73
|
if (s.paused || s.recoveryInFlight)
|
|
72
74
|
continue;
|
|
@@ -76,11 +78,28 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
76
78
|
const idleMs = now - s.lastOutputAt;
|
|
77
79
|
if (idleMs < this.cfg.silenceThresholdMs)
|
|
78
80
|
continue;
|
|
81
|
+
pastThreshold.add(s.sessionName);
|
|
79
82
|
const existing = this.states.get(s.sessionName);
|
|
80
|
-
if (existing)
|
|
81
|
-
|
|
83
|
+
if (existing) {
|
|
84
|
+
// A1/A5 (HONEST-PROGRESS-MESSAGING): a session whose escalation was
|
|
85
|
+
// suppressed because it still looked actively working is re-evaluated
|
|
86
|
+
// every tick — so A5's frozen-indicator timeout can eventually fire and
|
|
87
|
+
// a turn that finishes mid-suppression gets re-judged as a real wedge.
|
|
88
|
+
if (existing.status === 'suppressed-active')
|
|
89
|
+
void this.escalate(s.sessionName);
|
|
90
|
+
continue; // any other status: already handling
|
|
91
|
+
}
|
|
82
92
|
this.report(s.sessionName, s.lastOutputAt);
|
|
83
93
|
}
|
|
94
|
+
// A suppressed-active session that is no longer past the silence threshold
|
|
95
|
+
// (its frame changed → genuine progress, or it ended) is cleared so the map
|
|
96
|
+
// can't leak and the session is monitored fresh.
|
|
97
|
+
for (const [name, st] of this.states) {
|
|
98
|
+
if (st.status === 'suppressed-active' && !pastThreshold.has(name)) {
|
|
99
|
+
this.clear(name);
|
|
100
|
+
this.emit('recovered', name);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
84
103
|
}
|
|
85
104
|
/** Public entry: report a silence finding. Idempotent. */
|
|
86
105
|
report(sessionName, lastOutputAt) {
|
|
@@ -130,8 +149,8 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
130
149
|
accepted = false;
|
|
131
150
|
}
|
|
132
151
|
if (!accepted) {
|
|
133
|
-
// Couldn't even nudge — escalate immediately.
|
|
134
|
-
this.escalate(sessionName);
|
|
152
|
+
// Couldn't even nudge — escalate immediately (corroborated inside escalate).
|
|
153
|
+
void this.escalate(sessionName);
|
|
135
154
|
return;
|
|
136
155
|
}
|
|
137
156
|
const handle = this.setTimer(() => this.verifyNudge(sessionName), this.cfg.verifyWindowMs);
|
|
@@ -155,9 +174,129 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
155
174
|
this.clear(sessionName);
|
|
156
175
|
return;
|
|
157
176
|
}
|
|
158
|
-
this.escalate(sessionName);
|
|
177
|
+
void this.escalate(sessionName);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Corroboration gate (HONEST-PROGRESS-MESSAGING A1/A2/A5). Before claiming a
|
|
181
|
+
* session is stuck, re-capture its LIVE frame and prove it really is wedged —
|
|
182
|
+
* a static scrollback on a session that is mid-tool, mid-sub-agent, or just
|
|
183
|
+
* finished is NOT a freeze. The whole path FAILS CLOSED (FD-6): any error
|
|
184
|
+
* suppresses the escalation rather than risk a false "it's stuck" claim.
|
|
185
|
+
*/
|
|
186
|
+
async escalate(sessionName) {
|
|
187
|
+
const state = this.states.get(sessionName);
|
|
188
|
+
if (!state)
|
|
189
|
+
return;
|
|
190
|
+
// Legacy path: no live-frame capture wired → keep the original behavior but
|
|
191
|
+
// with the honest A3 wording. Corroboration is unavailable, so escalate on
|
|
192
|
+
// threshold + failed-nudge as before.
|
|
193
|
+
if (!this.deps.captureFrame) {
|
|
194
|
+
this.deps.recordEvent?.('escalated_legacy', sessionName);
|
|
195
|
+
this.proceedEscalation(sessionName, this.honestAskMessage(sessionName));
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
let frame;
|
|
199
|
+
try {
|
|
200
|
+
frame = this.deps.captureFrame(sessionName);
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
// FD-6 — capture threw: unreliable evidence, suppress + re-arm.
|
|
204
|
+
this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, String(err));
|
|
205
|
+
this.markSuppressedActive(state, undefined);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (!frame) {
|
|
209
|
+
// No frame to judge → fail closed (suppress + re-arm).
|
|
210
|
+
this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, 'empty-frame');
|
|
211
|
+
this.markSuppressedActive(state, undefined);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
let activelyWorking = false;
|
|
215
|
+
try {
|
|
216
|
+
activelyWorking = this.deps.looksActivelyWorking?.(frame, sessionName) ?? false;
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, String(err));
|
|
220
|
+
this.markSuppressedActive(state, undefined);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
// A1 + A5: the live frame still shows an active-work indicator → in an active
|
|
224
|
+
// turn (a long task), NOT a freeze. Suppress — unless the SAME frame has been
|
|
225
|
+
// byte-identical past the frozen-indicator timeout, the rare genuine hang.
|
|
226
|
+
if (activelyWorking) {
|
|
227
|
+
const hash = cheapHash(frame);
|
|
228
|
+
const now = (this.deps.now ?? Date.now)();
|
|
229
|
+
const frozenLongEnough = state.activeFrozenHash === hash &&
|
|
230
|
+
state.activeFrozenSince != null &&
|
|
231
|
+
now - state.activeFrozenSince >= this.cfg.activeWorkMaxFrozenIndicatorMs;
|
|
232
|
+
if (frozenLongEnough) {
|
|
233
|
+
this.deps.recordEvent?.('escalated_frozen_indicator', sessionName);
|
|
234
|
+
state.status = 'escalated';
|
|
235
|
+
const minutes = Math.max(1, Math.round(this.cfg.activeWorkMaxFrozenIndicatorMs / 60_000));
|
|
236
|
+
void this.notify(sessionName, `${friendlyName(sessionName)} has shown the same "working" frame for ${minutes} min with zero change — could be a long task, or a hang that froze mid-step. Worth a look?`);
|
|
237
|
+
this.emit('escalated', sessionName);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// Still working (or the frozen-frame timer hasn't elapsed) → suppress.
|
|
241
|
+
this.markSuppressedActive(state, hash);
|
|
242
|
+
this.deps.recordEvent?.('suppressed_active_indicator', sessionName);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
// A2(c): a live sub-agent means the session is mid-work, not wedged. Suppress.
|
|
246
|
+
let subagentLive = false;
|
|
247
|
+
try {
|
|
248
|
+
subagentLive = this.deps.hasActiveSubagents?.(sessionName) ?? false;
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// A failing tracker read is unreliable evidence → fail closed (suppress).
|
|
252
|
+
this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, 'subagent-check-threw');
|
|
253
|
+
this.markSuppressedActive(state, undefined);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
if (subagentLive) {
|
|
257
|
+
this.markSuppressedActive(state, undefined);
|
|
258
|
+
this.deps.recordEvent?.('suppressed_subagent_live', sessionName);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
// A2(b): a clean idle prompt is a finished/idle turn, not a wedge. Drop the
|
|
262
|
+
// episode silently (the tracker's paused flag normally catches this; the live
|
|
263
|
+
// frame is the authority).
|
|
264
|
+
let cleanIdle = false;
|
|
265
|
+
try {
|
|
266
|
+
cleanIdle = this.deps.isCleanIdlePrompt?.(frame, sessionName) ?? false;
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
cleanIdle = false;
|
|
270
|
+
}
|
|
271
|
+
if (cleanIdle) {
|
|
272
|
+
this.clear(sessionName);
|
|
273
|
+
this.emit('recovered', sessionName);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
// Corroborated wedge: no active-work indicator, no live sub-agent, and the
|
|
277
|
+
// frame is in an indeterminate non-prompt state. This is a genuine freeze.
|
|
278
|
+
this.deps.recordEvent?.('escalated_indeterminate', sessionName);
|
|
279
|
+
this.proceedEscalation(sessionName, this.honestAskMessage(sessionName));
|
|
280
|
+
}
|
|
281
|
+
/** Mark a session as suppressed-active and (re)stamp the frozen-frame timer.
|
|
282
|
+
* A changed frame hash resets the A5 timer (genuine progress within the turn). */
|
|
283
|
+
markSuppressedActive(state, frameHash) {
|
|
284
|
+
const now = (this.deps.now ?? Date.now)();
|
|
285
|
+
if (frameHash != null && state.activeFrozenHash !== frameHash) {
|
|
286
|
+
state.activeFrozenHash = frameHash;
|
|
287
|
+
state.activeFrozenSince = now;
|
|
288
|
+
}
|
|
289
|
+
else if (frameHash == null) {
|
|
290
|
+
// Couldn't hash the frame (error path) — don't arm A5 on bad evidence.
|
|
291
|
+
state.activeFrozenHash = undefined;
|
|
292
|
+
state.activeFrozenSince = undefined;
|
|
293
|
+
} // else: same hash → keep the existing activeFrozenSince so A5 can elapse.
|
|
294
|
+
state.status = 'suppressed-active';
|
|
295
|
+
this.emit('suppressed-active', state.sessionName);
|
|
159
296
|
}
|
|
160
|
-
|
|
297
|
+
/** The autoRecover-or-ask escalation, reached only after corroboration (or in
|
|
298
|
+
* the legacy no-capture path). */
|
|
299
|
+
proceedEscalation(sessionName, askText) {
|
|
161
300
|
const state = this.states.get(sessionName);
|
|
162
301
|
if (!state)
|
|
163
302
|
return;
|
|
@@ -171,10 +310,16 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
171
310
|
return;
|
|
172
311
|
}
|
|
173
312
|
state.status = 'escalated';
|
|
174
|
-
|
|
175
|
-
void this.notify(sessionName, `${friendlyName(sessionName)} was working and went quiet about ${minutes} minutes ago. I tried a gentle nudge and nothing came back. Want me to dig in?`);
|
|
313
|
+
void this.notify(sessionName, askText);
|
|
176
314
|
this.emit('escalated', sessionName);
|
|
177
315
|
}
|
|
316
|
+
/** A3 honest wording — evidence + uncertainty, never an asserted conclusion. */
|
|
317
|
+
honestAskMessage(sessionName) {
|
|
318
|
+
const state = this.states.get(sessionName);
|
|
319
|
+
const base = state?.lastOutputAtAtDetection ?? (this.deps.now ?? Date.now)();
|
|
320
|
+
const minutes = Math.max(1, Math.round(((this.deps.now ?? Date.now)() - base) / 60_000));
|
|
321
|
+
return `${friendlyName(sessionName)}'s screen hasn't changed in ${minutes} min and a nudge didn't wake it — it may be stuck, or on a long task I can't see into. Want me to check?`;
|
|
322
|
+
}
|
|
178
323
|
/**
|
|
179
324
|
* Auto-recovery ladder (dark by default): notify in the stalled session's own
|
|
180
325
|
* topic, respawn it, then notify the outcome. Bounded by maxAutoRecoveries
|
|
@@ -234,6 +379,25 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
|
|
|
234
379
|
}
|
|
235
380
|
}
|
|
236
381
|
function friendlyName(sessionName) {
|
|
237
|
-
|
|
382
|
+
const stripped = sessionName
|
|
383
|
+
.replace(/^ai\.instar\./, '')
|
|
384
|
+
.replace(/-server$/, '')
|
|
385
|
+
.replace(/-lifeline$/, '');
|
|
386
|
+
// FD-7 (HONEST-PROGRESS-MESSAGING): the name is embedded in a user-facing
|
|
387
|
+
// message — clamp to a safe charset so a crafted tmux session name can't inject
|
|
388
|
+
// markdown/control characters into the escalation text. Session names are
|
|
389
|
+
// already alphanumeric/dash/dot by construction; this is defense-in-depth.
|
|
390
|
+
const safe = stripped.replace(/[^A-Za-z0-9._-]/g, '');
|
|
391
|
+
return safe.length > 0 ? safe : 'a session';
|
|
392
|
+
}
|
|
393
|
+
/** FNV-1a — enough to detect that a captured live frame changed byte-for-byte
|
|
394
|
+
* (A5 frozen-indicator timer). Not security-sensitive. */
|
|
395
|
+
function cheapHash(s) {
|
|
396
|
+
let h = 0x811c9dc5;
|
|
397
|
+
for (let i = 0; i < s.length; i++) {
|
|
398
|
+
h ^= s.charCodeAt(i);
|
|
399
|
+
h = Math.imul(h, 0x01000193);
|
|
400
|
+
}
|
|
401
|
+
return (h >>> 0).toString(16);
|
|
238
402
|
}
|
|
239
403
|
//# sourceMappingURL=ActiveWorkSilenceSentinel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveWorkSilenceSentinel.js","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActiveWorkSilenceSentinel.js","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,6 +83,33 @@ export interface PromiseBeaconConfig {
|
|
|
83
83
|
* Default 4.
|
|
84
84
|
*/
|
|
85
85
|
defaultAutoPauseAfterUnchanged?: number;
|
|
86
|
+
/**
|
|
87
|
+
* HONEST-PROGRESS-MESSAGING B1 — when the tmux snapshot is UNCHANGED, send
|
|
88
|
+
* nothing (the "still on it, no new output" line carried zero information and
|
|
89
|
+
* was the user's #1 noise complaint). The unchanged-count is still tracked for
|
|
90
|
+
* atRisk/auto-pause accounting; only the message is withheld. The beacon still
|
|
91
|
+
* speaks on genuine new output, atRisk, close-out, a deadline (B1a), or a
|
|
92
|
+
* sparse liveness tick (B1b). Default `true`; set `false` to restore the old
|
|
93
|
+
* every-tick templated heartbeat (rollback path). */
|
|
94
|
+
suppressUnchangedHeartbeats?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* HONEST-PROGRESS-MESSAGING B1b — sparse liveness. When unchanged heartbeats
|
|
97
|
+
* are suppressed, a genuinely long task would otherwise go fully dark. At most
|
|
98
|
+
* ONE "still watching, N min in" line is emitted per this interval while a
|
|
99
|
+
* session is still present and its turn is not finished. Default 60m. */
|
|
100
|
+
beaconLivenessIntervalMs?: number;
|
|
101
|
+
/**
|
|
102
|
+
* HONEST-PROGRESS-MESSAGING B2 / FD-1 — turn-finished close-out. When the
|
|
103
|
+
* session's live frame shows a finished/idle turn (no active-work indicator)
|
|
104
|
+
* for this many consecutive checks, the beacon emits ONE close-out prompt and
|
|
105
|
+
* auto-pauses (no clockwork heartbeats into a finished room). Default 3
|
|
106
|
+
* (≈60m at 20m cadence — rules out a momentary prompt-like frame mid-task). */
|
|
107
|
+
turnFinishedCloseoutChecks?: number;
|
|
108
|
+
/**
|
|
109
|
+
* HONEST-PROGRESS-MESSAGING B2 — detector for "is this session still actively
|
|
110
|
+
* working?" (wired to looksActivelyWorking on the live frame). When absent,
|
|
111
|
+
* turn-finished close-out is inactive (degrades safely). */
|
|
112
|
+
looksActivelyWorking?: (frame: string, sessionName: string) => boolean;
|
|
86
113
|
/**
|
|
87
114
|
* When set, a commitment whose owning session has died is ESCALATED (revive →
|
|
88
115
|
* honest status → loud give-up) instead of being silently terminalized to
|
|
@@ -178,6 +205,27 @@ export declare class PromiseBeacon extends EventEmitter {
|
|
|
178
205
|
* `pending`. Resume re-arms via the `resumed` event handler.
|
|
179
206
|
*/
|
|
180
207
|
private autoPause;
|
|
208
|
+
/**
|
|
209
|
+
* B1a (HONEST-PROGRESS-MESSAGING) — deadline-pressure exception. Total silence
|
|
210
|
+
* near a hard deadline is itself dishonest. When the commitment's hard deadline
|
|
211
|
+
* is within 2× the effective cadence, an unchanged tick still speaks with a
|
|
212
|
+
* low-confidence, honest line. Returns null when there is no deadline pressure.
|
|
213
|
+
*/
|
|
214
|
+
private deadlinePressureLine;
|
|
215
|
+
/**
|
|
216
|
+
* B1b (HONEST-PROGRESS-MESSAGING) — sparse liveness. When unchanged heartbeats
|
|
217
|
+
* are suppressed, a genuinely long task would go fully dark. Emit at most one
|
|
218
|
+
* "still watching, N min in" line per beaconLivenessIntervalMs while a session
|
|
219
|
+
* is present. Returns null when a liveness line isn't due yet.
|
|
220
|
+
*/
|
|
221
|
+
private maybeLivenessLine;
|
|
222
|
+
/**
|
|
223
|
+
* B2 (HONEST-PROGRESS-MESSAGING) — turn-finished close-out. The promise's
|
|
224
|
+
* session has wrapped its turn; emit ONE honest close-out prompt and auto-pause
|
|
225
|
+
* (no clockwork heartbeats into a finished room). Non-terminal: status stays
|
|
226
|
+
* `pending`; resume re-arms via the `resumed` handler.
|
|
227
|
+
*/
|
|
228
|
+
private closeOutTurnFinished;
|
|
181
229
|
private suppress;
|
|
182
230
|
/** Exponential backoff floor between Rung-1 attempts (I1). */
|
|
183
231
|
private escBackoffMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromiseBeacon.d.ts","sourceRoot":"","sources":["../../src/monitoring/PromiseBeacon.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IAGnC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7E,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAClE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,CACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAGpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,sBAAsB,EAAE,eAAe,CAAC;IACjE,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PromiseBeacon.d.ts","sourceRoot":"","sources":["../../src/monitoring/PromiseBeacon.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IAGnC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7E,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAClE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,CACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAGpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,sBAAsB,EAAE,eAAe,CAAC;IACjE,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC;;;;;;;yDAOqD;IACrD,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;6EAIyE;IACzE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;mFAK+E;IAC/E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;gEAG4D;IAC5D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IAGvE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,YAAY,GACZ,eAAe,GACf,UAAU,GACV,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,mBAAmB,CAAC;CAC7F;AAmJD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAyD;IACvE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,8BAA8B,CAAS;IAE/C,OAAO,CAAC,GAAG,CAAwG;IACnH,oDAAoD;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAK;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB,CAAK;IAC7B,6EAA6E;IAC7E,OAAO,CAAC,0BAA0B,CAAqB;gBAE3C,MAAM,EAAE,mBAAmB;IA8BvC,gGAAgG;IAChG,iBAAiB,IAAI;QACnB,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;KAC/E;IASD,KAAK,IAAI,IAAI;IA6Db,IAAI,IAAI,IAAI;IAQZ,6EAA6E;IAC7E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB,qEAAqE;IACrE,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IA2B7B,8CAA8C;IACxC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkQrC;;;;;OAKG;YACW,SAAS;IA0BvB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;;OAKG;YACW,oBAAoB;YA0BpB,QAAQ;IAuBtB,8DAA8D;IAC9D,OAAO,CAAC,YAAY;IAKpB,0EAA0E;IAC1E,OAAO,CAAC,WAAW;IAQnB,iFAAiF;IACjF,OAAO,CAAC,QAAQ;IAWhB;;;OAGG;YACW,QAAQ;IA0FtB,qEAAqE;IACrE,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;YACW,eAAe;IA4D7B,4EAA4E;YAC9D,KAAK;IAuCnB,oFAAoF;YACtE,KAAK;IAiBnB,sFAAsF;IACtF,iBAAiB,IAAI,IAAI;YAEX,kBAAkB;IAkBhC,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,YAAY;IASpB,qBAAqB;IACrB,eAAe,IAAI,MAAM,EAAE;CAG5B"}
|