@0xmaxma/claude-gateway 1.3.18 → 1.3.20

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.
Files changed (38) hide show
  1. package/config.template.json +3 -2
  2. package/dist/agent/runner.d.ts.map +1 -1
  3. package/dist/agent/runner.js +2 -1
  4. package/dist/agent/runner.js.map +1 -1
  5. package/dist/api/gateway-router.d.ts.map +1 -1
  6. package/dist/api/gateway-router.js +6 -4
  7. package/dist/api/gateway-router.js.map +1 -1
  8. package/dist/api/line-webhook-router.d.ts +2 -13
  9. package/dist/api/line-webhook-router.d.ts.map +1 -1
  10. package/dist/api/line-webhook-router.js +3 -23
  11. package/dist/api/line-webhook-router.js.map +1 -1
  12. package/dist/api/router.js +2 -2
  13. package/dist/api/router.js.map +1 -1
  14. package/dist/api/webhooks-router.d.ts +36 -0
  15. package/dist/api/webhooks-router.d.ts.map +1 -0
  16. package/dist/api/webhooks-router.js +92 -0
  17. package/dist/api/webhooks-router.js.map +1 -0
  18. package/dist/session/process.d.ts.map +1 -1
  19. package/dist/session/process.js +2 -3
  20. package/dist/session/process.js.map +1 -1
  21. package/dist/shell/claude-pty-shell.js +230 -100
  22. package/dist/shell/claude-pty-shell.js.map +1 -1
  23. package/dist/shell/menu-probe.d.ts +77 -0
  24. package/dist/shell/menu-probe.d.ts.map +1 -0
  25. package/dist/shell/menu-probe.js +89 -0
  26. package/dist/shell/menu-probe.js.map +1 -0
  27. package/dist/shell/screen.d.ts +60 -72
  28. package/dist/shell/screen.d.ts.map +1 -1
  29. package/dist/shell/screen.js +149 -153
  30. package/dist/shell/screen.js.map +1 -1
  31. package/dist/shell/tailer.d.ts +29 -7
  32. package/dist/shell/tailer.d.ts.map +1 -1
  33. package/dist/shell/tailer.js +19 -29
  34. package/dist/shell/tailer.js.map +1 -1
  35. package/dist/types.d.ts +0 -4
  36. package/dist/types.d.ts.map +1 -1
  37. package/mcp/tools/telegram/receiver-server.ts +2 -1
  38. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScreenModel = exports.TUI_PERMISSION_FOOTER_TOKENS = exports.TUI_PERMISSION_PROMPT = exports.TUI_MENU_OPTION_RE = exports.TUI_MENU_FOOTER = exports.TUI_SYNTHETIC_MODEL = exports.TUI_REQUEST_TOO_LARGE_DISMISS = exports.TUI_REQUEST_TOO_LARGE = exports.TUI_BYPASS_PERMS = exports.TUI_PROMPT_RE = exports.TUI_BUSY_MARKER = void 0;
3
+ exports.ScreenModel = exports.TUI_MENU_OPTION_RE = exports.TUI_SYNTHETIC_MODEL = exports.TUI_REQUEST_TOO_LARGE_DISMISS = exports.TUI_REQUEST_TOO_LARGE = exports.TUI_BYPASS_PERMS = exports.TUI_PROMPT_RE = exports.TUI_BUSY_MARKER = void 0;
4
4
  exports.neutralizeTuiTriggers = neutralizeTuiTriggers;
5
+ exports.parseInteractivePrompt = parseInteractivePrompt;
5
6
  exports.parseMenuChoice = parseMenuChoice;
6
7
  exports.extractChannelContent = extractChannelContent;
7
8
  exports.formatMenuPrompt = formatMenuPrompt;
@@ -88,59 +89,55 @@ function neutralizeTuiTriggers(text) {
88
89
  .split(exports.TUI_REQUEST_TOO_LARGE).join('Request too large ( max')
89
90
  .split(exports.TUI_REQUEST_TOO_LARGE_DISMISS).join('esc to go back');
90
91
  }
91
- /**
92
- * Interactive select-menu footer markers (e.g. AskUserQuestion). The footer reads
93
- * "Enter to select · ↑/↓ to navigate · Esc to cancel"; we match on the two stable
94
- * fragments so spacing/middle-dot variations across TUI versions don't break it.
95
- */
96
- exports.TUI_MENU_FOOTER = ['to navigate', 'to cancel'];
97
92
  /** A numbered option row, with an optional leading ❯/> highlight marker. */
98
93
  exports.TUI_MENU_OPTION_RE = /^\s*[❯>]?\s*(\d+)\.\s+(.+?)\s*$/;
99
94
  /**
100
- * A tool-permission prompt blocking on keyboard input. Distinct from the
101
- * AskUserQuestion select menu: Claude Code raises this for guarded operations
102
- * (e.g. a "Dangerous rm operation on possibly-empty variable path" circuit
103
- * breaker) that prompt EVEN under --dangerously-skip-permissions, since
104
- * bypassPermissions deliberately keeps a few catastrophe guards (rm against
105
- * root/home, possibly-empty globs). The wrapper otherwise assumes no permission
106
- * prompt ever appears, so without this detector the PTY wedges at the Yes/No
107
- * forever — nobody can answer it from chat and the typing indicator never clears.
108
- *
109
- * Matched by the universal question line plus a footer token unique to permission
110
- * prompts: the select-menu footer carries "↑/↓ to navigate" and the 32MB overlay
111
- * carries "esc to go back", so "Tab to amend" / "ctrl+e to explain" disambiguate
112
- * cleanly. The tokens are the fuller phrases (not bare "to amend" / "to explain")
113
- * so a chat reply that merely contains those words can't satisfy the footer gate.
114
- * Region-restricted (bottom rows) + multi-marker + a required ❯/> selection caret
115
- * so quoted prose in scrollback (a numbered list with none of the live-prompt
116
- * chrome) cannot trip it — the same defense detectDialog() uses, plus more.
117
- * Detection only ever BRIDGES the choice to a human; it never presses a key on its
118
- * own (a destructive guard must not be auto-accepted), making it strictly safer
119
- * than detectDialog.
95
+ * The universal question line Claude Code's tool-permission prompt (e.g. the
96
+ * dangerous-rm circuit breaker that fires even under
97
+ * --dangerously-skip-permissions) always renders. Used only as a cosmetic
98
+ * classifier in readInteractivePrompt() never a gate: liveness itself is
99
+ * established behaviorally (see Driver.advanceProbe() in claude-pty-shell.ts)
100
+ * before this is ever consulted.
120
101
  */
121
- exports.TUI_PERMISSION_PROMPT = 'Do you want to proceed?';
122
- exports.TUI_PERMISSION_FOOTER_TOKENS = ['Tab to amend', 'ctrl+e to explain'];
102
+ const PERMISSION_QUESTION = 'Do you want to proceed?';
103
+ /** A live select prompt always highlights one option with a leading ❯ caret
104
+ * (kept even inside a box border) — used by parseInteractivePrompt() and
105
+ * interactivePromptBlocking() to tell a real option row apart from a numbered
106
+ * list in ordinary prose. Deliberately U+276F only, NOT the `[❯>]`
107
+ * alternation TUI_MENU_OPTION_RE uses for row content: the real TUI never
108
+ * renders an ASCII `>` caret, but prose does constantly (markdown blockquotes
109
+ * like "> 1. …"), and accepting `>` here is what let static quoted text
110
+ * qualify as a live highlight (PR #181 review, finding F1). */
111
+ const CARET_OPTION_RE = /^\s*│?\s*❯\s*\d+\./;
123
112
  /**
124
113
  * Parse the numbered option rows out of a block of screen lines and return the
125
- * live run as 1..N options. Scrollback above a prompt can contain stale numbered
126
- * lines (a prior chat message rendered as "1. 2. …"), so we take the LAST run
127
- * that starts at "1." and increments by one that is the live prompt nearest the
128
- * footer, not history. Returns null for fewer than two options. Shared by
129
- * detectMenu() and detectPermissionPrompt() so both number options identically.
114
+ * live run as 1..N options plus the 1-based index of its ❯-highlighted row.
115
+ * Scrollback above a prompt can contain stale numbered lines (a prior chat
116
+ * message rendered as "1. 2. …"), so we take the LAST run that starts at
117
+ * "1." and increments by one that is the live prompt, not history.
118
+ *
119
+ * The highlight is read from the run's OWN rows, never from elsewhere on
120
+ * screen: a separate whole-screen caret scan once let the input line — which
121
+ * renders "❯ <recalled text>" after the probe's Up fallback recalls input
122
+ * history — supply a "moved" highlight for static menu-shaped scrollback and
123
+ * bridge a fabricated menu (PR #181 review round 2, finding 2). A live select
124
+ * prompt highlights exactly one of its rows, so anything else (zero carets =
125
+ * prose that merely looks numbered; two+ = a run polluted by a caret-bearing
126
+ * non-menu line) returns null (fail-safe: no bridge rather than a forged one).
127
+ *
128
+ * Returns null for fewer than two options.
130
129
  *
131
130
  * `stripBorder` strips a left box border ("│ ") before matching, for prompts that
132
- * render inside a rounded dialog box (the permission prompt). detectMenu() leaves
133
- * it off so its full-buffer scan stays byte-identical to before — stripping the
134
- * border there would let "│ 1. …" lines in dialog-bordered scrollback newly parse
135
- * as options and shift the live run it picks.
131
+ * render inside a rounded dialog box (the permission prompt).
136
132
  */
137
- function parseOptionRun(lines, stripBorder = false) {
133
+ function parseLiveOptionRun(lines, stripBorder = false) {
138
134
  const matches = [];
139
135
  for (const raw of lines) {
140
136
  const line = stripBorder ? raw.replace(/^\s*│\s?/, '') : raw;
141
137
  const m = exports.TUI_MENU_OPTION_RE.exec(line);
138
+ // CARET_OPTION_RE tolerates the box border itself, so test the raw line.
142
139
  if (m)
143
- matches.push({ index: Number(m[1]), label: m[2].trim() });
140
+ matches.push({ index: Number(m[1]), label: m[2].trim(), caret: CARET_OPTION_RE.test(raw) });
144
141
  }
145
142
  if (matches.length < 2)
146
143
  return null;
@@ -157,7 +154,89 @@ function parseOptionRun(lines, stripBorder = false) {
157
154
  run.push(matches[i]);
158
155
  expected++;
159
156
  }
160
- return run.length >= 2 ? run : null;
157
+ if (run.length < 2)
158
+ return null;
159
+ const caretRows = run.filter((r) => r.caret);
160
+ if (caretRows.length !== 1)
161
+ return null;
162
+ return {
163
+ options: run.map(({ index, label }) => ({ index, label })),
164
+ highlighted: caretRows[0].index,
165
+ };
166
+ }
167
+ /**
168
+ * Parse a live interactive overlay out of a full screen snapshot — an
169
+ * AskUserQuestion-style menu or a tool-permission Yes/No prompt. Pure
170
+ * function over screen text (as produced by ScreenModel.text()) so the
171
+ * behavioral probe can parse its BEFORE snapshot and the live screen with
172
+ * identical logic and compare the highlighted row across the two
173
+ * (Driver.advanceProbe() in claude-pty-shell.ts).
174
+ *
175
+ * This is a PURE READER: it never decides whether a prompt exists. Callers
176
+ * must already have proven liveness behaviorally — the probe only bridges
177
+ * when the ❯ highlight MOVED between snapshots (confirmProbeReaction() in
178
+ * menu-probe.ts), which static menu-shaped text in prose/scrollback cannot do.
179
+ *
180
+ * Returns null when the region doesn't parse into a clean 1..N option run
181
+ * with a ❯-highlighted row (fail-safe: no bridge rather than a garbled one).
182
+ *
183
+ * isPermission is decided by whether "Do you want to proceed?" appears in the
184
+ * bottom region — a COSMETIC classification (chooses warning-style vs
185
+ * plain-menu-style chat formatting) that defaults to a plain menu when
186
+ * ambiguous; it never gates whether to bridge.
187
+ */
188
+ function parseInteractivePrompt(screenText) {
189
+ const allLines = screenText.split('\n');
190
+ const bottomLines = allLines.slice(-DIALOG_REGION_ROWS);
191
+ const isPermission = bottomLines.some((l) => l.includes(PERMISSION_QUESTION));
192
+ if (!isPermission) {
193
+ // A menu can render tall (more options than fit a bottom-region window)
194
+ // or sit high on a sparse screen (fresh session, short scrollback), so
195
+ // scan the whole viewport. parseLiveOptionRun() already isolates the
196
+ // live 1..N run nearest the end of the buffer — with its ❯ highlight
197
+ // read from the run's own rows — so stale numbered scrollback above it
198
+ // can't inflate or shift the list, and plain prose that merely happens
199
+ // to look like a numbered list never parses (no highlight row).
200
+ const run = parseLiveOptionRun(allLines);
201
+ return run
202
+ ? { options: run.options, context: '', isPermission: false, highlighted: run.highlighted }
203
+ : null;
204
+ }
205
+ // Use the LAST occurrence of the question — the live prompt sits nearest
206
+ // the bottom, so a reply/history that quotes the question higher in the
207
+ // bottom region can't capture the question index and empty the context.
208
+ let qIdx = -1;
209
+ for (let i = bottomLines.length - 1; i >= 0; i--) {
210
+ if (bottomLines[i].includes(PERMISSION_QUESTION)) {
211
+ qIdx = i;
212
+ break;
213
+ }
214
+ }
215
+ const optionRegion = bottomLines.slice(qIdx + 1);
216
+ const run = parseLiveOptionRun(optionRegion, true);
217
+ if (!run)
218
+ return null;
219
+ // Context = the warning + command shown above the question. Bound it to the
220
+ // dialog box (scan up for the rounded top border ╭) so conversation lines
221
+ // that merely share the bottom region aren't swept in; fall back to the
222
+ // few lines immediately above the question when the prompt isn't boxed.
223
+ const isBorderOnly = (l) => /^[\s│╭╮╰╯─]*$/.test(l);
224
+ const stripBorder = (l) => l.replace(/^[\s│]+/, '').replace(/[\s│]+$/, '');
225
+ const aboveQ = bottomLines.slice(0, qIdx);
226
+ let boxTop = -1;
227
+ for (let i = aboveQ.length - 1; i >= 0; i--) {
228
+ if (/[╭╮]/.test(aboveQ[i])) {
229
+ boxTop = i;
230
+ break;
231
+ }
232
+ }
233
+ const contextLines = boxTop >= 0 ? aboveQ.slice(boxTop + 1) : aboveQ.slice(-4);
234
+ const context = contextLines
235
+ .filter((l) => !isBorderOnly(l))
236
+ .map(stripBorder)
237
+ .filter((l) => l.length > 0)
238
+ .join('\n');
239
+ return { options: run.options, context, isPermission: true, highlighted: run.highlighted };
161
240
  }
162
241
  /**
163
242
  * Parse a user's menu reply (typed number or a button's choice payload) into a
@@ -266,21 +345,6 @@ class ScreenModel {
266
345
  hasPrompt() {
267
346
  return exports.TUI_PROMPT_RE.test(this.text());
268
347
  }
269
- /**
270
- * The TUI is showing the recoverable "Request too large (max 32MB)" error.
271
- * Requires both the error prefix and the dismiss-footer marker.
272
- *
273
- * SUPERSEDED as the trigger: a verbatim copy of the overlay sentence carries
274
- * BOTH markers, so re-injected history or an agent quoting the error tripped a
275
- * false restart loop. Detection now comes from the transcript's `<synthetic>`
276
- * assistant record (see TranscriptTailer.onRequestTooLarge), which text on
277
- * screen cannot forge. Kept (and tested) only to document that screen-scraping
278
- * this error is unreliable — do NOT re-wire it into the tick() trigger.
279
- */
280
- detectRequestTooLarge() {
281
- const text = this.text();
282
- return text.includes(exports.TUI_REQUEST_TOO_LARGE) && text.includes(exports.TUI_REQUEST_TOO_LARGE_DISMISS);
283
- }
284
348
  detectDialog() {
285
349
  // Scan only the bottom region: a real modal dialog renders there, while a
286
350
  // reply/history quoting "Bypass Permissions mode … Yes, I accept" sits in the
@@ -294,109 +358,41 @@ class ScreenModel {
294
358
  return null;
295
359
  }
296
360
  /**
297
- * Detect an interactive select menu blocking on keyboard input (e.g. the
298
- * AskUserQuestion / plan-approval prompt) and parse its numbered options.
299
- * Returns the options in display order, or null when no menu is on screen.
300
- *
301
- * Requires the select-menu footer AND at least two numbered rows — ordinary
302
- * numbered lists in assistant output never carry the footer, so this won't
303
- * false-positive on them. The bypass-permissions dialog also matches the
304
- * footer; callers must check detectDialog() first and let it auto-accept.
361
+ * Extract the option labels (and, for a permission prompt, the warning/command
362
+ * context) from a live interactive overlay on the current screen. Thin
363
+ * wrapper over {@link parseInteractivePrompt} see its doc for semantics
364
+ * (pure reader, never a gate; probe callers compare `highlighted` across
365
+ * before/after snapshots to prove liveness).
305
366
  */
306
- detectMenu() {
307
- const text = this.text();
308
- if (!exports.TUI_MENU_FOOTER.every((s) => text.includes(s)))
309
- return null;
310
- // Scan only the region ABOVE the footer — the live menu's options always
311
- // sit between the question and the "to navigate · to cancel" footer.
312
- const lines = text.split('\n');
313
- const footerIdx = lines.findIndex((l) => exports.TUI_MENU_FOOTER.some((s) => l.includes(s)));
314
- const region = footerIdx >= 0 ? lines.slice(0, footerIdx) : lines;
315
- // parseOptionRun() takes the live 1..N run nearest the footer, so stale
316
- // numbered scrollback above the menu can't inflate or shift the option list.
317
- return parseOptionRun(region);
367
+ readInteractivePrompt() {
368
+ return parseInteractivePrompt(this.text());
318
369
  }
319
370
  /**
320
- * Detect a tool-permission prompt blocking on input (e.g. the dangerous-rm
321
- * circuit breaker that fires even under --dangerously-skip-permissions) and
322
- * parse its options + context. Returns null when no such prompt is on screen.
371
+ * True if a selectable prompt (menu row or permission Yes/No) still visibly
372
+ * occupies the screen a live caret (❯) beside a numbered option, scanned
373
+ * over the FULL viewport (a bottom-region window once let a bridged menu
374
+ * sit outside the check's view and skip its confirming Enter — PR #181
375
+ * review, F4).
323
376
  *
324
- * Region-restricted to the bottom rows and gated on BOTH the question line and
325
- * a permission-only footer token, so a reply/history that merely quotes the
326
- * prompt (sitting in scrollback above) never trips it. The bypass-permissions
327
- * startup dialog is handled by detectDialog()/auto-accept and is excluded here.
328
- * Callers must only ever BRIDGE this to a human never auto-select an option.
329
- */
330
- detectPermissionPrompt() {
331
- const text = this.bottomText(DIALOG_REGION_ROWS);
332
- if (!text.includes(exports.TUI_PERMISSION_PROMPT))
333
- return null;
334
- if (!exports.TUI_PERMISSION_FOOTER_TOKENS.some((t) => text.includes(t)))
335
- return null;
336
- // The "Bypass Permissions mode Yes, I accept" startup dialog is a separate
337
- // case with its own auto-accept don't double-handle it here.
338
- if (exports.TUI_BYPASS_PERMS.every((s) => text.includes(s)))
339
- return null;
340
- const lines = text.split('\n');
341
- // Use the LAST occurrence of the question — the live prompt sits nearest the
342
- // footer, so a reply/history that quotes "Do you want to proceed?" higher in
343
- // the bottom region can't capture the question index and empty the context.
344
- let qIdx = -1;
345
- for (let i = lines.length - 1; i >= 0; i--) {
346
- if (lines[i].includes(exports.TUI_PERMISSION_PROMPT)) {
347
- qIdx = i;
348
- break;
349
- }
350
- }
351
- const footerIdx = lines.findIndex((l, i) => i > qIdx && exports.TUI_PERMISSION_FOOTER_TOKENS.some((t) => l.includes(t)));
352
- // Options live strictly between the question and the footer.
353
- const optionRegion = footerIdx >= 0 ? lines.slice(qIdx + 1, footerIdx) : lines.slice(qIdx + 1);
354
- // A live select prompt always highlights one option with the ❯/> caret (kept
355
- // even inside a box border). Quoted prose numbered lists never carry it, so
356
- // requiring it closes the false-positive where conversational text pairs a
357
- // numbered list with the question + a footer-ish phrase.
358
- const hasCaret = optionRegion.some((l) => /^\s*│?\s*[❯>]\s*\d+\./.test(l));
359
- if (!hasCaret)
360
- return null;
361
- const options = parseOptionRun(optionRegion, true);
362
- if (!options)
363
- return null;
364
- // Context = the warning + command shown above the question. Bound it to the
365
- // dialog box (scan up for the rounded top border ╭) so conversation lines that
366
- // merely share the bottom region aren't swept in; fall back to the few lines
367
- // immediately above the question when the prompt isn't boxed.
368
- const isBorderOnly = (l) => /^[\s│╭╮╰╯─]*$/.test(l);
369
- const stripBorder = (l) => l.replace(/^[\s│]+/, '').replace(/[\s│]+$/, '');
370
- const aboveQ = lines.slice(0, qIdx);
371
- let boxTop = -1;
372
- for (let i = aboveQ.length - 1; i >= 0; i--) {
373
- if (/[╭╮]/.test(aboveQ[i])) {
374
- boxTop = i;
375
- break;
376
- }
377
- }
378
- const contextLines = boxTop >= 0 ? aboveQ.slice(boxTop + 1) : aboveQ.slice(-4);
379
- const context = contextLines
380
- .filter((l) => !isBorderOnly(l))
381
- .map(stripBorder)
382
- .filter((l) => l.length > 0)
383
- .join('\n');
384
- return { options, context };
385
- }
386
- /**
387
- * True if a select menu or permission prompt is still blocking on input at the
388
- * BOTTOM of the screen. Used to decide whether the confirming Enter after a typed
389
- * selection is still needed: scoping to the bottom region means stale footer /
390
- * numbered rows left in scrollback by an already-answered prompt can't keep a
391
- * stray Enter alive (which would submit an empty line at the idle caret).
392
- * detectMenu() deliberately scans the full buffer to parse a tall menu's options,
393
- * so it's the wrong signal for this liveness check — hence the dedicated method.
377
+ * DELIBERATELY PERMISSIVE only safe where a false positive is cheap.
378
+ * The input line renders "❯ <text>", so a user draft or recalled history
379
+ * entry whose text starts with "N." matches CARET_OPTION_RE exactly like a
380
+ * menu row; quoted menu text in visible scrollback matches too. Static text
381
+ * can never prove liveness (that's the behavioral probe's job), so this
382
+ * check must only gate actions that are harmless when it's wrong:
383
+ *
384
+ * - selectMenuOption()'s confirming Enter — a stray Enter at an idle
385
+ * empty caret is a no-op;
386
+ * - decideMenuCancel()'s menuVisible — worst case a bounded ESC re-send
387
+ * and a delayed submit (hard timeout caps it);
388
+ * - the Enter-swallowed retry, but ONLY for a menu-selection turn where
389
+ * a live menu genuinely can be on screen. Gating the retry of an
390
+ * ordinary turn on this check suppressed the retry whenever the
391
+ * unsubmitted draft itself started with "N." wedging the turn into
392
+ * the 30-min watchdog (PR #181 review round 2, finding 1).
394
393
  */
395
394
  interactivePromptBlocking() {
396
- const text = this.bottomText(DIALOG_REGION_ROWS);
397
- if (exports.TUI_MENU_FOOTER.every((s) => text.includes(s)))
398
- return true;
399
- return this.detectPermissionPrompt() !== null;
395
+ return this.text().split('\n').some((l) => CARET_OPTION_RE.test(l));
400
396
  }
401
397
  }
402
398
  exports.ScreenModel = ScreenModel;
@@ -1 +1 @@
1
- {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/shell/screen.ts"],"names":[],"mappings":";;;AA0FA,sDAKC;AAqFD,0CAKC;AAUD,sDAIC;AAGD,4CAGC;AASD,wDAIC;AA+ND,oDAKC;AA9bD,8CAA2C;AAY3C,mFAAmF;AACnF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;GAQG;AACU,QAAA,eAAe,GAAG,kBAAkB,CAAC;AACrC,QAAA,aAAa,GAAG,MAAM,CAAC;AACvB,QAAA,gBAAgB,GAAG,CAAC,yBAAyB,EAAE,eAAe,CAAU,CAAC;AAEtF;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AACU,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AACjD,QAAA,6BAA6B,GAAG,gBAAgB,CAAC;AAE9D;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI;SACR,KAAK,CAAC,6BAAqB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;SAC5D,KAAK,CAAC,qCAA6B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACU,QAAA,eAAe,GAAG,CAAC,aAAa,EAAE,WAAW,CAAU,CAAC;AACrE,4EAA4E;AAC/D,QAAA,kBAAkB,GAAG,iCAAiC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACU,QAAA,qBAAqB,GAAG,yBAAyB,CAAC;AAClD,QAAA,4BAA4B,GAAG,CAAC,cAAc,EAAE,mBAAmB,CAAU,CAAC;AAU3F;;;;;;;;;;;;;GAaG;AACH,SAAS,cAAc,CAAC,KAAe,EAAE,WAAW,GAAG,KAAK;IAC1D,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7D,MAAM,CAAC,GAAG,0BAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,QAAQ,EAAE,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,MAAM,CAAC,GAAG,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACzE,CAAC;AAED,6EAA6E;AAC7E,SAAgB,gBAAgB,CAAC,OAAqB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,0EAA0E,KAAK,EAAE,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,OAAe,EAAE,OAAqB;IAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,OAAO,qFAAqF,GAAG,wDAAwD,IAAI,EAAE,CAAC;AAChK,CAAC;AAED;;;;GAIG;AACH,MAAa,WAAW;IAMtB,YAA4B,OAAO,GAAG,EAAkB,OAAO,EAAE;QAArC,SAAI,GAAJ,IAAI,CAAM;QAAkB,SAAI,GAAJ,IAAI,CAAK;QAJzD,eAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,kGAAkG;QAC1F,kBAAa,GAAG,KAAK,CAAC;QAG5B,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAe,CAAC;YAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,uDAAuD;IACvD,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,IAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,QAAQ,CAAC,QAAgB,EAAE,MAAc;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,2EAA2E;IAC3E,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,uBAAe,CAAC,CAAC;IAC/C,CAAC;IAED,qFAAqF;IACrF,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAsC;IACtC,SAAS;QACP,OAAO,qBAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;OAUG;IACH,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,6BAAqB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,qCAA6B,CAAC,CAAC;IAC9F,CAAC;IAED,YAAY;QACV,0EAA0E;QAC1E,8EAA8E;QAC9E,8EAA8E;QAC9E,+EAA+E;QAC/E,4BAA4B;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,wBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,uBAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACjE,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,wEAAwE;QACxE,6EAA6E;QAC7E,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;;OAUG;IACH,sBAAsB;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAAqB,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,IAAI,CAAC,oCAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7E,6EAA6E;QAC7E,+DAA+D;QAC/D,IAAI,wBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,6EAA6E;QAC7E,6EAA6E;QAC7E,4EAA4E;QAC5E,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAAqB,CAAC,EAAE,CAAC;gBAAC,IAAI,GAAG,CAAC,CAAC;gBAAC,MAAM;YAAC,CAAC;QACpE,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,oCAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC9E,CAAC;QACF,6DAA6D;QAC7D,MAAM,YAAY,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC/F,6EAA6E;QAC7E,4EAA4E;QAC5E,2EAA2E;QAC3E,yDAAyD;QACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,4EAA4E;QAC5E,+EAA+E;QAC/E,6EAA6E;QAC7E,8DAA8D;QAC9D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,MAAM,GAAG,CAAC,CAAC;gBAAC,MAAM;YAAC,CAAC;QACpD,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,YAAY;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC/B,GAAG,CAAC,WAAW,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,yBAAyB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,uBAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,CAAC;IAChD,CAAC;CACF;AAnMD,kCAmMC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,oBAAoB,CAClC,GAAyC,EACzC,eAAuB;IAEvB,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,eAAe,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/shell/screen.ts"],"names":[],"mappings":"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"}
@@ -21,11 +21,40 @@ export interface AssistantRecord {
21
21
  uuid?: string;
22
22
  timestamp?: string;
23
23
  }
24
+ /** A tool_result content block on a `user` record (main-chain tool completion). */
25
+ export interface ToolResultBlock {
26
+ type: string;
27
+ tool_use_id?: string;
28
+ }
29
+ /** A `user` transcript record. Only the tool_result content blocks are read. */
30
+ export interface UserRecord {
31
+ type: 'user';
32
+ isSidechain?: boolean;
33
+ message?: {
34
+ content?: Array<ToolResultBlock>;
35
+ };
36
+ }
24
37
  export interface TailerEvents {
25
38
  /** A new (non-sidechain) assistant record was appended. */
26
39
  onAssistant: (record: AssistantRecord) => void;
27
40
  /** Claude finished a turn (system/turn_duration record). */
28
41
  onTurnEnd: (durationMs: number) => void;
42
+ /**
43
+ * A `tool_use` block appeared in a (non-sidechain) assistant record.
44
+ * `toolName` is the block's `name` (e.g. 'Task'). Emitted so consumers can
45
+ * track outstanding tool calls without re-walking `message.content`
46
+ * themselves — the mirror of onToolResult. Sidechain records (a sub-agent's
47
+ * own internal tool_use) are filtered out before this fires.
48
+ */
49
+ onToolUse?: (toolUseId: string, toolName: string) => void;
50
+ /**
51
+ * A non-sidechain tool_result landed for `toolUseId`. Fired for a 'user'
52
+ * record's tool_result content blocks — the main-chain signal that a tool
53
+ * call (e.g. Task, which runs an invisible sub-agent) has actually
54
+ * resolved. Sidechain tool_results (a sub-agent's own internal tool calls)
55
+ * are filtered out before this fires, same as onAssistant.
56
+ */
57
+ onToolResult?: (toolUseId: string) => void;
29
58
  /**
30
59
  * Claude Code hit the recoverable 32MB "Request too large" API error. Detected
31
60
  * authoritatively from the `<synthetic>` assistant record it writes to the
@@ -43,13 +72,6 @@ export interface TailerEvents {
43
72
  * model id AND the overlay text — neither alone is unique to the genuine error.
44
73
  */
45
74
  export declare function isSyntheticRequestTooLarge(message: AssistantRecord['message']): boolean;
46
- /**
47
- * True when an assistant record invokes a tool that raises a blocking menu. This
48
- * is the AUTHORITATIVE signal that a menu is genuinely on screen — used to gate
49
- * screen-based menu bridging so a reply/history that merely renders a menu-shaped
50
- * numbered list + footer can't spawn a phantom menu in chat.
51
- */
52
- export declare function hasInteractiveMenuToolUse(message: AssistantRecord['message']): boolean;
53
75
  /**
54
76
  * cwd → Claude Code project-dir slug (verified against v2.1.x: `/` and `.` both become `-`).
55
77
  * If Claude Code ever changes this scheme, findFile()'s fallback UUID scan will still
@@ -1 +1 @@
1
- {"version":3,"file":"tailer.d.ts","sourceRoot":"","sources":["../../src/shell/tailer.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,WAAW,CAAC;QAClB,uFAAuF;QACvF,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAC;QACvD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,4DAA4D;IAC5D,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,OAAO,CAMvF;AAiBD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,OAAO,CAMtF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAdzB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAuB;IAC3C,sFAAsF;IACtF,WAAW,SAAK;IAChB,mFAAmF;IACnF,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAS;gBAGvC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,SAAM;IAG/B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAKZ,wEAAwE;IACxE,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,IAAI;IA2CZ,OAAO,CAAC,QAAQ;CAwBjB"}
1
+ {"version":3,"file":"tailer.d.ts","sourceRoot":"","sources":["../../src/shell/tailer.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,6 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.TranscriptTailer = void 0;
37
37
  exports.isSyntheticRequestTooLarge = isSyntheticRequestTooLarge;
38
- exports.hasInteractiveMenuToolUse = hasInteractiveMenuToolUse;
39
38
  exports.projectSlug = projectSlug;
40
39
  exports.transcriptPath = transcriptPath;
41
40
  const fs = __importStar(require("fs"));
@@ -55,34 +54,6 @@ function isSyntheticRequestTooLarge(message) {
55
54
  .join(' ');
56
55
  return text.includes(screen_1.TUI_REQUEST_TOO_LARGE);
57
56
  }
58
- /**
59
- * Tools whose invocation puts the TUI into a blocking interactive select-menu the
60
- * gateway bridges to chat: AskUserQuestion and the plan-approval ExitPlanMode.
61
- *
62
- * - `AskUserQuestion` — verified present as a `tool_use` record in real transcripts.
63
- * - `ExitPlanMode` / `exit_plan_mode` — the plan-approval tool. Both the PascalCase
64
- * and legacy snake_case names appear in the Claude Code CLI binary, and the tool
65
- * name field varies by model, so both are listed to be safe. (No transcript
66
- * sample was available to confirm which the running model emits.)
67
- *
68
- * If a future tool raises a bridgeable menu, add it here; an omission only means
69
- * that menu isn't bridged (fail-safe), never a crash.
70
- */
71
- const MENU_TOOL_NAMES = new Set(['AskUserQuestion', 'ExitPlanMode', 'exit_plan_mode']);
72
- /**
73
- * True when an assistant record invokes a tool that raises a blocking menu. This
74
- * is the AUTHORITATIVE signal that a menu is genuinely on screen — used to gate
75
- * screen-based menu bridging so a reply/history that merely renders a menu-shaped
76
- * numbered list + footer can't spawn a phantom menu in chat.
77
- */
78
- function hasInteractiveMenuToolUse(message) {
79
- return message.content.some((b) => {
80
- if (b.type !== 'tool_use')
81
- return false;
82
- const name = b.name;
83
- return typeof name === 'string' && MENU_TOOL_NAMES.has(name);
84
- });
85
- }
86
57
  /**
87
58
  * cwd → Claude Code project-dir slug (verified against v2.1.x: `/` and `.` both become `-`).
88
59
  * If Claude Code ever changes this scheme, findFile()'s fallback UUID scan will still
@@ -220,12 +191,31 @@ class TranscriptTailer {
220
191
  return;
221
192
  }
222
193
  this.events.onAssistant(record);
194
+ if (this.events.onToolUse) {
195
+ for (const block of message.content) {
196
+ if (block.type === 'tool_use' && typeof block.id === 'string') {
197
+ const name = typeof block.name === 'string' ? block.name : '';
198
+ this.events.onToolUse(block.id, name);
199
+ }
200
+ }
201
+ }
223
202
  }
224
203
  return;
225
204
  }
226
205
  if (record.type === 'system' && record.subtype === 'turn_duration') {
227
206
  const durationMs = typeof record.durationMs === 'number' ? record.durationMs : 0;
228
207
  this.events.onTurnEnd(durationMs);
208
+ return;
209
+ }
210
+ if (record.type === 'user' && this.events.onToolResult) {
211
+ const message = record.message;
212
+ if (message && Array.isArray(message.content)) {
213
+ for (const block of message.content) {
214
+ if (block.type === 'tool_result' && typeof block.tool_use_id === 'string') {
215
+ this.events.onToolResult(block.tool_use_id);
216
+ }
217
+ }
218
+ }
229
219
  }
230
220
  }
231
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tailer.js","sourceRoot":"","sources":["../../src/shell/tailer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,gEAMC;AAuBD,8DAMC;AAOD,kCAEC;AAED,wCAEC;AAjGD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAsE;AAyCtE;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,OAAmC;IAC5E,IAAI,OAAO,CAAC,KAAK,KAAK,4BAAmB;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACtD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,CAAC,QAAQ,CAAC,8BAAqB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,OAAmC;IAC3E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAChC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QACxC,MAAM,IAAI,GAAI,CAAwB,CAAC,IAAI,CAAC;QAC5C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW,EAAE,SAAiB;IAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;AAChG,CAAC;AAED;;;;GAIG;AACH,MAAa,gBAAgB;IAW3B,YACmB,GAAW,EACX,SAAiB,EACjB,MAAoB,EACpB,SAAS,GAAG;QAHZ,QAAG,GAAH,GAAG,CAAQ;QACX,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAc;QACpB,WAAM,GAAN,MAAM,CAAM;QAdvB,WAAM,GAAG,CAAC,CAAC;QACX,gBAAW,GAAG,EAAE,CAAC;QACjB,UAAK,GAA0C,IAAI,CAAC;QACpD,iBAAY,GAAkB,IAAI,CAAC;QAC3C,sFAAsF;QACtF,gBAAW,GAAG,CAAC,CAAC;QAChB,mFAAmF;QAC3E,uBAAkB,GAAG,CAAC,CAAC;IAQ5B,CAAC;IAEJ,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,wEAAwE;IACxE,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,4EAA4E;QAC5E,qFAAqF;QACrF,4DAA4D;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,yBAAyB;YAAE,OAAO,IAAI,CAAC;QAC5F,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,CAAC;YAAC,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC;YAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,IAAI;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,kCAAkC;QAC5C,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAEhC,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,MAA+B,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;gBACtE,uDAAuD;gBACvD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;gBACrF,SAAS;YACX,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,MAA+B;QAC9C,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI;YAAE,OAAO,CAAC,4BAA4B;QACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiD,CAAC;YACzE,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBACzE,wEAAwE;oBACxE,yEAAyE;oBACzE,2EAA2E;oBAC3E,mEAAmE;oBACnE,gEAAgE;oBAChE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAChC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAoC,CAAC,CAAC;YAChE,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YACnE,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;;AA5HH,4CA6HC;AApHyB,0CAAyB,GAAG,IAAK,AAAR,CAAS"}
1
+ {"version":3,"file":"tailer.js","sourceRoot":"","sources":["../../src/shell/tailer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -30,10 +30,6 @@ export interface AgentConfig {
30
30
  line?: {
31
31
  channelAccessToken: string;
32
32
  channelSecret: string;
33
- /** default true when the block is present */
34
- enabled?: boolean;
35
- /** default "/line/webhook" */
36
- webhookPath?: string;
37
33
  /**
38
34
  * Slow-LLM postback button (ported from hermes-agent). Seconds to wait for
39
35
  * the agent's answer before burning the reply token to send a tappable