@songsid/agend 2.3.2-beta.9 → 2.3.3-beta.1
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/README.md +6 -0
- package/README.zh-TW.md +6 -0
- package/dist/agent-cli-instructions.md +2 -2
- package/dist/agent-cli.js +48 -0
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +6 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.d.ts +21 -0
- package/dist/agent-whats-new.js +53 -21
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.js +2 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/claude-code.d.ts +13 -1
- package/dist/backend/claude-code.js +43 -2
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-session-lookup.d.ts +15 -0
- package/dist/backend/codex-session-lookup.js +58 -0
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex.js +15 -4
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-classic-archive.d.ts +57 -0
- package/dist/backend/kiro-classic-archive.js +622 -0
- package/dist/backend/kiro-classic-archive.js.map +1 -0
- package/dist/backend/kiro-classic-links.d.ts +24 -0
- package/dist/backend/kiro-classic-links.js +135 -0
- package/dist/backend/kiro-classic-links.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +100 -1
- package/dist/backend/kiro-identity.js +262 -31
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro-migration-verify.d.ts +10 -0
- package/dist/backend/kiro-migration-verify.js +52 -0
- package/dist/backend/kiro-migration-verify.js.map +1 -0
- package/dist/backend/kiro-reconcile-store.d.ts +27 -0
- package/dist/backend/kiro-reconcile-store.js +351 -0
- package/dist/backend/kiro-reconcile-store.js.map +1 -0
- package/dist/backend/kiro-v2-store-worker.js +35 -1
- package/dist/backend/kiro-v2-store-worker.js.map +1 -1
- package/dist/backend/kiro-v2-store.d.ts +31 -1
- package/dist/backend/kiro-v2-store.js +22 -12
- package/dist/backend/kiro-v2-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +124 -6
- package/dist/backend/kiro.js +553 -39
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +109 -4
- package/dist/backend/types.js +9 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/cache-service.d.ts +13 -1
- package/dist/cache-service.js +45 -2
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/ipc-timeouts.js +3 -0
- package/dist/channel/ipc-timeouts.js.map +1 -1
- package/dist/channel/mcp-tools.js +40 -5
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.js +2 -1
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +6 -0
- package/dist/classic-channel-manager.js +25 -0
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +52 -6
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +7 -1
- package/dist/config-validator.js +20 -9
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/cross-instance-envelope.d.ts +10 -5
- package/dist/cross-instance-envelope.js +20 -17
- package/dist/cross-instance-envelope.js.map +1 -1
- package/dist/daemon.d.ts +125 -63
- package/dist/daemon.js +694 -330
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +15 -4
- package/dist/dashboard-permissions.js +49 -23
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/delivery-outbox.d.ts +27 -22
- package/dist/delivery-outbox.js +109 -161
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-outbox.test.js +10 -25
- package/dist/delivery-outbox.test.js.map +1 -1
- package/dist/doctor.js +2 -1
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-control-audit.d.ts +1 -1
- package/dist/fleet-control-audit.js +3 -0
- package/dist/fleet-control-audit.js.map +1 -1
- package/dist/fleet-manager.d.ts +94 -15
- package/dist/fleet-manager.js +597 -133
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +9 -0
- package/dist/forged-envelope-scan.js +30 -5
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-instance.d.ts +24 -0
- package/dist/general-instance.js +53 -0
- package/dist/general-instance.js.map +1 -1
- package/dist/general-knowledge/skills/delegation-playbook/SKILL.md +1 -1
- package/dist/general-knowledge/skills/docker-install/SKILL.md +25 -0
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +5 -3
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +34 -0
- package/dist/general-knowledge/skills/session-management/SKILL.md +2 -2
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +32 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +32 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +57 -17
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +57 -17
- package/dist/instance-config-impact.js +3 -2
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +4 -0
- package/dist/instance-lifecycle.js +28 -5
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.js +6 -7
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-migrate.d.ts +19 -2
- package/dist/kiro-migrate.js +133 -35
- package/dist/kiro-migrate.js.map +1 -1
- package/dist/kiro-reconcile.d.ts +21 -0
- package/dist/kiro-reconcile.js +88 -0
- package/dist/kiro-reconcile.js.map +1 -0
- package/dist/kiro-session-proof.d.ts +41 -0
- package/dist/kiro-session-proof.js +89 -0
- package/dist/kiro-session-proof.js.map +1 -0
- package/dist/kiro-tui-forensic.d.ts +19 -0
- package/dist/kiro-tui-forensic.js +124 -0
- package/dist/kiro-tui-forensic.js.map +1 -0
- package/dist/locale.js +202 -16
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +3 -3
- package/dist/log-service.js.map +1 -1
- package/dist/needs-you.d.ts +3 -1
- package/dist/needs-you.js +4 -2
- package/dist/needs-you.js.map +1 -1
- package/dist/office-levels.d.ts +64 -0
- package/dist/office-levels.js +66 -0
- package/dist/office-levels.js.map +1 -0
- package/dist/office-share-page.d.ts +3 -1
- package/dist/office-share-page.js +8 -3
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share-service.d.ts +6 -3
- package/dist/office-share-service.js +12 -8
- package/dist/office-share-service.js.map +1 -1
- package/dist/office-share.d.ts +45 -8
- package/dist/office-share.js +75 -15
- package/dist/office-share.js.map +1 -1
- package/dist/outbound-handlers.js +21 -2
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +47 -2
- package/dist/outbound-schemas.js +42 -3
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +1 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.d.ts +39 -1
- package/dist/quickstart-api.js +115 -17
- package/dist/quickstart-api.js.map +1 -1
- package/dist/remote-card-answer.d.ts +83 -0
- package/dist/remote-card-answer.js +208 -0
- package/dist/remote-card-answer.js.map +1 -0
- package/dist/remote-card-prompt.d.ts +38 -0
- package/dist/remote-card-prompt.js +86 -0
- package/dist/remote-card-prompt.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +44 -17
- package/dist/scheduler/task-board.js +95 -36
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/sd-notify.d.ts +13 -14
- package/dist/sd-notify.js +62 -28
- package/dist/sd-notify.js.map +1 -1
- package/dist/service-installer.d.ts +13 -0
- package/dist/service-installer.js +15 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/service-owner.d.ts +25 -0
- package/dist/service-owner.js +43 -2
- package/dist/service-owner.js.map +1 -1
- package/dist/settings-api.d.ts +2 -1
- package/dist/settings-api.js +19 -26
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +10 -5
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -6
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +1 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-form.d.ts +2 -2
- package/dist/setup-form.js +139 -93
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-i18n.d.ts +25 -0
- package/dist/setup-i18n.js +226 -0
- package/dist/setup-i18n.js.map +1 -0
- package/dist/task-board-waker.d.ts +40 -1
- package/dist/task-board-waker.js +115 -9
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tmux-control.d.ts +1 -1
- package/dist/tmux-control.js +3 -2
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.js +18 -16
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.d.ts +2 -0
- package/dist/tmux-read.js +7 -1
- package/dist/tmux-read.js.map +1 -1
- package/dist/tool-permissions.js +18 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +2 -0
- package/dist/topic-commands.js +2 -1
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +1 -0
- package/dist/transcript-sources.js +20 -3
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +11 -5
- package/dist/ui/backend-signin.js +4 -3
- package/dist/ui/chat-store.js +3 -2
- package/dist/ui/chat-strings.js +2 -2
- package/dist/ui/fleet-office-card.js +114 -0
- package/dist/ui/fleet-office-editor.js +81 -9
- package/dist/ui/fleet-office-layout.js +56 -11
- package/dist/ui/fleet-office-levels.js +105 -0
- package/dist/ui/fleet-office-model.js +9 -1
- package/dist/ui/fleet-office-pack.d.ts +15 -3
- package/dist/ui/fleet-office-pack.js +177 -23
- package/dist/ui/fleet-office-skin.js +39 -3
- package/dist/ui/fleet-office-store.js +74 -3
- package/dist/ui/fleet-office-view.js +8 -0
- package/dist/ui/fleet-office-zones.js +102 -19
- package/dist/ui/fleet-office.js +308 -44
- package/dist/ui/fleet-org.js +2 -0
- package/dist/ui/fleet-task-card.js +2 -2
- package/dist/ui/fleet-task-common.js +30 -7
- package/dist/ui/fleet-task-work.js +2 -2
- package/dist/ui/fleet-tasks.js +10 -11
- package/dist/ui/office-share-dialog.js +31 -7
- package/dist/ui/office-share-page.js +1 -0
- package/dist/ui/panel-chat.js +14 -2
- package/dist/ui/panel-log.js +6 -6
- package/dist/ui/panel-needs.js +1 -1
- package/dist/ui/panel-settings.js +16 -8
- package/dist/ui/settings-appearance.js +3 -35
- package/dist/ui/settings-discord.js +3 -2
- package/dist/ui/settings-guests.js +17 -7
- package/dist/ui/settings-model.js +17 -9
- package/dist/ui/settings-registry.js +1 -1
- package/dist/ui/settings-strings.js +18 -6
- package/dist/ui/settings-token.js +3 -2
- package/dist/ui/settings-wizard.js +25 -9
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-stream.js +1 -1
- package/dist/ui/shared/app.css +70 -2
- package/dist/ui/shared/setup-host-text.js +107 -0
- package/dist/ui/structured-signin.js +89 -38
- package/dist/update-check.d.ts +13 -4
- package/dist/update-check.js +17 -4
- package/dist/update-check.js.map +1 -1
- package/dist/usage-rollup.d.ts +34 -3
- package/dist/usage-rollup.js +56 -3
- package/dist/usage-rollup.js.map +1 -1
- package/dist/web-api.d.ts +10 -1
- package/dist/web-api.js +207 -17
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +1 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-experimental.d.ts +6 -2
- package/dist/web-experimental.js +8 -4
- package/dist/web-experimental.js.map +1 -1
- package/dist/web-office-acts.d.ts +5 -2
- package/dist/web-office-acts.js +9 -4
- package/dist/web-office-acts.js.map +1 -1
- package/dist/web-office-pack-read.d.ts +35 -0
- package/dist/web-office-pack-read.js +252 -0
- package/dist/web-office-pack-read.js.map +1 -0
- package/dist/web-office-pack-tools.d.ts +241 -0
- package/dist/web-office-pack-tools.js +785 -0
- package/dist/web-office-pack-tools.js.map +1 -0
- package/dist/web-office-skins.d.ts +68 -4
- package/dist/web-office-skins.js +324 -33
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-office-store.d.ts +47 -4
- package/dist/web-office-store.js +124 -23
- package/dist/web-office-store.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -2
- package/dist/web-settings-patch.js +7 -5
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/workflow-templates/default.md +3 -3
- package/dist/working-recovery.d.ts +0 -2
- package/dist/working-recovery.js +2 -23
- package/dist/working-recovery.js.map +1 -1
- package/package.json +2 -2
- package/templates/windows-shortcuts.ps1 +18 -17
- package/dist/upgrade-notices.d.ts +0 -17
- package/dist/upgrade-notices.js +0 -93
- package/dist/upgrade-notices.js.map +0 -1
package/dist/daemon.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { type PauseReason } from "./pause-marker.js";
|
|
|
8
8
|
import { MessageBus } from "./channel/message-bus.js";
|
|
9
9
|
import type { CliBackend, ErrorPattern, InstanceState, InstanceStateSnapshot } from "./backend/types.js";
|
|
10
10
|
import { HangDetector } from "./hang-detector.js";
|
|
11
|
+
import { type RemoteCardAction, type RemoteCardOutcome } from "./remote-card-answer.js";
|
|
11
12
|
import type { TmuxControlClient } from "./tmux-control.js";
|
|
12
13
|
import type { FleetInstructionsParams } from "./instructions.js";
|
|
13
14
|
import type { SpawnGate } from "./spawn-gate.js";
|
|
@@ -22,34 +23,6 @@ import type { KiroLogLaunch } from "./kiro-log-gate.js";
|
|
|
22
23
|
* often; a long silent tool run shows its own busy row on the pane.
|
|
23
24
|
*/
|
|
24
25
|
export declare const TRANSCRIPT_OPEN_TURN_QUIET_MS: number;
|
|
25
|
-
export declare function buildInstructionReloadNotice(binaryName: string, instanceName: string, instanceDir: string, backendSource?: string | null): string;
|
|
26
|
-
/**
|
|
27
|
-
* Whether this backend has to be told in its pane that its instructions moved.
|
|
28
|
-
*
|
|
29
|
-
* A backend that re-reads them on resume already received the new ones from the
|
|
30
|
-
* resume itself, so the notice is pure interruption. Both places that can send
|
|
31
|
-
* it — the warmup paste and the deferred pendingInstructionsNotice — ask through
|
|
32
|
-
* here, so the two cannot drift apart again: the warmup path used to omit this
|
|
33
|
-
* check entirely and told claude-code to reload instructions it had just read.
|
|
34
|
-
*/
|
|
35
|
-
export declare function backendNeedsPaneReloadNotice(backend?: {
|
|
36
|
-
instructionsReloadedOnResume?: boolean;
|
|
37
|
-
}): boolean;
|
|
38
|
-
/**
|
|
39
|
-
* What the warmup should do about changed instructions.
|
|
40
|
-
*
|
|
41
|
-
* `skip` — nothing to say, or this backend learns of the change by itself.
|
|
42
|
-
* `defer` — worth saying, but nobody is talking to the instance; say it when a
|
|
43
|
-
* real message next arrives rather than provoking an unsolicited reply.
|
|
44
|
-
* `paste` — say it now, into a pane that already has a delivery in flight.
|
|
45
|
-
*/
|
|
46
|
-
export declare function warmupNoticeAction(opts: {
|
|
47
|
-
warmupNeeded: boolean;
|
|
48
|
-
backend?: {
|
|
49
|
-
instructionsReloadedOnResume?: boolean;
|
|
50
|
-
};
|
|
51
|
-
pasteQueueDepth: number;
|
|
52
|
-
}): "skip" | "defer" | "paste";
|
|
53
26
|
export declare const DEFAULT_STUCK_TIMEOUT_MS: number;
|
|
54
27
|
export declare const DEFAULT_STATE_IDLE_DEBOUNCE_MS = 2000;
|
|
55
28
|
export declare const DEFAULT_STATE_SAFETY_SWEEP_MS = 60000;
|
|
@@ -57,6 +30,14 @@ export declare const DEFAULT_STATE_SAFETY_SWEEP_MS = 60000;
|
|
|
57
30
|
export declare const PERIODIC_REDRAW_PROBE_MS = 25;
|
|
58
31
|
/** Do not turn a streaming Codex turn into one capture-pane per burst. */
|
|
59
32
|
export declare const STRUCTURED_IDLE_PROBE_MS = 500;
|
|
33
|
+
/** #2770 (ii): how often output may schedule a look for a layout that repaints while idle (CliBackend.periodicRedrawFrom). */
|
|
34
|
+
export declare const PERIODIC_LAYOUT_LOOK_MS = 5000;
|
|
35
|
+
/** #2770: how often a delivery waiting for idle asks again whether it can be handed off instead. */
|
|
36
|
+
export declare const HANDOFF_RECHECK_MS = 1000;
|
|
37
|
+
/** #2770: how often a wait for idle asks its stop condition (a cancel, a hand-off that became possible). */
|
|
38
|
+
export declare const WAIT_STOP_POLL_MS = 250;
|
|
39
|
+
/** #2770: human messages a cancel dropped are told in one notice, this long after the last of them. */
|
|
40
|
+
export declare const CANCELLED_HUMANS_NOTICE_MS = 1000;
|
|
60
41
|
/**
|
|
61
42
|
* An instance publishing more than this many execution-state edges inside the
|
|
62
43
|
* window is flapping; its edges stop being logged one by one (#1116). One
|
|
@@ -460,6 +441,13 @@ export declare class Daemon extends EventEmitter {
|
|
|
460
441
|
logTranscriptPath(): string | null;
|
|
461
442
|
/** #1218 (kiro): the launch this daemon's backend last built, for the Log's reason only (kiro-log-gate.ts). */
|
|
462
443
|
logLaunch(): KiroLogLaunch | null;
|
|
444
|
+
kiroMigrationIdle(): Promise<boolean>;
|
|
445
|
+
/** One read-only migration observation. Never types into a pane or selects a picker. */
|
|
446
|
+
kiroMigrationObservation(): Promise<{
|
|
447
|
+
sessionId: string;
|
|
448
|
+
model: string;
|
|
449
|
+
transcript: string;
|
|
450
|
+
} | null>;
|
|
463
451
|
private guardian;
|
|
464
452
|
private adapter;
|
|
465
453
|
private pendingIpcRequests;
|
|
@@ -553,6 +541,12 @@ export declare class Daemon extends EventEmitter {
|
|
|
553
541
|
private dialogParkedKey;
|
|
554
542
|
private dialogParkedInteractionEpisode;
|
|
555
543
|
private dialogParkedReported;
|
|
544
|
+
/** #2675: the card on screen that a person can answer from the chat — what it asks, since when, and whether it was posted. */
|
|
545
|
+
private remoteCardShown;
|
|
546
|
+
/** #2675: when (performance.now, taken before its capture) the newest read the card tracker used was started. */
|
|
547
|
+
private remoteCardReadAt;
|
|
548
|
+
/** #2675: an answer from the chat is being keyed in (one at a time). */
|
|
549
|
+
private remoteCardAnswering;
|
|
556
550
|
/**
|
|
557
551
|
* #1691: the prompt at the bottom of the pane that no backend table knows — its block, since when (performance.now)
|
|
558
552
|
* it has been unchanged, and whether that has lasted UNRECOGNISED_PROMPT_STABLE_MS. Updated by the runtime scan.
|
|
@@ -635,6 +629,10 @@ export declare class Daemon extends EventEmitter {
|
|
|
635
629
|
/** Consecutive structural idle captures for a noisy, periodically-redrawing
|
|
636
630
|
* pane. Two are required before a working -> idle transition. */
|
|
637
631
|
private instanceStatePeriodicIdleConfirmations;
|
|
632
|
+
/** #2770 (ii): the latest capture showed a layout that repaints while idle (CliBackend.periodicRedrawFrom). */
|
|
633
|
+
private periodicRedrawLayout;
|
|
634
|
+
/** When output last scheduled a look for that layout (monotonic ms), so a busy pane is not captured on every chunk. */
|
|
635
|
+
private periodicLayoutLookAt;
|
|
638
636
|
/** Recent execution-state edge times, for the flap log limiter (#1116). */
|
|
639
637
|
private stateEdgeTimes;
|
|
640
638
|
private stateEdgesNotLogged;
|
|
@@ -673,7 +671,6 @@ export declare class Daemon extends EventEmitter {
|
|
|
673
671
|
/** Prevent a visible stale XML fragment from being recovered on later turns. */
|
|
674
672
|
private lastMalformedToolCallSignature;
|
|
675
673
|
private proxyReplySeq;
|
|
676
|
-
private lastReplyDropWarningAt;
|
|
677
674
|
/**
|
|
678
675
|
* #1241: an idle edge that has not yet proven the turn ended. Armed instead
|
|
679
676
|
* of recovering immediately; a steady idle snapshot past confirmAt promotes
|
|
@@ -732,6 +729,8 @@ export declare class Daemon extends EventEmitter {
|
|
|
732
729
|
private authFailureUnresolved;
|
|
733
730
|
/** One login-screen auth report per spawn — the screen persists across polls. */
|
|
734
731
|
private loginScreenReported;
|
|
732
|
+
/** #2795: the auth pattern match the token-free check is still to judge; it arms nothing until confirmAuthFailure(). */
|
|
733
|
+
private unverifiedAuthMatch;
|
|
735
734
|
/**
|
|
736
735
|
* While the lifecycle is still starting this daemon, `pty_error` has no
|
|
737
736
|
* listener and `InstanceLifecycle.daemons` has no entry — so an incident the
|
|
@@ -788,15 +787,12 @@ export declare class Daemon extends EventEmitter {
|
|
|
788
787
|
private deliveryWritesStopping;
|
|
789
788
|
/** #829: the latest pastes, by spawn generation (see ownedInputDraft). */
|
|
790
789
|
private recentPastes;
|
|
791
|
-
private pendingInstructionsUpdate;
|
|
792
|
-
private pendingInstructionsNotice;
|
|
793
790
|
/** #1633: the one-time "what's new for you" notice, pasted before the next real delivery; recorded once pasted. */
|
|
794
791
|
private pendingWhatsNew;
|
|
795
|
-
/** #2140: deliveries tried for the pending what's-new notice that never reached the pane (capped: never before every message). */
|
|
796
|
-
private whatsNewUnwritten;
|
|
797
|
-
private warmupNeeded;
|
|
798
|
-
private lastBuiltInstructions;
|
|
799
792
|
private pasteQueueDepth;
|
|
793
|
+
/** #2770: a person's messages a cancel dropped before they reached the CLI, told together (noteCancelledHuman). */
|
|
794
|
+
private cancelledHumans;
|
|
795
|
+
private cancelledHumansTimer;
|
|
800
796
|
private firstDeliveryDelay;
|
|
801
797
|
/** Orders /steer pastes against each other. Deliberately NOT pasteLock:
|
|
802
798
|
* a steer must not queue behind the normal deliveries it exists to
|
|
@@ -946,21 +942,21 @@ export declare class Daemon extends EventEmitter {
|
|
|
946
942
|
releaseStartupIncidents(): void;
|
|
947
943
|
emit(event: string | symbol, ...args: unknown[]): boolean;
|
|
948
944
|
/**
|
|
949
|
-
* Undo
|
|
950
|
-
* probe
|
|
951
|
-
*
|
|
952
|
-
*
|
|
953
|
-
*
|
|
954
|
-
* daemon permanently suspicious of an auth failure that never existed. That
|
|
955
|
-
* state is not inert: authFailureUnresolved suppresses the stuck/hang
|
|
956
|
-
* notification and holds MCP auto-restart (a later real MCP death is then read
|
|
957
|
-
* as already-confirmed auth trouble rather than re-verified), and the recovery
|
|
958
|
-
* gate suppresses further error detection until a ready pattern shows up.
|
|
959
|
-
*
|
|
960
|
-
* Only what an auth match armed is rolled back. If some other pattern has
|
|
961
|
-
* since armed the recovery gate, that one is still live and stays.
|
|
945
|
+
* Undo an auth suspicion once the backend's token-free probe has said the credentials are fine. Since #2795 a pane
|
|
946
|
+
* pattern match arms nothing before that probe (its pending match is just dropped); what is left to undo is a
|
|
947
|
+
* login-screen report, which arms authFailureUnresolved itself. That state is not inert: it suppresses the
|
|
948
|
+
* stuck/hang notification and holds MCP auto-restart. If some other pattern has armed the recovery gate, that one
|
|
949
|
+
* is still live and stays.
|
|
962
950
|
*/
|
|
963
951
|
clearSuspectedAuthFailure(): boolean;
|
|
952
|
+
private armErrorRecoveryGate;
|
|
953
|
+
/**
|
|
954
|
+
* #2795: the token-free check did not vouch for the credentials behind an auth pattern match. Only now does the
|
|
955
|
+
* match become an auth failure: the state the detector used to arm at match time. Remembered for as long as it is
|
|
956
|
+
* unresolved — an auth-broken CLI cannot finish the turn it is holding, so every other detector would otherwise
|
|
957
|
+
* keep reporting the same dead instance. A login-screen report arms its own state and has no match to confirm.
|
|
958
|
+
*/
|
|
959
|
+
confirmAuthFailure(): boolean;
|
|
964
960
|
private clearErrorRecoveryGate;
|
|
965
961
|
constructor(name: string, config: InstanceConfig, instanceDir: string, topicMode?: boolean, backend?: CliBackend | undefined, controlClient?: TmuxControlClient | undefined, rootLogger?: Logger, runtimeIdentity?: FleetInstructionsParams["runtimeIdentity"], spawnGate?: SpawnGate | undefined, stormWindow?: StormWindow | undefined,
|
|
966
962
|
/** Fleet-level "is this CLI's backend down?" memory — see backend-outage.ts. */
|
|
@@ -1452,8 +1448,6 @@ export declare class Daemon extends EventEmitter {
|
|
|
1452
1448
|
private currentReplyRecovery;
|
|
1453
1449
|
private queueMalformedReplyRecovery;
|
|
1454
1450
|
private reportUnrecoveredReplyDrop;
|
|
1455
|
-
/** Channel notice for a reply-drop. `rateLimit` shares the per-instance cooldown (#2544). */
|
|
1456
|
-
private deliverReplyDropNotice;
|
|
1457
1451
|
/** Relay the pane's final text to the channel, marked as a daemon proxy reply. */
|
|
1458
1452
|
private sendProxyReply;
|
|
1459
1453
|
/** Context-bound reply path shared by dead-MCP and malformed-call recovery. */
|
|
@@ -1471,6 +1465,12 @@ export declare class Daemon extends EventEmitter {
|
|
|
1471
1465
|
private scheduleInstanceStateIdleCapture;
|
|
1472
1466
|
private captureAndEvaluateInstanceState;
|
|
1473
1467
|
private handleInstancePaneOutput;
|
|
1468
|
+
/**
|
|
1469
|
+
* The backend's structural idle proof for periodically repainting panes, when it applies to the current layout: always
|
|
1470
|
+
* for a backend that repaints in every layout (Codex, Muse), only while the latest capture showed such a layout for one
|
|
1471
|
+
* that names it (CliBackend.periodicRedrawFrom — Claude's background-agent list, #2770 (ii)).
|
|
1472
|
+
*/
|
|
1473
|
+
private periodicIdleProof;
|
|
1474
1474
|
private bindInstanceStateOutputListener;
|
|
1475
1475
|
private startInstanceStateMonitor;
|
|
1476
1476
|
private stopInstanceStateMonitor;
|
|
@@ -1558,6 +1558,13 @@ export declare class Daemon extends EventEmitter {
|
|
|
1558
1558
|
/** The same formatter/sanitizer used by the actual write; snapshot only. */
|
|
1559
1559
|
humanReceiptWire(content: string, meta: Record<string, string>, kind: string): string;
|
|
1560
1560
|
private humanReceiptAttempt;
|
|
1561
|
+
/**
|
|
1562
|
+
* #2770: a person's message a cancel dropped before it reached the CLI is told, not left as a silent "uncertain":
|
|
1563
|
+
* the messages dropped together go out as one `human_messages_cancelled` (the fleet marks each ❌ and says so once).
|
|
1564
|
+
* Agents' messages are not a person's, and a durable row (delivery_id) is retried by the outbox: neither is ❌'d. A
|
|
1565
|
+
* message with no chat to mark has nowhere to say it.
|
|
1566
|
+
*/
|
|
1567
|
+
private noteCancelledHuman;
|
|
1561
1568
|
private finishHumanReceipt;
|
|
1562
1569
|
/**
|
|
1563
1570
|
* Whether ONE delivery reached a verdict, carried by that delivery.
|
|
@@ -1783,6 +1790,22 @@ export declare class Daemon extends EventEmitter {
|
|
|
1783
1790
|
* dialog's static description and a count, never the pane: a pane can hold anything the agent printed.
|
|
1784
1791
|
*/
|
|
1785
1792
|
private noteDialogAnswer;
|
|
1793
|
+
/**
|
|
1794
|
+
* #2675: a held card a person can answer from the chat (the dialog's remoteCard reader) is posted once it has stayed
|
|
1795
|
+
* the same card for REMOTE_CARD_STABLE_MS — `remote_card` with what it asks; the fleet posts it with its buttons. When
|
|
1796
|
+
* it closes or another card replaces it, `remote_card_gone` retires that post. Moving through the card (ours or the
|
|
1797
|
+
* person's in the pane) is the same card: its identity has no cursor. `readAt` is when the pane's capture was started
|
|
1798
|
+
* (performance.now): a read that started before the newest one used here finishes late and says nothing about now —
|
|
1799
|
+
* it may neither retire a newer card nor bring an older one back (#2677 review).
|
|
1800
|
+
*/
|
|
1801
|
+
private trackRemoteCard;
|
|
1802
|
+
/** #2675: the card's post was used up without answering it (refused, stopped part-way): post it again once it holds still. */
|
|
1803
|
+
repostRemoteCard(): void;
|
|
1804
|
+
/**
|
|
1805
|
+
* #2675: answer the card on screen from the chat, as the person chose: only while it is the card they saw
|
|
1806
|
+
* (`identity`), on a verified cursor, under the pane write lock (remote-card-answer.ts). Never logs the answer.
|
|
1807
|
+
*/
|
|
1808
|
+
answerRemoteCard(identity: string, action: RemoteCardAction): Promise<RemoteCardOutcome>;
|
|
1786
1809
|
/**
|
|
1787
1810
|
* Remember how long a blocking dialog has been on screen. Once it has
|
|
1788
1811
|
* outlived DIALOG_PARKED_NOTIFY_MS — the auto-dismiss did not take, or the
|
|
@@ -1822,8 +1845,26 @@ export declare class Daemon extends EventEmitter {
|
|
|
1822
1845
|
* while a fresh capture reads its composer as "steer" — or "idle" once the turn has ended (`allowIdle`, the pre-write
|
|
1823
1846
|
* re-check). "queue" (the user's choice), text in the box, or a screen it cannot read: not now — the caller waits for
|
|
1824
1847
|
* the idle prompt as for any message. AgEnD never switches the mode. Backends without the reader are not asked.
|
|
1848
|
+
* #2676: an ordinary message (`steerOnly` false) goes in on "queue" too — kiro takes it into the same tray either way,
|
|
1849
|
+
* held for the turn's end instead of steered into it.
|
|
1825
1850
|
*/
|
|
1826
1851
|
private steerComposerAdmits;
|
|
1852
|
+
/** #2682: a busy composer's typed input reaches the CLI's own turn (busyTurnTakesInput); an idle box, or no reader: yes. */
|
|
1853
|
+
private busyInputReachesTurn;
|
|
1854
|
+
/**
|
|
1855
|
+
* #2676: whether an ordinary message may be typed into this CLI's busy composer — a mode-switched one (kiro TUI) on a
|
|
1856
|
+
* launch whose busy composer AgEnD drives (the same evidence as a steer: KIRO_STEER_VERIFIED). The legacy UI, an
|
|
1857
|
+
* unlisted version and every backend without the reader answer false; claude and codex hand off by
|
|
1858
|
+
* supportsQueuedInput instead.
|
|
1859
|
+
*/
|
|
1860
|
+
private composerTakesBusyInput;
|
|
1861
|
+
/**
|
|
1862
|
+
* #2676: whether the box can show this payload as this delivery's paste before the Enter (steerPasteIsOurs): its
|
|
1863
|
+
* first line, or a collapsed paste's line count. A one-line payload kiro would collapse (over 500 characters) shows only
|
|
1864
|
+
* a character count, which kiro's own normalisation (tabs widened) makes no proof: it waits for the idle prompt.
|
|
1865
|
+
* kiro measures after widening each tab to its 2-column stop, so a tab is counted as 2 here (at most what it becomes).
|
|
1866
|
+
*/
|
|
1867
|
+
private composerCanShowPaste;
|
|
1827
1868
|
/**
|
|
1828
1869
|
* #1405: one look at a mode-switched composer for a steer's own proof: on the tmux of this write, inside `deadline`
|
|
1829
1870
|
* (monotonic) — the capture is raced against the time left and a late answer dropped — and `current` asked after the
|
|
@@ -1897,6 +1938,9 @@ export declare class Daemon extends EventEmitter {
|
|
|
1897
1938
|
* Enter-dropping TUIs. Polls at a coarse cadence (each poll is a capture-pane)
|
|
1898
1939
|
* only after the pane is already quiet, so the common fast-idle delivery still
|
|
1899
1940
|
* costs a single capture.
|
|
1941
|
+
*
|
|
1942
|
+
* #2770: with `stop`, the wait also ends ("stopped") as soon as `stop` says so — asked every WAIT_STOP_POLL_MS while
|
|
1943
|
+
* the pane is busy, and before every re-poll — so a cancel or a hand-off that became possible never waits out the pane.
|
|
1900
1944
|
*/
|
|
1901
1945
|
private waitForPaneReadyForDelivery;
|
|
1902
1946
|
/**
|
|
@@ -1998,6 +2042,11 @@ export declare class Daemon extends EventEmitter {
|
|
|
1998
2042
|
*/
|
|
1999
2043
|
private isPaneIdleForDelivery;
|
|
2000
2044
|
private waitForPaneIdleForDelivery;
|
|
2045
|
+
/**
|
|
2046
|
+
* #2770: waitForPaneIdleForDelivery that also ends as soon as `stop` says so ("stopped"). The same idle readings
|
|
2047
|
+
* (tmux silence, or the state machine where its idle is trusted), polled here so nothing outlives a stopped wait.
|
|
2048
|
+
*/
|
|
2049
|
+
private waitForPaneIdleOrStop;
|
|
2001
2050
|
/**
|
|
2002
2051
|
* Antigravity has always opted into pane-state delivery readiness because its
|
|
2003
2052
|
* footer redraws while idle. Codex's structural idle proof is useful only
|
|
@@ -2276,6 +2325,24 @@ export declare class Daemon extends EventEmitter {
|
|
|
2276
2325
|
* silently, confirming and removing nothing. Never throws into the spawn.
|
|
2277
2326
|
*/
|
|
2278
2327
|
private ensureBackendAgent;
|
|
2328
|
+
/**
|
|
2329
|
+
* M-2025: after a tui/V3 launch is ready, type `/session-id` and `/title` once
|
|
2330
|
+
* each, under the pane-write lock, with the same fences as {@link ensureBackendAgent}.
|
|
2331
|
+
* Does not touch the delivery epoch. A mismatch with the #2617 pin is surfaced;
|
|
2332
|
+
* the pin is never replaced by a file-store guess. Legacy backends return null
|
|
2333
|
+
* from sessionProof().
|
|
2334
|
+
*
|
|
2335
|
+
* #2683: these are AgEnD's own housekeeping, so unlike a delivery (which may join
|
|
2336
|
+
* a person's draft) each one goes only into a composer the final capture shows
|
|
2337
|
+
* positively EMPTY; Enter only once a capture shows exactly the command in the box;
|
|
2338
|
+
* and it counts as run only once the box is empty again — a command left in the
|
|
2339
|
+
* box stops here (it is taken back when the box shows exactly it), and nothing
|
|
2340
|
+
* else is typed after it. The id is taken only from kiro's `/session-id` alert
|
|
2341
|
+
* (readSessionIdAlert) on a capture after the command ran, and never when that
|
|
2342
|
+
* alert was already on the final capture before it was typed: an announcement
|
|
2343
|
+
* that was there before is not an answer to this request.
|
|
2344
|
+
*/
|
|
2345
|
+
private ensureKiroSessionProof;
|
|
2279
2346
|
/**
|
|
2280
2347
|
* Startup budget for this launch: the backend's override (resume-aware), never
|
|
2281
2348
|
* below a user-configured startup_timeout_ms; undefined = trySpawn's default.
|
|
@@ -2353,22 +2420,17 @@ export declare class Daemon extends EventEmitter {
|
|
|
2353
2420
|
*/
|
|
2354
2421
|
private switchMuseToDirect;
|
|
2355
2422
|
/**
|
|
2356
|
-
*
|
|
2357
|
-
*
|
|
2358
|
-
*
|
|
2359
|
-
* testable: warmupNoticeAction's own tests pass even if this call site stops
|
|
2360
|
-
* consulting it, which is exactly the bug this path had — the decision was
|
|
2361
|
-
* made inline and never asked whether the backend needed telling at all.
|
|
2362
|
-
*
|
|
2363
|
-
* Never throws: a missed reload notice must not fail a spawn.
|
|
2423
|
+
* #1633 (#1639 review): the pending notice as things stand NOW, just before the paste — it was decided at launch, and
|
|
2424
|
+
* the record, a switch or the instance's tools may have changed while the delivery waited. Planned again from the
|
|
2425
|
+
* record (#2800: the running release only, tools it has now); nothing left to tell → recorded, nothing pending.
|
|
2364
2426
|
*/
|
|
2365
|
-
private
|
|
2427
|
+
private currentWhatsNew;
|
|
2428
|
+
private recordWhatsNewSent;
|
|
2366
2429
|
/**
|
|
2367
|
-
* #
|
|
2368
|
-
*
|
|
2369
|
-
* entries recorded meanwhile are dropped from it; none left → nothing.
|
|
2430
|
+
* #2800: the tools this instance's agend MCP server lists now — the same filters (tool set, dashboard switches, the
|
|
2431
|
+
* Canvas Worker switch) — so a notice names only changes to tools it has.
|
|
2370
2432
|
*/
|
|
2371
|
-
private
|
|
2433
|
+
private whatsNewTools;
|
|
2372
2434
|
/**
|
|
2373
2435
|
* #2163: who this instance is to the what's-new notices — a ClassicBot room's agent, General, or a fleet worker (with
|
|
2374
2436
|
* `coordinator` too when its tool set is coordinator or full, the ones that carry get_/set_web_settings).
|