@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,244 @@
1
+ import { randomUUID } from "node:crypto";
2
+ /**
3
+ * Durable delivery queue: lease/retry record helpers shared by the state
4
+ * adapters, plus the worker loop that drains deferred deliveries. Mirrors the
5
+ * sandbox-sync job queue so at-least-once channel delivery survives process
6
+ * crashes and works across replicas (postgres leases use
7
+ * `for update skip locked`).
8
+ */
9
+ export const DEFAULT_DELIVERY_QUEUE_MAX_ATTEMPTS = 5;
10
+ function timestamp() {
11
+ return new Date().toISOString();
12
+ }
13
+ function positiveOr(value, fallback) {
14
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;
15
+ }
16
+ function errorMessage(error) {
17
+ return error instanceof Error ? error.message : String(error);
18
+ }
19
+ export function createDeliveryRecord(input) {
20
+ const now = timestamp();
21
+ const record = {
22
+ ...input,
23
+ attemptCount: input.attemptCount ?? 0,
24
+ maxAttempts: input.maxAttempts ?? DEFAULT_DELIVERY_QUEUE_MAX_ATTEMPTS,
25
+ nextAttemptAt: input.nextAttemptAt ?? now,
26
+ id: randomUUID(),
27
+ createdAt: now,
28
+ updatedAt: now
29
+ };
30
+ return record;
31
+ }
32
+ /** Fill queue defaults on rows persisted before the durable delivery queue existed. */
33
+ export function normalizeDeliveryRecord(delivery) {
34
+ const createdAt = delivery.createdAt ?? timestamp();
35
+ return {
36
+ ...delivery,
37
+ status: delivery.status ?? "pending",
38
+ payload: delivery.payload ?? {},
39
+ attemptCount: typeof delivery.attemptCount === "number" ? delivery.attemptCount : 0,
40
+ maxAttempts: typeof delivery.maxAttempts === "number" ? delivery.maxAttempts : DEFAULT_DELIVERY_QUEUE_MAX_ATTEMPTS,
41
+ nextAttemptAt: delivery.nextAttemptAt ?? createdAt,
42
+ createdAt,
43
+ updatedAt: delivery.updatedAt ?? createdAt
44
+ };
45
+ }
46
+ const OPTIONAL_DELIVERY_KEYS = new Set(["leaseToken", "leaseExpiresAt", "lastError", "sentAt", "failedAt"]);
47
+ export function applyDeliveryPatch(current, patch) {
48
+ const updated = { ...current, updatedAt: timestamp() };
49
+ for (const [key, value] of Object.entries(patch)) {
50
+ if (value === undefined) {
51
+ if (OPTIONAL_DELIVERY_KEYS.has(key))
52
+ delete updated[key];
53
+ continue;
54
+ }
55
+ updated[key] = value;
56
+ }
57
+ return updated;
58
+ }
59
+ export function isDeliveryDue(delivery, now) {
60
+ if (delivery.status !== "pending")
61
+ return false;
62
+ if (delivery.attemptCount >= delivery.maxAttempts)
63
+ return false;
64
+ return Date.parse(delivery.nextAttemptAt) <= now.getTime();
65
+ }
66
+ export function deliveryQueueRetryDelayMs(attemptCount) {
67
+ const bounded = Math.max(1, Math.min(8, attemptCount));
68
+ return Math.min(15 * 60_000, 2 ** (bounded - 1) * 1_000);
69
+ }
70
+ /** Feature detection: adapters opt into the durable queue by implementing the lease methods. */
71
+ export function stateSupportsDeliveryQueue(state) {
72
+ return typeof state.leaseDueDeliveries === "function" &&
73
+ typeof state.completeDeliverySend === "function" &&
74
+ typeof state.failDeliverySend === "function";
75
+ }
76
+ /**
77
+ * Move a failed in-process delivery onto the durable queue instead of marking
78
+ * it terminally failed: status back to `pending` with exponential backoff so a
79
+ * delivery worker (possibly in another process, after a crash) retries it.
80
+ */
81
+ export async function deferFailedDelivery(input) {
82
+ const attemptCount = Math.max(input.delivery.attemptCount, input.attempts);
83
+ const nextAttemptAt = new Date(input.now.getTime() + deliveryQueueRetryDelayMs(Math.max(1, attemptCount))).toISOString();
84
+ const updated = await input.state.updateDelivery(input.delivery.id, {
85
+ status: "pending",
86
+ attemptCount,
87
+ maxAttempts: Math.max(input.maxAttempts, attemptCount + 1),
88
+ nextAttemptAt,
89
+ lastError: input.error,
90
+ // Release any inline-send lease so the delivery worker can pick this up.
91
+ leaseToken: undefined,
92
+ leaseExpiresAt: undefined
93
+ });
94
+ await input.state.appendEvent(input.runId, "delivery.deferred", {
95
+ deliveryId: input.delivery.id,
96
+ error: input.error,
97
+ attempts: attemptCount,
98
+ maxAttempts: updated.maxAttempts,
99
+ nextAttemptAt
100
+ });
101
+ return updated;
102
+ }
103
+ /** Recover expired leases, lease due deliveries, and attempt each send once. */
104
+ export async function runDueDeliveriesImpl(host, options = {}) {
105
+ if (!(await host.agentEnabled()))
106
+ return [];
107
+ const { state } = host;
108
+ if (!stateSupportsDeliveryQueue(state) || !state.leaseDueDeliveries)
109
+ return [];
110
+ const now = options.now ?? host.now();
111
+ const recovered = await state.recoverExpiredDeliveries?.(now) ?? [];
112
+ for (const delivery of recovered) {
113
+ await state.appendEvent(delivery.runId, "delivery.retrying", {
114
+ deliveryId: delivery.id,
115
+ reason: "expired_lease",
116
+ attemptCount: delivery.attemptCount,
117
+ maxAttempts: delivery.maxAttempts,
118
+ nextAttemptAt: delivery.nextAttemptAt
119
+ });
120
+ }
121
+ const leased = await state.leaseDueDeliveries({
122
+ now,
123
+ limit: positiveOr(options.limit, host.batchSize),
124
+ leaseForMs: positiveOr(options.leaseForMs, host.leaseMs)
125
+ });
126
+ const results = [];
127
+ for (const delivery of leased) {
128
+ results.push(await processLeasedDelivery(host, delivery));
129
+ }
130
+ return results;
131
+ }
132
+ async function processLeasedDelivery(host, delivery) {
133
+ const { state } = host;
134
+ const leaseToken = delivery.leaseToken ?? "";
135
+ let outcome;
136
+ try {
137
+ outcome = await host.sendQueuedDelivery(delivery);
138
+ }
139
+ catch (error) {
140
+ outcome = { ok: false, error: errorMessage(error), retryable: true };
141
+ }
142
+ if (outcome.ok) {
143
+ const send = { ...(outcome.metadata ?? {}), attempts: delivery.attemptCount, queued: true };
144
+ const completed = await state.completeDeliverySend(delivery.id, leaseToken, {
145
+ payload: { ...delivery.payload, send }
146
+ });
147
+ await state.appendEvent(delivery.runId, "delivery.sent", {
148
+ deliveryId: delivery.id,
149
+ attempts: completed.attemptCount,
150
+ queued: true,
151
+ metadata: send
152
+ });
153
+ return { deliveryId: delivery.id, runId: delivery.runId, status: "sent" };
154
+ }
155
+ const error = outcome.error ?? "Channel delivery failed.";
156
+ const failed = await state.failDeliverySend(delivery.id, leaseToken, {
157
+ error,
158
+ now: host.now(),
159
+ ...(outcome.retryable === false ? { permanent: true } : {})
160
+ });
161
+ if (failed.status === "failed") {
162
+ await state.appendEvent(delivery.runId, "delivery.failed", {
163
+ deliveryId: delivery.id,
164
+ error,
165
+ attempts: failed.attemptCount,
166
+ queued: true
167
+ });
168
+ host.logger.warn("delivery permanently failed", {
169
+ deliveryId: delivery.id,
170
+ runId: delivery.runId,
171
+ channel: delivery.channel,
172
+ attempts: failed.attemptCount,
173
+ error
174
+ });
175
+ return { deliveryId: delivery.id, runId: delivery.runId, status: "failed", error };
176
+ }
177
+ await state.appendEvent(delivery.runId, "delivery.retrying", {
178
+ deliveryId: delivery.id,
179
+ error,
180
+ attemptCount: failed.attemptCount,
181
+ maxAttempts: failed.maxAttempts,
182
+ nextAttemptAt: failed.nextAttemptAt
183
+ });
184
+ return { deliveryId: delivery.id, runId: delivery.runId, status: "retrying", error };
185
+ }
186
+ export function finalDeliveryIdempotencyKey(run, channel, turn) {
187
+ const inputEventId = typeof run.input.eventId === "string" ? run.input.eventId.trim() : "";
188
+ const eventId = turn?.eventId ?? inputEventId;
189
+ if (eventId)
190
+ return `delivery:${channel}:${eventId}:final`;
191
+ return `delivery:${run.id}`;
192
+ }
193
+ export function deliveryFileName(path) {
194
+ return path.split("/").filter(Boolean).at(-1) ?? "artifact";
195
+ }
196
+ export function deliveryFileContentType(path) {
197
+ const lower = path.toLowerCase();
198
+ if (lower.endsWith(".txt"))
199
+ return "text/plain";
200
+ if (lower.endsWith(".md") || lower.endsWith(".markdown"))
201
+ return "text/markdown";
202
+ if (lower.endsWith(".json"))
203
+ return "application/json";
204
+ if (lower.endsWith(".csv"))
205
+ return "text/csv";
206
+ if (lower.endsWith(".html"))
207
+ return "text/html";
208
+ if (lower.endsWith(".pdf"))
209
+ return "application/pdf";
210
+ if (lower.endsWith(".zip"))
211
+ return "application/zip";
212
+ if (lower.endsWith(".png"))
213
+ return "image/png";
214
+ if (lower.endsWith(".jpg") || lower.endsWith(".jpeg"))
215
+ return "image/jpeg";
216
+ if (lower.endsWith(".gif"))
217
+ return "image/gif";
218
+ if (lower.endsWith(".svg"))
219
+ return "image/svg+xml";
220
+ return "application/octet-stream";
221
+ }
222
+ export function startDeliveryWorkerImpl(host, options) {
223
+ if (!stateSupportsDeliveryQueue(host.state))
224
+ return undefined;
225
+ const runOptions = {};
226
+ if (options.batchSize !== undefined)
227
+ runOptions.limit = options.batchSize;
228
+ if (options.leaseForMs !== undefined)
229
+ runOptions.leaseForMs = options.leaseForMs;
230
+ const timer = setInterval(() => {
231
+ void runDueDeliveriesImpl(host, runOptions).catch((error) => {
232
+ // Per-delivery failures are recorded on their owning run. This catch
233
+ // prevents an unexpected adapter-level error from tearing down the loop.
234
+ host.logger.warn("delivery worker tick failed", { error: errorMessage(error) });
235
+ });
236
+ }, options.intervalMs);
237
+ timer.unref?.();
238
+ return {
239
+ stop() {
240
+ clearInterval(timer);
241
+ }
242
+ };
243
+ }
244
+ //# sourceMappingURL=delivery-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-queue.js","sourceRoot":"","sources":["../src/delivery-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { AgentManifest, CompiledChannel, JsonObject, SandboxSession } from "@assemblyline-agents/core";
2
+ import type { ChannelContext, ChannelModule, ChannelTurn, ChannelTurnLifecycle } from "./channel.js";
3
+ import type { RuntimeLogger } from "./logging.js";
4
+ import type { BlobAdapter, DeliverySendResult, EmitSpanOptions, RunAgentResult, RuntimeSandboxHandle } from "./runtime-types.js";
5
+ import type { DeliveryObligation, RunRecord, SandboxSyncJobRecord, StateAdapter } from "./state.js";
6
+ /** Narrow slice of the runtime the delivery send path needs. */
7
+ export interface DeliverySendHost {
8
+ state: StateAdapter;
9
+ blob: BlobAdapter;
10
+ logger: RuntimeLogger;
11
+ env: Record<string, string | undefined>;
12
+ manifest: AgentManifest;
13
+ devMode: boolean;
14
+ deliveryMode: "send" | "record-only";
15
+ now(): Date;
16
+ sandboxSyncInline: boolean;
17
+ deliveryQueueLeaseMs: number;
18
+ deliveryQueueMaxAttempts: number;
19
+ sandboxSyncMaxAttempts: number;
20
+ result(run: RunRecord, response: string, waitingForApproval?: boolean, waitingForInput?: boolean, waitingForConnection?: boolean): Promise<RunAgentResult>;
21
+ sandboxSessionKey(run: RunRecord): string;
22
+ debugSwallow(message: string, fields: JsonObject): (error: unknown) => undefined;
23
+ emitSpan(name: string, startedAt: string, attributes: JsonObject, options?: EmitSpanOptions): Promise<void>;
24
+ runSpanAttributes(run: RunRecord, extra?: JsonObject): JsonObject;
25
+ turnSpanId(runId: string): string;
26
+ captureSandboxSnapshot(run: RunRecord, sandboxSession: SandboxSession, stage: "run_completed" | "delivery_failed" | "delivery_deferred"): Promise<RunRecord>;
27
+ loadChannelModule(channel: CompiledChannel): Promise<ChannelModule>;
28
+ channelContext(channel: CompiledChannel): ChannelContext;
29
+ }
30
+ export interface ChannelTurnStart {
31
+ lifecycle?: ChannelTurnLifecycle;
32
+ outcome: "skipped" | "unsupported" | "started" | "failed";
33
+ error?: string;
34
+ claimed: boolean;
35
+ }
36
+ export declare function completeRunImpl(host: DeliverySendHost, run: RunRecord, sandboxHandle: RuntimeSandboxHandle, response: string, channel: string, turn?: ChannelTurn, conversationId?: string): Promise<RunAgentResult>;
37
+ export declare function latestRunFailureMessageImpl(host: DeliverySendHost, runId: string): Promise<string | undefined>;
38
+ export declare function enqueueSandboxSyncAfterDeliveryImpl(host: DeliverySendHost, run: RunRecord, sandboxSession: SandboxSession): Promise<SandboxSyncJobRecord>;
39
+ export declare function beginChannelTurnImpl(host: DeliverySendHost, channelName: string, turn: ChannelTurn | undefined): Promise<ChannelTurnStart>;
40
+ export declare function recordChannelTurnStartImpl(host: DeliverySendHost, start: ChannelTurnStart, run: RunRecord, channelName: string): Promise<void>;
41
+ export declare function stopUnclaimedChannelTurnImpl(host: DeliverySendHost, start: ChannelTurnStart | undefined, channelName: string): Promise<void>;
42
+ export declare function stopChannelTurnImpl(host: DeliverySendHost, lifecycle: ChannelTurnLifecycle | undefined, run: RunRecord, channelName: string): Promise<void>;
43
+ export declare function sendDeliveryImpl(host: DeliverySendHost, delivery: DeliveryObligation, response: string, turn?: ChannelTurn, run?: RunRecord): Promise<DeliverySendResult>;
44
+ //# sourceMappingURL=delivery-send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-send.d.ts","sourceRoot":"","sources":["../src/delivery-send.ts"],"names":[],"mappings":"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"}