@vauban-org/agent-sdk 0.16.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 (1238) hide show
  1. package/CONTRACT.md +6968 -0
  2. package/README.md +205 -0
  3. package/dist/adapters/hitl/memory-state-store.d.ts +23 -0
  4. package/dist/adapters/hitl/memory-state-store.d.ts.map +1 -0
  5. package/dist/adapters/hitl/memory-state-store.js +72 -0
  6. package/dist/adapters/hitl/memory-state-store.js.map +1 -0
  7. package/dist/adapters/hitl/postgres-state-store.d.ts +29 -0
  8. package/dist/adapters/hitl/postgres-state-store.d.ts.map +1 -0
  9. package/dist/adapters/hitl/postgres-state-store.js +103 -0
  10. package/dist/adapters/hitl/postgres-state-store.js.map +1 -0
  11. package/dist/adapters/llm/anthropic-direct.d.ts +28 -0
  12. package/dist/adapters/llm/anthropic-direct.d.ts.map +1 -0
  13. package/dist/adapters/llm/anthropic-direct.js +163 -0
  14. package/dist/adapters/llm/anthropic-direct.js.map +1 -0
  15. package/dist/adapters/llm/cascade.d.ts +27 -0
  16. package/dist/adapters/llm/cascade.d.ts.map +1 -0
  17. package/dist/adapters/llm/cascade.js +88 -0
  18. package/dist/adapters/llm/cascade.js.map +1 -0
  19. package/dist/adapters/llm/litellm.d.ts +28 -0
  20. package/dist/adapters/llm/litellm.d.ts.map +1 -0
  21. package/dist/adapters/llm/litellm.js +239 -0
  22. package/dist/adapters/llm/litellm.js.map +1 -0
  23. package/dist/adapters/messaging/console.d.ts +32 -0
  24. package/dist/adapters/messaging/console.d.ts.map +1 -0
  25. package/dist/adapters/messaging/console.js +47 -0
  26. package/dist/adapters/messaging/console.js.map +1 -0
  27. package/dist/adapters/messaging/discord.d.ts +34 -0
  28. package/dist/adapters/messaging/discord.d.ts.map +1 -0
  29. package/dist/adapters/messaging/discord.js +86 -0
  30. package/dist/adapters/messaging/discord.js.map +1 -0
  31. package/dist/adapters/messaging/mcp.d.ts +53 -0
  32. package/dist/adapters/messaging/mcp.d.ts.map +1 -0
  33. package/dist/adapters/messaging/mcp.js +43 -0
  34. package/dist/adapters/messaging/mcp.js.map +1 -0
  35. package/dist/adapters/messaging/slack.d.ts +21 -0
  36. package/dist/adapters/messaging/slack.d.ts.map +1 -0
  37. package/dist/adapters/messaging/slack.js +71 -0
  38. package/dist/adapters/messaging/slack.js.map +1 -0
  39. package/dist/adapters/messaging/telegram.d.ts +31 -0
  40. package/dist/adapters/messaging/telegram.d.ts.map +1 -0
  41. package/dist/adapters/messaging/telegram.js +85 -0
  42. package/dist/adapters/messaging/telegram.js.map +1 -0
  43. package/dist/adapters/registry/memory.d.ts +40 -0
  44. package/dist/adapters/registry/memory.d.ts.map +1 -0
  45. package/dist/adapters/registry/memory.js +71 -0
  46. package/dist/adapters/registry/memory.js.map +1 -0
  47. package/dist/adapters/registry/postgres.d.ts +39 -0
  48. package/dist/adapters/registry/postgres.d.ts.map +1 -0
  49. package/dist/adapters/registry/postgres.js +124 -0
  50. package/dist/adapters/registry/postgres.js.map +1 -0
  51. package/dist/agents/index.d.ts +2 -0
  52. package/dist/agents/index.d.ts.map +1 -0
  53. package/dist/agents/index.js +3 -0
  54. package/dist/agents/index.js.map +1 -0
  55. package/dist/agents/trading.d.ts +99 -0
  56. package/dist/agents/trading.d.ts.map +1 -0
  57. package/dist/agents/trading.js +39 -0
  58. package/dist/agents/trading.js.map +1 -0
  59. package/dist/auth/errors.d.ts +38 -0
  60. package/dist/auth/errors.d.ts.map +1 -0
  61. package/dist/auth/errors.js +57 -0
  62. package/dist/auth/errors.js.map +1 -0
  63. package/dist/auth/nonce-store.d.ts +52 -0
  64. package/dist/auth/nonce-store.d.ts.map +1 -0
  65. package/dist/auth/nonce-store.js +55 -0
  66. package/dist/auth/nonce-store.js.map +1 -0
  67. package/dist/auth/sign-event.d.ts +28 -0
  68. package/dist/auth/sign-event.d.ts.map +1 -0
  69. package/dist/auth/sign-event.js +42 -0
  70. package/dist/auth/sign-event.js.map +1 -0
  71. package/dist/auth/verify-event.d.ts +36 -0
  72. package/dist/auth/verify-event.d.ts.map +1 -0
  73. package/dist/auth/verify-event.js +78 -0
  74. package/dist/auth/verify-event.js.map +1 -0
  75. package/dist/boot/init-sdk.d.ts +69 -0
  76. package/dist/boot/init-sdk.d.ts.map +1 -0
  77. package/dist/boot/init-sdk.js +53 -0
  78. package/dist/boot/init-sdk.js.map +1 -0
  79. package/dist/boot/load-agent-context.d.ts +82 -0
  80. package/dist/boot/load-agent-context.d.ts.map +1 -0
  81. package/dist/boot/load-agent-context.js +90 -0
  82. package/dist/boot/load-agent-context.js.map +1 -0
  83. package/dist/boot/load-recent-memory.d.ts +47 -0
  84. package/dist/boot/load-recent-memory.d.ts.map +1 -0
  85. package/dist/boot/load-recent-memory.js +56 -0
  86. package/dist/boot/load-recent-memory.js.map +1 -0
  87. package/dist/budget/budget-state.d.ts +88 -0
  88. package/dist/budget/budget-state.d.ts.map +1 -0
  89. package/dist/budget/budget-state.js +172 -0
  90. package/dist/budget/budget-state.js.map +1 -0
  91. package/dist/budget/index.d.ts +3 -0
  92. package/dist/budget/index.d.ts.map +1 -0
  93. package/dist/budget/index.js +2 -0
  94. package/dist/budget/index.js.map +1 -0
  95. package/dist/clients/agents.d.ts +40 -0
  96. package/dist/clients/agents.d.ts.map +1 -0
  97. package/dist/clients/agents.js +85 -0
  98. package/dist/clients/agents.js.map +1 -0
  99. package/dist/clients/index.d.ts +7 -0
  100. package/dist/clients/index.d.ts.map +1 -0
  101. package/dist/clients/index.js +7 -0
  102. package/dist/clients/index.js.map +1 -0
  103. package/dist/clients/messaging-adapters.d.ts +51 -0
  104. package/dist/clients/messaging-adapters.d.ts.map +1 -0
  105. package/dist/clients/messaging-adapters.js +118 -0
  106. package/dist/clients/messaging-adapters.js.map +1 -0
  107. package/dist/clients/pipelines.d.ts +43 -0
  108. package/dist/clients/pipelines.d.ts.map +1 -0
  109. package/dist/clients/pipelines.js +96 -0
  110. package/dist/clients/pipelines.js.map +1 -0
  111. package/dist/compute/strategies/best-of-n.d.ts +46 -0
  112. package/dist/compute/strategies/best-of-n.d.ts.map +1 -0
  113. package/dist/compute/strategies/best-of-n.js +112 -0
  114. package/dist/compute/strategies/best-of-n.js.map +1 -0
  115. package/dist/compute/strategies/bon-mav.d.ts +65 -0
  116. package/dist/compute/strategies/bon-mav.d.ts.map +1 -0
  117. package/dist/compute/strategies/bon-mav.js +154 -0
  118. package/dist/compute/strategies/bon-mav.js.map +1 -0
  119. package/dist/compute/strategies/single-shot.d.ts +17 -0
  120. package/dist/compute/strategies/single-shot.d.ts.map +1 -0
  121. package/dist/compute/strategies/single-shot.js +36 -0
  122. package/dist/compute/strategies/single-shot.js.map +1 -0
  123. package/dist/compute/types.d.ts +30 -0
  124. package/dist/compute/types.d.ts.map +1 -0
  125. package/dist/compute/types.js +8 -0
  126. package/dist/compute/types.js.map +1 -0
  127. package/dist/compute/verifier.d.ts +55 -0
  128. package/dist/compute/verifier.d.ts.map +1 -0
  129. package/dist/compute/verifier.js +35 -0
  130. package/dist/compute/verifier.js.map +1 -0
  131. package/dist/compute/with-compute.d.ts +50 -0
  132. package/dist/compute/with-compute.d.ts.map +1 -0
  133. package/dist/compute/with-compute.js +69 -0
  134. package/dist/compute/with-compute.js.map +1 -0
  135. package/dist/constitution/axioms.d.ts +65 -0
  136. package/dist/constitution/axioms.d.ts.map +1 -0
  137. package/dist/constitution/axioms.js +496 -0
  138. package/dist/constitution/axioms.js.map +1 -0
  139. package/dist/constitution/gate.d.ts +47 -0
  140. package/dist/constitution/gate.d.ts.map +1 -0
  141. package/dist/constitution/gate.js +143 -0
  142. package/dist/constitution/gate.js.map +1 -0
  143. package/dist/constitution/index.d.ts +20 -0
  144. package/dist/constitution/index.d.ts.map +1 -0
  145. package/dist/constitution/index.js +15 -0
  146. package/dist/constitution/index.js.map +1 -0
  147. package/dist/constitution/scorer.d.ts +67 -0
  148. package/dist/constitution/scorer.d.ts.map +1 -0
  149. package/dist/constitution/scorer.js +111 -0
  150. package/dist/constitution/scorer.js.map +1 -0
  151. package/dist/constitution/signal.d.ts +41 -0
  152. package/dist/constitution/signal.d.ts.map +1 -0
  153. package/dist/constitution/signal.js +61 -0
  154. package/dist/constitution/signal.js.map +1 -0
  155. package/dist/constitution/types.d.ts +295 -0
  156. package/dist/constitution/types.d.ts.map +1 -0
  157. package/dist/constitution/types.js +59 -0
  158. package/dist/constitution/types.js.map +1 -0
  159. package/dist/counterfactual/index.d.ts +11 -0
  160. package/dist/counterfactual/index.d.ts.map +1 -0
  161. package/dist/counterfactual/index.js +10 -0
  162. package/dist/counterfactual/index.js.map +1 -0
  163. package/dist/counterfactual/replay-with-alt.d.ts +137 -0
  164. package/dist/counterfactual/replay-with-alt.d.ts.map +1 -0
  165. package/dist/counterfactual/replay-with-alt.js +191 -0
  166. package/dist/counterfactual/replay-with-alt.js.map +1 -0
  167. package/dist/dataops/index.d.ts +5 -0
  168. package/dist/dataops/index.d.ts.map +1 -0
  169. package/dist/dataops/index.js +3 -0
  170. package/dist/dataops/index.js.map +1 -0
  171. package/dist/dataops/starkscan.d.ts +13 -0
  172. package/dist/dataops/starkscan.d.ts.map +1 -0
  173. package/dist/dataops/starkscan.js +12 -0
  174. package/dist/dataops/starkscan.js.map +1 -0
  175. package/dist/dataops/voyager.d.ts +58 -0
  176. package/dist/dataops/voyager.d.ts.map +1 -0
  177. package/dist/dataops/voyager.js +146 -0
  178. package/dist/dataops/voyager.js.map +1 -0
  179. package/dist/deprecation.d.ts +49 -0
  180. package/dist/deprecation.d.ts.map +1 -0
  181. package/dist/deprecation.js +84 -0
  182. package/dist/deprecation.js.map +1 -0
  183. package/dist/durable/bullmq-runner.d.ts +138 -0
  184. package/dist/durable/bullmq-runner.d.ts.map +1 -0
  185. package/dist/durable/bullmq-runner.js +378 -0
  186. package/dist/durable/bullmq-runner.js.map +1 -0
  187. package/dist/durable/index.d.ts +3 -0
  188. package/dist/durable/index.d.ts.map +1 -0
  189. package/dist/durable/index.js +2 -0
  190. package/dist/durable/index.js.map +1 -0
  191. package/dist/economy/circuit-breaker.d.ts +37 -0
  192. package/dist/economy/circuit-breaker.d.ts.map +1 -0
  193. package/dist/economy/circuit-breaker.js +104 -0
  194. package/dist/economy/circuit-breaker.js.map +1 -0
  195. package/dist/economy/economy-router.d.ts +103 -0
  196. package/dist/economy/economy-router.d.ts.map +1 -0
  197. package/dist/economy/economy-router.js +176 -0
  198. package/dist/economy/economy-router.js.map +1 -0
  199. package/dist/economy/index.d.ts +16 -0
  200. package/dist/economy/index.d.ts.map +1 -0
  201. package/dist/economy/index.js +11 -0
  202. package/dist/economy/index.js.map +1 -0
  203. package/dist/economy/outcome-tracker.d.ts +90 -0
  204. package/dist/economy/outcome-tracker.d.ts.map +1 -0
  205. package/dist/economy/outcome-tracker.js +172 -0
  206. package/dist/economy/outcome-tracker.js.map +1 -0
  207. package/dist/economy/router.d.ts +97 -0
  208. package/dist/economy/router.d.ts.map +1 -0
  209. package/dist/economy/router.js +181 -0
  210. package/dist/economy/router.js.map +1 -0
  211. package/dist/economy/tier-policy.d.ts +46 -0
  212. package/dist/economy/tier-policy.d.ts.map +1 -0
  213. package/dist/economy/tier-policy.js +76 -0
  214. package/dist/economy/tier-policy.js.map +1 -0
  215. package/dist/errors.d.ts +102 -0
  216. package/dist/errors.d.ts.map +1 -0
  217. package/dist/errors.js +135 -0
  218. package/dist/errors.js.map +1 -0
  219. package/dist/evals/datasets/index.d.ts +27 -0
  220. package/dist/evals/datasets/index.d.ts.map +1 -0
  221. package/dist/evals/datasets/index.js +279 -0
  222. package/dist/evals/datasets/index.js.map +1 -0
  223. package/dist/evals/harness.d.ts +52 -0
  224. package/dist/evals/harness.d.ts.map +1 -0
  225. package/dist/evals/harness.js +108 -0
  226. package/dist/evals/harness.js.map +1 -0
  227. package/dist/evals/index.d.ts +5 -0
  228. package/dist/evals/index.d.ts.map +1 -0
  229. package/dist/evals/index.js +3 -0
  230. package/dist/evals/index.js.map +1 -0
  231. package/dist/factory/agent-factory.d.ts +86 -0
  232. package/dist/factory/agent-factory.d.ts.map +1 -0
  233. package/dist/factory/agent-factory.js +119 -0
  234. package/dist/factory/agent-factory.js.map +1 -0
  235. package/dist/hitl/api.d.ts +38 -0
  236. package/dist/hitl/api.d.ts.map +1 -0
  237. package/dist/hitl/api.js +58 -0
  238. package/dist/hitl/api.js.map +1 -0
  239. package/dist/hitl/approval-channel.d.ts +84 -0
  240. package/dist/hitl/approval-channel.d.ts.map +1 -0
  241. package/dist/hitl/approval-channel.js +59 -0
  242. package/dist/hitl/approval-channel.js.map +1 -0
  243. package/dist/hitl/callback-handlers.d.ts +21 -0
  244. package/dist/hitl/callback-handlers.d.ts.map +1 -0
  245. package/dist/hitl/callback-handlers.js +30 -0
  246. package/dist/hitl/callback-handlers.js.map +1 -0
  247. package/dist/hitl/index.d.ts +3 -0
  248. package/dist/hitl/index.d.ts.map +1 -0
  249. package/dist/hitl/index.js +2 -0
  250. package/dist/hitl/index.js.map +1 -0
  251. package/dist/hitl/slack.d.ts +76 -0
  252. package/dist/hitl/slack.d.ts.map +1 -0
  253. package/dist/hitl/slack.js +243 -0
  254. package/dist/hitl/slack.js.map +1 -0
  255. package/dist/hitl/telegram.d.ts +74 -0
  256. package/dist/hitl/telegram.d.ts.map +1 -0
  257. package/dist/hitl/telegram.js +227 -0
  258. package/dist/hitl/telegram.js.map +1 -0
  259. package/dist/index.d.ts +173 -0
  260. package/dist/index.d.ts.map +1 -0
  261. package/dist/index.js +147 -0
  262. package/dist/index.js.map +1 -0
  263. package/dist/llm/parse-structured-output.d.ts +55 -0
  264. package/dist/llm/parse-structured-output.d.ts.map +1 -0
  265. package/dist/llm/parse-structured-output.js +80 -0
  266. package/dist/llm/parse-structured-output.js.map +1 -0
  267. package/dist/loop/index.d.ts +7 -0
  268. package/dist/loop/index.d.ts.map +1 -0
  269. package/dist/loop/index.js +5 -0
  270. package/dist/loop/index.js.map +1 -0
  271. package/dist/loop/minimal-loop.d.ts +81 -0
  272. package/dist/loop/minimal-loop.d.ts.map +1 -0
  273. package/dist/loop/minimal-loop.js +318 -0
  274. package/dist/loop/minimal-loop.js.map +1 -0
  275. package/dist/loop/sdk-loop.d.ts +103 -0
  276. package/dist/loop/sdk-loop.d.ts.map +1 -0
  277. package/dist/loop/sdk-loop.js +344 -0
  278. package/dist/loop/sdk-loop.js.map +1 -0
  279. package/dist/mcp/index.d.ts +38 -0
  280. package/dist/mcp/index.d.ts.map +1 -0
  281. package/dist/mcp/index.js +113 -0
  282. package/dist/mcp/index.js.map +1 -0
  283. package/dist/metrics/create-agent-metrics.d.ts +78 -0
  284. package/dist/metrics/create-agent-metrics.d.ts.map +1 -0
  285. package/dist/metrics/create-agent-metrics.js +115 -0
  286. package/dist/metrics/create-agent-metrics.js.map +1 -0
  287. package/dist/orchestration/bulkhead.d.ts +70 -0
  288. package/dist/orchestration/bulkhead.d.ts.map +1 -0
  289. package/dist/orchestration/bulkhead.js +99 -0
  290. package/dist/orchestration/bulkhead.js.map +1 -0
  291. package/dist/orchestration/idempotency.d.ts +52 -0
  292. package/dist/orchestration/idempotency.d.ts.map +1 -0
  293. package/dist/orchestration/idempotency.js +93 -0
  294. package/dist/orchestration/idempotency.js.map +1 -0
  295. package/dist/orchestration/index.d.ts +16 -0
  296. package/dist/orchestration/index.d.ts.map +1 -0
  297. package/dist/orchestration/index.js +15 -0
  298. package/dist/orchestration/index.js.map +1 -0
  299. package/dist/orchestration/ooda/agent-config-loader.d.ts +67 -0
  300. package/dist/orchestration/ooda/agent-config-loader.d.ts.map +1 -0
  301. package/dist/orchestration/ooda/agent-config-loader.js +65 -0
  302. package/dist/orchestration/ooda/agent-config-loader.js.map +1 -0
  303. package/dist/orchestration/ooda/agent.d.ts +54 -0
  304. package/dist/orchestration/ooda/agent.d.ts.map +1 -0
  305. package/dist/orchestration/ooda/agent.js +730 -0
  306. package/dist/orchestration/ooda/agent.js.map +1 -0
  307. package/dist/orchestration/ooda/audit-log.d.ts +26 -0
  308. package/dist/orchestration/ooda/audit-log.d.ts.map +1 -0
  309. package/dist/orchestration/ooda/audit-log.js +41 -0
  310. package/dist/orchestration/ooda/audit-log.js.map +1 -0
  311. package/dist/orchestration/ooda/brain-context.d.ts +121 -0
  312. package/dist/orchestration/ooda/brain-context.d.ts.map +1 -0
  313. package/dist/orchestration/ooda/brain-context.js +149 -0
  314. package/dist/orchestration/ooda/brain-context.js.map +1 -0
  315. package/dist/orchestration/ooda/child-agent.d.ts +55 -0
  316. package/dist/orchestration/ooda/child-agent.d.ts.map +1 -0
  317. package/dist/orchestration/ooda/child-agent.js +16 -0
  318. package/dist/orchestration/ooda/child-agent.js.map +1 -0
  319. package/dist/orchestration/ooda/cron-schedule.d.ts +26 -0
  320. package/dist/orchestration/ooda/cron-schedule.d.ts.map +1 -0
  321. package/dist/orchestration/ooda/cron-schedule.js +94 -0
  322. package/dist/orchestration/ooda/cron-schedule.js.map +1 -0
  323. package/dist/orchestration/ooda/debate.d.ts +68 -0
  324. package/dist/orchestration/ooda/debate.d.ts.map +1 -0
  325. package/dist/orchestration/ooda/debate.js +39 -0
  326. package/dist/orchestration/ooda/debate.js.map +1 -0
  327. package/dist/orchestration/ooda/economic-observer.d.ts +50 -0
  328. package/dist/orchestration/ooda/economic-observer.d.ts.map +1 -0
  329. package/dist/orchestration/ooda/economic-observer.js +36 -0
  330. package/dist/orchestration/ooda/economic-observer.js.map +1 -0
  331. package/dist/orchestration/ooda/errors.d.ts +21 -0
  332. package/dist/orchestration/ooda/errors.d.ts.map +1 -0
  333. package/dist/orchestration/ooda/errors.js +30 -0
  334. package/dist/orchestration/ooda/errors.js.map +1 -0
  335. package/dist/orchestration/ooda/execution-mode-guard.d.ts +24 -0
  336. package/dist/orchestration/ooda/execution-mode-guard.d.ts.map +1 -0
  337. package/dist/orchestration/ooda/execution-mode-guard.js +31 -0
  338. package/dist/orchestration/ooda/execution-mode-guard.js.map +1 -0
  339. package/dist/orchestration/ooda/factory.d.ts +12 -0
  340. package/dist/orchestration/ooda/factory.d.ts.map +1 -0
  341. package/dist/orchestration/ooda/factory.js +27 -0
  342. package/dist/orchestration/ooda/factory.js.map +1 -0
  343. package/dist/orchestration/ooda/guardrails.d.ts +65 -0
  344. package/dist/orchestration/ooda/guardrails.d.ts.map +1 -0
  345. package/dist/orchestration/ooda/guardrails.js +127 -0
  346. package/dist/orchestration/ooda/guardrails.js.map +1 -0
  347. package/dist/orchestration/ooda/guards/always-on.d.ts +15 -0
  348. package/dist/orchestration/ooda/guards/always-on.d.ts.map +1 -0
  349. package/dist/orchestration/ooda/guards/always-on.js +19 -0
  350. package/dist/orchestration/ooda/guards/always-on.js.map +1 -0
  351. package/dist/orchestration/ooda/guards/business-hours.d.ts +46 -0
  352. package/dist/orchestration/ooda/guards/business-hours.d.ts.map +1 -0
  353. package/dist/orchestration/ooda/guards/business-hours.js +78 -0
  354. package/dist/orchestration/ooda/guards/business-hours.js.map +1 -0
  355. package/dist/orchestration/ooda/guards/index.d.ts +14 -0
  356. package/dist/orchestration/ooda/guards/index.d.ts.map +1 -0
  357. package/dist/orchestration/ooda/guards/index.js +14 -0
  358. package/dist/orchestration/ooda/guards/index.js.map +1 -0
  359. package/dist/orchestration/ooda/guards/redis-circuit-breaker.d.ts +84 -0
  360. package/dist/orchestration/ooda/guards/redis-circuit-breaker.d.ts.map +1 -0
  361. package/dist/orchestration/ooda/guards/redis-circuit-breaker.js +96 -0
  362. package/dist/orchestration/ooda/guards/redis-circuit-breaker.js.map +1 -0
  363. package/dist/orchestration/ooda/guards/rth-session.d.ts +27 -0
  364. package/dist/orchestration/ooda/guards/rth-session.d.ts.map +1 -0
  365. package/dist/orchestration/ooda/guards/rth-session.js +95 -0
  366. package/dist/orchestration/ooda/guards/rth-session.js.map +1 -0
  367. package/dist/orchestration/ooda/handoff.d.ts +82 -0
  368. package/dist/orchestration/ooda/handoff.d.ts.map +1 -0
  369. package/dist/orchestration/ooda/handoff.js +86 -0
  370. package/dist/orchestration/ooda/handoff.js.map +1 -0
  371. package/dist/orchestration/ooda/hitl-gate.d.ts +57 -0
  372. package/dist/orchestration/ooda/hitl-gate.d.ts.map +1 -0
  373. package/dist/orchestration/ooda/hitl-gate.js +107 -0
  374. package/dist/orchestration/ooda/hitl-gate.js.map +1 -0
  375. package/dist/orchestration/ooda/index.d.ts +48 -0
  376. package/dist/orchestration/ooda/index.d.ts.map +1 -0
  377. package/dist/orchestration/ooda/index.js +33 -0
  378. package/dist/orchestration/ooda/index.js.map +1 -0
  379. package/dist/orchestration/ooda/inner-monologue.d.ts +69 -0
  380. package/dist/orchestration/ooda/inner-monologue.d.ts.map +1 -0
  381. package/dist/orchestration/ooda/inner-monologue.js +69 -0
  382. package/dist/orchestration/ooda/inner-monologue.js.map +1 -0
  383. package/dist/orchestration/ooda/learn.d.ts +60 -0
  384. package/dist/orchestration/ooda/learn.d.ts.map +1 -0
  385. package/dist/orchestration/ooda/learn.js +94 -0
  386. package/dist/orchestration/ooda/learn.js.map +1 -0
  387. package/dist/orchestration/ooda/multimodal.d.ts +91 -0
  388. package/dist/orchestration/ooda/multimodal.d.ts.map +1 -0
  389. package/dist/orchestration/ooda/multimodal.js +88 -0
  390. package/dist/orchestration/ooda/multimodal.js.map +1 -0
  391. package/dist/orchestration/ooda/phase-routing.d.ts +41 -0
  392. package/dist/orchestration/ooda/phase-routing.d.ts.map +1 -0
  393. package/dist/orchestration/ooda/phase-routing.js +43 -0
  394. package/dist/orchestration/ooda/phase-routing.js.map +1 -0
  395. package/dist/orchestration/ooda/plan-execute.d.ts +55 -0
  396. package/dist/orchestration/ooda/plan-execute.d.ts.map +1 -0
  397. package/dist/orchestration/ooda/plan-execute.js +41 -0
  398. package/dist/orchestration/ooda/plan-execute.js.map +1 -0
  399. package/dist/orchestration/ooda/react-loop.d.ts +96 -0
  400. package/dist/orchestration/ooda/react-loop.d.ts.map +1 -0
  401. package/dist/orchestration/ooda/react-loop.js +90 -0
  402. package/dist/orchestration/ooda/react-loop.js.map +1 -0
  403. package/dist/orchestration/ooda/reflexion.d.ts +56 -0
  404. package/dist/orchestration/ooda/reflexion.d.ts.map +1 -0
  405. package/dist/orchestration/ooda/reflexion.js +58 -0
  406. package/dist/orchestration/ooda/reflexion.js.map +1 -0
  407. package/dist/orchestration/ooda/resource-limits.d.ts +63 -0
  408. package/dist/orchestration/ooda/resource-limits.d.ts.map +1 -0
  409. package/dist/orchestration/ooda/resource-limits.js +107 -0
  410. package/dist/orchestration/ooda/resource-limits.js.map +1 -0
  411. package/dist/orchestration/ooda/run-step-persistence.d.ts +50 -0
  412. package/dist/orchestration/ooda/run-step-persistence.d.ts.map +1 -0
  413. package/dist/orchestration/ooda/run-step-persistence.js +89 -0
  414. package/dist/orchestration/ooda/run-step-persistence.js.map +1 -0
  415. package/dist/orchestration/ooda/skills.d.ts +58 -0
  416. package/dist/orchestration/ooda/skills.d.ts.map +1 -0
  417. package/dist/orchestration/ooda/skills.js +19 -0
  418. package/dist/orchestration/ooda/skills.js.map +1 -0
  419. package/dist/orchestration/ooda/structured-output.d.ts +46 -0
  420. package/dist/orchestration/ooda/structured-output.d.ts.map +1 -0
  421. package/dist/orchestration/ooda/structured-output.js +60 -0
  422. package/dist/orchestration/ooda/structured-output.js.map +1 -0
  423. package/dist/orchestration/ooda/types.d.ts +463 -0
  424. package/dist/orchestration/ooda/types.d.ts.map +1 -0
  425. package/dist/orchestration/ooda/types.js +38 -0
  426. package/dist/orchestration/ooda/types.js.map +1 -0
  427. package/dist/otel/attributes.d.ts +71 -0
  428. package/dist/otel/attributes.d.ts.map +1 -0
  429. package/dist/otel/attributes.js +56 -0
  430. package/dist/otel/attributes.js.map +1 -0
  431. package/dist/otel/index.d.ts +5 -0
  432. package/dist/otel/index.d.ts.map +1 -0
  433. package/dist/otel/index.js +5 -0
  434. package/dist/otel/index.js.map +1 -0
  435. package/dist/otel/ingest.d.ts +99 -0
  436. package/dist/otel/ingest.d.ts.map +1 -0
  437. package/dist/otel/ingest.js +192 -0
  438. package/dist/otel/ingest.js.map +1 -0
  439. package/dist/otel/trace-context.d.ts +48 -0
  440. package/dist/otel/trace-context.d.ts.map +1 -0
  441. package/dist/otel/trace-context.js +137 -0
  442. package/dist/otel/trace-context.js.map +1 -0
  443. package/dist/otel/types.d.ts +54 -0
  444. package/dist/otel/types.d.ts.map +1 -0
  445. package/dist/otel/types.js +12 -0
  446. package/dist/otel/types.js.map +1 -0
  447. package/dist/outcomes/client.d.ts +81 -0
  448. package/dist/outcomes/client.d.ts.map +1 -0
  449. package/dist/outcomes/client.js +98 -0
  450. package/dist/outcomes/client.js.map +1 -0
  451. package/dist/outcomes/compute-roi.d.ts +40 -0
  452. package/dist/outcomes/compute-roi.d.ts.map +1 -0
  453. package/dist/outcomes/compute-roi.js +58 -0
  454. package/dist/outcomes/compute-roi.js.map +1 -0
  455. package/dist/outcomes/index.d.ts +4 -0
  456. package/dist/outcomes/index.d.ts.map +1 -0
  457. package/dist/outcomes/index.js +4 -0
  458. package/dist/outcomes/index.js.map +1 -0
  459. package/dist/outcomes/meter.d.ts +73 -0
  460. package/dist/outcomes/meter.d.ts.map +1 -0
  461. package/dist/outcomes/meter.js +140 -0
  462. package/dist/outcomes/meter.js.map +1 -0
  463. package/dist/outcomes/trajectory.d.ts +53 -0
  464. package/dist/outcomes/trajectory.d.ts.map +1 -0
  465. package/dist/outcomes/trajectory.js +110 -0
  466. package/dist/outcomes/trajectory.js.map +1 -0
  467. package/dist/outcomes/types.d.ts +93 -0
  468. package/dist/outcomes/types.d.ts.map +1 -0
  469. package/dist/outcomes/types.js +8 -0
  470. package/dist/outcomes/types.js.map +1 -0
  471. package/dist/patterns/_shared/brain-logger.d.ts +12 -0
  472. package/dist/patterns/_shared/brain-logger.d.ts.map +1 -0
  473. package/dist/patterns/_shared/brain-logger.js +6 -0
  474. package/dist/patterns/_shared/brain-logger.js.map +1 -0
  475. package/dist/patterns/circuit-breaker/index.d.ts +3 -0
  476. package/dist/patterns/circuit-breaker/index.d.ts.map +1 -0
  477. package/dist/patterns/circuit-breaker/index.js +2 -0
  478. package/dist/patterns/circuit-breaker/index.js.map +1 -0
  479. package/dist/patterns/circuit-breaker/session-cb.d.ts +3 -0
  480. package/dist/patterns/circuit-breaker/session-cb.d.ts.map +1 -0
  481. package/dist/patterns/circuit-breaker/session-cb.js +175 -0
  482. package/dist/patterns/circuit-breaker/session-cb.js.map +1 -0
  483. package/dist/patterns/circuit-breaker/types.d.ts +68 -0
  484. package/dist/patterns/circuit-breaker/types.d.ts.map +1 -0
  485. package/dist/patterns/circuit-breaker/types.js +2 -0
  486. package/dist/patterns/circuit-breaker/types.js.map +1 -0
  487. package/dist/patterns/escalation/index.d.ts +3 -0
  488. package/dist/patterns/escalation/index.d.ts.map +1 -0
  489. package/dist/patterns/escalation/index.js +2 -0
  490. package/dist/patterns/escalation/index.js.map +1 -0
  491. package/dist/patterns/escalation/pyramid.d.ts +3 -0
  492. package/dist/patterns/escalation/pyramid.d.ts.map +1 -0
  493. package/dist/patterns/escalation/pyramid.js +86 -0
  494. package/dist/patterns/escalation/pyramid.js.map +1 -0
  495. package/dist/patterns/escalation/types.d.ts +46 -0
  496. package/dist/patterns/escalation/types.d.ts.map +1 -0
  497. package/dist/patterns/escalation/types.js +2 -0
  498. package/dist/patterns/escalation/types.js.map +1 -0
  499. package/dist/patterns/quality-gate/gate.d.ts +3 -0
  500. package/dist/patterns/quality-gate/gate.d.ts.map +1 -0
  501. package/dist/patterns/quality-gate/gate.js +73 -0
  502. package/dist/patterns/quality-gate/gate.js.map +1 -0
  503. package/dist/patterns/quality-gate/index.d.ts +3 -0
  504. package/dist/patterns/quality-gate/index.d.ts.map +1 -0
  505. package/dist/patterns/quality-gate/index.js +2 -0
  506. package/dist/patterns/quality-gate/index.js.map +1 -0
  507. package/dist/patterns/quality-gate/types.d.ts +41 -0
  508. package/dist/patterns/quality-gate/types.d.ts.map +1 -0
  509. package/dist/patterns/quality-gate/types.js +2 -0
  510. package/dist/patterns/quality-gate/types.js.map +1 -0
  511. package/dist/permissions/capability-gate.d.ts +57 -0
  512. package/dist/permissions/capability-gate.d.ts.map +1 -0
  513. package/dist/permissions/capability-gate.js +26 -0
  514. package/dist/permissions/capability-gate.js.map +1 -0
  515. package/dist/permissions/index.d.ts +3 -0
  516. package/dist/permissions/index.d.ts.map +1 -0
  517. package/dist/permissions/index.js +2 -0
  518. package/dist/permissions/index.js.map +1 -0
  519. package/dist/permissions/renewal-manager.d.ts +49 -0
  520. package/dist/permissions/renewal-manager.d.ts.map +1 -0
  521. package/dist/permissions/renewal-manager.js +60 -0
  522. package/dist/permissions/renewal-manager.js.map +1 -0
  523. package/dist/permissions/sdk-permissions.d.ts +48 -0
  524. package/dist/permissions/sdk-permissions.d.ts.map +1 -0
  525. package/dist/permissions/sdk-permissions.js +94 -0
  526. package/dist/permissions/sdk-permissions.js.map +1 -0
  527. package/dist/ports/agent-registry.d.ts +95 -0
  528. package/dist/ports/agent-registry.d.ts.map +1 -0
  529. package/dist/ports/agent-registry.js +16 -0
  530. package/dist/ports/agent-registry.js.map +1 -0
  531. package/dist/ports/brain.d.ts +147 -0
  532. package/dist/ports/brain.d.ts.map +1 -0
  533. package/dist/ports/brain.js +105 -0
  534. package/dist/ports/brain.js.map +1 -0
  535. package/dist/ports/db.d.ts +8 -0
  536. package/dist/ports/db.d.ts.map +1 -0
  537. package/dist/ports/db.js +2 -0
  538. package/dist/ports/db.js.map +1 -0
  539. package/dist/ports/event-bus.d.ts +167 -0
  540. package/dist/ports/event-bus.d.ts.map +1 -0
  541. package/dist/ports/event-bus.js +25 -0
  542. package/dist/ports/event-bus.js.map +1 -0
  543. package/dist/ports/eviction-policy.d.ts +92 -0
  544. package/dist/ports/eviction-policy.d.ts.map +1 -0
  545. package/dist/ports/eviction-policy.js +120 -0
  546. package/dist/ports/eviction-policy.js.map +1 -0
  547. package/dist/ports/hitl.contract.test.d.ts +9 -0
  548. package/dist/ports/hitl.contract.test.d.ts.map +1 -0
  549. package/dist/ports/hitl.contract.test.js +100 -0
  550. package/dist/ports/hitl.contract.test.js.map +1 -0
  551. package/dist/ports/hitl.d.ts +91 -0
  552. package/dist/ports/hitl.d.ts.map +1 -0
  553. package/dist/ports/hitl.js +76 -0
  554. package/dist/ports/hitl.js.map +1 -0
  555. package/dist/ports/index.d.ts +19 -0
  556. package/dist/ports/index.d.ts.map +1 -0
  557. package/dist/ports/index.js +4 -0
  558. package/dist/ports/index.js.map +1 -0
  559. package/dist/ports/key-provider.d.ts +113 -0
  560. package/dist/ports/key-provider.d.ts.map +1 -0
  561. package/dist/ports/key-provider.js +119 -0
  562. package/dist/ports/key-provider.js.map +1 -0
  563. package/dist/ports/llm-provider.contract.d.ts +24 -0
  564. package/dist/ports/llm-provider.contract.d.ts.map +1 -0
  565. package/dist/ports/llm-provider.contract.js +111 -0
  566. package/dist/ports/llm-provider.contract.js.map +1 -0
  567. package/dist/ports/llm-provider.d.ts +63 -0
  568. package/dist/ports/llm-provider.d.ts.map +1 -0
  569. package/dist/ports/llm-provider.js +13 -0
  570. package/dist/ports/llm-provider.js.map +1 -0
  571. package/dist/ports/logger.d.ts +18 -0
  572. package/dist/ports/logger.d.ts.map +1 -0
  573. package/dist/ports/logger.js +10 -0
  574. package/dist/ports/logger.js.map +1 -0
  575. package/dist/ports/messaging.contract.test.d.ts +22 -0
  576. package/dist/ports/messaging.contract.test.d.ts.map +1 -0
  577. package/dist/ports/messaging.contract.test.js +296 -0
  578. package/dist/ports/messaging.contract.test.js.map +1 -0
  579. package/dist/ports/messaging.d.ts +47 -0
  580. package/dist/ports/messaging.d.ts.map +1 -0
  581. package/dist/ports/messaging.js +24 -0
  582. package/dist/ports/messaging.js.map +1 -0
  583. package/dist/ports/outcome.d.ts +25 -0
  584. package/dist/ports/outcome.d.ts.map +1 -0
  585. package/dist/ports/outcome.js +9 -0
  586. package/dist/ports/outcome.js.map +1 -0
  587. package/dist/ports/timestamp.d.ts +53 -0
  588. package/dist/ports/timestamp.d.ts.map +1 -0
  589. package/dist/ports/timestamp.js +28 -0
  590. package/dist/ports/timestamp.js.map +1 -0
  591. package/dist/privacy/channel.d.ts +137 -0
  592. package/dist/privacy/channel.d.ts.map +1 -0
  593. package/dist/privacy/channel.js +196 -0
  594. package/dist/privacy/channel.js.map +1 -0
  595. package/dist/privacy/composition.d.ts +140 -0
  596. package/dist/privacy/composition.d.ts.map +1 -0
  597. package/dist/privacy/composition.js +182 -0
  598. package/dist/privacy/composition.js.map +1 -0
  599. package/dist/privacy/delegation.d.ts +87 -0
  600. package/dist/privacy/delegation.d.ts.map +1 -0
  601. package/dist/privacy/delegation.js +67 -0
  602. package/dist/privacy/delegation.js.map +1 -0
  603. package/dist/privacy/index.d.ts +25 -0
  604. package/dist/privacy/index.d.ts.map +1 -0
  605. package/dist/privacy/index.js +21 -0
  606. package/dist/privacy/index.js.map +1 -0
  607. package/dist/privacy/nullifier.d.ts +59 -0
  608. package/dist/privacy/nullifier.d.ts.map +1 -0
  609. package/dist/privacy/nullifier.js +70 -0
  610. package/dist/privacy/nullifier.js.map +1 -0
  611. package/dist/privacy/poseidon-felt252.d.ts +35 -0
  612. package/dist/privacy/poseidon-felt252.d.ts.map +1 -0
  613. package/dist/privacy/poseidon-felt252.js +93 -0
  614. package/dist/privacy/poseidon-felt252.js.map +1 -0
  615. package/dist/privacy/uar.d.ts +170 -0
  616. package/dist/privacy/uar.d.ts.map +1 -0
  617. package/dist/privacy/uar.js +150 -0
  618. package/dist/privacy/uar.js.map +1 -0
  619. package/dist/prompts/build-orient-prompt.d.ts +41 -0
  620. package/dist/prompts/build-orient-prompt.d.ts.map +1 -0
  621. package/dist/prompts/build-orient-prompt.js +40 -0
  622. package/dist/prompts/build-orient-prompt.js.map +1 -0
  623. package/dist/proof/chain.d.ts +90 -0
  624. package/dist/proof/chain.d.ts.map +1 -0
  625. package/dist/proof/chain.js +177 -0
  626. package/dist/proof/chain.js.map +1 -0
  627. package/dist/proof/fallback-adapter.d.ts +50 -0
  628. package/dist/proof/fallback-adapter.d.ts.map +1 -0
  629. package/dist/proof/fallback-adapter.js +99 -0
  630. package/dist/proof/fallback-adapter.js.map +1 -0
  631. package/dist/proof/index.d.ts +35 -0
  632. package/dist/proof/index.d.ts.map +1 -0
  633. package/dist/proof/index.js +161 -0
  634. package/dist/proof/index.js.map +1 -0
  635. package/dist/proof/load.d.ts +27 -0
  636. package/dist/proof/load.d.ts.map +1 -0
  637. package/dist/proof/load.js +44 -0
  638. package/dist/proof/load.js.map +1 -0
  639. package/dist/proof/otel.d.ts +25 -0
  640. package/dist/proof/otel.d.ts.map +1 -0
  641. package/dist/proof/otel.js +57 -0
  642. package/dist/proof/otel.js.map +1 -0
  643. package/dist/proof/receipt-queue.d.ts +97 -0
  644. package/dist/proof/receipt-queue.d.ts.map +1 -0
  645. package/dist/proof/receipt-queue.js +131 -0
  646. package/dist/proof/receipt-queue.js.map +1 -0
  647. package/dist/proof/sha256.d.ts +27 -0
  648. package/dist/proof/sha256.d.ts.map +1 -0
  649. package/dist/proof/sha256.js +65 -0
  650. package/dist/proof/sha256.js.map +1 -0
  651. package/dist/proof/types.d.ts +55 -0
  652. package/dist/proof/types.d.ts.map +1 -0
  653. package/dist/proof/types.js +10 -0
  654. package/dist/proof/types.js.map +1 -0
  655. package/dist/proof/verify.d.ts +28 -0
  656. package/dist/proof/verify.d.ts.map +1 -0
  657. package/dist/proof/verify.js +70 -0
  658. package/dist/proof/verify.js.map +1 -0
  659. package/dist/registry/agent-capability.d.ts +29 -0
  660. package/dist/registry/agent-capability.d.ts.map +1 -0
  661. package/dist/registry/agent-capability.js +21 -0
  662. package/dist/registry/agent-capability.js.map +1 -0
  663. package/dist/registry/agent-card.d.ts +86 -0
  664. package/dist/registry/agent-card.d.ts.map +1 -0
  665. package/dist/registry/agent-card.js +80 -0
  666. package/dist/registry/agent-card.js.map +1 -0
  667. package/dist/registry/agent-ids.d.ts +30 -0
  668. package/dist/registry/agent-ids.d.ts.map +1 -0
  669. package/dist/registry/agent-ids.js +46 -0
  670. package/dist/registry/agent-ids.js.map +1 -0
  671. package/dist/registry/agent-registry.d.ts +104 -0
  672. package/dist/registry/agent-registry.d.ts.map +1 -0
  673. package/dist/registry/agent-registry.js +277 -0
  674. package/dist/registry/agent-registry.js.map +1 -0
  675. package/dist/registry/index.d.ts +7 -0
  676. package/dist/registry/index.d.ts.map +1 -0
  677. package/dist/registry/index.js +4 -0
  678. package/dist/registry/index.js.map +1 -0
  679. package/dist/replay/clock.d.ts +69 -0
  680. package/dist/replay/clock.d.ts.map +1 -0
  681. package/dist/replay/clock.js +84 -0
  682. package/dist/replay/clock.js.map +1 -0
  683. package/dist/replay/cross-cycle.d.ts +143 -0
  684. package/dist/replay/cross-cycle.d.ts.map +1 -0
  685. package/dist/replay/cross-cycle.js +271 -0
  686. package/dist/replay/cross-cycle.js.map +1 -0
  687. package/dist/replay/http-vcr.d.ts +46 -0
  688. package/dist/replay/http-vcr.d.ts.map +1 -0
  689. package/dist/replay/http-vcr.js +87 -0
  690. package/dist/replay/http-vcr.js.map +1 -0
  691. package/dist/replay/index.d.ts +18 -0
  692. package/dist/replay/index.d.ts.map +1 -0
  693. package/dist/replay/index.js +18 -0
  694. package/dist/replay/index.js.map +1 -0
  695. package/dist/replay/llm-cache.d.ts +126 -0
  696. package/dist/replay/llm-cache.d.ts.map +1 -0
  697. package/dist/replay/llm-cache.js +114 -0
  698. package/dist/replay/llm-cache.js.map +1 -0
  699. package/dist/replay/random.d.ts +114 -0
  700. package/dist/replay/random.d.ts.map +1 -0
  701. package/dist/replay/random.js +183 -0
  702. package/dist/replay/random.js.map +1 -0
  703. package/dist/replay/replay.d.ts +160 -0
  704. package/dist/replay/replay.d.ts.map +1 -0
  705. package/dist/replay/replay.js +115 -0
  706. package/dist/replay/replay.js.map +1 -0
  707. package/dist/resilience/bulkhead.d.ts +37 -0
  708. package/dist/resilience/bulkhead.d.ts.map +1 -0
  709. package/dist/resilience/bulkhead.js +65 -0
  710. package/dist/resilience/bulkhead.js.map +1 -0
  711. package/dist/resilience/circuit-breaker.d.ts +56 -0
  712. package/dist/resilience/circuit-breaker.d.ts.map +1 -0
  713. package/dist/resilience/circuit-breaker.js +93 -0
  714. package/dist/resilience/circuit-breaker.js.map +1 -0
  715. package/dist/resilience/idempotent.d.ts +61 -0
  716. package/dist/resilience/idempotent.d.ts.map +1 -0
  717. package/dist/resilience/idempotent.js +103 -0
  718. package/dist/resilience/idempotent.js.map +1 -0
  719. package/dist/resilience/index.d.ts +28 -0
  720. package/dist/resilience/index.d.ts.map +1 -0
  721. package/dist/resilience/index.js +25 -0
  722. package/dist/resilience/index.js.map +1 -0
  723. package/dist/router/index.d.ts +3 -0
  724. package/dist/router/index.d.ts.map +1 -0
  725. package/dist/router/index.js +2 -0
  726. package/dist/router/index.js.map +1 -0
  727. package/dist/router/provider-router.d.ts +61 -0
  728. package/dist/router/provider-router.d.ts.map +1 -0
  729. package/dist/router/provider-router.js +214 -0
  730. package/dist/router/provider-router.js.map +1 -0
  731. package/dist/runs/health.d.ts +24 -0
  732. package/dist/runs/health.d.ts.map +1 -0
  733. package/dist/runs/health.js +52 -0
  734. package/dist/runs/health.js.map +1 -0
  735. package/dist/runs/index.d.ts +4 -0
  736. package/dist/runs/index.d.ts.map +1 -0
  737. package/dist/runs/index.js +4 -0
  738. package/dist/runs/index.js.map +1 -0
  739. package/dist/runs/subscribe.d.ts +34 -0
  740. package/dist/runs/subscribe.d.ts.map +1 -0
  741. package/dist/runs/subscribe.js +228 -0
  742. package/dist/runs/subscribe.js.map +1 -0
  743. package/dist/runs/types.d.ts +53 -0
  744. package/dist/runs/types.d.ts.map +1 -0
  745. package/dist/runs/types.js +11 -0
  746. package/dist/runs/types.js.map +1 -0
  747. package/dist/safety/immune.d.ts +62 -0
  748. package/dist/safety/immune.d.ts.map +1 -0
  749. package/dist/safety/immune.js +109 -0
  750. package/dist/safety/immune.js.map +1 -0
  751. package/dist/safety/index.d.ts +3 -0
  752. package/dist/safety/index.d.ts.map +1 -0
  753. package/dist/safety/index.js +2 -0
  754. package/dist/safety/index.js.map +1 -0
  755. package/dist/safety/sanitize.d.ts +71 -0
  756. package/dist/safety/sanitize.d.ts.map +1 -0
  757. package/dist/safety/sanitize.js +139 -0
  758. package/dist/safety/sanitize.js.map +1 -0
  759. package/dist/sdk-permission-mapping.d.ts +41 -0
  760. package/dist/sdk-permission-mapping.d.ts.map +1 -0
  761. package/dist/sdk-permission-mapping.js +96 -0
  762. package/dist/sdk-permission-mapping.js.map +1 -0
  763. package/dist/skills/_otel.d.ts +2 -0
  764. package/dist/skills/_otel.d.ts.map +1 -0
  765. package/dist/skills/_otel.js +29 -0
  766. package/dist/skills/_otel.js.map +1 -0
  767. package/dist/skills/alpaca-quote.d.ts +30 -0
  768. package/dist/skills/alpaca-quote.d.ts.map +1 -0
  769. package/dist/skills/alpaca-quote.js +70 -0
  770. package/dist/skills/alpaca-quote.js.map +1 -0
  771. package/dist/skills/base-skills.d.ts +30 -0
  772. package/dist/skills/base-skills.d.ts.map +1 -0
  773. package/dist/skills/base-skills.js +26 -0
  774. package/dist/skills/base-skills.js.map +1 -0
  775. package/dist/skills/brain-query.d.ts +34 -0
  776. package/dist/skills/brain-query.d.ts.map +1 -0
  777. package/dist/skills/brain-query.js +46 -0
  778. package/dist/skills/brain-query.js.map +1 -0
  779. package/dist/skills/brain-store.d.ts +44 -0
  780. package/dist/skills/brain-store.d.ts.map +1 -0
  781. package/dist/skills/brain-store.js +55 -0
  782. package/dist/skills/brain-store.js.map +1 -0
  783. package/dist/skills/calendar-check.d.ts +37 -0
  784. package/dist/skills/calendar-check.d.ts.map +1 -0
  785. package/dist/skills/calendar-check.js +87 -0
  786. package/dist/skills/calendar-check.js.map +1 -0
  787. package/dist/skills/cboe-vix-spot.d.ts +24 -0
  788. package/dist/skills/cboe-vix-spot.d.ts.map +1 -0
  789. package/dist/skills/cboe-vix-spot.js +70 -0
  790. package/dist/skills/cboe-vix-spot.js.map +1 -0
  791. package/dist/skills/errors.d.ts +33 -0
  792. package/dist/skills/errors.d.ts.map +1 -0
  793. package/dist/skills/errors.js +50 -0
  794. package/dist/skills/errors.js.map +1 -0
  795. package/dist/skills/hitl-request.d.ts +39 -0
  796. package/dist/skills/hitl-request.d.ts.map +1 -0
  797. package/dist/skills/hitl-request.js +55 -0
  798. package/dist/skills/hitl-request.js.map +1 -0
  799. package/dist/skills/http-fetch.d.ts +32 -0
  800. package/dist/skills/http-fetch.d.ts.map +1 -0
  801. package/dist/skills/http-fetch.js +82 -0
  802. package/dist/skills/http-fetch.js.map +1 -0
  803. package/dist/skills/index.d.ts +46 -0
  804. package/dist/skills/index.d.ts.map +1 -0
  805. package/dist/skills/index.js +32 -0
  806. package/dist/skills/index.js.map +1 -0
  807. package/dist/skills/record-outcome.d.ts +49 -0
  808. package/dist/skills/record-outcome.d.ts.map +1 -0
  809. package/dist/skills/record-outcome.js +104 -0
  810. package/dist/skills/record-outcome.js.map +1 -0
  811. package/dist/skills/run-sql-query.d.ts +33 -0
  812. package/dist/skills/run-sql-query.d.ts.map +1 -0
  813. package/dist/skills/run-sql-query.js +78 -0
  814. package/dist/skills/run-sql-query.js.map +1 -0
  815. package/dist/skills/send-email.d.ts +39 -0
  816. package/dist/skills/send-email.d.ts.map +1 -0
  817. package/dist/skills/send-email.js +100 -0
  818. package/dist/skills/send-email.js.map +1 -0
  819. package/dist/skills/skill-ledger.d.ts +62 -0
  820. package/dist/skills/skill-ledger.d.ts.map +1 -0
  821. package/dist/skills/skill-ledger.js +40 -0
  822. package/dist/skills/skill-ledger.js.map +1 -0
  823. package/dist/skills/skill-registry-builder.d.ts +91 -0
  824. package/dist/skills/skill-registry-builder.d.ts.map +1 -0
  825. package/dist/skills/skill-registry-builder.js +173 -0
  826. package/dist/skills/skill-registry-builder.js.map +1 -0
  827. package/dist/skills/slack-notify.d.ts +43 -0
  828. package/dist/skills/slack-notify.d.ts.map +1 -0
  829. package/dist/skills/slack-notify.js +70 -0
  830. package/dist/skills/slack-notify.js.map +1 -0
  831. package/dist/skills/starknet-balance.d.ts +34 -0
  832. package/dist/skills/starknet-balance.d.ts.map +1 -0
  833. package/dist/skills/starknet-balance.js +91 -0
  834. package/dist/skills/starknet-balance.js.map +1 -0
  835. package/dist/skills/telegram-notify.d.ts +44 -0
  836. package/dist/skills/telegram-notify.d.ts.map +1 -0
  837. package/dist/skills/telegram-notify.js +71 -0
  838. package/dist/skills/telegram-notify.js.map +1 -0
  839. package/dist/skills/web-search.d.ts +32 -0
  840. package/dist/skills/web-search.d.ts.map +1 -0
  841. package/dist/skills/web-search.js +84 -0
  842. package/dist/skills/web-search.js.map +1 -0
  843. package/dist/templates/complex-agent.d.ts +105 -0
  844. package/dist/templates/complex-agent.d.ts.map +1 -0
  845. package/dist/templates/complex-agent.js +94 -0
  846. package/dist/templates/complex-agent.js.map +1 -0
  847. package/dist/templates/index.d.ts +17 -0
  848. package/dist/templates/index.d.ts.map +1 -0
  849. package/dist/templates/index.js +14 -0
  850. package/dist/templates/index.js.map +1 -0
  851. package/dist/templates/reasoning-agent.d.ts +160 -0
  852. package/dist/templates/reasoning-agent.d.ts.map +1 -0
  853. package/dist/templates/reasoning-agent.js +119 -0
  854. package/dist/templates/reasoning-agent.js.map +1 -0
  855. package/dist/templates/simple-agent.d.ts +108 -0
  856. package/dist/templates/simple-agent.d.ts.map +1 -0
  857. package/dist/templates/simple-agent.js +84 -0
  858. package/dist/templates/simple-agent.js.map +1 -0
  859. package/dist/testing/brain-conformance.d.ts +45 -0
  860. package/dist/testing/brain-conformance.d.ts.map +1 -0
  861. package/dist/testing/brain-conformance.js +68 -0
  862. package/dist/testing/brain-conformance.js.map +1 -0
  863. package/dist/testing/chaos.d.ts +126 -0
  864. package/dist/testing/chaos.d.ts.map +1 -0
  865. package/dist/testing/chaos.js +176 -0
  866. package/dist/testing/chaos.js.map +1 -0
  867. package/dist/testing/contracts/brain-port.contract.d.ts +23 -0
  868. package/dist/testing/contracts/brain-port.contract.d.ts.map +1 -0
  869. package/dist/testing/contracts/brain-port.contract.js +79 -0
  870. package/dist/testing/contracts/brain-port.contract.js.map +1 -0
  871. package/dist/testing/contracts/economic-observer.contract.d.ts +23 -0
  872. package/dist/testing/contracts/economic-observer.contract.d.ts.map +1 -0
  873. package/dist/testing/contracts/economic-observer.contract.js +71 -0
  874. package/dist/testing/contracts/economic-observer.contract.js.map +1 -0
  875. package/dist/testing/contracts/event-bus.contract.d.ts +30 -0
  876. package/dist/testing/contracts/event-bus.contract.d.ts.map +1 -0
  877. package/dist/testing/contracts/event-bus.contract.js +216 -0
  878. package/dist/testing/contracts/event-bus.contract.js.map +1 -0
  879. package/dist/testing/db-conformance.d.ts +22 -0
  880. package/dist/testing/db-conformance.d.ts.map +1 -0
  881. package/dist/testing/db-conformance.js +25 -0
  882. package/dist/testing/db-conformance.js.map +1 -0
  883. package/dist/testing/eval.d.ts +61 -0
  884. package/dist/testing/eval.d.ts.map +1 -0
  885. package/dist/testing/eval.js +98 -0
  886. package/dist/testing/eval.js.map +1 -0
  887. package/dist/testing/index.d.ts +32 -0
  888. package/dist/testing/index.d.ts.map +1 -0
  889. package/dist/testing/index.js +38 -0
  890. package/dist/testing/index.js.map +1 -0
  891. package/dist/testing/integration-harness.d.ts +45 -0
  892. package/dist/testing/integration-harness.d.ts.map +1 -0
  893. package/dist/testing/integration-harness.js +57 -0
  894. package/dist/testing/integration-harness.js.map +1 -0
  895. package/dist/testing/logger-conformance.d.ts +16 -0
  896. package/dist/testing/logger-conformance.d.ts.map +1 -0
  897. package/dist/testing/logger-conformance.js +43 -0
  898. package/dist/testing/logger-conformance.js.map +1 -0
  899. package/dist/testing/outcome-conformance.d.ts +17 -0
  900. package/dist/testing/outcome-conformance.d.ts.map +1 -0
  901. package/dist/testing/outcome-conformance.js +50 -0
  902. package/dist/testing/outcome-conformance.js.map +1 -0
  903. package/dist/testing/runner.d.ts +19 -0
  904. package/dist/testing/runner.d.ts.map +1 -0
  905. package/dist/testing/runner.js +9 -0
  906. package/dist/testing/runner.js.map +1 -0
  907. package/dist/testing/test-brain-port.d.ts +25 -0
  908. package/dist/testing/test-brain-port.d.ts.map +1 -0
  909. package/dist/testing/test-brain-port.js +54 -0
  910. package/dist/testing/test-brain-port.js.map +1 -0
  911. package/dist/testing/test-child-agent.d.ts +32 -0
  912. package/dist/testing/test-child-agent.d.ts.map +1 -0
  913. package/dist/testing/test-child-agent.js +59 -0
  914. package/dist/testing/test-child-agent.js.map +1 -0
  915. package/dist/testing/test-event-bus.d.ts +57 -0
  916. package/dist/testing/test-event-bus.d.ts.map +1 -0
  917. package/dist/testing/test-event-bus.js +191 -0
  918. package/dist/testing/test-event-bus.js.map +1 -0
  919. package/dist/tools/index.d.ts +5 -0
  920. package/dist/tools/index.d.ts.map +1 -0
  921. package/dist/tools/index.js +4 -0
  922. package/dist/tools/index.js.map +1 -0
  923. package/dist/tools/registry.d.ts +20 -0
  924. package/dist/tools/registry.d.ts.map +1 -0
  925. package/dist/tools/registry.js +102 -0
  926. package/dist/tools/registry.js.map +1 -0
  927. package/dist/tools/types.d.ts +85 -0
  928. package/dist/tools/types.d.ts.map +1 -0
  929. package/dist/tools/types.js +13 -0
  930. package/dist/tools/types.js.map +1 -0
  931. package/dist/tools/zod-to-json-schema.d.ts +11 -0
  932. package/dist/tools/zod-to-json-schema.d.ts.map +1 -0
  933. package/dist/tools/zod-to-json-schema.js +92 -0
  934. package/dist/tools/zod-to-json-schema.js.map +1 -0
  935. package/dist/trace/canonical.d.ts +37 -0
  936. package/dist/trace/canonical.d.ts.map +1 -0
  937. package/dist/trace/canonical.js +139 -0
  938. package/dist/trace/canonical.js.map +1 -0
  939. package/dist/trace/policy.d.ts +103 -0
  940. package/dist/trace/policy.d.ts.map +1 -0
  941. package/dist/trace/policy.js +137 -0
  942. package/dist/trace/policy.js.map +1 -0
  943. package/dist/trace/schema.d.ts +195 -0
  944. package/dist/trace/schema.d.ts.map +1 -0
  945. package/dist/trace/schema.js +18 -0
  946. package/dist/trace/schema.js.map +1 -0
  947. package/dist/trace/strict-pii-detector.d.ts +28 -0
  948. package/dist/trace/strict-pii-detector.d.ts.map +1 -0
  949. package/dist/trace/strict-pii-detector.js +144 -0
  950. package/dist/trace/strict-pii-detector.js.map +1 -0
  951. package/dist/tracing/traced-port.d.ts +50 -0
  952. package/dist/tracing/traced-port.d.ts.map +1 -0
  953. package/dist/tracing/traced-port.js +108 -0
  954. package/dist/tracing/traced-port.js.map +1 -0
  955. package/dist/tracking/agent-run-tracker.d.ts +63 -0
  956. package/dist/tracking/agent-run-tracker.d.ts.map +1 -0
  957. package/dist/tracking/agent-run-tracker.js +132 -0
  958. package/dist/tracking/agent-run-tracker.js.map +1 -0
  959. package/dist/tracking/gen-ai.d.ts +54 -0
  960. package/dist/tracking/gen-ai.d.ts.map +1 -0
  961. package/dist/tracking/gen-ai.js +101 -0
  962. package/dist/tracking/gen-ai.js.map +1 -0
  963. package/dist/tracking/index.d.ts +4 -0
  964. package/dist/tracking/index.d.ts.map +1 -0
  965. package/dist/tracking/index.js +3 -0
  966. package/dist/tracking/index.js.map +1 -0
  967. package/dist/types/agent.d.ts +84 -0
  968. package/dist/types/agent.d.ts.map +1 -0
  969. package/dist/types/agent.js +13 -0
  970. package/dist/types/agent.js.map +1 -0
  971. package/dist/types/agent.test.d.ts +11 -0
  972. package/dist/types/agent.test.d.ts.map +1 -0
  973. package/dist/types/agent.test.js +144 -0
  974. package/dist/types/agent.test.js.map +1 -0
  975. package/dist/types/escalation-mapping.d.ts +30 -0
  976. package/dist/types/escalation-mapping.d.ts.map +1 -0
  977. package/dist/types/escalation-mapping.js +32 -0
  978. package/dist/types/escalation-mapping.js.map +1 -0
  979. package/docs/byom.md +106 -0
  980. package/docs/contributing.md +139 -0
  981. package/docs/economy.md +159 -0
  982. package/docs/getting-started.md +179 -0
  983. package/docs/index.md +57 -0
  984. package/docs/migration/0.15-to-0.17.md +227 -0
  985. package/docs/papers/bon-mav-notes.md +36 -0
  986. package/docs/patterns.md +138 -0
  987. package/docs/platforms.md +137 -0
  988. package/docs/ports/agent-registry.md +100 -0
  989. package/docs/ports/event-bus.md +131 -0
  990. package/docs/ports/hitl.md +105 -0
  991. package/docs/ports/llm-provider.md +125 -0
  992. package/docs/ports/messaging.md +94 -0
  993. package/docs/templates.md +165 -0
  994. package/package.json +160 -0
  995. package/src/adapters/hitl/memory-state-store.ts +96 -0
  996. package/src/adapters/hitl/postgres-state-store.ts +147 -0
  997. package/src/adapters/llm/anthropic-direct.ts +212 -0
  998. package/src/adapters/llm/cascade.ts +109 -0
  999. package/src/adapters/llm/litellm.ts +300 -0
  1000. package/src/adapters/messaging/console.ts +73 -0
  1001. package/src/adapters/messaging/discord.ts +125 -0
  1002. package/src/adapters/messaging/mcp.ts +84 -0
  1003. package/src/adapters/messaging/slack.ts +109 -0
  1004. package/src/adapters/messaging/telegram.ts +134 -0
  1005. package/src/adapters/registry/memory.ts +84 -0
  1006. package/src/adapters/registry/postgres.ts +166 -0
  1007. package/src/agents/index.ts +2 -0
  1008. package/src/agents/trading.ts +114 -0
  1009. package/src/auth/errors.ts +66 -0
  1010. package/src/auth/nonce-store.ts +79 -0
  1011. package/src/auth/sign-event.ts +51 -0
  1012. package/src/auth/verify-event.ts +112 -0
  1013. package/src/boot/init-sdk.ts +92 -0
  1014. package/src/boot/load-agent-context.ts +164 -0
  1015. package/src/boot/load-recent-memory.ts +92 -0
  1016. package/src/budget/budget-state.ts +234 -0
  1017. package/src/budget/index.ts +11 -0
  1018. package/src/clients/agents.ts +140 -0
  1019. package/src/clients/index.ts +6 -0
  1020. package/src/clients/messaging-adapters.ts +173 -0
  1021. package/src/clients/pipelines.ts +160 -0
  1022. package/src/compute/strategies/best-of-n.ts +162 -0
  1023. package/src/compute/strategies/bon-mav.ts +221 -0
  1024. package/src/compute/strategies/single-shot.ts +45 -0
  1025. package/src/compute/types.ts +36 -0
  1026. package/src/compute/verifier.ts +84 -0
  1027. package/src/compute/with-compute.ts +108 -0
  1028. package/src/constitution/axioms.ts +548 -0
  1029. package/src/constitution/gate.ts +180 -0
  1030. package/src/constitution/index.ts +53 -0
  1031. package/src/constitution/scorer.ts +170 -0
  1032. package/src/constitution/signal.ts +114 -0
  1033. package/src/constitution/types.ts +195 -0
  1034. package/src/counterfactual/index.ts +20 -0
  1035. package/src/counterfactual/replay-with-alt.ts +357 -0
  1036. package/src/dataops/index.ts +4 -0
  1037. package/src/dataops/starkscan.ts +13 -0
  1038. package/src/dataops/voyager.ts +215 -0
  1039. package/src/deprecation.ts +102 -0
  1040. package/src/durable/bullmq-runner.ts +560 -0
  1041. package/src/durable/index.ts +11 -0
  1042. package/src/economy/circuit-breaker.ts +130 -0
  1043. package/src/economy/economy-router.ts +242 -0
  1044. package/src/economy/index.ts +28 -0
  1045. package/src/economy/outcome-tracker.ts +228 -0
  1046. package/src/economy/router.ts +246 -0
  1047. package/src/economy/tier-policy.ts +116 -0
  1048. package/src/errors.ts +159 -0
  1049. package/src/evals/datasets/index.ts +343 -0
  1050. package/src/evals/harness.ts +171 -0
  1051. package/src/evals/index.ts +4 -0
  1052. package/src/factory/agent-factory.ts +261 -0
  1053. package/src/hitl/api.ts +78 -0
  1054. package/src/hitl/approval-channel.ts +128 -0
  1055. package/src/hitl/callback-handlers.ts +61 -0
  1056. package/src/hitl/index.ts +9 -0
  1057. package/src/hitl/slack.ts +358 -0
  1058. package/src/hitl/telegram.ts +342 -0
  1059. package/src/index.ts +710 -0
  1060. package/src/llm/parse-structured-output.ts +116 -0
  1061. package/src/loop/index.ts +26 -0
  1062. package/src/loop/minimal-loop.ts +448 -0
  1063. package/src/loop/sdk-loop.ts +505 -0
  1064. package/src/mcp/index.ts +146 -0
  1065. package/src/metrics/create-agent-metrics.ts +231 -0
  1066. package/src/orchestration/bulkhead.ts +145 -0
  1067. package/src/orchestration/idempotency.ts +137 -0
  1068. package/src/orchestration/index.ts +24 -0
  1069. package/src/orchestration/ooda/agent-config-loader.ts +118 -0
  1070. package/src/orchestration/ooda/agent.ts +1009 -0
  1071. package/src/orchestration/ooda/audit-log.ts +57 -0
  1072. package/src/orchestration/ooda/brain-context.ts +269 -0
  1073. package/src/orchestration/ooda/child-agent.ts +60 -0
  1074. package/src/orchestration/ooda/cron-schedule.ts +115 -0
  1075. package/src/orchestration/ooda/debate.ts +100 -0
  1076. package/src/orchestration/ooda/economic-observer.ts +77 -0
  1077. package/src/orchestration/ooda/errors.ts +32 -0
  1078. package/src/orchestration/ooda/execution-mode-guard.ts +37 -0
  1079. package/src/orchestration/ooda/factory.ts +48 -0
  1080. package/src/orchestration/ooda/guardrails.ts +172 -0
  1081. package/src/orchestration/ooda/guards/always-on.ts +21 -0
  1082. package/src/orchestration/ooda/guards/business-hours.ts +134 -0
  1083. package/src/orchestration/ooda/guards/cme-holidays-2026.json +1 -0
  1084. package/src/orchestration/ooda/guards/index.ts +27 -0
  1085. package/src/orchestration/ooda/guards/redis-circuit-breaker.ts +172 -0
  1086. package/src/orchestration/ooda/guards/rth-session.ts +133 -0
  1087. package/src/orchestration/ooda/handoff.ts +150 -0
  1088. package/src/orchestration/ooda/hitl-gate.ts +166 -0
  1089. package/src/orchestration/ooda/index.ts +163 -0
  1090. package/src/orchestration/ooda/inner-monologue.ts +99 -0
  1091. package/src/orchestration/ooda/learn.ts +146 -0
  1092. package/src/orchestration/ooda/multimodal.ts +174 -0
  1093. package/src/orchestration/ooda/phase-routing.ts +74 -0
  1094. package/src/orchestration/ooda/plan-execute.ts +87 -0
  1095. package/src/orchestration/ooda/react-loop.ts +192 -0
  1096. package/src/orchestration/ooda/reflexion.ts +98 -0
  1097. package/src/orchestration/ooda/resource-limits.ts +123 -0
  1098. package/src/orchestration/ooda/run-step-persistence.ts +137 -0
  1099. package/src/orchestration/ooda/skills.ts +60 -0
  1100. package/src/orchestration/ooda/structured-output.ts +93 -0
  1101. package/src/orchestration/ooda/types.ts +508 -0
  1102. package/src/otel/attributes.ts +104 -0
  1103. package/src/otel/index.ts +4 -0
  1104. package/src/otel/ingest.ts +294 -0
  1105. package/src/otel/trace-context.ts +197 -0
  1106. package/src/otel/types.ts +49 -0
  1107. package/src/outcomes/client.ts +194 -0
  1108. package/src/outcomes/compute-roi.ts +89 -0
  1109. package/src/outcomes/index.ts +3 -0
  1110. package/src/outcomes/meter.ts +217 -0
  1111. package/src/outcomes/trajectory.ts +170 -0
  1112. package/src/outcomes/types.ts +88 -0
  1113. package/src/patterns/_shared/brain-logger.ts +18 -0
  1114. package/src/patterns/circuit-breaker/index.ts +8 -0
  1115. package/src/patterns/circuit-breaker/session-cb.ts +198 -0
  1116. package/src/patterns/circuit-breaker/types.ts +72 -0
  1117. package/src/patterns/escalation/index.ts +8 -0
  1118. package/src/patterns/escalation/pyramid.ts +125 -0
  1119. package/src/patterns/escalation/types.ts +62 -0
  1120. package/src/patterns/quality-gate/gate.ts +102 -0
  1121. package/src/patterns/quality-gate/index.ts +8 -0
  1122. package/src/patterns/quality-gate/types.ts +45 -0
  1123. package/src/permissions/capability-gate.ts +63 -0
  1124. package/src/permissions/index.ts +11 -0
  1125. package/src/permissions/renewal-manager.ts +89 -0
  1126. package/src/permissions/sdk-permissions.ts +124 -0
  1127. package/src/ports/agent-registry.ts +104 -0
  1128. package/src/ports/brain.ts +255 -0
  1129. package/src/ports/db.ts +7 -0
  1130. package/src/ports/event-bus.ts +199 -0
  1131. package/src/ports/eviction-policy.ts +179 -0
  1132. package/src/ports/hitl.contract.test.ts +131 -0
  1133. package/src/ports/hitl.ts +153 -0
  1134. package/src/ports/index.ts +48 -0
  1135. package/src/ports/key-provider.ts +179 -0
  1136. package/src/ports/llm-provider.contract.ts +132 -0
  1137. package/src/ports/llm-provider.ts +68 -0
  1138. package/src/ports/logger.ts +23 -0
  1139. package/src/ports/messaging.contract.test.ts +422 -0
  1140. package/src/ports/messaging.ts +53 -0
  1141. package/src/ports/outcome.ts +26 -0
  1142. package/src/ports/timestamp.ts +64 -0
  1143. package/src/privacy/channel.ts +283 -0
  1144. package/src/privacy/composition.ts +289 -0
  1145. package/src/privacy/delegation.ts +128 -0
  1146. package/src/privacy/index.ts +64 -0
  1147. package/src/privacy/nullifier.ts +79 -0
  1148. package/src/privacy/poseidon-felt252.ts +104 -0
  1149. package/src/privacy/uar.ts +234 -0
  1150. package/src/prompts/build-orient-prompt.ts +78 -0
  1151. package/src/proof/chain.ts +249 -0
  1152. package/src/proof/fallback-adapter.ts +117 -0
  1153. package/src/proof/index.ts +207 -0
  1154. package/src/proof/load.ts +61 -0
  1155. package/src/proof/otel.ts +74 -0
  1156. package/src/proof/receipt-queue.ts +235 -0
  1157. package/src/proof/sha256.ts +80 -0
  1158. package/src/proof/types.ts +58 -0
  1159. package/src/proof/verify.ts +89 -0
  1160. package/src/registry/agent-capability.ts +48 -0
  1161. package/src/registry/agent-card.ts +162 -0
  1162. package/src/registry/agent-ids.ts +56 -0
  1163. package/src/registry/agent-registry.ts +378 -0
  1164. package/src/registry/index.ts +23 -0
  1165. package/src/replay/clock.ts +104 -0
  1166. package/src/replay/cross-cycle.ts +406 -0
  1167. package/src/replay/http-vcr.ts +123 -0
  1168. package/src/replay/index.ts +62 -0
  1169. package/src/replay/llm-cache.ts +199 -0
  1170. package/src/replay/random.ts +249 -0
  1171. package/src/replay/replay.ts +271 -0
  1172. package/src/resilience/bulkhead.ts +95 -0
  1173. package/src/resilience/circuit-breaker.ts +129 -0
  1174. package/src/resilience/idempotent.ts +126 -0
  1175. package/src/resilience/index.ts +51 -0
  1176. package/src/router/index.ts +11 -0
  1177. package/src/router/provider-router.ts +319 -0
  1178. package/src/runs/health.ts +84 -0
  1179. package/src/runs/index.ts +3 -0
  1180. package/src/runs/subscribe.ts +263 -0
  1181. package/src/runs/types.ts +63 -0
  1182. package/src/safety/immune.ts +145 -0
  1183. package/src/safety/index.ts +6 -0
  1184. package/src/safety/sanitize.ts +183 -0
  1185. package/src/sdk-permission-mapping.ts +123 -0
  1186. package/src/skills/_otel.ts +31 -0
  1187. package/src/skills/alpaca-quote.ts +82 -0
  1188. package/src/skills/base-skills.ts +38 -0
  1189. package/src/skills/brain-query.ts +62 -0
  1190. package/src/skills/brain-store.ts +69 -0
  1191. package/src/skills/calendar-check.ts +111 -0
  1192. package/src/skills/cboe-vix-spot.ts +89 -0
  1193. package/src/skills/errors.ts +59 -0
  1194. package/src/skills/hitl-request.ts +68 -0
  1195. package/src/skills/http-fetch.ts +92 -0
  1196. package/src/skills/index.ts +71 -0
  1197. package/src/skills/record-outcome.ts +125 -0
  1198. package/src/skills/run-sql-query.ts +87 -0
  1199. package/src/skills/send-email.ts +111 -0
  1200. package/src/skills/skill-ledger.ts +92 -0
  1201. package/src/skills/skill-registry-builder.ts +264 -0
  1202. package/src/skills/slack-notify.ts +90 -0
  1203. package/src/skills/starknet-balance.ts +106 -0
  1204. package/src/skills/telegram-notify.ts +88 -0
  1205. package/src/skills/web-search.ts +108 -0
  1206. package/src/templates/complex-agent.ts +187 -0
  1207. package/src/templates/index.ts +27 -0
  1208. package/src/templates/reasoning-agent.ts +251 -0
  1209. package/src/templates/simple-agent.ts +173 -0
  1210. package/src/testing/brain-conformance.ts +105 -0
  1211. package/src/testing/chaos.ts +266 -0
  1212. package/src/testing/contracts/brain-port.contract.ts +91 -0
  1213. package/src/testing/contracts/economic-observer.contract.ts +87 -0
  1214. package/src/testing/contracts/event-bus.contract.ts +324 -0
  1215. package/src/testing/db-conformance.ts +43 -0
  1216. package/src/testing/eval.ts +161 -0
  1217. package/src/testing/index.ts +59 -0
  1218. package/src/testing/integration-harness.ts +75 -0
  1219. package/src/testing/logger-conformance.ts +57 -0
  1220. package/src/testing/outcome-conformance.ts +62 -0
  1221. package/src/testing/runner.ts +19 -0
  1222. package/src/testing/test-brain-port.ts +69 -0
  1223. package/src/testing/test-child-agent.ts +70 -0
  1224. package/src/testing/test-event-bus.ts +247 -0
  1225. package/src/tools/index.ts +11 -0
  1226. package/src/tools/registry.ts +122 -0
  1227. package/src/tools/types.ts +114 -0
  1228. package/src/tools/zod-to-json-schema.ts +112 -0
  1229. package/src/trace/canonical.ts +158 -0
  1230. package/src/trace/policy.ts +242 -0
  1231. package/src/trace/schema.ts +245 -0
  1232. package/src/trace/strict-pii-detector.ts +156 -0
  1233. package/src/tracing/traced-port.ts +149 -0
  1234. package/src/tracking/agent-run-tracker.ts +228 -0
  1235. package/src/tracking/gen-ai.ts +153 -0
  1236. package/src/tracking/index.ts +19 -0
  1237. package/src/types/agent.ts +93 -0
  1238. package/src/types/escalation-mapping.ts +48 -0
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Shielded inter-agent communication channels — ML-KEM-768 stub.
3
+ *
4
+ * Implements checkpoint 2 of sprint-576:agentic-privacy-impl.
5
+ *
6
+ * Design references:
7
+ * - vauban-privacy-protocol/docs/research/03-agentic-privacy.md — agent privacy design.
8
+ * - vauban-privacy-protocol/docs/research/07-orq-stealth-addressing.md §3.5 — channel-key
9
+ * construction adapted for inter-agent use.
10
+ *
11
+ * STUB note: The key exchange uses a Poseidon-based derivation as a placeholder for
12
+ * ML-KEM-768 (CRYSTALS-Kyber, NIST PQC standard). The stream cipher uses a
13
+ * Poseidon-derived keystream as a placeholder for a proper AEAD (e.g., AES-256-GCM
14
+ * or ChaCha20-Poly1305). Both are deterministic and separation-preserving but NOT
15
+ * cryptographically sound for production use.
16
+ *
17
+ * TODO (ORQ-1): Replace establishChannel with ML-KEM-768 Encaps + Poseidon2 KDF.
18
+ * TODO (ORQ-1): Replace sendOverChannel stream cipher with AES-256-GCM or ChaCha20-Poly1305.
19
+ *
20
+ * @module privacy/channel
21
+ */
22
+ /**
23
+ * A shielded bidirectional channel between two agents.
24
+ *
25
+ * The channel is directional: sender and receiver roles are asymmetric.
26
+ * Swapping sender/receiver produces a different channel_id and shared_secret,
27
+ * preventing cross-direction replay attacks.
28
+ */
29
+ export interface AgentChannel {
30
+ /** Sender's Starknet public key (felt252). */
31
+ sender_pubkey: bigint;
32
+ /** Receiver's Starknet public key (felt252). */
33
+ receiver_pubkey: bigint;
34
+ /**
35
+ * Channel identifier — derived from the shared secret.
36
+ * Safe to include in message headers (public) without revealing the secret.
37
+ */
38
+ channel_id: bigint;
39
+ /**
40
+ * Shared secret — output of STUB key exchange (Poseidon-derived).
41
+ * TODO (ORQ-1): Replace with ML-KEM-768 Encaps output + Poseidon2 KDF.
42
+ * NEVER expose on-chain or in logs.
43
+ */
44
+ shared_secret: bigint;
45
+ /** Unix timestamp (ms) when the channel was established. */
46
+ established_at: number;
47
+ }
48
+ /**
49
+ * An encrypted message sent over a shielded agent channel.
50
+ *
51
+ * The integrity tag (`tag`) authenticates `(channel_id, nonce, ciphertext)` using
52
+ * the shared secret. A tampered ciphertext or wrong channel produces a tag mismatch.
53
+ */
54
+ export interface EncryptedAgentMessage {
55
+ /** Channel this message belongs to (public, used for routing). */
56
+ channel_id: bigint;
57
+ /** Monotonically increasing nonce (felt252). Replay protection. */
58
+ nonce: bigint;
59
+ /** Encrypted payload — XOR of plaintext with Poseidon-derived keystream (STUB). */
60
+ ciphertext: Uint8Array;
61
+ /**
62
+ * HMAC-style authentication tag.
63
+ * tag = Poseidon(shared_secret, nonce, hash(ciphertext)).
64
+ * Verifying this tag before decryption prevents chosen-ciphertext attacks.
65
+ */
66
+ tag: bigint;
67
+ }
68
+ export declare const ChannelError: {
69
+ /** The message's channel_id does not match the provided channel. */
70
+ readonly MismatchedChannel: "MismatchedChannel";
71
+ /** The authentication tag does not match — ciphertext tampered or wrong key. */
72
+ readonly InvalidTag: "InvalidTag";
73
+ /** The message nonce is not strictly greater than the expected previous nonce. */
74
+ readonly ReplayedNonce: "ReplayedNonce";
75
+ /** Channel has not been established (stub for future async establishment). */
76
+ readonly ChannelNotEstablished: "ChannelNotEstablished";
77
+ };
78
+ export type ChannelErrorKind = (typeof ChannelError)[keyof typeof ChannelError];
79
+ /**
80
+ * Establish a shielded inter-agent channel.
81
+ *
82
+ * STUB implementation: derives shared_secret via Poseidon over (senderSk, receiverPk,
83
+ * domain label). The channel is directional — sender and receiver roles are asymmetric
84
+ * by design (swapping them produces a different channel_id).
85
+ *
86
+ * TODO (ORQ-1): Replace with ML-KEM-768 Encaps + Poseidon2 KDF per
87
+ * vauban-privacy-protocol/docs/research/07-orq-stealth-addressing.md §3.5.
88
+ *
89
+ * @param senderSk - Sender's secret key (felt252, NEVER expose).
90
+ * @param receiverPk - Receiver's public key (felt252).
91
+ * @returns AgentChannel with shared_secret and channel_id.
92
+ */
93
+ export declare function establishChannel(senderSk: bigint, receiverPk: bigint): AgentChannel;
94
+ /**
95
+ * Compute the authentication tag for a message.
96
+ *
97
+ * tag = Poseidon(shared_secret, nonce, hash(ciphertext))
98
+ *
99
+ * @param sharedSecret - Channel shared secret (felt252).
100
+ * @param ciphertext - Encrypted payload bytes.
101
+ * @param nonce - Message nonce (felt252).
102
+ * @returns Authentication tag as felt252 BigInt.
103
+ */
104
+ export declare function computeAuthTag(sharedSecret: bigint, ciphertext: Uint8Array, nonce: bigint): bigint;
105
+ /**
106
+ * Encrypt plaintext and send over a shielded agent channel.
107
+ *
108
+ * Uses a Poseidon-derived keystream (XOR cipher, STUB). The nonce_counter is
109
+ * provided by the caller to support stateless multi-message sessions with replay
110
+ * protection. Each call must use a strictly increasing nonce.
111
+ *
112
+ * TODO (ORQ-1): Replace XOR keystream with ChaCha20-Poly1305 or AES-256-GCM.
113
+ *
114
+ * @param channel - Established AgentChannel.
115
+ * @param plaintext - Plaintext bytes to encrypt.
116
+ * @param nonceCounter - Monotonically increasing nonce (caller-managed). Must be
117
+ * strictly greater than the last nonce used on this channel.
118
+ * @returns EncryptedAgentMessage ready to transmit.
119
+ */
120
+ export declare function sendOverChannel(channel: AgentChannel, plaintext: Uint8Array, nonceCounter: bigint): EncryptedAgentMessage;
121
+ /**
122
+ * Receive and decrypt a message from a shielded agent channel.
123
+ *
124
+ * Validates:
125
+ * 1. channel_id matches (MismatchedChannel).
126
+ * 2. nonce > expectedNoncePrev (ReplayedNonce).
127
+ * 3. auth tag matches computed tag (InvalidTag).
128
+ *
129
+ * @param channel - Established AgentChannel (must match sender's channel).
130
+ * @param message - EncryptedAgentMessage to decrypt.
131
+ * @param expectedNoncePrev - Last accepted nonce on this channel. The message nonce
132
+ * must be strictly greater than this value.
133
+ * @returns Decrypted plaintext bytes.
134
+ * @throws {ChannelErrorKind} On validation failure.
135
+ */
136
+ export declare function receiveOverChannel(channel: AgentChannel, message: EncryptedAgentMessage, expectedNoncePrev: bigint): Uint8Array;
137
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/privacy/channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAaH;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,UAAU,EAAE,UAAU,CAAC;IACvB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAID,eAAO,MAAM,YAAY;IACvB,oEAAoE;;IAEpE,gFAAgF;;IAEhF,kFAAkF;;IAElF,8EAA8E;;CAEtE,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AA0ChF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAenF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,MAAM,GACnB,qBAAqB,CAqBvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,qBAAqB,EAC9B,iBAAiB,EAAE,MAAM,GACxB,UAAU,CA8BZ"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Shielded inter-agent communication channels — ML-KEM-768 stub.
3
+ *
4
+ * Implements checkpoint 2 of sprint-576:agentic-privacy-impl.
5
+ *
6
+ * Design references:
7
+ * - vauban-privacy-protocol/docs/research/03-agentic-privacy.md — agent privacy design.
8
+ * - vauban-privacy-protocol/docs/research/07-orq-stealth-addressing.md §3.5 — channel-key
9
+ * construction adapted for inter-agent use.
10
+ *
11
+ * STUB note: The key exchange uses a Poseidon-based derivation as a placeholder for
12
+ * ML-KEM-768 (CRYSTALS-Kyber, NIST PQC standard). The stream cipher uses a
13
+ * Poseidon-derived keystream as a placeholder for a proper AEAD (e.g., AES-256-GCM
14
+ * or ChaCha20-Poly1305). Both are deterministic and separation-preserving but NOT
15
+ * cryptographically sound for production use.
16
+ *
17
+ * TODO (ORQ-1): Replace establishChannel with ML-KEM-768 Encaps + Poseidon2 KDF.
18
+ * TODO (ORQ-1): Replace sendOverChannel stream cipher with AES-256-GCM or ChaCha20-Poly1305.
19
+ *
20
+ * @module privacy/channel
21
+ */
22
+ import { feltMod, labelToFelt, poseidonHashBigInt } from "./poseidon-felt252.js";
23
+ // ─── Domain labels ────────────────────────────────────────────────────────────
24
+ const LABEL_CHANNEL = labelToFelt("vauban-agent-channel-v1");
25
+ const LABEL_CHANNEL_ID = labelToFelt("channel-id");
26
+ const LABEL_KEYSTREAM = labelToFelt("keystream");
27
+ const LABEL_AUTH_TAG = labelToFelt("auth-tag");
28
+ // ─── Errors ───────────────────────────────────────────────────────────────────
29
+ export const ChannelError = {
30
+ /** The message's channel_id does not match the provided channel. */
31
+ MismatchedChannel: "MismatchedChannel",
32
+ /** The authentication tag does not match — ciphertext tampered or wrong key. */
33
+ InvalidTag: "InvalidTag",
34
+ /** The message nonce is not strictly greater than the expected previous nonce. */
35
+ ReplayedNonce: "ReplayedNonce",
36
+ /** Channel has not been established (stub for future async establishment). */
37
+ ChannelNotEstablished: "ChannelNotEstablished",
38
+ };
39
+ // ─── Internal helpers ─────────────────────────────────────────────────────────
40
+ /**
41
+ * Hash a Uint8Array into a felt252 BigInt for use in the auth tag computation.
42
+ * Uses a simple XOR-folding into felt252 — not a cryptographic hash.
43
+ * TODO (ORQ-1): Replace with Poseidon2 sponge over byte chunks.
44
+ */
45
+ function hashBytes(bytes) {
46
+ // Fold byte array into felt252: accumulate in 31-byte (248-bit) chunks.
47
+ let acc = 0n;
48
+ let chunk = 0n;
49
+ let shift = 0n;
50
+ for (let i = 0; i < bytes.length; i++) {
51
+ chunk = chunk | (BigInt(bytes[i] ?? 0) << shift);
52
+ shift += 8n;
53
+ if (shift >= 248n || i === bytes.length - 1) {
54
+ acc = feltMod(acc ^ chunk);
55
+ chunk = 0n;
56
+ shift = 0n;
57
+ }
58
+ }
59
+ return acc;
60
+ }
61
+ /**
62
+ * Derive a 248-bit keystream word from the shared secret and a nonce.
63
+ * Used as a one-time pad for a single 31-byte block of plaintext.
64
+ * TODO (ORQ-1): Replace with proper AEAD keystream (ChaCha20-Poly1305 or AES-256-GCM).
65
+ */
66
+ function deriveKeystreamWord(sharedSecret, nonce, blockIndex) {
67
+ return poseidonHashBigInt([
68
+ feltMod(sharedSecret),
69
+ feltMod(nonce),
70
+ LABEL_KEYSTREAM,
71
+ feltMod(blockIndex),
72
+ ]);
73
+ }
74
+ // ─── Public API ───────────────────────────────────────────────────────────────
75
+ /**
76
+ * Establish a shielded inter-agent channel.
77
+ *
78
+ * STUB implementation: derives shared_secret via Poseidon over (senderSk, receiverPk,
79
+ * domain label). The channel is directional — sender and receiver roles are asymmetric
80
+ * by design (swapping them produces a different channel_id).
81
+ *
82
+ * TODO (ORQ-1): Replace with ML-KEM-768 Encaps + Poseidon2 KDF per
83
+ * vauban-privacy-protocol/docs/research/07-orq-stealth-addressing.md §3.5.
84
+ *
85
+ * @param senderSk - Sender's secret key (felt252, NEVER expose).
86
+ * @param receiverPk - Receiver's public key (felt252).
87
+ * @returns AgentChannel with shared_secret and channel_id.
88
+ */
89
+ export function establishChannel(senderSk, receiverPk) {
90
+ // TODO: ML-KEM-768 Encaps + Poseidon2 KDF (ORQ-1)
91
+ const senderPk = poseidonHashBigInt([feltMod(senderSk), LABEL_CHANNEL]);
92
+ const sharedSecret = poseidonHashBigInt([feltMod(senderSk), feltMod(receiverPk), LABEL_CHANNEL]);
93
+ const channelId = poseidonHashBigInt([sharedSecret, LABEL_CHANNEL_ID]);
94
+ return {
95
+ sender_pubkey: senderPk,
96
+ receiver_pubkey: feltMod(receiverPk),
97
+ channel_id: channelId,
98
+ shared_secret: sharedSecret,
99
+ established_at: Date.now(),
100
+ };
101
+ }
102
+ /**
103
+ * Compute the authentication tag for a message.
104
+ *
105
+ * tag = Poseidon(shared_secret, nonce, hash(ciphertext))
106
+ *
107
+ * @param sharedSecret - Channel shared secret (felt252).
108
+ * @param ciphertext - Encrypted payload bytes.
109
+ * @param nonce - Message nonce (felt252).
110
+ * @returns Authentication tag as felt252 BigInt.
111
+ */
112
+ export function computeAuthTag(sharedSecret, ciphertext, nonce) {
113
+ const ciphertextHash = hashBytes(ciphertext);
114
+ return poseidonHashBigInt([
115
+ feltMod(sharedSecret),
116
+ feltMod(nonce),
117
+ ciphertextHash,
118
+ LABEL_AUTH_TAG,
119
+ ]);
120
+ }
121
+ /**
122
+ * Encrypt plaintext and send over a shielded agent channel.
123
+ *
124
+ * Uses a Poseidon-derived keystream (XOR cipher, STUB). The nonce_counter is
125
+ * provided by the caller to support stateless multi-message sessions with replay
126
+ * protection. Each call must use a strictly increasing nonce.
127
+ *
128
+ * TODO (ORQ-1): Replace XOR keystream with ChaCha20-Poly1305 or AES-256-GCM.
129
+ *
130
+ * @param channel - Established AgentChannel.
131
+ * @param plaintext - Plaintext bytes to encrypt.
132
+ * @param nonceCounter - Monotonically increasing nonce (caller-managed). Must be
133
+ * strictly greater than the last nonce used on this channel.
134
+ * @returns EncryptedAgentMessage ready to transmit.
135
+ */
136
+ export function sendOverChannel(channel, plaintext, nonceCounter) {
137
+ const ciphertext = new Uint8Array(plaintext.length);
138
+ const BLOCK_SIZE = 31; // 248 bits — safe within felt252
139
+ for (let i = 0; i < plaintext.length; i++) {
140
+ const blockIndex = BigInt(Math.floor(i / BLOCK_SIZE));
141
+ const keystreamWord = deriveKeystreamWord(channel.shared_secret, nonceCounter, blockIndex);
142
+ // Extract the byte at position (i % BLOCK_SIZE) from the keystream word.
143
+ const byteOffset = BigInt(i % BLOCK_SIZE);
144
+ const keystreamByte = Number((keystreamWord >> (byteOffset * 8n)) & 0xffn);
145
+ ciphertext[i] = ((plaintext[i] ?? 0) ^ keystreamByte) & 0xff;
146
+ }
147
+ const tag = computeAuthTag(channel.shared_secret, ciphertext, nonceCounter);
148
+ return {
149
+ channel_id: channel.channel_id,
150
+ nonce: nonceCounter,
151
+ ciphertext,
152
+ tag,
153
+ };
154
+ }
155
+ /**
156
+ * Receive and decrypt a message from a shielded agent channel.
157
+ *
158
+ * Validates:
159
+ * 1. channel_id matches (MismatchedChannel).
160
+ * 2. nonce > expectedNoncePrev (ReplayedNonce).
161
+ * 3. auth tag matches computed tag (InvalidTag).
162
+ *
163
+ * @param channel - Established AgentChannel (must match sender's channel).
164
+ * @param message - EncryptedAgentMessage to decrypt.
165
+ * @param expectedNoncePrev - Last accepted nonce on this channel. The message nonce
166
+ * must be strictly greater than this value.
167
+ * @returns Decrypted plaintext bytes.
168
+ * @throws {ChannelErrorKind} On validation failure.
169
+ */
170
+ export function receiveOverChannel(channel, message, expectedNoncePrev) {
171
+ // 1. Channel ID check (routing validation)
172
+ if (message.channel_id !== channel.channel_id) {
173
+ throw new Error(ChannelError.MismatchedChannel);
174
+ }
175
+ // 2. Replay protection: nonce must be strictly increasing
176
+ if (message.nonce <= expectedNoncePrev) {
177
+ throw new Error(ChannelError.ReplayedNonce);
178
+ }
179
+ // 3. Auth tag verification (verify before decrypt — authentication first)
180
+ const expectedTag = computeAuthTag(channel.shared_secret, message.ciphertext, message.nonce);
181
+ if (expectedTag !== message.tag) {
182
+ throw new Error(ChannelError.InvalidTag);
183
+ }
184
+ // 4. Decrypt (same XOR keystream as encryption)
185
+ const plaintext = new Uint8Array(message.ciphertext.length);
186
+ const BLOCK_SIZE = 31;
187
+ for (let i = 0; i < message.ciphertext.length; i++) {
188
+ const blockIndex = BigInt(Math.floor(i / BLOCK_SIZE));
189
+ const keystreamWord = deriveKeystreamWord(channel.shared_secret, message.nonce, blockIndex);
190
+ const byteOffset = BigInt(i % BLOCK_SIZE);
191
+ const keystreamByte = Number((keystreamWord >> (byteOffset * 8n)) & 0xffn);
192
+ plaintext[i] = ((message.ciphertext[i] ?? 0) ^ keystreamByte) & 0xff;
193
+ }
194
+ return plaintext;
195
+ }
196
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/privacy/channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Multi-agent Claim composition — recursive-AND (∧) operator.
3
+ *
4
+ * Implements checkpoint 4 of sprint-576:agentic-privacy-impl (ORQ-2):
5
+ * - `composeAgents(agents)` produces a recursive-AND ShieldedClaim over n≥2 agents.
6
+ * - n=2: flat pairwise ∧ (no recursion needed).
7
+ * - n≥3: left-fold recursive ∧ placeholder — future STARK aggregation via Stwo.
8
+ *
9
+ * Scenario: identity → credit-score → loan-approval (3 agents)
10
+ * 1. Agent A: verifies identity (Glacis nullifier → pseudonym claim)
11
+ * 2. Agent B: verifies credit (pseudonym + bank data → credit-score claim)
12
+ * 3. Agent C: approves loan (credit-score claim → loan-approval claim)
13
+ * Composition: C_final = ((C_A ∧ C_B) ∧ C_C)
14
+ *
15
+ * References:
16
+ * - docs/research/03-agentic-privacy.md §3 (Scenario 3: Multi-Agent Composition)
17
+ * - docs/research/09-orq-recursive-starks.md §3 (recursive ∧ deferred to Phase 2)
18
+ * - vauban-privacy-protocol/sdk/typescript/src/composition.ts (compose operator pattern)
19
+ *
20
+ * @module privacy/composition
21
+ */
22
+ import { type DelegationClaim } from "./delegation.js";
23
+ /**
24
+ * A claim produced by a single agent in a multi-agent workflow.
25
+ *
26
+ * Each `AgentClaim` carries its agent's nullifier (the cryptographic identity
27
+ * of the agent in the HDNT hierarchy) and a role label describing its position
28
+ * in the workflow (e.g. "identity", "credit-score", "loan-approval").
29
+ *
30
+ * The `delegationChain` is optional: when present, it anchors the agent's
31
+ * claim to a parent claim via the Claim Algebra → operator.
32
+ */
33
+ export interface AgentClaim {
34
+ /** Agent's nullifier (felt252 BigInt). Output of `deriveAgentNullifier`. */
35
+ agentNullifier: bigint;
36
+ /** Role label for this agent in the workflow. Used for domain separation. */
37
+ role: string;
38
+ /** Arbitrary claim payload (predicate, evidence, etc.). */
39
+ payload: Record<string, unknown>;
40
+ /**
41
+ * Optional delegation chain anchoring this claim to a parent.
42
+ * When set, the composition will verify the delegation is still valid.
43
+ */
44
+ delegationChain?: DelegationClaim;
45
+ }
46
+ /**
47
+ * The composition mode used for a given invocation of `composeAgents`.
48
+ *
49
+ * - `"flat"`: pairwise ∧ for n=2. Proofs are independent (checkpoint 3 style).
50
+ * - `"recursive"`: left-fold recursive ∧ for n≥3. Phase 2 will replace the
51
+ * placeholder with actual Stwo STARK aggregation.
52
+ */
53
+ export type CompositionMode = "flat" | "recursive";
54
+ /**
55
+ * A ShieldedClaim produced by `composeAgents`.
56
+ *
57
+ * The `composedNullifier` is the binding commitment over all participating
58
+ * agents' nullifiers — it changes if any agent is swapped out.
59
+ *
60
+ * The `transcriptDigest` binds the claim to the composition's public inputs
61
+ * (ordered agent roles + composition mode) for external proof anchoring.
62
+ */
63
+ export interface ShieldedClaim {
64
+ /**
65
+ * Poseidon-derived commitment over all agent nullifiers in order.
66
+ * Different orderings → different composedNullifier (order matters).
67
+ */
68
+ composedNullifier: bigint;
69
+ /** Merged payload from all agent claims (first agent wins on key conflicts). */
70
+ payload: Record<string, unknown>;
71
+ /** Agent roles in composition order. */
72
+ roles: string[];
73
+ /** Mode used ("flat" for n=2, "recursive" for n≥3). */
74
+ mode: CompositionMode;
75
+ /**
76
+ * Transcript digest: Poseidon(composedNullifier, rolesFelt, LABEL_TRANSCRIPT).
77
+ * Binds the ShieldedClaim to its public inputs for proof anchoring (ORQ-5).
78
+ */
79
+ transcriptDigest: bigint;
80
+ /**
81
+ * Delegation witnesses for any claims that had a `delegationChain`.
82
+ * Keyed by role label. Empty if no delegations were present.
83
+ */
84
+ delegationWitnesses: Map<string, DelegationClaim>;
85
+ /** Number of agents composed. */
86
+ n: number;
87
+ }
88
+ /**
89
+ * Error thrown by `composeAgents` on invalid input or constraint violation.
90
+ */
91
+ export declare class CompositionError extends Error {
92
+ readonly kind: "EmptyComposition" | "ExpiredDelegation" | "SingleAgent";
93
+ constructor(kind: "EmptyComposition" | "ExpiredDelegation" | "SingleAgent", message?: string);
94
+ }
95
+ /**
96
+ * Compose n≥2 AgentClaims into a single recursive-AND ShieldedClaim.
97
+ *
98
+ * Algorithm:
99
+ * - n=2: flat pairwise ∧ (Poseidon(a, b, LABEL_AND)).
100
+ * - n≥3: left-fold recursive ∧ (Poseidon accumulator with LABEL_RECURSIVE).
101
+ *
102
+ * If any agent claim carries a `delegationChain`, its validity is checked
103
+ * (expiry). Expired delegations cause an `ExpiredDelegation` error.
104
+ *
105
+ * The `transcriptDigest` binds the result to the ordered list of roles and
106
+ * the composedNullifier for external proof anchoring.
107
+ *
108
+ * Example (identity → credit-score → loan-approval, n=3):
109
+ * ```ts
110
+ * const result = composeAgents([identityClaim, creditClaim, loanClaim]);
111
+ * // result.mode === "recursive"
112
+ * // result.n === 3
113
+ * // result.roles === ["identity", "credit-score", "loan-approval"]
114
+ * ```
115
+ *
116
+ * @param agents - Ordered list of AgentClaims (at least 2).
117
+ * @returns ShieldedClaim with composedNullifier, transcriptDigest, and merged payload.
118
+ * @throws {CompositionError} EmptyComposition if agents is empty.
119
+ * @throws {CompositionError} SingleAgent if only 1 agent is provided.
120
+ * @throws {CompositionError} ExpiredDelegation if any delegation chain has expired.
121
+ */
122
+ export declare function composeAgents(agents: AgentClaim[]): ShieldedClaim;
123
+ /**
124
+ * Build an AgentClaim with an attached DelegationClaim.
125
+ *
126
+ * Convenience factory that calls `buildDelegationClaim` from `delegation.ts`
127
+ * and wires the result into an `AgentClaim.delegationChain`.
128
+ *
129
+ * @param agentNullifier - Derived nullifier of this agent.
130
+ * @param role - Workflow role label.
131
+ * @param payload - Claim payload.
132
+ * @param parentClaimDigest - Parent claim digest bytes (from the authorizing claim).
133
+ * @param scope - Delegation scope (allowed actions + expiry).
134
+ * @returns AgentClaim with populated delegationChain.
135
+ */
136
+ export declare function buildAgentClaimWithDelegation(agentNullifier: bigint, role: string, payload: Record<string, unknown>, parentClaimDigest: number[], scope: {
137
+ allowedActions: string[];
138
+ expiry: number;
139
+ }): AgentClaim;
140
+ //# sourceMappingURL=composition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/privacy/composition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AAWzB;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,eAAe,CAAC;IACtB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,iCAAiC;IACjC,CAAC,EAAE,MAAM,CAAC;CACX;AAID;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,aAAa,CAAC;gBAE5D,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM;CAK7F;AAkED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAiDjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,KAAK,EAAE;IAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClD,UAAU,CAOZ"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Multi-agent Claim composition — recursive-AND (∧) operator.
3
+ *
4
+ * Implements checkpoint 4 of sprint-576:agentic-privacy-impl (ORQ-2):
5
+ * - `composeAgents(agents)` produces a recursive-AND ShieldedClaim over n≥2 agents.
6
+ * - n=2: flat pairwise ∧ (no recursion needed).
7
+ * - n≥3: left-fold recursive ∧ placeholder — future STARK aggregation via Stwo.
8
+ *
9
+ * Scenario: identity → credit-score → loan-approval (3 agents)
10
+ * 1. Agent A: verifies identity (Glacis nullifier → pseudonym claim)
11
+ * 2. Agent B: verifies credit (pseudonym + bank data → credit-score claim)
12
+ * 3. Agent C: approves loan (credit-score claim → loan-approval claim)
13
+ * Composition: C_final = ((C_A ∧ C_B) ∧ C_C)
14
+ *
15
+ * References:
16
+ * - docs/research/03-agentic-privacy.md §3 (Scenario 3: Multi-Agent Composition)
17
+ * - docs/research/09-orq-recursive-starks.md §3 (recursive ∧ deferred to Phase 2)
18
+ * - vauban-privacy-protocol/sdk/typescript/src/composition.ts (compose operator pattern)
19
+ *
20
+ * @module privacy/composition
21
+ */
22
+ import { buildDelegationClaim, isDelegationScopeValid, } from "./delegation.js";
23
+ import { feltMod, labelToFelt, poseidonHashBigInt } from "./poseidon-felt252.js";
24
+ // ─── Domain labels ────────────────────────────────────────────────────────────
25
+ const LABEL_COMPOSE_AND = labelToFelt("vauban-agent-compose-and-v1");
26
+ const LABEL_RECURSIVE = labelToFelt("vauban-recursive-and-v1");
27
+ const LABEL_TRANSCRIPT = labelToFelt("vauban-transcript-v1");
28
+ // ─── Errors ───────────────────────────────────────────────────────────────────
29
+ /**
30
+ * Error thrown by `composeAgents` on invalid input or constraint violation.
31
+ */
32
+ export class CompositionError extends Error {
33
+ kind;
34
+ constructor(kind, message) {
35
+ super(message ?? kind);
36
+ this.kind = kind;
37
+ this.name = "CompositionError";
38
+ }
39
+ }
40
+ // ─── Internal helpers ─────────────────────────────────────────────────────────
41
+ /**
42
+ * Encode an array of role strings as a single felt252 for use in the
43
+ * transcript digest. Roles are XOR-folded with their position index to
44
+ * preserve ordering (different orderings → different felt).
45
+ */
46
+ function rolesToFelt(roles) {
47
+ let acc = 0n;
48
+ for (let i = 0; i < roles.length; i++) {
49
+ const roleFelt = labelToFelt(roles[i] ?? "");
50
+ // Mix role felt with position to make ordering matter.
51
+ acc = feltMod(acc ^ (roleFelt + BigInt(i + 1) * 0x1b1b1b1bn));
52
+ }
53
+ return acc;
54
+ }
55
+ /**
56
+ * Pairwise ∧: combine two agent nullifiers into a composed nullifier.
57
+ * Poseidon(a, b, LABEL_COMPOSE_AND) — order-sensitive by construction.
58
+ */
59
+ function composePair(aNullifier, bNullifier) {
60
+ return poseidonHashBigInt([feltMod(aNullifier), feltMod(bNullifier), LABEL_COMPOSE_AND]);
61
+ }
62
+ /**
63
+ * Recursive-AND placeholder for n≥3.
64
+ *
65
+ * Left-fold: ((a ∧ b) ∧ c) ∧ d … with LABEL_RECURSIVE to domain-separate
66
+ * from flat ∧. Phase 2 replaces this with Stwo STARK aggregation proof.
67
+ *
68
+ * TODO (ORQ-2, Phase 2): Replace with real recursive STARK aggregation via Stwo.
69
+ */
70
+ function composeRecursive(nullifiers) {
71
+ // Seed: Poseidon(first, second, LABEL_RECURSIVE)
72
+ let acc = poseidonHashBigInt([
73
+ feltMod(nullifiers[0] ?? 0n),
74
+ feltMod(nullifiers[1] ?? 0n),
75
+ LABEL_RECURSIVE,
76
+ ]);
77
+ // Fold in remaining nullifiers.
78
+ for (let i = 2; i < nullifiers.length; i++) {
79
+ acc = poseidonHashBigInt([acc, feltMod(nullifiers[i] ?? 0n), LABEL_RECURSIVE]);
80
+ }
81
+ return acc;
82
+ }
83
+ /**
84
+ * Merge payloads from all agents (left-to-right, first agent wins on conflict).
85
+ */
86
+ function mergePayloads(claims) {
87
+ const merged = {};
88
+ // Iterate in reverse so first agent wins (earlier keys overwrite later).
89
+ for (let i = claims.length - 1; i >= 0; i--) {
90
+ const payload = claims[i]?.payload ?? {};
91
+ for (const [k, v] of Object.entries(payload)) {
92
+ merged[k] = v;
93
+ }
94
+ }
95
+ return merged;
96
+ }
97
+ // ─── Public API ───────────────────────────────────────────────────────────────
98
+ /**
99
+ * Compose n≥2 AgentClaims into a single recursive-AND ShieldedClaim.
100
+ *
101
+ * Algorithm:
102
+ * - n=2: flat pairwise ∧ (Poseidon(a, b, LABEL_AND)).
103
+ * - n≥3: left-fold recursive ∧ (Poseidon accumulator with LABEL_RECURSIVE).
104
+ *
105
+ * If any agent claim carries a `delegationChain`, its validity is checked
106
+ * (expiry). Expired delegations cause an `ExpiredDelegation` error.
107
+ *
108
+ * The `transcriptDigest` binds the result to the ordered list of roles and
109
+ * the composedNullifier for external proof anchoring.
110
+ *
111
+ * Example (identity → credit-score → loan-approval, n=3):
112
+ * ```ts
113
+ * const result = composeAgents([identityClaim, creditClaim, loanClaim]);
114
+ * // result.mode === "recursive"
115
+ * // result.n === 3
116
+ * // result.roles === ["identity", "credit-score", "loan-approval"]
117
+ * ```
118
+ *
119
+ * @param agents - Ordered list of AgentClaims (at least 2).
120
+ * @returns ShieldedClaim with composedNullifier, transcriptDigest, and merged payload.
121
+ * @throws {CompositionError} EmptyComposition if agents is empty.
122
+ * @throws {CompositionError} SingleAgent if only 1 agent is provided.
123
+ * @throws {CompositionError} ExpiredDelegation if any delegation chain has expired.
124
+ */
125
+ export function composeAgents(agents) {
126
+ if (agents.length === 0) {
127
+ throw new CompositionError("EmptyComposition", "composeAgents requires at least 2 agents");
128
+ }
129
+ if (agents.length === 1) {
130
+ throw new CompositionError("SingleAgent", "composeAgents requires at least 2 agents, got 1");
131
+ }
132
+ // Validate delegation chains.
133
+ const delegationWitnesses = new Map();
134
+ for (const agent of agents) {
135
+ if (agent.delegationChain !== undefined) {
136
+ if (!isDelegationScopeValid(agent.delegationChain.scope)) {
137
+ throw new CompositionError("ExpiredDelegation", `delegation for role "${agent.role}" has expired`);
138
+ }
139
+ delegationWitnesses.set(agent.role, agent.delegationChain);
140
+ }
141
+ }
142
+ const nullifiers = agents.map((a) => a.agentNullifier);
143
+ const roles = agents.map((a) => a.role);
144
+ const n = agents.length;
145
+ // Compose nullifiers.
146
+ const mode = n === 2 ? "flat" : "recursive";
147
+ const composedNullifier = mode === "flat"
148
+ ? composePair(nullifiers[0] ?? 0n, nullifiers[1] ?? 0n)
149
+ : composeRecursive(nullifiers);
150
+ // Transcript digest — binds composedNullifier + ordered roles + domain label.
151
+ const rolesFelt = rolesToFelt(roles);
152
+ const transcriptDigest = poseidonHashBigInt([composedNullifier, rolesFelt, LABEL_TRANSCRIPT]);
153
+ // Merge payloads.
154
+ const payload = mergePayloads(agents);
155
+ return {
156
+ composedNullifier,
157
+ payload,
158
+ roles,
159
+ mode,
160
+ transcriptDigest,
161
+ delegationWitnesses,
162
+ n,
163
+ };
164
+ }
165
+ /**
166
+ * Build an AgentClaim with an attached DelegationClaim.
167
+ *
168
+ * Convenience factory that calls `buildDelegationClaim` from `delegation.ts`
169
+ * and wires the result into an `AgentClaim.delegationChain`.
170
+ *
171
+ * @param agentNullifier - Derived nullifier of this agent.
172
+ * @param role - Workflow role label.
173
+ * @param payload - Claim payload.
174
+ * @param parentClaimDigest - Parent claim digest bytes (from the authorizing claim).
175
+ * @param scope - Delegation scope (allowed actions + expiry).
176
+ * @returns AgentClaim with populated delegationChain.
177
+ */
178
+ export function buildAgentClaimWithDelegation(agentNullifier, role, payload, parentClaimDigest, scope) {
179
+ const delegation = buildDelegationClaim({ digest: parentClaimDigest, "digest-alg": "poseidon-felt252" }, agentNullifier, scope);
180
+ return { agentNullifier, role, payload, delegationChain: delegation };
181
+ }
182
+ //# sourceMappingURL=composition.js.map