@assemblyline-agents/runtime 0.1.0

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 (331) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/agent-harness.d.ts +108 -0
  4. package/dist/agent-harness.d.ts.map +1 -0
  5. package/dist/agent-harness.js +2 -0
  6. package/dist/agent-harness.js.map +1 -0
  7. package/dist/attachments-legacy.d.ts +17 -0
  8. package/dist/attachments-legacy.d.ts.map +1 -0
  9. package/dist/attachments-legacy.js +273 -0
  10. package/dist/attachments-legacy.js.map +1 -0
  11. package/dist/attachments.d.ts +49 -0
  12. package/dist/attachments.d.ts.map +1 -0
  13. package/dist/attachments.js +832 -0
  14. package/dist/attachments.js.map +1 -0
  15. package/dist/builtin-tool-executors.d.ts +96 -0
  16. package/dist/builtin-tool-executors.d.ts.map +1 -0
  17. package/dist/builtin-tool-executors.js +501 -0
  18. package/dist/builtin-tool-executors.js.map +1 -0
  19. package/dist/builtin-tools.d.ts +30 -0
  20. package/dist/builtin-tools.d.ts.map +1 -0
  21. package/dist/builtin-tools.js +690 -0
  22. package/dist/builtin-tools.js.map +1 -0
  23. package/dist/capability-catalog.d.ts +27 -0
  24. package/dist/capability-catalog.d.ts.map +1 -0
  25. package/dist/capability-catalog.js +193 -0
  26. package/dist/capability-catalog.js.map +1 -0
  27. package/dist/channel-http-util.d.ts +34 -0
  28. package/dist/channel-http-util.d.ts.map +1 -0
  29. package/dist/channel-http-util.js +93 -0
  30. package/dist/channel-http-util.js.map +1 -0
  31. package/dist/channel-ingress.d.ts +56 -0
  32. package/dist/channel-ingress.d.ts.map +1 -0
  33. package/dist/channel-ingress.js +273 -0
  34. package/dist/channel-ingress.js.map +1 -0
  35. package/dist/channel.d.ts +146 -0
  36. package/dist/channel.d.ts.map +1 -0
  37. package/dist/channel.js +2 -0
  38. package/dist/channel.js.map +1 -0
  39. package/dist/checkpoints.d.ts +34 -0
  40. package/dist/checkpoints.d.ts.map +1 -0
  41. package/dist/checkpoints.js +86 -0
  42. package/dist/checkpoints.js.map +1 -0
  43. package/dist/code-mode.d.ts +20 -0
  44. package/dist/code-mode.d.ts.map +1 -0
  45. package/dist/code-mode.js +658 -0
  46. package/dist/code-mode.js.map +1 -0
  47. package/dist/computer-relay-protocol.d.ts +36 -0
  48. package/dist/computer-relay-protocol.d.ts.map +1 -0
  49. package/dist/computer-relay-protocol.js +127 -0
  50. package/dist/computer-relay-protocol.js.map +1 -0
  51. package/dist/concurrency.d.ts +68 -0
  52. package/dist/concurrency.d.ts.map +1 -0
  53. package/dist/concurrency.js +193 -0
  54. package/dist/concurrency.js.map +1 -0
  55. package/dist/connection-auth-util.d.ts +56 -0
  56. package/dist/connection-auth-util.d.ts.map +1 -0
  57. package/dist/connection-auth-util.js +154 -0
  58. package/dist/connection-auth-util.js.map +1 -0
  59. package/dist/connection-clients.d.ts +50 -0
  60. package/dist/connection-clients.d.ts.map +1 -0
  61. package/dist/connection-clients.js +402 -0
  62. package/dist/connection-clients.js.map +1 -0
  63. package/dist/connection-stores.d.ts +108 -0
  64. package/dist/connection-stores.d.ts.map +1 -0
  65. package/dist/connection-stores.js +127 -0
  66. package/dist/connection-stores.js.map +1 -0
  67. package/dist/connection-util.d.ts +27 -0
  68. package/dist/connection-util.d.ts.map +1 -0
  69. package/dist/connection-util.js +118 -0
  70. package/dist/connection-util.js.map +1 -0
  71. package/dist/connections.d.ts +152 -0
  72. package/dist/connections.d.ts.map +1 -0
  73. package/dist/connections.js +838 -0
  74. package/dist/connections.js.map +1 -0
  75. package/dist/content-capture.d.ts +32 -0
  76. package/dist/content-capture.d.ts.map +1 -0
  77. package/dist/content-capture.js +77 -0
  78. package/dist/content-capture.js.map +1 -0
  79. package/dist/context-policy-util.d.ts +45 -0
  80. package/dist/context-policy-util.d.ts.map +1 -0
  81. package/dist/context-policy-util.js +120 -0
  82. package/dist/context-policy-util.js.map +1 -0
  83. package/dist/conversation-context.d.ts +55 -0
  84. package/dist/conversation-context.d.ts.map +1 -0
  85. package/dist/conversation-context.js +179 -0
  86. package/dist/conversation-context.js.map +1 -0
  87. package/dist/conversation-transcript.d.ts +49 -0
  88. package/dist/conversation-transcript.d.ts.map +1 -0
  89. package/dist/conversation-transcript.js +77 -0
  90. package/dist/conversation-transcript.js.map +1 -0
  91. package/dist/conversation-turn-dispatch.d.ts +46 -0
  92. package/dist/conversation-turn-dispatch.d.ts.map +1 -0
  93. package/dist/conversation-turn-dispatch.js +201 -0
  94. package/dist/conversation-turn-dispatch.js.map +1 -0
  95. package/dist/delivery-queue.d.ts +89 -0
  96. package/dist/delivery-queue.d.ts.map +1 -0
  97. package/dist/delivery-queue.js +244 -0
  98. package/dist/delivery-queue.js.map +1 -0
  99. package/dist/delivery-send.d.ts +44 -0
  100. package/dist/delivery-send.d.ts.map +1 -0
  101. package/dist/delivery-send.js +494 -0
  102. package/dist/delivery-send.js.map +1 -0
  103. package/dist/env-config.d.ts +6 -0
  104. package/dist/env-config.d.ts.map +1 -0
  105. package/dist/env-config.js +27 -0
  106. package/dist/env-config.js.map +1 -0
  107. package/dist/eval-run-options.d.ts +37 -0
  108. package/dist/eval-run-options.d.ts.map +1 -0
  109. package/dist/eval-run-options.js +106 -0
  110. package/dist/eval-run-options.js.map +1 -0
  111. package/dist/harness-continuation.d.ts +54 -0
  112. package/dist/harness-continuation.d.ts.map +1 -0
  113. package/dist/harness-continuation.js +58 -0
  114. package/dist/harness-continuation.js.map +1 -0
  115. package/dist/harness-loop.d.ts +110 -0
  116. package/dist/harness-loop.d.ts.map +1 -0
  117. package/dist/harness-loop.js +575 -0
  118. package/dist/harness-loop.js.map +1 -0
  119. package/dist/hook-dispatch.d.ts +19 -0
  120. package/dist/hook-dispatch.d.ts.map +1 -0
  121. package/dist/hook-dispatch.js +37 -0
  122. package/dist/hook-dispatch.js.map +1 -0
  123. package/dist/http.d.ts +26 -0
  124. package/dist/http.d.ts.map +1 -0
  125. package/dist/http.js +114 -0
  126. package/dist/http.js.map +1 -0
  127. package/dist/in-memory-conversation-turn-store.d.ts +29 -0
  128. package/dist/in-memory-conversation-turn-store.d.ts.map +1 -0
  129. package/dist/in-memory-conversation-turn-store.js +166 -0
  130. package/dist/in-memory-conversation-turn-store.js.map +1 -0
  131. package/dist/in-memory-run-store.d.ts +39 -0
  132. package/dist/in-memory-run-store.d.ts.map +1 -0
  133. package/dist/in-memory-run-store.js +332 -0
  134. package/dist/in-memory-run-store.js.map +1 -0
  135. package/dist/in-memory-sandbox-session-store.d.ts +33 -0
  136. package/dist/in-memory-sandbox-session-store.d.ts.map +1 -0
  137. package/dist/in-memory-sandbox-session-store.js +186 -0
  138. package/dist/in-memory-sandbox-session-store.js.map +1 -0
  139. package/dist/in-memory-small-stores.d.ts +117 -0
  140. package/dist/in-memory-small-stores.d.ts.map +1 -0
  141. package/dist/in-memory-small-stores.js +340 -0
  142. package/dist/in-memory-small-stores.js.map +1 -0
  143. package/dist/in-memory-usage-store.d.ts +15 -0
  144. package/dist/in-memory-usage-store.d.ts.map +1 -0
  145. package/dist/in-memory-usage-store.js +49 -0
  146. package/dist/in-memory-usage-store.js.map +1 -0
  147. package/dist/index.d.ts +467 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +2046 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/json-util.d.ts +19 -0
  152. package/dist/json-util.d.ts.map +1 -0
  153. package/dist/json-util.js +59 -0
  154. package/dist/json-util.js.map +1 -0
  155. package/dist/local-sandbox.d.ts +16 -0
  156. package/dist/local-sandbox.d.ts.map +1 -0
  157. package/dist/local-sandbox.js +327 -0
  158. package/dist/local-sandbox.js.map +1 -0
  159. package/dist/logging.d.ts +16 -0
  160. package/dist/logging.d.ts.map +1 -0
  161. package/dist/logging.js +41 -0
  162. package/dist/logging.js.map +1 -0
  163. package/dist/mcp-client.d.ts +27 -0
  164. package/dist/mcp-client.d.ts.map +1 -0
  165. package/dist/mcp-client.js +169 -0
  166. package/dist/mcp-client.js.map +1 -0
  167. package/dist/model-harnesses.d.ts +4 -0
  168. package/dist/model-harnesses.d.ts.map +1 -0
  169. package/dist/model-harnesses.js +6 -0
  170. package/dist/model-harnesses.js.map +1 -0
  171. package/dist/model-media.d.ts +36 -0
  172. package/dist/model-media.d.ts.map +1 -0
  173. package/dist/model-media.js +234 -0
  174. package/dist/model-media.js.map +1 -0
  175. package/dist/operator-controls.d.ts +31 -0
  176. package/dist/operator-controls.d.ts.map +1 -0
  177. package/dist/operator-controls.js +71 -0
  178. package/dist/operator-controls.js.map +1 -0
  179. package/dist/pi-agent-harness.d.ts +40 -0
  180. package/dist/pi-agent-harness.d.ts.map +1 -0
  181. package/dist/pi-agent-harness.js +222 -0
  182. package/dist/pi-agent-harness.js.map +1 -0
  183. package/dist/pi-harness.d.ts +42 -0
  184. package/dist/pi-harness.d.ts.map +1 -0
  185. package/dist/pi-harness.js +142 -0
  186. package/dist/pi-harness.js.map +1 -0
  187. package/dist/relay-mcp-client.d.ts +17 -0
  188. package/dist/relay-mcp-client.d.ts.map +1 -0
  189. package/dist/relay-mcp-client.js +119 -0
  190. package/dist/relay-mcp-client.js.map +1 -0
  191. package/dist/replay-resume.d.ts +107 -0
  192. package/dist/replay-resume.d.ts.map +1 -0
  193. package/dist/replay-resume.js +495 -0
  194. package/dist/replay-resume.js.map +1 -0
  195. package/dist/resource-projection-util.d.ts +58 -0
  196. package/dist/resource-projection-util.d.ts.map +1 -0
  197. package/dist/resource-projection-util.js +298 -0
  198. package/dist/resource-projection-util.js.map +1 -0
  199. package/dist/resource-projection.d.ts +45 -0
  200. package/dist/resource-projection.d.ts.map +1 -0
  201. package/dist/resource-projection.js +481 -0
  202. package/dist/resource-projection.js.map +1 -0
  203. package/dist/run-heartbeat.d.ts +34 -0
  204. package/dist/run-heartbeat.d.ts.map +1 -0
  205. package/dist/run-heartbeat.js +62 -0
  206. package/dist/run-heartbeat.js.map +1 -0
  207. package/dist/run-outcome.d.ts +47 -0
  208. package/dist/run-outcome.d.ts.map +1 -0
  209. package/dist/run-outcome.js +92 -0
  210. package/dist/run-outcome.js.map +1 -0
  211. package/dist/run-recovery.d.ts +117 -0
  212. package/dist/run-recovery.d.ts.map +1 -0
  213. package/dist/run-recovery.js +466 -0
  214. package/dist/run-recovery.js.map +1 -0
  215. package/dist/run-resolver.d.ts +35 -0
  216. package/dist/run-resolver.d.ts.map +1 -0
  217. package/dist/run-resolver.js +84 -0
  218. package/dist/run-resolver.js.map +1 -0
  219. package/dist/run-stream.d.ts +37 -0
  220. package/dist/run-stream.d.ts.map +1 -0
  221. package/dist/run-stream.js +78 -0
  222. package/dist/run-stream.js.map +1 -0
  223. package/dist/runs-query.d.ts +29 -0
  224. package/dist/runs-query.d.ts.map +1 -0
  225. package/dist/runs-query.js +142 -0
  226. package/dist/runs-query.js.map +1 -0
  227. package/dist/runtime-bundle.d.ts +3 -0
  228. package/dist/runtime-bundle.d.ts.map +1 -0
  229. package/dist/runtime-bundle.js +18 -0
  230. package/dist/runtime-bundle.js.map +1 -0
  231. package/dist/runtime-types.d.ts +397 -0
  232. package/dist/runtime-types.d.ts.map +1 -0
  233. package/dist/runtime-types.js +2 -0
  234. package/dist/runtime-types.js.map +1 -0
  235. package/dist/runtime-util.d.ts +45 -0
  236. package/dist/runtime-util.d.ts.map +1 -0
  237. package/dist/runtime-util.js +116 -0
  238. package/dist/runtime-util.js.map +1 -0
  239. package/dist/sandbox-cli-client.d.ts +20 -0
  240. package/dist/sandbox-cli-client.d.ts.map +1 -0
  241. package/dist/sandbox-cli-client.js +97 -0
  242. package/dist/sandbox-cli-client.js.map +1 -0
  243. package/dist/sandbox-fs.d.ts +56 -0
  244. package/dist/sandbox-fs.d.ts.map +1 -0
  245. package/dist/sandbox-fs.js +276 -0
  246. package/dist/sandbox-fs.js.map +1 -0
  247. package/dist/sandbox-session-key.d.ts +8 -0
  248. package/dist/sandbox-session-key.d.ts.map +1 -0
  249. package/dist/sandbox-session-key.js +32 -0
  250. package/dist/sandbox-session-key.js.map +1 -0
  251. package/dist/sandbox-snapshot-policy.d.ts +27 -0
  252. package/dist/sandbox-snapshot-policy.d.ts.map +1 -0
  253. package/dist/sandbox-snapshot-policy.js +94 -0
  254. package/dist/sandbox-snapshot-policy.js.map +1 -0
  255. package/dist/sandbox-sync-worker.d.ts +63 -0
  256. package/dist/sandbox-sync-worker.d.ts.map +1 -0
  257. package/dist/sandbox-sync-worker.js +448 -0
  258. package/dist/sandbox-sync-worker.js.map +1 -0
  259. package/dist/schedule-execution.d.ts +59 -0
  260. package/dist/schedule-execution.d.ts.map +1 -0
  261. package/dist/schedule-execution.js +951 -0
  262. package/dist/schedule-execution.js.map +1 -0
  263. package/dist/scheduler.d.ts +19 -0
  264. package/dist/scheduler.d.ts.map +1 -0
  265. package/dist/scheduler.js +38 -0
  266. package/dist/scheduler.js.map +1 -0
  267. package/dist/security.d.ts +20 -0
  268. package/dist/security.d.ts.map +1 -0
  269. package/dist/security.js +145 -0
  270. package/dist/security.js.map +1 -0
  271. package/dist/self-improvement.d.ts +245 -0
  272. package/dist/self-improvement.d.ts.map +1 -0
  273. package/dist/self-improvement.js +554 -0
  274. package/dist/self-improvement.js.map +1 -0
  275. package/dist/source-loader.d.ts +19 -0
  276. package/dist/source-loader.d.ts.map +1 -0
  277. package/dist/source-loader.js +160 -0
  278. package/dist/source-loader.js.map +1 -0
  279. package/dist/state-store-helpers.d.ts +28 -0
  280. package/dist/state-store-helpers.d.ts.map +1 -0
  281. package/dist/state-store-helpers.js +164 -0
  282. package/dist/state-store-helpers.js.map +1 -0
  283. package/dist/state-stores.d.ts +25 -0
  284. package/dist/state-stores.d.ts.map +1 -0
  285. package/dist/state-stores.js +157 -0
  286. package/dist/state-stores.js.map +1 -0
  287. package/dist/state.d.ts +736 -0
  288. package/dist/state.d.ts.map +1 -0
  289. package/dist/state.js +46 -0
  290. package/dist/state.js.map +1 -0
  291. package/dist/storage.d.ts +188 -0
  292. package/dist/storage.d.ts.map +1 -0
  293. package/dist/storage.js +752 -0
  294. package/dist/storage.js.map +1 -0
  295. package/dist/subagent-execution.d.ts +80 -0
  296. package/dist/subagent-execution.d.ts.map +1 -0
  297. package/dist/subagent-execution.js +135 -0
  298. package/dist/subagent-execution.js.map +1 -0
  299. package/dist/telemetry.d.ts +49 -0
  300. package/dist/telemetry.d.ts.map +1 -0
  301. package/dist/telemetry.js +60 -0
  302. package/dist/telemetry.js.map +1 -0
  303. package/dist/tool-apis.d.ts +22 -0
  304. package/dist/tool-apis.d.ts.map +1 -0
  305. package/dist/tool-apis.js +344 -0
  306. package/dist/tool-apis.js.map +1 -0
  307. package/dist/tool-execution.d.ts +143 -0
  308. package/dist/tool-execution.d.ts.map +1 -0
  309. package/dist/tool-execution.js +573 -0
  310. package/dist/tool-execution.js.map +1 -0
  311. package/dist/trusted-attachments.d.ts +20 -0
  312. package/dist/trusted-attachments.d.ts.map +1 -0
  313. package/dist/trusted-attachments.js +276 -0
  314. package/dist/trusted-attachments.js.map +1 -0
  315. package/dist/usage-accounting.d.ts +37 -0
  316. package/dist/usage-accounting.d.ts.map +1 -0
  317. package/dist/usage-accounting.js +181 -0
  318. package/dist/usage-accounting.js.map +1 -0
  319. package/dist/usage-budget.d.ts +29 -0
  320. package/dist/usage-budget.d.ts.map +1 -0
  321. package/dist/usage-budget.js +145 -0
  322. package/dist/usage-budget.js.map +1 -0
  323. package/dist/usage-reconciliation.d.ts +76 -0
  324. package/dist/usage-reconciliation.d.ts.map +1 -0
  325. package/dist/usage-reconciliation.js +463 -0
  326. package/dist/usage-reconciliation.js.map +1 -0
  327. package/dist/usage-records.d.ts +24 -0
  328. package/dist/usage-records.d.ts.map +1 -0
  329. package/dist/usage-records.js +445 -0
  330. package/dist/usage-records.js.map +1 -0
  331. package/package.json +51 -0
@@ -0,0 +1,49 @@
1
+ import type { HarnessContinuation } from "@assemblyline-agents/core";
2
+ import { type ConversationContextHost } from "./conversation-context.js";
3
+ import { type TranscriptPolicyOptions } from "./context-policy-util.js";
4
+ import { type ContinuationEnvelopeSession, type RestoredHarnessSession } from "./harness-continuation.js";
5
+ import type { CheckpointRecord, StateAdapter } from "./state.js";
6
+ /**
7
+ * Conversation transcript persistence: after a successful conversation run,
8
+ * the final harness continuation is checkpointed under
9
+ * {@link TRANSCRIPT_CHECKPOINT_NAME} and a pointer (run id + last observed
10
+ * provider input tokens) is stamped onto the conversation's metadata. The next
11
+ * turn in the conversation resumes from that transcript instead of rebuilding
12
+ * context from flattened recent history. The pointer is an acceleration
13
+ * layer, never the source of truth: any load/validation failure falls back to
14
+ * the flattened-history path, and the durable conversation messages and
15
+ * `/history` projection are unchanged.
16
+ */
17
+ export declare const TRANSCRIPT_CHECKPOINT_NAME = "conversation.transcript";
18
+ export declare const TRANSCRIPT_METADATA_KEY = "transcript";
19
+ /** Narrow host slice: `state` plus the runtime's checkpoint creator. */
20
+ export interface ConversationTranscriptHost {
21
+ state: StateAdapter;
22
+ createCheckpoint(input: Omit<CheckpointRecord, "id" | "createdAt">): Promise<CheckpointRecord>;
23
+ }
24
+ export interface LoadedConversationTranscript {
25
+ restored: RestoredHarnessSession;
26
+ sourceRunId: string;
27
+ lastInputTokens?: number;
28
+ }
29
+ export declare function persistConversationTranscriptImpl(host: ConversationTranscriptHost, input: {
30
+ runId: string;
31
+ conversationId: string;
32
+ session: ContinuationEnvelopeSession;
33
+ continuation: HarnessContinuation;
34
+ lastInputTokens?: number;
35
+ }): Promise<void>;
36
+ /**
37
+ * Load the conversation's stored transcript, or undefined when there is none.
38
+ * Emits `context.transcript_fallback` on the new run for pointer/checkpoint
39
+ * shapes that exist but cannot be restored, so degraded turns are auditable.
40
+ */
41
+ export declare function loadConversationTranscriptImpl(host: ConversationTranscriptHost, conversationId: string, runId: string): Promise<LoadedConversationTranscript | undefined>;
42
+ /** A transcript ready for resume, with the resolved trim settings. */
43
+ export interface ResumableConversationTranscript {
44
+ loaded: LoadedConversationTranscript;
45
+ settings: TranscriptPolicyOptions;
46
+ }
47
+ /** Policy-gated transcript load: resolves ContextPolicy transcript options first. */
48
+ export declare function loadResumableConversationTranscriptImpl(contextHost: ConversationContextHost, transcriptHost: ConversationTranscriptHost, conversationId: string, runId: string): Promise<ResumableConversationTranscript | undefined>;
49
+ //# sourceMappingURL=conversation-transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-transcript.d.ts","sourceRoot":"","sources":["../src/conversation-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAc,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAA2B,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,wEAAwE;AACxE,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,YAAY,CAAC;IACpB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChG;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,0BAA0B,EAChC,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,2BAA2B,CAAC;IACrC,YAAY,EAAE,mBAAmB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,0BAA0B,EAChC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC,CAoBnD;AAED,sEAAsE;AACtE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,4BAA4B,CAAC;IACrC,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,qFAAqF;AACrF,wBAAsB,uCAAuC,CAC3D,WAAW,EAAE,uBAAuB,EACpC,cAAc,EAAE,0BAA0B,EAC1C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAKtD"}
@@ -0,0 +1,77 @@
1
+ import { resolveContextPolicy } from "./conversation-context.js";
2
+ import { transcriptPolicyOptions } from "./context-policy-util.js";
3
+ import { buildHarnessContinuationEnvelope, storedHarnessContinuation } from "./harness-continuation.js";
4
+ /**
5
+ * Conversation transcript persistence: after a successful conversation run,
6
+ * the final harness continuation is checkpointed under
7
+ * {@link TRANSCRIPT_CHECKPOINT_NAME} and a pointer (run id + last observed
8
+ * provider input tokens) is stamped onto the conversation's metadata. The next
9
+ * turn in the conversation resumes from that transcript instead of rebuilding
10
+ * context from flattened recent history. The pointer is an acceleration
11
+ * layer, never the source of truth: any load/validation failure falls back to
12
+ * the flattened-history path, and the durable conversation messages and
13
+ * `/history` projection are unchanged.
14
+ */
15
+ export const TRANSCRIPT_CHECKPOINT_NAME = "conversation.transcript";
16
+ export const TRANSCRIPT_METADATA_KEY = "transcript";
17
+ export async function persistConversationTranscriptImpl(host, input) {
18
+ // Stores without updateConversation cannot hold the pointer; resume simply
19
+ // stays disabled for them and the fallback path serves every turn.
20
+ if (!host.state.updateConversation)
21
+ return;
22
+ const envelope = buildHarnessContinuationEnvelope(input.session, input.continuation);
23
+ await host.createCheckpoint({
24
+ runId: input.runId,
25
+ name: TRANSCRIPT_CHECKPOINT_NAME,
26
+ data: envelope
27
+ });
28
+ const pointer = { runId: input.runId };
29
+ if (input.lastInputTokens !== undefined)
30
+ pointer.lastInputTokens = input.lastInputTokens;
31
+ await host.state.updateConversation(input.conversationId, {
32
+ metadata: { [TRANSCRIPT_METADATA_KEY]: pointer }
33
+ });
34
+ await host.state.appendEvent(input.runId, "context.transcript_persisted", {
35
+ conversationId: input.conversationId,
36
+ ...(input.lastInputTokens !== undefined ? { lastInputTokens: input.lastInputTokens } : {})
37
+ });
38
+ }
39
+ /**
40
+ * Load the conversation's stored transcript, or undefined when there is none.
41
+ * Emits `context.transcript_fallback` on the new run for pointer/checkpoint
42
+ * shapes that exist but cannot be restored, so degraded turns are auditable.
43
+ */
44
+ export async function loadConversationTranscriptImpl(host, conversationId, runId) {
45
+ const conversation = await host.state.getConversation(conversationId);
46
+ const pointer = conversation?.metadata?.[TRANSCRIPT_METADATA_KEY];
47
+ if (!isJsonObject(pointer) || typeof pointer.runId !== "string")
48
+ return undefined;
49
+ const checkpoints = await host.state.listCheckpoints(pointer.runId);
50
+ const latest = [...checkpoints].reverse().find((checkpoint) => checkpoint.name === TRANSCRIPT_CHECKPOINT_NAME);
51
+ const restored = storedHarnessContinuation(latest?.data);
52
+ if (!restored) {
53
+ await host.state.appendEvent(runId, "context.transcript_fallback", {
54
+ conversationId,
55
+ sourceRunId: pointer.runId,
56
+ reason: latest ? "invalid_envelope" : "missing_checkpoint"
57
+ });
58
+ return undefined;
59
+ }
60
+ const loaded = { restored, sourceRunId: pointer.runId };
61
+ if (typeof pointer.lastInputTokens === "number" && Number.isFinite(pointer.lastInputTokens)) {
62
+ loaded.lastInputTokens = pointer.lastInputTokens;
63
+ }
64
+ return loaded;
65
+ }
66
+ /** Policy-gated transcript load: resolves ContextPolicy transcript options first. */
67
+ export async function loadResumableConversationTranscriptImpl(contextHost, transcriptHost, conversationId, runId) {
68
+ const settings = transcriptPolicyOptions(await resolveContextPolicy(contextHost));
69
+ if (!settings.resume)
70
+ return undefined;
71
+ const loaded = await loadConversationTranscriptImpl(transcriptHost, conversationId, runId);
72
+ return loaded ? { loaded, settings } : undefined;
73
+ }
74
+ function isJsonObject(value) {
75
+ return typeof value === "object" && value !== null && !Array.isArray(value);
76
+ }
77
+ //# sourceMappingURL=conversation-transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-transcript.js","sourceRoot":"","sources":["../src/conversation-transcript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { ChannelTurn } from "./channel.js";
2
+ import { RunCapacityError, type SemaphoreAdmission } from "./concurrency.js";
3
+ import type { RuntimeLogger } from "./logging.js";
4
+ import type { RunAgentResult } from "./runtime-types.js";
5
+ import type { ConversationTurnRecord, ResolvedStateAdapter, RunRecord } from "./state.js";
6
+ export interface ConversationTurnDispatchHost {
7
+ state: ResolvedStateAdapter;
8
+ logger: RuntimeLogger;
9
+ agentScope: string;
10
+ maxRunDurationMs: number;
11
+ now(): Date;
12
+ agentEnabled(): Promise<boolean>;
13
+ admitRunOrReject(): SemaphoreAdmission | RunCapacityError;
14
+ runTurn(turn: ChannelTurn, admission: SemaphoreAdmission, onRunCreated: (run: RunRecord) => Promise<void>): Promise<RunAgentResult>;
15
+ }
16
+ export interface EnqueueConversationTurnInput {
17
+ turn: ChannelTurn;
18
+ idempotencyScope: string;
19
+ idempotencyKey: string;
20
+ }
21
+ /**
22
+ * Runtime-owned dispatcher for accepted channel events. It serializes turns
23
+ * within one logical conversation while consuming normal run capacity across
24
+ * different conversations.
25
+ */
26
+ export declare class ConversationTurnDispatcher {
27
+ private readonly host;
28
+ private drainPromise;
29
+ private drainRequested;
30
+ constructor(host: ConversationTurnDispatchHost);
31
+ enqueue(input: EnqueueConversationTurnInput): Promise<{
32
+ inserted: boolean;
33
+ record: ConversationTurnRecord;
34
+ }>;
35
+ requestDrain(): void;
36
+ recover(): Promise<ConversationTurnRecord[]>;
37
+ settleRunResult(result: RunAgentResult): Promise<ConversationTurnRecord | undefined>;
38
+ settleRunRecord(run: RunRecord): Promise<ConversationTurnRecord | undefined>;
39
+ startWorker(intervalMs?: number): {
40
+ stop(): void;
41
+ };
42
+ private drain;
43
+ private execute;
44
+ }
45
+ export declare function conversationTurnQueueStatus(run: RunRecord): "blocked" | "completed" | "failed" | "cancelled";
46
+ //# sourceMappingURL=conversation-turn-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-turn-dispatch.d.ts","sourceRoot":"","sources":["../src/conversation-turn-dispatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,IAAI,IAAI,CAAC;IACZ,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,gBAAgB,IAAI,kBAAkB,GAAG,gBAAgB,CAAC;IAC1D,OAAO,CACL,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAC9C,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAkCD;;;;GAIG;AACH,qBAAa,0BAA0B;IAIzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAS;gBAEF,IAAI,EAAE,4BAA4B;IAEzD,OAAO,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAclH,YAAY,IAAI,IAAI;IASd,OAAO,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAoB5C,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAUpF,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAUlF,WAAW,CAAC,UAAU,SAAQ,GAAG;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE;YAanC,KAAK;YAgCL,OAAO;CA4DtB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAG5G"}
@@ -0,0 +1,201 @@
1
+ import { RunCapacityError } from "./concurrency.js";
2
+ import { safeJson } from "./json-util.js";
3
+ const TERMINAL_STATUSES = new Set(["completed", "failed", "cancelled"]);
4
+ const PARKED_STATUSES = new Set([
5
+ "waiting_for_approval",
6
+ "waiting_for_input",
7
+ "waiting_for_connection",
8
+ "suspended"
9
+ ]);
10
+ function errorMessage(error) {
11
+ return error instanceof Error ? error.message : String(error);
12
+ }
13
+ function queueStatusForRun(run) {
14
+ if (run.status === "completed" || run.status === "failed" || run.status === "cancelled") {
15
+ return run.status;
16
+ }
17
+ return "blocked";
18
+ }
19
+ function channelTurnFromPayload(record) {
20
+ const payload = record.payload;
21
+ if (typeof payload.eventId !== "string" ||
22
+ typeof payload.channel !== "string" ||
23
+ typeof payload.conversationId !== "string" ||
24
+ typeof payload.message !== "string") {
25
+ throw new Error(`Conversation turn ${record.id} has an invalid persisted payload.`);
26
+ }
27
+ return payload;
28
+ }
29
+ /**
30
+ * Runtime-owned dispatcher for accepted channel events. It serializes turns
31
+ * within one logical conversation while consuming normal run capacity across
32
+ * different conversations.
33
+ */
34
+ export class ConversationTurnDispatcher {
35
+ host;
36
+ drainPromise;
37
+ drainRequested = false;
38
+ constructor(host) {
39
+ this.host = host;
40
+ }
41
+ async enqueue(input) {
42
+ const queued = await this.host.state.enqueueConversationTurn({
43
+ agentScope: this.host.agentScope,
44
+ conversationId: input.turn.conversationId,
45
+ channel: input.turn.channel,
46
+ eventId: input.turn.eventId,
47
+ payload: safeJson(input.turn),
48
+ idempotencyScope: input.idempotencyScope,
49
+ idempotencyKey: input.idempotencyKey
50
+ });
51
+ this.requestDrain();
52
+ return { inserted: queued.inserted, record: queued.turn };
53
+ }
54
+ requestDrain() {
55
+ this.drainRequested = true;
56
+ if (this.drainPromise)
57
+ return;
58
+ this.drainPromise = this.drain().finally(() => {
59
+ this.drainPromise = undefined;
60
+ if (this.drainRequested)
61
+ this.requestDrain();
62
+ });
63
+ }
64
+ async recover() {
65
+ const recovered = await this.host.state.recoverExpiredConversationTurns(this.host.now());
66
+ const active = (await Promise.all([
67
+ this.host.state.listConversationTurns({ agentScope: this.host.agentScope, status: "running" }),
68
+ this.host.state.listConversationTurns({ agentScope: this.host.agentScope, status: "blocked" })
69
+ ])).flat().filter((turn) => turn.runId);
70
+ for (const turn of active) {
71
+ const run = await this.host.state.getRun(turn.runId);
72
+ if (!run || (!TERMINAL_STATUSES.has(run.status) && !PARKED_STATUSES.has(run.status)))
73
+ continue;
74
+ const settled = await this.host.state.settleConversationTurnByRunId(run.id, queueStatusForRun(run), run.terminalError ? { error: run.terminalError } : undefined);
75
+ if (settled)
76
+ recovered.push(settled);
77
+ }
78
+ this.requestDrain();
79
+ return recovered;
80
+ }
81
+ async settleRunResult(result) {
82
+ const settled = await this.host.state.settleConversationTurnByRunId(result.run.id, queueStatusForRun(result.run), result.run.terminalError ? { error: result.run.terminalError } : undefined);
83
+ if (settled && TERMINAL_STATUSES.has(settled.status))
84
+ this.requestDrain();
85
+ return settled;
86
+ }
87
+ async settleRunRecord(run) {
88
+ const settled = await this.host.state.settleConversationTurnByRunId(run.id, queueStatusForRun(run), run.terminalError ? { error: run.terminalError } : undefined);
89
+ if (settled && TERMINAL_STATUSES.has(settled.status))
90
+ this.requestDrain();
91
+ return settled;
92
+ }
93
+ startWorker(intervalMs = 1_000) {
94
+ void this.recover().catch((error) => {
95
+ this.host.logger.warn("conversation turn recovery failed", { error: errorMessage(error) });
96
+ });
97
+ const timer = setInterval(() => {
98
+ void this.recover().catch((error) => {
99
+ this.host.logger.warn("conversation turn recovery failed", { error: errorMessage(error) });
100
+ });
101
+ }, Math.max(100, Math.floor(intervalMs)));
102
+ timer.unref?.();
103
+ return { stop: () => clearInterval(timer) };
104
+ }
105
+ async drain() {
106
+ this.drainRequested = false;
107
+ while (true) {
108
+ if (!(await this.host.agentEnabled()))
109
+ return;
110
+ const admission = this.host.admitRunOrReject();
111
+ if (admission instanceof RunCapacityError)
112
+ return;
113
+ try {
114
+ await admission.ready;
115
+ }
116
+ catch (error) {
117
+ admission.release();
118
+ if (error instanceof RunCapacityError)
119
+ return;
120
+ throw error;
121
+ }
122
+ let record;
123
+ try {
124
+ record = await this.host.state.leaseNextConversationTurn({
125
+ agentScope: this.host.agentScope,
126
+ leaseForMs: Math.max(5 * 60_000, this.host.maxRunDurationMs + 5 * 60_000),
127
+ now: this.host.now()
128
+ });
129
+ }
130
+ catch (error) {
131
+ admission.release();
132
+ throw error;
133
+ }
134
+ if (!record) {
135
+ admission.release();
136
+ return;
137
+ }
138
+ void this.execute(record, admission);
139
+ }
140
+ }
141
+ async execute(record, admission) {
142
+ const leaseToken = record.leaseToken;
143
+ if (!leaseToken) {
144
+ admission.release();
145
+ return;
146
+ }
147
+ let runId;
148
+ try {
149
+ const turn = channelTurnFromPayload(record);
150
+ const result = await this.host.runTurn(turn, admission, async (run) => {
151
+ runId = run.id;
152
+ await this.host.state.attachConversationTurnRun(record.id, leaseToken, run.id);
153
+ });
154
+ await this.host.state.settleConversationTurn(record.id, leaseToken, queueStatusForRun(result.run), result.run.terminalError
155
+ ? { runId: result.run.id, error: result.run.terminalError }
156
+ : { runId: result.run.id });
157
+ }
158
+ catch (error) {
159
+ const message = errorMessage(error);
160
+ if (runId) {
161
+ const attachedRunId = runId;
162
+ const currentRun = await this.host.state.getRun(attachedRunId).catch(() => undefined);
163
+ const status = currentRun ? queueStatusForRun(currentRun) : "blocked";
164
+ await this.host.state.settleConversationTurn(record.id, leaseToken, status, { runId: attachedRunId, error: message }).catch((settleError) => {
165
+ this.host.logger.error("conversation turn settlement failed", {
166
+ turnId: record.id,
167
+ runId: attachedRunId,
168
+ error: errorMessage(settleError)
169
+ });
170
+ });
171
+ }
172
+ else {
173
+ await this.host.state.retryConversationTurn(record.id, leaseToken, message).catch((retryError) => {
174
+ this.host.logger.error("conversation turn retry scheduling failed", {
175
+ turnId: record.id,
176
+ error: errorMessage(retryError)
177
+ });
178
+ });
179
+ }
180
+ this.host.logger.error("conversation turn dispatch failed", {
181
+ turnId: record.id,
182
+ eventId: record.eventId,
183
+ conversationId: record.conversationId,
184
+ error: message
185
+ });
186
+ }
187
+ finally {
188
+ // `run()` owns the admission once invoked. Failures before invocation
189
+ // are the only path where execute still holds it.
190
+ if (!runId)
191
+ admission.release();
192
+ this.requestDrain();
193
+ }
194
+ }
195
+ }
196
+ export function conversationTurnQueueStatus(run) {
197
+ if (PARKED_STATUSES.has(run.status))
198
+ return "blocked";
199
+ return queueStatusForRun(run);
200
+ }
201
+ //# sourceMappingURL=conversation-turn-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-turn-dispatch.js","sourceRoot":"","sources":["../src/conversation-turn-dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA8B1C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AACxE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,sBAAsB;IACtB,mBAAmB;IACnB,wBAAwB;IACxB,WAAW;CACZ,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAc;IACvC,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACxF,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA8B;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,OAA+B,CAAC;IACvD,IACE,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;QAC1C,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EACnC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,EAAE,oCAAoC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,OAAsB,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAIR;IAHrB,YAAY,CAA4B;IACxC,cAAc,GAAG,KAAK,CAAC;IAE/B,YAA6B,IAAkC;QAAlC,SAAI,GAAJ,IAAI,CAA8B;IAAG,CAAC;IAEnE,KAAK,CAAC,OAAO,CAAC,KAAmC;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;YAC3D,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAChC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc;YACzC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;YAC3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;YAC3B,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAe;YAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,YAAY;QACV,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SAC/F,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAAE,SAAS;YAC/F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CACjE,GAAG,CAAC,EAAE,EACN,iBAAiB,CAAC,GAAG,CAAC,EACtB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;YACF,IAAI,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAsB;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CACjE,MAAM,CAAC,GAAG,CAAC,EAAE,EACb,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAC7B,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAC3E,CAAC;QACF,IAAI,OAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAc;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CACjE,GAAG,CAAC,EAAE,EACN,iBAAiB,CAAC,GAAG,CAAC,EACtB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;QACF,IAAI,OAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,UAAU,GAAG,KAAK;QAC5B,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAAE,OAAO;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,IAAI,SAAS,YAAY,gBAAgB;gBAAE,OAAO;YAClD,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,KAAK,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,KAAK,YAAY,gBAAgB;oBAAE,OAAO;gBAC9C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,MAA0C,CAAC;YAC/C,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC;oBACvD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;oBAChC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC;oBACzE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,MAA8B,EAAE,SAA6B;QACjF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACpE,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAC1C,MAAM,CAAC,EAAE,EACT,UAAU,EACV,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAC7B,MAAM,CAAC,GAAG,CAAC,aAAa;gBACtB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;gBAC3D,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAC7B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,aAAa,GAAG,KAAK,CAAC;gBAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACtF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAC1C,MAAM,CAAC,EAAE,EACT,UAAU,EACV,MAAM,EACN,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CACzC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;oBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE;wBAC5D,MAAM,EAAE,MAAM,CAAC,EAAE;wBACjB,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE;oBAC/F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;wBAClE,MAAM,EAAE,MAAM,CAAC,EAAE;wBACjB,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;qBAChC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;gBAC1D,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,sEAAsE;YACtE,kDAAkD;YAClD,IAAI,CAAC,KAAK;gBAAE,SAAS,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAc;IACxD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,89 @@
1
+ import type { JsonObject } from "@assemblyline-agents/core";
2
+ import type { ChannelTurn } from "./channel.js";
3
+ import type { DeliveryObligation, RunRecord, StateAdapter } from "./index.js";
4
+ import type { RuntimeLogger } from "./logging.js";
5
+ /**
6
+ * Durable delivery queue: lease/retry record helpers shared by the state
7
+ * adapters, plus the worker loop that drains deferred deliveries. Mirrors the
8
+ * sandbox-sync job queue so at-least-once channel delivery survives process
9
+ * crashes and works across replicas (postgres leases use
10
+ * `for update skip locked`).
11
+ */
12
+ export declare const DEFAULT_DELIVERY_QUEUE_MAX_ATTEMPTS = 5;
13
+ export type DeliveryObligationInput = Omit<DeliveryObligation, "id" | "createdAt" | "updatedAt" | "attemptCount" | "maxAttempts" | "nextAttemptAt"> & {
14
+ attemptCount?: number;
15
+ maxAttempts?: number;
16
+ nextAttemptAt?: string;
17
+ };
18
+ export type DeliveryObligationPatch = {
19
+ [Key in keyof Omit<DeliveryObligation, "id" | "createdAt">]?: Omit<DeliveryObligation, "id" | "createdAt">[Key] | undefined;
20
+ };
21
+ export interface DeliveryLeaseOptions {
22
+ now?: Date;
23
+ limit?: number;
24
+ leaseForMs?: number;
25
+ }
26
+ export interface DeliveryFailureInput {
27
+ error: string;
28
+ now?: Date;
29
+ retryDelayMs?: number;
30
+ /** Non-retryable failures go terminal regardless of remaining attempts. */
31
+ permanent?: boolean;
32
+ }
33
+ export interface DeliveryExecutionResult {
34
+ deliveryId: string;
35
+ runId: string;
36
+ status: "sent" | "retrying" | "failed";
37
+ error?: string;
38
+ }
39
+ export interface QueuedDeliverySendOutcome {
40
+ ok: boolean;
41
+ error?: string;
42
+ retryable?: boolean;
43
+ metadata?: JsonObject;
44
+ }
45
+ /** Narrow slice of the runtime the delivery worker needs. */
46
+ export interface DeliveryQueueHost {
47
+ state: StateAdapter;
48
+ logger: RuntimeLogger;
49
+ now(): Date;
50
+ leaseMs: number;
51
+ batchSize: number;
52
+ sendQueuedDelivery(delivery: DeliveryObligation): Promise<QueuedDeliverySendOutcome>;
53
+ agentEnabled(): Promise<boolean>;
54
+ }
55
+ export declare function createDeliveryRecord(input: DeliveryObligationInput): DeliveryObligation;
56
+ /** Fill queue defaults on rows persisted before the durable delivery queue existed. */
57
+ export declare function normalizeDeliveryRecord(delivery: DeliveryObligation): DeliveryObligation;
58
+ export declare function applyDeliveryPatch(current: DeliveryObligation, patch: DeliveryObligationPatch): DeliveryObligation;
59
+ export declare function isDeliveryDue(delivery: DeliveryObligation, now: Date): boolean;
60
+ export declare function deliveryQueueRetryDelayMs(attemptCount: number): number;
61
+ /** Feature detection: adapters opt into the durable queue by implementing the lease methods. */
62
+ export declare function stateSupportsDeliveryQueue(state: StateAdapter): boolean;
63
+ /**
64
+ * Move a failed in-process delivery onto the durable queue instead of marking
65
+ * it terminally failed: status back to `pending` with exponential backoff so a
66
+ * delivery worker (possibly in another process, after a crash) retries it.
67
+ */
68
+ export declare function deferFailedDelivery(input: {
69
+ state: StateAdapter;
70
+ delivery: DeliveryObligation;
71
+ runId: string;
72
+ error: string;
73
+ attempts: number;
74
+ maxAttempts: number;
75
+ now: Date;
76
+ }): Promise<DeliveryObligation>;
77
+ /** Recover expired leases, lease due deliveries, and attempt each send once. */
78
+ export declare function runDueDeliveriesImpl(host: DeliveryQueueHost, options?: DeliveryLeaseOptions): Promise<DeliveryExecutionResult[]>;
79
+ export declare function finalDeliveryIdempotencyKey(run: RunRecord, channel: string, turn?: ChannelTurn): string;
80
+ export declare function deliveryFileName(path: string): string;
81
+ export declare function deliveryFileContentType(path: string): string;
82
+ export declare function startDeliveryWorkerImpl(host: DeliveryQueueHost, options: {
83
+ intervalMs: number;
84
+ batchSize?: number;
85
+ leaseForMs?: number;
86
+ }): {
87
+ stop(): void;
88
+ } | undefined;
89
+ //# sourceMappingURL=delivery-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-queue.d.ts","sourceRoot":"","sources":["../src/delivery-queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;GAMG;AAEH,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,kBAAkB,EAClB,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,eAAe,CACpF,GAAG;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;KACnC,GAAG,IAAI,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;CAC5H,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,IAAI,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACrF,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAClC;AAcD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAYvF;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,kBAAkB,CAYxF;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAUlH;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAI9E;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,gGAAgG;AAChG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAIvE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC;CACX,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqB9B;AAED,gFAAgF;AAChF,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAyBpC;AAwDD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAKvG;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,GAAG,SAAS,CAkB9B"}