instar 1.3.664 → 1.3.666
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 +52 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/IdleErrorClassifier.d.ts +44 -0
- package/dist/core/IdleErrorClassifier.d.ts.map +1 -0
- package/dist/core/IdleErrorClassifier.js +87 -0
- package/dist/core/IdleErrorClassifier.js.map +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +9 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionManager.d.ts +19 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +71 -3
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/paneTail.d.ts +38 -0
- package/dist/core/paneTail.d.ts.map +1 -0
- package/dist/core/paneTail.js +64 -0
- package/dist/core/paneTail.js.map +1 -0
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/PermissionPromptAutoResolver.d.ts +215 -0
- package/dist/monitoring/PermissionPromptAutoResolver.d.ts.map +1 -0
- package/dist/monitoring/PermissionPromptAutoResolver.js +475 -0
- package/dist/monitoring/PermissionPromptAutoResolver.js.map +1 -0
- package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
- package/dist/monitoring/PresenceProxy.js +18 -0
- package/dist/monitoring/PresenceProxy.js.map +1 -1
- package/dist/monitoring/StuckSignatureClassifier.d.ts +1 -1
- package/dist/monitoring/StuckSignatureClassifier.d.ts.map +1 -1
- package/dist/monitoring/StuckSignatureClassifier.js +29 -3
- package/dist/monitoring/StuckSignatureClassifier.js.map +1 -1
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +15 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/guardPosture.d.ts.map +1 -1
- package/dist/monitoring/guardPosture.js +19 -0
- package/dist/monitoring/guardPosture.js.map +1 -1
- package/package.json +1 -1
- package/scripts/lint-guard-manifest.js +1 -0
- package/src/data/builtin-manifest.json +20 -20
- package/upgrades/1.3.666.md +131 -0
- package/upgrades/side-effects/idle-error-tailgate-corroboration.md +65 -0
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PermissionPromptAutoResolver — the always-on, unconditional SAFETY FLOOR that
|
|
3
|
+
* keeps Instar from being silently wedged on an agent-framework approval prompt.
|
|
4
|
+
*
|
|
5
|
+
* Spec: docs/specs/framework-permission-prompt-robustness.md
|
|
6
|
+
* Convergence: docs/specs/reports/framework-permission-prompt-robustness-convergence.md
|
|
7
|
+
*
|
|
8
|
+
* The bug it closes (Claude Code 2.1.176–177): a hardcoded Bash safety classifier
|
|
9
|
+
* pauses a session on a terminal Y/N approval prompt (e.g. "Compound command
|
|
10
|
+
* contains cd with output redirection — manual approval required … Do you want to
|
|
11
|
+
* proceed? ❯ 1. Yes / 2. No"). It runs BEFORE all permission rules and hooks, so
|
|
12
|
+
* `--dangerously-skip-permissions` cannot pre-answer it. A remote agent (Telegram /
|
|
13
|
+
* dashboard) cannot press a terminal key, so the session freezes forever while still
|
|
14
|
+
* LOOKING busy — a third liveness state every existing watcher mis-reads.
|
|
15
|
+
*
|
|
16
|
+
* The operator directive that governs the design: a low-level command/tool approval
|
|
17
|
+
* prompt is NEVER a user decision — the agent runs operator-owned sessions with full
|
|
18
|
+
* machine access. So a prompt-parked session is a DEFECT to auto-clear and detect,
|
|
19
|
+
* never a "waiting for operator" state.
|
|
20
|
+
*
|
|
21
|
+
* TWO PURE DETECTORS + a stateful driver:
|
|
22
|
+
* - Layer 2 (`detectApprovalPrompt`, LOAD-BEARING): matches a registered approval
|
|
23
|
+
* signature with the ❯ selector cursor sitting on an approve option, at the
|
|
24
|
+
* genuine bottom of a non-generating pane → the driver sends `Enter` (confirm the
|
|
25
|
+
* highlighted default). Bar-raising MITIGATION, not closure — a text capture
|
|
26
|
+
* cannot perfectly tell TUI chrome from displayed content, so the residual is
|
|
27
|
+
* bounded by Enter-only + re-capture-before-send + a per-episode attempt cap + a
|
|
28
|
+
* terminal defect.
|
|
29
|
+
* - Layer 3 (`detectPersistingMenu`, prose-AGNOSTIC observability): matches ANY
|
|
30
|
+
* persisting glyph-led numbered menu the resolver did NOT auto-clear (❯-not-on-
|
|
31
|
+
* approve, prose-drift, an open non-approval picker) → after a persistence
|
|
32
|
+
* threshold it raises the SAME terminal defect. This is what makes "never
|
|
33
|
+
* silently stranded" TRUE for the cases Layer 2 declines, and doubles as the
|
|
34
|
+
* prompt-string drift detector.
|
|
35
|
+
*
|
|
36
|
+
* Signal-vs-authority: the detectors are pure. The ONLY actuation is `sendKey(…,
|
|
37
|
+
* 'Enter')` (a benign empty submit on a false match) and `raiseDefect` (an Attention
|
|
38
|
+
* item). No new blocking authority. All I/O is injected (DI), so the detectors +
|
|
39
|
+
* state machine are fully unit-testable.
|
|
40
|
+
*
|
|
41
|
+
* Privacy: the audit logs only the STATIC registry pattern NAMES and a one-way
|
|
42
|
+
* fingerprint — never the raw tail. Layer 3's dedup key is a one-way digest of the
|
|
43
|
+
* option labels — the labels themselves are never logged.
|
|
44
|
+
*/
|
|
45
|
+
import { createHash } from 'node:crypto';
|
|
46
|
+
import { leadGlyphsOf, stripLineLead } from '../core/paneTail.js';
|
|
47
|
+
// ─── Constants (exported per spec — the bounded-state + anti-hammer dials) ───────
|
|
48
|
+
/** Per-episode consecutive un-cleared sends before Layer 2 declares Terminal. */
|
|
49
|
+
export const MAX_ATTEMPTS = 3;
|
|
50
|
+
/** Layer-3 consecutive matched ticks before the persisting-menu Terminal defect. */
|
|
51
|
+
export const LAYER3_PERSIST_TICKS = 4;
|
|
52
|
+
/** Per-entry staleness TTL — neither state map can grow with uptime (Bounded Accumulation). */
|
|
53
|
+
export const STATE_TTL_MS = 30 * 60 * 1000;
|
|
54
|
+
/** How many trailing non-empty lines count as "the genuine bottom" of the menu. */
|
|
55
|
+
const MENU_BOTTOM_WINDOW = 6;
|
|
56
|
+
/** The U+276F selector cursor glyph (❯) Claude Code paints on the focused option. */
|
|
57
|
+
const SELECTOR_GLYPH = '❯';
|
|
58
|
+
/**
|
|
59
|
+
* Split a raw tmux tail capture into `PaneTailLine`s — dropping whitespace-only
|
|
60
|
+
* lines (like `liveTail`), mapping each remaining RAW line → its lead-stripped
|
|
61
|
+
* `text` + its `leadGlyphs`. Pure.
|
|
62
|
+
*/
|
|
63
|
+
export function toPaneTailLines(rawTail) {
|
|
64
|
+
if (!rawTail)
|
|
65
|
+
return [];
|
|
66
|
+
const out = [];
|
|
67
|
+
for (const line of rawTail.split('\n')) {
|
|
68
|
+
if (!line.trim())
|
|
69
|
+
continue; // drop empties like liveTail
|
|
70
|
+
out.push({ text: stripLineLead(line), leadGlyphs: leadGlyphsOf(line) });
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Approval-prompt signatures, keyed by framework. Only `claude-code` is VERIFIED at
|
|
76
|
+
* ship; codex/gemini entries are deliberately OMITTED — off until a live prompt is
|
|
77
|
+
* characterized (Decision 10). The resolver tries EVERY registered signature each
|
|
78
|
+
* tick (it does not depend on a session's framework field, undefined on legacy
|
|
79
|
+
* records); a Claude prompt won't match a Codex pattern, so trying all is safe.
|
|
80
|
+
*
|
|
81
|
+
* `matchedPatternNames` (what the audit + fingerprint use) are these STATIC `name`s —
|
|
82
|
+
* never matched tail text — so neither artifact can ever carry pane-derived bytes.
|
|
83
|
+
*/
|
|
84
|
+
export const APPROVAL_PROMPT_SIGNATURES = {
|
|
85
|
+
'claude-code': {
|
|
86
|
+
prosePatterns: [
|
|
87
|
+
{ name: 'manual-approval', pattern: /manual approval required/i },
|
|
88
|
+
{ name: 'path-resolution-bypass', pattern: /path resolution bypass/i },
|
|
89
|
+
{
|
|
90
|
+
name: 'compound-cd-redirect',
|
|
91
|
+
pattern: /Compound command contains cd with output redirection/i,
|
|
92
|
+
},
|
|
93
|
+
{ name: 'do-you-want-to-proceed', pattern: /Do you want to proceed\?/i },
|
|
94
|
+
],
|
|
95
|
+
approveLabels: /^(yes|proceed|allow|continue)\b/i,
|
|
96
|
+
},
|
|
97
|
+
// 'codex-cli': { prosePatterns: [ /* off until a live prompt is characterized */ ], approveLabels: /…/ },
|
|
98
|
+
// 'gemini-cli': { prosePatterns: [ /* off until a live prompt is characterized */ ], approveLabels: /…/ },
|
|
99
|
+
};
|
|
100
|
+
// ─── Pure structural helpers ─────────────────────────────────────────────────────
|
|
101
|
+
const NUMBERED_OPTION_RE = /^\s*\d+\.\s/;
|
|
102
|
+
const OPTION_PREFIX_RE = /^\s*\d+\.\s*/;
|
|
103
|
+
const AFFORDANCE_ESC_RE = /Esc to cancel/i;
|
|
104
|
+
const AFFORDANCE_PROCEED_RE = /Do you want to proceed/i;
|
|
105
|
+
const ANSI_SGR_RE = /\x1b\[[0-9;]*m/g;
|
|
106
|
+
function sha256(input) {
|
|
107
|
+
return createHash('sha256').update(input, 'utf8').digest('hex');
|
|
108
|
+
}
|
|
109
|
+
/** True iff the leadGlyphs run contains the ❯ selector cursor specifically. */
|
|
110
|
+
function hasSelectorGlyph(leadGlyphs) {
|
|
111
|
+
return leadGlyphs.includes(SELECTOR_GLYPH);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* True iff the leadGlyphs run contains ANY TUI lead glyph. `leadGlyphs` is the
|
|
115
|
+
* `LEAD_RE` run (ANSI-SGR | whitespace | lead-glyph); strip the ANSI + whitespace
|
|
116
|
+
* and anything remaining must be a lead glyph. (Avoids depending on paneTail's
|
|
117
|
+
* private glyph class.)
|
|
118
|
+
*/
|
|
119
|
+
function hasAnyLeadGlyph(leadGlyphs) {
|
|
120
|
+
return leadGlyphs.replace(ANSI_SGR_RE, '').replace(/\s+/g, '').length > 0;
|
|
121
|
+
}
|
|
122
|
+
/** A line that is part of a menu's bottom structure (option line OR affordance). */
|
|
123
|
+
function isMenuStructureLine(l) {
|
|
124
|
+
return (NUMBERED_OPTION_RE.test(l.text) ||
|
|
125
|
+
AFFORDANCE_ESC_RE.test(l.text) ||
|
|
126
|
+
AFFORDANCE_PROCEED_RE.test(l.text));
|
|
127
|
+
}
|
|
128
|
+
function joinedText(tail) {
|
|
129
|
+
return tail.map((l) => l.text).join('\n');
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* "Genuine bottom" gate shared by both detectors: the LAST non-empty line is itself
|
|
133
|
+
* a menu-structure line (so there is no live idle input box rendered BELOW the menu),
|
|
134
|
+
* and the triggering option line sits within the last `MENU_BOTTOM_WINDOW` lines.
|
|
135
|
+
*/
|
|
136
|
+
function lastLineIsMenuStructure(tail) {
|
|
137
|
+
const last = tail[tail.length - 1];
|
|
138
|
+
return !!last && isMenuStructureLine(last);
|
|
139
|
+
}
|
|
140
|
+
function withinBottomWindow(tail, index) {
|
|
141
|
+
return index >= tail.length - MENU_BOTTOM_WINDOW;
|
|
142
|
+
}
|
|
143
|
+
// ─── Layer 2 — load-bearing approval detector ────────────────────────────────────
|
|
144
|
+
/**
|
|
145
|
+
* Pure Layer-2 detector. Returns a match ONLY when ALL hold:
|
|
146
|
+
* 1. ≥2 DISTINCT named prose patterns from the framework's registry matched;
|
|
147
|
+
* 2. a line whose `leadGlyphs` contains ❯ AND whose `text` is `N.` followed by an
|
|
148
|
+
* approve label (the selector cursor is ON an approve option);
|
|
149
|
+
* 3. the menu is at the genuine bottom (no idle input box below, option line within
|
|
150
|
+
* the bottom window) AND the session is not generating.
|
|
151
|
+
*
|
|
152
|
+
* Honest residual (spec security#1): a tmux text capture cannot perfectly prove a
|
|
153
|
+
* `❯ 1. Yes` is TUI chrome vs displayed content. Requirements 1–3 substantially raise
|
|
154
|
+
* the bar; the residual is bounded by the Enter-only keystroke + re-capture + attempt
|
|
155
|
+
* cap + Terminal defect in the driver, never by this detector pretending closure.
|
|
156
|
+
*/
|
|
157
|
+
export function detectApprovalPrompt(tail, framework, isGenerating) {
|
|
158
|
+
if (isGenerating)
|
|
159
|
+
return null;
|
|
160
|
+
if (!tail.length)
|
|
161
|
+
return null;
|
|
162
|
+
const sig = APPROVAL_PROMPT_SIGNATURES[framework];
|
|
163
|
+
if (!sig)
|
|
164
|
+
return null;
|
|
165
|
+
// (1) ≥2 DISTINCT named prose patterns.
|
|
166
|
+
const joined = joinedText(tail);
|
|
167
|
+
const matched = new Set();
|
|
168
|
+
for (const p of sig.prosePatterns) {
|
|
169
|
+
if (p.pattern.test(joined))
|
|
170
|
+
matched.add(p.name);
|
|
171
|
+
}
|
|
172
|
+
if (matched.size < 2)
|
|
173
|
+
return null;
|
|
174
|
+
// (2) ❯ selector cursor on an approve option.
|
|
175
|
+
let approveIndex = -1;
|
|
176
|
+
for (let i = 0; i < tail.length; i++) {
|
|
177
|
+
const l = tail[i];
|
|
178
|
+
if (!hasSelectorGlyph(l.leadGlyphs))
|
|
179
|
+
continue;
|
|
180
|
+
const m = OPTION_PREFIX_RE.exec(l.text);
|
|
181
|
+
if (!m)
|
|
182
|
+
continue;
|
|
183
|
+
const rest = l.text.slice(m[0].length);
|
|
184
|
+
if (sig.approveLabels.test(rest)) {
|
|
185
|
+
approveIndex = i;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (approveIndex < 0)
|
|
190
|
+
return null;
|
|
191
|
+
// (3) genuine bottom + not generating (generating handled at the top).
|
|
192
|
+
if (!withinBottomWindow(tail, approveIndex))
|
|
193
|
+
return null;
|
|
194
|
+
if (!lastLineIsMenuStructure(tail))
|
|
195
|
+
return null;
|
|
196
|
+
const matchedPatternNames = [...matched].sort();
|
|
197
|
+
const stableFingerprint = sha256(framework + '|' + matchedPatternNames.join(','));
|
|
198
|
+
return { framework, matchedPatternNames, approveKey: 'Enter', stableFingerprint };
|
|
199
|
+
}
|
|
200
|
+
// ─── Layer 3 — prose-AGNOSTIC persisting-menu detector ───────────────────────────
|
|
201
|
+
/**
|
|
202
|
+
* Pure Layer-3 detector. Prose-agnostic by design (so it catches drift): matches
|
|
203
|
+
* purely on STRUCTURE — (i) a glyph-led numbered option line, (ii) a generic
|
|
204
|
+
* blocking affordance (`Esc to cancel` / `Do you want to proceed` / ≥2 numbered
|
|
205
|
+
* options), (iii) genuine bottom, (iv) not generating. Deliberately matches the
|
|
206
|
+
* cases Layer 2 declines (❯ not on an approve option, prose-drift) AS WELL AS a
|
|
207
|
+
* genuinely open non-approval picker (an accepted, benign surface — something IS
|
|
208
|
+
* waiting for input the agent cannot self-answer, worth one notice).
|
|
209
|
+
*/
|
|
210
|
+
export function detectPersistingMenu(tail, isGenerating) {
|
|
211
|
+
if (isGenerating)
|
|
212
|
+
return null;
|
|
213
|
+
if (!tail.length)
|
|
214
|
+
return null;
|
|
215
|
+
// The full option set (for the structure key) + the glyph-led subset (the trigger).
|
|
216
|
+
const numberedLines = [];
|
|
217
|
+
let glyphLedNumberedInWindow = false;
|
|
218
|
+
for (let i = 0; i < tail.length; i++) {
|
|
219
|
+
const l = tail[i];
|
|
220
|
+
if (!NUMBERED_OPTION_RE.test(l.text))
|
|
221
|
+
continue;
|
|
222
|
+
numberedLines.push(l);
|
|
223
|
+
if (hasAnyLeadGlyph(l.leadGlyphs) && withinBottomWindow(tail, i)) {
|
|
224
|
+
glyphLedNumberedInWindow = true;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// (i) at least one glyph-led numbered option line near the bottom.
|
|
228
|
+
if (!glyphLedNumberedInWindow)
|
|
229
|
+
return null;
|
|
230
|
+
// (ii) a generic blocking affordance.
|
|
231
|
+
const joined = joinedText(tail);
|
|
232
|
+
const hasAffordance = AFFORDANCE_ESC_RE.test(joined) ||
|
|
233
|
+
AFFORDANCE_PROCEED_RE.test(joined) ||
|
|
234
|
+
numberedLines.length >= 2;
|
|
235
|
+
if (!hasAffordance)
|
|
236
|
+
return null;
|
|
237
|
+
// (iii) genuine bottom.
|
|
238
|
+
if (!lastLineIsMenuStructure(tail))
|
|
239
|
+
return null;
|
|
240
|
+
const optionLabels = numberedLines.map((l) => l.text).sort();
|
|
241
|
+
return { optionLabels };
|
|
242
|
+
}
|
|
243
|
+
const KEY_SEP = '';
|
|
244
|
+
// ─── The driver ──────────────────────────────────────────────────────────────────
|
|
245
|
+
export class PermissionPromptAutoResolver {
|
|
246
|
+
deps;
|
|
247
|
+
/** Layer-2 episode state, keyed (session, stableFingerprint). */
|
|
248
|
+
episodes = new Map();
|
|
249
|
+
/** Layer-3 persistence state, keyed (session, menuStructureKey). */
|
|
250
|
+
persistMenus = new Map();
|
|
251
|
+
/** Last evaluate/sweep wall-clock — the GuardRegistry liveness read. */
|
|
252
|
+
lastTickAt = 0;
|
|
253
|
+
constructor(deps) {
|
|
254
|
+
this.deps = deps;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Per-candidate tick logic for one running session. Captures nothing of its own —
|
|
258
|
+
* the caller passes the already-in-hand fuller tail. Layer 2 owns a tick it
|
|
259
|
+
* matched (returns before Layer 3), so the two can never double-raise one wedge.
|
|
260
|
+
*/
|
|
261
|
+
async evaluate(session, fullTail) {
|
|
262
|
+
this.lastTickAt = this.deps.now();
|
|
263
|
+
if (this.deps.emergencyDisabled())
|
|
264
|
+
return;
|
|
265
|
+
const now = this.deps.now();
|
|
266
|
+
const generating = this.deps.isGenerating(joinedText(fullTail));
|
|
267
|
+
// Layer 2 — try every registered framework signature.
|
|
268
|
+
let approval = null;
|
|
269
|
+
for (const fw of Object.keys(APPROVAL_PROMPT_SIGNATURES)) {
|
|
270
|
+
const m = detectApprovalPrompt(fullTail, fw, generating);
|
|
271
|
+
if (m) {
|
|
272
|
+
approval = m;
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (approval) {
|
|
277
|
+
const keepL2 = this.l2Key(session, approval.stableFingerprint);
|
|
278
|
+
this.reconcileSession(session, keepL2, null, now);
|
|
279
|
+
await this.handleLayer2(session, approval, now);
|
|
280
|
+
return; // Layer 2 owns this tick.
|
|
281
|
+
}
|
|
282
|
+
// Layer 3 — prose-agnostic persisting-menu detection.
|
|
283
|
+
const menu = detectPersistingMenu(fullTail, generating);
|
|
284
|
+
if (menu) {
|
|
285
|
+
const mk = this.menuStructureKey(session, menu.optionLabels);
|
|
286
|
+
const keepL3 = this.l3Key(session, mk);
|
|
287
|
+
this.reconcileSession(session, null, keepL3, now);
|
|
288
|
+
this.handleLayer3(session, mk, now);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
// Nothing matched → every prompt for this session cleared.
|
|
292
|
+
this.reconcileSession(session, null, null, now);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Evict every state entry for `session` EXCEPT the one active this tick (the
|
|
296
|
+
* reset-on-clear rule). An evicted Layer-2 entry that had un-cleared sends and was
|
|
297
|
+
* not already terminal audits `cleared` (the episode's prompt was answered/gone).
|
|
298
|
+
*/
|
|
299
|
+
reconcileSession(session, keepL2Key, keepL3Key, now) {
|
|
300
|
+
const sessionPrefix = session + KEY_SEP;
|
|
301
|
+
for (const [k, st] of this.episodes) {
|
|
302
|
+
if (!k.startsWith(sessionPrefix))
|
|
303
|
+
continue;
|
|
304
|
+
if (k === keepL2Key)
|
|
305
|
+
continue;
|
|
306
|
+
if (st.consecutiveUnclearedSends > 0 && !st.terminalRaised) {
|
|
307
|
+
this.audit(now, st.session, st.framework, st.matchedPatternNames, null, st.fingerprint, st.consecutiveUnclearedSends, 'cleared');
|
|
308
|
+
}
|
|
309
|
+
this.episodes.delete(k);
|
|
310
|
+
}
|
|
311
|
+
for (const [k, st] of this.persistMenus) {
|
|
312
|
+
if (!k.startsWith(sessionPrefix))
|
|
313
|
+
continue;
|
|
314
|
+
if (k === keepL3Key)
|
|
315
|
+
continue;
|
|
316
|
+
this.persistMenus.delete(k);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
async handleLayer2(session, approval, now) {
|
|
320
|
+
const key = this.l2Key(session, approval.stableFingerprint);
|
|
321
|
+
let st = this.episodes.get(key);
|
|
322
|
+
if (!st) {
|
|
323
|
+
st = {
|
|
324
|
+
session,
|
|
325
|
+
fingerprint: approval.stableFingerprint,
|
|
326
|
+
framework: approval.framework,
|
|
327
|
+
matchedPatternNames: approval.matchedPatternNames,
|
|
328
|
+
consecutiveUnclearedSends: 0,
|
|
329
|
+
createdAt: now,
|
|
330
|
+
lastTick: now,
|
|
331
|
+
terminalRaised: false,
|
|
332
|
+
};
|
|
333
|
+
this.episodes.set(key, st);
|
|
334
|
+
}
|
|
335
|
+
st.lastTick = now;
|
|
336
|
+
// Already surfaced as un-clearable → stop sending this episode.
|
|
337
|
+
if (st.terminalRaised)
|
|
338
|
+
return;
|
|
339
|
+
// MAX_ATTEMPTS consecutive un-cleared sends and the menu is STILL present → Terminal.
|
|
340
|
+
if (st.consecutiveUnclearedSends >= MAX_ATTEMPTS) {
|
|
341
|
+
st.terminalRaised = true;
|
|
342
|
+
this.deps.raiseDefect({
|
|
343
|
+
sessionName: session,
|
|
344
|
+
layer: 'layer2',
|
|
345
|
+
dedupKey: session + '|' + approval.stableFingerprint,
|
|
346
|
+
fingerprint: approval.stableFingerprint,
|
|
347
|
+
matchedPatternNames: approval.matchedPatternNames,
|
|
348
|
+
reason: 'a session is wedged on an approval prompt I could not auto-clear (the host may have changed its prompt UI) — it needs a look',
|
|
349
|
+
});
|
|
350
|
+
this.audit(now, session, approval.framework, approval.matchedPatternNames, null, approval.stableFingerprint, st.consecutiveUnclearedSends, 'persisted-terminal');
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
// Re-capture-before-send (closes the capture→send race). Only send if the SAME
|
|
354
|
+
// fingerprint is still the live focused menu.
|
|
355
|
+
let recap = null;
|
|
356
|
+
try {
|
|
357
|
+
recap = await this.deps.reCaptureTail(session);
|
|
358
|
+
}
|
|
359
|
+
catch {
|
|
360
|
+
// @silent-fallback-ok — a re-capture failure is NOT a silent degradation: the
|
|
361
|
+
// send is aborted and the outcome is recorded as 'race-aborted' in the resolver
|
|
362
|
+
// audit (logs/permission-prompt-resolver.jsonl) below, not swallowed.
|
|
363
|
+
recap = null;
|
|
364
|
+
}
|
|
365
|
+
if (!recap) {
|
|
366
|
+
this.audit(now, session, approval.framework, approval.matchedPatternNames, null, approval.stableFingerprint, st.consecutiveUnclearedSends, 'race-aborted');
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
const reGen = this.deps.isGenerating(joinedText(recap));
|
|
370
|
+
const reMatch = detectApprovalPrompt(recap, approval.framework, reGen);
|
|
371
|
+
if (!reMatch || reMatch.stableFingerprint !== approval.stableFingerprint) {
|
|
372
|
+
this.audit(now, session, approval.framework, approval.matchedPatternNames, null, approval.stableFingerprint, st.consecutiveUnclearedSends, 'race-aborted');
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
// Send the (only) approve key.
|
|
376
|
+
let ok = false;
|
|
377
|
+
try {
|
|
378
|
+
ok = await Promise.resolve(this.deps.sendKey(session, 'Enter'));
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
ok = false;
|
|
382
|
+
}
|
|
383
|
+
if (!ok) {
|
|
384
|
+
this.audit(now, session, approval.framework, approval.matchedPatternNames, 'Enter', approval.stableFingerprint, st.consecutiveUnclearedSends, 'send-failed');
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
st.consecutiveUnclearedSends += 1;
|
|
388
|
+
const outcome = st.consecutiveUnclearedSends === 1 ? 'answered' : 'retried';
|
|
389
|
+
this.audit(now, session, approval.framework, approval.matchedPatternNames, 'Enter', approval.stableFingerprint, st.consecutiveUnclearedSends, outcome);
|
|
390
|
+
}
|
|
391
|
+
handleLayer3(session, menuStructureKey, now) {
|
|
392
|
+
const key = this.l3Key(session, menuStructureKey);
|
|
393
|
+
let st = this.persistMenus.get(key);
|
|
394
|
+
if (!st) {
|
|
395
|
+
st = {
|
|
396
|
+
session,
|
|
397
|
+
menuStructureKey,
|
|
398
|
+
persistTicks: 0,
|
|
399
|
+
createdAt: now,
|
|
400
|
+
lastTick: now,
|
|
401
|
+
terminalRaised: false,
|
|
402
|
+
};
|
|
403
|
+
this.persistMenus.set(key, st);
|
|
404
|
+
}
|
|
405
|
+
st.lastTick = now;
|
|
406
|
+
if (st.terminalRaised)
|
|
407
|
+
return;
|
|
408
|
+
st.persistTicks += 1;
|
|
409
|
+
if (st.persistTicks >= LAYER3_PERSIST_TICKS) {
|
|
410
|
+
st.terminalRaised = true;
|
|
411
|
+
this.deps.raiseDefect({
|
|
412
|
+
sessionName: session,
|
|
413
|
+
layer: 'layer3',
|
|
414
|
+
dedupKey: session + '|' + menuStructureKey,
|
|
415
|
+
menuStructureKey,
|
|
416
|
+
reason: 'a session is wedged on a menu I could not auto-clear (an unrecognized or drifted prompt) — it needs a look',
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Evict BOTH maps' entries for sessions no longer running, and any entry older
|
|
422
|
+
* than the per-entry TTL (stale lastTick). Neither map can grow with uptime.
|
|
423
|
+
* Called each tick.
|
|
424
|
+
*/
|
|
425
|
+
sweep(runningSessions) {
|
|
426
|
+
const now = this.deps.now();
|
|
427
|
+
this.lastTickAt = now;
|
|
428
|
+
for (const [k, st] of this.episodes) {
|
|
429
|
+
if (!runningSessions.has(st.session) || now - st.lastTick > STATE_TTL_MS) {
|
|
430
|
+
this.episodes.delete(k);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
for (const [k, st] of this.persistMenus) {
|
|
434
|
+
if (!runningSessions.has(st.session) || now - st.lastTick > STATE_TTL_MS) {
|
|
435
|
+
this.persistMenus.delete(k);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
/** Cheap, no-I/O runtime liveness read for the GuardRegistry (GET /guards). */
|
|
440
|
+
guardStatus() {
|
|
441
|
+
return { enabled: !this.deps.emergencyDisabled(), lastTickAt: this.lastTickAt };
|
|
442
|
+
}
|
|
443
|
+
/** Current live state-map sizes (both are provably bounded by the eviction triple). */
|
|
444
|
+
stateSizes() {
|
|
445
|
+
return { episodes: this.episodes.size, persistMenus: this.persistMenus.size };
|
|
446
|
+
}
|
|
447
|
+
// ─── internals ─────────────────────────────────────────────────────────────────
|
|
448
|
+
l2Key(session, fingerprint) {
|
|
449
|
+
return session + KEY_SEP + fingerprint;
|
|
450
|
+
}
|
|
451
|
+
l3Key(session, menuStructureKey) {
|
|
452
|
+
return session + KEY_SEP + menuStructureKey;
|
|
453
|
+
}
|
|
454
|
+
menuStructureKey(session, optionLabels) {
|
|
455
|
+
return sha256(session + '|' + optionLabels.join(','));
|
|
456
|
+
}
|
|
457
|
+
audit(ts, sessionName, framework, matchedPatternNames, keySent, fingerprint, attempt, outcome) {
|
|
458
|
+
try {
|
|
459
|
+
this.deps.appendAudit({
|
|
460
|
+
ts,
|
|
461
|
+
sessionName,
|
|
462
|
+
framework,
|
|
463
|
+
matchedPatternNames,
|
|
464
|
+
keySent,
|
|
465
|
+
fingerprint,
|
|
466
|
+
attempt,
|
|
467
|
+
outcome,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
// Observability must never throw into the monitor loop.
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=PermissionPromptAutoResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionPromptAutoResolver.js","sourceRoot":"","sources":["../../src/monitoring/PermissionPromptAutoResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresenceProxy.d.ts","sourceRoot":"","sources":["../../src/monitoring/PresenceProxy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PresenceProxy.d.ts","sourceRoot":"","sources":["../../src/monitoring/PresenceProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -818,6 +818,13 @@ export class PresenceProxy {
|
|
|
818
818
|
}
|
|
819
819
|
if (!stuck)
|
|
820
820
|
return null;
|
|
821
|
+
// The framework approval-prompt class is NEVER surfaced to the user — the
|
|
822
|
+
// PermissionPromptAutoResolver auto-clears it, and only if it genuinely
|
|
823
|
+
// cannot does it raise a Terminal Attention defect (the sole surface).
|
|
824
|
+
// Suppress here UNCONDITIONALLY (a consumer policy, not a classifier
|
|
825
|
+
// contract inversion), with no lifecycle gap.
|
|
826
|
+
if (stuck.kind === 'approval-prompt-waiting')
|
|
827
|
+
return PRESENCE_SUPPRESS;
|
|
821
828
|
// A recovery sentinel already messaging about this stuck state owns the
|
|
822
829
|
// voice — mirror Tier 3's silent return (suppress, do NOT fall through to
|
|
823
830
|
// the "actively working" fallback, which would re-introduce the lie).
|
|
@@ -1140,6 +1147,17 @@ export class PresenceProxy {
|
|
|
1140
1147
|
if (snapshot) {
|
|
1141
1148
|
const stuck = classifyStuckSignature(snapshot);
|
|
1142
1149
|
if (stuck) {
|
|
1150
|
+
// Framework approval-prompt: NEVER surfaced to the user, NEVER 'dead'
|
|
1151
|
+
// (so it is not respawned). The PermissionPromptAutoResolver owns
|
|
1152
|
+
// clearing it; the only user-facing surface is its Terminal defect.
|
|
1153
|
+
// Unconditional suppression (consumer policy), with no lifecycle gap.
|
|
1154
|
+
if (stuck.kind === 'approval-prompt-waiting') {
|
|
1155
|
+
state.tier3Assessment = 'waiting';
|
|
1156
|
+
state.tier3Summary = 'approval-prompt (auto-clearing)';
|
|
1157
|
+
this.config.releaseTriageMutex?.(state.sessionName, 'presence-proxy');
|
|
1158
|
+
this.persistState(topicId, state);
|
|
1159
|
+
return;
|
|
1160
|
+
}
|
|
1143
1161
|
if (state.cancelled) {
|
|
1144
1162
|
this.config.releaseTriageMutex?.(state.sessionName, 'presence-proxy');
|
|
1145
1163
|
return;
|