@laserdata/laser-sdk 0.0.1-rc.21 → 0.0.1-rc.22

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 (434) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/agdx.d.ts +55 -0
  3. package/dist/agent/agdx.d.ts.map +1 -0
  4. package/dist/agent/agdx.js +447 -0
  5. package/dist/agent/agdx.js.map +1 -0
  6. package/dist/agent/assembler.d.ts +29 -0
  7. package/dist/agent/assembler.d.ts.map +1 -0
  8. package/dist/agent/assembler.js +69 -0
  9. package/dist/agent/assembler.js.map +1 -0
  10. package/dist/agent/builder.d.ts +114 -0
  11. package/dist/agent/builder.d.ts.map +1 -0
  12. package/dist/agent/builder.js +334 -0
  13. package/dist/agent/builder.js.map +1 -0
  14. package/dist/agent/context.d.ts +68 -0
  15. package/dist/agent/context.d.ts.map +1 -0
  16. package/dist/agent/context.js +212 -0
  17. package/dist/agent/context.js.map +1 -0
  18. package/dist/agent/contract.d.ts +70 -0
  19. package/dist/agent/contract.d.ts.map +1 -0
  20. package/dist/agent/contract.js +275 -0
  21. package/dist/agent/contract.js.map +1 -0
  22. package/dist/agent/registry.d.ts +76 -0
  23. package/dist/agent/registry.d.ts.map +1 -0
  24. package/dist/agent/registry.js +286 -0
  25. package/dist/agent/registry.js.map +1 -0
  26. package/dist/agent/reliable-consumer.d.ts +126 -0
  27. package/dist/agent/reliable-consumer.d.ts.map +1 -0
  28. package/dist/agent/reliable-consumer.js +551 -0
  29. package/dist/agent/reliable-consumer.js.map +1 -0
  30. package/dist/agent/replies.d.ts +28 -0
  31. package/dist/agent/replies.d.ts.map +1 -0
  32. package/dist/agent/replies.js +175 -0
  33. package/dist/agent/replies.js.map +1 -0
  34. package/dist/agent/router.d.ts +72 -0
  35. package/dist/agent/router.d.ts.map +1 -0
  36. package/dist/agent/router.js +172 -0
  37. package/dist/agent/router.js.map +1 -0
  38. package/dist/agent/scope.d.ts +16 -0
  39. package/dist/agent/scope.d.ts.map +1 -0
  40. package/dist/agent/scope.js +34 -0
  41. package/dist/agent/scope.js.map +1 -0
  42. package/dist/agent/workflow.d.ts +85 -0
  43. package/dist/agent/workflow.d.ts.map +1 -0
  44. package/dist/agent/workflow.js +416 -0
  45. package/dist/agent/workflow.js.map +1 -0
  46. package/dist/blob.d.ts +12 -0
  47. package/dist/blob.d.ts.map +1 -0
  48. package/dist/blob.js +34 -0
  49. package/dist/blob.js.map +1 -0
  50. package/dist/bridges/a2a.d.ts +89 -0
  51. package/dist/bridges/a2a.d.ts.map +1 -0
  52. package/dist/bridges/a2a.js +244 -0
  53. package/dist/bridges/a2a.js.map +1 -0
  54. package/dist/bridges/agui.d.ts +66 -0
  55. package/dist/bridges/agui.d.ts.map +1 -0
  56. package/dist/bridges/agui.js +335 -0
  57. package/dist/bridges/agui.js.map +1 -0
  58. package/dist/bridges/edge-auth.d.ts +16 -0
  59. package/dist/bridges/edge-auth.d.ts.map +1 -0
  60. package/dist/bridges/edge-auth.js +19 -0
  61. package/dist/bridges/edge-auth.js.map +1 -0
  62. package/dist/bridges/hops.d.ts +9 -0
  63. package/dist/bridges/hops.d.ts.map +1 -0
  64. package/dist/bridges/hops.js +16 -0
  65. package/dist/bridges/hops.js.map +1 -0
  66. package/dist/bridges/mcp.d.ts +79 -0
  67. package/dist/bridges/mcp.d.ts.map +1 -0
  68. package/dist/bridges/mcp.js +248 -0
  69. package/dist/bridges/mcp.js.map +1 -0
  70. package/dist/client/bytes.d.ts +3 -0
  71. package/dist/client/bytes.d.ts.map +1 -0
  72. package/dist/client/bytes.js +9 -0
  73. package/dist/client/bytes.js.map +1 -0
  74. package/dist/client/capabilities.d.ts +36 -0
  75. package/dist/client/capabilities.d.ts.map +1 -0
  76. package/dist/client/capabilities.js +91 -0
  77. package/dist/client/capabilities.js.map +1 -0
  78. package/dist/client/errors.d.ts +178 -0
  79. package/dist/client/errors.d.ts.map +1 -0
  80. package/dist/client/errors.js +192 -0
  81. package/dist/client/errors.js.map +1 -0
  82. package/dist/client/internals.d.ts +5 -0
  83. package/dist/client/internals.d.ts.map +1 -0
  84. package/dist/client/internals.js +5 -0
  85. package/dist/client/internals.js.map +1 -0
  86. package/dist/client/laser.d.ts +238 -0
  87. package/dist/client/laser.d.ts.map +1 -0
  88. package/dist/client/laser.js +831 -0
  89. package/dist/client/laser.js.map +1 -0
  90. package/dist/client/laserdata-ca.d.ts +2 -0
  91. package/dist/client/laserdata-ca.d.ts.map +1 -0
  92. package/dist/client/laserdata-ca.js +35 -0
  93. package/dist/client/laserdata-ca.js.map +1 -0
  94. package/dist/client/managed.d.ts +6 -0
  95. package/dist/client/managed.d.ts.map +1 -0
  96. package/dist/client/managed.js +19 -0
  97. package/dist/client/managed.js.map +1 -0
  98. package/dist/context-scope.d.ts +40 -0
  99. package/dist/context-scope.d.ts.map +1 -0
  100. package/dist/context-scope.js +73 -0
  101. package/dist/context-scope.js.map +1 -0
  102. package/dist/context.d.ts +64 -0
  103. package/dist/context.d.ts.map +1 -0
  104. package/dist/context.js +149 -0
  105. package/dist/context.js.map +1 -0
  106. package/dist/conversation-state.d.ts +24 -0
  107. package/dist/conversation-state.d.ts.map +1 -0
  108. package/dist/conversation-state.js +29 -0
  109. package/dist/conversation-state.js.map +1 -0
  110. package/dist/crash-context.d.ts +11 -0
  111. package/dist/crash-context.d.ts.map +1 -0
  112. package/dist/crash-context.js +62 -0
  113. package/dist/crash-context.js.map +1 -0
  114. package/dist/full.d.ts +3 -0
  115. package/dist/full.d.ts.map +1 -0
  116. package/dist/full.js +3 -0
  117. package/dist/full.js.map +1 -0
  118. package/dist/govern.d.ts +133 -0
  119. package/dist/govern.d.ts.map +1 -0
  120. package/dist/govern.js +347 -0
  121. package/dist/govern.js.map +1 -0
  122. package/dist/iggy/apache-iggy.d.ts +173 -0
  123. package/dist/iggy/apache-iggy.d.ts.map +1 -0
  124. package/dist/iggy/apache-iggy.js +634 -0
  125. package/dist/iggy/apache-iggy.js.map +1 -0
  126. package/dist/index.d.ts +121 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +64 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/intent.d.ts +75 -0
  131. package/dist/intent.d.ts.map +1 -0
  132. package/dist/intent.js +195 -0
  133. package/dist/intent.js.map +1 -0
  134. package/dist/managed/batch.d.ts +5 -0
  135. package/dist/managed/batch.d.ts.map +1 -0
  136. package/dist/managed/batch.js +32 -0
  137. package/dist/managed/batch.js.map +1 -0
  138. package/dist/managed/forks.d.ts +72 -0
  139. package/dist/managed/forks.d.ts.map +1 -0
  140. package/dist/managed/forks.js +188 -0
  141. package/dist/managed/forks.js.map +1 -0
  142. package/dist/managed/graph.d.ts +58 -0
  143. package/dist/managed/graph.d.ts.map +1 -0
  144. package/dist/managed/graph.js +176 -0
  145. package/dist/managed/graph.js.map +1 -0
  146. package/dist/managed/kv.d.ts +144 -0
  147. package/dist/managed/kv.d.ts.map +1 -0
  148. package/dist/managed/kv.js +502 -0
  149. package/dist/managed/kv.js.map +1 -0
  150. package/dist/managed/projections.d.ts +61 -0
  151. package/dist/managed/projections.d.ts.map +1 -0
  152. package/dist/managed/projections.js +191 -0
  153. package/dist/managed/projections.js.map +1 -0
  154. package/dist/managed/query.d.ts +72 -0
  155. package/dist/managed/query.d.ts.map +1 -0
  156. package/dist/managed/query.js +287 -0
  157. package/dist/managed/query.js.map +1 -0
  158. package/dist/managed/rbac.d.ts +16 -0
  159. package/dist/managed/rbac.d.ts.map +1 -0
  160. package/dist/managed/rbac.js +82 -0
  161. package/dist/managed/rbac.js.map +1 -0
  162. package/dist/managed/runs.d.ts +40 -0
  163. package/dist/managed/runs.d.ts.map +1 -0
  164. package/dist/managed/runs.js +112 -0
  165. package/dist/managed/runs.js.map +1 -0
  166. package/dist/managed/watch.d.ts +21 -0
  167. package/dist/managed/watch.d.ts.map +1 -0
  168. package/dist/managed/watch.js +73 -0
  169. package/dist/managed/watch.js.map +1 -0
  170. package/dist/memory/handle.d.ts +77 -0
  171. package/dist/memory/handle.d.ts.map +1 -0
  172. package/dist/memory/handle.js +234 -0
  173. package/dist/memory/handle.js.map +1 -0
  174. package/dist/memory/log-memory.d.ts +38 -0
  175. package/dist/memory/log-memory.d.ts.map +1 -0
  176. package/dist/memory/log-memory.js +309 -0
  177. package/dist/memory/log-memory.js.map +1 -0
  178. package/dist/memory/topic.d.ts +22 -0
  179. package/dist/memory/topic.d.ts.map +1 -0
  180. package/dist/memory/topic.js +56 -0
  181. package/dist/memory/topic.js.map +1 -0
  182. package/dist/memory/types.d.ts +108 -0
  183. package/dist/memory/types.d.ts.map +1 -0
  184. package/dist/memory/types.js +127 -0
  185. package/dist/memory/types.js.map +1 -0
  186. package/dist/memory/vector-memory.d.ts +20 -0
  187. package/dist/memory/vector-memory.d.ts.map +1 -0
  188. package/dist/memory/vector-memory.js +193 -0
  189. package/dist/memory/vector-memory.js.map +1 -0
  190. package/dist/memory.d.ts +7 -0
  191. package/dist/memory.d.ts.map +1 -0
  192. package/dist/memory.js +6 -0
  193. package/dist/memory.js.map +1 -0
  194. package/dist/observe.d.ts +10 -0
  195. package/dist/observe.d.ts.map +1 -0
  196. package/dist/observe.js +5 -0
  197. package/dist/observe.js.map +1 -0
  198. package/dist/opentelemetry.d.ts +22 -0
  199. package/dist/opentelemetry.d.ts.map +1 -0
  200. package/dist/opentelemetry.js +38 -0
  201. package/dist/opentelemetry.js.map +1 -0
  202. package/dist/provenance/agent-topic.d.ts +14 -0
  203. package/dist/provenance/agent-topic.d.ts.map +1 -0
  204. package/dist/provenance/agent-topic.js +13 -0
  205. package/dist/provenance/agent-topic.js.map +1 -0
  206. package/dist/provenance/provenance.d.ts +24 -0
  207. package/dist/provenance/provenance.d.ts.map +1 -0
  208. package/dist/provenance/provenance.js +186 -0
  209. package/dist/provenance/provenance.js.map +1 -0
  210. package/dist/provenance/session-policy.d.ts +4 -0
  211. package/dist/provenance/session-policy.d.ts.map +1 -0
  212. package/dist/provenance/session-policy.js +5 -0
  213. package/dist/provenance/session-policy.js.map +1 -0
  214. package/dist/runtime/async-once.d.ts +6 -0
  215. package/dist/runtime/async-once.d.ts.map +1 -0
  216. package/dist/runtime/async-once.js +19 -0
  217. package/dist/runtime/async-once.js.map +1 -0
  218. package/dist/runtime/clock.d.ts +14 -0
  219. package/dist/runtime/clock.d.ts.map +1 -0
  220. package/dist/runtime/clock.js +21 -0
  221. package/dist/runtime/clock.js.map +1 -0
  222. package/dist/runtime/mutex.d.ts +5 -0
  223. package/dist/runtime/mutex.d.ts.map +1 -0
  224. package/dist/runtime/mutex.js +23 -0
  225. package/dist/runtime/mutex.js.map +1 -0
  226. package/dist/runtime/ulid.d.ts +7 -0
  227. package/dist/runtime/ulid.d.ts.map +1 -0
  228. package/dist/runtime/ulid.js +17 -0
  229. package/dist/runtime/ulid.js.map +1 -0
  230. package/dist/schema-codecs.d.ts +16 -0
  231. package/dist/schema-codecs.d.ts.map +1 -0
  232. package/dist/schema-codecs.js +174 -0
  233. package/dist/schema-codecs.js.map +1 -0
  234. package/dist/signing.d.ts +63 -0
  235. package/dist/signing.d.ts.map +1 -0
  236. package/dist/signing.js +288 -0
  237. package/dist/signing.js.map +1 -0
  238. package/dist/snapshot.d.ts +24 -0
  239. package/dist/snapshot.d.ts.map +1 -0
  240. package/dist/snapshot.js +80 -0
  241. package/dist/snapshot.js.map +1 -0
  242. package/dist/state-store.d.ts +20 -0
  243. package/dist/state-store.d.ts.map +1 -0
  244. package/dist/state-store.js +70 -0
  245. package/dist/state-store.js.map +1 -0
  246. package/dist/stream/codecs.d.ts +9 -0
  247. package/dist/stream/codecs.d.ts.map +1 -0
  248. package/dist/stream/codecs.js +83 -0
  249. package/dist/stream/codecs.js.map +1 -0
  250. package/dist/stream/consumer.d.ts +50 -0
  251. package/dist/stream/consumer.d.ts.map +1 -0
  252. package/dist/stream/consumer.js +145 -0
  253. package/dist/stream/consumer.js.map +1 -0
  254. package/dist/stream/cursor.d.ts +26 -0
  255. package/dist/stream/cursor.d.ts.map +1 -0
  256. package/dist/stream/cursor.js +83 -0
  257. package/dist/stream/cursor.js.map +1 -0
  258. package/dist/stream/header-value.d.ts +18 -0
  259. package/dist/stream/header-value.d.ts.map +1 -0
  260. package/dist/stream/header-value.js +70 -0
  261. package/dist/stream/header-value.js.map +1 -0
  262. package/dist/stream/polling-strategy.d.ts +14 -0
  263. package/dist/stream/polling-strategy.d.ts.map +1 -0
  264. package/dist/stream/polling-strategy.js +2 -0
  265. package/dist/stream/polling-strategy.js.map +1 -0
  266. package/dist/stream/producer.d.ts +44 -0
  267. package/dist/stream/producer.d.ts.map +1 -0
  268. package/dist/stream/producer.js +125 -0
  269. package/dist/stream/producer.js.map +1 -0
  270. package/dist/stream/publish.d.ts +83 -0
  271. package/dist/stream/publish.d.ts.map +1 -0
  272. package/dist/stream/publish.js +287 -0
  273. package/dist/stream/publish.js.map +1 -0
  274. package/dist/stream/record.d.ts +29 -0
  275. package/dist/stream/record.d.ts.map +1 -0
  276. package/dist/stream/record.js +152 -0
  277. package/dist/stream/record.js.map +1 -0
  278. package/dist/stream/routing.d.ts +10 -0
  279. package/dist/stream/routing.d.ts.map +1 -0
  280. package/dist/stream/routing.js +2 -0
  281. package/dist/stream/routing.js.map +1 -0
  282. package/dist/stream/stream.d.ts +14 -0
  283. package/dist/stream/stream.d.ts.map +1 -0
  284. package/dist/stream/stream.js +26 -0
  285. package/dist/stream/stream.js.map +1 -0
  286. package/dist/stream/topic.d.ts +52 -0
  287. package/dist/stream/topic.d.ts.map +1 -0
  288. package/dist/stream/topic.js +181 -0
  289. package/dist/stream/topic.js.map +1 -0
  290. package/dist/stream/typed-topic.d.ts +59 -0
  291. package/dist/stream/typed-topic.d.ts.map +1 -0
  292. package/dist/stream/typed-topic.js +119 -0
  293. package/dist/stream/typed-topic.js.map +1 -0
  294. package/dist/swarm.d.ts +16 -0
  295. package/dist/swarm.d.ts.map +1 -0
  296. package/dist/swarm.js +40 -0
  297. package/dist/swarm.js.map +1 -0
  298. package/dist/testing.d.ts +16 -0
  299. package/dist/testing.d.ts.map +1 -0
  300. package/dist/testing.js +19 -0
  301. package/dist/testing.js.map +1 -0
  302. package/dist/types/ids.d.ts +48 -0
  303. package/dist/types/ids.d.ts.map +1 -0
  304. package/dist/types/ids.js +161 -0
  305. package/dist/types/ids.js.map +1 -0
  306. package/dist/wire/agent-record.d.ts +24 -0
  307. package/dist/wire/agent-record.d.ts.map +1 -0
  308. package/dist/wire/agent-record.js +99 -0
  309. package/dist/wire/agent-record.js.map +1 -0
  310. package/dist/wire/agent-workflow.d.ts +118 -0
  311. package/dist/wire/agent-workflow.d.ts.map +1 -0
  312. package/dist/wire/agent-workflow.js +290 -0
  313. package/dist/wire/agent-workflow.js.map +1 -0
  314. package/dist/wire/agent.d.ts +255 -0
  315. package/dist/wire/agent.d.ts.map +1 -0
  316. package/dist/wire/agent.js +792 -0
  317. package/dist/wire/agent.js.map +1 -0
  318. package/dist/wire/authz.d.ts +186 -0
  319. package/dist/wire/authz.d.ts.map +1 -0
  320. package/dist/wire/authz.js +545 -0
  321. package/dist/wire/authz.js.map +1 -0
  322. package/dist/wire/batch.d.ts +17 -0
  323. package/dist/wire/batch.d.ts.map +1 -0
  324. package/dist/wire/batch.js +41 -0
  325. package/dist/wire/batch.js.map +1 -0
  326. package/dist/wire/browse.d.ts +96 -0
  327. package/dist/wire/browse.d.ts.map +1 -0
  328. package/dist/wire/browse.js +201 -0
  329. package/dist/wire/browse.js.map +1 -0
  330. package/dist/wire/cbor.d.ts +35 -0
  331. package/dist/wire/cbor.d.ts.map +1 -0
  332. package/dist/wire/cbor.js +231 -0
  333. package/dist/wire/cbor.js.map +1 -0
  334. package/dist/wire/change.d.ts +12 -0
  335. package/dist/wire/change.d.ts.map +1 -0
  336. package/dist/wire/change.js +22 -0
  337. package/dist/wire/change.js.map +1 -0
  338. package/dist/wire/clients.d.ts +27 -0
  339. package/dist/wire/clients.d.ts.map +1 -0
  340. package/dist/wire/clients.js +64 -0
  341. package/dist/wire/clients.js.map +1 -0
  342. package/dist/wire/codes.d.ts +67 -0
  343. package/dist/wire/codes.d.ts.map +1 -0
  344. package/dist/wire/codes.js +67 -0
  345. package/dist/wire/codes.js.map +1 -0
  346. package/dist/wire/commands.d.ts +68 -0
  347. package/dist/wire/commands.d.ts.map +1 -0
  348. package/dist/wire/commands.js +140 -0
  349. package/dist/wire/commands.js.map +1 -0
  350. package/dist/wire/content.d.ts +17 -0
  351. package/dist/wire/content.d.ts.map +1 -0
  352. package/dist/wire/content.js +47 -0
  353. package/dist/wire/content.js.map +1 -0
  354. package/dist/wire/control.d.ts +170 -0
  355. package/dist/wire/control.d.ts.map +1 -0
  356. package/dist/wire/control.js +453 -0
  357. package/dist/wire/control.js.map +1 -0
  358. package/dist/wire/fork.d.ts +112 -0
  359. package/dist/wire/fork.d.ts.map +1 -0
  360. package/dist/wire/fork.js +280 -0
  361. package/dist/wire/fork.js.map +1 -0
  362. package/dist/wire/forward.d.ts +23 -0
  363. package/dist/wire/forward.d.ts.map +1 -0
  364. package/dist/wire/forward.js +72 -0
  365. package/dist/wire/forward.js.map +1 -0
  366. package/dist/wire/graph.d.ts +181 -0
  367. package/dist/wire/graph.d.ts.map +1 -0
  368. package/dist/wire/graph.js +554 -0
  369. package/dist/wire/graph.js.map +1 -0
  370. package/dist/wire/hashing.d.ts +2 -0
  371. package/dist/wire/hashing.d.ts.map +1 -0
  372. package/dist/wire/hashing.js +21 -0
  373. package/dist/wire/hashing.js.map +1 -0
  374. package/dist/wire/headers.d.ts +32 -0
  375. package/dist/wire/headers.d.ts.map +1 -0
  376. package/dist/wire/headers.js +32 -0
  377. package/dist/wire/headers.js.map +1 -0
  378. package/dist/wire/hello.d.ts +50 -0
  379. package/dist/wire/hello.d.ts.map +1 -0
  380. package/dist/wire/hello.js +122 -0
  381. package/dist/wire/hello.js.map +1 -0
  382. package/dist/wire/http.d.ts +95 -0
  383. package/dist/wire/http.d.ts.map +1 -0
  384. package/dist/wire/http.js +282 -0
  385. package/dist/wire/http.js.map +1 -0
  386. package/dist/wire/ids.d.ts +50 -0
  387. package/dist/wire/ids.d.ts.map +1 -0
  388. package/dist/wire/ids.js +198 -0
  389. package/dist/wire/ids.js.map +1 -0
  390. package/dist/wire/index.d.ts +32 -0
  391. package/dist/wire/index.d.ts.map +1 -0
  392. package/dist/wire/index.js +32 -0
  393. package/dist/wire/index.js.map +1 -0
  394. package/dist/wire/kv.d.ts +260 -0
  395. package/dist/wire/kv.d.ts.map +1 -0
  396. package/dist/wire/kv.js +650 -0
  397. package/dist/wire/kv.js.map +1 -0
  398. package/dist/wire/limits.d.ts +36 -0
  399. package/dist/wire/limits.d.ts.map +1 -0
  400. package/dist/wire/limits.js +36 -0
  401. package/dist/wire/limits.js.map +1 -0
  402. package/dist/wire/memory.d.ts +17 -0
  403. package/dist/wire/memory.d.ts.map +1 -0
  404. package/dist/wire/memory.js +65 -0
  405. package/dist/wire/memory.js.map +1 -0
  406. package/dist/wire/mutation.d.ts +10 -0
  407. package/dist/wire/mutation.d.ts.map +1 -0
  408. package/dist/wire/mutation.js +18 -0
  409. package/dist/wire/mutation.js.map +1 -0
  410. package/dist/wire/query.d.ts +210 -0
  411. package/dist/wire/query.d.ts.map +1 -0
  412. package/dist/wire/query.js +594 -0
  413. package/dist/wire/query.js.map +1 -0
  414. package/dist/wire/result.d.ts +25 -0
  415. package/dist/wire/result.d.ts.map +1 -0
  416. package/dist/wire/result.js +52 -0
  417. package/dist/wire/result.js.map +1 -0
  418. package/dist/wire/snapshot.d.ts +11 -0
  419. package/dist/wire/snapshot.d.ts.map +1 -0
  420. package/dist/wire/snapshot.js +50 -0
  421. package/dist/wire/snapshot.js.map +1 -0
  422. package/dist/wire/topics.d.ts +5 -0
  423. package/dist/wire/topics.d.ts.map +1 -0
  424. package/dist/wire/topics.js +5 -0
  425. package/dist/wire/topics.js.map +1 -0
  426. package/dist/wire/topology.d.ts +24 -0
  427. package/dist/wire/topology.d.ts.map +1 -0
  428. package/dist/wire/topology.js +56 -0
  429. package/dist/wire/topology.js.map +1 -0
  430. package/dist/wire/value.d.ts +21 -0
  431. package/dist/wire/value.d.ts.map +1 -0
  432. package/dist/wire/value.js +40 -0
  433. package/dist/wire/value.js.map +1 -0
  434. package/package.json +2 -1
@@ -0,0 +1,416 @@
1
+ import { ownedBytes } from "../client/bytes.js";
2
+ import { BudgetExceededError, CancelledError, HandlerConfigError, InvalidError, UnsupportedError } from "../client/errors.js";
3
+ import { AgentTopic } from "../provenance/agent-topic.js";
4
+ import { AgentId, ConversationId } from "../types/ids.js";
5
+ import { decodeOne, encodeNamed, expectMap, field } from "../wire/cbor.js";
6
+ import { agentMessageBody } from "./reliable-consumer.js";
7
+ import { markRun } from "./contract.js";
8
+ import { ADVERTISED_INBOX_ROUTE } from "./router.js";
9
+ const STEP_BUDGET_FLOOR_MS = 100;
10
+ const DEFAULT_STEP_DEADLINE_MS = 30_000;
11
+ const MAX_REASSIGNMENTS = 2;
12
+ const WORKFLOW_FENCE_NAMESPACE = "agdx.workflow.fence";
13
+ const WORKFLOW_LEASE_TTL_MICROS = 60000000n;
14
+ export class Budget {
15
+ tokenLimit;
16
+ wallClockLimitMs;
17
+ invocationLimit;
18
+ constructor(tokenLimit, wallClockLimitMs, invocationLimit) {
19
+ this.tokenLimit = tokenLimit;
20
+ this.wallClockLimitMs = wallClockLimitMs;
21
+ this.invocationLimit = invocationLimit;
22
+ }
23
+ static unlimited() {
24
+ return new Budget();
25
+ }
26
+ static tokens(tokens) {
27
+ if (tokens < 0n)
28
+ throw new InvalidError("token budget must be non-negative");
29
+ return new Budget(tokens);
30
+ }
31
+ wallClock(milliseconds) {
32
+ if (!Number.isFinite(milliseconds) || milliseconds < 0) {
33
+ throw new InvalidError("wall-clock budget must be a non-negative finite number");
34
+ }
35
+ return new Budget(this.tokenLimit, milliseconds, this.invocationLimit);
36
+ }
37
+ invocations(invocations) {
38
+ if (!Number.isSafeInteger(invocations) || invocations < 0) {
39
+ throw new InvalidError("invocation budget must be a non-negative safe integer");
40
+ }
41
+ return new Budget(this.tokenLimit, this.wallClockLimitMs, invocations);
42
+ }
43
+ }
44
+ function stepDispatch(contract) {
45
+ if (contract.kind === "completed") {
46
+ const usage = contract.reply.envelope?.usage;
47
+ return {
48
+ kind: "completed",
49
+ body: agentMessageBody(contract.reply),
50
+ tokens: usage === undefined ? 0n : usage.inputTokens + usage.outputTokens
51
+ };
52
+ }
53
+ return contract.kind === "timedOut" ? { kind: "timedOut" } : { kind: "notCompleted" };
54
+ }
55
+ function decodeJournalEntry(payload) {
56
+ const context = "workflow journal entry";
57
+ const outer = expectMap(decodeOne(payload, context), context);
58
+ const completed = field.requiredMap(outer, "StepCompleted", context);
59
+ return {
60
+ label: field.requiredString(completed, "label", context),
61
+ output: field.requiredBytes(completed, "output", context)
62
+ };
63
+ }
64
+ function encodeJournalEntry(label, output) {
65
+ return encodeNamed(new Map([
66
+ [
67
+ "StepCompleted",
68
+ new Map([
69
+ ["label", label],
70
+ ["output", output]
71
+ ])
72
+ ]
73
+ ]));
74
+ }
75
+ export function topologicalOrder(steps) {
76
+ const indexOf = new Map(steps.map((step, index) => [step.label, index]));
77
+ const inDegree = new Array(steps.length).fill(0);
78
+ const dependents = Array.from({ length: steps.length }, () => []);
79
+ for (const [index, step] of steps.entries()) {
80
+ for (const dependency of step.after) {
81
+ const dependencyIndex = indexOf.get(dependency);
82
+ if (dependencyIndex === undefined) {
83
+ throw new InvalidError(`workflow step \`${step.label}\` depends on unknown step \`${dependency}\``);
84
+ }
85
+ inDegree[index] = (inDegree[index] ?? 0) + 1;
86
+ dependents[dependencyIndex]?.push(index);
87
+ }
88
+ }
89
+ const ready = steps.flatMap((_step, index) => (inDegree[index] === 0 ? [index] : []));
90
+ const order = [];
91
+ for (const index of ready) {
92
+ order.push(index);
93
+ for (const dependent of dependents[index] ?? []) {
94
+ const degree = (inDegree[dependent] ?? 0) - 1;
95
+ inDegree[dependent] = degree;
96
+ if (degree === 0)
97
+ ready.push(dependent);
98
+ }
99
+ }
100
+ if (order.length !== steps.length) {
101
+ throw new InvalidError("workflow steps form a dependency cycle");
102
+ }
103
+ return order;
104
+ }
105
+ export class Workflow {
106
+ laser;
107
+ name;
108
+ budgetValue = Budget.unlimited();
109
+ route = ADVERTISED_INBOX_ROUTE;
110
+ resumeId;
111
+ steps = [];
112
+ registerRun = false;
113
+ constructor(laser, name) {
114
+ this.laser = laser;
115
+ this.name = name;
116
+ }
117
+ budget(budget) {
118
+ this.budgetValue = budget;
119
+ return this;
120
+ }
121
+ inboxRoute(route) {
122
+ this.route = route;
123
+ return this;
124
+ }
125
+ runId(runId) {
126
+ this.resumeId = runId;
127
+ return this;
128
+ }
129
+ registered() {
130
+ this.registerRun = true;
131
+ return this;
132
+ }
133
+ step(label, target, build) {
134
+ const step = {
135
+ label,
136
+ target,
137
+ build,
138
+ after: [],
139
+ exclusive: false,
140
+ onTimeout: "fail"
141
+ };
142
+ this.steps.push(step);
143
+ return new StepBuilder(this, step);
144
+ }
145
+ async run(options = {}) {
146
+ if (this.registerRun && !(await this.laser.capabilities()).agentWorkflow) {
147
+ throw new UnsupportedError("a registered workflow requires a plane that serves the run registry");
148
+ }
149
+ const source = AgentId.new(this.name);
150
+ const runId = this.resumeId ?? ConversationId.new();
151
+ let registeredRun;
152
+ if (this.registerRun) {
153
+ registeredRun = (await this.laser.runs().submitWith(this.name, { runId: runId.toString() }))
154
+ .runId;
155
+ await markRun(this.laser, source, runId, registeredRun, { kind: "known", name: "Working" });
156
+ }
157
+ try {
158
+ const outcome = await this.execute(source, runId, registeredRun, options.signal);
159
+ if (registeredRun !== undefined) {
160
+ await markRun(this.laser, source, runId, registeredRun, {
161
+ kind: "known",
162
+ name: "Completed"
163
+ });
164
+ }
165
+ return outcome;
166
+ }
167
+ catch (error) {
168
+ if (registeredRun !== undefined) {
169
+ const cancelled = error instanceof CancelledError;
170
+ try {
171
+ await markRun(this.laser, source, runId, registeredRun, { kind: "known", name: cancelled ? "Canceled" : "Failed" }, cancelled ? undefined : error instanceof Error ? error.message : String(error));
172
+ }
173
+ catch {
174
+ // Preserve the workflow failure when terminal run reporting also fails.
175
+ }
176
+ }
177
+ throw error;
178
+ }
179
+ }
180
+ async execute(source, runId, registeredRun, signal) {
181
+ const order = topologicalOrder(this.steps);
182
+ const outputs = await this.replay(runId);
183
+ const completed = order.filter((index) => outputs.has(this.steps[index]?.label ?? ""));
184
+ const started = performance.now();
185
+ let tokensSpent = 0n;
186
+ let invocations = 0;
187
+ for (const index of order) {
188
+ const step = this.steps[index];
189
+ if (step === undefined || outputs.has(step.label))
190
+ continue;
191
+ if (signal?.aborted === true) {
192
+ await this.compensate(completed, outputs);
193
+ throw new CancelledError(`workflow \`${this.name}\` was cancelled`, {
194
+ cause: signal.reason
195
+ });
196
+ }
197
+ if (registeredRun !== undefined &&
198
+ (await this.laser.runs().status(registeredRun)).cancelRequested) {
199
+ await this.compensate(completed, outputs);
200
+ throw new CancelledError(`workflow run \`${registeredRun}\` was cancelled`);
201
+ }
202
+ try {
203
+ this.validateStep(step);
204
+ this.checkDispatchFloor(started);
205
+ invocations += 1;
206
+ this.checkBudget(invocations, tokensSpent, started);
207
+ const payload = ownedBytes(await step.build({ outputs }));
208
+ const dispatched = await this.dispatch(source, step, payload, started, runId);
209
+ tokensSpent += dispatched.tokens;
210
+ if (step.verifier !== undefined && !(await step.verifier(dispatched.body))) {
211
+ throw new HandlerConfigError(`workflow step \`${step.label}\` failed verification`);
212
+ }
213
+ await this.journal(runId, step.label, dispatched.body);
214
+ outputs.set(step.label, dispatched.body);
215
+ completed.push(index);
216
+ this.checkBudget(invocations, tokensSpent, started);
217
+ }
218
+ catch (error) {
219
+ await this.compensate(completed, outputs);
220
+ throw error;
221
+ }
222
+ }
223
+ return { outputs, runId };
224
+ }
225
+ validateStep(step) {
226
+ if (step.target.kind === "broadcast") {
227
+ throw new InvalidError("a broadcast workflow step has no gather target");
228
+ }
229
+ if (step.exclusive && step.target.kind === "allCapable") {
230
+ throw new InvalidError("an exclusive step must be directed (to / toCapable)");
231
+ }
232
+ if (!step.exclusive && step.onTimeout === "reassign") {
233
+ throw new InvalidError('onTimeout("reassign") needs an exclusive step');
234
+ }
235
+ }
236
+ checkDispatchFloor(started) {
237
+ const ceiling = this.budgetValue.wallClockLimitMs;
238
+ if (ceiling !== undefined && ceiling - (performance.now() - started) < STEP_BUDGET_FLOOR_MS) {
239
+ throw new BudgetExceededError(BigInt(Math.trunc(ceiling * 1000)), BigInt(Math.trunc((performance.now() - started) * 1000)));
240
+ }
241
+ }
242
+ async dispatch(source, step, payload, started, runId) {
243
+ if (step.target.kind === "allCapable") {
244
+ const bodies = await this.laser.scatter(source, step.target.selector, payload, this.route, this.stepDeadline(started));
245
+ if (bodies.length === 0) {
246
+ throw new HandlerConfigError("no capable agent completed the all-capable step");
247
+ }
248
+ return {
249
+ kind: "completed",
250
+ body: new TextEncoder().encode(bodies.map((body) => new TextDecoder().decode(body)).join("\n")),
251
+ tokens: 0n
252
+ };
253
+ }
254
+ if (step.exclusive)
255
+ return this.dispatchExclusive(source, step, payload, started, runId);
256
+ const outcome = stepDispatch(await this.laser
257
+ .contract(step.target)
258
+ .from(source)
259
+ .payload(payload)
260
+ .inboxRoute(this.route)
261
+ .deadline(this.stepDeadline(started))
262
+ .send());
263
+ if (outcome.kind !== "completed") {
264
+ throw new HandlerConfigError("a workflow step did not complete");
265
+ }
266
+ return outcome;
267
+ }
268
+ async dispatchExclusive(source, step, payload, started, runId) {
269
+ const capabilities = await this.laser.capabilities();
270
+ if (!capabilities.kv.casFenced) {
271
+ throw new UnsupportedError("an exclusive step needs the plane's monotonic fence sequence");
272
+ }
273
+ const taskConversation = ConversationId.derive(`${runId.toString()}/${step.label}`);
274
+ const attempts = step.onTimeout === "reassign" ? MAX_REASSIGNMENTS + 1 : 1;
275
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
276
+ const lease = await this.laser
277
+ .kv(step.fenceNamespace ?? WORKFLOW_FENCE_NAMESPACE)
278
+ .lease(new TextEncoder().encode(runId.toString()), WORKFLOW_LEASE_TTL_MICROS);
279
+ const outcome = stepDispatch(await this.laser
280
+ .contract(step.target)
281
+ .from(source)
282
+ .payload(payload)
283
+ .inboxRoute(this.route)
284
+ .deadline(this.stepDeadline(started))
285
+ .fence(lease.token)
286
+ .conversation(taskConversation)
287
+ .send());
288
+ if (outcome.kind === "completed")
289
+ return outcome;
290
+ if (outcome.kind !== "timedOut")
291
+ break;
292
+ }
293
+ throw new HandlerConfigError("an exclusive workflow step did not complete");
294
+ }
295
+ async replay(runId) {
296
+ const messages = await this.laser
297
+ .context(runId)
298
+ .fetch([AgentTopic.WorkflowJournal], Number.MAX_SAFE_INTEGER);
299
+ const outputs = new Map();
300
+ for (const message of messages) {
301
+ try {
302
+ const entry = decodeJournalEntry(message.payload);
303
+ outputs.set(entry.label, entry.output);
304
+ }
305
+ catch {
306
+ // Ignore malformed or foreign journal records.
307
+ }
308
+ }
309
+ return outputs;
310
+ }
311
+ journal(runId, label, output) {
312
+ return this.laser.sendAgent(AgentTopic.WorkflowJournal, encodeJournalEntry(label, output), {
313
+ conversationId: runId
314
+ });
315
+ }
316
+ async compensate(completed, outputs) {
317
+ for (const index of [...completed].reverse()) {
318
+ const step = this.steps[index];
319
+ if (step?.compensation === undefined)
320
+ continue;
321
+ try {
322
+ const payload = ownedBytes(await step.compensation({ outputs }));
323
+ await this.laser
324
+ .contract(step.target)
325
+ .from(AgentId.new(this.name))
326
+ .payload(payload)
327
+ .inboxRoute(this.route)
328
+ .deadline(DEFAULT_STEP_DEADLINE_MS)
329
+ .send();
330
+ }
331
+ catch {
332
+ // Compensation is best effort and cannot replace the original failure.
333
+ }
334
+ }
335
+ }
336
+ stepDeadline(started) {
337
+ const ceiling = this.budgetValue.wallClockLimitMs;
338
+ return ceiling === undefined
339
+ ? DEFAULT_STEP_DEADLINE_MS
340
+ : Math.min(Math.max(0, ceiling - (performance.now() - started)), DEFAULT_STEP_DEADLINE_MS);
341
+ }
342
+ checkBudget(invocations, tokensSpent, started) {
343
+ const invocationLimit = this.budgetValue.invocationLimit;
344
+ if (invocationLimit !== undefined && invocations > invocationLimit) {
345
+ throw new BudgetExceededError(BigInt(invocationLimit), BigInt(invocations));
346
+ }
347
+ const tokenLimit = this.budgetValue.tokenLimit;
348
+ if (tokenLimit !== undefined && tokensSpent > tokenLimit) {
349
+ throw new BudgetExceededError(tokenLimit, tokensSpent);
350
+ }
351
+ const wallClockLimitMs = this.budgetValue.wallClockLimitMs;
352
+ const elapsed = performance.now() - started;
353
+ if (wallClockLimitMs !== undefined && elapsed > wallClockLimitMs) {
354
+ throw new BudgetExceededError(BigInt(Math.trunc(wallClockLimitMs * 1000)), BigInt(Math.trunc(elapsed * 1000)));
355
+ }
356
+ }
357
+ }
358
+ export class StepBuilder {
359
+ owner;
360
+ current;
361
+ constructor(owner, current) {
362
+ this.owner = owner;
363
+ this.current = current;
364
+ }
365
+ after(label) {
366
+ this.current.after.push(label);
367
+ return this;
368
+ }
369
+ verifyWith(verifier) {
370
+ this.current.verifier = verifier;
371
+ return this;
372
+ }
373
+ exclusive() {
374
+ this.current.exclusive = true;
375
+ return this;
376
+ }
377
+ exclusiveIn(namespace) {
378
+ this.current.exclusive = true;
379
+ this.current.fenceNamespace = namespace;
380
+ return this;
381
+ }
382
+ onTimeout(onTimeout) {
383
+ this.current.onTimeout = onTimeout;
384
+ return this;
385
+ }
386
+ compensateWith(compensation) {
387
+ this.current.compensation = compensation;
388
+ return this;
389
+ }
390
+ budget(budget) {
391
+ this.owner.budget(budget);
392
+ return this;
393
+ }
394
+ inboxRoute(route) {
395
+ this.owner.inboxRoute(route);
396
+ return this;
397
+ }
398
+ runId(runId) {
399
+ this.owner.runId(runId);
400
+ return this;
401
+ }
402
+ registered() {
403
+ this.owner.registered();
404
+ return this;
405
+ }
406
+ step(label, target, build) {
407
+ return this.owner.step(label, target, build);
408
+ }
409
+ done() {
410
+ return this.owner;
411
+ }
412
+ run(options = {}) {
413
+ return this.owner.run(options);
414
+ }
415
+ }
416
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/agent/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,OAAO,EAAiB,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAgC,MAAM,aAAa,CAAA;AAElF,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAChC,MAAM,wBAAwB,GAAG,MAAM,CAAA;AACvC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAC3B,MAAM,wBAAwB,GAAG,qBAAqB,CAAA;AACtD,MAAM,yBAAyB,GAAG,SAAW,CAAA;AAE7C,MAAM,OAAO,MAAM;IAEN,UAAU;IACV,gBAAgB;IAChB,eAAe;IAH1B,YACW,UAAmB,EACnB,gBAAyB,EACzB,eAAwB;0BAFxB,UAAU;gCACV,gBAAgB;+BAChB,eAAe;IACvB,CAAC;IAEJ,MAAM,CAAC,SAAS;QACd,OAAO,IAAI,MAAM,EAAE,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAc;QAC1B,IAAI,MAAM,GAAG,EAAE;YAAE,MAAM,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAA;QAC5E,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED,SAAS,CAAC,YAAoB;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,YAAY,CAAC,wDAAwD,CAAC,CAAA;QAClF,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IACxE,CAAC;IAED,WAAW,CAAC,WAAmB;QAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,YAAY,CAAC,uDAAuD,CAAC,CAAA;QACjF,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;IACxE,CAAC;CACF;AAwCD,SAAS,YAAY,CAAC,QAAkB;IACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAA;QAC5C,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtC,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY;SAC1E,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;AACvF,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAmB;IAI7C,MAAM,OAAO,GAAG,wBAAwB,CAAA;IACxC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;IACpE,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;QACxD,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;KAC1D,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,MAAkB;IAC3D,OAAO,WAAW,CAChB,IAAI,GAAG,CAAC;QACN;YACE,eAAe;YACf,IAAI,GAAG,CAAkB;gBACvB,CAAC,OAAO,EAAE,KAAK,CAAC;gBAChB,CAAC,QAAQ,EAAE,MAAM,CAAC;aACnB,CAAC;SACH;KACF,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAA+C;IAE/C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACxE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAc,CAAC,CAAA;IAC7E,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC/C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,YAAY,CACpB,mBAAmB,IAAI,CAAC,KAAK,gCAAgC,UAAU,IAAI,CAC5E,CAAA;YACH,CAAC;YACD,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YAC5C,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrF,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YAC7C,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM,CAAA;YAC5B,IAAI,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,YAAY,CAAC,wCAAwC,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,OAAO,QAAQ;IAQA,KAAK;IACb,IAAI;IARP,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IAChC,KAAK,GAAe,sBAAsB,CAAA;IAC1C,QAAQ,CAA4B;IAC3B,KAAK,GAAW,EAAE,CAAA;IAC3B,WAAW,GAAG,KAAK,CAAA;IAE3B,YACmB,KAAY,EACpB,IAAY;qBADJ,KAAK;oBACb,IAAI;IACZ,CAAC;IAEJ,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,KAAiB;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,KAAqB;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;QAC/C,MAAM,IAAI,GAAS;YACjB,KAAK;YACL,MAAM;YACN,KAAK;YACL,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,MAAM;SAClB,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAO,GAAuB,EAAE;QACxC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;YACzE,MAAM,IAAI,gBAAgB,CACxB,qEAAqE,CACtE,CAAA;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,GAAG,EAAE,CAAA;QACnD,IAAI,aAAiC,CAAA;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;iBACzF,KAAK,CAAA;YACR,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7F,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAChF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;oBACtD,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,KAAK,YAAY,cAAc,CAAA;gBACjD,IAAI,CAAC;oBACH,MAAM,OAAO,CACX,IAAI,CAAC,KAAK,EACV,MAAM,EACN,KAAK,EACL,aAAa,EACb,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,EAC1D,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC/E,CAAA;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,wEAAwE;gBAC1E,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAe,EACf,KAAqB,EACrB,aAAiC,EACjC,MAA+B;QAE/B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QACtF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QACjC,IAAI,WAAW,GAAG,EAAE,CAAA;QACpB,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAC3D,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACzC,MAAM,IAAI,cAAc,CAAC,cAAc,IAAI,CAAC,IAAI,kBAAkB,EAAE;oBAClE,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,CAAC,CAAA;YACJ,CAAC;YACD,IACE,aAAa,KAAK,SAAS;gBAC3B,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,EAC/D,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACzC,MAAM,IAAI,cAAc,CAAC,kBAAkB,aAAa,kBAAkB,CAAC,CAAA;YAC7E,CAAC;YACD,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBACvB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBAChC,WAAW,IAAI,CAAC,CAAA;gBAChB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;gBACnD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;gBACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC7E,WAAW,IAAI,UAAU,CAAC,MAAM,CAAA;gBAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC3E,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,IAAI,CAAC,KAAK,wBAAwB,CAAC,CAAA;gBACrF,CAAC;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;gBACtD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;gBACxC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBACzC,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAEO,YAAY,CAAC,IAAU;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,YAAY,CAAC,gDAAgD,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACxD,MAAM,IAAI,YAAY,CAAC,qDAAqD,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACrD,MAAM,IAAI,YAAY,CAAC,+CAA+C,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAA;QACjD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,oBAAoB,EAAE,CAAC;YAC5F,MAAM,IAAI,mBAAmB,CAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CACzD,CAAA;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,MAAe,EACf,IAAU,EACV,OAAmB,EACnB,OAAe,EACf,KAAqB;QAErB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACrC,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,OAAO,EACP,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAC3B,CAAA;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,kBAAkB,CAAC,iDAAiD,CAAC,CAAA;YACjF,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChE;gBACD,MAAM,EAAE,EAAE;aACX,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QACxF,MAAM,OAAO,GAAG,YAAY,CAC1B,MAAM,IAAI,CAAC,KAAK;aACb,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;aACrB,IAAI,CAAC,MAAM,CAAC;aACZ,OAAO,CAAC,OAAO,CAAC;aAChB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;aACtB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aACpC,IAAI,EAAE,CACV,CAAA;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,kBAAkB,CAAC,kCAAkC,CAAC,CAAA;QAClE,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,MAAe,EACf,IAAU,EACV,OAAmB,EACnB,OAAe,EACf,KAAqB;QAErB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;QACpD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,gBAAgB,CAAC,8DAA8D,CAAC,CAAA;QAC5F,CAAC;QACD,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1E,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK;iBAC3B,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;iBACnD,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,yBAAyB,CAAC,CAAA;YAC/E,MAAM,OAAO,GAAG,YAAY,CAC1B,MAAM,IAAI,CAAC,KAAK;iBACb,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;iBACrB,IAAI,CAAC,MAAM,CAAC;iBACZ,OAAO,CAAC,OAAO,CAAC;iBAChB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;iBACtB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACpC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;iBAClB,YAAY,CAAC,gBAAgB,CAAC;iBAC9B,IAAI,EAAE,CACV,CAAA;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,OAAO,CAAA;YAChD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;gBAAE,MAAK;QACxC,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,6CAA6C,CAAC,CAAA;IAC7E,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAAqB;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK;aAC9B,OAAO,CAAC,KAAK,CAAC;aACd,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAA;QAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,OAAO,CAAC,KAAqB,EAAE,KAAa,EAAE,MAAkB;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACzF,cAAc,EAAE,KAAK;SACtB,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,SAA4B,EAC5B,OAAwC;QAExC,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC9B,IAAI,IAAI,EAAE,YAAY,KAAK,SAAS;gBAAE,SAAQ;YAC9C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;gBAChE,MAAM,IAAI,CAAC,KAAK;qBACb,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;qBACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC5B,OAAO,CAAC,OAAO,CAAC;qBAChB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;qBACtB,QAAQ,CAAC,wBAAwB,CAAC;qBAClC,IAAI,EAAE,CAAA;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,OAAe;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAA;QACjD,OAAO,OAAO,KAAK,SAAS;YAC1B,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAA;IAC9F,CAAC;IAEO,WAAW,CAAC,WAAmB,EAAE,WAAmB,EAAE,OAAe;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAA;QACxD,IAAI,eAAe,KAAK,SAAS,IAAI,WAAW,GAAG,eAAe,EAAE,CAAC;YACnE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;QAC7E,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAA;QAC9C,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YACzD,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACxD,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAA;QAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;QAC3C,IAAI,gBAAgB,KAAK,SAAS,IAAI,OAAO,GAAG,gBAAgB,EAAE,CAAC;YACjE,MAAM,IAAI,mBAAmB,CAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,EAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CACnC,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IAEH,KAAK;IACL,OAAO;IAF1B,YACmB,KAAe,EACf,OAAa;qBADb,KAAK;uBACL,OAAO;IACvB,CAAC;IAEJ,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,QAA0B;QACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS;QACP,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,SAAoB;QAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,cAAc,CAAC,YAAoB;QACjC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAA;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,KAAiB;QAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,KAAqB;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAC,OAAO,GAAuB,EAAE;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;CACF"}
package/dist/blob.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { ContentType } from "./wire/content.js";
2
+ export interface BlobStore {
3
+ put(payload: Uint8Array): Promise<string>;
4
+ get(reference: string): Promise<Uint8Array>;
5
+ }
6
+ export interface CheckedBody {
7
+ readonly payload: Uint8Array;
8
+ readonly contentType?: typeof ContentType.Ref;
9
+ }
10
+ export declare function checkIn(store: BlobStore, thresholdBytes: number, payload: Uint8Array): Promise<CheckedBody>;
11
+ export declare function resolveBody(store: BlobStore, payload: Uint8Array): Promise<Uint8Array>;
12
+ //# sourceMappingURL=blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC,GAAG,CAAA;CAC9C;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAS5F"}
package/dist/blob.js ADDED
@@ -0,0 +1,34 @@
1
+ import { IntegrityError } from "./client/errors.js";
2
+ import { decodeBodyRef, encodeBodyRef, newBodyRef } from "./wire/agent.js";
3
+ import { decodeOne, encodeNamed, expectMap } from "./wire/cbor.js";
4
+ import { ContentType } from "./wire/content.js";
5
+ export async function checkIn(store, thresholdBytes, payload) {
6
+ if (payload.byteLength < thresholdBytes)
7
+ return { payload: payload.slice() };
8
+ const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", payload));
9
+ const reference = await store.put(payload.slice());
10
+ return {
11
+ payload: encodeNamed(encodeBodyRef(newBodyRef(reference, BigInt(payload.byteLength), digest))),
12
+ contentType: ContentType.Ref
13
+ };
14
+ }
15
+ export async function resolveBody(store, payload) {
16
+ const context = "body ref";
17
+ const ref = decodeBodyRef(expectMap(decodeOne(payload, context), context), context);
18
+ const resolved = await store.get(ref.reference);
19
+ const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", resolved));
20
+ if (!equalBytes(digest, ref.sha256) || BigInt(resolved.byteLength) !== ref.sizeBytes) {
21
+ throw new IntegrityError(ref.reference);
22
+ }
23
+ return resolved.slice();
24
+ }
25
+ function equalBytes(left, right) {
26
+ if (left.byteLength !== right.byteLength)
27
+ return false;
28
+ let mismatch = 0;
29
+ for (let index = 0; index < left.byteLength; index += 1) {
30
+ mismatch |= (left[index] ?? 0) ^ (right[index] ?? 0);
31
+ }
32
+ return mismatch === 0;
33
+ }
34
+ //# sourceMappingURL=blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.js","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAY/C,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,KAAgB,EAChB,cAAsB,EACtB,OAAmB;IAEnB,IAAI,OAAO,CAAC,UAAU,GAAG,cAAc;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAA;IAC5E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7E,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IAClD,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,WAAW,EAAE,WAAW,CAAC,GAAG;KAC7B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAgB,EAAE,OAAmB;IACrE,MAAM,OAAO,GAAG,UAAU,CAAA;IAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;IACnF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9E,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;QACrF,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,KAAiB;IACrD,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IACtD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,QAAQ,KAAK,CAAC,CAAA;AACvB,CAAC"}
@@ -0,0 +1,89 @@
1
+ import type { Laser } from "../client/laser.js";
2
+ import { AgentTopic } from "../provenance/agent-topic.js";
3
+ import { type AgentCardSignature, type SigningKey } from "../signing.js";
4
+ import { type AgentId } from "../types/ids.js";
5
+ import { type AgentEnvelope, type CapabilityDescriptor, type ContentRef, type TaskState } from "../wire/agent.js";
6
+ export declare const A2A_PROTOCOL_VERSION = "1.0";
7
+ export declare const A2A_JSONRPC_BINDING = "JSONRPC";
8
+ export declare const A2A_APP_ERROR_CODE = -32000;
9
+ export declare const SDK_VERSION = "0.0.1-rc.22";
10
+ export declare const A2aMethod: {
11
+ readonly MessageSend: "SendMessage";
12
+ readonly MessageStream: "SendStreamingMessage";
13
+ readonly TasksGet: "GetTask";
14
+ readonly TasksCancel: "CancelTask";
15
+ };
16
+ export type A2aMethod = (typeof A2aMethod)[keyof typeof A2aMethod];
17
+ export interface AgentInterface {
18
+ readonly url: string;
19
+ readonly protocolBinding: string;
20
+ readonly protocolVersion: string;
21
+ }
22
+ export interface AgentCardCapabilities {
23
+ readonly streaming: boolean;
24
+ readonly pushNotifications: boolean;
25
+ readonly stateTransitionHistory: boolean;
26
+ readonly extendedAgentCard: boolean;
27
+ }
28
+ export interface AgentSkill {
29
+ readonly id: string;
30
+ readonly name: string;
31
+ readonly description: string;
32
+ readonly tags: readonly string[];
33
+ readonly inputModes?: readonly string[];
34
+ readonly outputModes?: readonly string[];
35
+ }
36
+ export interface A2aAgentCard {
37
+ readonly name: string;
38
+ readonly description: string;
39
+ readonly version: string;
40
+ readonly supportedInterfaces: readonly AgentInterface[];
41
+ readonly capabilities: AgentCardCapabilities;
42
+ readonly defaultInputModes: readonly string[];
43
+ readonly defaultOutputModes: readonly string[];
44
+ readonly skills: readonly AgentSkill[];
45
+ readonly signatures?: readonly AgentCardSignature[];
46
+ }
47
+ export interface A2aTask {
48
+ readonly id: string;
49
+ readonly status: {
50
+ readonly state: TaskState;
51
+ };
52
+ readonly artifacts: readonly {
53
+ readonly text: string;
54
+ }[];
55
+ }
56
+ export interface JsonRpcResponse {
57
+ readonly jsonrpc: "2.0";
58
+ readonly id: unknown;
59
+ readonly result?: unknown;
60
+ readonly error?: {
61
+ readonly code: number;
62
+ readonly message: string;
63
+ };
64
+ }
65
+ export declare function contentRefMode(reference: ContentRef): string;
66
+ export declare function taskFromEnvelope(taskId: string, envelope: AgentEnvelope): A2aTask;
67
+ export declare function taskToJson(task: A2aTask): unknown;
68
+ export declare class A2aBridge {
69
+ private readonly laser;
70
+ private readonly source;
71
+ private readonly requestTopic;
72
+ private readonly replyTopic;
73
+ private capabilities;
74
+ private signingKey;
75
+ private hops;
76
+ constructor(laser: Laser, source: AgentId, requestTopic: string, replyTopic: string);
77
+ withBridgeHops(previous: readonly string[]): this;
78
+ withSigningKey(key: SigningKey): this;
79
+ withCapabilities(capabilities: readonly CapabilityDescriptor[]): this;
80
+ submit(params: unknown): Promise<A2aTask>;
81
+ submitJson(paramsJson: Uint8Array): Promise<A2aTask>;
82
+ task(id: string): Promise<A2aTask>;
83
+ cancel(id: string): Promise<A2aTask>;
84
+ card(): A2aAgentCard;
85
+ signedCard(key: SigningKey): A2aAgentCard;
86
+ handleRpc(input: unknown): Promise<JsonRpcResponse>;
87
+ }
88
+ export { AgentTopic };
89
+ //# sourceMappingURL=a2a.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/bridges/a2a.ts"],"names":[],"mappings":"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"}