@vauban-org/agent-sdk 0.17.4 → 1.2.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 (506) hide show
  1. package/CONTRACT.md +6401 -813
  2. package/dist/adapters/llm/anthropic-direct.d.ts +1 -0
  3. package/dist/adapters/llm/anthropic-direct.d.ts.map +1 -1
  4. package/dist/adapters/llm/anthropic-direct.js +43 -0
  5. package/dist/adapters/llm/anthropic-direct.js.map +1 -1
  6. package/dist/adapters/llm/cascade.d.ts.map +1 -1
  7. package/dist/adapters/llm/cascade.js +57 -14
  8. package/dist/adapters/llm/cascade.js.map +1 -1
  9. package/dist/adapters/llm/litellm.d.ts +2 -0
  10. package/dist/adapters/llm/litellm.d.ts.map +1 -1
  11. package/dist/adapters/llm/litellm.js +44 -0
  12. package/dist/adapters/llm/litellm.js.map +1 -1
  13. package/dist/compute/difficulty-estimator.d.ts +53 -0
  14. package/dist/compute/difficulty-estimator.d.ts.map +1 -0
  15. package/dist/compute/difficulty-estimator.js +82 -0
  16. package/dist/compute/difficulty-estimator.js.map +1 -0
  17. package/dist/compute/strategies/mixture-of-agents.d.ts +40 -0
  18. package/dist/compute/strategies/mixture-of-agents.d.ts.map +1 -0
  19. package/dist/compute/strategies/mixture-of-agents.js +110 -0
  20. package/dist/compute/strategies/mixture-of-agents.js.map +1 -0
  21. package/dist/compute/strategies/tree-of-thoughts.d.ts +48 -0
  22. package/dist/compute/strategies/tree-of-thoughts.d.ts.map +1 -0
  23. package/dist/compute/strategies/tree-of-thoughts.js +242 -0
  24. package/dist/compute/strategies/tree-of-thoughts.js.map +1 -0
  25. package/dist/compute/strategies/two-phase-orient.d.ts +72 -0
  26. package/dist/compute/strategies/two-phase-orient.d.ts.map +1 -0
  27. package/dist/compute/strategies/two-phase-orient.js +85 -0
  28. package/dist/compute/strategies/two-phase-orient.js.map +1 -0
  29. package/dist/constitution/types.d.ts +10 -10
  30. package/dist/container/protocol.d.ts +134 -0
  31. package/dist/container/protocol.d.ts.map +1 -0
  32. package/dist/container/protocol.js +157 -0
  33. package/dist/container/protocol.js.map +1 -0
  34. package/dist/container/runtime.d.ts +140 -0
  35. package/dist/container/runtime.d.ts.map +1 -0
  36. package/dist/container/runtime.js +256 -0
  37. package/dist/container/runtime.js.map +1 -0
  38. package/dist/events/catalogue.d.ts +327 -30
  39. package/dist/events/catalogue.d.ts.map +1 -1
  40. package/dist/events/catalogue.js +18 -0
  41. package/dist/events/catalogue.js.map +1 -1
  42. package/dist/events/index.d.ts +9 -0
  43. package/dist/events/index.d.ts.map +1 -1
  44. package/dist/events/index.js +9 -0
  45. package/dist/events/index.js.map +1 -1
  46. package/dist/events/schemas/agent.completed.v1.d.ts +4 -4
  47. package/dist/events/schemas/agent.failed.v1.d.ts +2 -2
  48. package/dist/events/schemas/agent.hitl_resolved.v1.d.ts +2 -2
  49. package/dist/events/schemas/agent.started.v1.d.ts +2 -2
  50. package/dist/events/schemas/brain.skill.extracted.v1.d.ts +4 -4
  51. package/dist/events/schemas/cc.cost.anomaly_detected.v1.d.ts +2 -2
  52. package/dist/events/schemas/cc.cost.recorded.v1.d.ts +4 -4
  53. package/dist/events/schemas/citadel.sprint.analyzed.v1.d.ts +55 -0
  54. package/dist/events/schemas/citadel.sprint.analyzed.v1.d.ts.map +1 -0
  55. package/dist/events/schemas/citadel.sprint.analyzed.v1.js +22 -0
  56. package/dist/events/schemas/citadel.sprint.analyzed.v1.js.map +1 -0
  57. package/dist/events/schemas/citadel.sprint.closed.v1.d.ts +2 -2
  58. package/dist/events/schemas/forge.inbox.reply_classified.v1.d.ts +33 -0
  59. package/dist/events/schemas/forge.inbox.reply_classified.v1.d.ts.map +1 -0
  60. package/dist/events/schemas/forge.inbox.reply_classified.v1.js +15 -0
  61. package/dist/events/schemas/forge.inbox.reply_classified.v1.js.map +1 -0
  62. package/dist/events/schemas/forge.lead.qualified.v1.d.ts +2 -2
  63. package/dist/events/schemas/forge.outreach.sent.v1.d.ts +4 -4
  64. package/dist/events/schemas/incident.detected.v1.d.ts +2 -2
  65. package/dist/events/schemas/vauban-finance.forecast.generated.v1.d.ts +21 -0
  66. package/dist/events/schemas/vauban-finance.forecast.generated.v1.d.ts.map +1 -0
  67. package/dist/events/schemas/vauban-finance.forecast.generated.v1.js +11 -0
  68. package/dist/events/schemas/vauban-finance.forecast.generated.v1.js.map +1 -0
  69. package/dist/events/schemas/vauban-finance.trade.executed.v1.d.ts +24 -0
  70. package/dist/events/schemas/vauban-finance.trade.executed.v1.d.ts.map +1 -0
  71. package/dist/events/schemas/vauban-finance.trade.executed.v1.js +12 -0
  72. package/dist/events/schemas/vauban-finance.trade.executed.v1.js.map +1 -0
  73. package/dist/events/schemas/vauban.goal.checked.v1.d.ts +21 -0
  74. package/dist/events/schemas/vauban.goal.checked.v1.d.ts.map +1 -0
  75. package/dist/events/schemas/vauban.goal.checked.v1.js +11 -0
  76. package/dist/events/schemas/vauban.goal.checked.v1.js.map +1 -0
  77. package/dist/events/schemas/vauban.rebalancing.checked.v1.d.ts +21 -0
  78. package/dist/events/schemas/vauban.rebalancing.checked.v1.d.ts.map +1 -0
  79. package/dist/events/schemas/vauban.rebalancing.checked.v1.js +11 -0
  80. package/dist/events/schemas/vauban.rebalancing.checked.v1.js.map +1 -0
  81. package/dist/events/schemas/vauban.tax.checked.v1.d.ts +21 -0
  82. package/dist/events/schemas/vauban.tax.checked.v1.d.ts.map +1 -0
  83. package/dist/events/schemas/vauban.tax.checked.v1.js +11 -0
  84. package/dist/events/schemas/vauban.tax.checked.v1.js.map +1 -0
  85. package/dist/events/schemas/vauban.vault.analyzed.v1.d.ts +59 -0
  86. package/dist/events/schemas/vauban.vault.analyzed.v1.d.ts.map +1 -0
  87. package/dist/events/schemas/vauban.vault.analyzed.v1.js +19 -0
  88. package/dist/events/schemas/vauban.vault.analyzed.v1.js.map +1 -0
  89. package/dist/events/schemas/vauban.vault.compounded.v1.d.ts +24 -0
  90. package/dist/events/schemas/vauban.vault.compounded.v1.d.ts.map +1 -0
  91. package/dist/events/schemas/vauban.vault.compounded.v1.js +12 -0
  92. package/dist/events/schemas/vauban.vault.compounded.v1.js.map +1 -0
  93. package/dist/identity/agent-persona.d.ts +73 -0
  94. package/dist/identity/agent-persona.d.ts.map +1 -0
  95. package/dist/identity/agent-persona.js +165 -0
  96. package/dist/identity/agent-persona.js.map +1 -0
  97. package/dist/identity/persona-prompt.d.ts +25 -0
  98. package/dist/identity/persona-prompt.d.ts.map +1 -0
  99. package/dist/identity/persona-prompt.js +71 -0
  100. package/dist/identity/persona-prompt.js.map +1 -0
  101. package/dist/identity/persona-schema.d.ts +120 -0
  102. package/dist/identity/persona-schema.d.ts.map +1 -0
  103. package/dist/identity/persona-schema.js +103 -0
  104. package/dist/identity/persona-schema.js.map +1 -0
  105. package/dist/index.d.ts +37 -2
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +29 -1
  108. package/dist/index.js.map +1 -1
  109. package/dist/loop/index.d.ts +1 -1
  110. package/dist/loop/index.d.ts.map +1 -1
  111. package/dist/loop/index.js.map +1 -1
  112. package/dist/loop/minimal-loop.js +293 -287
  113. package/dist/loop/sdk-loop.d.ts +1 -3
  114. package/dist/loop/sdk-loop.d.ts.map +1 -1
  115. package/dist/loop/sdk-loop.js +1 -1
  116. package/dist/loop/sdk-loop.js.map +1 -1
  117. package/dist/memory/episodic-rrf.d.ts +114 -0
  118. package/dist/memory/episodic-rrf.d.ts.map +1 -0
  119. package/dist/memory/episodic-rrf.js +148 -0
  120. package/dist/memory/episodic-rrf.js.map +1 -0
  121. package/dist/mesh/attenuation.d.ts +78 -0
  122. package/dist/mesh/attenuation.d.ts.map +1 -0
  123. package/dist/mesh/attenuation.js +141 -0
  124. package/dist/mesh/attenuation.js.map +1 -0
  125. package/dist/mesh/delegate.d.ts +96 -0
  126. package/dist/mesh/delegate.d.ts.map +1 -0
  127. package/dist/mesh/delegate.js +172 -0
  128. package/dist/mesh/delegate.js.map +1 -0
  129. package/dist/mesh/dispatcher.d.ts +119 -0
  130. package/dist/mesh/dispatcher.d.ts.map +1 -0
  131. package/dist/mesh/dispatcher.js +207 -0
  132. package/dist/mesh/dispatcher.js.map +1 -0
  133. package/dist/mesh/index.d.ts +12 -0
  134. package/dist/mesh/index.d.ts.map +1 -0
  135. package/dist/mesh/index.js +11 -0
  136. package/dist/mesh/index.js.map +1 -0
  137. package/dist/mesh/types.d.ts +30 -0
  138. package/dist/mesh/types.d.ts.map +1 -0
  139. package/dist/mesh/types.js +11 -0
  140. package/dist/mesh/types.js.map +1 -0
  141. package/dist/orchestration/ooda/skills.d.ts +104 -0
  142. package/dist/orchestration/ooda/skills.d.ts.map +1 -1
  143. package/dist/orchestration/ooda/skills.js +106 -0
  144. package/dist/orchestration/ooda/skills.js.map +1 -1
  145. package/dist/orchestration/ooda/types.d.ts +3 -8
  146. package/dist/orchestration/ooda/types.d.ts.map +1 -1
  147. package/dist/ports/bastion-action.contract.test.d.ts +11 -0
  148. package/dist/ports/bastion-action.contract.test.d.ts.map +1 -0
  149. package/dist/ports/bastion-action.contract.test.js +238 -0
  150. package/dist/ports/bastion-action.contract.test.js.map +1 -0
  151. package/dist/ports/bastion-action.d.ts +133 -0
  152. package/dist/ports/bastion-action.d.ts.map +1 -0
  153. package/dist/ports/bastion-action.js +73 -0
  154. package/dist/ports/bastion-action.js.map +1 -0
  155. package/dist/ports/brain.d.ts +31 -0
  156. package/dist/ports/brain.d.ts.map +1 -1
  157. package/dist/ports/brain.js +115 -1
  158. package/dist/ports/brain.js.map +1 -1
  159. package/dist/ports/citadel-action.contract.test.d.ts +11 -0
  160. package/dist/ports/citadel-action.contract.test.d.ts.map +1 -0
  161. package/dist/ports/citadel-action.contract.test.js +317 -0
  162. package/dist/ports/citadel-action.contract.test.js.map +1 -0
  163. package/dist/ports/citadel-action.d.ts +111 -0
  164. package/dist/ports/citadel-action.d.ts.map +1 -0
  165. package/dist/ports/citadel-action.js +62 -0
  166. package/dist/ports/citadel-action.js.map +1 -0
  167. package/dist/ports/compliance-contract.d.ts +123 -0
  168. package/dist/ports/compliance-contract.d.ts.map +1 -0
  169. package/dist/ports/compliance-contract.js +35 -0
  170. package/dist/ports/compliance-contract.js.map +1 -0
  171. package/dist/ports/db.d.ts +38 -0
  172. package/dist/ports/db.d.ts.map +1 -1
  173. package/dist/ports/db.js +88 -1
  174. package/dist/ports/db.js.map +1 -1
  175. package/dist/ports/delegation.contract.test.d.ts +9 -0
  176. package/dist/ports/delegation.contract.test.d.ts.map +1 -0
  177. package/dist/ports/delegation.contract.test.js +337 -0
  178. package/dist/ports/delegation.contract.test.js.map +1 -0
  179. package/dist/ports/delegation.d.ts +134 -0
  180. package/dist/ports/delegation.d.ts.map +1 -0
  181. package/dist/ports/delegation.js +105 -0
  182. package/dist/ports/delegation.js.map +1 -0
  183. package/dist/ports/event-bus.d.ts +29 -13
  184. package/dist/ports/event-bus.d.ts.map +1 -1
  185. package/dist/ports/event-bus.js +106 -1
  186. package/dist/ports/event-bus.js.map +1 -1
  187. package/dist/ports/federation.contract.test.d.ts +9 -0
  188. package/dist/ports/federation.contract.test.d.ts.map +1 -0
  189. package/dist/ports/federation.contract.test.js +279 -0
  190. package/dist/ports/federation.contract.test.js.map +1 -0
  191. package/dist/ports/federation.d.ts +140 -0
  192. package/dist/ports/federation.d.ts.map +1 -0
  193. package/dist/ports/federation.js +57 -0
  194. package/dist/ports/federation.js.map +1 -0
  195. package/dist/ports/index.d.ts +28 -2
  196. package/dist/ports/index.d.ts.map +1 -1
  197. package/dist/ports/index.js +17 -2
  198. package/dist/ports/index.js.map +1 -1
  199. package/dist/ports/llm-provider.d.ts +37 -0
  200. package/dist/ports/llm-provider.d.ts.map +1 -1
  201. package/dist/ports/llm-provider.js +99 -1
  202. package/dist/ports/llm-provider.js.map +1 -1
  203. package/dist/ports/logger.d.ts +27 -0
  204. package/dist/ports/logger.d.ts.map +1 -1
  205. package/dist/ports/logger.js +87 -0
  206. package/dist/ports/logger.js.map +1 -1
  207. package/dist/ports/manifest-registry.contract.test.d.ts +9 -0
  208. package/dist/ports/manifest-registry.contract.test.d.ts.map +1 -0
  209. package/dist/ports/manifest-registry.contract.test.js +246 -0
  210. package/dist/ports/manifest-registry.contract.test.js.map +1 -0
  211. package/dist/ports/manifest-registry.d.ts +116 -0
  212. package/dist/ports/manifest-registry.d.ts.map +1 -0
  213. package/dist/ports/manifest-registry.js +79 -0
  214. package/dist/ports/manifest-registry.js.map +1 -0
  215. package/dist/ports/observability.contract.test.d.ts +12 -0
  216. package/dist/ports/observability.contract.test.d.ts.map +1 -0
  217. package/dist/ports/observability.contract.test.js +260 -0
  218. package/dist/ports/observability.contract.test.js.map +1 -0
  219. package/dist/ports/observability.d.ts +98 -0
  220. package/dist/ports/observability.d.ts.map +1 -0
  221. package/dist/ports/observability.js +59 -0
  222. package/dist/ports/observability.js.map +1 -0
  223. package/dist/ports/outcome.d.ts +26 -0
  224. package/dist/ports/outcome.d.ts.map +1 -1
  225. package/dist/ports/outcome.js +62 -1
  226. package/dist/ports/outcome.js.map +1 -1
  227. package/dist/ports/privacy.contract.test.d.ts +12 -0
  228. package/dist/ports/privacy.contract.test.d.ts.map +1 -0
  229. package/dist/ports/privacy.contract.test.js +325 -0
  230. package/dist/ports/privacy.contract.test.js.map +1 -0
  231. package/dist/ports/privacy.d.ts +132 -0
  232. package/dist/ports/privacy.d.ts.map +1 -0
  233. package/dist/ports/privacy.js +83 -0
  234. package/dist/ports/privacy.js.map +1 -0
  235. package/dist/ports/tenant-context.contract.test.d.ts +14 -0
  236. package/dist/ports/tenant-context.contract.test.d.ts.map +1 -0
  237. package/dist/ports/tenant-context.contract.test.js +352 -0
  238. package/dist/ports/tenant-context.contract.test.js.map +1 -0
  239. package/dist/ports/tenant-context.d.ts +103 -0
  240. package/dist/ports/tenant-context.d.ts.map +1 -0
  241. package/dist/ports/tenant-context.js +48 -0
  242. package/dist/ports/tenant-context.js.map +1 -0
  243. package/dist/ports/vauban-finance-action.contract.test.d.ts +11 -0
  244. package/dist/ports/vauban-finance-action.contract.test.d.ts.map +1 -0
  245. package/dist/ports/vauban-finance-action.contract.test.js +260 -0
  246. package/dist/ports/vauban-finance-action.contract.test.js.map +1 -0
  247. package/dist/ports/vauban-finance-action.d.ts +106 -0
  248. package/dist/ports/vauban-finance-action.d.ts.map +1 -0
  249. package/dist/ports/vauban-finance-action.js +60 -0
  250. package/dist/ports/vauban-finance-action.js.map +1 -0
  251. package/dist/ports/workflow-runtime.d.ts +204 -0
  252. package/dist/ports/workflow-runtime.d.ts.map +1 -0
  253. package/dist/ports/workflow-runtime.js +72 -0
  254. package/dist/ports/workflow-runtime.js.map +1 -0
  255. package/dist/proof/cert-verify.d.ts +80 -0
  256. package/dist/proof/cert-verify.d.ts.map +1 -0
  257. package/dist/proof/cert-verify.js +178 -0
  258. package/dist/proof/cert-verify.js.map +1 -0
  259. package/dist/replay/replay.d.ts.map +1 -1
  260. package/dist/replay/replay.js +5 -1
  261. package/dist/replay/replay.js.map +1 -1
  262. package/dist/retry/index.d.ts +129 -0
  263. package/dist/retry/index.d.ts.map +1 -0
  264. package/dist/retry/index.js +156 -0
  265. package/dist/retry/index.js.map +1 -0
  266. package/dist/retry/presets.d.ts +39 -0
  267. package/dist/retry/presets.d.ts.map +1 -0
  268. package/dist/retry/presets.js +69 -0
  269. package/dist/retry/presets.js.map +1 -0
  270. package/dist/skill-loop/ab-runner.d.ts +67 -0
  271. package/dist/skill-loop/ab-runner.d.ts.map +1 -0
  272. package/dist/skill-loop/ab-runner.js +160 -0
  273. package/dist/skill-loop/ab-runner.js.map +1 -0
  274. package/dist/skill-loop/adoption.d.ts +67 -0
  275. package/dist/skill-loop/adoption.d.ts.map +1 -0
  276. package/dist/skill-loop/adoption.js +126 -0
  277. package/dist/skill-loop/adoption.js.map +1 -0
  278. package/dist/skill-loop/candidate.d.ts +45 -0
  279. package/dist/skill-loop/candidate.d.ts.map +1 -0
  280. package/dist/skill-loop/candidate.js +43 -0
  281. package/dist/skill-loop/candidate.js.map +1 -0
  282. package/dist/skill-loop/evaluator.d.ts +42 -0
  283. package/dist/skill-loop/evaluator.d.ts.map +1 -0
  284. package/dist/skill-loop/evaluator.js +184 -0
  285. package/dist/skill-loop/evaluator.js.map +1 -0
  286. package/dist/skill-loop/index.d.ts +27 -0
  287. package/dist/skill-loop/index.d.ts.map +1 -0
  288. package/dist/skill-loop/index.js +27 -0
  289. package/dist/skill-loop/index.js.map +1 -0
  290. package/dist/skill-loop/reflexion-replay.d.ts +87 -0
  291. package/dist/skill-loop/reflexion-replay.d.ts.map +1 -0
  292. package/dist/skill-loop/reflexion-replay.js +110 -0
  293. package/dist/skill-loop/reflexion-replay.js.map +1 -0
  294. package/dist/skill-loop/sign-off.d.ts +88 -0
  295. package/dist/skill-loop/sign-off.d.ts.map +1 -0
  296. package/dist/skill-loop/sign-off.js +146 -0
  297. package/dist/skill-loop/sign-off.js.map +1 -0
  298. package/dist/skill-loop/value-metric.d.ts +55 -0
  299. package/dist/skill-loop/value-metric.d.ts.map +1 -0
  300. package/dist/skill-loop/value-metric.js +69 -0
  301. package/dist/skill-loop/value-metric.js.map +1 -0
  302. package/dist/skill-loop/versioning.d.ts +36 -0
  303. package/dist/skill-loop/versioning.d.ts.map +1 -0
  304. package/dist/skill-loop/versioning.js +47 -0
  305. package/dist/skill-loop/versioning.js.map +1 -0
  306. package/dist/skill-manifest/anchor.d.ts +91 -0
  307. package/dist/skill-manifest/anchor.d.ts.map +1 -0
  308. package/dist/skill-manifest/anchor.js +331 -0
  309. package/dist/skill-manifest/anchor.js.map +1 -0
  310. package/dist/skill-manifest/builder.d.ts +47 -0
  311. package/dist/skill-manifest/builder.d.ts.map +1 -0
  312. package/dist/skill-manifest/builder.js +93 -0
  313. package/dist/skill-manifest/builder.js.map +1 -0
  314. package/dist/skill-manifest/index.d.ts +13 -0
  315. package/dist/skill-manifest/index.d.ts.map +1 -0
  316. package/dist/skill-manifest/index.js +9 -0
  317. package/dist/skill-manifest/index.js.map +1 -0
  318. package/dist/skill-manifest/types.d.ts +67 -0
  319. package/dist/skill-manifest/types.d.ts.map +1 -0
  320. package/dist/skill-manifest/types.js +16 -0
  321. package/dist/skill-manifest/types.js.map +1 -0
  322. package/dist/skill-manifest/verifier.d.ts +42 -0
  323. package/dist/skill-manifest/verifier.d.ts.map +1 -0
  324. package/dist/skill-manifest/verifier.js +136 -0
  325. package/dist/skill-manifest/verifier.js.map +1 -0
  326. package/dist/skills/brain-query.d.ts +4 -4
  327. package/dist/skills/brain-store.d.ts +6 -6
  328. package/dist/skills/errors.d.ts +15 -0
  329. package/dist/skills/errors.d.ts.map +1 -1
  330. package/dist/skills/errors.js +21 -0
  331. package/dist/skills/errors.js.map +1 -1
  332. package/dist/skills/hitl-request.d.ts +2 -2
  333. package/dist/skills/index.d.ts +3 -1
  334. package/dist/skills/index.d.ts.map +1 -1
  335. package/dist/skills/index.js +4 -1
  336. package/dist/skills/index.js.map +1 -1
  337. package/dist/skills/markdown/loader.d.ts +52 -0
  338. package/dist/skills/markdown/loader.d.ts.map +1 -0
  339. package/dist/skills/markdown/loader.js +93 -0
  340. package/dist/skills/markdown/loader.js.map +1 -0
  341. package/dist/skills/markdown/schema.d.ts +432 -0
  342. package/dist/skills/markdown/schema.d.ts.map +1 -0
  343. package/dist/skills/markdown/schema.js +121 -0
  344. package/dist/skills/markdown/schema.js.map +1 -0
  345. package/dist/skills/poc-md-loader/markdown-loader.d.ts +77 -0
  346. package/dist/skills/poc-md-loader/markdown-loader.d.ts.map +1 -0
  347. package/dist/skills/poc-md-loader/markdown-loader.js +125 -0
  348. package/dist/skills/poc-md-loader/markdown-loader.js.map +1 -0
  349. package/dist/skills/poc-md-loader/runner.d.ts +24 -0
  350. package/dist/skills/poc-md-loader/runner.d.ts.map +1 -0
  351. package/dist/skills/poc-md-loader/runner.js +57 -0
  352. package/dist/skills/poc-md-loader/runner.js.map +1 -0
  353. package/dist/skills/poc-md-loader/vitest.poc.config.d.ts +3 -0
  354. package/dist/skills/poc-md-loader/vitest.poc.config.d.ts.map +1 -0
  355. package/dist/skills/poc-md-loader/vitest.poc.config.js +13 -0
  356. package/dist/skills/poc-md-loader/vitest.poc.config.js.map +1 -0
  357. package/dist/skills/poc-md-loader/web-search/script.d.ts +33 -0
  358. package/dist/skills/poc-md-loader/web-search/script.d.ts.map +1 -0
  359. package/dist/skills/poc-md-loader/web-search/script.js +75 -0
  360. package/dist/skills/poc-md-loader/web-search/script.js.map +1 -0
  361. package/dist/skills/record-outcome.d.ts +4 -4
  362. package/dist/skills/send-email.d.ts.map +1 -1
  363. package/dist/skills/send-email.js +15 -3
  364. package/dist/skills/send-email.js.map +1 -1
  365. package/dist/skills/slack-notify.d.ts +4 -4
  366. package/dist/skills/starknet-balance.d.ts +1 -1
  367. package/dist/skills/telegram-notify.d.ts +4 -4
  368. package/dist/skills/web-search.d.ts +1 -1
  369. package/dist/testing/contracts/event-bus.contract.d.ts.map +1 -1
  370. package/dist/testing/contracts/event-bus.contract.js +14 -12
  371. package/dist/testing/contracts/event-bus.contract.js.map +1 -1
  372. package/dist/testing/index.d.ts +3 -0
  373. package/dist/testing/test-brain-port.d.ts +4 -0
  374. package/dist/testing/test-brain-port.d.ts.map +1 -1
  375. package/dist/testing/test-brain-port.js +75 -20
  376. package/dist/testing/test-brain-port.js.map +1 -1
  377. package/dist/testing/test-event-bus.d.ts.map +1 -1
  378. package/dist/testing/test-event-bus.js +89 -36
  379. package/dist/testing/test-event-bus.js.map +1 -1
  380. package/dist/trace/schema.d.ts +1 -1
  381. package/dist/trace/schema.d.ts.map +1 -1
  382. package/dist/trace/schema.js +1 -1
  383. package/dist/trace/schema.js.map +1 -1
  384. package/dist/verify/formal/index.d.ts +44 -0
  385. package/dist/verify/formal/index.d.ts.map +1 -0
  386. package/dist/verify/formal/index.js +98 -0
  387. package/dist/verify/formal/index.js.map +1 -0
  388. package/dist/verify/formal/policy.d.ts +105 -0
  389. package/dist/verify/formal/policy.d.ts.map +1 -0
  390. package/dist/verify/formal/policy.js +159 -0
  391. package/dist/verify/formal/policy.js.map +1 -0
  392. package/dist/verify/formal/result.d.ts +50 -0
  393. package/dist/verify/formal/result.d.ts.map +1 -0
  394. package/dist/verify/formal/result.js +21 -0
  395. package/dist/verify/formal/result.js.map +1 -0
  396. package/dist/verify/formal/solver.d.ts +67 -0
  397. package/dist/verify/formal/solver.d.ts.map +1 -0
  398. package/dist/verify/formal/solver.js +184 -0
  399. package/dist/verify/formal/solver.js.map +1 -0
  400. package/dist/verify/formal/spec-language.d.ts +80 -0
  401. package/dist/verify/formal/spec-language.d.ts.map +1 -0
  402. package/dist/verify/formal/spec-language.js +219 -0
  403. package/dist/verify/formal/spec-language.js.map +1 -0
  404. package/docs/attestation.md +199 -0
  405. package/docs/identity.md +193 -0
  406. package/package.json +22 -1
  407. package/src/adapters/llm/anthropic-direct.ts +51 -0
  408. package/src/adapters/llm/cascade.ts +64 -19
  409. package/src/adapters/llm/litellm.ts +49 -0
  410. package/src/compute/difficulty-estimator.ts +111 -0
  411. package/src/compute/strategies/mixture-of-agents.ts +150 -0
  412. package/src/compute/strategies/tree-of-thoughts.ts +293 -0
  413. package/src/compute/strategies/two-phase-orient.ts +147 -0
  414. package/src/container/protocol.ts +243 -0
  415. package/src/container/runtime.ts +424 -0
  416. package/src/db/migrations/026_formal_verify_results.sql +30 -0
  417. package/src/events/catalogue.ts +54 -0
  418. package/src/events/index.ts +9 -0
  419. package/src/events/schemas/citadel.sprint.analyzed.v1.ts +23 -0
  420. package/src/events/schemas/forge.inbox.reply_classified.v1.ts +15 -0
  421. package/src/events/schemas/vauban-finance.forecast.generated.v1.ts +11 -0
  422. package/src/events/schemas/vauban-finance.trade.executed.v1.ts +12 -0
  423. package/src/events/schemas/vauban.goal.checked.v1.ts +11 -0
  424. package/src/events/schemas/vauban.rebalancing.checked.v1.ts +11 -0
  425. package/src/events/schemas/vauban.tax.checked.v1.ts +11 -0
  426. package/src/events/schemas/vauban.vault.analyzed.v1.ts +21 -0
  427. package/src/events/schemas/vauban.vault.compounded.v1.ts +12 -0
  428. package/src/identity/agent-persona.ts +203 -0
  429. package/src/identity/persona-prompt.ts +84 -0
  430. package/src/identity/persona-schema.ts +127 -0
  431. package/src/index.ts +338 -1
  432. package/src/loop/index.ts +0 -1
  433. package/src/loop/sdk-loop.ts +5 -8
  434. package/src/memory/episodic-rrf.ts +224 -0
  435. package/src/mesh/attenuation.ts +190 -0
  436. package/src/mesh/delegate.ts +254 -0
  437. package/src/mesh/dispatcher.ts +301 -0
  438. package/src/mesh/index.ts +39 -0
  439. package/src/mesh/types.ts +31 -0
  440. package/src/orchestration/ooda/skills.ts +177 -0
  441. package/src/orchestration/ooda/types.ts +3 -9
  442. package/src/ports/bastion-action.contract.test.ts +355 -0
  443. package/src/ports/bastion-action.ts +198 -0
  444. package/src/ports/brain.ts +177 -15
  445. package/src/ports/citadel-action.contract.test.ts +430 -0
  446. package/src/ports/citadel-action.ts +174 -0
  447. package/src/ports/compliance-contract.ts +191 -0
  448. package/src/ports/db.ts +98 -0
  449. package/src/ports/delegation.contract.test.ts +428 -0
  450. package/src/ports/delegation.ts +211 -0
  451. package/src/ports/event-bus.ts +133 -18
  452. package/src/ports/federation.contract.test.ts +355 -0
  453. package/src/ports/federation.ts +190 -0
  454. package/src/ports/index.ts +186 -1
  455. package/src/ports/llm-provider.ts +123 -0
  456. package/src/ports/logger.ts +104 -0
  457. package/src/ports/manifest-registry.contract.test.ts +324 -0
  458. package/src/ports/manifest-registry.ts +188 -0
  459. package/src/ports/observability.contract.test.ts +315 -0
  460. package/src/ports/observability.ts +150 -0
  461. package/src/ports/outcome.ts +69 -0
  462. package/src/ports/privacy.contract.test.ts +413 -0
  463. package/src/ports/privacy.ts +207 -0
  464. package/src/ports/tenant-context.contract.test.ts +454 -0
  465. package/src/ports/tenant-context.ts +150 -0
  466. package/src/ports/vauban-finance-action.contract.test.ts +335 -0
  467. package/src/ports/vauban-finance-action.ts +166 -0
  468. package/src/ports/workflow-runtime.ts +327 -0
  469. package/src/proof/cert-verify.ts +249 -0
  470. package/src/replay/replay.ts +11 -8
  471. package/src/retry/index.ts +227 -0
  472. package/src/retry/presets.ts +75 -0
  473. package/src/skill-loop/ab-runner.ts +196 -0
  474. package/src/skill-loop/adoption.ts +188 -0
  475. package/src/skill-loop/candidate.ts +75 -0
  476. package/src/skill-loop/evaluator.ts +238 -0
  477. package/src/skill-loop/index.ts +51 -0
  478. package/src/skill-loop/reflexion-replay.ts +173 -0
  479. package/src/skill-loop/sign-off.ts +247 -0
  480. package/src/skill-loop/value-metric.ts +120 -0
  481. package/src/skill-loop/versioning.ts +75 -0
  482. package/src/skill-manifest/anchor.ts +401 -0
  483. package/src/skill-manifest/builder.ts +129 -0
  484. package/src/skill-manifest/index.ts +18 -0
  485. package/src/skill-manifest/types.ts +72 -0
  486. package/src/skill-manifest/verifier.ts +198 -0
  487. package/src/skills/errors.ts +30 -2
  488. package/src/skills/index.ts +19 -0
  489. package/src/skills/markdown/loader.ts +129 -0
  490. package/src/skills/markdown/schema.ts +144 -0
  491. package/src/skills/poc-md-loader/e2e-parity.test.ts +237 -0
  492. package/src/skills/poc-md-loader/markdown-loader.ts +161 -0
  493. package/src/skills/poc-md-loader/runner.ts +82 -0
  494. package/src/skills/poc-md-loader/vitest.poc.config.ts +13 -0
  495. package/src/skills/poc-md-loader/web-search/SKILL.md +42 -0
  496. package/src/skills/poc-md-loader/web-search/script.ts +109 -0
  497. package/src/skills/send-email.ts +15 -3
  498. package/src/testing/contracts/event-bus.contract.ts +16 -14
  499. package/src/testing/test-brain-port.ts +98 -24
  500. package/src/testing/test-event-bus.ts +104 -43
  501. package/src/trace/schema.ts +1 -1
  502. package/src/verify/formal/index.ts +154 -0
  503. package/src/verify/formal/policy.ts +253 -0
  504. package/src/verify/formal/result.ts +52 -0
  505. package/src/verify/formal/solver.ts +235 -0
  506. package/src/verify/formal/spec-language.ts +274 -0
@@ -0,0 +1,279 @@
1
+ /**
2
+ * FederationPort contract tests (S4 spec).
3
+ *
4
+ * Applied to any FederationPort implementation.
5
+ * Verifies: send→receive roundtrip, signature verification, delegation chain preservation,
6
+ * consistent hash routing determinism, replay protection via nonce.
7
+ */
8
+ import { describe, expect, test } from "vitest";
9
+ import { FederationSignatureInvalidError, FederationDelegationChainError, FederationMessageExpiredError, } from "./federation.js";
10
+ /**
11
+ * Factory function to create a minimal valid FederationMessage for testing.
12
+ */
13
+ function makeFederationMessage(overrides = {}) {
14
+ const now = new Date().toISOString();
15
+ const expiresAt = new Date(Date.now() + 86400000).toISOString(); // +24h
16
+ const header = {
17
+ message_id: crypto.randomUUID(),
18
+ from_agent: {
19
+ agent_id: "vauban.cc.test@v1.0",
20
+ tenant_id: "test-tenant-1",
21
+ agent_card_url: "https://example.com/cards/test-agent",
22
+ },
23
+ to_agent: {
24
+ agent_id: "vauban.cc.receiver@v1.0",
25
+ tenant_id: "test-tenant-2",
26
+ },
27
+ correlation_id: crypto.randomUUID(),
28
+ timestamp: now,
29
+ nonce: crypto.getRandomValues(new Uint8Array(32)).toString(),
30
+ };
31
+ const contentClaim = {
32
+ subject: `digest:${header.message_id}`,
33
+ predicate: {
34
+ domain: "vauban.federation.message.v1",
35
+ body: {
36
+ action: "test_message",
37
+ payload: { test_data: "hello world" },
38
+ },
39
+ },
40
+ evidence: {
41
+ proof: "ed25519_" + crypto.randomUUID().replace(/-/g, "").slice(0, 32),
42
+ public_inputs: {
43
+ from_agent: header.from_agent.agent_id,
44
+ to_agent: header.to_agent.agent_id,
45
+ },
46
+ },
47
+ temporal_frame: {
48
+ not_before: now,
49
+ not_after: expiresAt,
50
+ revoked_at: null,
51
+ },
52
+ revelation_mask: {
53
+ disclosed: ["/subject", "/predicate", "/temporal_frame"],
54
+ committed: [],
55
+ },
56
+ anchor: [
57
+ {
58
+ chain: "StarknetMainnet",
59
+ tx_hash: "0x" + crypto.randomUUID().replace(/-/g, "").slice(0, 32),
60
+ },
61
+ ],
62
+ };
63
+ const transport = {
64
+ protocol: "mcp",
65
+ version: "1.0.0",
66
+ jws_signature: "eyJ" +
67
+ crypto.randomUUID().replace(/-/g, "").slice(0, 48) +
68
+ ".payload.signature",
69
+ };
70
+ return {
71
+ id: header.message_id,
72
+ header,
73
+ content_claim: contentClaim,
74
+ transport,
75
+ ...overrides,
76
+ };
77
+ }
78
+ export const federationPortContract = (factory) => {
79
+ describe("FederationPort contract", () => {
80
+ test("send→receive roundtrip delivers message to destination tenant", async () => {
81
+ const port = factory();
82
+ const msg = makeFederationMessage();
83
+ // Send message
84
+ const msgId = await port.send(msg);
85
+ expect(msgId).toBe(msg.id);
86
+ // Receive should deliver it to the destination tenant
87
+ const received = await port.receive({
88
+ destinationTenantId: msg.header.to_agent.tenant_id,
89
+ timeout: 2000,
90
+ });
91
+ expect(received.length).toBeGreaterThan(0);
92
+ const deliveredMsg = received.find((m) => m.id === msg.id);
93
+ expect(deliveredMsg).toBeDefined();
94
+ expect(deliveredMsg?.header.to_agent.tenant_id).toBe(msg.header.to_agent.tenant_id);
95
+ });
96
+ test("verifyMessage rejects tampered signature", async () => {
97
+ const port = factory();
98
+ const msg = makeFederationMessage();
99
+ // Tamper with the signature
100
+ const tamperedMsg = {
101
+ ...msg,
102
+ transport: {
103
+ ...msg.transport,
104
+ jws_signature: "invalid_signature_header.payload.signature",
105
+ },
106
+ };
107
+ const result = await port.verifyMessage(tamperedMsg);
108
+ expect(result.valid).toBe(false);
109
+ expect(result.errors.length).toBeGreaterThan(0);
110
+ });
111
+ test("verifyMessage accepts valid message signature and structure", async () => {
112
+ const port = factory();
113
+ const msg = makeFederationMessage();
114
+ // For this test, we mock a proper signature check
115
+ // In real implementation, this would verify Ed25519
116
+ const result = await port.verifyMessage(msg);
117
+ // Result should indicate validation (or require real crypto)
118
+ // This test is structural — real crypto is adapter responsibility
119
+ expect(result.signer_agent_id).toBeDefined();
120
+ });
121
+ test("delegation chain narrowing is preserved (R-1 invariant)", async () => {
122
+ const port = factory();
123
+ // Message with delegation chain showing authority narrowing
124
+ const msg = makeFederationMessage({
125
+ delegation_chain: [
126
+ {
127
+ id: crypto.randomUUID(),
128
+ parent_id: undefined,
129
+ scope: {
130
+ capabilities: ["read", "write"],
131
+ constraints: [],
132
+ jurisdictions: ["EU.v1"],
133
+ expires_at: new Date(Date.now() + 86400000).toISOString(),
134
+ },
135
+ ed25519_sig: "sig1",
136
+ ttl: 86400,
137
+ issuer: "root-agent",
138
+ holder: "intermediate-agent",
139
+ },
140
+ {
141
+ id: crypto.randomUUID(),
142
+ parent_id: "parent1",
143
+ scope: {
144
+ capabilities: ["read"], // narrowed from ["read", "write"]
145
+ constraints: [],
146
+ jurisdictions: ["EU.v1"],
147
+ expires_at: new Date(Date.now() + 86400000).toISOString(),
148
+ },
149
+ ed25519_sig: "sig2",
150
+ ttl: 86400,
151
+ issuer: "intermediate-agent",
152
+ holder: "delegated-agent",
153
+ },
154
+ ],
155
+ });
156
+ // Send and verify
157
+ const msgId = await port.send(msg);
158
+ expect(msgId).toBe(msg.id);
159
+ const result = await port.verifyMessage(msg);
160
+ // Delegation chain should be preserved
161
+ expect(result.chain_depth).toBe(2);
162
+ });
163
+ test("routing by consistent hash is deterministic", async () => {
164
+ const port = factory();
165
+ // Two messages from same tenant should hash to same node
166
+ const msg1 = makeFederationMessage({
167
+ header: {
168
+ ...makeFederationMessage().header,
169
+ message_id: "msg-1",
170
+ },
171
+ });
172
+ const msg2 = makeFederationMessage({
173
+ header: {
174
+ ...makeFederationMessage().header,
175
+ message_id: "msg-2",
176
+ to_agent: { ...msg1.header.to_agent }, // same dest tenant
177
+ },
178
+ });
179
+ // Both sent to same tenant
180
+ await port.send(msg1);
181
+ await port.send(msg2);
182
+ // Receive from that tenant — both should arrive
183
+ const received = await port.receive({
184
+ destinationTenantId: msg1.header.to_agent.tenant_id,
185
+ maxMessages: 10,
186
+ timeout: 1000,
187
+ });
188
+ const ids = received.map((m) => m.id);
189
+ expect(ids).toContain("msg-1");
190
+ expect(ids).toContain("msg-2");
191
+ });
192
+ test("expired message is rejected by verifyMessage", async () => {
193
+ const port = factory();
194
+ const now = new Date();
195
+ const expired = new Date(now.getTime() - 3600000); // 1h ago
196
+ const msg = makeFederationMessage({
197
+ content_claim: {
198
+ ...makeFederationMessage().content_claim,
199
+ temporal_frame: {
200
+ not_before: new Date(now.getTime() - 7200000).toISOString(),
201
+ not_after: expired.toISOString(),
202
+ revoked_at: null,
203
+ },
204
+ },
205
+ });
206
+ const result = await port.verifyMessage(msg);
207
+ expect(result.valid).toBe(false);
208
+ expect(result.errors.some((e) => e.includes("expired"))).toBe(true);
209
+ });
210
+ test("ack marks message as consumed and prevents redelivery", async () => {
211
+ const port = factory();
212
+ const msg = makeFederationMessage();
213
+ await port.send(msg);
214
+ // First receive
215
+ let received = await port.receive({
216
+ destinationTenantId: msg.header.to_agent.tenant_id,
217
+ timeout: 1000,
218
+ });
219
+ expect(received.length).toBeGreaterThan(0);
220
+ const msgId = received[0].id;
221
+ // Ack it
222
+ await port.ack(msgId);
223
+ // Second receive should NOT return the same message
224
+ received = await port.receive({
225
+ destinationTenantId: msg.header.to_agent.tenant_id,
226
+ timeout: 500,
227
+ });
228
+ const acked = received.find((m) => m.id === msgId);
229
+ expect(acked).toBeUndefined();
230
+ });
231
+ test("nack returns message to queue (max 3 attempts)", async () => {
232
+ const port = factory();
233
+ const msg = makeFederationMessage();
234
+ await port.send(msg);
235
+ const received = await port.receive({
236
+ destinationTenantId: msg.header.to_agent.tenant_id,
237
+ timeout: 1000,
238
+ });
239
+ expect(received.length).toBeGreaterThan(0);
240
+ const msgId = received[0].id;
241
+ // Nack it (1st time)
242
+ await port.nack(msgId, "retry");
243
+ // Should reappear in next receive
244
+ const redelivered = await port.receive({
245
+ destinationTenantId: msg.header.to_agent.tenant_id,
246
+ timeout: 1000,
247
+ });
248
+ const redeliveredMsg = redelivered.find((m) => m.id === msgId);
249
+ expect(redeliveredMsg).toBeDefined();
250
+ });
251
+ });
252
+ };
253
+ // ─── Apply contract to test implementations ────────────────────────────────
254
+ // Placeholder: real implementations will hook this up
255
+ // federationPortContract(() => new MyFederationPortImpl());
256
+ // ─── Error type tests ─────────────────────────────────────────────────────
257
+ describe("FederationPort — error types", () => {
258
+ test("FederationSignatureInvalidError captures messageId and reason", () => {
259
+ const err = new FederationSignatureInvalidError("msg-123", "Ed25519 verification failed");
260
+ expect(err.messageId).toBe("msg-123");
261
+ expect(err.reason).toContain("Ed25519");
262
+ expect(err.name).toBe("FederationSignatureInvalidError");
263
+ });
264
+ test("FederationDelegationChainError captures depth and reason", () => {
265
+ const err = new FederationDelegationChainError("msg-456", 3, "Narrowing invariant violated");
266
+ expect(err.messageId).toBe("msg-456");
267
+ expect(err.chainDepth).toBe(3);
268
+ expect(err.reason).toContain("Narrowing");
269
+ expect(err.name).toBe("FederationDelegationChainError");
270
+ });
271
+ test("FederationMessageExpiredError captures temporal bounds", () => {
272
+ const notAfter = "2025-01-01T00:00:00Z";
273
+ const err = new FederationMessageExpiredError("msg-789", notAfter);
274
+ expect(err.messageId).toBe("msg-789");
275
+ expect(err.notAfter).toBe(notAfter);
276
+ expect(err.name).toBe("FederationMessageExpiredError");
277
+ });
278
+ });
279
+ //# sourceMappingURL=federation.contract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.contract.test.js","sourceRoot":"","sources":["../../src/ports/federation.contract.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * FederationPort — agent-to-agent messaging with cryptographic provenance (S4 spec).
3
+ *
4
+ * Implements A2A v1.0 transport (JWS RFC 7515) superset with Vauban Claim sextuplet
5
+ * payload. Messages routed by consistent hashing on tenant_id. Delegation chains preserved.
6
+ * Ed25519 signatures over CBOR canonical encoding.
7
+ *
8
+ * Spec: docs/plans/PreCarre/canonical/specs/S4.md
9
+ */
10
+ export type Protocol = "mcp" | "a2a-jsonrpc" | "a2a-grpc" | "http-gateway";
11
+ export interface AgentRef {
12
+ readonly agent_id: string;
13
+ readonly tenant_id: string;
14
+ readonly agent_card_url?: string;
15
+ }
16
+ export interface FederationMessageHeader {
17
+ readonly message_id: string;
18
+ readonly from_agent: AgentRef;
19
+ readonly to_agent: AgentRef;
20
+ readonly correlation_id: string;
21
+ readonly causation_id?: string;
22
+ readonly timestamp: string;
23
+ readonly nonce: string;
24
+ }
25
+ export interface TransportMeta {
26
+ readonly protocol: Protocol;
27
+ readonly version: string;
28
+ readonly jws_signature: string;
29
+ }
30
+ /**
31
+ * Content claim payload — Vauban Claim sextuplet.
32
+ * Domain normalized to "vauban.federation.message.v1" for all S4 messages.
33
+ */
34
+ export interface ContentClaim {
35
+ readonly subject: string;
36
+ readonly predicate: {
37
+ readonly domain: "vauban.federation.message.v1";
38
+ readonly body: Record<string, unknown>;
39
+ };
40
+ readonly evidence: {
41
+ readonly proof: string;
42
+ readonly public_inputs: Record<string, unknown>;
43
+ };
44
+ readonly temporal_frame: {
45
+ readonly not_before: string;
46
+ readonly not_after: string;
47
+ readonly revoked_at?: string | null;
48
+ };
49
+ readonly revelation_mask: {
50
+ readonly disclosed: string[];
51
+ readonly committed: string[];
52
+ };
53
+ readonly anchor: ReadonlyArray<{
54
+ readonly chain: "StarknetMainnet" | "StarknetL3Glacis";
55
+ readonly tx_hash?: string;
56
+ }>;
57
+ }
58
+ export interface FederationMessage {
59
+ readonly id: string;
60
+ readonly header: FederationMessageHeader;
61
+ readonly content_claim: ContentClaim;
62
+ readonly transport: TransportMeta;
63
+ readonly delegation_chain?: ReadonlyArray<{
64
+ readonly id: string;
65
+ readonly parent_id?: string;
66
+ readonly scope: {
67
+ readonly capabilities: ReadonlyArray<string>;
68
+ readonly constraints: ReadonlyArray<unknown>;
69
+ readonly jurisdictions: ReadonlyArray<string>;
70
+ readonly expires_at: string;
71
+ };
72
+ readonly ed25519_sig: string;
73
+ }>;
74
+ }
75
+ export type MessageId = string;
76
+ export interface VerifyResult {
77
+ readonly valid: boolean;
78
+ readonly errors: string[];
79
+ readonly signer_agent_id?: string;
80
+ readonly chain_depth?: number;
81
+ }
82
+ export interface ReceiveOpts {
83
+ readonly destinationTenantId?: string;
84
+ readonly timeout?: number;
85
+ readonly maxMessages?: number;
86
+ }
87
+ export interface FederationPort {
88
+ /**
89
+ * Send a message to another agent.
90
+ * Message is JWS-signed and routed by consistent hashing on destination tenant_id.
91
+ * Returns message_id on success.
92
+ */
93
+ send(message: FederationMessage, opts?: {
94
+ timeoutMs?: number;
95
+ }): Promise<MessageId>;
96
+ /**
97
+ * Receive pending messages (subscriber pattern).
98
+ * Messages are routed to this agent's tenant by consistent hash.
99
+ * Returns empty array if no messages within timeout window.
100
+ */
101
+ receive(opts?: ReceiveOpts): Promise<FederationMessage[]>;
102
+ /**
103
+ * Verify JWS signature and Claim sextuplet integrity.
104
+ * Checks Ed25519 signature, CBOR canonicalization, temporal bounds, delegation chain narrowing.
105
+ * Does NOT verify on-chain anchor (separate concern).
106
+ */
107
+ verifyMessage(msg: FederationMessage): Promise<VerifyResult>;
108
+ /**
109
+ * Acknowledge a received message to mark it as consumed.
110
+ * Prevents redelivery.
111
+ */
112
+ ack(messageId: MessageId): Promise<void>;
113
+ /**
114
+ * Nack a message to return it to the queue (poison pill protection).
115
+ * Max 3 nacks per message, then dead-letter.
116
+ */
117
+ nack(messageId: MessageId, reason?: string): Promise<void>;
118
+ }
119
+ export declare class FederationSignatureInvalidError extends Error {
120
+ readonly messageId: string;
121
+ readonly reason: string;
122
+ constructor(messageId: string, reason: string);
123
+ }
124
+ export declare class FederationRoutingError extends Error {
125
+ readonly tenantId: string;
126
+ readonly reason: string;
127
+ constructor(tenantId: string, reason: string);
128
+ }
129
+ export declare class FederationDelegationChainError extends Error {
130
+ readonly messageId: string;
131
+ readonly chainDepth: number;
132
+ readonly reason: string;
133
+ constructor(messageId: string, chainDepth: number, reason: string);
134
+ }
135
+ export declare class FederationMessageExpiredError extends Error {
136
+ readonly messageId: string;
137
+ readonly notAfter: string;
138
+ constructor(messageId: string, notAfter: string);
139
+ }
140
+ //# sourceMappingURL=federation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/ports/federation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * FederationPort — agent-to-agent messaging with cryptographic provenance (S4 spec).
3
+ *
4
+ * Implements A2A v1.0 transport (JWS RFC 7515) superset with Vauban Claim sextuplet
5
+ * payload. Messages routed by consistent hashing on tenant_id. Delegation chains preserved.
6
+ * Ed25519 signatures over CBOR canonical encoding.
7
+ *
8
+ * Spec: docs/plans/PreCarre/canonical/specs/S4.md
9
+ */
10
+ // ─── Typed errors ─────────────────────────────────────────────────────────────
11
+ export class FederationSignatureInvalidError extends Error {
12
+ messageId;
13
+ reason;
14
+ constructor(messageId, reason) {
15
+ super(`Federation signature invalid (${messageId}): ${reason}`);
16
+ this.messageId = messageId;
17
+ this.reason = reason;
18
+ this.name = "FederationSignatureInvalidError";
19
+ Object.setPrototypeOf(this, new.target.prototype);
20
+ }
21
+ }
22
+ export class FederationRoutingError extends Error {
23
+ tenantId;
24
+ reason;
25
+ constructor(tenantId, reason) {
26
+ super(`Federation routing failed for tenant ${tenantId}: ${reason}`);
27
+ this.tenantId = tenantId;
28
+ this.reason = reason;
29
+ this.name = "FederationRoutingError";
30
+ Object.setPrototypeOf(this, new.target.prototype);
31
+ }
32
+ }
33
+ export class FederationDelegationChainError extends Error {
34
+ messageId;
35
+ chainDepth;
36
+ reason;
37
+ constructor(messageId, chainDepth, reason) {
38
+ super(`Federation delegation chain invalid (${messageId}, depth=${chainDepth}): ${reason}`);
39
+ this.messageId = messageId;
40
+ this.chainDepth = chainDepth;
41
+ this.reason = reason;
42
+ this.name = "FederationDelegationChainError";
43
+ Object.setPrototypeOf(this, new.target.prototype);
44
+ }
45
+ }
46
+ export class FederationMessageExpiredError extends Error {
47
+ messageId;
48
+ notAfter;
49
+ constructor(messageId, notAfter) {
50
+ super(`Federation message expired (${messageId}): not_after=${notAfter}`);
51
+ this.messageId = messageId;
52
+ this.notAfter = notAfter;
53
+ this.name = "FederationMessageExpiredError";
54
+ Object.setPrototypeOf(this, new.target.prototype);
55
+ }
56
+ }
57
+ //# sourceMappingURL=federation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/ports/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsIH,iFAAiF;AAEjF,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAEtC;IACA;IAFlB,YACkB,SAAiB,EACjB,MAAc;QAE9B,KAAK,CAAC,iCAAiC,SAAS,MAAM,MAAM,EAAE,CAAC,CAAC;QAHhD,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;QAC9C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAE7B;IACA;IAFlB,YACkB,QAAgB,EAChB,MAAc;QAE9B,KAAK,CAAC,wCAAwC,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;QAHrD,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAErC;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,UAAkB,EAClB,MAAc;QAE9B,KAAK,CACH,wCAAwC,SAAS,WAAW,UAAU,MAAM,MAAM,EAAE,CACrF,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QAK9B,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAEpC;IACA;IAFlB,YACkB,SAAiB,EACjB,QAAgB;QAEhC,KAAK,CAAC,+BAA+B,SAAS,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAH1D,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAGhC,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAC5C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -6,15 +6,41 @@
6
6
  * via each agent's setXxxDeps() setter.
7
7
  */
8
8
  export type { LoggerPort } from "./logger.js";
9
- export { noopLogger } from "./logger.js";
9
+ export { noopLogger, LoggerFlushError } from "./logger.js";
10
10
  export type { BrainPort, BrainEntry, BrainEntryInput, BrainQueryFilters, WorkingMemoryPort, EpisodicMemoryPort, EpisodicMemoryEntry, SemanticMemoryPort, ProceduralMemoryPort, ProceduralSkill, } from "./brain.js";
11
- export { InMemoryWorkingMemory, InMemoryEpisodicMemory, InMemorySemanticMemory, InMemoryProceduralMemory, } from "./brain.js";
11
+ export { InMemoryWorkingMemory, InMemoryEpisodicMemory, InMemorySemanticMemory, InMemoryProceduralMemory, BrainUnavailableError, BrainRateLimitError, } from "./brain.js";
12
12
  export type { OutcomePort, AgentRunRef } from "./outcome.js";
13
+ export { OutcomeWriteError } from "./outcome.js";
13
14
  export type { CloudEvent, EventBusPort } from "./event-bus.js";
15
+ export { EventPublishError } from "./event-bus.js";
14
16
  export type { DbPort, DbClient } from "./db.js";
17
+ export { DbConnectionLostError, DbQueryTimeoutError } from "./db.js";
15
18
  export type { AgentDescriptor, AgentRegistryPort } from "./agent-registry.js";
16
19
  export type { MessagingChannelPort, AlertLevel } from "./messaging.js";
17
20
  export { InvalidTargetError } from "./messaging.js";
18
21
  export type { LLMProviderPort, ChatRequest, ChatMessage, ChatUsage, ChatResponse, StreamDelta, } from "./llm-provider.js";
22
+ export { LLMProviderError, LLMRateLimitError } from "./llm-provider.js";
19
23
  export type { PricePort, PriceEntry } from "./price.js";
24
+ export type { ComplianceContractPort, ComplianceContract, ComplianceRule, ComplianceGate, ComplianceAuditResult, ComplianceViolation, ManifestValidationResult, PolicyConflict, CapabilityInvocation, TenantContext, LegalBasisRef, LegalBasisDecl, LegalBasisDomain, Jurisdiction, DataClass, ComplianceMode, EnforcementLevel, RuleSource, } from "./compliance-contract.js";
25
+ export { CompliancePolicyError, ComplianceEvaluationTimeoutError, SUPPORTED_JURISDICTIONS_V0, } from "./compliance-contract.js";
26
+ export type { WorkflowRuntimePort, WorkflowContext, WorkflowRun, WorkflowHandler, WorkflowStatus, JournalEntry, StepKind, StepStatus, StepOpts, EventFilter, ChildWorkflowOpts, StartWorkflowOpts, ResumeWorkflowOpts, SendSignalOpts, JournalMigrator, MigrationResult, } from "./workflow-runtime.js";
27
+ export { WorkflowNotFoundError, WorkflowNonDeterminismError, WorkflowSignalTimeoutError, WorkflowLeaseConflictError, WorkflowVersionMismatchError, } from "./workflow-runtime.js";
28
+ export type * from "./manifest-registry.js";
29
+ export { ManifestNotFoundError, ManifestSignatureInvalidError, ManifestVersionConflictError, ManifestComplianceConflictError, ManifestValidationError, } from "./manifest-registry.js";
30
+ export type * from "./tenant-context.js";
31
+ export { TenantNotFoundError, DegradedModeExhaustedError, InvalidGlacisAttestationError, } from "./tenant-context.js";
32
+ export type { FederationPort, FederationMessage, FederationMessageHeader, AgentRef, ContentClaim, TransportMeta, MessageId, ReceiveOpts, VerifyResult as FederationVerifyResult, } from "./federation.js";
33
+ export { FederationSignatureInvalidError, FederationRoutingError, FederationDelegationChainError, } from "./federation.js";
34
+ export type { DelegationPort, DelegationClaim, CapabilityScope, RootCapability, VerifyChainResult, } from "./delegation.js";
35
+ export { DelegationNotNarrowingError, DelegationExpiredError, DelegationRevokedError, DelegationChainTooDeepError, } from "./delegation.js";
36
+ export type { BastionActionPort, SwapParams, SwapResult, DepositParams, DepositResult, WithdrawParams, WithdrawResult, TransferParams, TransferResult, PolicyValidation, ClientPolicy, TokenAddress, VaultAddress, TenantId as BastionTenantId, ActionContext as BastionActionContext, } from "./bastion-action.js";
37
+ export { BastionPolicyViolationError, BastionInsufficientFundsError, BastionSlippageExceededError, BastionContractError, BastionTransferUnauthorizedError, } from "./bastion-action.js";
38
+ export type { VFinanceActionPort, MarketSignal, SolvencyClaim, TradeRecord, TradeClaim, StrategyRunInput, StrategyRunClaim, PortfolioId, ProofGrade, ActionContext as VFActionContext, } from "./vauban-finance-action.js";
39
+ export { VFOracleQuorumError, VFProofGradeMismatchError, VFAnchoringForbiddenError, VFProofGenerationError, } from "./vauban-finance-action.js";
40
+ export type { CitadelActionPort, AgentTier, SprintInput, SprintRef, TaskRef, TaskStatus, VerificationEvidence, SealedSprintClaim, DecisionInput, DecisionClaim, ActionContext as CitadelActionContext, } from "./citadel-action.js";
41
+ export { CitadelTierViolationError, CitadelTaskRefNotFoundError, CitadelSprintNotActiveError, CitadelInvalidStateTransitionError, } from "./citadel-action.js";
42
+ export type * from "./observability.js";
43
+ export { NoopObservabilityPort } from "./observability.js";
44
+ export type { RevelationMask, ZkProofInput, VerifyResult as PrivacyVerifyResult, Commitment, SmtResult, PrivacyContext, PrivacyPort, } from "./privacy.js";
45
+ export { NoopPrivacyAdapter, PrivacyNoopWarning } from "./privacy.js";
20
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE7D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE/D,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,YAAY,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,19 @@
1
- export { noopLogger } from "./logger.js";
2
- export { InMemoryWorkingMemory, InMemoryEpisodicMemory, InMemorySemanticMemory, InMemoryProceduralMemory, } from "./brain.js";
1
+ export { noopLogger, LoggerFlushError } from "./logger.js";
2
+ export { InMemoryWorkingMemory, InMemoryEpisodicMemory, InMemorySemanticMemory, InMemoryProceduralMemory, BrainUnavailableError, BrainRateLimitError, } from "./brain.js";
3
+ export { OutcomeWriteError } from "./outcome.js";
4
+ export { EventPublishError } from "./event-bus.js";
5
+ export { DbConnectionLostError, DbQueryTimeoutError } from "./db.js";
3
6
  export { InvalidTargetError } from "./messaging.js";
7
+ export { LLMProviderError, LLMRateLimitError } from "./llm-provider.js";
8
+ export { CompliancePolicyError, ComplianceEvaluationTimeoutError, SUPPORTED_JURISDICTIONS_V0, } from "./compliance-contract.js";
9
+ export { WorkflowNotFoundError, WorkflowNonDeterminismError, WorkflowSignalTimeoutError, WorkflowLeaseConflictError, WorkflowVersionMismatchError, } from "./workflow-runtime.js";
10
+ export { ManifestNotFoundError, ManifestSignatureInvalidError, ManifestVersionConflictError, ManifestComplianceConflictError, ManifestValidationError, } from "./manifest-registry.js";
11
+ export { TenantNotFoundError, DegradedModeExhaustedError, InvalidGlacisAttestationError, } from "./tenant-context.js";
12
+ export { FederationSignatureInvalidError, FederationRoutingError, FederationDelegationChainError, } from "./federation.js";
13
+ export { DelegationNotNarrowingError, DelegationExpiredError, DelegationRevokedError, DelegationChainTooDeepError, } from "./delegation.js";
14
+ export { BastionPolicyViolationError, BastionInsufficientFundsError, BastionSlippageExceededError, BastionContractError, BastionTransferUnauthorizedError, } from "./bastion-action.js";
15
+ export { VFOracleQuorumError, VFProofGradeMismatchError, VFAnchoringForbiddenError, VFProofGenerationError, } from "./vauban-finance-action.js";
16
+ export { CitadelTierViolationError, CitadelTaskRefNotFoundError, CitadelSprintNotActiveError, CitadelInvalidStateTransitionError, } from "./citadel-action.js";
17
+ export { NoopObservabilityPort } from "./observability.js";
18
+ export { NoopPrivacyAdapter, PrivacyNoopWarning } from "./privacy.js";
4
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAczC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAWpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAc3D,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAKrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAUpD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAwBxE,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAoBlC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AASzB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAc7B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAepC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAW3D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -7,6 +7,10 @@
7
7
  *
8
8
  * Plan v6 §3.2 — canonical interface.
9
9
  *
10
+ * OTel instrumentation: import { createTracedLLMProviderPort } to wrap any
11
+ * LLMProviderPort implementation with OpenTelemetry spans per completion.
12
+ * Gracefully degrades to noop spans when no OTel SDK is installed.
13
+ *
10
14
  * @public
11
15
  */
12
16
  export interface ChatMessage {
@@ -60,4 +64,37 @@ export interface LLMProviderPort {
60
64
  usd: number;
61
65
  };
62
66
  }
67
+ /**
68
+ * Base class for all LLM provider errors.
69
+ * Concrete implementations throw subclasses so callers can switch on error type.
70
+ */
71
+ export declare class LLMProviderError extends Error {
72
+ readonly cause?: unknown | undefined;
73
+ /** The provider identifier (e.g. "groq", "litellm", "anthropic"). */
74
+ readonly provider: string;
75
+ /** The model that was being called (e.g. "llama-3.3-70b"). */
76
+ readonly model: string;
77
+ constructor(message: string, provider: string, model: string, cause?: unknown | undefined);
78
+ }
79
+ /**
80
+ * Thrown when the LLM provider returns 429 (rate limit exceeded).
81
+ * Callers should retry after the delay indicated in `retryAfterMs`
82
+ * or switch to a fallback provider.
83
+ */
84
+ export declare class LLMRateLimitError extends LLMProviderError {
85
+ /** Retry-After delay in milliseconds. */
86
+ readonly retryAfterMs: number;
87
+ constructor(message: string, provider: string, model: string, retryAfterMs: number, cause?: unknown);
88
+ }
89
+ /**
90
+ * Wrap any LLMProviderPort implementation with OTel spans per complete() call.
91
+ * The span captures the model, provider, and token usage on success.
92
+ * Gracefully degrades to noop spans when no OTel SDK is installed.
93
+ *
94
+ * Usage:
95
+ * const raw: LLMProviderPort = buildAnthropicAdapter(...);
96
+ * const traced = createTracedLLMProviderPort(raw);
97
+ * const resp = await traced.complete(req) // emits "llm-provider.complete" span
98
+ */
99
+ export declare function createTracedLLMProviderPort(impl: LLMProviderPort): LLMProviderPort;
63
100
  //# sourceMappingURL=llm-provider.d.ts.map