@assemblyline-agents/runtime 2.0.0 → 3.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 (389) hide show
  1. package/LICENSE +1 -1
  2. package/dist/a2a-client.d.ts +22 -0
  3. package/dist/a2a-client.d.ts.map +1 -0
  4. package/dist/a2a-client.js +211 -0
  5. package/dist/a2a-client.js.map +1 -0
  6. package/dist/agent-hook-context.d.ts +6 -1
  7. package/dist/agent-hook-context.d.ts.map +1 -1
  8. package/dist/agent-hook-context.js +24 -11
  9. package/dist/agent-hook-context.js.map +1 -1
  10. package/dist/agent-hook-evaluation.d.ts +6 -1
  11. package/dist/agent-hook-evaluation.d.ts.map +1 -1
  12. package/dist/agent-hook-evaluation.js +16 -5
  13. package/dist/agent-hook-evaluation.js.map +1 -1
  14. package/dist/agent-hook-run-lifecycle.d.ts +5 -1
  15. package/dist/agent-hook-run-lifecycle.d.ts.map +1 -1
  16. package/dist/agent-hook-run-lifecycle.js +11 -13
  17. package/dist/agent-hook-run-lifecycle.js.map +1 -1
  18. package/dist/agent-surface.d.ts +32 -0
  19. package/dist/agent-surface.d.ts.map +1 -0
  20. package/dist/agent-surface.js +85 -0
  21. package/dist/agent-surface.js.map +1 -0
  22. package/dist/attachments.d.ts +5 -1
  23. package/dist/attachments.d.ts.map +1 -1
  24. package/dist/attachments.js +58 -32
  25. package/dist/attachments.js.map +1 -1
  26. package/dist/audience.d.ts +30 -0
  27. package/dist/audience.d.ts.map +1 -0
  28. package/dist/audience.js +68 -0
  29. package/dist/audience.js.map +1 -0
  30. package/dist/automation-event-match.d.ts +8 -0
  31. package/dist/automation-event-match.d.ts.map +1 -0
  32. package/dist/automation-event-match.js +25 -0
  33. package/dist/automation-event-match.js.map +1 -0
  34. package/dist/background-review-trigger.d.ts.map +1 -1
  35. package/dist/background-review-trigger.js +14 -16
  36. package/dist/background-review-trigger.js.map +1 -1
  37. package/dist/background-review-types.d.ts +9 -2
  38. package/dist/background-review-types.d.ts.map +1 -1
  39. package/dist/background-review-worker.js +2 -2
  40. package/dist/background-review-worker.js.map +1 -1
  41. package/dist/background-review.d.ts.map +1 -1
  42. package/dist/background-review.js +27 -10
  43. package/dist/background-review.js.map +1 -1
  44. package/dist/builtin-tool-executors.d.ts +47 -21
  45. package/dist/builtin-tool-executors.d.ts.map +1 -1
  46. package/dist/builtin-tool-executors.js +293 -121
  47. package/dist/builtin-tool-executors.js.map +1 -1
  48. package/dist/builtin-tools.d.ts +16 -8
  49. package/dist/builtin-tools.d.ts.map +1 -1
  50. package/dist/builtin-tools.js +309 -70
  51. package/dist/builtin-tools.js.map +1 -1
  52. package/dist/capability-catalog.d.ts +3 -2
  53. package/dist/capability-catalog.d.ts.map +1 -1
  54. package/dist/capability-catalog.js +10 -6
  55. package/dist/capability-catalog.js.map +1 -1
  56. package/dist/capability-inspection.d.ts +31 -0
  57. package/dist/capability-inspection.d.ts.map +1 -0
  58. package/dist/capability-inspection.js +58 -0
  59. package/dist/capability-inspection.js.map +1 -0
  60. package/dist/channel-http-util.d.ts.map +1 -1
  61. package/dist/channel-http-util.js +6 -2
  62. package/dist/channel-http-util.js.map +1 -1
  63. package/dist/channel-ingress.d.ts +16 -1
  64. package/dist/channel-ingress.d.ts.map +1 -1
  65. package/dist/channel-ingress.js +117 -7
  66. package/dist/channel-ingress.js.map +1 -1
  67. package/dist/channel.d.ts +58 -2
  68. package/dist/channel.d.ts.map +1 -1
  69. package/dist/checkpoints.d.ts +1 -1
  70. package/dist/checkpoints.d.ts.map +1 -1
  71. package/dist/checkpoints.js +6 -6
  72. package/dist/checkpoints.js.map +1 -1
  73. package/dist/child-process-env.d.ts +7 -0
  74. package/dist/child-process-env.d.ts.map +1 -0
  75. package/dist/child-process-env.js +41 -0
  76. package/dist/child-process-env.js.map +1 -0
  77. package/dist/computer-relay-protocol.d.ts.map +1 -1
  78. package/dist/computer-relay-protocol.js +4 -4
  79. package/dist/computer-relay-protocol.js.map +1 -1
  80. package/dist/concurrency.d.ts +1 -1
  81. package/dist/concurrency.js +1 -1
  82. package/dist/connection-auth-util.d.ts +1 -0
  83. package/dist/connection-auth-util.d.ts.map +1 -1
  84. package/dist/connection-auth-util.js +1 -1
  85. package/dist/connection-auth-util.js.map +1 -1
  86. package/dist/connection-clients.d.ts +11 -3
  87. package/dist/connection-clients.d.ts.map +1 -1
  88. package/dist/connection-clients.js +71 -8
  89. package/dist/connection-clients.js.map +1 -1
  90. package/dist/connection-event-store.d.ts +98 -0
  91. package/dist/connection-event-store.d.ts.map +1 -0
  92. package/dist/connection-event-store.js +162 -0
  93. package/dist/connection-event-store.js.map +1 -0
  94. package/dist/connection-events.d.ts +51 -0
  95. package/dist/connection-events.d.ts.map +1 -0
  96. package/dist/connection-events.js +343 -0
  97. package/dist/connection-events.js.map +1 -0
  98. package/dist/connection-stores.d.ts +3 -0
  99. package/dist/connection-stores.d.ts.map +1 -1
  100. package/dist/connection-stores.js +4 -1
  101. package/dist/connection-stores.js.map +1 -1
  102. package/dist/connection-util.d.ts +3 -2
  103. package/dist/connection-util.d.ts.map +1 -1
  104. package/dist/connection-util.js +18 -1
  105. package/dist/connection-util.js.map +1 -1
  106. package/dist/connections.d.ts +54 -5
  107. package/dist/connections.d.ts.map +1 -1
  108. package/dist/connections.js +342 -53
  109. package/dist/connections.js.map +1 -1
  110. package/dist/context-policy-util.d.ts.map +1 -1
  111. package/dist/context-policy-util.js +1 -3
  112. package/dist/context-policy-util.js.map +1 -1
  113. package/dist/conversation-context.d.ts +6 -2
  114. package/dist/conversation-context.d.ts.map +1 -1
  115. package/dist/conversation-context.js +45 -12
  116. package/dist/conversation-context.js.map +1 -1
  117. package/dist/conversation-transcript.d.ts +8 -5
  118. package/dist/conversation-transcript.d.ts.map +1 -1
  119. package/dist/conversation-transcript.js +24 -5
  120. package/dist/conversation-transcript.js.map +1 -1
  121. package/dist/conversation-turn-coalescing.d.ts +22 -0
  122. package/dist/conversation-turn-coalescing.d.ts.map +1 -0
  123. package/dist/conversation-turn-coalescing.js +121 -0
  124. package/dist/conversation-turn-coalescing.js.map +1 -0
  125. package/dist/conversation-turn-dispatch.d.ts +5 -2
  126. package/dist/conversation-turn-dispatch.d.ts.map +1 -1
  127. package/dist/conversation-turn-dispatch.js +59 -22
  128. package/dist/conversation-turn-dispatch.js.map +1 -1
  129. package/dist/default-outbound-route.d.ts +29 -0
  130. package/dist/default-outbound-route.d.ts.map +1 -0
  131. package/dist/default-outbound-route.js +105 -0
  132. package/dist/default-outbound-route.js.map +1 -0
  133. package/dist/delivery-artifacts.d.ts +2 -0
  134. package/dist/delivery-artifacts.d.ts.map +1 -0
  135. package/dist/delivery-artifacts.js +34 -0
  136. package/dist/delivery-artifacts.js.map +1 -0
  137. package/dist/delivery-files.d.ts +5 -0
  138. package/dist/delivery-files.d.ts.map +1 -0
  139. package/dist/delivery-files.js +33 -0
  140. package/dist/delivery-files.js.map +1 -0
  141. package/dist/delivery-queue.d.ts +21 -1
  142. package/dist/delivery-queue.d.ts.map +1 -1
  143. package/dist/delivery-queue.js +144 -1
  144. package/dist/delivery-queue.js.map +1 -1
  145. package/dist/delivery-send.d.ts +2 -2
  146. package/dist/delivery-send.d.ts.map +1 -1
  147. package/dist/delivery-send.js +256 -100
  148. package/dist/delivery-send.js.map +1 -1
  149. package/dist/durable-files.d.ts +37 -0
  150. package/dist/durable-files.d.ts.map +1 -0
  151. package/dist/durable-files.js +63 -0
  152. package/dist/durable-files.js.map +1 -0
  153. package/dist/harness-loop.d.ts +6 -1
  154. package/dist/harness-loop.d.ts.map +1 -1
  155. package/dist/harness-loop.js +110 -25
  156. package/dist/harness-loop.js.map +1 -1
  157. package/dist/heic-transcode-worker.d.ts +2 -0
  158. package/dist/heic-transcode-worker.d.ts.map +1 -0
  159. package/dist/heic-transcode-worker.js +59 -0
  160. package/dist/heic-transcode-worker.js.map +1 -0
  161. package/dist/heic-transcode.d.ts +18 -0
  162. package/dist/heic-transcode.d.ts.map +1 -0
  163. package/dist/heic-transcode.js +99 -0
  164. package/dist/heic-transcode.js.map +1 -0
  165. package/dist/human-input-routing.d.ts +22 -0
  166. package/dist/human-input-routing.d.ts.map +1 -0
  167. package/dist/human-input-routing.js +26 -0
  168. package/dist/human-input-routing.js.map +1 -0
  169. package/dist/in-memory-conversation-turn-store.d.ts +3 -1
  170. package/dist/in-memory-conversation-turn-store.d.ts.map +1 -1
  171. package/dist/in-memory-conversation-turn-store.js +41 -2
  172. package/dist/in-memory-conversation-turn-store.js.map +1 -1
  173. package/dist/in-memory-run-store.d.ts +8 -0
  174. package/dist/in-memory-run-store.d.ts.map +1 -1
  175. package/dist/in-memory-run-store.js +28 -5
  176. package/dist/in-memory-run-store.js.map +1 -1
  177. package/dist/in-memory-sandbox-session-store.d.ts +2 -1
  178. package/dist/in-memory-sandbox-session-store.d.ts.map +1 -1
  179. package/dist/in-memory-sandbox-session-store.js +65 -1
  180. package/dist/in-memory-sandbox-session-store.js.map +1 -1
  181. package/dist/in-memory-small-stores.d.ts +18 -1
  182. package/dist/in-memory-small-stores.d.ts.map +1 -1
  183. package/dist/in-memory-small-stores.js +107 -1
  184. package/dist/in-memory-small-stores.js.map +1 -1
  185. package/dist/in-memory-workspace-store.d.ts +40 -0
  186. package/dist/in-memory-workspace-store.d.ts.map +1 -0
  187. package/dist/in-memory-workspace-store.js +370 -0
  188. package/dist/in-memory-workspace-store.js.map +1 -0
  189. package/dist/index.d.ts +73 -36
  190. package/dist/index.d.ts.map +1 -1
  191. package/dist/index.js +390 -258
  192. package/dist/index.js.map +1 -1
  193. package/dist/json-util.d.ts +8 -0
  194. package/dist/json-util.d.ts.map +1 -1
  195. package/dist/json-util.js +8 -0
  196. package/dist/json-util.js.map +1 -1
  197. package/dist/local-sandbox.d.ts +3 -2
  198. package/dist/local-sandbox.d.ts.map +1 -1
  199. package/dist/local-sandbox.js +69 -25
  200. package/dist/local-sandbox.js.map +1 -1
  201. package/dist/mcp-client.d.ts.map +1 -1
  202. package/dist/mcp-client.js +3 -2
  203. package/dist/mcp-client.js.map +1 -1
  204. package/dist/media-processor.d.ts +42 -0
  205. package/dist/media-processor.d.ts.map +1 -0
  206. package/dist/media-processor.js +2 -0
  207. package/dist/media-processor.js.map +1 -0
  208. package/dist/model-media.d.ts +13 -1
  209. package/dist/model-media.d.ts.map +1 -1
  210. package/dist/model-media.js +81 -18
  211. package/dist/model-media.js.map +1 -1
  212. package/dist/model-visible-interrupts.d.ts +10 -0
  213. package/dist/model-visible-interrupts.d.ts.map +1 -0
  214. package/dist/model-visible-interrupts.js +41 -0
  215. package/dist/model-visible-interrupts.js.map +1 -0
  216. package/dist/operator-controls.d.ts.map +1 -1
  217. package/dist/operator-controls.js +16 -3
  218. package/dist/operator-controls.js.map +1 -1
  219. package/dist/outbound-http-policy.d.ts +7 -0
  220. package/dist/outbound-http-policy.d.ts.map +1 -0
  221. package/dist/outbound-http-policy.js +155 -0
  222. package/dist/outbound-http-policy.js.map +1 -0
  223. package/dist/public-api.d.ts +21 -0
  224. package/dist/public-api.d.ts.map +1 -0
  225. package/dist/public-api.js +19 -0
  226. package/dist/public-api.js.map +1 -0
  227. package/dist/replay-resume.d.ts +8 -0
  228. package/dist/replay-resume.d.ts.map +1 -1
  229. package/dist/replay-resume.js +141 -11
  230. package/dist/replay-resume.js.map +1 -1
  231. package/dist/resource-projection-util.d.ts +1 -1
  232. package/dist/resource-projection-util.d.ts.map +1 -1
  233. package/dist/resource-projection-util.js +21 -10
  234. package/dist/resource-projection-util.js.map +1 -1
  235. package/dist/resource-projection.d.ts +8 -1
  236. package/dist/resource-projection.d.ts.map +1 -1
  237. package/dist/resource-projection.js +229 -29
  238. package/dist/resource-projection.js.map +1 -1
  239. package/dist/run-heartbeat.d.ts +12 -2
  240. package/dist/run-heartbeat.d.ts.map +1 -1
  241. package/dist/run-heartbeat.js +31 -4
  242. package/dist/run-heartbeat.js.map +1 -1
  243. package/dist/run-outcome.d.ts +9 -5
  244. package/dist/run-outcome.d.ts.map +1 -1
  245. package/dist/run-outcome.js +14 -5
  246. package/dist/run-outcome.js.map +1 -1
  247. package/dist/run-recovery.d.ts +19 -3
  248. package/dist/run-recovery.d.ts.map +1 -1
  249. package/dist/run-recovery.js +205 -34
  250. package/dist/run-recovery.js.map +1 -1
  251. package/dist/run-replay.d.ts +35 -0
  252. package/dist/run-replay.d.ts.map +1 -0
  253. package/dist/run-replay.js +193 -0
  254. package/dist/run-replay.js.map +1 -0
  255. package/dist/run-result.d.ts +4 -0
  256. package/dist/run-result.d.ts.map +1 -0
  257. package/dist/run-result.js +18 -0
  258. package/dist/run-result.js.map +1 -0
  259. package/dist/run-timeline-query.d.ts +38 -0
  260. package/dist/run-timeline-query.d.ts.map +1 -0
  261. package/dist/run-timeline-query.js +99 -0
  262. package/dist/run-timeline-query.js.map +1 -0
  263. package/dist/runs-query.d.ts.map +1 -1
  264. package/dist/runs-query.js +11 -3
  265. package/dist/runs-query.js.map +1 -1
  266. package/dist/runtime-bundle.d.ts.map +1 -1
  267. package/dist/runtime-bundle.js +2 -0
  268. package/dist/runtime-bundle.js.map +1 -1
  269. package/dist/runtime-learning.d.ts +15 -13
  270. package/dist/runtime-learning.d.ts.map +1 -1
  271. package/dist/runtime-learning.js +79 -58
  272. package/dist/runtime-learning.js.map +1 -1
  273. package/dist/runtime-types.d.ts +68 -9
  274. package/dist/runtime-types.d.ts.map +1 -1
  275. package/dist/sandbox-fs.d.ts +8 -5
  276. package/dist/sandbox-fs.d.ts.map +1 -1
  277. package/dist/sandbox-fs.js +30 -31
  278. package/dist/sandbox-fs.js.map +1 -1
  279. package/dist/sandbox-handle.d.ts +25 -0
  280. package/dist/sandbox-handle.d.ts.map +1 -0
  281. package/dist/sandbox-handle.js +120 -0
  282. package/dist/sandbox-handle.js.map +1 -0
  283. package/dist/sandbox-session-identity.d.ts +14 -0
  284. package/dist/sandbox-session-identity.d.ts.map +1 -0
  285. package/dist/sandbox-session-identity.js +33 -0
  286. package/dist/sandbox-session-identity.js.map +1 -0
  287. package/dist/sandbox-session-key.d.ts.map +1 -1
  288. package/dist/sandbox-session-key.js +12 -9
  289. package/dist/sandbox-session-key.js.map +1 -1
  290. package/dist/sandbox-session-lifecycle.d.ts.map +1 -1
  291. package/dist/sandbox-session-lifecycle.js +187 -44
  292. package/dist/sandbox-session-lifecycle.js.map +1 -1
  293. package/dist/sandbox-snapshot-policy.js +3 -3
  294. package/dist/sandbox-snapshot-policy.js.map +1 -1
  295. package/dist/sandbox-state-sync.d.ts +4 -2
  296. package/dist/sandbox-state-sync.d.ts.map +1 -1
  297. package/dist/sandbox-state-sync.js +47 -15
  298. package/dist/sandbox-state-sync.js.map +1 -1
  299. package/dist/sandbox-sync-worker.d.ts +11 -2
  300. package/dist/sandbox-sync-worker.d.ts.map +1 -1
  301. package/dist/sandbox-sync-worker.js +143 -31
  302. package/dist/sandbox-sync-worker.js.map +1 -1
  303. package/dist/schedule-execution.d.ts.map +1 -1
  304. package/dist/schedule-execution.js +127 -23
  305. package/dist/schedule-execution.js.map +1 -1
  306. package/dist/sdk-api-client.d.ts +17 -0
  307. package/dist/sdk-api-client.d.ts.map +1 -0
  308. package/dist/sdk-api-client.js +55 -0
  309. package/dist/sdk-api-client.js.map +1 -0
  310. package/dist/security.js +2 -2
  311. package/dist/security.js.map +1 -1
  312. package/dist/self-improvement.d.ts +5 -1
  313. package/dist/self-improvement.d.ts.map +1 -1
  314. package/dist/self-improvement.js +28 -14
  315. package/dist/self-improvement.js.map +1 -1
  316. package/dist/skill-bundles.d.ts +55 -0
  317. package/dist/skill-bundles.d.ts.map +1 -0
  318. package/dist/skill-bundles.js +134 -0
  319. package/dist/skill-bundles.js.map +1 -0
  320. package/dist/source-loader.js +7 -7
  321. package/dist/source-loader.js.map +1 -1
  322. package/dist/state-store-helpers.d.ts +2 -0
  323. package/dist/state-store-helpers.d.ts.map +1 -1
  324. package/dist/state-store-helpers.js +11 -1
  325. package/dist/state-store-helpers.js.map +1 -1
  326. package/dist/state-stores.d.ts +1 -0
  327. package/dist/state-stores.d.ts.map +1 -1
  328. package/dist/state-stores.js +26 -7
  329. package/dist/state-stores.js.map +1 -1
  330. package/dist/state.d.ts +305 -5
  331. package/dist/state.d.ts.map +1 -1
  332. package/dist/state.js +41 -2
  333. package/dist/state.js.map +1 -1
  334. package/dist/storage.d.ts +47 -2
  335. package/dist/storage.d.ts.map +1 -1
  336. package/dist/storage.js +158 -6
  337. package/dist/storage.js.map +1 -1
  338. package/dist/subagent-execution.d.ts +1 -1
  339. package/dist/subagent-execution.d.ts.map +1 -1
  340. package/dist/subagent-execution.js +10 -12
  341. package/dist/subagent-execution.js.map +1 -1
  342. package/dist/target-instructions.js +1 -1
  343. package/dist/target-instructions.js.map +1 -1
  344. package/dist/tool-apis.d.ts.map +1 -1
  345. package/dist/tool-apis.js +33 -9
  346. package/dist/tool-apis.js.map +1 -1
  347. package/dist/tool-execution.d.ts +22 -12
  348. package/dist/tool-execution.d.ts.map +1 -1
  349. package/dist/tool-execution.js +368 -238
  350. package/dist/tool-execution.js.map +1 -1
  351. package/dist/turn-media.d.ts +29 -0
  352. package/dist/turn-media.d.ts.map +1 -0
  353. package/dist/turn-media.js +233 -0
  354. package/dist/turn-media.js.map +1 -0
  355. package/dist/usage-reconciliation.d.ts +1 -1
  356. package/dist/usage-reconciliation.js +1 -1
  357. package/dist/workspace-id.d.ts +10 -0
  358. package/dist/workspace-id.d.ts.map +1 -0
  359. package/dist/workspace-id.js +55 -0
  360. package/dist/workspace-id.js.map +1 -0
  361. package/dist/workspace-manifest.d.ts +24 -0
  362. package/dist/workspace-manifest.d.ts.map +1 -0
  363. package/dist/workspace-manifest.js +111 -0
  364. package/dist/workspace-manifest.js.map +1 -0
  365. package/dist/workspace-operation-limiter.d.ts +16 -0
  366. package/dist/workspace-operation-limiter.d.ts.map +1 -0
  367. package/dist/workspace-operation-limiter.js +31 -0
  368. package/dist/workspace-operation-limiter.js.map +1 -0
  369. package/dist/workspace-operations.d.ts +145 -0
  370. package/dist/workspace-operations.d.ts.map +1 -0
  371. package/dist/workspace-operations.js +420 -0
  372. package/dist/workspace-operations.js.map +1 -0
  373. package/dist/workspace-runtime.d.ts +110 -0
  374. package/dist/workspace-runtime.d.ts.map +1 -0
  375. package/dist/workspace-runtime.js +240 -0
  376. package/dist/workspace-runtime.js.map +1 -0
  377. package/dist/workspace-search.d.ts +55 -0
  378. package/dist/workspace-search.d.ts.map +1 -0
  379. package/dist/workspace-search.js +262 -0
  380. package/dist/workspace-search.js.map +1 -0
  381. package/dist/workspace-service.d.ts +173 -0
  382. package/dist/workspace-service.d.ts.map +1 -0
  383. package/dist/workspace-service.js +619 -0
  384. package/dist/workspace-service.js.map +1 -0
  385. package/dist/workspace.d.ts +7 -0
  386. package/dist/workspace.d.ts.map +1 -0
  387. package/dist/workspace.js +7 -0
  388. package/dist/workspace.js.map +1 -0
  389. package/package.json +7 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-turn-coalescing.d.ts","sourceRoot":"","sources":["../src/conversation-turn-coalescing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,kCAAkC,6BAA6B,CAAC;AAC7E,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,eAAO,MAAM,mCAAmC,gCAAgC,CAAC;AACjF,eAAO,MAAM,qCAAqC,OAAQ,CAAC;AAE3D,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,qBAAqB,GAAG,SAAS,EAC7C,GAAG,EAAE,IAAI,GACR,+BAA+B,CAqBjC;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAM5F;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,CAOlG;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CAKvG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,CAK5E"}
@@ -0,0 +1,121 @@
1
+ export const QUEUED_CHANNEL_TURN_KEY = "__assemblyLineChannelTurn";
2
+ export const QUEUED_CHANNEL_TURN_COALESCING_KEY = "__assemblyLineCoalescing";
3
+ export const QUEUED_CHANNEL_TURN_PARTS_KEY = "__assemblyLineCoalescedTurns";
4
+ export const QUEUED_CHANNEL_TURN_MERGED_INTO_KEY = "__assemblyLineCoalescedInto";
5
+ export const MAX_CHANNEL_TURN_COALESCING_WINDOW_MS = 5_000;
6
+ export function prepareConversationTurnPayload(turn, coalescing, now) {
7
+ if (!coalescing)
8
+ return { payload: turn };
9
+ const key = coalescing.key.trim();
10
+ if (!key || !Number.isFinite(coalescing.windowMs) || coalescing.windowMs <= 0) {
11
+ return { payload: turn };
12
+ }
13
+ const windowMs = Math.min(MAX_CHANNEL_TURN_COALESCING_WINDOW_MS, Math.max(1, Math.floor(coalescing.windowMs)));
14
+ const deadlineAt = new Date(now.getTime() + windowMs).toISOString();
15
+ return {
16
+ payload: {
17
+ [QUEUED_CHANNEL_TURN_KEY]: turn,
18
+ [QUEUED_CHANNEL_TURN_COALESCING_KEY]: {
19
+ key,
20
+ deadlineAt
21
+ }
22
+ },
23
+ notBeforeAt: deadlineAt
24
+ };
25
+ }
26
+ export function conversationTurnCoalescing(payload) {
27
+ const raw = recordValue(payload[QUEUED_CHANNEL_TURN_COALESCING_KEY]);
28
+ const key = stringValue(raw?.key);
29
+ const deadlineAt = stringValue(raw?.deadlineAt);
30
+ if (!key || !deadlineAt || !Number.isFinite(Date.parse(deadlineAt)))
31
+ return undefined;
32
+ return { key, deadlineAt };
33
+ }
34
+ export function mergeConversationTurnPayloads(head, siblings) {
35
+ const coalescing = recordValue(head[QUEUED_CHANNEL_TURN_COALESCING_KEY]);
36
+ const turns = [head, ...siblings].flatMap(turnsFromPayload);
37
+ return {
38
+ [QUEUED_CHANNEL_TURN_PARTS_KEY]: turns,
39
+ ...(coalescing ? { [QUEUED_CHANNEL_TURN_COALESCING_KEY]: coalescing } : {})
40
+ };
41
+ }
42
+ export function markConversationTurnPayloadMerged(payload, targetTurnId) {
43
+ return {
44
+ ...payload,
45
+ [QUEUED_CHANNEL_TURN_MERGED_INTO_KEY]: targetTurnId
46
+ };
47
+ }
48
+ export function channelTurnFromQueuePayload(payload) {
49
+ const turns = turnsFromPayload(payload).map(channelTurnFromJson);
50
+ if (turns.length === 0)
51
+ throw new Error("Conversation turn payload contains no channel turns.");
52
+ if (turns.length === 1)
53
+ return turns[0];
54
+ return combineChannelTurns(turns);
55
+ }
56
+ function turnsFromPayload(payload) {
57
+ const parts = payload[QUEUED_CHANNEL_TURN_PARTS_KEY];
58
+ if (Array.isArray(parts))
59
+ return parts.flatMap((part) => {
60
+ const record = recordValue(part);
61
+ return record ? [record] : [];
62
+ });
63
+ const turn = recordValue(payload[QUEUED_CHANNEL_TURN_KEY]);
64
+ return [turn ?? payload];
65
+ }
66
+ function channelTurnFromJson(payload) {
67
+ if (typeof payload.eventId !== "string" ||
68
+ typeof payload.channel !== "string" ||
69
+ typeof payload.conversationId !== "string" ||
70
+ typeof payload.message !== "string") {
71
+ throw new Error("Persisted conversation turn payload is invalid.");
72
+ }
73
+ return payload;
74
+ }
75
+ function combineChannelTurns(turns) {
76
+ const first = turns[0];
77
+ const latest = turns.at(-1);
78
+ const eventIds = turns.map((turn) => turn.eventId);
79
+ const attachments = turns.flatMap((turn) => turn.attachments ?? []);
80
+ const messages = turns.map((turn) => turn.message.trim()).filter(Boolean);
81
+ const combined = {
82
+ ...first,
83
+ eventId: latest.eventId,
84
+ message: messages.join("\n\n"),
85
+ metadata: {
86
+ ...(latest.metadata ?? {}),
87
+ ingressComposition: {
88
+ eventIds,
89
+ count: turns.length,
90
+ firstEventId: first.eventId,
91
+ lastEventId: latest.eventId
92
+ }
93
+ }
94
+ };
95
+ if (latest.userId)
96
+ combined.userId = latest.userId;
97
+ if (latest.principal)
98
+ combined.principal = latest.principal;
99
+ if (latest.initiator)
100
+ combined.initiator = latest.initiator;
101
+ if (latest.audience)
102
+ combined.audience = latest.audience;
103
+ if (latest.delivery)
104
+ combined.delivery = latest.delivery;
105
+ if (latest.recentHistory)
106
+ combined.recentHistory = latest.recentHistory;
107
+ if (attachments.length > 0)
108
+ combined.attachments = attachments;
109
+ else
110
+ delete combined.attachments;
111
+ return combined;
112
+ }
113
+ function recordValue(value) {
114
+ return typeof value === "object" && value !== null && !Array.isArray(value)
115
+ ? value
116
+ : undefined;
117
+ }
118
+ function stringValue(value) {
119
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
120
+ }
121
+ //# sourceMappingURL=conversation-turn-coalescing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-turn-coalescing.js","sourceRoot":"","sources":["../src/conversation-turn-coalescing.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ChannelTurn } from "./channel.js";
1
+ import type { ChannelTurn, ChannelTurnCoalescing } from "./channel.js";
2
2
  import { RunCapacityError, type SemaphoreAdmission } from "./concurrency.js";
3
3
  import type { RuntimeLogger } from "./logging.js";
4
4
  import type { RunAgentResult } from "./runtime-types.js";
@@ -17,6 +17,7 @@ export interface EnqueueConversationTurnInput {
17
17
  turn: ChannelTurn;
18
18
  idempotencyScope: string;
19
19
  idempotencyKey: string;
20
+ coalescing?: ChannelTurnCoalescing;
20
21
  }
21
22
  /**
22
23
  * Runtime-owned dispatcher for accepted channel events. It serializes turns
@@ -27,11 +28,14 @@ export declare class ConversationTurnDispatcher {
27
28
  private readonly host;
28
29
  private drainPromise;
29
30
  private drainRequested;
31
+ private wakeTimer;
32
+ private wakeAtMs;
30
33
  constructor(host: ConversationTurnDispatchHost);
31
34
  enqueue(input: EnqueueConversationTurnInput): Promise<{
32
35
  inserted: boolean;
33
36
  record: ConversationTurnRecord;
34
37
  }>;
38
+ private scheduleDrain;
35
39
  requestDrain(): void;
36
40
  recover(): Promise<ConversationTurnRecord[]>;
37
41
  settleRunResult(result: RunAgentResult): Promise<ConversationTurnRecord | undefined>;
@@ -42,5 +46,4 @@ export declare class ConversationTurnDispatcher {
42
46
  private drain;
43
47
  private execute;
44
48
  }
45
- export declare function conversationTurnQueueStatus(run: RunRecord): "blocked" | "completed" | "failed" | "cancelled";
46
49
  //# sourceMappingURL=conversation-turn-dispatch.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"conversation-turn-dispatch.d.ts","sourceRoot":"","sources":["../src/conversation-turn-dispatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,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;AAOpB,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;IACvB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC;AA4BD;;;;GAIG;AACH,qBAAa,0BAA0B;IAMzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,QAAQ,CAAqB;gBAER,IAAI,EAAE,4BAA4B;IAEzD,OAAO,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAqBlH,OAAO,CAAC,aAAa;IAcrB,YAAY,IAAI,IAAI;IASd,OAAO,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAiC5C,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;CAwEtB"}
@@ -1,5 +1,7 @@
1
1
  import { RunCapacityError } from "./concurrency.js";
2
2
  import { safeJson } from "./json-util.js";
3
+ import { runUsesChannelReplyForHumanInput } from "./human-input-routing.js";
4
+ import { channelTurnFromQueuePayload, conversationTurnCoalescing, prepareConversationTurnPayload } from "./conversation-turn-coalescing.js";
3
5
  const TERMINAL_STATUSES = new Set(["completed", "failed", "cancelled"]);
4
6
  const PARKED_STATUSES = new Set([
5
7
  "waiting_for_approval",
@@ -14,17 +16,14 @@ function queueStatusForRun(run) {
14
16
  if (run.status === "completed" || run.status === "failed" || run.status === "cancelled") {
15
17
  return run.status;
16
18
  }
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.`);
19
+ // Reply-capable conversations must remain FIFO without being monopolized by
20
+ // an OAuth browser wait. The run remains durably resumable, but its ingress
21
+ // turn releases the mailbox; a completed callback re-enters through the same
22
+ // queue instead of resuming in parallel.
23
+ if (run.status === "waiting_for_connection" && runUsesChannelReplyForHumanInput(run)) {
24
+ return "completed";
26
25
  }
27
- return payload;
26
+ return "blocked";
28
27
  }
29
28
  /**
30
29
  * Runtime-owned dispatcher for accepted channel events. It serializes turns
@@ -35,22 +34,44 @@ export class ConversationTurnDispatcher {
35
34
  host;
36
35
  drainPromise;
37
36
  drainRequested = false;
37
+ wakeTimer;
38
+ wakeAtMs;
38
39
  constructor(host) {
39
40
  this.host = host;
40
41
  }
41
42
  async enqueue(input) {
43
+ const prepared = prepareConversationTurnPayload(safeJson(input.turn), input.coalescing, this.host.now());
42
44
  const queued = await this.host.state.enqueueConversationTurn({
43
45
  agentScope: this.host.agentScope,
44
46
  conversationId: input.turn.conversationId,
45
47
  channel: input.turn.channel,
46
48
  eventId: input.turn.eventId,
47
- payload: safeJson(input.turn),
49
+ payload: prepared.payload,
48
50
  idempotencyScope: input.idempotencyScope,
49
- idempotencyKey: input.idempotencyKey
51
+ idempotencyKey: input.idempotencyKey,
52
+ ...(prepared.notBeforeAt ? { notBeforeAt: prepared.notBeforeAt } : {})
50
53
  });
54
+ if (queued.inserted && prepared.notBeforeAt)
55
+ this.scheduleDrain(prepared.notBeforeAt);
51
56
  this.requestDrain();
52
57
  return { inserted: queued.inserted, record: queued.turn };
53
58
  }
59
+ scheduleDrain(notBeforeAt) {
60
+ const wakeAtMs = Date.parse(notBeforeAt);
61
+ if (!Number.isFinite(wakeAtMs))
62
+ return;
63
+ if (this.wakeTimer && this.wakeAtMs !== undefined && this.wakeAtMs <= wakeAtMs)
64
+ return;
65
+ if (this.wakeTimer)
66
+ clearTimeout(this.wakeTimer);
67
+ this.wakeAtMs = wakeAtMs;
68
+ this.wakeTimer = setTimeout(() => {
69
+ this.wakeTimer = undefined;
70
+ this.wakeAtMs = undefined;
71
+ this.requestDrain();
72
+ }, Math.max(0, wakeAtMs - Date.now()) + 1);
73
+ this.wakeTimer.unref?.();
74
+ }
54
75
  requestDrain() {
55
76
  this.drainRequested = true;
56
77
  if (this.drainPromise)
@@ -62,16 +83,25 @@ export class ConversationTurnDispatcher {
62
83
  });
63
84
  }
64
85
  async recover() {
65
- const recovered = await this.host.state.recoverExpiredConversationTurns(this.host.now());
86
+ const now = this.host.now();
87
+ const recovered = await this.host.state.recoverExpiredConversationTurns(now);
88
+ // Running turns have a lease owner which is solely responsible for their
89
+ // settlement. Recovery may converge blocked turns after an external
90
+ // resume/cancel, but must never clear a live dispatcher's lease.
66
91
  const active = (await Promise.all([
67
92
  this.host.state.listConversationTurns({ agentScope: this.host.agentScope, status: "running" }),
68
93
  this.host.state.listConversationTurns({ agentScope: this.host.agentScope, status: "blocked" })
69
- ])).flat().filter((turn) => turn.runId);
94
+ ])).flat().filter((turn) => turn.runId && (turn.status === "blocked" ||
95
+ !turn.leaseExpiresAt ||
96
+ turn.leaseExpiresAt <= now.toISOString()));
70
97
  for (const turn of active) {
71
98
  const run = await this.host.state.getRun(turn.runId);
72
99
  if (!run || (!TERMINAL_STATUSES.has(run.status) && !PARKED_STATUSES.has(run.status)))
73
100
  continue;
74
- const settled = await this.host.state.settleConversationTurnByRunId(run.id, queueStatusForRun(run), run.terminalError ? { error: run.terminalError } : undefined);
101
+ const settled = await this.host.state.settleConversationTurnByRunId(run.id, queueStatusForRun(run), {
102
+ ...(run.terminalError ? { error: run.terminalError } : {}),
103
+ expiredBefore: now.toISOString()
104
+ });
75
105
  if (settled)
76
106
  recovered.push(settled);
77
107
  }
@@ -138,7 +168,8 @@ export class ConversationTurnDispatcher {
138
168
  void this.execute(record, admission);
139
169
  }
140
170
  }
141
- async execute(record, admission) {
171
+ async execute(initialRecord, admission) {
172
+ let record = initialRecord;
142
173
  const leaseToken = record.leaseToken;
143
174
  if (!leaseToken) {
144
175
  admission.release();
@@ -146,7 +177,18 @@ export class ConversationTurnDispatcher {
146
177
  }
147
178
  let runId;
148
179
  try {
149
- const turn = channelTurnFromPayload(record);
180
+ const merged = conversationTurnCoalescing(record.payload)
181
+ ? await this.host.state.mergePendingConversationTurns(record.id, leaseToken)
182
+ : undefined;
183
+ if (merged) {
184
+ record = merged.turn;
185
+ this.host.logger.info("conversation turns coalesced", {
186
+ turnId: record.id,
187
+ conversationId: record.conversationId,
188
+ mergedEventIds: merged.merged.map((turn) => turn.eventId)
189
+ });
190
+ }
191
+ const turn = channelTurnFromQueuePayload(record.payload);
150
192
  const result = await this.host.runTurn(turn, admission, async (run) => {
151
193
  runId = run.id;
152
194
  await this.host.state.attachConversationTurnRun(record.id, leaseToken, run.id);
@@ -193,9 +235,4 @@ export class ConversationTurnDispatcher {
193
235
  }
194
236
  }
195
237
  }
196
- export function conversationTurnQueueStatus(run) {
197
- if (PARKED_STATUSES.has(run.status))
198
- return "blocked";
199
- return queueStatusForRun(run);
200
- }
201
238
  //# sourceMappingURL=conversation-turn-dispatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-turn-dispatch.js","sourceRoot":"","sources":["../src/conversation-turn-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-turn-dispatch.js","sourceRoot":"","sources":["../src/conversation-turn-dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { AgentAudience, AgentManifest, AgentPrincipal, JsonObject, JsonValue } from "@assemblyline-agents/core";
2
+ import type { RunAgentOptions } from "./runtime-types.js";
3
+ import type { RuntimeSettingsStore } from "./state.js";
4
+ declare const DEFAULT_OUTBOUND_ROUTE_VERSION = 2;
5
+ export interface DefaultOutboundRoute {
6
+ version: typeof DEFAULT_OUTBOUND_ROUTE_VERSION;
7
+ channel: string;
8
+ updatedAt: string;
9
+ conversationId?: string;
10
+ delivery?: JsonObject;
11
+ userId?: string;
12
+ principal?: AgentPrincipal;
13
+ initiator?: AgentPrincipal;
14
+ audience: AgentAudience;
15
+ projectId?: string;
16
+ workspaceId?: string;
17
+ tenantId?: string;
18
+ }
19
+ export declare function defaultOutboundRouteSettingKey(channel: string): string;
20
+ export declare function rememberDefaultOutboundRoute(context: {
21
+ manifest: AgentManifest;
22
+ state: RuntimeSettingsStore;
23
+ agentScope: string;
24
+ now: Date;
25
+ }, options: RunAgentOptions, input: JsonObject): Promise<void>;
26
+ export declare function loadDefaultOutboundRoute(state: RuntimeSettingsStore, agentScope: string, channel: string): Promise<DefaultOutboundRoute | undefined>;
27
+ export declare function parseDefaultOutboundRoute(value: JsonValue, channel: string): DefaultOutboundRoute | undefined;
28
+ export {};
29
+ //# sourceMappingURL=default-outbound-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-outbound-route.d.ts","sourceRoot":"","sources":["../src/default-outbound-route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAErH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD,QAAA,MAAM,8BAA8B,IAAI,CAAC;AAEzC,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,8BAA8B,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,EAChG,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAQ3C;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CA+B7G"}
@@ -0,0 +1,105 @@
1
+ import { normalizeAgentPrincipal } from "./principals.js";
2
+ import { isJsonObject } from "./json-util.js";
3
+ import { normalizeAgentAudience } from "./audience.js";
4
+ const DEFAULT_OUTBOUND_ROUTE_VERSION = 2;
5
+ export function defaultOutboundRouteSettingKey(channel) {
6
+ return `default-outbound-route:${channel}`;
7
+ }
8
+ export async function rememberDefaultOutboundRoute(context, options, input) {
9
+ const defaultChannel = context.manifest.agent.defaultOutboundChannel?.trim();
10
+ const metadata = isJsonObject(input.metadata) ? input.metadata : {};
11
+ if (!defaultChannel
12
+ || options.existingRun
13
+ || !options.turn
14
+ || input.channel !== defaultChannel
15
+ || typeof metadata.schedule === "string")
16
+ return;
17
+ const conversationId = typeof input.conversationId === "string" ? input.conversationId : undefined;
18
+ const delivery = isJsonObject(input.delivery) ? input.delivery : undefined;
19
+ if (!conversationId && !delivery)
20
+ return;
21
+ const route = {
22
+ version: DEFAULT_OUTBOUND_ROUTE_VERSION,
23
+ channel: defaultChannel,
24
+ updatedAt: context.now.toISOString()
25
+ };
26
+ const audience = normalizeAgentAudience(input.audience);
27
+ if (!audience)
28
+ return;
29
+ route.audience = audience;
30
+ if (conversationId)
31
+ route.conversationId = conversationId;
32
+ if (delivery)
33
+ route.delivery = structuredClone(delivery);
34
+ if (typeof input.userId === "string")
35
+ route.userId = input.userId;
36
+ if (isJsonObject(input.principal))
37
+ route.principal = structuredClone(input.principal);
38
+ if (isJsonObject(input.initiator))
39
+ route.initiator = structuredClone(input.initiator);
40
+ if (typeof input.projectId === "string")
41
+ route.projectId = input.projectId;
42
+ if (typeof input.workspaceId === "string")
43
+ route.workspaceId = input.workspaceId;
44
+ if (typeof input.tenantId === "string")
45
+ route.tenantId = input.tenantId;
46
+ await context.state.setSetting(context.agentScope, defaultOutboundRouteSettingKey(defaultChannel), route);
47
+ }
48
+ export async function loadDefaultOutboundRoute(state, agentScope, channel) {
49
+ const setting = await state.getSetting(agentScope, defaultOutboundRouteSettingKey(channel));
50
+ if (!setting)
51
+ return undefined;
52
+ const route = parseDefaultOutboundRoute(setting.value, channel);
53
+ if (!route) {
54
+ throw new Error(`Default outbound channel "${channel}" has an invalid saved route. Send the agent a message on that channel again.`);
55
+ }
56
+ return route;
57
+ }
58
+ export function parseDefaultOutboundRoute(value, channel) {
59
+ if (!isJsonObject(value) || value.version !== DEFAULT_OUTBOUND_ROUTE_VERSION || value.channel !== channel)
60
+ return undefined;
61
+ const updatedAt = requiredString(value.updatedAt);
62
+ if (!updatedAt || Number.isNaN(Date.parse(updatedAt)))
63
+ return undefined;
64
+ if (!validOptionalStrings(value, ["conversationId", "userId", "projectId", "workspaceId", "tenantId"]))
65
+ return undefined;
66
+ const conversationId = requiredString(value.conversationId);
67
+ const userId = requiredString(value.userId);
68
+ const projectId = requiredString(value.projectId);
69
+ const workspaceId = requiredString(value.workspaceId);
70
+ const tenantId = requiredString(value.tenantId);
71
+ if (value.delivery !== undefined && !isJsonObject(value.delivery))
72
+ return undefined;
73
+ const delivery = isJsonObject(value.delivery) ? structuredClone(value.delivery) : undefined;
74
+ if (!conversationId && !delivery)
75
+ return undefined;
76
+ const principal = normalizeOptionalPrincipal(value.principal);
77
+ const initiator = normalizeOptionalPrincipal(value.initiator);
78
+ const audience = normalizeAgentAudience(value.audience);
79
+ if (principal === false || initiator === false || !audience)
80
+ return undefined;
81
+ return {
82
+ version: DEFAULT_OUTBOUND_ROUTE_VERSION,
83
+ channel,
84
+ updatedAt,
85
+ audience,
86
+ ...(conversationId ? { conversationId } : {}),
87
+ ...(delivery ? { delivery } : {}),
88
+ ...(userId ? { userId } : {}),
89
+ ...(principal ? { principal } : {}),
90
+ ...(initiator ? { initiator } : {}),
91
+ ...(projectId ? { projectId } : {}),
92
+ ...(workspaceId ? { workspaceId } : {}),
93
+ ...(tenantId ? { tenantId } : {})
94
+ };
95
+ }
96
+ function validOptionalStrings(value, keys) {
97
+ return keys.every((key) => value[key] === undefined || requiredString(value[key]) !== undefined);
98
+ }
99
+ function requiredString(value) {
100
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
101
+ }
102
+ function normalizeOptionalPrincipal(value) {
103
+ return value === undefined ? undefined : normalizeAgentPrincipal(value) ?? false;
104
+ }
105
+ //# sourceMappingURL=default-outbound-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-outbound-route.js","sourceRoot":"","sources":["../src/default-outbound-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function internalDeliveryArtifactReason(relativePath: string): "internal_directory" | "internal_file" | undefined;
2
+ //# sourceMappingURL=delivery-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-artifacts.d.ts","sourceRoot":"","sources":["../src/delivery-artifacts.ts"],"names":[],"mappings":"AAmBA,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,CAiBvH"}
@@ -0,0 +1,34 @@
1
+ /** Workspace paths that are implementation byproducts, not user-facing artifacts. */
2
+ const INTERNAL_DIRECTORY_NAMES = new Set([
3
+ "__pycache__",
4
+ "node_modules",
5
+ ".git",
6
+ ".hg",
7
+ ".svn",
8
+ ".cache",
9
+ ".mypy_cache",
10
+ ".pytest_cache",
11
+ ".ruff_cache",
12
+ ".tox",
13
+ ".venv",
14
+ "venv"
15
+ ]);
16
+ const INTERNAL_FILE_NAMES = new Set([".ds_store"]);
17
+ const INTERNAL_FILE_SUFFIXES = [".pyc", ".pyo", ".swp", ".swo"];
18
+ export function internalDeliveryArtifactReason(relativePath) {
19
+ const normalized = relativePath.replaceAll("\\", "/");
20
+ const segments = normalized.split("/").filter(Boolean);
21
+ if (segments.some((segment) => INTERNAL_DIRECTORY_NAMES.has(segment.toLowerCase()))) {
22
+ return "internal_directory";
23
+ }
24
+ const filename = segments.at(-1)?.toLowerCase() ?? "";
25
+ if (INTERNAL_FILE_NAMES.has(filename) ||
26
+ INTERNAL_FILE_SUFFIXES.some((suffix) => filename.endsWith(suffix)) ||
27
+ filename.startsWith("~$") ||
28
+ filename.startsWith(".~lock.") ||
29
+ filename.endsWith("~")) {
30
+ return "internal_file";
31
+ }
32
+ return undefined;
33
+ }
34
+ //# sourceMappingURL=delivery-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-artifacts.js","sourceRoot":"","sources":["../src/delivery-artifacts.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,aAAa;IACb,cAAc;IACd,MAAM;IACN,KAAK;IACL,MAAM;IACN,QAAQ;IACR,aAAa;IACb,eAAe;IACf,aAAa;IACb,MAAM;IACN,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACnD,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhE,MAAM,UAAU,8BAA8B,CAAC,YAAoB;IACjE,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACtD,IACE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QACzB,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EACtB,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { JsonObject } from "@assemblyline-agents/core";
2
+ /** Return each logical delivery file once even when it is mirrored in files/artifacts. */
3
+ export declare function deliveryFileEntries(payload: JsonObject): JsonObject[];
4
+ export declare function deliveryFileNames(payload: JsonObject): string[];
5
+ //# sourceMappingURL=delivery-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-files.d.ts","sourceRoot":"","sources":["../src/delivery-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,EAAE,CAmBrE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,EAAE,CAO/D"}
@@ -0,0 +1,33 @@
1
+ import { isJsonObject } from "./json-util.js";
2
+ /** Return each logical delivery file once even when it is mirrored in files/artifacts. */
3
+ export function deliveryFileEntries(payload) {
4
+ const files = [];
5
+ const seen = new Set();
6
+ for (const value of [payload.files, payload.artifacts, payload.attachments]) {
7
+ if (!Array.isArray(value))
8
+ continue;
9
+ for (const item of value) {
10
+ if (!isJsonObject(item))
11
+ continue;
12
+ const identity = stringValue(item.blobKey)
13
+ ?? stringValue(item.url)
14
+ ?? stringValue(item.path)
15
+ ?? JSON.stringify(item);
16
+ if (seen.has(identity))
17
+ continue;
18
+ seen.add(identity);
19
+ files.push(item);
20
+ }
21
+ }
22
+ return files;
23
+ }
24
+ export function deliveryFileNames(payload) {
25
+ return deliveryFileEntries(payload).map((file, index) => stringValue(file.filename)
26
+ ?? stringValue(file.name)
27
+ ?? stringValue(file.path)?.split("/").filter(Boolean).at(-1)
28
+ ?? `file ${index + 1}`);
29
+ }
30
+ function stringValue(value) {
31
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
32
+ }
33
+ //# sourceMappingURL=delivery-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-files.js","sourceRoot":"","sources":["../src/delivery-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACrD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;mBACrC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;mBACrB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;mBACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACnD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACtD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;WACrB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;WACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;WACzD,QAAQ,KAAK,GAAG,CAAC,EAAE,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC"}