@songsid/agend 2.1.4-beta.45 → 2.1.4-beta.47
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/backend/kiro.d.ts +12 -0
- package/dist/backend/kiro.js +49 -0
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +26 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/daemon.d.ts +53 -0
- package/dist/daemon.js +252 -3
- package/dist/daemon.js.map +1 -1
- package/dist/general-knowledge/skills/session-management/SKILL.md +171 -8
- package/dist/pane-input-residue.d.ts +52 -0
- package/dist/pane-input-residue.js +107 -0
- package/dist/pane-input-residue.js.map +1 -0
- package/package.json +1 -1
package/dist/backend/kiro.d.ts
CHANGED
|
@@ -23,8 +23,20 @@ export declare class KiroBackend implements CliBackend {
|
|
|
23
23
|
private readonly compatibility;
|
|
24
24
|
private readonly compatibilityCacheKey?;
|
|
25
25
|
private warnedUnsupportedEffort;
|
|
26
|
+
/**
|
|
27
|
+
* UI flavour and trust mode of the LAST command built. The Enter-drop
|
|
28
|
+
* delivery gate (dropsEnterWhileBusy / getBottomReadyPattern) is specific to
|
|
29
|
+
* the legacy UI's prompt row, so both are derived from what was actually
|
|
30
|
+
* launched rather than assumed. Defaults match kiro's config defaults
|
|
31
|
+
* (`kiro_ui: legacy`, `--trust-all-tools`) for a backend that has not built a
|
|
32
|
+
* command yet.
|
|
33
|
+
*/
|
|
34
|
+
private activeUi;
|
|
35
|
+
private activeTrustAll;
|
|
26
36
|
constructor(instanceDir: string, compatibility?: KiroCliCompatibility);
|
|
27
37
|
requiresDeliveryEnterRetry(): boolean;
|
|
38
|
+
dropsEnterWhileBusy(): boolean;
|
|
39
|
+
getBottomReadyPattern(): RegExp | null;
|
|
28
40
|
buildCommand(config: CliBackendConfig): string;
|
|
29
41
|
private shouldWarnUnsupportedEffort;
|
|
30
42
|
writeConfig(config: CliBackendConfig): void;
|
package/dist/backend/kiro.js
CHANGED
|
@@ -112,6 +112,16 @@ export class KiroBackend {
|
|
|
112
112
|
compatibility;
|
|
113
113
|
compatibilityCacheKey;
|
|
114
114
|
warnedUnsupportedEffort = false;
|
|
115
|
+
/**
|
|
116
|
+
* UI flavour and trust mode of the LAST command built. The Enter-drop
|
|
117
|
+
* delivery gate (dropsEnterWhileBusy / getBottomReadyPattern) is specific to
|
|
118
|
+
* the legacy UI's prompt row, so both are derived from what was actually
|
|
119
|
+
* launched rather than assumed. Defaults match kiro's config defaults
|
|
120
|
+
* (`kiro_ui: legacy`, `--trust-all-tools`) for a backend that has not built a
|
|
121
|
+
* command yet.
|
|
122
|
+
*/
|
|
123
|
+
activeUi = "legacy";
|
|
124
|
+
activeTrustAll = true;
|
|
115
125
|
constructor(instanceDir, compatibility) {
|
|
116
126
|
this.instanceDir = instanceDir;
|
|
117
127
|
this.binaryPath = resolveBinary("kiro-cli");
|
|
@@ -133,6 +143,40 @@ export class KiroBackend {
|
|
|
133
143
|
// it is a no-op both at an empty prompt and during generation.
|
|
134
144
|
return true;
|
|
135
145
|
}
|
|
146
|
+
dropsEnterWhileBusy() {
|
|
147
|
+
// Verified live (kiro-cli 2.21.0, --legacy-ui): text pasted while a shell
|
|
148
|
+
// tool ran surfaced in the prompt row after the turn, UNSUBMITTED, and the
|
|
149
|
+
// next message's Enter submitted both as one. Enter during a turn is
|
|
150
|
+
// discarded, not queued — so the daemon must not treat a quiet pane as an
|
|
151
|
+
// open prompt (tool execution and backend retries are silent for seconds).
|
|
152
|
+
//
|
|
153
|
+
// Legacy UI with --trust-all-tools only: the gate needs a prompt row it can
|
|
154
|
+
// recognise row-locally, and the daemon fails CLOSED without one. The
|
|
155
|
+
// v3/new TUI paints a different screen; without trust-all the legacy row
|
|
156
|
+
// would be a bare `N% >`, indistinguishable from tool output such as
|
|
157
|
+
// `100% > done` — and never verified live. Both keep the silence gate until
|
|
158
|
+
// their ready marker is verified.
|
|
159
|
+
return this.activeUi === "legacy" && this.activeTrustAll;
|
|
160
|
+
}
|
|
161
|
+
getBottomReadyPattern() {
|
|
162
|
+
if (!this.dropsEnterWhileBusy())
|
|
163
|
+
return null;
|
|
164
|
+
// Legacy-UI prompt row, live captures: "51% !>", "1% !> How can I help?",
|
|
165
|
+
// "2% !> Not sure where to start? …" (placeholder hint shares the row), and
|
|
166
|
+
// the mode-glyph form "20% λ !>". While a tool runs the bottom row is the
|
|
167
|
+
// tool banner ("Purpose: …"); while generating it is "⠇ Thinking…" — neither
|
|
168
|
+
// matches, which is exactly the point.
|
|
169
|
+
//
|
|
170
|
+
// Anchored to the ROW START: the context percentage is the first thing on
|
|
171
|
+
// the prompt row, then an optional mode glyph, then the marker. Unanchored
|
|
172
|
+
// (`\d+%[^\n]*[!❯>]`) matched ordinary tool output such as
|
|
173
|
+
// `Progress 50% > /tmp/output` or `download 100% -> done` and declared a busy
|
|
174
|
+
// pane ready. Under --trust-all-tools (the only mode the gate runs in) the
|
|
175
|
+
// ASCII marker is `!>` and its `!` is REQUIRED, so a bare `100% > done` at a
|
|
176
|
+
// row start is not a prompt either; the glyph form `8% ❯` (see
|
|
177
|
+
// getReadyPattern) needs no `!` because `❯` never occurs in tool output.
|
|
178
|
+
return /^\s*\d+%\s*(?:[^\s\d%!❯>]{1,2}\s+)?(?:!\s?[❯>]|❯)/;
|
|
179
|
+
}
|
|
136
180
|
buildCommand(config) {
|
|
137
181
|
const ui = config.kiroUi ?? "legacy";
|
|
138
182
|
let cmd = `${this.binaryPath} chat`;
|
|
@@ -140,6 +184,11 @@ export class KiroBackend {
|
|
|
140
184
|
cmd += " --legacy-ui";
|
|
141
185
|
else if (ui === "v3")
|
|
142
186
|
cmd += " --v3";
|
|
187
|
+
// Record what is actually being launched for the delivery gate (see
|
|
188
|
+
// dropsEnterWhileBusy): a "legacy" request on a binary without --legacy-ui
|
|
189
|
+
// runs the default new TUI, not the legacy screen.
|
|
190
|
+
this.activeUi = ui === "legacy" && this.compatibility.supportsLegacyUi ? "legacy" : ui === "v3" ? "v3" : "tui";
|
|
191
|
+
this.activeTrustAll = config.skipPermissions !== false;
|
|
143
192
|
if (config.skipPermissions !== false)
|
|
144
193
|
cmd += " --trust-all-tools";
|
|
145
194
|
// --resume is boolean: Kiro auto-resumes latest conversation for this working directory
|
package/dist/backend/kiro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../src/backend/kiro.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../src/backend/kiro.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/types.d.ts
CHANGED
|
@@ -129,6 +129,32 @@ export interface CliBackend {
|
|
|
129
129
|
* at an empty prompt and during generation. Absent means false.
|
|
130
130
|
*/
|
|
131
131
|
requiresDeliveryEnterRetry?(): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Whether the TUI DROPS an Enter that arrives while it is generating or
|
|
134
|
+
* running a tool, while still accepting the typed text as typeahead (Kiro's
|
|
135
|
+
* legacy UI, verified live on kiro-cli 2.21.0). For such a TUI, a quiet pane
|
|
136
|
+
* is not evidence of readiness: a shell/MCP tool can run for many seconds
|
|
137
|
+
* without painting anything, and a paste+Enter landing in that window leaves
|
|
138
|
+
* the text sitting unsubmitted in the prompt row until the next Enter — which
|
|
139
|
+
* then submits two messages as one. When true, the daemon requires the
|
|
140
|
+
* bottom-anchored ready marker (`getBottomReadyPattern`) before pasting and
|
|
141
|
+
* FAILS CLOSED without it (a non-blank pane whose bottom row is not the
|
|
142
|
+
* prompt is treated as busy — the prompt may simply have scrolled out of the
|
|
143
|
+
* viewport behind tool output), verifies SUBMISSION (not just "some output")
|
|
144
|
+
* after Enter, and submits any stranded text before pasting a new message.
|
|
145
|
+
* Return true only for a UI whose prompt row the pattern below recognises;
|
|
146
|
+
* other UI flavours of the same CLI should return false and keep the
|
|
147
|
+
* silence gate. Absent means false.
|
|
148
|
+
*/
|
|
149
|
+
dropsEnterWhileBusy?(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Ready marker tested against ONE pane row at a time (the LAST non-blank row
|
|
152
|
+
* for readiness), so `^` anchors the row start — anchor it: an unanchored
|
|
153
|
+
* marker matches ordinary tool output (`Progress 50% > /tmp/out`). Distinct
|
|
154
|
+
* from `getReadyPattern()`, which may match anywhere on screen (a prompt
|
|
155
|
+
* higher up is history). Required for `dropsEnterWhileBusy()` backends.
|
|
156
|
+
*/
|
|
157
|
+
getBottomReadyPattern?(): RegExp | null;
|
|
132
158
|
/**
|
|
133
159
|
* Whether the TUI can emit terminal output while its visible pane is
|
|
134
160
|
* unchanged (for example, rerunning and repainting a status-line hook).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backend/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgG1C,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/H,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backend/types.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts
CHANGED
|
@@ -875,6 +875,59 @@ export declare class Daemon extends EventEmitter {
|
|
|
875
875
|
* serial in both cases so separate PTY writes can never overlap.
|
|
876
876
|
*/
|
|
877
877
|
private deliverMessage;
|
|
878
|
+
/**
|
|
879
|
+
* Bottom-anchored readiness for TUIs that drop Enter while busy (see
|
|
880
|
+
* CliBackend.dropsEnterWhileBusy). Output silence is necessary but not
|
|
881
|
+
* sufficient for them: Kiro paints nothing for the whole duration of a shell
|
|
882
|
+
* or MCP tool call (and for each 10s backend retry), yet an Enter arriving
|
|
883
|
+
* then is discarded. Reproduced deterministically: `sleep 9` tool, paste at
|
|
884
|
+
* t+6s → text stranded in the prompt row, next message submitted both.
|
|
885
|
+
* Other backends keep the silence-based gate byte-for-byte.
|
|
886
|
+
*/
|
|
887
|
+
private isPaneReadyForDelivery;
|
|
888
|
+
/**
|
|
889
|
+
* Like waitForPaneIdleForDelivery, plus the bottom-anchored prompt check for
|
|
890
|
+
* Enter-dropping TUIs. Polls at a coarse cadence (each poll is a capture-pane)
|
|
891
|
+
* only after the pane is already quiet, so the common fast-idle delivery still
|
|
892
|
+
* costs a single capture.
|
|
893
|
+
*/
|
|
894
|
+
private waitForPaneReadyForDelivery;
|
|
895
|
+
/**
|
|
896
|
+
* F3: if an AgEnD message is sitting unsubmitted in the input row (a previous
|
|
897
|
+
* delivery's Enter was dropped), submit it with one bare Enter under the pane
|
|
898
|
+
* lock. Only acts on a positive signature — the `[user:`/`[from:` marker every
|
|
899
|
+
* pasted message carries — never on Kiro's own placeholder hints.
|
|
900
|
+
*
|
|
901
|
+
* Outcomes: "idle" = positively verified nothing stranded (the caller may
|
|
902
|
+
* paste); "submitted" = an Enter went out for the stranded text; "busy" = the
|
|
903
|
+
* pane is not at its prompt or could not be read (the caller must wait for
|
|
904
|
+
* the prompt and run this check AGAIN before pasting — never assume someone
|
|
905
|
+
* else submitted it); "failed" = the Enter could not be sent (the delivery
|
|
906
|
+
* must fail rather than paste on top of the stranded text).
|
|
907
|
+
*/
|
|
908
|
+
private submitStrandedInputIfAny;
|
|
909
|
+
/**
|
|
910
|
+
* "stranded": an AgEnD message sits in the input row; "clear": the prompt is
|
|
911
|
+
* at the bottom with no stranded text; "busy": generating, or the prompt is
|
|
912
|
+
* not at the bottom (incl. a blank frame); "unknown": the pane could not be
|
|
913
|
+
* read. Only "clear" is positive evidence.
|
|
914
|
+
*/
|
|
915
|
+
private strandedInputState;
|
|
916
|
+
/**
|
|
917
|
+
* F2: for Enter-dropping TUIs, "some output after Enter" proves nothing — the
|
|
918
|
+
* turn that made the pane look idle keeps producing output. Confirm the
|
|
919
|
+
* SUBMISSION instead: the pasted text is gone from the input row ("absent"),
|
|
920
|
+
* or the TUI's own busy marker is up. "unknown" = the pane could not be read;
|
|
921
|
+
* it never counts as confirmed.
|
|
922
|
+
*/
|
|
923
|
+
private pasteResidue;
|
|
924
|
+
/**
|
|
925
|
+
* Submission = the legacy idle→busy output signal AND the pasted text has
|
|
926
|
+
* verifiably left the input row. The first alone is what produced false ✅s:
|
|
927
|
+
* the turn that made the pane look idle keeps emitting output after our
|
|
928
|
+
* (dropped) Enter — and an unreadable pane is not a verified absence either.
|
|
929
|
+
*/
|
|
930
|
+
private confirmSubmittedAfterEnter;
|
|
878
931
|
/**
|
|
879
932
|
* While the CLI is parked on a fatal startup screen (see fatalStartupBlocked),
|
|
880
933
|
* no pane write may happen: paste+Enter into the corrupt-config modal would
|
package/dist/daemon.js
CHANGED
|
@@ -23,6 +23,7 @@ import { writeSecretFile } from "./secret-file.js";
|
|
|
23
23
|
import { PaneWriteLock } from "./pane-write-lock.js";
|
|
24
24
|
import { buildFleetInstructions } from "./instructions.js";
|
|
25
25
|
import { formatCrossInstanceInboundMessage, renderCrossInstanceHandoffMetadata, } from "./cross-instance-envelope.js";
|
|
26
|
+
import { bottomRowIsReady, pasteLeftInInput, strandedAgendMessageInInput } from "./pane-input-residue.js";
|
|
26
27
|
const __filename = fileURLToPath(import.meta.url);
|
|
27
28
|
const __dirname = dirname(__filename);
|
|
28
29
|
// Tool routing sets — module-level to avoid re-creation on every handleToolCall
|
|
@@ -358,6 +359,12 @@ export class PendingWorkTracker {
|
|
|
358
359
|
}
|
|
359
360
|
}
|
|
360
361
|
const NORMAL_ENTER_SETTLE_MS = 500;
|
|
362
|
+
/** Bottom-ready re-poll cadence for Enter-dropping TUIs once the pane is quiet. */
|
|
363
|
+
const BOTTOM_READY_POLL_MS = 250;
|
|
364
|
+
/** Bounded wait (under the pane lock) for the prompt to return before retrying a dropped Enter. */
|
|
365
|
+
const STRANDED_RETRY_READY_WAIT_MS = 30_000;
|
|
366
|
+
/** Max "stranded text → submit → wait for prompt → re-check" rounds per delivery; each may send one recovery Enter. */
|
|
367
|
+
const STRANDED_INPUT_MAX_ROUNDS = 3;
|
|
361
368
|
const FIRST_ENTER_SETTLE_MS = 1_750;
|
|
362
369
|
const FIRST_DELIVERY_WINDOW_MS = 5_000;
|
|
363
370
|
/** After busy native-queue paste+Enter, wait before checking the pane for silent loss. */
|
|
@@ -3541,7 +3548,7 @@ export class Daemon extends EventEmitter {
|
|
|
3541
3548
|
// If the CLI is busy, either hand the complete submission to its native input
|
|
3542
3549
|
// queue or wait for idle. Native queue support is an explicit backend capability:
|
|
3543
3550
|
// normal Enter input has steering/interrupt semantics in several other CLIs.
|
|
3544
|
-
if (windowId && this.controlClient && !this.
|
|
3551
|
+
if (windowId && this.controlClient && !(await this.isPaneReadyForDelivery(windowId))) {
|
|
3545
3552
|
if (status)
|
|
3546
3553
|
this.emit("message_queued", status);
|
|
3547
3554
|
if (supportsQueuedInput || opts?.steer) {
|
|
@@ -3555,7 +3562,7 @@ export class Daemon extends EventEmitter {
|
|
|
3555
3562
|
}
|
|
3556
3563
|
else {
|
|
3557
3564
|
this.logger.debug("CLI busy — queuing message until idle");
|
|
3558
|
-
const becameIdle = await this.
|
|
3565
|
+
const becameIdle = await this.waitForPaneReadyForDelivery(windowId);
|
|
3559
3566
|
if (cancelled())
|
|
3560
3567
|
return false;
|
|
3561
3568
|
if (!becameIdle) {
|
|
@@ -3569,6 +3576,49 @@ export class Daemon extends EventEmitter {
|
|
|
3569
3576
|
}
|
|
3570
3577
|
}
|
|
3571
3578
|
}
|
|
3579
|
+
// F3 (#kiro-enter-drop): an earlier delivery's Enter may have been dropped,
|
|
3580
|
+
// leaving that message in the input row. Pasting on top would submit both as
|
|
3581
|
+
// one. Submit the stranded text first (a bare Enter — a no-op on an empty
|
|
3582
|
+
// prompt, verified live), then wait for the prompt to come back before our
|
|
3583
|
+
// own paste. The wait happens OUTSIDE the pane lock like every other wait.
|
|
3584
|
+
if (windowId && this.controlClient && !handingOffToNativeQueue) {
|
|
3585
|
+
// Only a positively verified clear input row ("idle") lets the paste
|
|
3586
|
+
// proceed. After "submitted" (the stranded text's turn is running) or
|
|
3587
|
+
// "busy" (the pane changed under us, or could not be read) the prompt
|
|
3588
|
+
// must come back AND the check runs again — the stranded text may still
|
|
3589
|
+
// be there. "failed" (the Enter could not be sent) fails the delivery:
|
|
3590
|
+
// pasting now would submit both messages as one.
|
|
3591
|
+
for (let round = 0;; round++) {
|
|
3592
|
+
// Budget check BEFORE the next mutating call: each round may send one
|
|
3593
|
+
// recovery Enter, so exactly STRANDED_INPUT_MAX_ROUNDS of them go out.
|
|
3594
|
+
if (round >= STRANDED_INPUT_MAX_ROUNDS) {
|
|
3595
|
+
this.logger.error({ round }, "Input row still not clear after the stranded-text recovery budget — reporting delivery failure");
|
|
3596
|
+
if (status)
|
|
3597
|
+
this.emit("message_failed", status); // ❌
|
|
3598
|
+
return false;
|
|
3599
|
+
}
|
|
3600
|
+
const stranded = await this.submitStrandedInputIfAny(windowId);
|
|
3601
|
+
if (cancelled())
|
|
3602
|
+
return false;
|
|
3603
|
+
if (stranded === "idle")
|
|
3604
|
+
break;
|
|
3605
|
+
if (stranded === "failed") {
|
|
3606
|
+
this.logger.error({ round }, "Could not submit the stranded text — reporting delivery failure");
|
|
3607
|
+
if (status)
|
|
3608
|
+
this.emit("message_failed", status); // ❌
|
|
3609
|
+
return false;
|
|
3610
|
+
}
|
|
3611
|
+
const readyAgain = await this.waitForPaneReadyForDelivery(windowId);
|
|
3612
|
+
if (cancelled())
|
|
3613
|
+
return false;
|
|
3614
|
+
if (!readyAgain) {
|
|
3615
|
+
this.logger.error("Pane never returned to its prompt after submitting stranded input — reporting delivery failure");
|
|
3616
|
+
if (status)
|
|
3617
|
+
this.emit("message_failed", status); // ❌
|
|
3618
|
+
return false;
|
|
3619
|
+
}
|
|
3620
|
+
}
|
|
3621
|
+
}
|
|
3572
3622
|
// Everything above is *waiting*; everything below *writes*. Only the write is
|
|
3573
3623
|
// held under the pane lock — holding it across the idle wait (up to 30 min)
|
|
3574
3624
|
// would starve the runtime-dialog dismisser, which is often the very thing
|
|
@@ -3583,6 +3633,176 @@ export class Daemon extends EventEmitter {
|
|
|
3583
3633
|
return this.writeMessageToPane(formatted, windowId, handingOffToNativeQueue, status);
|
|
3584
3634
|
});
|
|
3585
3635
|
}
|
|
3636
|
+
/**
|
|
3637
|
+
* Bottom-anchored readiness for TUIs that drop Enter while busy (see
|
|
3638
|
+
* CliBackend.dropsEnterWhileBusy). Output silence is necessary but not
|
|
3639
|
+
* sufficient for them: Kiro paints nothing for the whole duration of a shell
|
|
3640
|
+
* or MCP tool call (and for each 10s backend retry), yet an Enter arriving
|
|
3641
|
+
* then is discarded. Reproduced deterministically: `sleep 9` tool, paste at
|
|
3642
|
+
* t+6s → text stranded in the prompt row, next message submitted both.
|
|
3643
|
+
* Other backends keep the silence-based gate byte-for-byte.
|
|
3644
|
+
*/
|
|
3645
|
+
async isPaneReadyForDelivery(windowId) {
|
|
3646
|
+
if (!this.isPaneIdleForDelivery(windowId))
|
|
3647
|
+
return false;
|
|
3648
|
+
if (this.backend?.dropsEnterWhileBusy?.() !== true)
|
|
3649
|
+
return true;
|
|
3650
|
+
const prompt = this.backend.getBottomReadyPattern?.();
|
|
3651
|
+
if (!prompt || !this.tmux)
|
|
3652
|
+
return true;
|
|
3653
|
+
try {
|
|
3654
|
+
const pane = await this.tmux.capturePane();
|
|
3655
|
+
if (this.backend.getBusyPattern?.()?.test(pane))
|
|
3656
|
+
return false;
|
|
3657
|
+
if (bottomRowIsReady(pane, prompt))
|
|
3658
|
+
return true;
|
|
3659
|
+
// FAIL CLOSED on any non-blank screen without the prompt at the bottom.
|
|
3660
|
+
// The obvious "unknown layout → fall back to silence" shortcut re-opened
|
|
3661
|
+
// the bug: a long tool output scrolls the turn's own `N% !>` row out of
|
|
3662
|
+
// the visible pane (capture-pane -p is the viewport only), the bottom row
|
|
3663
|
+
// is tool output, the pane is quiet — and a paste there strands the text
|
|
3664
|
+
// exactly as before. The prompt row is the only evidence Kiro accepts an
|
|
3665
|
+
// Enter; a modal or panel is handled by the dialog dismisser, and the
|
|
3666
|
+
// bounded wait reports a failure rather than pasting into a screen we do
|
|
3667
|
+
// not understand. That includes a completely BLANK capture: a clear /
|
|
3668
|
+
// redraw / alternate-screen transition paints nothing for a frame, tmux
|
|
3669
|
+
// still accepts a paste, and "nothing visible" is not evidence the TUI is
|
|
3670
|
+
// idle. The next 250ms poll sees the prompt if it is coming.
|
|
3671
|
+
return false;
|
|
3672
|
+
}
|
|
3673
|
+
catch (err) {
|
|
3674
|
+
// Same rule for a capture that fails: no positive proof, no paste. The
|
|
3675
|
+
// poll retries; a persistently unreadable pane ends in the bounded
|
|
3676
|
+
// timeout's ❌ rather than in a silently stranded message.
|
|
3677
|
+
this.logger.debug({ err }, "capture-pane failed during the readiness check — treating the pane as not ready");
|
|
3678
|
+
return false;
|
|
3679
|
+
}
|
|
3680
|
+
}
|
|
3681
|
+
/**
|
|
3682
|
+
* Like waitForPaneIdleForDelivery, plus the bottom-anchored prompt check for
|
|
3683
|
+
* Enter-dropping TUIs. Polls at a coarse cadence (each poll is a capture-pane)
|
|
3684
|
+
* only after the pane is already quiet, so the common fast-idle delivery still
|
|
3685
|
+
* costs a single capture.
|
|
3686
|
+
*/
|
|
3687
|
+
async waitForPaneReadyForDelivery(windowId, timeoutMs = 30 * 60_000) {
|
|
3688
|
+
if (this.backend?.dropsEnterWhileBusy?.() !== true) {
|
|
3689
|
+
return this.waitForPaneIdleForDelivery(windowId, timeoutMs);
|
|
3690
|
+
}
|
|
3691
|
+
const deadline = Date.now() + timeoutMs;
|
|
3692
|
+
for (;;) {
|
|
3693
|
+
const remaining = deadline - Date.now();
|
|
3694
|
+
if (remaining <= 0)
|
|
3695
|
+
return false;
|
|
3696
|
+
const idle = await this.waitForPaneIdleForDelivery(windowId, remaining);
|
|
3697
|
+
if (!idle)
|
|
3698
|
+
return false;
|
|
3699
|
+
if (await this.isPaneReadyForDelivery(windowId))
|
|
3700
|
+
return true;
|
|
3701
|
+
await new Promise(r => setTimeout(r, BOTTOM_READY_POLL_MS));
|
|
3702
|
+
}
|
|
3703
|
+
}
|
|
3704
|
+
/**
|
|
3705
|
+
* F3: if an AgEnD message is sitting unsubmitted in the input row (a previous
|
|
3706
|
+
* delivery's Enter was dropped), submit it with one bare Enter under the pane
|
|
3707
|
+
* lock. Only acts on a positive signature — the `[user:`/`[from:` marker every
|
|
3708
|
+
* pasted message carries — never on Kiro's own placeholder hints.
|
|
3709
|
+
*
|
|
3710
|
+
* Outcomes: "idle" = positively verified nothing stranded (the caller may
|
|
3711
|
+
* paste); "submitted" = an Enter went out for the stranded text; "busy" = the
|
|
3712
|
+
* pane is not at its prompt or could not be read (the caller must wait for
|
|
3713
|
+
* the prompt and run this check AGAIN before pasting — never assume someone
|
|
3714
|
+
* else submitted it); "failed" = the Enter could not be sent (the delivery
|
|
3715
|
+
* must fail rather than paste on top of the stranded text).
|
|
3716
|
+
*/
|
|
3717
|
+
async submitStrandedInputIfAny(windowId) {
|
|
3718
|
+
if (this.backend?.dropsEnterWhileBusy?.() !== true || !this.tmux)
|
|
3719
|
+
return "idle";
|
|
3720
|
+
const prompt = this.backend.getBottomReadyPattern?.();
|
|
3721
|
+
if (!prompt)
|
|
3722
|
+
return "idle";
|
|
3723
|
+
// Pre-check outside the lock so the common case (verified clear) never
|
|
3724
|
+
// contends with the dialog dismisser. Only a POSITIVE "clear" skips the
|
|
3725
|
+
// lock; an unreadable pane is re-examined under it, not waved through.
|
|
3726
|
+
const pre = await this.strandedInputState(prompt);
|
|
3727
|
+
if (pre === "clear")
|
|
3728
|
+
return "idle";
|
|
3729
|
+
if (pre === "busy")
|
|
3730
|
+
return "busy";
|
|
3731
|
+
if (pre === "stranded") {
|
|
3732
|
+
this.logger.warn({ windowId }, "Unsubmitted message found in the input row — submitting it before this delivery");
|
|
3733
|
+
}
|
|
3734
|
+
return this.paneWriteLock.run(async () => {
|
|
3735
|
+
// Re-check UNDER the lock right before the key goes out: between the
|
|
3736
|
+
// pre-check and acquiring the lock the CLI may have started generating
|
|
3737
|
+
// (the stranded text got submitted by someone else, or the dismisser
|
|
3738
|
+
// acted), or a fatal startup screen may have come up. A bare Enter is a
|
|
3739
|
+
// no-op at an empty prompt, but into a modal it is a confirmation.
|
|
3740
|
+
if (this.fatalStartupBlocked)
|
|
3741
|
+
return "busy";
|
|
3742
|
+
const state = await this.strandedInputState(prompt);
|
|
3743
|
+
if (state === "clear")
|
|
3744
|
+
return "idle";
|
|
3745
|
+
if (state !== "stranded")
|
|
3746
|
+
return "busy"; // busy, or unreadable: no evidence the prompt is free
|
|
3747
|
+
const sent = await this.sendDeliveryEnter("stranded-input-submit");
|
|
3748
|
+
return sent ? "submitted" : "failed";
|
|
3749
|
+
});
|
|
3750
|
+
}
|
|
3751
|
+
/**
|
|
3752
|
+
* "stranded": an AgEnD message sits in the input row; "clear": the prompt is
|
|
3753
|
+
* at the bottom with no stranded text; "busy": generating, or the prompt is
|
|
3754
|
+
* not at the bottom (incl. a blank frame); "unknown": the pane could not be
|
|
3755
|
+
* read. Only "clear" is positive evidence.
|
|
3756
|
+
*/
|
|
3757
|
+
async strandedInputState(prompt) {
|
|
3758
|
+
let pane;
|
|
3759
|
+
try {
|
|
3760
|
+
pane = await this.tmux.capturePane();
|
|
3761
|
+
}
|
|
3762
|
+
catch {
|
|
3763
|
+
return "unknown";
|
|
3764
|
+
}
|
|
3765
|
+
if (this.backend?.getBusyPattern?.()?.test(pane))
|
|
3766
|
+
return "busy";
|
|
3767
|
+
if (strandedAgendMessageInInput(pane, prompt))
|
|
3768
|
+
return "stranded";
|
|
3769
|
+
return bottomRowIsReady(pane, prompt) ? "clear" : "busy";
|
|
3770
|
+
}
|
|
3771
|
+
/**
|
|
3772
|
+
* F2: for Enter-dropping TUIs, "some output after Enter" proves nothing — the
|
|
3773
|
+
* turn that made the pane look idle keeps producing output. Confirm the
|
|
3774
|
+
* SUBMISSION instead: the pasted text is gone from the input row ("absent"),
|
|
3775
|
+
* or the TUI's own busy marker is up. "unknown" = the pane could not be read;
|
|
3776
|
+
* it never counts as confirmed.
|
|
3777
|
+
*/
|
|
3778
|
+
async pasteResidue(formatted) {
|
|
3779
|
+
const prompt = this.backend?.getBottomReadyPattern?.();
|
|
3780
|
+
if (!prompt || !this.tmux)
|
|
3781
|
+
return "absent";
|
|
3782
|
+
let pane;
|
|
3783
|
+
try {
|
|
3784
|
+
pane = await this.tmux.capturePane();
|
|
3785
|
+
}
|
|
3786
|
+
catch {
|
|
3787
|
+
return "unknown";
|
|
3788
|
+
}
|
|
3789
|
+
if (this.backend?.getBusyPattern?.()?.test(pane))
|
|
3790
|
+
return "absent"; // generating = submitted
|
|
3791
|
+
return pasteLeftInInput(pane, prompt, formatted) ? "present" : "absent";
|
|
3792
|
+
}
|
|
3793
|
+
/**
|
|
3794
|
+
* Submission = the legacy idle→busy output signal AND the pasted text has
|
|
3795
|
+
* verifiably left the input row. The first alone is what produced false ✅s:
|
|
3796
|
+
* the turn that made the pane look idle keeps emitting output after our
|
|
3797
|
+
* (dropped) Enter — and an unreadable pane is not a verified absence either.
|
|
3798
|
+
*/
|
|
3799
|
+
async confirmSubmittedAfterEnter(windowId, enterAt, formatted) {
|
|
3800
|
+
const sawOutput = await this.confirmBusyAfterEnter(windowId, enterAt);
|
|
3801
|
+
const residue = await this.pasteResidue(formatted);
|
|
3802
|
+
if (residue === "unknown")
|
|
3803
|
+
this.logger.warn("Could not read the pane after Enter — not confirming the submission");
|
|
3804
|
+
return sawOutput && residue === "absent";
|
|
3805
|
+
}
|
|
3586
3806
|
/**
|
|
3587
3807
|
* While the CLI is parked on a fatal startup screen (see fatalStartupBlocked),
|
|
3588
3808
|
* no pane write may happen: paste+Enter into the corrupt-config modal would
|
|
@@ -3801,7 +4021,36 @@ export class Daemon extends EventEmitter {
|
|
|
3801
4021
|
this.emit("message_failed", status); // ❌
|
|
3802
4022
|
return false;
|
|
3803
4023
|
}
|
|
3804
|
-
if (windowId && this.controlClient) {
|
|
4024
|
+
if (windowId && this.controlClient && this.backend?.dropsEnterWhileBusy?.() === true) {
|
|
4025
|
+
// F2: output after Enter is necessary but not sufficient — the paste
|
|
4026
|
+
// must also have LEFT the input row.
|
|
4027
|
+
let submitted = await this.confirmSubmittedAfterEnter(windowId, enterAt, formatted);
|
|
4028
|
+
if (!submitted) {
|
|
4029
|
+
// The Enter landed while the TUI was still busy (it kept the text but
|
|
4030
|
+
// dropped the key). A retry is only useful once the prompt is back —
|
|
4031
|
+
// bounded, since we hold the pane lock here.
|
|
4032
|
+
this.logger.warn("Message not submitted after Enter — waiting for the prompt, then re-sending Enter once");
|
|
4033
|
+
const promptBack = await this.waitForPaneReadyForDelivery(windowId, STRANDED_RETRY_READY_WAIT_MS);
|
|
4034
|
+
const retryAt = Date.now();
|
|
4035
|
+
if (promptBack && !(await this.sendDeliveryEnter("stranded-text-retry"))) {
|
|
4036
|
+
if (status)
|
|
4037
|
+
this.emit("message_failed", status); // ❌
|
|
4038
|
+
return false;
|
|
4039
|
+
}
|
|
4040
|
+
submitted = promptBack && await this.confirmSubmittedAfterEnter(windowId, retryAt, formatted);
|
|
4041
|
+
}
|
|
4042
|
+
if (submitted) {
|
|
4043
|
+
if (status)
|
|
4044
|
+
this.emit("message_confirmed", status); // ✅
|
|
4045
|
+
}
|
|
4046
|
+
else {
|
|
4047
|
+
this.logger.error("Message pasted but never submitted (text still in the input row after Enter retry)");
|
|
4048
|
+
if (status)
|
|
4049
|
+
this.emit("message_failed", status); // ❌
|
|
4050
|
+
return false;
|
|
4051
|
+
}
|
|
4052
|
+
}
|
|
4053
|
+
else if (windowId && this.controlClient) {
|
|
3805
4054
|
let becameBusy = await this.confirmBusyAfterEnter(windowId, enterAt);
|
|
3806
4055
|
if (!becameBusy) {
|
|
3807
4056
|
this.logger.warn("No idle→busy transition after Enter — re-sending Enter once");
|