@letta-ai/letta-code 0.34.5 → 0.34.7

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 (152) hide show
  1. package/dist/gateway-core.js +5 -5
  2. package/dist/gateway-core.js.map +3 -3
  3. package/dist/mcp-client.js +2 -2
  4. package/dist/mcp-client.js.map +1 -1
  5. package/dist/mcp-oauth.js +2 -2
  6. package/dist/mcp-oauth.js.map +1 -1
  7. package/dist/types/agent/acting-user.d.ts +10 -0
  8. package/dist/types/agent/acting-user.d.ts.map +1 -1
  9. package/dist/types/agent/approval-execution.d.ts +5 -1
  10. package/dist/types/agent/approval-execution.d.ts.map +1 -1
  11. package/dist/types/agent/message.d.ts +3 -1
  12. package/dist/types/agent/message.d.ts.map +1 -1
  13. package/dist/types/agent/subagents/manager.d.ts +1 -1
  14. package/dist/types/agent/subagents/manager.d.ts.map +1 -1
  15. package/dist/types/agent/subagents/subagent-launcher.d.ts.map +1 -1
  16. package/dist/types/agent/subagents/subagent-stream.d.ts.map +1 -1
  17. package/dist/types/backend/api/agent-message.d.ts +1 -1
  18. package/dist/types/backend/api/agent-message.d.ts.map +1 -1
  19. package/dist/types/backend/api/conversation-enqueue.d.ts +4 -2
  20. package/dist/types/backend/api/conversation-enqueue.d.ts.map +1 -1
  21. package/dist/types/channels/gateway-core.d.ts +1 -1
  22. package/dist/types/channels/gateway-core.d.ts.map +1 -1
  23. package/dist/types/headless-listener-launch.d.ts.map +1 -1
  24. package/dist/types/permissions/checker.d.ts.map +1 -1
  25. package/dist/types/queue/queue-runtime.d.ts +11 -2
  26. package/dist/types/queue/queue-runtime.d.ts.map +1 -1
  27. package/dist/types/runtime-context.d.ts +4 -0
  28. package/dist/types/runtime-context.d.ts.map +1 -1
  29. package/dist/types/tools/external-tool-background-eligibility.d.ts +1 -0
  30. package/dist/types/tools/external-tool-background-eligibility.d.ts.map +1 -1
  31. package/dist/types/tools/external-tool-background.d.ts +1 -0
  32. package/dist/types/tools/external-tool-background.d.ts.map +1 -1
  33. package/dist/types/tools/impl/claude-stream-session.d.ts +1 -0
  34. package/dist/types/tools/impl/claude-stream-session.d.ts.map +1 -1
  35. package/dist/types/tools/impl/codex-app-server.d.ts +1 -0
  36. package/dist/types/tools/impl/codex-app-server.d.ts.map +1 -1
  37. package/dist/types/tools/impl/external-coding-agent-task.d.ts +4 -2
  38. package/dist/types/tools/impl/external-coding-agent-task.d.ts.map +1 -1
  39. package/dist/types/tools/impl/external-coding-agent.d.ts +1 -1
  40. package/dist/types/tools/impl/external-coding-agent.d.ts.map +1 -1
  41. package/dist/types/tools/impl/memory-task-lifecycle.d.ts +1 -1
  42. package/dist/types/tools/impl/memory-task-lifecycle.d.ts.map +1 -1
  43. package/dist/types/tools/impl/memory.d.ts +14 -0
  44. package/dist/types/tools/impl/memory.d.ts.map +1 -0
  45. package/dist/types/tools/impl/monitor.d.ts +1 -1
  46. package/dist/types/tools/impl/monitor.d.ts.map +1 -1
  47. package/dist/types/tools/impl/native-session-capture.d.ts +16 -3
  48. package/dist/types/tools/impl/native-session-capture.d.ts.map +1 -1
  49. package/dist/types/tools/impl/process_manager.d.ts +2 -2
  50. package/dist/types/tools/impl/process_manager.d.ts.map +1 -1
  51. package/dist/types/tools/impl/send-agent-message.d.ts.map +1 -1
  52. package/dist/types/tools/impl/shell-env.d.ts.map +1 -1
  53. package/dist/types/tools/impl/task.d.ts +2 -1
  54. package/dist/types/tools/impl/task.d.ts.map +1 -1
  55. package/dist/types/tools/impl/truncation.d.ts +1 -0
  56. package/dist/types/tools/impl/truncation.d.ts.map +1 -1
  57. package/dist/types/tools/manager.d.ts.map +1 -1
  58. package/dist/types/tools/tool-definitions.d.ts +1 -0
  59. package/dist/types/tools/tool-definitions.d.ts.map +1 -1
  60. package/dist/types/tools/toolset-catalog.d.ts +1 -1
  61. package/dist/types/tools/toolset-catalog.d.ts.map +1 -1
  62. package/dist/types/tools/toolset.d.ts +1 -0
  63. package/dist/types/tools/toolset.d.ts.map +1 -1
  64. package/dist/types/types/protocol_v2.d.ts +5 -4
  65. package/dist/types/types/protocol_v2.d.ts.map +1 -1
  66. package/dist/types/types/turn-finished-protocol.d.ts +13 -0
  67. package/dist/types/types/turn-finished-protocol.d.ts.map +1 -0
  68. package/dist/types/utils/message-queue-bridge.d.ts +2 -1
  69. package/dist/types/utils/message-queue-bridge.d.ts.map +1 -1
  70. package/dist/types/utils/task-notifications.d.ts +1 -1
  71. package/dist/types/utils/task-notifications.d.ts.map +1 -1
  72. package/dist/types/websocket/listener/connection.d.ts +6 -2
  73. package/dist/types/websocket/listener/connection.d.ts.map +1 -1
  74. package/dist/types/websocket/listener/constants.d.ts +1 -0
  75. package/dist/types/websocket/listener/constants.d.ts.map +1 -1
  76. package/dist/types/websocket/listener/conversation-runtime.d.ts +31 -0
  77. package/dist/types/websocket/listener/conversation-runtime.d.ts.map +1 -1
  78. package/dist/types/websocket/listener/durable-file-lock.d.ts +46 -0
  79. package/dist/types/websocket/listener/durable-file-lock.d.ts.map +1 -0
  80. package/dist/types/websocket/listener/failed-teleport-cleanup.d.ts +16 -0
  81. package/dist/types/websocket/listener/failed-teleport-cleanup.d.ts.map +1 -0
  82. package/dist/types/websocket/listener/inbound-queue.d.ts +3 -1
  83. package/dist/types/websocket/listener/inbound-queue.d.ts.map +1 -1
  84. package/dist/types/websocket/listener/input-disposition-capacity.d.ts +8 -0
  85. package/dist/types/websocket/listener/input-disposition-capacity.d.ts.map +1 -0
  86. package/dist/types/websocket/listener/input-disposition-expiry.d.ts +3 -0
  87. package/dist/types/websocket/listener/input-disposition-expiry.d.ts.map +1 -0
  88. package/dist/types/websocket/listener/input-disposition-path.d.ts +2 -0
  89. package/dist/types/websocket/listener/input-disposition-path.d.ts.map +1 -0
  90. package/dist/types/websocket/listener/input-disposition-retention.d.ts +9 -0
  91. package/dist/types/websocket/listener/input-disposition-retention.d.ts.map +1 -0
  92. package/dist/types/websocket/listener/input-disposition-validation.d.ts +2 -0
  93. package/dist/types/websocket/listener/input-disposition-validation.d.ts.map +1 -0
  94. package/dist/types/websocket/listener/input-disposition.d.ts +68 -0
  95. package/dist/types/websocket/listener/input-disposition.d.ts.map +1 -0
  96. package/dist/types/websocket/listener/input-terminal-journal.d.ts +60 -0
  97. package/dist/types/websocket/listener/input-terminal-journal.d.ts.map +1 -0
  98. package/dist/types/websocket/listener/interrupted-turn-input-ownership.d.ts +27 -0
  99. package/dist/types/websocket/listener/interrupted-turn-input-ownership.d.ts.map +1 -0
  100. package/dist/types/websocket/listener/interrupted-turn-record.d.ts +132 -0
  101. package/dist/types/websocket/listener/interrupted-turn-record.d.ts.map +1 -0
  102. package/dist/types/websocket/listener/interrupted-turn-schema.d.ts +5 -0
  103. package/dist/types/websocket/listener/interrupted-turn-schema.d.ts.map +1 -0
  104. package/dist/types/websocket/listener/interrupted-turn-storage.d.ts +5 -0
  105. package/dist/types/websocket/listener/interrupted-turn-storage.d.ts.map +1 -0
  106. package/dist/types/websocket/listener/interrupted-turn-types.d.ts +59 -0
  107. package/dist/types/websocket/listener/interrupted-turn-types.d.ts.map +1 -0
  108. package/dist/types/websocket/listener/legacy-authority-quarantine.d.ts +13 -0
  109. package/dist/types/websocket/listener/legacy-authority-quarantine.d.ts.map +1 -0
  110. package/dist/types/websocket/listener/lifecycle-message.d.ts +7 -0
  111. package/dist/types/websocket/listener/lifecycle-message.d.ts.map +1 -0
  112. package/dist/types/websocket/listener/outbound-delivery.d.ts +21 -0
  113. package/dist/types/websocket/listener/outbound-delivery.d.ts.map +1 -0
  114. package/dist/types/websocket/listener/outbound-wire.d.ts +11 -1
  115. package/dist/types/websocket/listener/outbound-wire.d.ts.map +1 -1
  116. package/dist/types/websocket/listener/protocol-outbound.d.ts +8 -10
  117. package/dist/types/websocket/listener/protocol-outbound.d.ts.map +1 -1
  118. package/dist/types/websocket/listener/protocol-validation.d.ts +7 -0
  119. package/dist/types/websocket/listener/protocol-validation.d.ts.map +1 -0
  120. package/dist/types/websocket/listener/queue.d.ts.map +1 -1
  121. package/dist/types/websocket/listener/recorded-tool-results.d.ts +5 -0
  122. package/dist/types/websocket/listener/recorded-tool-results.d.ts.map +1 -0
  123. package/dist/types/websocket/listener/recovery-authority-guard.d.ts +24 -0
  124. package/dist/types/websocket/listener/recovery-authority-guard.d.ts.map +1 -0
  125. package/dist/types/websocket/listener/recovery-lineage-sidecar.d.ts +57 -0
  126. package/dist/types/websocket/listener/recovery-lineage-sidecar.d.ts.map +1 -0
  127. package/dist/types/websocket/listener/remote-settings-lock.d.ts.map +1 -1
  128. package/dist/types/websocket/listener/remote-settings.d.ts.map +1 -1
  129. package/dist/types/websocket/listener/runtime.d.ts +3 -0
  130. package/dist/types/websocket/listener/runtime.d.ts.map +1 -1
  131. package/dist/types/websocket/listener/scope.d.ts.map +1 -1
  132. package/dist/types/websocket/listener/startup-frame-buffer.d.ts +26 -0
  133. package/dist/types/websocket/listener/startup-frame-buffer.d.ts.map +1 -0
  134. package/dist/types/websocket/listener/startup-ingress.d.ts +44 -0
  135. package/dist/types/websocket/listener/startup-ingress.d.ts.map +1 -0
  136. package/dist/types/websocket/listener/teleport-protocol-inbound.d.ts +5 -0
  137. package/dist/types/websocket/listener/teleport-protocol-inbound.d.ts.map +1 -0
  138. package/dist/types/websocket/listener/turn-correlation.d.ts +8 -0
  139. package/dist/types/websocket/listener/turn-correlation.d.ts.map +1 -1
  140. package/dist/types/websocket/listener/turn-finished-replay.d.ts +90 -0
  141. package/dist/types/websocket/listener/turn-finished-replay.d.ts.map +1 -0
  142. package/dist/types/websocket/listener/turn-lifecycle.d.ts +9 -1
  143. package/dist/types/websocket/listener/turn-lifecycle.d.ts.map +1 -1
  144. package/dist/types/websocket/listener/types.d.ts +252 -6
  145. package/dist/types/websocket/listener/types.d.ts.map +1 -1
  146. package/letta.js +13546 -4685
  147. package/npm-shrinkwrap.json +5763 -0
  148. package/package.json +11 -4
  149. package/scripts/check.js +1 -0
  150. package/scripts/runtime-graph.test.ts +112 -0
  151. package/scripts/runtime-graph.ts +366 -0
  152. package/scripts/source-file-size-baseline.json +2 -2
@@ -0,0 +1,59 @@
1
+ import type { ApprovalResult } from "../../agent/approval-execution";
2
+ import type { TeleportContinuation } from "../../types/protocol_v2";
3
+ import type { InputIdentity } from "./types";
4
+ export interface InterruptedTurnRecord {
5
+ revision?: string;
6
+ teleportId?: string;
7
+ teleport?: {
8
+ teleportId: string;
9
+ connectionId: string;
10
+ connectionGeneration?: string;
11
+ activeTurn: boolean;
12
+ continuation?: TeleportContinuation;
13
+ ready: boolean;
14
+ /** Revision created when this exact intent was first journaled. */
15
+ intentRevision?: string;
16
+ /** Interrupted-record revision captured by the durable terminal owner. */
17
+ committedRevision?: string;
18
+ /** Exact record revision which first published this ready handoff. */
19
+ readyRevision?: string;
20
+ };
21
+ actingUserId?: string;
22
+ recoveryClaimCompletion?: {
23
+ lineageId: string;
24
+ state: "running" | "pending";
25
+ /** Exact predecessor revision whose completed effects this marker covers. */
26
+ effectRevision?: string;
27
+ /** Input identities owned by that predecessor, retained across a successor write. */
28
+ effectInputIdentities?: InputIdentity[];
29
+ /** Complete tool namespace owned by that predecessor recovery lineage. */
30
+ effectToolCallIds?: string[];
31
+ effectRunId?: string | null;
32
+ effectRequestOtid?: string;
33
+ effectWorkingDirectory?: string;
34
+ effectActingUserId?: string | null;
35
+ effectResults?: ApprovalResult[];
36
+ effectUnstartedToolCallIds?: string[];
37
+ effectTerminalConsumerIds?: string[];
38
+ effectTeleport?: InterruptedTurnRecord["teleport"];
39
+ /** A write outside this recovery lineage has added genuine successor work. */
40
+ independentSuccessor?: boolean;
41
+ };
42
+ agentId: string;
43
+ conversationId: string;
44
+ runId: string | null;
45
+ toolCallIds: string[];
46
+ /** Approved tools which have not crossed their own execution boundary. */
47
+ unstartedToolCallIds?: string[];
48
+ results: ApprovalResult[];
49
+ /** Exact settled effects that survive an independent successor snapshot. */
50
+ settledRecoveryEffects?: Array<{
51
+ lineageId: string;
52
+ result: ApprovalResult;
53
+ }>;
54
+ requestOtid: string;
55
+ workingDirectory: string;
56
+ durableInputIdentities?: InputIdentity[];
57
+ terminalConsumerIds?: string[];
58
+ }
59
+ //# sourceMappingURL=interrupted-turn-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupted-turn-types.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/interrupted-turn-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,oBAAoB,CAAC;QACpC,KAAK,EAAE,OAAO,CAAC;QACf,mEAAmE;QACnE,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,0EAA0E;QAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,sEAAsE;QACtE,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;QAC7B,6EAA6E;QAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,qFAAqF;QACrF,qBAAqB,CAAC,EAAE,aAAa,EAAE,CAAC;QACxC,0EAA0E;QAC1E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;QACjC,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;QACtC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;QACrC,cAAc,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACnD,8EAA8E;QAC9E,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,KAAK,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,aAAa,EAAE,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC"}
@@ -0,0 +1,13 @@
1
+ import type { RecoveryLineageSidecar } from "./recovery-lineage-sidecar";
2
+ import type { AcceptedInputDispositionEntry } from "./types";
3
+ export declare function quarantineReferencesRetiredSidecar(quarantine: NonNullable<AcceptedInputDispositionEntry["legacyAuthorityQuarantine"]>, retired: RecoveryLineageSidecar, interruptedRevision: string): boolean;
4
+ export declare function findRetiredSidecarQuarantine(quarantines: readonly NonNullable<AcceptedInputDispositionEntry["legacyAuthorityQuarantine"]>[], retired: RecoveryLineageSidecar, interruptedRevision: string): {
5
+ scope: {
6
+ agentId: string | null;
7
+ conversationId: string;
8
+ };
9
+ recoveryLineageId: string;
10
+ interruptedRevision: string;
11
+ expiresAt: number;
12
+ } | undefined;
13
+ //# sourceMappingURL=legacy-authority-quarantine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-authority-quarantine.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/legacy-authority-quarantine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAE7D,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,WAAW,CACrB,6BAA6B,CAAC,2BAA2B,CAAC,CAC3D,EACD,OAAO,EAAE,sBAAsB,EAC/B,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAOT;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,SAAS,WAAW,CAC/B,6BAA6B,CAAC,2BAA2B,CAAC,CAC3D,EAAE,EACH,OAAO,EAAE,sBAAsB,EAC/B,mBAAmB,EAAE,MAAM;;;;;;;;cAS5B"}
@@ -0,0 +1,7 @@
1
+ export declare function createLifecycleMessageBase<TMessageType extends string>(messageType: TMessageType, runId?: string | null): {
2
+ id: string;
3
+ date: string;
4
+ message_type: TMessageType;
5
+ run_id?: string;
6
+ };
7
+ //# sourceMappingURL=lifecycle-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-message.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/lifecycle-message.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,YAAY,SAAS,MAAM,EACpE,WAAW,EAAE,YAAY,EACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAOA"}
@@ -0,0 +1,21 @@
1
+ import type { OutboundFrameSettlement } from "./outbound-wire";
2
+ export interface OutboundMessageDelivery {
3
+ receipts: Array<{
4
+ connectionId: string | null;
5
+ settlement: Promise<OutboundFrameSettlement>;
6
+ cancel(): void;
7
+ }>;
8
+ replayTo(connectionId: string): OutboundMessageDelivery;
9
+ }
10
+ export declare function createOutboundMessageDelivery(receipts: OutboundMessageDelivery["receipts"], replayTo: (connectionId: string) => OutboundMessageDelivery): OutboundMessageDelivery;
11
+ type DeliveryWaitResult = "sent" | "interrupted";
12
+ /** Deliver every terminal prefix to one current owner before advancing. */
13
+ export declare function awaitOrderedOutboundDeliveries(params: {
14
+ deliveries: OutboundMessageDelivery[];
15
+ getOwnerId(): string | null;
16
+ shouldInterrupt(): boolean;
17
+ receiptMatchesOwner?(receipt: OutboundMessageDelivery["receipts"][number], ownerId: string): boolean;
18
+ ownerWaitTimeoutMs?: number;
19
+ }): Promise<DeliveryWaitResult>;
20
+ export {};
21
+ //# sourceMappingURL=outbound-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-delivery.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/outbound-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,KAAK,CAAC;QACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7C,MAAM,IAAI,IAAI,CAAC;KAChB,CAAC,CAAC;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,uBAAuB,CAAC;CACzD;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAC7C,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,uBAAuB,GAC1D,uBAAuB,CAEzB;AAED,KAAK,kBAAkB,GAAG,MAAM,GAAG,aAAa,CAAC;AA8CjD,2EAA2E;AAC3E,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,UAAU,IAAI,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,IAAI,OAAO,CAAC;IAC3B,mBAAmB,CAAC,CAClB,OAAO,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EACpD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IACX,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgF9B"}
@@ -49,6 +49,13 @@ export interface OutboundFrame {
49
49
  } | null;
50
50
  /** Called if the socket write throws. */
51
51
  onSendError?(error: unknown): void;
52
+ /** Called when this frame is known not to have reached transport.send(). */
53
+ onDropped?(): void;
54
+ }
55
+ export type OutboundFrameSettlement = "sent" | "dropped";
56
+ export interface OutboundFrameReceipt {
57
+ settlement: Promise<OutboundFrameSettlement>;
58
+ cancel(): void;
52
59
  }
53
60
  /**
54
61
  * Queue and watermark limits.
@@ -64,18 +71,21 @@ export declare const OUTBOUND_QUEUE_LIMITS: {
64
71
  readonly HIGH_WATERMARK_BUFFERED_BYTES: number;
65
72
  readonly KILL_THRESHOLD_BUFFERED_BYTES: number;
66
73
  readonly DRAIN_POLL_MS: 50;
74
+ readonly MAX_BACKPRESSURE_MS: 5000;
67
75
  };
68
76
  /**
69
77
  * Enqueue a frame and drain as far as the socket allows. When the socket is
70
78
  * healthy this sends synchronously in the same tick (identical behavior to
71
79
  * the pre-queue direct send); the queue only forms under backpressure.
72
80
  */
73
- export declare function enqueueOutboundFrame(transport: ListenerTransport, frame: OutboundFrame): void;
81
+ export declare function enqueueOutboundFrame(transport: ListenerTransport, frame: OutboundFrame): OutboundFrameReceipt;
74
82
  /** Test/diagnostic visibility into a transport's queue. */
75
83
  export declare function getOutboundQueueStats(transport: ListenerTransport): {
76
84
  queuedFrames: number;
77
85
  killed: boolean;
78
86
  };
87
+ /** Settle every queued frame when its owning connection closes. */
88
+ export declare function closeOutboundTransportQueue(transport: ListenerTransport): void;
79
89
  export declare const __outboundWireTestUtils: {
80
90
  clearTransportQueue(transport: ListenerTransport): void;
81
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-wire.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/outbound-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1E,yCAAyC;IACzC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAgDX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,aAAa,GACnB,IAAI,CAqBN;AA4FD,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAMA;AAwMD,eAAO,MAAM,uBAAuB;mCACH,iBAAiB,GAAG,IAAI;CAGxD,CAAC"}
1
+ {"version":3,"file":"outbound-wire.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/outbound-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1E,yCAAyC;IACzC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,4EAA4E;IAC5E,SAAS,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAAC;AACzD,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7C,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;CAMxB,CAAC;AAkDX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,aAAa,GACnB,oBAAoB,CAgEtB;AA8GD,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,GAAG;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAMA;AAED,mEAAmE;AACnE,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CAWN;AAwMD,eAAO,MAAM,uBAAuB;mCACH,iBAAiB,GAAG,IAAI;CAGxD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { DequeuedBatch } from "../../queue/queue-runtime";
2
2
  import type { DeviceStatus, LoopState, QueueMessage, RuntimeScope, StatusMessage, StopReasonType, StreamDelta, SubagentSnapshot, WsProtocolMessage } from "../../types/protocol_v2";
3
3
  import type { QueueRemovalTransition } from "../../types/queue-update-protocol";
4
+ import { type OutboundMessageDelivery } from "./outbound-delivery";
4
5
  import { type ListenerTransport } from "./transport";
5
6
  import type { ConversationRuntime, IncomingMessage, ListenerMessageRouting, ListenerRuntime } from "./types";
6
7
  type RuntimeCarrier = ListenerRuntime | ConversationRuntime | null;
@@ -23,10 +24,14 @@ export declare function buildQueueSnapshot(runtime: RuntimeCarrier, params?: {
23
24
  conversation_id?: string | null;
24
25
  }): QueueMessage[];
25
26
  type OutboundProtocolMessage = WsProtocolMessage extends infer TMessage ? TMessage extends WsProtocolMessage ? Omit<TMessage, "runtime" | "event_seq" | "emitted_at" | "idempotency_key"> : never : never;
27
+ export { createLifecycleMessageBase } from "./lifecycle-message";
28
+ export type { OutboundMessageDelivery } from "./outbound-delivery";
26
29
  export declare function emitProtocolV2Message(socket: ListenerTransport, runtime: RuntimeCarrier, message: OutboundProtocolMessage, scope: {
27
30
  agent_id?: string | null;
28
31
  conversation_id?: string | null;
29
- } | undefined, routing: ListenerMessageRouting): void;
32
+ } | undefined, routing: ListenerMessageRouting, notifyObservers?: boolean, envelope?: {
33
+ idempotencyKey?: string;
34
+ }): OutboundMessageDelivery;
30
35
  export declare function broadcastServiceProtocolMessage(runtime: ListenerRuntime, message: WsProtocolMessage): void;
31
36
  export declare function emitDeviceStatusUpdate(socket: ListenerTransport, runtime: RuntimeCarrier, scope?: PartialRuntimeScope, routing?: ListenerMessageRouting): void;
32
37
  export declare function emitLoopStatusUpdate(socket: ListenerTransport, runtime: RuntimeCarrier, scope?: {
@@ -70,16 +75,10 @@ export declare function emitSubagentStateIfOpen(runtime: RuntimeCarrier, scope?:
70
75
  agent_id?: string | null;
71
76
  conversation_id?: string | null;
72
77
  }): void;
73
- export declare function createLifecycleMessageBase<TMessageType extends string>(messageType: TMessageType, runId?: string | null): {
74
- id: string;
75
- date: string;
76
- message_type: TMessageType;
77
- run_id?: string;
78
- };
79
78
  export declare function emitCanonicalMessageDelta(socket: ListenerTransport, runtime: RuntimeCarrier, delta: StreamDelta, scope?: {
80
79
  agent_id?: string | null;
81
80
  conversation_id?: string | null;
82
- }): void;
81
+ }, routing?: ListenerMessageRouting): OutboundMessageDelivery;
83
82
  export declare function emitRetryDelta(socket: ListenerTransport, runtime: RuntimeCarrier, params: {
84
83
  message: string;
85
84
  reason: StopReasonType;
@@ -105,6 +104,5 @@ export declare function emitInterruptedStatusDelta(socket: ListenerTransport, ru
105
104
  export declare function emitStreamDelta(socket: ListenerTransport, runtime: RuntimeCarrier, delta: StreamDelta, scope?: {
106
105
  agent_id?: string | null;
107
106
  conversation_id?: string | null;
108
- }, subagentId?: string): void;
109
- export {};
107
+ }, subagentId?: string, routing?: ListenerMessageRouting): OutboundMessageDelivery;
110
108
  //# sourceMappingURL=protocol-outbound.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-outbound.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/protocol-outbound.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol-outbound.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/protocol-outbound.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { RuntimeScope } from "../../types/runtime-scope";
2
+ export declare function isStringArray(value: unknown): value is string[];
3
+ export declare function isStringRecord(value: unknown): value is Record<string, string>;
4
+ export declare function isObjectRecord(value: unknown): value is Record<string, unknown>;
5
+ export declare function isRuntimeScope(value: unknown): value is RuntimeScope;
6
+ export declare function isAgentRuntimeScope(value: unknown): value is RuntimeScope<string>;
7
+ //# sourceMappingURL=protocol-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-validation.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/protocol-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAI/D;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOjC;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAUpE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAM/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACV,MAAM,uBAAuB,CAAC;AA6B/B,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAQA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAWA;AAgGD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE1E;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,eAAe,GACtB,OAAO,CAkCT;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAC/D,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;CAC7B,GAAG,IAAI,CAmHP;AA6KD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,oBAAoB,EAC1B,iBAAiB,EAAE,CACjB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,KACzB,OAAO,CAAC,IAAI,CAAC,GACjB,IAAI,CA+BN"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACV,MAAM,uBAAuB,CAAC;AA6B/B,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAEf,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAQA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAWA;AA0HD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE1E;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,eAAe,GACtB,OAAO,CAkCT;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAC/D,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;CAC7B,GAAG,IAAI,CAwHP;AA+ND,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,oBAAoB,EAC1B,iBAAiB,EAAE,CACjB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,KACzB,OAAO,CAAC,IAAI,CAAC,GACjB,IAAI,CA2BN"}
@@ -0,0 +1,5 @@
1
+ import type { ApprovalResult } from "../../agent/approval-execution";
2
+ import type { InterruptedTurnRecord } from "./interrupted-turn-types";
3
+ export declare function allRecordedResults(record: InterruptedTurnRecord): ApprovalResult[];
4
+ export declare function recordedToolResults(record: InterruptedTurnRecord, pendingToolCallIds: string[]): ApprovalResult[];
5
+ //# sourceMappingURL=recorded-tool-results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recorded-tool-results.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/recorded-tool-results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,qBAAqB,GAC5B,cAAc,EAAE,CAQlB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,qBAAqB,EAC7B,kBAAkB,EAAE,MAAM,EAAE,GAC3B,cAAc,EAAE,CAWlB"}
@@ -0,0 +1,24 @@
1
+ import type { InterruptedTurnRecord } from "./interrupted-turn-types";
2
+ type RecoverySnapshot = {
3
+ record: InterruptedTurnRecord;
4
+ revisionToken: string;
5
+ };
6
+ export declare function createRecoveryAuthorityGuard(dependencies: {
7
+ path: (agentId: string, conversationId: string) => string;
8
+ acquire: (destination: string) => () => void;
9
+ exists: (destination: string) => boolean;
10
+ readRecord: (destination: string) => InterruptedTurnRecord | null;
11
+ ensureSidecar: (current: InterruptedTurnRecord) => void;
12
+ snapshotSidecar: (current: InterruptedTurnRecord) => RecoverySnapshot | null;
13
+ }): {
14
+ readSnapshot(agentId: string, conversationId: string, lineageId: string): RecoverySnapshot | null;
15
+ withAuthority(params: {
16
+ agentId: string;
17
+ conversationId: string;
18
+ lineageId: string;
19
+ expectedRevision: string;
20
+ action: () => boolean;
21
+ }): boolean;
22
+ };
23
+ export {};
24
+ //# sourceMappingURL=recovery-authority-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-authority-guard.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/recovery-authority-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,YAAY,EAAE;IACzD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,qBAAqB,GAAG,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxD,eAAe,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,gBAAgB,GAAG,IAAI,CAAC;CAC9E;0BAsBc,MAAM,kBACC,MAAM,aACX,MAAM,GAChB,gBAAgB,GAAG,IAAI;0BASJ;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,OAAO,CAAC;KACvB,GAAG,OAAO;EAoBd"}
@@ -0,0 +1,57 @@
1
+ import type { ApprovalResult } from "../../agent/approval-execution";
2
+ import type { InterruptedTurnRecord } from "./interrupted-turn-types";
3
+ import type { InputIdentity } from "./types";
4
+ export interface RecoveryLineageSidecar {
5
+ revision: string;
6
+ agentId: string;
7
+ conversationId: string;
8
+ lineageId: string;
9
+ sourceMainRevision: string;
10
+ state: "running" | "pending" | "retired";
11
+ runId: string | null;
12
+ toolCallIds: string[];
13
+ unstartedToolCallIds?: string[];
14
+ /** Authoritative checkpoint snapshot; rollback may replace this wholesale. */
15
+ results: ApprovalResult[];
16
+ /** Exact post-effect settlements that must survive later rollback snapshots. */
17
+ exactResults?: ApprovalResult[];
18
+ requestOtid: string;
19
+ workingDirectory: string;
20
+ actingUserId?: string;
21
+ durableInputIdentities?: InputIdentity[];
22
+ terminalConsumerIds?: string[];
23
+ teleport?: InterruptedTurnRecord["teleport"];
24
+ pendingAuthorityRevision?: string;
25
+ retiredInterruptedRevision?: string;
26
+ retiredAuthorityRevision?: string;
27
+ retiredAt?: number;
28
+ }
29
+ export declare const __recoveryLineageSidecarTestUtils: {
30
+ sidecarWriterInstanceId: `${string}-${string}-${string}-${string}-${string}`;
31
+ };
32
+ export declare function createRecoveryLineageSidecarAccess(params: {
33
+ directory: string;
34
+ syncDirectory: (directory: string) => void;
35
+ lockWaitMs?: number;
36
+ }): {
37
+ initial: (current: InterruptedTurnRecord) => RecoveryLineageSidecar;
38
+ compactRetired: (retired: RecoveryLineageSidecar) => RecoveryLineageSidecar;
39
+ compactRetiredReference: (retired: RecoveryLineageSidecar) => RecoveryLineageSidecar;
40
+ list: () => RecoveryLineageSidecar[];
41
+ mainView: (current: InterruptedTurnRecord) => InterruptedTurnRecord;
42
+ read: (agentId: string, conversationId: string, lineageId: string) => RecoveryLineageSidecar | null;
43
+ retire: (current: InterruptedTurnRecord, existing?: RecoveryLineageSidecar | null) => RecoveryLineageSidecar;
44
+ retiredAuthority: (agentId: string, conversationId: string, lineageId: string) => {
45
+ interruptedRevision: string;
46
+ authorityRevision?: string;
47
+ } | null;
48
+ recoveryView: (current: InterruptedTurnRecord) => InterruptedTurnRecord | null;
49
+ remove: (sidecar: RecoveryLineageSidecar) => void;
50
+ removeRetired: (sidecar: RecoveryLineageSidecar, canRemove?: () => boolean) => boolean;
51
+ snapshot: (current: InterruptedTurnRecord) => {
52
+ record: InterruptedTurnRecord;
53
+ revisionToken: string;
54
+ } | null;
55
+ write: (sidecar: RecoveryLineageSidecar) => void;
56
+ };
57
+ //# sourceMappingURL=recovery-lineage-sidecar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-lineage-sidecar.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/recovery-lineage-sidecar.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,8EAA8E;IAC9E,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,gFAAgF;IAChF,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,aAAa,EAAE,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC7C,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,iCAAiC;;CAE7C,CAAC;AAEF,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;uBA0Q2B,qBAAqB,KAAG,sBAAsB;8BAvG7D,sBAAsB,KAC9B,sBAAsB;uCA6Bd,sBAAsB,KAC9B,sBAAsB;gBA6QR,sBAAsB,EAAE;wBA7Gd,qBAAqB,KAAG,qBAAqB;oBArR7D,MAAM,kBACC,MAAM,aACX,MAAM,KAChB,sBAAsB,GAAG,IAAI;sBAyCrB,qBAAqB,aACnB,sBAAsB,GAAG,IAAI,KACvC,sBAAsB;gCAuHd,MAAM,kBACC,MAAM,aACX,MAAM,KAChB;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,IAAI;4BA6DG,qBAAqB,KAC7B,qBAAqB,GAAG,IAAI;sBAoHN,sBAAsB,KAAG,IAAI;6BAQ3C,sBAAsB,cACpB,MAAM,OAAO,KACvB,OAAO;wBA3BC,qBAAqB,KAC7B;QAAE,MAAM,EAAE,qBAAqB,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;qBAtT1C,sBAAsB,KAAG,IAAI;EAwdtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"remote-settings-lock.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/remote-settings-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgZD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,GACf,wBAAwB,GAAG,IAAI,CAQjC;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAQ1C;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,wBAAwB,GAC/B,IAAI,CAmBN;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
1
+ {"version":3,"file":"remote-settings-lock.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/remote-settings-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgZD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,GACf,wBAAwB,GAAG,IAAI,CAQjC;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAQ1C;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,wBAAwB,GAC/B,IAAI,CAmBN;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"remote-settings.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/remote-settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD,iEAAiE;AACjE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;CAClE;AAgDD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAmEnD;AA6cD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAsBzE;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACvB,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAc7E;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAwClE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C"}
1
+ {"version":3,"file":"remote-settings.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/remote-settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUzD,iEAAiE;AACjE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;CAClE;AAgDD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAmEnD;AA6cD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAsBzE;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACvB,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAc7E;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAwClE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAM/C"}
@@ -1,6 +1,8 @@
1
1
  import type { PendingControlRequest } from "../../types/protocol_v2";
2
2
  import type { ConversationRuntime, ListenerRuntime, RecoveredApprovalState, StartListenerOptions } from "./types";
3
3
  export declare function getActiveRuntime(): ListenerRuntime | null;
4
+ export declare function getLatestRuntimeAuthorityEpoch(): number;
5
+ export declare function getRuntimeAuthorityEpoch(runtime: ListenerRuntime): number | null;
4
6
  export declare function setActiveRuntime(runtime: ListenerRuntime | null): void;
5
7
  export declare function safeEmitWsEvent(direction: "send" | "recv", label: "client" | "protocol" | "control" | "lifecycle", event: unknown): void;
6
8
  export declare function nextEventSeq(runtime: ListenerRuntime | null): number | null;
@@ -38,6 +40,7 @@ export declare function clearRecoveredApprovalStateForScope(runtime: ListenerRun
38
40
  agent_id?: string | null;
39
41
  conversation_id?: string | null;
40
42
  }): void;
43
+ export declare function clearRecoveredApprovalStateUnlessRetained(runtime: ConversationRuntime, retain: boolean): void;
41
44
  export declare function getPendingControlRequests(runtime: ListenerRuntime, params?: {
42
45
  agent_id?: string | null;
43
46
  conversation_id?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,SAAS,CAAC;AAWpE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED,wBAAgB,uBAAuB,CACrC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CAIR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACA,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE;IACP,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GACA,MAAM,CAWR;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GACA,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAUpC"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,SAAS,CAAC;AAWpE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED,wBAAgB,uBAAuB,CACrC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CAIR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACA,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE;IACP,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GACA,MAAM,CAWR;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GACA,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAuBpC"}
@@ -0,0 +1,26 @@
1
+ import type WebSocket from "ws";
2
+ export declare const MAX_PENDING_STARTUP_FRAMES = 256;
3
+ export declare const MAX_PENDING_STARTUP_FRAME_BYTES: number;
4
+ export declare function rawDataByteLength(data: WebSocket.RawData): number;
5
+ /** A bounded pre-initialization ingress queue. Overflow discards every payload. */
6
+ export declare class StartupFrameBuffer {
7
+ #private;
8
+ private readonly onOverflow;
9
+ constructor(onOverflow?: (capacity: "frame_count" | "byte_count") => void);
10
+ static forSockets(controlSocket: Pick<WebSocket, "terminate">, getStreamSocket: () => Pick<WebSocket, "terminate"> | null, report: (errorType: string, error: unknown, context: string) => void, onOverflow?: (capacity: "frame_count" | "byte_count") => void): StartupFrameBuffer;
11
+ push(data: WebSocket.RawData): boolean;
12
+ drain(): WebSocket.RawData[];
13
+ prepend(frames: WebSocket.RawData[]): boolean;
14
+ takeRequestlessInputFrames(): WebSocket.RawData[];
15
+ clear(): void;
16
+ get frameCount(): number;
17
+ get byteLength(): number;
18
+ get phase(): "buffering" | "draining" | "live" | "terminated";
19
+ abort(): void;
20
+ /** Fail closed when startup ingress exceeds capacity. */
21
+ failOverflow(capacity?: "frame_count" | "byte_count"): void;
22
+ accept(data: WebSocket.RawData, handleMessage: (frame: WebSocket.RawData) => Promise<void>): void;
23
+ drainToLive(handleMessage: (frame: WebSocket.RawData) => Promise<void>, isCurrentAndOpen: () => boolean): Promise<boolean>;
24
+ static terminateIngress(controlSocket: Pick<WebSocket, "terminate">, streamSocket: Pick<WebSocket, "terminate"> | null, report: (errorType: string, error: unknown, context: string) => void): void;
25
+ }
26
+ //# sourceMappingURL=startup-frame-buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-frame-buffer.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/startup-frame-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAEhC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,+BAA+B,QAAc,CAAC;AAE3D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,GAAG,MAAM,CAKjE;AAED,mFAAmF;AACnF,qBAAa,kBAAkB;;IAM3B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,GAAE,CAC3B,QAAQ,EAAE,aAAa,GAAG,YAAY,KACnC,IAAe;IAGtB,MAAM,CAAC,UAAU,CACf,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAC3C,eAAe,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,EAC1D,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,EACpE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,KAAK,IAAI,GAC5D,kBAAkB;IAWrB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,GAAG,OAAO;IAkBtC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE;IAQ5B,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO;IAuB7C,0BAA0B,IAAI,SAAS,CAAC,OAAO,EAAE;IAgCjD,KAAK,IAAI,IAAI;IAKb,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,KAAK,IAAI,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,CAE5D;IAED,KAAK,IAAI,IAAI;IAMb,yDAAyD;IACzD,YAAY,CAAC,QAAQ,GAAE,aAAa,GAAG,YAA4B,GAAG,IAAI;IAS1E,MAAM,CACJ,IAAI,EAAE,SAAS,CAAC,OAAO,EACvB,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GACzD,IAAI;IASD,WAAW,CACf,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAC1D,gBAAgB,EAAE,MAAM,OAAO,GAC9B,OAAO,CAAC,OAAO,CAAC;IAwBnB,MAAM,CAAC,gBAAgB,CACrB,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAC3C,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,EACjD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACnE,IAAI;CAYR"}
@@ -0,0 +1,44 @@
1
+ import type WebSocket from "ws";
2
+ import { type StartupFrameBuffer } from "./startup-frame-buffer";
3
+ import type { ListenerRuntime, StartListenerOptions, StartupFrameCapacity, StartupFrameHandoff, StartupIngressOwner } from "./types";
4
+ export declare function createReportedIngressHandler(handleMessage: (data: WebSocket.RawData) => Promise<void>, report: (errorType: string, error: unknown, context: string) => void, onError: (error: Error) => void): (data: WebSocket.RawData) => Promise<void>;
5
+ export declare function waitForStartupOrAbort(startup: Promise<void> | undefined, signal: AbortSignal): Promise<void>;
6
+ /**
7
+ * The replacement lineage this client's reconnect chain belongs to.
8
+ *
9
+ * A live connection is authoritative. Otherwise the lineage comes from the
10
+ * replacement this runtime was itself started from, which is what keeps a
11
+ * multi-hop re-registration chain (`conn-1 -> conn-2 -> conn-3`) on the
12
+ * original lineage even after the physical connection has been suspended and
13
+ * its `ListenerConnectionState` is gone.
14
+ */
15
+ export declare function resolveStartupLineageId(runtime: ListenerRuntime, opts: Pick<StartListenerOptions, "connectionId" | "replacement">): string;
16
+ /**
17
+ * Claim the current generation of a lineage before the transport exists.
18
+ *
19
+ * The cloud client buffers ingress from the moment the control socket opens,
20
+ * which is before the stream channel is prepared and therefore before any
21
+ * connection can be opened. Reserving the owner first gives those frames an
22
+ * exact lineage to be handed to if the attempt dies in that window.
23
+ */
24
+ export declare function reserveStartupIngressOwner(runtime: ListenerRuntime, opts: Pick<StartListenerOptions, "connectionId" | "replacement" | "connectionIdCanResume">): StartupIngressOwner;
25
+ /**
26
+ * Park this owner's still-unprocessed requestless frames for its successor.
27
+ *
28
+ * The buffer surrenders those frames, so repeated aborts of the same owner
29
+ * park each frame exactly once. The lineage update is a single discriminated
30
+ * state write: cumulative overflow replaces payload with bounded poison rather
31
+ * than an empty handoff that a successor could accidentally accept.
32
+ */
33
+ export declare function handoffRequestlessStartupFrames(runtime: ListenerRuntime, owner: StartupIngressOwner, buffer: StartupFrameBuffer): boolean;
34
+ export declare function poisonCurrentStartupIngressOwner(runtime: ListenerRuntime, owner: StartupIngressOwner, capacity: StartupFrameCapacity): boolean;
35
+ export type StartupFrameHandoffClaim = {
36
+ readonly handoff: StartupFrameHandoff;
37
+ /** Commit only after the successor buffer has accepted the inherited state. */
38
+ commit(): void;
39
+ /** Poison the lineage before an overflowing successor buffer clears itself. */
40
+ poison(capacity: StartupFrameCapacity): void;
41
+ };
42
+ export declare function claimRequestlessStartupFrameHandoff(runtime: ListenerRuntime, owner: StartupIngressOwner): StartupFrameHandoffClaim;
43
+ export declare function activateStartupIngress(buffer: StartupFrameBuffer, handleMessage: (data: WebSocket.RawData) => Promise<void>, isCurrentAndOpen: () => boolean, claimHandoff?: () => StartupFrameHandoffClaim): () => Promise<boolean>;
44
+ //# sourceMappingURL=startup-ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-ingress.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/startup-ingress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAChC,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EACzD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,EACpE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAa5C;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,EAClC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,aAAa,CAAC,GAC/D,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,IAAI,CACR,oBAAoB,EACpB,cAAc,GAAG,aAAa,GAAG,uBAAuB,CACzD,GACA,mBAAmB,CAYrB;AAeD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAiCT;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAYT;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,+EAA+E;IAC/E,MAAM,IAAI,IAAI,CAAC;IACf,+EAA+E;IAC/E,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC9C,CAAC;AAEF,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,mBAAmB,GACzB,wBAAwB,CA4C1B;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EACzD,gBAAgB,EAAE,MAAM,OAAO,EAC/B,YAAY,CAAC,EAAE,MAAM,wBAAwB,GAC5C,MAAM,OAAO,CAAC,OAAO,CAAC,CAwBxB"}
@@ -0,0 +1,5 @@
1
+ import type { InputTeleportContinuePayload, TeleportProtocolCommand } from "../../types/teleport-protocol";
2
+ export declare function isTeleportContinuation(value: unknown): boolean;
3
+ export declare function isTeleportContinuePayload(value: unknown): value is InputTeleportContinuePayload;
4
+ export declare function parseTeleportCommand(value: unknown): TeleportProtocolCommand | null;
5
+ //# sourceMappingURL=teleport-protocol-inbound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teleport-protocol-inbound.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/teleport-protocol-inbound.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AA2DnC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA8B9D;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,4BAA4B,CAavC;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,IAAI,CAwBhC"}
@@ -1,4 +1,12 @@
1
1
  import type { ConversationRuntime, IncomingMessage, ListenerRuntime } from "./types";
2
+ export type TurnCorrelationIndex = Map<string, Map<string, string[]>>;
3
+ /**
4
+ * Merge bounded correlation snapshots from oldest to newest. Re-inserting every
5
+ * touched key makes later snapshots authoritative for eviction order while
6
+ * retaining mappings that only exist in an older private handoff snapshot.
7
+ */
8
+ export declare function mergeTurnCorrelationIndexes(...sources: Array<TurnCorrelationIndex | undefined>): TurnCorrelationIndex;
9
+ export declare function cloneTurnCorrelationIndex(source: TurnCorrelationIndex | undefined): TurnCorrelationIndex;
2
10
  export interface TurnCorrelation {
3
11
  readonly clientMessageIds: string[];
4
12
  appendDequeuedBatch: (batchId: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"turn-correlation.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/turn-correlation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAC;AAejB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IACpC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B;IAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAO7D;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,GACd,eAAe,CA0DjB"}
1
+ {"version":3,"file":"turn-correlation.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/turn-correlation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAC;AAMjB,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,OAAO,EAAE,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC,GAClD,oBAAoB,CA2BtB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GACvC,oBAAoB,CAEtB;AAYD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IACpC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B;IAAE,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAO7D;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,GACd,eAAe,CAgEjB"}