@songsid/agend 2.1.7-beta.3 → 2.1.7-beta.5

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 (92) hide show
  1. package/README.md +2 -0
  2. package/README.zh-TW.md +2 -0
  3. package/dist/agent-cli-instructions.md +5 -0
  4. package/dist/agent-cli.js +13 -0
  5. package/dist/agent-cli.js.map +1 -1
  6. package/dist/agent-endpoint.d.ts +2 -0
  7. package/dist/agent-endpoint.js +48 -5
  8. package/dist/agent-endpoint.js.map +1 -1
  9. package/dist/backend/codex-session-lookup.d.ts +59 -0
  10. package/dist/backend/codex-session-lookup.js +139 -0
  11. package/dist/backend/codex-session-lookup.js.map +1 -0
  12. package/dist/backend/codex.d.ts +29 -0
  13. package/dist/backend/codex.js +183 -10
  14. package/dist/backend/codex.js.map +1 -1
  15. package/dist/backend/types.d.ts +21 -0
  16. package/dist/backend/types.js.map +1 -1
  17. package/dist/channel/mcp-operation-response.d.ts +3 -0
  18. package/dist/channel/mcp-operation-response.js +21 -0
  19. package/dist/channel/mcp-operation-response.js.map +1 -0
  20. package/dist/channel/mcp-operation-response.test.d.ts +1 -0
  21. package/dist/channel/mcp-operation-response.test.js +23 -0
  22. package/dist/channel/mcp-operation-response.test.js.map +1 -0
  23. package/dist/channel/mcp-server.js +20 -5
  24. package/dist/channel/mcp-server.js.map +1 -1
  25. package/dist/channel/mcp-tools.js +2 -0
  26. package/dist/channel/mcp-tools.js.map +1 -1
  27. package/dist/cli.js +68 -2
  28. package/dist/cli.js.map +1 -1
  29. package/dist/daemon.d.ts +34 -0
  30. package/dist/daemon.js +415 -41
  31. package/dist/daemon.js.map +1 -1
  32. package/dist/delivery-outbox.d.ts +174 -0
  33. package/dist/delivery-outbox.js +824 -0
  34. package/dist/delivery-outbox.js.map +1 -0
  35. package/dist/delivery-outbox.test.d.ts +1 -0
  36. package/dist/delivery-outbox.test.js +597 -0
  37. package/dist/delivery-outbox.test.js.map +1 -0
  38. package/dist/delivery-queue-evidence.d.ts +15 -0
  39. package/dist/delivery-queue-evidence.js +35 -0
  40. package/dist/delivery-queue-evidence.js.map +1 -0
  41. package/dist/delivery-queue-evidence.test.d.ts +1 -0
  42. package/dist/delivery-queue-evidence.test.js +23 -0
  43. package/dist/delivery-queue-evidence.test.js.map +1 -0
  44. package/dist/delivery-reconciliation.d.ts +49 -0
  45. package/dist/delivery-reconciliation.js +296 -0
  46. package/dist/delivery-reconciliation.js.map +1 -0
  47. package/dist/delivery-reconciliation.test.d.ts +1 -0
  48. package/dist/delivery-reconciliation.test.js +411 -0
  49. package/dist/delivery-reconciliation.test.js.map +1 -0
  50. package/dist/fleet-manager.d.ts +39 -1
  51. package/dist/fleet-manager.js +345 -50
  52. package/dist/fleet-manager.js.map +1 -1
  53. package/dist/instance-lifecycle.d.ts +18 -0
  54. package/dist/instance-lifecycle.js +116 -3
  55. package/dist/instance-lifecycle.js.map +1 -1
  56. package/dist/instructions.js +3 -0
  57. package/dist/instructions.js.map +1 -1
  58. package/dist/locale.js +6 -0
  59. package/dist/locale.js.map +1 -1
  60. package/dist/outbound-handlers.d.ts +25 -1
  61. package/dist/outbound-handlers.js +119 -8
  62. package/dist/outbound-handlers.js.map +1 -1
  63. package/dist/outbound-schemas.d.ts +7 -0
  64. package/dist/outbound-schemas.js +14 -0
  65. package/dist/outbound-schemas.js.map +1 -1
  66. package/dist/pane-write-lock.d.ts +2 -0
  67. package/dist/pane-write-lock.js +19 -0
  68. package/dist/pane-write-lock.js.map +1 -1
  69. package/dist/remote-credential-check.d.ts +39 -0
  70. package/dist/remote-credential-check.js +81 -0
  71. package/dist/remote-credential-check.js.map +1 -0
  72. package/dist/scheduler/scheduler.d.ts +5 -1
  73. package/dist/scheduler/scheduler.js +60 -20
  74. package/dist/scheduler/scheduler.js.map +1 -1
  75. package/dist/scheduler/scheduler.test.js +41 -2
  76. package/dist/scheduler/scheduler.test.js.map +1 -1
  77. package/dist/scheduler/types.d.ts +1 -1
  78. package/dist/tmux-manager.d.ts +3 -3
  79. package/dist/tmux-manager.js +6 -6
  80. package/dist/tmux-manager.js.map +1 -1
  81. package/dist/tool-permissions.js +6 -6
  82. package/dist/tool-permissions.js.map +1 -1
  83. package/dist/transcript-monitor.d.ts +3 -1
  84. package/dist/transcript-monitor.js +15 -0
  85. package/dist/transcript-monitor.js.map +1 -1
  86. package/dist/transcript-sources.d.ts +9 -0
  87. package/dist/transcript-sources.js +14 -0
  88. package/dist/transcript-sources.js.map +1 -1
  89. package/dist/usage/providers.d.ts +11 -6
  90. package/dist/usage/providers.js +17 -10
  91. package/dist/usage/providers.js.map +1 -1
  92. package/package.json +1 -1
package/dist/daemon.d.ts CHANGED
@@ -9,6 +9,7 @@ import type { FleetInstructionsParams } from "./instructions.js";
9
9
  import type { SpawnGate } from "./spawn-gate.js";
10
10
  import type { StormWindow } from "./storm-window.js";
11
11
  import type { BackendOutageView } from "./backend-outage.js";
12
+ import type { DaemonDeliveryPort } from "./delivery-outbox.js";
12
13
  /** Point a resumed CLI at its one backend-native instruction source. */
13
14
  export declare function buildInstructionReloadNotice(binaryName: string, instanceName: string, instanceDir: string): string;
14
15
  /**
@@ -45,6 +46,8 @@ export declare const DEFAULT_STATE_SAFETY_SWEEP_MS = 60000;
45
46
  export declare const PERIODIC_REDRAW_PROBE_MS = 25;
46
47
  /** Do not turn a streaming Codex turn into one capture-pane per burst. */
47
48
  export declare const STRUCTURED_IDLE_PROBE_MS = 500;
49
+ /** How long an unrecognised-but-empty composer must stay unchanged before it counts as idle (#978). */
50
+ export declare const UNKNOWN_LAYOUT_STABLE_MS = 10000;
48
51
  /** A foreground server/port-forward should hand control back or be acknowledged. */
49
52
  export declare const DEFAULT_BLOCKING_PROCESS_GRACE_MS: number;
50
53
  /**
@@ -182,11 +185,15 @@ export declare class PaneStateMachine {
182
185
  * the caller has them.
183
186
  * @param opts.forceBusy the backend has positively identified a still-running
184
187
  * foreground tool even though its TUI keeps an old ready footer visible.
188
+ * @param opts.forceReady the backend has positively proved an idle composer
189
+ * the ready pattern cannot read (an unknown footer layout); the busy
190
+ * pattern still vetoes it.
185
191
  */
186
192
  observe(pane: string, now?: number, opts?: {
187
193
  settled?: boolean;
188
194
  changeAt?: number;
189
195
  forceBusy?: boolean;
196
+ forceReady?: boolean;
190
197
  }): InstanceStateSnapshot;
191
198
  /** Record pane motion from tmux control mode without capturing pane content. */
192
199
  recordOutput(now?: number): InstanceStateSnapshot;
@@ -376,6 +383,9 @@ export declare class Daemon extends EventEmitter {
376
383
  private stormWindow?;
377
384
  /** Fleet-level "is this CLI's backend down?" memory — see backend-outage.ts. */
378
385
  private backendOutage?;
386
+ /** Identity of this live Daemon object; changes on object stop/restart. */
387
+ readonly bootId: `${string}-${string}-${string}-${string}-${string}`;
388
+ private deliveryOutbox?;
379
389
  private logger;
380
390
  private tmuxSessionName;
381
391
  private tmux;
@@ -458,6 +468,10 @@ export declare class Daemon extends EventEmitter {
458
468
  /** Consecutive structural idle captures for a noisy, periodically-redrawing
459
469
  * pane. Two are required before a working -> idle transition. */
460
470
  private instanceStatePeriodicIdleConfirmations;
471
+ /** #978: last unrecognised-but-empty-composer capture and since when it has been unchanged. */
472
+ private unknownLayoutPaneKey;
473
+ private unknownLayoutStableSince;
474
+ private unknownLayoutWarned;
461
475
  private instanceStateStuckTimer;
462
476
  private instanceStateOutputListener;
463
477
  private instanceStateOutputEventName;
@@ -538,6 +552,7 @@ export declare class Daemon extends EventEmitter {
538
552
  /** Mutual exclusion for *every* write into the pane, whichever subsystem it
539
553
  * comes from. See PaneWriteLock for why interleaving is destructive. */
540
554
  private readonly paneWriteLock;
555
+ private deliveryWritesStopping;
541
556
  private pendingInstructionsUpdate;
542
557
  private pendingInstructionsNotice;
543
558
  private warmupNeeded;
@@ -665,6 +680,23 @@ export declare class Daemon extends EventEmitter {
665
680
  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,
666
681
  /** Fleet-level "is this CLI's backend down?" memory — see backend-outage.ts. */
667
682
  backendOutage?: BackendOutageView | undefined);
683
+ /** FleetManager and this daemon share a process, so durable begin/ACK is a direct synchronous store call. */
684
+ setDeliveryOutboxPort(port: DaemonDeliveryPort | undefined): void;
685
+ /** The fleet's other same-backend instances' working directories, read at spawn (#984). */
686
+ private peerWorkingDirectories;
687
+ setPeerWorkingDirectories(peers: (() => string[]) | undefined): void;
688
+ /** Fence pane writers before lifecycle captures pre-kill reconciliation evidence. */
689
+ fenceDeliveryWritesForStop(): void;
690
+ /** Bounded drain: timeout remains safe because Enter has a write-ahead fence. */
691
+ waitForDeliveryWritesToDrain(timeoutMs: number): Promise<boolean>;
692
+ private durableDeliveryAttempt;
693
+ private beginDurableDelivery;
694
+ private durableAttemptEvidence;
695
+ private abortDurableDelivery;
696
+ private retryDurableDeliveryBeforeBegin;
697
+ private finishDurableDelivery;
698
+ private finishDurableSubmission;
699
+ private deferDurableDelivery;
668
700
  start(): Promise<void>;
669
701
  /**
670
702
  * Detect a CRASHED MCP server and report it once.
@@ -827,6 +859,8 @@ export declare class Daemon extends EventEmitter {
827
859
  private captureDeliveryEpoch;
828
860
  private isDeliveryEpochCurrent;
829
861
  private queueRawPaste;
862
+ /** Keep the IPC raw route's durable mode attached to the parsed attempt. */
863
+ private handleRawPasteIpcMessage;
830
864
  /**
831
865
  * Confirm a backend's terminal-level /clear prompt after the channel-level
832
866
  * admin confirmation has already succeeded. Poll instead of pasting `/clear\ny`