@assemblyline-agents/runtime 1.0.0 → 3.0.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 (460) 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-capability-snapshot.d.ts +32 -0
  7. package/dist/agent-capability-snapshot.d.ts.map +1 -0
  8. package/dist/agent-capability-snapshot.js +77 -0
  9. package/dist/agent-capability-snapshot.js.map +1 -0
  10. package/dist/agent-event-handlers.d.ts +21 -0
  11. package/dist/agent-event-handlers.d.ts.map +1 -0
  12. package/dist/agent-event-handlers.js +64 -0
  13. package/dist/agent-event-handlers.js.map +1 -0
  14. package/dist/agent-hook-context.d.ts +8 -0
  15. package/dist/agent-hook-context.d.ts.map +1 -0
  16. package/dist/agent-hook-context.js +29 -0
  17. package/dist/agent-hook-context.js.map +1 -0
  18. package/dist/agent-hook-evaluation.d.ts +61 -0
  19. package/dist/agent-hook-evaluation.d.ts.map +1 -0
  20. package/dist/agent-hook-evaluation.js +197 -0
  21. package/dist/agent-hook-evaluation.js.map +1 -0
  22. package/dist/agent-hook-run-lifecycle.d.ts +44 -0
  23. package/dist/agent-hook-run-lifecycle.d.ts.map +1 -0
  24. package/dist/agent-hook-run-lifecycle.js +76 -0
  25. package/dist/agent-hook-run-lifecycle.js.map +1 -0
  26. package/dist/agent-state.d.ts +31 -0
  27. package/dist/agent-state.d.ts.map +1 -0
  28. package/dist/agent-state.js +80 -0
  29. package/dist/agent-state.js.map +1 -0
  30. package/dist/agent-surface.d.ts +32 -0
  31. package/dist/agent-surface.d.ts.map +1 -0
  32. package/dist/agent-surface.js +85 -0
  33. package/dist/agent-surface.js.map +1 -0
  34. package/dist/attachments.d.ts +5 -1
  35. package/dist/attachments.d.ts.map +1 -1
  36. package/dist/attachments.js +58 -32
  37. package/dist/attachments.js.map +1 -1
  38. package/dist/audience.d.ts +30 -0
  39. package/dist/audience.d.ts.map +1 -0
  40. package/dist/audience.js +68 -0
  41. package/dist/audience.js.map +1 -0
  42. package/dist/authored-hooks.d.ts +6 -0
  43. package/dist/authored-hooks.d.ts.map +1 -0
  44. package/dist/authored-hooks.js +17 -0
  45. package/dist/authored-hooks.js.map +1 -0
  46. package/dist/automation-event-match.d.ts +8 -0
  47. package/dist/automation-event-match.d.ts.map +1 -0
  48. package/dist/automation-event-match.js +25 -0
  49. package/dist/automation-event-match.js.map +1 -0
  50. package/dist/background-review-trigger.d.ts +9 -0
  51. package/dist/background-review-trigger.d.ts.map +1 -0
  52. package/dist/background-review-trigger.js +72 -0
  53. package/dist/background-review-trigger.js.map +1 -0
  54. package/dist/background-review-types.d.ts +60 -0
  55. package/dist/background-review-types.d.ts.map +1 -0
  56. package/dist/background-review-types.js +2 -0
  57. package/dist/background-review-types.js.map +1 -0
  58. package/dist/background-review-worker.d.ts +14 -0
  59. package/dist/background-review-worker.d.ts.map +1 -0
  60. package/dist/background-review-worker.js +61 -0
  61. package/dist/background-review-worker.js.map +1 -0
  62. package/dist/background-review.d.ts +5 -0
  63. package/dist/background-review.d.ts.map +1 -0
  64. package/dist/background-review.js +332 -0
  65. package/dist/background-review.js.map +1 -0
  66. package/dist/builtin-tool-executors.d.ts +50 -27
  67. package/dist/builtin-tool-executors.d.ts.map +1 -1
  68. package/dist/builtin-tool-executors.js +332 -124
  69. package/dist/builtin-tool-executors.js.map +1 -1
  70. package/dist/builtin-tools.d.ts +16 -9
  71. package/dist/builtin-tools.d.ts.map +1 -1
  72. package/dist/builtin-tools.js +308 -116
  73. package/dist/builtin-tools.js.map +1 -1
  74. package/dist/capability-catalog.d.ts +3 -2
  75. package/dist/capability-catalog.d.ts.map +1 -1
  76. package/dist/capability-catalog.js +12 -7
  77. package/dist/capability-catalog.js.map +1 -1
  78. package/dist/capability-inspection.d.ts +31 -0
  79. package/dist/capability-inspection.d.ts.map +1 -0
  80. package/dist/capability-inspection.js +58 -0
  81. package/dist/capability-inspection.js.map +1 -0
  82. package/dist/channel-http-util.d.ts.map +1 -1
  83. package/dist/channel-http-util.js +6 -5
  84. package/dist/channel-http-util.js.map +1 -1
  85. package/dist/channel-ingress.d.ts +16 -1
  86. package/dist/channel-ingress.d.ts.map +1 -1
  87. package/dist/channel-ingress.js +152 -14
  88. package/dist/channel-ingress.js.map +1 -1
  89. package/dist/channel.d.ts +73 -3
  90. package/dist/channel.d.ts.map +1 -1
  91. package/dist/checkpoints.d.ts +1 -1
  92. package/dist/checkpoints.d.ts.map +1 -1
  93. package/dist/checkpoints.js +6 -6
  94. package/dist/checkpoints.js.map +1 -1
  95. package/dist/child-process-env.d.ts +7 -0
  96. package/dist/child-process-env.d.ts.map +1 -0
  97. package/dist/child-process-env.js +41 -0
  98. package/dist/child-process-env.js.map +1 -0
  99. package/dist/computer-relay-protocol.d.ts.map +1 -1
  100. package/dist/computer-relay-protocol.js +4 -4
  101. package/dist/computer-relay-protocol.js.map +1 -1
  102. package/dist/concurrency.d.ts +1 -1
  103. package/dist/concurrency.js +1 -1
  104. package/dist/connection-auth-util.d.ts +1 -0
  105. package/dist/connection-auth-util.d.ts.map +1 -1
  106. package/dist/connection-auth-util.js +3 -1
  107. package/dist/connection-auth-util.js.map +1 -1
  108. package/dist/connection-clients.d.ts +11 -3
  109. package/dist/connection-clients.d.ts.map +1 -1
  110. package/dist/connection-clients.js +71 -8
  111. package/dist/connection-clients.js.map +1 -1
  112. package/dist/connection-event-store.d.ts +98 -0
  113. package/dist/connection-event-store.d.ts.map +1 -0
  114. package/dist/connection-event-store.js +162 -0
  115. package/dist/connection-event-store.js.map +1 -0
  116. package/dist/connection-events.d.ts +51 -0
  117. package/dist/connection-events.d.ts.map +1 -0
  118. package/dist/connection-events.js +343 -0
  119. package/dist/connection-events.js.map +1 -0
  120. package/dist/connection-stores.d.ts +6 -0
  121. package/dist/connection-stores.d.ts.map +1 -1
  122. package/dist/connection-stores.js +20 -1
  123. package/dist/connection-stores.js.map +1 -1
  124. package/dist/connection-util.d.ts +3 -2
  125. package/dist/connection-util.d.ts.map +1 -1
  126. package/dist/connection-util.js +18 -1
  127. package/dist/connection-util.js.map +1 -1
  128. package/dist/connections.d.ts +60 -5
  129. package/dist/connections.d.ts.map +1 -1
  130. package/dist/connections.js +390 -57
  131. package/dist/connections.js.map +1 -1
  132. package/dist/context-policy-util.d.ts.map +1 -1
  133. package/dist/context-policy-util.js +1 -3
  134. package/dist/context-policy-util.js.map +1 -1
  135. package/dist/conversation-context.d.ts +9 -4
  136. package/dist/conversation-context.d.ts.map +1 -1
  137. package/dist/conversation-context.js +65 -19
  138. package/dist/conversation-context.js.map +1 -1
  139. package/dist/conversation-transcript.d.ts +8 -5
  140. package/dist/conversation-transcript.d.ts.map +1 -1
  141. package/dist/conversation-transcript.js +24 -5
  142. package/dist/conversation-transcript.js.map +1 -1
  143. package/dist/conversation-turn-coalescing.d.ts +22 -0
  144. package/dist/conversation-turn-coalescing.d.ts.map +1 -0
  145. package/dist/conversation-turn-coalescing.js +121 -0
  146. package/dist/conversation-turn-coalescing.js.map +1 -0
  147. package/dist/conversation-turn-dispatch.d.ts +5 -2
  148. package/dist/conversation-turn-dispatch.d.ts.map +1 -1
  149. package/dist/conversation-turn-dispatch.js +59 -22
  150. package/dist/conversation-turn-dispatch.js.map +1 -1
  151. package/dist/default-outbound-route.d.ts +29 -0
  152. package/dist/default-outbound-route.d.ts.map +1 -0
  153. package/dist/default-outbound-route.js +105 -0
  154. package/dist/default-outbound-route.js.map +1 -0
  155. package/dist/delivery-artifacts.d.ts +2 -0
  156. package/dist/delivery-artifacts.d.ts.map +1 -0
  157. package/dist/delivery-artifacts.js +34 -0
  158. package/dist/delivery-artifacts.js.map +1 -0
  159. package/dist/delivery-files.d.ts +5 -0
  160. package/dist/delivery-files.d.ts.map +1 -0
  161. package/dist/delivery-files.js +33 -0
  162. package/dist/delivery-files.js.map +1 -0
  163. package/dist/delivery-queue.d.ts +21 -1
  164. package/dist/delivery-queue.d.ts.map +1 -1
  165. package/dist/delivery-queue.js +144 -1
  166. package/dist/delivery-queue.js.map +1 -1
  167. package/dist/delivery-send.d.ts +2 -2
  168. package/dist/delivery-send.d.ts.map +1 -1
  169. package/dist/delivery-send.js +256 -100
  170. package/dist/delivery-send.js.map +1 -1
  171. package/dist/durable-files.d.ts +37 -0
  172. package/dist/durable-files.d.ts.map +1 -0
  173. package/dist/durable-files.js +63 -0
  174. package/dist/durable-files.js.map +1 -0
  175. package/dist/harness-loop.d.ts +18 -9
  176. package/dist/harness-loop.d.ts.map +1 -1
  177. package/dist/harness-loop.js +245 -50
  178. package/dist/harness-loop.js.map +1 -1
  179. package/dist/heic-transcode-worker.d.ts +2 -0
  180. package/dist/heic-transcode-worker.d.ts.map +1 -0
  181. package/dist/heic-transcode-worker.js +59 -0
  182. package/dist/heic-transcode-worker.js.map +1 -0
  183. package/dist/heic-transcode.d.ts +18 -0
  184. package/dist/heic-transcode.d.ts.map +1 -0
  185. package/dist/heic-transcode.js +99 -0
  186. package/dist/heic-transcode.js.map +1 -0
  187. package/dist/human-input-routing.d.ts +22 -0
  188. package/dist/human-input-routing.d.ts.map +1 -0
  189. package/dist/human-input-routing.js +26 -0
  190. package/dist/human-input-routing.js.map +1 -0
  191. package/dist/in-memory-agent-state-store.d.ts +21 -0
  192. package/dist/in-memory-agent-state-store.d.ts.map +1 -0
  193. package/dist/in-memory-agent-state-store.js +97 -0
  194. package/dist/in-memory-agent-state-store.js.map +1 -0
  195. package/dist/in-memory-conversation-turn-store.d.ts +3 -1
  196. package/dist/in-memory-conversation-turn-store.d.ts.map +1 -1
  197. package/dist/in-memory-conversation-turn-store.js +41 -2
  198. package/dist/in-memory-conversation-turn-store.js.map +1 -1
  199. package/dist/in-memory-run-store.d.ts +8 -0
  200. package/dist/in-memory-run-store.d.ts.map +1 -1
  201. package/dist/in-memory-run-store.js +28 -5
  202. package/dist/in-memory-run-store.js.map +1 -1
  203. package/dist/in-memory-sandbox-session-store.d.ts +2 -1
  204. package/dist/in-memory-sandbox-session-store.d.ts.map +1 -1
  205. package/dist/in-memory-sandbox-session-store.js +65 -1
  206. package/dist/in-memory-sandbox-session-store.js.map +1 -1
  207. package/dist/in-memory-small-stores.d.ts +18 -1
  208. package/dist/in-memory-small-stores.d.ts.map +1 -1
  209. package/dist/in-memory-small-stores.js +107 -1
  210. package/dist/in-memory-small-stores.js.map +1 -1
  211. package/dist/in-memory-workspace-store.d.ts +40 -0
  212. package/dist/in-memory-workspace-store.d.ts.map +1 -0
  213. package/dist/in-memory-workspace-store.js +370 -0
  214. package/dist/in-memory-workspace-store.js.map +1 -0
  215. package/dist/index.d.ts +116 -45
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +637 -566
  218. package/dist/index.js.map +1 -1
  219. package/dist/json-util.d.ts +8 -0
  220. package/dist/json-util.d.ts.map +1 -1
  221. package/dist/json-util.js +8 -0
  222. package/dist/json-util.js.map +1 -1
  223. package/dist/learning-store.d.ts +111 -0
  224. package/dist/learning-store.d.ts.map +1 -0
  225. package/dist/learning-store.js +193 -0
  226. package/dist/learning-store.js.map +1 -0
  227. package/dist/local-sandbox.d.ts +3 -2
  228. package/dist/local-sandbox.d.ts.map +1 -1
  229. package/dist/local-sandbox.js +69 -25
  230. package/dist/local-sandbox.js.map +1 -1
  231. package/dist/mcp-client.d.ts.map +1 -1
  232. package/dist/mcp-client.js +3 -2
  233. package/dist/mcp-client.js.map +1 -1
  234. package/dist/media-processor.d.ts +42 -0
  235. package/dist/media-processor.d.ts.map +1 -0
  236. package/dist/media-processor.js +2 -0
  237. package/dist/media-processor.js.map +1 -0
  238. package/dist/model-media.d.ts +13 -1
  239. package/dist/model-media.d.ts.map +1 -1
  240. package/dist/model-media.js +81 -18
  241. package/dist/model-media.js.map +1 -1
  242. package/dist/model-visible-interrupts.d.ts +10 -0
  243. package/dist/model-visible-interrupts.d.ts.map +1 -0
  244. package/dist/model-visible-interrupts.js +41 -0
  245. package/dist/model-visible-interrupts.js.map +1 -0
  246. package/dist/operator-controls.d.ts.map +1 -1
  247. package/dist/operator-controls.js +16 -3
  248. package/dist/operator-controls.js.map +1 -1
  249. package/dist/outbound-http-policy.d.ts +7 -0
  250. package/dist/outbound-http-policy.d.ts.map +1 -0
  251. package/dist/outbound-http-policy.js +155 -0
  252. package/dist/outbound-http-policy.js.map +1 -0
  253. package/dist/principals.d.ts +18 -0
  254. package/dist/principals.d.ts.map +1 -0
  255. package/dist/principals.js +90 -0
  256. package/dist/principals.js.map +1 -0
  257. package/dist/public-api.d.ts +21 -0
  258. package/dist/public-api.d.ts.map +1 -0
  259. package/dist/public-api.js +19 -0
  260. package/dist/public-api.js.map +1 -0
  261. package/dist/replay-resume.d.ts +15 -3
  262. package/dist/replay-resume.d.ts.map +1 -1
  263. package/dist/replay-resume.js +256 -24
  264. package/dist/replay-resume.js.map +1 -1
  265. package/dist/resource-projection-util.d.ts +1 -1
  266. package/dist/resource-projection-util.d.ts.map +1 -1
  267. package/dist/resource-projection-util.js +21 -10
  268. package/dist/resource-projection-util.js.map +1 -1
  269. package/dist/resource-projection.d.ts +8 -1
  270. package/dist/resource-projection.d.ts.map +1 -1
  271. package/dist/resource-projection.js +230 -26
  272. package/dist/resource-projection.js.map +1 -1
  273. package/dist/run-heartbeat.d.ts +12 -2
  274. package/dist/run-heartbeat.d.ts.map +1 -1
  275. package/dist/run-heartbeat.js +31 -4
  276. package/dist/run-heartbeat.js.map +1 -1
  277. package/dist/run-outcome.d.ts +9 -5
  278. package/dist/run-outcome.d.ts.map +1 -1
  279. package/dist/run-outcome.js +16 -5
  280. package/dist/run-outcome.js.map +1 -1
  281. package/dist/run-recovery.d.ts +31 -2
  282. package/dist/run-recovery.d.ts.map +1 -1
  283. package/dist/run-recovery.js +211 -32
  284. package/dist/run-recovery.js.map +1 -1
  285. package/dist/run-replay.d.ts +35 -0
  286. package/dist/run-replay.d.ts.map +1 -0
  287. package/dist/run-replay.js +193 -0
  288. package/dist/run-replay.js.map +1 -0
  289. package/dist/run-result.d.ts +4 -0
  290. package/dist/run-result.d.ts.map +1 -0
  291. package/dist/run-result.js +18 -0
  292. package/dist/run-result.js.map +1 -0
  293. package/dist/run-timeline-query.d.ts +38 -0
  294. package/dist/run-timeline-query.d.ts.map +1 -0
  295. package/dist/run-timeline-query.js +99 -0
  296. package/dist/run-timeline-query.js.map +1 -0
  297. package/dist/runs-query.d.ts.map +1 -1
  298. package/dist/runs-query.js +12 -4
  299. package/dist/runs-query.js.map +1 -1
  300. package/dist/runtime-bundle.d.ts.map +1 -1
  301. package/dist/runtime-bundle.js +2 -0
  302. package/dist/runtime-bundle.js.map +1 -1
  303. package/dist/runtime-learning.d.ts +88 -0
  304. package/dist/runtime-learning.d.ts.map +1 -0
  305. package/dist/runtime-learning.js +260 -0
  306. package/dist/runtime-learning.js.map +1 -0
  307. package/dist/runtime-types.d.ts +79 -10
  308. package/dist/runtime-types.d.ts.map +1 -1
  309. package/dist/sandbox-fs.d.ts +9 -5
  310. package/dist/sandbox-fs.d.ts.map +1 -1
  311. package/dist/sandbox-fs.js +50 -33
  312. package/dist/sandbox-fs.js.map +1 -1
  313. package/dist/sandbox-handle.d.ts +25 -0
  314. package/dist/sandbox-handle.d.ts.map +1 -0
  315. package/dist/sandbox-handle.js +120 -0
  316. package/dist/sandbox-handle.js.map +1 -0
  317. package/dist/sandbox-session-identity.d.ts +14 -0
  318. package/dist/sandbox-session-identity.d.ts.map +1 -0
  319. package/dist/sandbox-session-identity.js +33 -0
  320. package/dist/sandbox-session-identity.js.map +1 -0
  321. package/dist/sandbox-session-key.d.ts.map +1 -1
  322. package/dist/sandbox-session-key.js +14 -10
  323. package/dist/sandbox-session-key.js.map +1 -1
  324. package/dist/sandbox-session-lifecycle.d.ts +12 -0
  325. package/dist/sandbox-session-lifecycle.d.ts.map +1 -0
  326. package/dist/sandbox-session-lifecycle.js +261 -0
  327. package/dist/sandbox-session-lifecycle.js.map +1 -0
  328. package/dist/sandbox-snapshot-policy.js +3 -3
  329. package/dist/sandbox-snapshot-policy.js.map +1 -1
  330. package/dist/sandbox-state-sync.d.ts +22 -0
  331. package/dist/sandbox-state-sync.d.ts.map +1 -0
  332. package/dist/sandbox-state-sync.js +147 -0
  333. package/dist/sandbox-state-sync.js.map +1 -0
  334. package/dist/sandbox-sync-worker.d.ts +11 -2
  335. package/dist/sandbox-sync-worker.d.ts.map +1 -1
  336. package/dist/sandbox-sync-worker.js +143 -31
  337. package/dist/sandbox-sync-worker.js.map +1 -1
  338. package/dist/schedule-execution.d.ts.map +1 -1
  339. package/dist/schedule-execution.js +187 -57
  340. package/dist/schedule-execution.js.map +1 -1
  341. package/dist/sdk-api-client.d.ts +17 -0
  342. package/dist/sdk-api-client.d.ts.map +1 -0
  343. package/dist/sdk-api-client.js +55 -0
  344. package/dist/sdk-api-client.js.map +1 -0
  345. package/dist/security.js +2 -2
  346. package/dist/security.js.map +1 -1
  347. package/dist/self-improvement.d.ts +34 -6
  348. package/dist/self-improvement.d.ts.map +1 -1
  349. package/dist/self-improvement.js +140 -34
  350. package/dist/self-improvement.js.map +1 -1
  351. package/dist/skill-bundles.d.ts +55 -0
  352. package/dist/skill-bundles.d.ts.map +1 -0
  353. package/dist/skill-bundles.js +134 -0
  354. package/dist/skill-bundles.js.map +1 -0
  355. package/dist/source-loader.d.ts +8 -0
  356. package/dist/source-loader.d.ts.map +1 -1
  357. package/dist/source-loader.js +41 -10
  358. package/dist/source-loader.js.map +1 -1
  359. package/dist/state-store-helpers.d.ts +2 -0
  360. package/dist/state-store-helpers.d.ts.map +1 -1
  361. package/dist/state-store-helpers.js +11 -1
  362. package/dist/state-store-helpers.js.map +1 -1
  363. package/dist/state-stores.d.ts +2 -0
  364. package/dist/state-stores.d.ts.map +1 -1
  365. package/dist/state-stores.js +40 -7
  366. package/dist/state-stores.js.map +1 -1
  367. package/dist/state.d.ts +344 -5
  368. package/dist/state.d.ts.map +1 -1
  369. package/dist/state.js +44 -2
  370. package/dist/state.js.map +1 -1
  371. package/dist/storage.d.ts +59 -2
  372. package/dist/storage.d.ts.map +1 -1
  373. package/dist/storage.js +183 -6
  374. package/dist/storage.js.map +1 -1
  375. package/dist/subagent-execution.d.ts +7 -6
  376. package/dist/subagent-execution.d.ts.map +1 -1
  377. package/dist/subagent-execution.js +58 -19
  378. package/dist/subagent-execution.js.map +1 -1
  379. package/dist/target-instructions.d.ts +14 -0
  380. package/dist/target-instructions.d.ts.map +1 -0
  381. package/dist/target-instructions.js +18 -0
  382. package/dist/target-instructions.js.map +1 -0
  383. package/dist/tool-apis.d.ts.map +1 -1
  384. package/dist/tool-apis.js +55 -10
  385. package/dist/tool-apis.js.map +1 -1
  386. package/dist/tool-execution.d.ts +26 -13
  387. package/dist/tool-execution.d.ts.map +1 -1
  388. package/dist/tool-execution.js +368 -239
  389. package/dist/tool-execution.js.map +1 -1
  390. package/dist/turn-media.d.ts +29 -0
  391. package/dist/turn-media.d.ts.map +1 -0
  392. package/dist/turn-media.js +233 -0
  393. package/dist/turn-media.js.map +1 -0
  394. package/dist/usage-reconciliation.d.ts +1 -1
  395. package/dist/usage-reconciliation.js +1 -1
  396. package/dist/workspace-id.d.ts +10 -0
  397. package/dist/workspace-id.d.ts.map +1 -0
  398. package/dist/workspace-id.js +55 -0
  399. package/dist/workspace-id.js.map +1 -0
  400. package/dist/workspace-manifest.d.ts +24 -0
  401. package/dist/workspace-manifest.d.ts.map +1 -0
  402. package/dist/workspace-manifest.js +111 -0
  403. package/dist/workspace-manifest.js.map +1 -0
  404. package/dist/workspace-operation-limiter.d.ts +16 -0
  405. package/dist/workspace-operation-limiter.d.ts.map +1 -0
  406. package/dist/workspace-operation-limiter.js +31 -0
  407. package/dist/workspace-operation-limiter.js.map +1 -0
  408. package/dist/workspace-operations.d.ts +145 -0
  409. package/dist/workspace-operations.d.ts.map +1 -0
  410. package/dist/workspace-operations.js +420 -0
  411. package/dist/workspace-operations.js.map +1 -0
  412. package/dist/workspace-runtime.d.ts +110 -0
  413. package/dist/workspace-runtime.d.ts.map +1 -0
  414. package/dist/workspace-runtime.js +240 -0
  415. package/dist/workspace-runtime.js.map +1 -0
  416. package/dist/workspace-search.d.ts +55 -0
  417. package/dist/workspace-search.d.ts.map +1 -0
  418. package/dist/workspace-search.js +262 -0
  419. package/dist/workspace-search.js.map +1 -0
  420. package/dist/workspace-service.d.ts +173 -0
  421. package/dist/workspace-service.d.ts.map +1 -0
  422. package/dist/workspace-service.js +619 -0
  423. package/dist/workspace-service.js.map +1 -0
  424. package/dist/workspace.d.ts +7 -0
  425. package/dist/workspace.d.ts.map +1 -0
  426. package/dist/workspace.js +7 -0
  427. package/dist/workspace.js.map +1 -0
  428. package/package.json +7 -4
  429. package/dist/agent-harness.d.ts +0 -108
  430. package/dist/agent-harness.d.ts.map +0 -1
  431. package/dist/agent-harness.js +0 -2
  432. package/dist/agent-harness.js.map +0 -1
  433. package/dist/attachments-legacy.d.ts +0 -17
  434. package/dist/attachments-legacy.d.ts.map +0 -1
  435. package/dist/attachments-legacy.js +0 -273
  436. package/dist/attachments-legacy.js.map +0 -1
  437. package/dist/code-mode.d.ts +0 -20
  438. package/dist/code-mode.d.ts.map +0 -1
  439. package/dist/code-mode.js +0 -658
  440. package/dist/code-mode.js.map +0 -1
  441. package/dist/hook-dispatch.d.ts +0 -19
  442. package/dist/hook-dispatch.d.ts.map +0 -1
  443. package/dist/hook-dispatch.js +0 -37
  444. package/dist/hook-dispatch.js.map +0 -1
  445. package/dist/pi-agent-harness.d.ts +0 -40
  446. package/dist/pi-agent-harness.d.ts.map +0 -1
  447. package/dist/pi-agent-harness.js +0 -222
  448. package/dist/pi-agent-harness.js.map +0 -1
  449. package/dist/pi-harness.d.ts +0 -42
  450. package/dist/pi-harness.d.ts.map +0 -1
  451. package/dist/pi-harness.js +0 -142
  452. package/dist/pi-harness.js.map +0 -1
  453. package/dist/run-resolver.d.ts +0 -35
  454. package/dist/run-resolver.d.ts.map +0 -1
  455. package/dist/run-resolver.js +0 -84
  456. package/dist/run-resolver.js.map +0 -1
  457. package/dist/usage-budget.d.ts +0 -29
  458. package/dist/usage-budget.d.ts.map +0 -1
  459. package/dist/usage-budget.js +0 -145
  460. package/dist/usage-budget.js.map +0 -1
@@ -0,0 +1,162 @@
1
+ import { createCipheriv, createDecipheriv, createHash, randomBytes, randomUUID } from "node:crypto";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ function registrationKey(connectionName, principalKey) {
5
+ return `${connectionName}\0${principalKey}`;
6
+ }
7
+ function eventKey(connectionName, principalKey, eventId) {
8
+ return `${connectionName}\0${principalKey}\0${eventId}`;
9
+ }
10
+ function timestamp() {
11
+ return new Date().toISOString();
12
+ }
13
+ export class InMemoryConnectionEventStore {
14
+ registrations = new Map();
15
+ events = new Map();
16
+ eventIds = new Map();
17
+ async getRegistration(connectionName, principalKey) {
18
+ return this.registrations.get(registrationKey(connectionName, principalKey));
19
+ }
20
+ async getRegistrationByBinding(connectionName, bindingId) {
21
+ return [...this.registrations.values()].find((record) => record.connectionName === connectionName && record.bindingId === bindingId);
22
+ }
23
+ async listRegistrations(connectionName) {
24
+ return [...this.registrations.values()]
25
+ .filter((record) => !connectionName || record.connectionName === connectionName)
26
+ .sort((left, right) => left.connectionName.localeCompare(right.connectionName) || left.principalKey.localeCompare(right.principalKey));
27
+ }
28
+ async saveRegistration(registration) {
29
+ this.registrations.set(registrationKey(registration.connectionName, registration.principalKey), registration);
30
+ this.changed();
31
+ }
32
+ async deleteRegistration(connectionName, principalKey) {
33
+ this.registrations.delete(registrationKey(connectionName, principalKey));
34
+ this.changed();
35
+ }
36
+ async enqueueEvent(input) {
37
+ const dedupe = eventKey(input.connectionName, input.principalKey, input.event.eventId);
38
+ const existingId = this.eventIds.get(dedupe);
39
+ if (existingId)
40
+ return { record: this.events.get(existingId), inserted: false };
41
+ const now = timestamp();
42
+ const record = {
43
+ ...input,
44
+ id: randomUUID(),
45
+ status: "pending",
46
+ attemptCount: 0,
47
+ maxAttempts: input.maxAttempts ?? 8,
48
+ nextAttemptAt: now,
49
+ createdAt: now,
50
+ updatedAt: now
51
+ };
52
+ this.events.set(record.id, record);
53
+ this.eventIds.set(dedupe, record.id);
54
+ this.changed();
55
+ return { record, inserted: true };
56
+ }
57
+ async leaseEvents(options) {
58
+ const due = [...this.events.values()]
59
+ .filter((record) => record.status === "pending" && Date.parse(record.nextAttemptAt) <= options.now.getTime())
60
+ .sort((left, right) => left.nextAttemptAt.localeCompare(right.nextAttemptAt))
61
+ .slice(0, options.limit);
62
+ for (const record of due) {
63
+ record.status = "processing";
64
+ record.attemptCount += 1;
65
+ record.leaseToken = randomUUID();
66
+ record.leaseExpiresAt = new Date(options.now.getTime() + options.leaseForMs).toISOString();
67
+ record.updatedAt = timestamp();
68
+ }
69
+ if (due.length > 0)
70
+ this.changed();
71
+ return due.map((record) => ({ ...record }));
72
+ }
73
+ async completeEvent(id, leaseToken) {
74
+ const record = this.leased(id, leaseToken);
75
+ this.events.delete(id);
76
+ this.eventIds.delete(eventKey(record.connectionName, record.principalKey, record.event.eventId));
77
+ this.changed();
78
+ }
79
+ async failEvent(id, leaseToken, input) {
80
+ const record = this.leased(id, leaseToken);
81
+ record.status = input.permanent || record.attemptCount >= record.maxAttempts ? "failed" : "pending";
82
+ record.lastError = input.error;
83
+ record.nextAttemptAt = input.nextAttemptAt;
84
+ delete record.leaseToken;
85
+ delete record.leaseExpiresAt;
86
+ record.updatedAt = timestamp();
87
+ this.changed();
88
+ }
89
+ async recoverExpiredEventLeases(now) {
90
+ let changed = false;
91
+ for (const record of this.events.values()) {
92
+ if (record.status !== "processing" || !record.leaseExpiresAt || Date.parse(record.leaseExpiresAt) > now.getTime())
93
+ continue;
94
+ record.status = record.attemptCount >= record.maxAttempts ? "failed" : "pending";
95
+ record.nextAttemptAt = now.toISOString();
96
+ record.lastError = "Connection event worker lease expired.";
97
+ delete record.leaseToken;
98
+ delete record.leaseExpiresAt;
99
+ record.updatedAt = timestamp();
100
+ changed = true;
101
+ }
102
+ if (changed)
103
+ this.changed();
104
+ }
105
+ changed() { }
106
+ leased(id, leaseToken) {
107
+ const record = this.events.get(id);
108
+ if (!record || record.status !== "processing" || record.leaseToken !== leaseToken) {
109
+ throw new Error(`Connection event ${id} is not held by this worker lease.`);
110
+ }
111
+ return record;
112
+ }
113
+ }
114
+ export class FileConnectionEventStore extends InMemoryConnectionEventStore {
115
+ path;
116
+ secret;
117
+ constructor(path, secret) {
118
+ super();
119
+ this.path = path;
120
+ this.secret = secret;
121
+ const saved = readEncryptedStore(path, secret);
122
+ for (const registration of saved?.registrations ?? []) {
123
+ this.registrations.set(registrationKey(registration.connectionName, registration.principalKey), registration);
124
+ }
125
+ for (const event of saved?.events ?? []) {
126
+ this.events.set(event.id, event);
127
+ this.eventIds.set(eventKey(event.connectionName, event.principalKey, event.event.eventId), event.id);
128
+ }
129
+ }
130
+ changed() {
131
+ writeEncryptedStore(this.path, this.secret, {
132
+ registrations: [...this.registrations.values()],
133
+ events: [...this.events.values()]
134
+ });
135
+ }
136
+ }
137
+ function readEncryptedStore(path, secret) {
138
+ if (!existsSync(path))
139
+ return undefined;
140
+ const envelope = JSON.parse(readFileSync(path, "utf8"));
141
+ if (!envelope.iv || !envelope.tag || !envelope.data)
142
+ return undefined;
143
+ const decipher = createDecipheriv("aes-256-gcm", encryptionKey(secret), Buffer.from(envelope.iv, "base64"));
144
+ decipher.setAuthTag(Buffer.from(envelope.tag, "base64"));
145
+ const plaintext = Buffer.concat([decipher.update(Buffer.from(envelope.data, "base64")), decipher.final()]).toString("utf8");
146
+ return JSON.parse(plaintext);
147
+ }
148
+ function writeEncryptedStore(path, secret, value) {
149
+ mkdirSync(dirname(path), { recursive: true });
150
+ const iv = randomBytes(12);
151
+ const cipher = createCipheriv("aes-256-gcm", encryptionKey(secret), iv);
152
+ const encrypted = Buffer.concat([cipher.update(JSON.stringify(value)), cipher.final()]);
153
+ writeFileSync(path, JSON.stringify({
154
+ iv: iv.toString("base64"),
155
+ tag: cipher.getAuthTag().toString("base64"),
156
+ data: encrypted.toString("base64")
157
+ }, null, 2));
158
+ }
159
+ function encryptionKey(secret) {
160
+ return createHash("sha256").update(secret || "assembly-line-local-dev-connection-secret").digest();
161
+ }
162
+ //# sourceMappingURL=connection-event-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-event-store.js","sourceRoot":"","sources":["../src/connection-event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DpC,SAAS,eAAe,CAAC,cAAsB,EAAE,YAAoB;IACnE,OAAO,GAAG,cAAc,KAAK,YAAY,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,cAAsB,EAAE,YAAoB,EAAE,OAAe;IAC7E,OAAO,GAAG,cAAc,KAAK,YAAY,KAAK,OAAO,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,OAAO,4BAA4B;IACpB,aAAa,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC/D,MAAM,GAAG,IAAI,GAAG,EAAsC,CAAC;IACvD,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExD,KAAK,CAAC,eAAe,CAAC,cAAsB,EAAE,YAAoB;QAChE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,cAAsB,EAAE,SAAiB;QACtE,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,KAAK,cAAc,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACvI,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,cAAuB;QAC7C,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC;aAC/E,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3I,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,YAAyC;QAC9D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;QAC9G,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,cAAsB,EAAE,YAAoB;QACnE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAkK;QAElK,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,UAAU;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjF,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,MAAM,GAA+B;YACzC,GAAG,KAAK;YACR,EAAE,EAAE,UAAU,EAAE;YAChB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;YACnC,aAAa,EAAE,GAAG;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyD;QACzE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAClC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aAC5G,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;aAC5E,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;YAC7B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;YACzB,MAAM,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;YACjC,MAAM,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3F,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,UAAkB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU,EAAE,UAAkB,EAAE,KAAmE;QACjH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACpG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC3C,OAAO,MAAM,CAAC,UAAU,CAAC;QACzB,OAAO,MAAM,CAAC,cAAc,CAAC;QAC7B,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,GAAS;QACvC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE;gBAAE,SAAS;YAC5H,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,CAAC,SAAS,GAAG,wCAAwC,CAAC;YAC5D,OAAO,MAAM,CAAC,UAAU,CAAC;YACzB,OAAO,MAAM,CAAC,cAAc,CAAC;YAC7B,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAES,OAAO,KAAU,CAAC;IAEpB,MAAM,CAAC,EAAU,EAAE,UAAkB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,oCAAoC,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,4BAA4B;IAC3C;IAA+B;IAA5D,YAA6B,IAAY,EAAmB,MAAc;QACxE,KAAK,EAAE,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAQ;QAExE,MAAM,KAAK,GAAG,kBAAkB,CAA2F,IAAI,EAAE,MAAM,CAAC,CAAC;QACzI,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,aAAa,IAAI,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;QAChH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAEkB,OAAO;QACxB,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YAC1C,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,kBAAkB,CAAI,IAAY,EAAE,MAAc;IACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAiD,CAAC;IACxG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5G,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5H,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,KAAc;IACvE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxF,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QACjC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACnC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,2CAA2C,CAAC,CAAC,MAAM,EAAE,CAAC;AACrG,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { type AgentManifest, type AutomationEvent, type ConnectionEventHttpResponse, type ConnectionEventRequest, type ConnectionPrincipal, type JsonObject } from "@assemblyline-agents/core";
2
+ import type { RuntimeLogger } from "./logging.js";
3
+ import type { AutomationEventDispatchResult } from "./runtime-types.js";
4
+ import type { ConnectionGrantStore } from "./connection-stores.js";
5
+ import type { RuntimeConnectionRegistry } from "./connections.js";
6
+ import type { ConnectionEventRegistration, ConnectionEventStore } from "./connection-event-store.js";
7
+ export interface ConnectionEventsHost {
8
+ manifest: AgentManifest;
9
+ env: Record<string, string | undefined>;
10
+ fetch: typeof fetch;
11
+ logger: RuntimeLogger;
12
+ agentScope: string;
13
+ store: ConnectionEventStore;
14
+ grantStore: ConnectionGrantStore;
15
+ publicUrl?: string;
16
+ createRegistry(principal: ConnectionPrincipal): RuntimeConnectionRegistry;
17
+ dispatchAutomationEvent(event: AutomationEvent): Promise<AutomationEventDispatchResult[]>;
18
+ appendAudit(type: string, data: JsonObject): Promise<unknown>;
19
+ }
20
+ export interface ConnectionEventWireResult {
21
+ connection: string;
22
+ provider: string;
23
+ principalKey: string;
24
+ callbackUrl?: string;
25
+ status: ConnectionEventRegistration["status"];
26
+ detail: string;
27
+ expiresAt?: string;
28
+ }
29
+ export interface ConnectionEventIngressResponse extends ConnectionEventHttpResponse {
30
+ accepted: number;
31
+ duplicates: number;
32
+ ignored: number;
33
+ }
34
+ export declare function reconcileConnectionEvents(host: ConnectionEventsHost, options?: {
35
+ connection?: string;
36
+ principal?: ConnectionPrincipal;
37
+ force?: boolean;
38
+ }): Promise<ConnectionEventWireResult[]>;
39
+ export declare function checkConnectionEvents(host: ConnectionEventsHost, connectionName?: string): Promise<ConnectionEventWireResult[]>;
40
+ export declare function acceptConnectionEvent(host: ConnectionEventsHost, connectionName: string, bindingId: string, request: ConnectionEventRequest): Promise<ConnectionEventIngressResponse>;
41
+ export declare function drainConnectionEventInbox(host: ConnectionEventsHost, options?: {
42
+ now?: Date;
43
+ limit?: number;
44
+ leaseForMs?: number;
45
+ }): Promise<Array<{
46
+ id: string;
47
+ status: "completed" | "retrying" | "failed";
48
+ error?: string;
49
+ }>>;
50
+ export declare function connectionEventUrl(baseUrl: string, connectionName: string, bindingId: string): string;
51
+ //# sourceMappingURL=connection-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-events.d.ts","sourceRoot":"","sources":["../src/connection-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { ConnectionEventError } from "@assemblyline-agents/core";
3
+ import { connectionPrincipalKey } from "./connection-auth-util.js";
4
+ import { matchingEventAutomations } from "./automation-event-match.js";
5
+ const RENEWAL_WINDOW_MS = 24 * 60 * 60_000;
6
+ export async function reconcileConnectionEvents(host, options = {}) {
7
+ const results = [];
8
+ const connections = host.manifest.connections.filter((connection) => connection.events && (!options.connection || connection.name === options.connection));
9
+ for (const connection of connections) {
10
+ const compiledEvents = connection.events;
11
+ const existing = await host.store.listRegistrations(connection.name);
12
+ if (!compiledEvents.enabled || compiledEvents.include.length === 0) {
13
+ for (const registration of existing) {
14
+ await removeRegistration(host, connection.name, registration).catch((error) => {
15
+ host.logger.warn("connection event removal failed", { connection: connection.name, error: errorMessage(error) });
16
+ });
17
+ await host.store.deleteRegistration(connection.name, registration.principalKey);
18
+ }
19
+ results.push({
20
+ connection: connection.name,
21
+ provider: connection.provider,
22
+ principalKey: "app",
23
+ status: "disabled",
24
+ detail: compiledEvents.enabled
25
+ ? "No provider events are selected by the connection definition."
26
+ : "Provider events are disabled by the connection definition."
27
+ });
28
+ continue;
29
+ }
30
+ const principals = await eventPrincipals(host, connection.name, compiledEvents.scope, options.principal);
31
+ if (!options.principal) {
32
+ const desiredPrincipalKeys = new Set(principals.map(connectionPrincipalKey));
33
+ for (const registration of existing) {
34
+ if (desiredPrincipalKeys.has(registration.principalKey))
35
+ continue;
36
+ await removeRegistration(host, connection.name, registration).catch((error) => {
37
+ host.logger.warn("stale connection event removal failed", { connection: connection.name, error: errorMessage(error) });
38
+ });
39
+ await host.store.deleteRegistration(connection.name, registration.principalKey);
40
+ }
41
+ }
42
+ if (principals.length === 0) {
43
+ results.push({
44
+ connection: connection.name,
45
+ provider: connection.provider,
46
+ principalKey: "pending",
47
+ status: "needs_setup",
48
+ detail: "Connect a user account before its provider event subscription can be created."
49
+ });
50
+ continue;
51
+ }
52
+ for (const principal of principals) {
53
+ try {
54
+ results.push(await reconcileOne(host, connection.name, principal, options.force === true));
55
+ }
56
+ catch (error) {
57
+ results.push({
58
+ connection: connection.name,
59
+ provider: connection.provider,
60
+ principalKey: connectionPrincipalKey(principal),
61
+ status: "needs_setup",
62
+ detail: errorMessage(error)
63
+ });
64
+ }
65
+ }
66
+ }
67
+ return results;
68
+ }
69
+ export async function checkConnectionEvents(host, connectionName) {
70
+ const records = await host.store.listRegistrations(connectionName);
71
+ const results = [];
72
+ for (const registration of records) {
73
+ const registry = host.createRegistry(registration.principal);
74
+ try {
75
+ const binding = await registry.eventBindingContext(registration.connectionName);
76
+ if (!binding.events.check) {
77
+ results.push(toWireResult(registration));
78
+ continue;
79
+ }
80
+ const checked = await binding.events.check(lifecycleContext(host, registration, binding.getToken));
81
+ results.push({
82
+ ...toWireResult(registration),
83
+ status: checked.status,
84
+ detail: checked.detail,
85
+ ...(checked.expiresAt ? { expiresAt: checked.expiresAt } : {})
86
+ });
87
+ }
88
+ catch (error) {
89
+ results.push({ ...toWireResult(registration), status: "degraded", detail: errorMessage(error) });
90
+ }
91
+ finally {
92
+ await registry.close();
93
+ }
94
+ }
95
+ return results;
96
+ }
97
+ export async function acceptConnectionEvent(host, connectionName, bindingId, request) {
98
+ const registration = await host.store.getRegistrationByBinding(connectionName, bindingId);
99
+ if (!registration)
100
+ throw new ConnectionEventError("Connection event binding was not found.", 404);
101
+ const registry = host.createRegistry(registration.principal);
102
+ try {
103
+ const binding = await registry.eventBindingContext(connectionName);
104
+ if (!binding.events.enabled) {
105
+ throw new ConnectionEventError("Connection events are disabled for this connection.", 404);
106
+ }
107
+ const result = await binding.events.ingress(request, {
108
+ connectionName,
109
+ provider: registration.provider,
110
+ callbackUrl: registration.callbackUrl,
111
+ env: host.env,
112
+ fetch: host.fetch,
113
+ principal: registration.principal,
114
+ ...(registration.state ? { state: registration.state } : {}),
115
+ getToken: binding.getToken
116
+ });
117
+ if (result.state) {
118
+ registration.state = result.state;
119
+ registration.updatedAt = new Date().toISOString();
120
+ await host.store.saveRegistration(registration);
121
+ }
122
+ let accepted = 0;
123
+ let duplicates = 0;
124
+ let ignored = 0;
125
+ for (const providerEvent of result.events ?? []) {
126
+ if (!binding.events.catalog.includes(providerEvent.event)) {
127
+ throw new Error(`Provider returned unreviewed event type ${providerEvent.event}.`);
128
+ }
129
+ if (!binding.events.selectedEvents.includes(providerEvent.event))
130
+ continue;
131
+ const event = {
132
+ source: registration.provider,
133
+ connection: connectionName,
134
+ event: providerEvent.event,
135
+ eventId: providerEvent.eventId,
136
+ payload: providerEvent.payload,
137
+ ...(providerEvent.occurredAt ? { occurredAt: providerEvent.occurredAt } : {}),
138
+ ...(providerEvent.userId ? { userId: providerEvent.userId } : registration.principal.type === "user" ? { userId: registration.principal.id } : {}),
139
+ ...(providerEvent.conversationId ? { conversationId: providerEvent.conversationId } : {}),
140
+ ...(providerEvent.projectId ? { projectId: providerEvent.projectId } : {}),
141
+ ...(providerEvent.delivery ? { delivery: providerEvent.delivery } : {}),
142
+ metadata: { connection: connectionName, provider: registration.provider, ...(providerEvent.metadata ?? {}) }
143
+ };
144
+ if (matchingEventAutomations(host.manifest, event).length === 0) {
145
+ ignored += 1;
146
+ continue;
147
+ }
148
+ const queued = await host.store.enqueueEvent({
149
+ connectionName,
150
+ provider: registration.provider,
151
+ principalKey: registration.principalKey,
152
+ event
153
+ });
154
+ if (queued.inserted)
155
+ accepted += 1;
156
+ else
157
+ duplicates += 1;
158
+ }
159
+ await host.appendAudit("connection.event.accepted", {
160
+ connection: connectionName,
161
+ provider: registration.provider,
162
+ accepted,
163
+ duplicates,
164
+ ignored,
165
+ ...(result.audit ?? {})
166
+ });
167
+ return {
168
+ status: result.response?.status ?? 202,
169
+ ...(result.response?.headers ? { headers: result.response.headers } : {}),
170
+ ...(result.response?.body !== undefined ? { body: result.response.body } : { body: { ok: true, accepted, duplicates, ignored } }),
171
+ accepted,
172
+ duplicates,
173
+ ignored
174
+ };
175
+ }
176
+ finally {
177
+ await registry.close();
178
+ }
179
+ }
180
+ export async function drainConnectionEventInbox(host, options = {}) {
181
+ const now = options.now ?? new Date();
182
+ await host.store.recoverExpiredEventLeases(now);
183
+ const leased = await host.store.leaseEvents({ now, limit: options.limit ?? 25, leaseForMs: options.leaseForMs ?? 60_000 });
184
+ const results = [];
185
+ for (const record of leased) {
186
+ const leaseToken = record.leaseToken;
187
+ try {
188
+ const dispatched = await host.dispatchAutomationEvent(record.event);
189
+ if (dispatched.some((result) => result.status === "skipped" && result.error === "run capacity saturated")) {
190
+ throw new Error("Automation run capacity is saturated.");
191
+ }
192
+ await host.store.completeEvent(record.id, leaseToken);
193
+ results.push({ id: record.id, status: "completed" });
194
+ }
195
+ catch (error) {
196
+ const message = errorMessage(error);
197
+ const permanent = record.attemptCount >= record.maxAttempts;
198
+ const retryAt = new Date(now.getTime() + retryDelayMs(record.attemptCount)).toISOString();
199
+ await host.store.failEvent(record.id, leaseToken, { error: message, nextAttemptAt: retryAt, permanent });
200
+ results.push({ id: record.id, status: permanent ? "failed" : "retrying", error: message });
201
+ }
202
+ }
203
+ return results;
204
+ }
205
+ async function reconcileOne(host, connectionName, principal, force) {
206
+ if (!host.publicUrl) {
207
+ return { connection: connectionName, provider: connectionName, principalKey: connectionPrincipalKey(principal), status: "needs_setup", detail: "Set ASSEMBLY_LINE_PUBLIC_URL or pass a public deployment URL." };
208
+ }
209
+ const registry = host.createRegistry(principal);
210
+ try {
211
+ const binding = await registry.eventBindingContext(connectionName);
212
+ const existing = await host.store.getRegistration(connectionName, binding.principalKey);
213
+ const bindingId = existing?.bindingId ?? randomBytes(24).toString("base64url");
214
+ const callbackUrl = connectionEventUrl(host.publicUrl, connectionName, bindingId);
215
+ const desiredHash = desiredStateHash(callbackUrl, binding.events.selectedEvents, binding.events.resources);
216
+ const registration = {
217
+ connectionName,
218
+ provider: binding.compiled.provider,
219
+ principalKey: binding.principalKey,
220
+ principal: binding.principal,
221
+ bindingId,
222
+ callbackUrl,
223
+ selectedEvents: [...binding.events.selectedEvents],
224
+ resources: binding.events.resources.map((resource) => ({ ...resource })),
225
+ desiredHash,
226
+ status: existing?.status ?? "needs_setup",
227
+ ...(existing?.externalId ? { externalId: existing.externalId } : {}),
228
+ ...(existing?.state ? { state: existing.state } : {}),
229
+ ...(existing?.expiresAt ? { expiresAt: existing.expiresAt } : {}),
230
+ createdAt: existing?.createdAt ?? new Date().toISOString(),
231
+ updatedAt: new Date().toISOString()
232
+ };
233
+ const notExpiring = !registration.expiresAt || Date.parse(registration.expiresAt) - Date.now() > RENEWAL_WINDOW_MS;
234
+ if (!force && existing?.desiredHash === desiredHash && existing.status === "active" && notExpiring) {
235
+ return toWireResult(existing);
236
+ }
237
+ if (!binding.events.reconcile) {
238
+ registration.status = "needs_setup";
239
+ registration.instructions = `Configure ${binding.compiled.provider} to send ${registration.selectedEvents.join(", ")} events to ${callbackUrl}.`;
240
+ registration.detail = registration.instructions;
241
+ await host.store.saveRegistration(registration);
242
+ return toWireResult(registration);
243
+ }
244
+ if (binding.events.prepare) {
245
+ registration.state = await binding.events.prepare(lifecycleContext(host, registration, binding.getToken));
246
+ }
247
+ // Persist verification material before calling the provider because
248
+ // several providers synchronously challenge the callback during creation.
249
+ await host.store.saveRegistration(registration);
250
+ try {
251
+ const result = await binding.events.reconcile(lifecycleContext(host, registration, binding.getToken));
252
+ registration.status = result.status;
253
+ if (result.externalId)
254
+ registration.externalId = result.externalId;
255
+ if (result.state)
256
+ registration.state = result.state;
257
+ if (result.expiresAt)
258
+ registration.expiresAt = result.expiresAt;
259
+ if (result.instructions)
260
+ registration.instructions = result.instructions;
261
+ registration.detail = result.detail ?? result.instructions ?? (result.status === "active" ? "Provider event subscription is active." : "Provider event setup needs attention.");
262
+ }
263
+ catch (error) {
264
+ registration.status = "degraded";
265
+ registration.detail = errorMessage(error);
266
+ }
267
+ registration.updatedAt = new Date().toISOString();
268
+ await host.store.saveRegistration(registration);
269
+ await host.appendAudit("connection.event.reconciled", {
270
+ connection: connectionName,
271
+ provider: registration.provider,
272
+ status: registration.status,
273
+ events: registration.selectedEvents
274
+ });
275
+ return toWireResult(registration);
276
+ }
277
+ finally {
278
+ await registry.close();
279
+ }
280
+ }
281
+ async function removeRegistration(host, connectionName, registration) {
282
+ const registry = host.createRegistry(registration.principal);
283
+ try {
284
+ const binding = await registry.eventBindingContext(connectionName);
285
+ await binding.events.remove?.(lifecycleContext(host, registration, binding.getToken));
286
+ }
287
+ finally {
288
+ await registry.close();
289
+ }
290
+ }
291
+ async function eventPrincipals(host, connectionName, scope, requested) {
292
+ if (scope === "connection")
293
+ return [{ type: "app" }];
294
+ if (requested)
295
+ return [requested];
296
+ const grants = await host.grantStore.listGrants(connectionName);
297
+ const principals = grants.map((grant) => grant.principal);
298
+ const unique = new Map(principals.map((principal) => [connectionPrincipalKey(principal), principal]));
299
+ return unique.size > 0 ? [...unique.values()] : [{ type: "app" }];
300
+ }
301
+ function lifecycleContext(host, registration, getToken) {
302
+ return {
303
+ connectionName: registration.connectionName,
304
+ provider: registration.provider,
305
+ callbackUrl: registration.callbackUrl,
306
+ selectedEvents: registration.selectedEvents,
307
+ resources: registration.resources,
308
+ env: host.env,
309
+ fetch: host.fetch,
310
+ principal: registration.principal,
311
+ ...(registration.state ? { state: registration.state } : {}),
312
+ checkpoint: async (state) => {
313
+ registration.state = state;
314
+ registration.updatedAt = new Date().toISOString();
315
+ await host.store.saveRegistration(registration);
316
+ },
317
+ getToken
318
+ };
319
+ }
320
+ export function connectionEventUrl(baseUrl, connectionName, bindingId) {
321
+ return `${baseUrl.replace(/\/+$/u, "")}/assembly-line/connections/${encodeURIComponent(connectionName)}/events/${encodeURIComponent(bindingId)}`;
322
+ }
323
+ function desiredStateHash(callbackUrl, events, resources) {
324
+ return createHash("sha256").update(JSON.stringify({ callbackUrl, events: [...events].sort(), resources })).digest("hex");
325
+ }
326
+ function retryDelayMs(attempt) {
327
+ return Math.min(15 * 60_000, 2 ** Math.max(0, Math.min(8, attempt - 1)) * 1_000);
328
+ }
329
+ function toWireResult(record) {
330
+ return {
331
+ connection: record.connectionName,
332
+ provider: record.provider,
333
+ principalKey: record.principalKey,
334
+ callbackUrl: record.callbackUrl,
335
+ status: record.status,
336
+ detail: record.detail ?? record.instructions ?? `Provider event subscription is ${record.status}.`,
337
+ ...(record.expiresAt ? { expiresAt: record.expiresAt } : {})
338
+ };
339
+ }
340
+ function errorMessage(error) {
341
+ return error instanceof Error ? error.message : String(error);
342
+ }
343
+ //# sourceMappingURL=connection-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-events.js","sourceRoot":"","sources":["../src/connection-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,oBAAoB,EAOrB,MAAM,2BAA2B,CAAC;AASnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAgCvE,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA0B,EAC1B,UAAqF,EAAE;IAEvF,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3J,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAO,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,KAAK,MAAM,YAAY,IAAI,QAAQ,EAAE,CAAC;gBACpC,MAAM,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnH,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,cAAc,CAAC,OAAO;oBAC5B,CAAC,CAAC,+DAA+D;oBACjE,CAAC,CAAC,4DAA4D;aACjE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC7E,KAAK,MAAM,YAAY,IAAI,QAAQ,EAAE,CAAC;gBACpC,IAAI,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC;oBAAE,SAAS;gBAClE,MAAM,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzH,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,+EAA+E;aACxF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;YAC7F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,YAAY,EAAE,sBAAsB,CAAC,SAAS,CAAC;oBAC/C,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAA0B,EAAE,cAAuB;IAC7F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;gBACzC,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,YAAY,CAAC,YAAY,CAAC;gBAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAA0B,EAC1B,cAAsB,EACtB,SAAiB,EACjB,OAA+B;IAE/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC1F,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,oBAAoB,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,oBAAoB,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;YACnD,cAAc;YACd,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAClC,YAAY,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC3E,MAAM,KAAK,GAAoB;gBAC7B,MAAM,EAAE,YAAY,CAAC,QAAQ;gBAC7B,UAAU,EAAE,cAAc;gBAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClJ,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,QAAQ,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;aAC7G,CAAC;YACF,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC,CAAC;gBACb,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC3C,cAAc;gBACd,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,YAAY,EAAE,YAAY,CAAC,YAAY;gBACvC,KAAK;aACN,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,QAAQ;gBAAE,QAAQ,IAAI,CAAC,CAAC;;gBAC9B,UAAU,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE;YAClD,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,QAAQ;YACR,UAAU;YACV,OAAO;YACP,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG;YACtC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACjI,QAAQ;YACR,UAAU;YACV,OAAO;SACR,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA0B,EAC1B,UAA+D,EAAE;IAEjE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3H,MAAM,OAAO,GAAuF,EAAE,CAAC;IACvG,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAW,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,wBAAwB,CAAC,EAAE,CAAC;gBAC1G,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1F,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACzG,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAA0B,EAC1B,cAAsB,EACtB,SAA8B,EAC9B,KAAc;IAEd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,+DAA+D,EAAE,CAAC;IACnN,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACxF,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/E,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3G,MAAM,YAAY,GAAgC;YAChD,cAAc;YACd,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;YACnC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS;YACT,WAAW;YACX,cAAc,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;YAClD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;YACxE,WAAW;YACX,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,aAAa;YACzC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC1D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;QACnH,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,WAAW,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnG,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC;YACpC,YAAY,CAAC,YAAY,GAAG,aAAa,OAAO,CAAC,QAAQ,CAAC,QAAQ,YAAY,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,WAAW,GAAG,CAAC;YACjJ,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC;YAChD,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAChD,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,YAAY,CAAC,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,oEAAoE;QACpE,0EAA0E;QAC1E,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtG,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACpC,IAAI,MAAM,CAAC,UAAU;gBAAE,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACnE,IAAI,MAAM,CAAC,KAAK;gBAAE,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACpD,IAAI,MAAM,CAAC,SAAS;gBAAE,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAChE,IAAI,MAAM,CAAC,YAAY;gBAAE,YAAY,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACzE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC;QAClL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC;YACjC,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,YAAY,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAAE;YACpD,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,MAAM,EAAE,YAAY,CAAC,cAAc;SACpC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA0B,EAAE,cAAsB,EAAE,YAAyC;IAC7H,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAA0B,EAC1B,cAAsB,EACtB,KAAiC,EACjC,SAA+B;IAE/B,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,SAAS;QAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,gBAAgB,CACvB,IAA0B,EAC1B,YAAyC,EACzC,QAAwE;IAExE,OAAO;QACL,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,UAAU,EAAE,KAAK,EAAE,KAAiB,EAAE,EAAE;YACtC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YAC3B,YAAY,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC;QACD,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,cAAsB,EAAE,SAAiB;IAC3F,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,8BAA8B,kBAAkB,CAAC,cAAc,CAAC,WAAW,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;AACnJ,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB,EAAE,MAAgB,EAAE,SAAuB;IACtF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3H,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,YAAY,CAAC,MAAmC;IACvD,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,cAAc;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,kCAAkC,MAAM,CAAC,MAAM,GAAG;QAClG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,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"}
@@ -19,6 +19,7 @@ export interface StoredConnectionGrant {
19
19
  }
20
20
  export interface ConnectionGrantStore {
21
21
  getGrant(connectionName: string, principalKey: string): Promise<StoredConnectionGrant | undefined>;
22
+ listGrants(connectionName?: string): Promise<StoredConnectionGrant[]>;
22
23
  saveGrant(grant: StoredConnectionGrant): Promise<void>;
23
24
  deleteGrant(connectionName: string, principalKey: string): Promise<void>;
24
25
  }
@@ -44,6 +45,7 @@ export interface ConnectionAuthorizationSessionRecord {
44
45
  }
45
46
  export interface ConnectionAuthorizationSessionStore {
46
47
  createSession(session: ConnectionAuthorizationSessionRecord): Promise<void>;
48
+ deleteExpiredSessions?(now: number): Promise<number>;
47
49
  updateSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
48
50
  getSession(id: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
49
51
  getSessionByState(state: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
@@ -70,18 +72,21 @@ export interface ConnectionSearchResultItem {
70
72
  needsAuthorization?: boolean;
71
73
  outputSchema?: JsonSchema;
72
74
  qualifiedName?: string;
75
+ requiresPrivateAudience?: boolean;
73
76
  tool?: string;
74
77
  }
75
78
  export declare const CONNECTION_SEARCH_TOOL_NAME = "connection_search";
76
79
  export declare class InMemoryConnectionGrantStore implements ConnectionGrantStore {
77
80
  protected readonly grants: Map<string, StoredConnectionGrant>;
78
81
  getGrant(connectionName: string, principalKey: string): Promise<StoredConnectionGrant | undefined>;
82
+ listGrants(connectionName?: string): Promise<StoredConnectionGrant[]>;
79
83
  saveGrant(grant: StoredConnectionGrant): Promise<void>;
80
84
  deleteGrant(connectionName: string, principalKey: string): Promise<void>;
81
85
  }
82
86
  export declare class InMemoryConnectionAuthorizationSessionStore implements ConnectionAuthorizationSessionStore {
83
87
  protected readonly sessions: Map<string, ConnectionAuthorizationSessionRecord>;
84
88
  createSession(session: ConnectionAuthorizationSessionRecord): Promise<void>;
89
+ deleteExpiredSessions(now: number): Promise<number>;
85
90
  updateSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
86
91
  getSession(id: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
87
92
  getSessionByState(state: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
@@ -101,6 +106,7 @@ export declare class FileConnectionAuthorizationSessionStore extends InMemoryCon
101
106
  private readonly secret;
102
107
  constructor(path: string, secret: string);
103
108
  createSession(session: ConnectionAuthorizationSessionRecord): Promise<void>;
109
+ deleteExpiredSessions(now: number): Promise<number>;
104
110
  updateSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
105
111
  private load;
106
112
  private persist;