@dsiloed/silo-link 1.19.19 → 1.19.21
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/core/base-tmux-launcher.d.ts +52 -5
- package/dist/core/base-tmux-launcher.d.ts.map +1 -1
- package/dist/core/base-tmux-launcher.js +177 -76
- package/dist/core/base-tmux-launcher.js.map +1 -1
- package/dist/core/claude-launcher.d.ts +8 -1
- package/dist/core/claude-launcher.d.ts.map +1 -1
- package/dist/core/claude-launcher.js +15 -1
- package/dist/core/claude-launcher.js.map +1 -1
- package/dist/core/codex-launcher.d.ts +0 -1
- package/dist/core/codex-launcher.d.ts.map +1 -1
- package/dist/core/codex-launcher.js +0 -5
- package/dist/core/codex-launcher.js.map +1 -1
- package/dist/core/gemini-launcher.d.ts +0 -1
- package/dist/core/gemini-launcher.d.ts.map +1 -1
- package/dist/core/gemini-launcher.js +0 -5
- package/dist/core/gemini-launcher.js.map +1 -1
- package/dist/core/transcript-usage.d.ts +9 -0
- package/dist/core/transcript-usage.d.ts.map +1 -1
- package/dist/core/transcript-usage.js +48 -0
- package/dist/core/transcript-usage.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +1 -0
- package/dist/core/workspace-manager.d.ts.map +1 -1
- package/dist/core/workspace-manager.js +65 -1
- package/dist/core/workspace-manager.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ export interface LaunchIdentity {
|
|
|
13
13
|
token: string;
|
|
14
14
|
conversationId?: number;
|
|
15
15
|
}
|
|
16
|
-
interface TmuxSessionInfo {
|
|
16
|
+
export interface TmuxSessionInfo {
|
|
17
17
|
conversationId: number;
|
|
18
18
|
startedAt: Date;
|
|
19
19
|
cwd?: string;
|
|
@@ -187,9 +187,14 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
187
187
|
* input instead of interpreting control chars / shortcuts. Gemini CLI needs
|
|
188
188
|
* this: a raw paste of a long markdown prompt trips its `!` shell-mode toggle,
|
|
189
189
|
* dropping the session into shell mode and running the prompt as a bash command.
|
|
190
|
-
* Claude Code works
|
|
191
|
-
*
|
|
192
|
-
*
|
|
190
|
+
* Claude Code mostly works without it — but a RAW paste of a ~20KB prompt is a
|
|
191
|
+
* timing flake: twice (orch 231 on 2026-08-31, orch 259 on 2026-09-17) the TUI
|
|
192
|
+
* recorded only the last few hundred chars. The bracketed resend landed intact
|
|
193
|
+
* both times, and a resend is a worse turn than a clean first paste (a second
|
|
194
|
+
* "here are your instructions again" message read as a prompt injection to the
|
|
195
|
+
* 09-17 worker, which refused the stage). So bracketed is the default for every
|
|
196
|
+
* launcher now; the raw path is opt-out. The submit Enter is sent separately
|
|
197
|
+
* after a delay, so bracketed paste doesn't swallow it. */
|
|
193
198
|
protected usesBracketedPaste(): boolean;
|
|
194
199
|
/** Return the session prompt from config */
|
|
195
200
|
protected abstract getSessionPrompt(): string | undefined;
|
|
@@ -236,6 +241,49 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
236
241
|
*/
|
|
237
242
|
protected submitStillPending(pane: string, message: string): boolean;
|
|
238
243
|
protected verifySubmitted(name: string, message: string, attempt: number): void;
|
|
244
|
+
/**
|
|
245
|
+
* Deliver `text` to the pane as the next input: load-buffer + paste-buffer +
|
|
246
|
+
* a separate Enter, then verifySubmitted. tmux send-keys has a per-command
|
|
247
|
+
* length limit ("command too long" around 10–20KB depending on platform),
|
|
248
|
+
* which silently broke long agent prompts (runbook + ticket context can be
|
|
249
|
+
* 15KB+). load-buffer reads from a file and has no such limit. Newlines are
|
|
250
|
+
* preserved so multi-line prompts paste cleanly; the trailing Enter is sent as
|
|
251
|
+
* a separate send-keys after a short delay (sidesteps bracketed-paste
|
|
252
|
+
* swallowing the submit).
|
|
253
|
+
*
|
|
254
|
+
* `bracketed` wraps the paste in bracketed-paste markers (`paste-buffer -p`)
|
|
255
|
+
* so the TUI takes the whole blob as ONE paste regardless of how the pty
|
|
256
|
+
* chunks it — see usesBracketedPaste() for why Claude Code normally runs
|
|
257
|
+
* without it, and verifyPromptDelivered() for the resend that turns it on.
|
|
258
|
+
* `onSubmitted` fires once the Enter has been sent (best-effort; never on a
|
|
259
|
+
* paste failure).
|
|
260
|
+
*/
|
|
261
|
+
protected pastePromptIntoPane(name: string, text: string, opts?: {
|
|
262
|
+
bracketed?: boolean;
|
|
263
|
+
onSubmitted?: () => void;
|
|
264
|
+
}): void;
|
|
265
|
+
protected static readonly DELIVERY_VERIFY_DELAY_MS = 8000;
|
|
266
|
+
protected static readonly DELIVERY_VERIFY_POLL_MS = 5000;
|
|
267
|
+
protected static readonly DELIVERY_VERIFY_POLLS = 6;
|
|
268
|
+
protected static readonly DELIVERY_MIN_RATIO = 0.9;
|
|
269
|
+
protected static readonly DELIVERY_MAX_RESENDS = 1;
|
|
270
|
+
protected static readonly DELIVERY_RESEND_PREFIX: string;
|
|
271
|
+
/**
|
|
272
|
+
* How many chars of prompt the CLI actually recorded for this pane, or null
|
|
273
|
+
* when it can't be known yet / at all. Agent-agnostic seam: the base flow
|
|
274
|
+
* (verifyPromptDelivered) calls this; each launcher overrides it from its
|
|
275
|
+
* transcript format. Default null = delivery verification is skipped.
|
|
276
|
+
* Best-effort: must never throw into the launch path.
|
|
277
|
+
*/
|
|
278
|
+
protected readDeliveredPromptLength(_info: TmuxSessionInfo): number | null;
|
|
279
|
+
/**
|
|
280
|
+
* After the submit registered, confirm the CLI recorded (close to) the whole
|
|
281
|
+
* prompt. No transcript yet → poll a few times, then stop quietly (the
|
|
282
|
+
* unsent case belongs to verifySubmitted). Short → log loudly, tell the
|
|
283
|
+
* conversation, and resend the full prompt once (bracketed paste). A second
|
|
284
|
+
* short delivery is reported and left alone rather than looping.
|
|
285
|
+
*/
|
|
286
|
+
protected verifyPromptDelivered(name: string, expected: string, attempt: number, poll?: number): void;
|
|
239
287
|
nudge(): boolean;
|
|
240
288
|
/**
|
|
241
289
|
* Nudge a single conversation's pane. Unlike nudge() this is not throttled:
|
|
@@ -667,5 +715,4 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
667
715
|
* worse than a leaked pane, which the backend reconciles anyway.
|
|
668
716
|
*/
|
|
669
717
|
export declare function shouldReapOrphanPane(ownerEnv: string | null, myEnv: string): boolean;
|
|
670
|
-
export {};
|
|
671
718
|
//# sourceMappingURL=base-tmux-launcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tmux-launcher.d.ts","sourceRoot":"","sources":["../../src/core/base-tmux-launcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base-tmux-launcher.d.ts","sourceRoot":"","sources":["../../src/core/base-tmux-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -315,10 +315,15 @@ export class BaseTmuxLauncher {
|
|
|
315
315
|
* input instead of interpreting control chars / shortcuts. Gemini CLI needs
|
|
316
316
|
* this: a raw paste of a long markdown prompt trips its `!` shell-mode toggle,
|
|
317
317
|
* dropping the session into shell mode and running the prompt as a bash command.
|
|
318
|
-
* Claude Code works
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
|
|
318
|
+
* Claude Code mostly works without it — but a RAW paste of a ~20KB prompt is a
|
|
319
|
+
* timing flake: twice (orch 231 on 2026-08-31, orch 259 on 2026-09-17) the TUI
|
|
320
|
+
* recorded only the last few hundred chars. The bracketed resend landed intact
|
|
321
|
+
* both times, and a resend is a worse turn than a clean first paste (a second
|
|
322
|
+
* "here are your instructions again" message read as a prompt injection to the
|
|
323
|
+
* 09-17 worker, which refused the stage). So bracketed is the default for every
|
|
324
|
+
* launcher now; the raw path is opt-out. The submit Enter is sent separately
|
|
325
|
+
* after a delay, so bracketed paste doesn't swallow it. */
|
|
326
|
+
usesBracketedPaste() { return true; }
|
|
322
327
|
// --- AgentLauncher interface ---
|
|
323
328
|
async launch(config) {
|
|
324
329
|
if (config.workspace) {
|
|
@@ -466,6 +471,169 @@ export class BaseTmuxLauncher {
|
|
|
466
471
|
this.verifySubmitted(name, message, attempt + 1);
|
|
467
472
|
}, BaseTmuxLauncher.SUBMIT_VERIFY_DELAY_MS);
|
|
468
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* Deliver `text` to the pane as the next input: load-buffer + paste-buffer +
|
|
476
|
+
* a separate Enter, then verifySubmitted. tmux send-keys has a per-command
|
|
477
|
+
* length limit ("command too long" around 10–20KB depending on platform),
|
|
478
|
+
* which silently broke long agent prompts (runbook + ticket context can be
|
|
479
|
+
* 15KB+). load-buffer reads from a file and has no such limit. Newlines are
|
|
480
|
+
* preserved so multi-line prompts paste cleanly; the trailing Enter is sent as
|
|
481
|
+
* a separate send-keys after a short delay (sidesteps bracketed-paste
|
|
482
|
+
* swallowing the submit).
|
|
483
|
+
*
|
|
484
|
+
* `bracketed` wraps the paste in bracketed-paste markers (`paste-buffer -p`)
|
|
485
|
+
* so the TUI takes the whole blob as ONE paste regardless of how the pty
|
|
486
|
+
* chunks it — see usesBracketedPaste() for why Claude Code normally runs
|
|
487
|
+
* without it, and verifyPromptDelivered() for the resend that turns it on.
|
|
488
|
+
* `onSubmitted` fires once the Enter has been sent (best-effort; never on a
|
|
489
|
+
* paste failure).
|
|
490
|
+
*/
|
|
491
|
+
pastePromptIntoPane(name, text, opts = {}) {
|
|
492
|
+
const promptFile = join(tmpdir(), `silolink-prompt-${name}-${Date.now()}.txt`);
|
|
493
|
+
const bufferName = `silolink_${name.replace(/[^A-Za-z0-9_]/g, '_')}`;
|
|
494
|
+
try {
|
|
495
|
+
writeFileSync(promptFile, text);
|
|
496
|
+
}
|
|
497
|
+
catch (err) {
|
|
498
|
+
console.error(`${this.getLogTag()} Failed to write prompt tempfile for "${name}": ${err.message}`);
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
const loadBuf = spawn('tmux', ['load-buffer', '-b', bufferName, promptFile], { stdio: 'pipe' });
|
|
502
|
+
let loadStderr = '';
|
|
503
|
+
loadBuf.stderr?.on('data', (chunk) => { loadStderr += chunk.toString(); });
|
|
504
|
+
loadBuf.on('error', (err) => {
|
|
505
|
+
console.error(`${this.getLogTag()} load-buffer spawn error for "${name}": ${err.message}`);
|
|
506
|
+
try {
|
|
507
|
+
unlinkSync(promptFile);
|
|
508
|
+
}
|
|
509
|
+
catch { /* ignore */ }
|
|
510
|
+
});
|
|
511
|
+
loadBuf.on('exit', (code) => {
|
|
512
|
+
try {
|
|
513
|
+
unlinkSync(promptFile);
|
|
514
|
+
}
|
|
515
|
+
catch { /* ignore */ }
|
|
516
|
+
if (code !== 0) {
|
|
517
|
+
console.error(`${this.getLogTag()} load-buffer exit ${code} for "${name}" ` +
|
|
518
|
+
`(prompt ${text.length} chars): ${loadStderr.trim() || '(no stderr)'}`);
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
// -d: delete the buffer after pasting so we don't leak named buffers
|
|
522
|
+
// -p: bracketed paste — see the doc comment above.
|
|
523
|
+
const pasteArgs = ['paste-buffer', '-b', bufferName, '-t', name, '-d'];
|
|
524
|
+
if (opts.bracketed)
|
|
525
|
+
pasteArgs.push('-p');
|
|
526
|
+
const pasteBuf = spawn('tmux', pasteArgs, { stdio: 'pipe' });
|
|
527
|
+
let pasteStderr = '';
|
|
528
|
+
pasteBuf.stderr?.on('data', (chunk) => { pasteStderr += chunk.toString(); });
|
|
529
|
+
pasteBuf.on('error', (err) => {
|
|
530
|
+
console.error(`${this.getLogTag()} paste-buffer spawn error for "${name}": ${err.message}`);
|
|
531
|
+
});
|
|
532
|
+
pasteBuf.on('exit', (pCode) => {
|
|
533
|
+
if (pCode !== 0) {
|
|
534
|
+
console.error(`${this.getLogTag()} paste-buffer exit ${pCode} for "${name}": ${pasteStderr.trim() || '(no stderr)'}`);
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
console.log(`${this.getLogTag()} Sent prompt to "${name}" (${text.length} chars via paste-buffer${opts.bracketed ? ', bracketed' : ''})`);
|
|
538
|
+
setTimeout(() => {
|
|
539
|
+
const enterKey = spawn('tmux', ['send-keys', '-t', name, 'Enter'], { stdio: 'pipe' });
|
|
540
|
+
let enterStderr = '';
|
|
541
|
+
enterKey.stderr?.on('data', (chunk) => { enterStderr += chunk.toString(); });
|
|
542
|
+
enterKey.on('error', (err) => {
|
|
543
|
+
console.error(`${this.getLogTag()} Enter sendKeys spawn error for "${name}": ${err.message}`);
|
|
544
|
+
});
|
|
545
|
+
enterKey.on('exit', (eCode) => {
|
|
546
|
+
if (eCode !== 0) {
|
|
547
|
+
console.error(`${this.getLogTag()} Enter sendKeys exit ${eCode} for "${name}": ${enterStderr.trim() || '(no stderr)'}`);
|
|
548
|
+
}
|
|
549
|
+
});
|
|
550
|
+
// The delay above is a race, not a guarantee — confirm the prompt
|
|
551
|
+
// actually left the input box (orch 194 verify: pasted, never sent).
|
|
552
|
+
this.verifySubmitted(name, text, 1);
|
|
553
|
+
opts.onSubmitted?.();
|
|
554
|
+
}, 500);
|
|
555
|
+
});
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
// Prompt DELIVERY verification (distinct from submit verification above).
|
|
559
|
+
// 2026-08-31, orch 231 audit: the daemon pasted the 16,116-char Health-Auditor
|
|
560
|
+
// prompt and the submit check passed — but Claude Code's transcript shows the
|
|
561
|
+
// agent received only the LAST 343 chars. The same prompt had landed intact on
|
|
562
|
+
// the four previous nights, so this is a timing flake in how the TUI takes a
|
|
563
|
+
// raw (non-bracketed) 16KB paste, not a size limit. The agent did the right
|
|
564
|
+
// thing (asked the dispatcher to resend, reported "blocked"), but nothing
|
|
565
|
+
// heard it: the stage sat 79 minutes until the wedge recycler killed it.
|
|
566
|
+
// Fix: read back what the CLI actually recorded and resend in full — in
|
|
567
|
+
// bracketed-paste mode, so the retry doesn't repeat the same raw-paste path.
|
|
568
|
+
static DELIVERY_VERIFY_DELAY_MS = 8000;
|
|
569
|
+
static DELIVERY_VERIFY_POLL_MS = 5000;
|
|
570
|
+
static DELIVERY_VERIFY_POLLS = 6;
|
|
571
|
+
static DELIVERY_MIN_RATIO = 0.9;
|
|
572
|
+
static DELIVERY_MAX_RESENDS = 1;
|
|
573
|
+
// Worded as a transport note, not an instruction to "disregard" anything: the
|
|
574
|
+
// 2026-09-17 worker (orch 259 verify) read the old "disregard the earlier
|
|
575
|
+
// fragment" framing as a prompt-injection tell and refused the whole stage.
|
|
576
|
+
static DELIVERY_RESEND_PREFIX = '[SiloLink daemon — delivery retry] The terminal paste of this session\'s launch prompt was cut short: ' +
|
|
577
|
+
'Claude Code recorded only the tail of it, so the first turn you saw was a fragment of the launch prompt, ' +
|
|
578
|
+
'not a message from a person. Below is the same launch prompt this session was started with, pasted again ' +
|
|
579
|
+
'in full by the daemon.\n\n';
|
|
580
|
+
/**
|
|
581
|
+
* How many chars of prompt the CLI actually recorded for this pane, or null
|
|
582
|
+
* when it can't be known yet / at all. Agent-agnostic seam: the base flow
|
|
583
|
+
* (verifyPromptDelivered) calls this; each launcher overrides it from its
|
|
584
|
+
* transcript format. Default null = delivery verification is skipped.
|
|
585
|
+
* Best-effort: must never throw into the launch path.
|
|
586
|
+
*/
|
|
587
|
+
readDeliveredPromptLength(_info) {
|
|
588
|
+
return null;
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* After the submit registered, confirm the CLI recorded (close to) the whole
|
|
592
|
+
* prompt. No transcript yet → poll a few times, then stop quietly (the
|
|
593
|
+
* unsent case belongs to verifySubmitted). Short → log loudly, tell the
|
|
594
|
+
* conversation, and resend the full prompt once (bracketed paste). A second
|
|
595
|
+
* short delivery is reported and left alone rather than looping.
|
|
596
|
+
*/
|
|
597
|
+
verifyPromptDelivered(name, expected, attempt, poll = 1) {
|
|
598
|
+
const delay = poll === 1 ? BaseTmuxLauncher.DELIVERY_VERIFY_DELAY_MS : BaseTmuxLauncher.DELIVERY_VERIFY_POLL_MS;
|
|
599
|
+
setTimeout(() => {
|
|
600
|
+
const info = this.tmuxSessions.get(name);
|
|
601
|
+
if (!info)
|
|
602
|
+
return; // pane gone — dead-pane reconcile owns that case
|
|
603
|
+
let delivered;
|
|
604
|
+
try {
|
|
605
|
+
delivered = this.readDeliveredPromptLength(info);
|
|
606
|
+
}
|
|
607
|
+
catch (err) {
|
|
608
|
+
console.warn(`${this.getLogTag()} prompt delivery check failed for "${name}": ${err}`);
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
if (delivered === null) {
|
|
612
|
+
if (poll < BaseTmuxLauncher.DELIVERY_VERIFY_POLLS)
|
|
613
|
+
this.verifyPromptDelivered(name, expected, attempt, poll + 1);
|
|
614
|
+
return;
|
|
615
|
+
}
|
|
616
|
+
if (delivered >= Math.floor(expected.length * BaseTmuxLauncher.DELIVERY_MIN_RATIO)) {
|
|
617
|
+
console.log(`${this.getLogTag()} Prompt delivery verified on "${name}" (${delivered}/${expected.length} chars${attempt > 1 ? `, after resend ${attempt - 1}` : ''})`);
|
|
618
|
+
return;
|
|
619
|
+
}
|
|
620
|
+
console.error(`${this.getLogTag()} PROMPT TRUNCATED on "${name}": CLI recorded ${delivered} of ${expected.length} chars` +
|
|
621
|
+
`${attempt > BaseTmuxLauncher.DELIVERY_MAX_RESENDS ? ' — still short after resend, giving up' : ' — resending in full (bracketed paste)'}`);
|
|
622
|
+
healthMonitor.noteLaunchFailure(`prompt truncated on ${name}: ${delivered}/${expected.length} chars`);
|
|
623
|
+
if (info.conversationId && this.dsiloedClient) {
|
|
624
|
+
const note = attempt > BaseTmuxLauncher.DELIVERY_MAX_RESENDS
|
|
625
|
+
? `**[SiloLink]** ⚠️ Launch prompt still truncated after a resend (${delivered}/${expected.length} chars reached the agent). The agent does not have its instructions — relaunch this session.`
|
|
626
|
+
: `**[SiloLink]** ⚠️ Launch prompt was truncated in transit (${delivered}/${expected.length} chars reached the agent) — resending it in full.`;
|
|
627
|
+
this.dsiloedClient.postMessage(info.conversationId, note).catch(() => { });
|
|
628
|
+
}
|
|
629
|
+
if (attempt > BaseTmuxLauncher.DELIVERY_MAX_RESENDS)
|
|
630
|
+
return;
|
|
631
|
+
this.pastePromptIntoPane(name, BaseTmuxLauncher.DELIVERY_RESEND_PREFIX + expected, {
|
|
632
|
+
bracketed: true,
|
|
633
|
+
onSubmitted: () => this.verifyPromptDelivered(name, expected, attempt + 1),
|
|
634
|
+
});
|
|
635
|
+
}, delay);
|
|
636
|
+
}
|
|
469
637
|
nudge() {
|
|
470
638
|
if (this.tmuxSessions.size === 0)
|
|
471
639
|
return false;
|
|
@@ -1502,78 +1670,11 @@ export class BaseTmuxLauncher {
|
|
|
1502
1670
|
await new Promise(resolve => setTimeout(resolve, postDelay));
|
|
1503
1671
|
}
|
|
1504
1672
|
}
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
// multi-line prompts paste cleanly; the trailing Enter is sent as a
|
|
1511
|
-
// separate send-keys after a short delay (existing pattern that
|
|
1512
|
-
// sidesteps bracketed-paste swallowing the submit).
|
|
1513
|
-
const promptFile = join(tmpdir(), `silolink-prompt-${sessionToPrompt}-${Date.now()}.txt`);
|
|
1514
|
-
const bufferName = `silolink_${sessionToPrompt.replace(/[^A-Za-z0-9_]/g, '_')}`;
|
|
1515
|
-
try {
|
|
1516
|
-
writeFileSync(promptFile, promptToSend);
|
|
1517
|
-
}
|
|
1518
|
-
catch (err) {
|
|
1519
|
-
console.error(`${this.getLogTag()} Failed to write prompt tempfile for "${sessionToPrompt}": ${err.message}`);
|
|
1520
|
-
return;
|
|
1521
|
-
}
|
|
1522
|
-
const loadBuf = spawn('tmux', ['load-buffer', '-b', bufferName, promptFile], { stdio: 'pipe' });
|
|
1523
|
-
let loadStderr = '';
|
|
1524
|
-
loadBuf.stderr?.on('data', (chunk) => { loadStderr += chunk.toString(); });
|
|
1525
|
-
loadBuf.on('error', (err) => {
|
|
1526
|
-
console.error(`${this.getLogTag()} load-buffer spawn error for "${sessionToPrompt}": ${err.message}`);
|
|
1527
|
-
try {
|
|
1528
|
-
unlinkSync(promptFile);
|
|
1529
|
-
}
|
|
1530
|
-
catch { /* ignore */ }
|
|
1531
|
-
});
|
|
1532
|
-
loadBuf.on('exit', (code) => {
|
|
1533
|
-
try {
|
|
1534
|
-
unlinkSync(promptFile);
|
|
1535
|
-
}
|
|
1536
|
-
catch { /* ignore */ }
|
|
1537
|
-
if (code !== 0) {
|
|
1538
|
-
console.error(`${this.getLogTag()} load-buffer exit ${code} for "${sessionToPrompt}" ` +
|
|
1539
|
-
`(prompt ${promptToSend.length} chars): ${loadStderr.trim() || '(no stderr)'}`);
|
|
1540
|
-
return;
|
|
1541
|
-
}
|
|
1542
|
-
// -d: delete the buffer after pasting so we don't leak named buffers
|
|
1543
|
-
// -p: bracketed paste (Gemini only) so the prompt isn't interpreted as
|
|
1544
|
-
// shell-mode input — see usesBracketedPaste().
|
|
1545
|
-
const pasteArgs = ['paste-buffer', '-b', bufferName, '-t', sessionToPrompt, '-d'];
|
|
1546
|
-
if (this.usesBracketedPaste())
|
|
1547
|
-
pasteArgs.push('-p');
|
|
1548
|
-
const pasteBuf = spawn('tmux', pasteArgs, { stdio: 'pipe' });
|
|
1549
|
-
let pasteStderr = '';
|
|
1550
|
-
pasteBuf.stderr?.on('data', (chunk) => { pasteStderr += chunk.toString(); });
|
|
1551
|
-
pasteBuf.on('error', (err) => {
|
|
1552
|
-
console.error(`${this.getLogTag()} paste-buffer spawn error for "${sessionToPrompt}": ${err.message}`);
|
|
1553
|
-
});
|
|
1554
|
-
pasteBuf.on('exit', (pCode) => {
|
|
1555
|
-
if (pCode !== 0) {
|
|
1556
|
-
console.error(`${this.getLogTag()} paste-buffer exit ${pCode} for "${sessionToPrompt}": ${pasteStderr.trim() || '(no stderr)'}`);
|
|
1557
|
-
return;
|
|
1558
|
-
}
|
|
1559
|
-
console.log(`${this.getLogTag()} Sent prompt to "${sessionToPrompt}" (${promptToSend.length} chars via paste-buffer)`);
|
|
1560
|
-
setTimeout(() => {
|
|
1561
|
-
const enterKey = spawn('tmux', ['send-keys', '-t', sessionToPrompt, 'Enter'], { stdio: 'pipe' });
|
|
1562
|
-
let enterStderr = '';
|
|
1563
|
-
enterKey.stderr?.on('data', (chunk) => { enterStderr += chunk.toString(); });
|
|
1564
|
-
enterKey.on('error', (err) => {
|
|
1565
|
-
console.error(`${this.getLogTag()} Enter sendKeys spawn error for "${sessionToPrompt}": ${err.message}`);
|
|
1566
|
-
});
|
|
1567
|
-
enterKey.on('exit', (eCode) => {
|
|
1568
|
-
if (eCode !== 0) {
|
|
1569
|
-
console.error(`${this.getLogTag()} Enter sendKeys exit ${eCode} for "${sessionToPrompt}": ${enterStderr.trim() || '(no stderr)'}`);
|
|
1570
|
-
}
|
|
1571
|
-
});
|
|
1572
|
-
// The delay above is a race, not a guarantee — confirm the prompt
|
|
1573
|
-
// actually left the input box (orch 194 verify: pasted, never sent).
|
|
1574
|
-
this.verifySubmitted(sessionToPrompt, promptToSend, 1);
|
|
1575
|
-
}, 500);
|
|
1576
|
-
});
|
|
1673
|
+
this.pastePromptIntoPane(sessionToPrompt, promptToSend, {
|
|
1674
|
+
bracketed: this.usesBracketedPaste(),
|
|
1675
|
+
// The submit check only proves the text LEFT the box — not that the
|
|
1676
|
+
// TUI took all of it (orch 231: 16,116 chars pasted, 343 arrived).
|
|
1677
|
+
onSubmitted: () => this.verifyPromptDelivered(sessionToPrompt, promptToSend, 1),
|
|
1577
1678
|
});
|
|
1578
1679
|
})();
|
|
1579
1680
|
this.monitorTmuxSession(tmuxSession);
|