@paybond/kit 0.9.8 → 0.11.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 (368) hide show
  1. package/completion-presets/catalog.json +1187 -0
  2. package/completion-presets/catalog.sha256 +1 -0
  3. package/dev/trace-ui/dashboard.html +617 -0
  4. package/dist/agent/adapter.d.ts +51 -0
  5. package/dist/agent/adapter.js +66 -0
  6. package/dist/agent/attach-bundle.d.ts +37 -0
  7. package/dist/agent/attach-bundle.js +118 -0
  8. package/dist/agent/authorization-cache.d.ts +22 -0
  9. package/dist/agent/authorization-cache.js +36 -0
  10. package/dist/agent/deferred-tools.d.ts +11 -0
  11. package/dist/agent/deferred-tools.js +62 -0
  12. package/dist/agent/discover.d.ts +41 -0
  13. package/dist/agent/discover.js +147 -0
  14. package/dist/agent/evidence.d.ts +9 -0
  15. package/dist/agent/evidence.js +28 -0
  16. package/dist/agent/facade.d.ts +48 -0
  17. package/dist/agent/facade.js +112 -0
  18. package/dist/agent/gateway-trace-reporter.d.ts +28 -0
  19. package/dist/agent/gateway-trace-reporter.js +49 -0
  20. package/dist/agent/generic-runner.d.ts +14 -0
  21. package/dist/agent/generic-runner.js +49 -0
  22. package/dist/agent/generic-sandbox-demo.d.ts +36 -0
  23. package/dist/agent/generic-sandbox-demo.js +82 -0
  24. package/dist/agent/guarded-agent.d.ts +49 -0
  25. package/dist/agent/guarded-agent.js +100 -0
  26. package/dist/agent/index.d.ts +13 -0
  27. package/dist/agent/index.js +13 -0
  28. package/dist/agent/instrument.d.ts +156 -0
  29. package/dist/agent/instrument.js +442 -0
  30. package/dist/agent/interceptor.d.ts +24 -0
  31. package/dist/agent/interceptor.js +440 -0
  32. package/dist/agent/lazy-context-tools.d.ts +15 -0
  33. package/dist/agent/lazy-context-tools.js +81 -0
  34. package/dist/agent/registry-file.d.ts +39 -0
  35. package/dist/agent/registry-file.js +219 -0
  36. package/dist/agent/registry.d.ts +37 -0
  37. package/dist/agent/registry.js +128 -0
  38. package/dist/agent/run.d.ts +124 -0
  39. package/dist/agent/run.js +301 -0
  40. package/dist/agent/types.d.ts +318 -0
  41. package/dist/agent/types.js +42 -0
  42. package/dist/agent-recognition.d.ts +72 -0
  43. package/dist/agent-recognition.js +165 -0
  44. package/dist/bincode-wire.d.ts +18 -0
  45. package/dist/bincode-wire.js +93 -0
  46. package/dist/claude-agents/config.d.ts +21 -0
  47. package/dist/claude-agents/config.js +145 -0
  48. package/dist/claude-agents/index.d.ts +2 -0
  49. package/dist/claude-agents/index.js +2 -0
  50. package/dist/claude-agents/sandbox-demo.d.ts +30 -0
  51. package/dist/claude-agents/sandbox-demo.js +91 -0
  52. package/dist/cli/agent/env-quote.d.ts +1 -0
  53. package/dist/cli/agent/env-quote.js +6 -0
  54. package/dist/cli/agent/env-write.d.ts +8 -0
  55. package/dist/cli/agent/env-write.js +47 -0
  56. package/dist/cli/agent/paybond.d.ts +16 -0
  57. package/dist/cli/agent/paybond.js +55 -0
  58. package/dist/cli/agent/policy-file.d.ts +29 -0
  59. package/dist/cli/agent/policy-file.js +61 -0
  60. package/dist/cli/agent/production-evidence.d.ts +24 -0
  61. package/dist/cli/agent/production-evidence.js +98 -0
  62. package/dist/cli/agent/run-store.d.ts +30 -0
  63. package/dist/cli/agent/run-store.js +42 -0
  64. package/dist/cli/agent/run-trace-store.d.ts +39 -0
  65. package/dist/cli/agent/run-trace-store.js +143 -0
  66. package/dist/cli/agent-run-trace-table.d.ts +9 -0
  67. package/dist/cli/agent-run-trace-table.js +24 -0
  68. package/dist/cli/agent-sandbox-smoke-checklist.d.ts +9 -0
  69. package/dist/cli/agent-sandbox-smoke-checklist.js +50 -0
  70. package/dist/cli/audit-export.d.ts +7 -0
  71. package/dist/cli/audit-export.js +120 -0
  72. package/dist/cli/automation.d.ts +25 -0
  73. package/dist/cli/automation.js +297 -0
  74. package/dist/cli/body.d.ts +7 -0
  75. package/dist/cli/body.js +22 -0
  76. package/dist/cli/color.d.ts +15 -0
  77. package/dist/cli/color.js +39 -0
  78. package/dist/cli/command-spec.d.ts +13 -0
  79. package/dist/cli/command-spec.js +611 -0
  80. package/dist/cli/commands/agent.d.ts +16 -0
  81. package/dist/cli/commands/agent.js +1135 -0
  82. package/dist/cli/commands/dev.d.ts +7 -0
  83. package/dist/cli/commands/dev.js +348 -0
  84. package/dist/cli/commands/discovery.d.ts +8 -0
  85. package/dist/cli/commands/discovery.js +194 -0
  86. package/dist/cli/commands/policy.d.ts +13 -0
  87. package/dist/cli/commands/policy.js +769 -0
  88. package/dist/cli/commands/setup.d.ts +18 -0
  89. package/dist/cli/commands/setup.js +513 -0
  90. package/dist/cli/commands/workflows.d.ts +7 -0
  91. package/dist/cli/commands/workflows.js +214 -0
  92. package/dist/cli/config.d.ts +16 -0
  93. package/dist/cli/config.js +98 -0
  94. package/dist/cli/context.d.ts +22 -0
  95. package/dist/cli/context.js +110 -0
  96. package/dist/cli/credentials.d.ts +21 -0
  97. package/dist/cli/credentials.js +141 -0
  98. package/dist/cli/doctor-agent-middleware.d.ts +5 -0
  99. package/dist/cli/doctor-agent-middleware.js +49 -0
  100. package/dist/cli/doctor-agent.d.ts +15 -0
  101. package/dist/cli/doctor-agent.js +311 -0
  102. package/dist/cli/envelope.d.ts +14 -0
  103. package/dist/cli/envelope.js +46 -0
  104. package/dist/cli/globals.d.ts +23 -0
  105. package/dist/cli/globals.js +248 -0
  106. package/dist/cli/help.d.ts +3 -0
  107. package/dist/cli/help.js +83 -0
  108. package/dist/cli/mcp-install.d.ts +41 -0
  109. package/dist/cli/mcp-install.js +95 -0
  110. package/dist/cli/mcp-policy.d.ts +26 -0
  111. package/dist/cli/mcp-policy.js +110 -0
  112. package/dist/cli/mcp-verify-config.d.ts +37 -0
  113. package/dist/cli/mcp-verify-config.js +172 -0
  114. package/dist/cli/redact.d.ts +4 -0
  115. package/dist/cli/redact.js +88 -0
  116. package/dist/cli/request-id.d.ts +2 -0
  117. package/dist/cli/request-id.js +5 -0
  118. package/dist/cli/router.d.ts +2 -0
  119. package/dist/cli/router.js +378 -0
  120. package/dist/cli/smoke-deep-links.d.ts +15 -0
  121. package/dist/cli/smoke-deep-links.js +63 -0
  122. package/dist/cli/suggest.d.ts +4 -0
  123. package/dist/cli/suggest.js +58 -0
  124. package/dist/cli/support-diagnostics.d.ts +19 -0
  125. package/dist/cli/support-diagnostics.js +47 -0
  126. package/dist/cli/telemetry.d.ts +17 -0
  127. package/dist/cli/telemetry.js +94 -0
  128. package/dist/cli/types.d.ts +72 -0
  129. package/dist/cli/types.js +60 -0
  130. package/dist/cli/ux.d.ts +8 -0
  131. package/dist/cli/ux.js +164 -0
  132. package/dist/cli.d.ts +2 -0
  133. package/dist/cli.js +38 -0
  134. package/dist/completion-catalog-digest.d.ts +2 -0
  135. package/dist/completion-catalog-digest.js +2 -0
  136. package/dist/completion-catalog-integrity.d.ts +2 -0
  137. package/dist/completion-catalog-integrity.js +17 -0
  138. package/dist/completion-catalog.d.ts +49 -0
  139. package/dist/completion-catalog.js +62 -0
  140. package/dist/completion-contract-digest.d.ts +37 -0
  141. package/dist/completion-contract-digest.js +73 -0
  142. package/dist/completion-forbidden-fields.d.ts +5 -0
  143. package/dist/completion-forbidden-fields.js +26 -0
  144. package/dist/completion-init.d.ts +8 -0
  145. package/dist/completion-init.js +334 -0
  146. package/dist/completion-resolve.d.ts +21 -0
  147. package/dist/completion-resolve.js +86 -0
  148. package/dist/completion-validate-evidence.d.ts +24 -0
  149. package/dist/completion-validate-evidence.js +145 -0
  150. package/dist/dev/offline-gateway.d.ts +24 -0
  151. package/dist/dev/offline-gateway.js +102 -0
  152. package/dist/dev/trace-buffer.d.ts +61 -0
  153. package/dist/dev/trace-buffer.js +330 -0
  154. package/dist/dev/trace-security-headers.d.ts +11 -0
  155. package/dist/dev/trace-security-headers.js +16 -0
  156. package/dist/dev/trace-server.d.ts +8 -0
  157. package/dist/dev/trace-server.js +38 -0
  158. package/dist/dev/trace-ui.d.ts +4 -0
  159. package/dist/dev/trace-ui.js +25 -0
  160. package/dist/dev/wiremock-up.d.ts +15 -0
  161. package/dist/dev/wiremock-up.js +118 -0
  162. package/dist/doctor-completion.d.ts +17 -0
  163. package/dist/doctor-completion.js +428 -0
  164. package/dist/gateway-url.d.ts +7 -0
  165. package/dist/gateway-url.js +69 -0
  166. package/dist/index.d.ts +119 -2
  167. package/dist/index.js +267 -6
  168. package/dist/init.js +380 -68
  169. package/dist/langgraph/awrap-tool-call.d.ts +25 -0
  170. package/dist/langgraph/awrap-tool-call.js +81 -0
  171. package/dist/langgraph/config.d.ts +13 -0
  172. package/dist/langgraph/config.js +11 -0
  173. package/dist/langgraph/index.d.ts +4 -0
  174. package/dist/langgraph/index.js +4 -0
  175. package/dist/langgraph/sandbox-demo.d.ts +40 -0
  176. package/dist/langgraph/sandbox-demo.js +96 -0
  177. package/dist/langgraph/tool-node.d.ts +10 -0
  178. package/dist/langgraph/tool-node.js +38 -0
  179. package/dist/login.d.ts +14 -1
  180. package/dist/login.js +130 -63
  181. package/dist/mcp/index.d.ts +1 -0
  182. package/dist/mcp/index.js +1 -0
  183. package/dist/mcp/tool-surface.d.ts +25 -0
  184. package/dist/mcp/tool-surface.js +17 -0
  185. package/dist/mcp-capability-token-cache.d.ts +24 -0
  186. package/dist/mcp-capability-token-cache.js +101 -0
  187. package/dist/mcp-evidence-policy.d.ts +48 -0
  188. package/dist/mcp-evidence-policy.js +117 -0
  189. package/dist/mcp-policy-reload.d.ts +79 -0
  190. package/dist/mcp-policy-reload.js +200 -0
  191. package/dist/mcp-sep2828-evidence.d.ts +36 -0
  192. package/dist/mcp-sep2828-evidence.js +65 -0
  193. package/dist/mcp-server.d.ts +10 -0
  194. package/dist/mcp-server.js +423 -115
  195. package/dist/openai-agents/index.d.ts +40 -0
  196. package/dist/openai-agents/index.js +151 -0
  197. package/dist/openai-agents/sandbox-demo.d.ts +34 -0
  198. package/dist/openai-agents/sandbox-demo.js +118 -0
  199. package/dist/payee-evidence.js +2 -29
  200. package/dist/policy/catalog.d.ts +31 -0
  201. package/dist/policy/catalog.js +48 -0
  202. package/dist/policy/compose-utils.d.ts +3 -0
  203. package/dist/policy/compose-utils.js +4 -0
  204. package/dist/policy/compose.d.ts +20 -0
  205. package/dist/policy/compose.js +240 -0
  206. package/dist/policy/digest.d.ts +7 -0
  207. package/dist/policy/digest.js +75 -0
  208. package/dist/policy/domain.d.ts +15 -0
  209. package/dist/policy/domain.js +28 -0
  210. package/dist/policy/guardrail-spec.d.ts +17 -0
  211. package/dist/policy/guardrail-spec.js +140 -0
  212. package/dist/policy/guardrails.d.ts +48 -0
  213. package/dist/policy/guardrails.js +72 -0
  214. package/dist/policy/index.d.ts +21 -0
  215. package/dist/policy/index.js +21 -0
  216. package/dist/policy/init.d.ts +102 -0
  217. package/dist/policy/init.js +351 -0
  218. package/dist/policy/intent-spec.d.ts +52 -0
  219. package/dist/policy/intent-spec.js +176 -0
  220. package/dist/policy/json-path.d.ts +4 -0
  221. package/dist/policy/json-path.js +23 -0
  222. package/dist/policy/layers-io.d.ts +7 -0
  223. package/dist/policy/layers-io.js +28 -0
  224. package/dist/policy/load-effective.d.ts +22 -0
  225. package/dist/policy/load-effective.js +77 -0
  226. package/dist/policy/load.d.ts +85 -0
  227. package/dist/policy/load.js +164 -0
  228. package/dist/policy/merge.d.ts +29 -0
  229. package/dist/policy/merge.js +297 -0
  230. package/dist/policy/parse-text.d.ts +2 -0
  231. package/dist/policy/parse-text.js +126 -0
  232. package/dist/policy/policy-api.d.ts +45 -0
  233. package/dist/policy/policy-api.js +61 -0
  234. package/dist/policy/presets.d.ts +19 -0
  235. package/dist/policy/presets.js +66 -0
  236. package/dist/policy/registry.d.ts +7 -0
  237. package/dist/policy/registry.js +33 -0
  238. package/dist/policy/reload.d.ts +86 -0
  239. package/dist/policy/reload.js +233 -0
  240. package/dist/policy/render-yaml.d.ts +3 -0
  241. package/dist/policy/render-yaml.js +69 -0
  242. package/dist/policy/sandbox-bootstrap.d.ts +19 -0
  243. package/dist/policy/sandbox-bootstrap.js +66 -0
  244. package/dist/policy/schema.d.ts +204 -0
  245. package/dist/policy/schema.js +255 -0
  246. package/dist/policy/snapshot.d.ts +33 -0
  247. package/dist/policy/snapshot.js +23 -0
  248. package/dist/policy/validate-remote.d.ts +43 -0
  249. package/dist/policy/validate-remote.js +104 -0
  250. package/dist/policy/validate.d.ts +36 -0
  251. package/dist/policy/validate.js +150 -0
  252. package/dist/policy/watcher.d.ts +29 -0
  253. package/dist/policy/watcher.js +112 -0
  254. package/dist/principal-intent.d.ts +52 -0
  255. package/dist/principal-intent.js +193 -37
  256. package/dist/project-init.d.ts +34 -0
  257. package/dist/project-init.js +898 -0
  258. package/dist/sep2828-signature.d.ts +10 -0
  259. package/dist/sep2828-signature.js +134 -0
  260. package/dist/solutions/api.d.ts +22 -0
  261. package/dist/solutions/api.js +40 -0
  262. package/dist/solutions/catalog.d.ts +34 -0
  263. package/dist/solutions/catalog.js +129 -0
  264. package/dist/solutions/index.d.ts +2 -0
  265. package/dist/solutions/index.js +2 -0
  266. package/dist/template-init.d.ts +54 -0
  267. package/dist/template-init.js +203 -0
  268. package/dist/vercel-ai/config.d.ts +15 -0
  269. package/dist/vercel-ai/config.js +13 -0
  270. package/dist/vercel-ai/index.d.ts +4 -0
  271. package/dist/vercel-ai/index.js +4 -0
  272. package/dist/vercel-ai/sandbox-demo.d.ts +44 -0
  273. package/dist/vercel-ai/sandbox-demo.js +153 -0
  274. package/dist/vercel-ai/tool-approval.d.ts +16 -0
  275. package/dist/vercel-ai/tool-approval.js +41 -0
  276. package/dist/vercel-ai/wrap-tools.d.ts +9 -0
  277. package/dist/vercel-ai/wrap-tools.js +40 -0
  278. package/dist/x402-receipt-evidence.d.ts +29 -0
  279. package/dist/x402-receipt-evidence.js +97 -0
  280. package/dist/x402-receipt-signature.d.ts +12 -0
  281. package/dist/x402-receipt-signature.js +211 -0
  282. package/package.json +79 -4
  283. package/solutions/aws.json +17 -0
  284. package/solutions/saas.json +17 -0
  285. package/solutions/shopping.json +17 -0
  286. package/solutions/travel.json +18 -0
  287. package/templates/manifest.json +169 -0
  288. package/templates/openai-shopping-agent/.env.example +3 -0
  289. package/templates/openai-shopping-agent/.github/workflows/smoke.yml +20 -0
  290. package/templates/openai-shopping-agent/LICENSE +201 -0
  291. package/templates/openai-shopping-agent/README.md +29 -0
  292. package/templates/openai-shopping-agent/package.json +22 -0
  293. package/templates/openai-shopping-agent/paybond.policy.yaml +22 -0
  294. package/templates/openai-shopping-agent/src/index.ts +22 -0
  295. package/templates/openai-shopping-agent/src/paybond.config.ts +51 -0
  296. package/templates/openai-shopping-agent/tsconfig.json +13 -0
  297. package/templates/paybond-aws-operator/.env.example +3 -0
  298. package/templates/paybond-aws-operator/.github/workflows/smoke.yml +20 -0
  299. package/templates/paybond-aws-operator/LICENSE +201 -0
  300. package/templates/paybond-aws-operator/README.md +29 -0
  301. package/templates/paybond-aws-operator/package.json +20 -0
  302. package/templates/paybond-aws-operator/paybond.policy.yaml +22 -0
  303. package/templates/paybond-aws-operator/src/index.ts +54 -0
  304. package/templates/paybond-aws-operator/src/paybond.config.ts +51 -0
  305. package/templates/paybond-aws-operator/tsconfig.json +13 -0
  306. package/templates/paybond-claude-agents-demo/.env.example +3 -0
  307. package/templates/paybond-claude-agents-demo/.github/workflows/smoke.yml +20 -0
  308. package/templates/paybond-claude-agents-demo/LICENSE +201 -0
  309. package/templates/paybond-claude-agents-demo/README.md +29 -0
  310. package/templates/paybond-claude-agents-demo/package.json +22 -0
  311. package/templates/paybond-claude-agents-demo/paybond.policy.yaml +22 -0
  312. package/templates/paybond-claude-agents-demo/src/index.ts +22 -0
  313. package/templates/paybond-claude-agents-demo/src/paybond.config.ts +51 -0
  314. package/templates/paybond-claude-agents-demo/tsconfig.json +13 -0
  315. package/templates/paybond-invoice-agent/.env.example +3 -0
  316. package/templates/paybond-invoice-agent/.github/workflows/smoke.yml +19 -0
  317. package/templates/paybond-invoice-agent/LICENSE +201 -0
  318. package/templates/paybond-invoice-agent/README.md +29 -0
  319. package/templates/paybond-invoice-agent/app.py +27 -0
  320. package/templates/paybond-invoice-agent/package.json +6 -0
  321. package/templates/paybond-invoice-agent/paybond.policy.yaml +22 -0
  322. package/templates/paybond-invoice-agent/paybond_config.py +45 -0
  323. package/templates/paybond-invoice-agent/requirements.txt +2 -0
  324. package/templates/paybond-mcp-coding-agent/.env.example +3 -0
  325. package/templates/paybond-mcp-coding-agent/.github/workflows/smoke.yml +20 -0
  326. package/templates/paybond-mcp-coding-agent/LICENSE +201 -0
  327. package/templates/paybond-mcp-coding-agent/README.md +39 -0
  328. package/templates/paybond-mcp-coding-agent/package.json +20 -0
  329. package/templates/paybond-mcp-coding-agent/paybond.policy.yaml +25 -0
  330. package/templates/paybond-mcp-coding-agent/src/index.ts +40 -0
  331. package/templates/paybond-mcp-coding-agent/src/paybond.config.ts +51 -0
  332. package/templates/paybond-mcp-coding-agent/tsconfig.json +13 -0
  333. package/templates/paybond-openai-agents-demo/.env.example +3 -0
  334. package/templates/paybond-openai-agents-demo/.github/workflows/smoke.yml +20 -0
  335. package/templates/paybond-openai-agents-demo/LICENSE +201 -0
  336. package/templates/paybond-openai-agents-demo/README.md +29 -0
  337. package/templates/paybond-openai-agents-demo/package.json +22 -0
  338. package/templates/paybond-openai-agents-demo/paybond.policy.yaml +22 -0
  339. package/templates/paybond-openai-agents-demo/src/index.ts +22 -0
  340. package/templates/paybond-openai-agents-demo/src/paybond.config.ts +51 -0
  341. package/templates/paybond-openai-agents-demo/tsconfig.json +13 -0
  342. package/templates/paybond-procurement-agent/.env.example +3 -0
  343. package/templates/paybond-procurement-agent/.github/workflows/smoke.yml +20 -0
  344. package/templates/paybond-procurement-agent/LICENSE +201 -0
  345. package/templates/paybond-procurement-agent/README.md +29 -0
  346. package/templates/paybond-procurement-agent/package.json +20 -0
  347. package/templates/paybond-procurement-agent/paybond.policy.yaml +25 -0
  348. package/templates/paybond-procurement-agent/src/index.ts +54 -0
  349. package/templates/paybond-procurement-agent/src/paybond.config.ts +51 -0
  350. package/templates/paybond-procurement-agent/tsconfig.json +13 -0
  351. package/templates/paybond-travel-agent/.env.example +3 -0
  352. package/templates/paybond-travel-agent/.github/workflows/smoke.yml +20 -0
  353. package/templates/paybond-travel-agent/LICENSE +201 -0
  354. package/templates/paybond-travel-agent/README.md +29 -0
  355. package/templates/paybond-travel-agent/package.json +23 -0
  356. package/templates/paybond-travel-agent/paybond.policy.yaml +22 -0
  357. package/templates/paybond-travel-agent/src/index.ts +22 -0
  358. package/templates/paybond-travel-agent/src/paybond.config.ts +51 -0
  359. package/templates/paybond-travel-agent/tsconfig.json +13 -0
  360. package/templates/paybond-vercel-shopping-agent/.env.example +3 -0
  361. package/templates/paybond-vercel-shopping-agent/.github/workflows/smoke.yml +20 -0
  362. package/templates/paybond-vercel-shopping-agent/LICENSE +201 -0
  363. package/templates/paybond-vercel-shopping-agent/README.md +29 -0
  364. package/templates/paybond-vercel-shopping-agent/package.json +22 -0
  365. package/templates/paybond-vercel-shopping-agent/paybond.policy.yaml +22 -0
  366. package/templates/paybond-vercel-shopping-agent/src/index.ts +22 -0
  367. package/templates/paybond-vercel-shopping-agent/src/paybond.config.ts +51 -0
  368. package/templates/paybond-vercel-shopping-agent/tsconfig.json +13 -0
@@ -0,0 +1,40 @@
1
+ import { ToolGuardrailFunctionOutputFactory, type FunctionTool, type RunConfig, type ToolInputGuardrailDefinition } from "@openai/agents";
2
+ import { type PaybondAgentRun, type PaybondToolInputGuardDecision } from "../agent/index.js";
3
+ export type PaybondOpenAIAgentsAdapterOptions = {
4
+ /**
5
+ * When true, side-effecting registered tools also set `needsApproval: true`
6
+ * so the OpenAI Agents SDK pauses for human review after Paybond pre-check passes.
7
+ */
8
+ bridgeNeedsApproval?: boolean;
9
+ };
10
+ declare function isFunctionTool(value: unknown): value is FunctionTool;
11
+ /** Detect OpenAI Agents SDK function tools (`type: "function"`). */
12
+ export { isFunctionTool as isOpenAIFunctionTool };
13
+ /** Map a framework-neutral Paybond decision to OpenAI tool guardrail output. */
14
+ export declare function mapPaybondDecisionToOpenAIToolGuardrail(decision: PaybondToolInputGuardDecision): ReturnType<typeof ToolGuardrailFunctionOutputFactory.allow>;
15
+ /** RunConfig fragment enabling Paybond verify before OpenAI approval interruptions. */
16
+ export declare const paybondOpenAIAgentsRunConfig: Pick<RunConfig, "toolExecution">;
17
+ /** Translate Paybond middleware into OpenAI Agents SDK tool input guardrails. */
18
+ export declare function createOpenAIAgentsAdapter(run: PaybondAgentRun, options?: PaybondOpenAIAgentsAdapterOptions): {
19
+ name: "openai-agents";
20
+ evaluate: (input: import("../agent/types.js").PaybondAuthorizeToolCallInput) => Promise<PaybondToolInputGuardDecision>;
21
+ wrapExecutors: <T extends import("../agent/adapter.js").PaybondGenericToolDefinition>(tools: T[]) => import("../agent/adapter.js").PaybondGenericWrappedToolDefinition[];
22
+ runConfig: Pick<RunConfig, "toolExecution">;
23
+ inputGuardrailFor(toolName: string): ToolInputGuardrailDefinition;
24
+ guardFunctionTools<TContext>(tools: Array<FunctionTool<TContext>>): Array<FunctionTool<TContext>>;
25
+ };
26
+ /** Convenience alias for {@link createOpenAIAgentsAdapter}. */
27
+ export declare function paybondOpenAIAgentsAdapter(run: PaybondAgentRun, options?: PaybondOpenAIAgentsAdapterOptions): ReturnType<typeof createOpenAIAgentsAdapter>;
28
+ export { runOpenAIAgentsSandboxDemo, type RunOpenAIAgentsSandboxDemoInput, type RunOpenAIAgentsSandboxDemoResult, } from "./sandbox-demo.js";
29
+ /** OpenAI Agents SDK runner config: guarded tools plus `runConfig` for pre-approval guardrails. */
30
+ export type PaybondOpenAIAgentsConfig<TContext = unknown> = {
31
+ tools: Array<FunctionTool<TContext>>;
32
+ runConfig: Pick<RunConfig, "toolExecution">;
33
+ };
34
+ /**
35
+ * Framework runner helper for OpenAI Agents SDK `Runner.run`.
36
+ *
37
+ * Returns guarded function tools and the `runConfig` fragment that enables
38
+ * Paybond verify before approval interruptions.
39
+ */
40
+ export declare function createPaybondOpenAIAgentsConfig<TContext>(run: PaybondAgentRun, tools: Array<FunctionTool<TContext>>, options?: PaybondOpenAIAgentsAdapterOptions): PaybondOpenAIAgentsConfig<TContext>;
@@ -0,0 +1,151 @@
1
+ import { defineToolInputGuardrail, ToolGuardrailFunctionOutputFactory, } from "@openai/agents";
2
+ import { createToolInputGuardAdapter, } from "../agent/index.js";
3
+ function parseToolArguments(raw) {
4
+ if (!raw.trim()) {
5
+ return {};
6
+ }
7
+ return JSON.parse(raw);
8
+ }
9
+ function isFunctionTool(value) {
10
+ if (typeof value !== "object" || value === null) {
11
+ return false;
12
+ }
13
+ const record = value;
14
+ return record.type === "function" && typeof record.name === "string" && typeof record.invoke === "function";
15
+ }
16
+ /** Detect OpenAI Agents SDK function tools (`type: "function"`). */
17
+ export { isFunctionTool as isOpenAIFunctionTool };
18
+ /** Map a framework-neutral Paybond decision to OpenAI tool guardrail output. */
19
+ export function mapPaybondDecisionToOpenAIToolGuardrail(decision) {
20
+ if (decision.kind === "allow") {
21
+ return ToolGuardrailFunctionOutputFactory.allow({
22
+ paybond: {
23
+ operation: decision.operation,
24
+ auditId: decision.auditId,
25
+ decisionId: decision.decisionId,
26
+ passthrough: decision.passthrough ?? false,
27
+ },
28
+ });
29
+ }
30
+ return ToolGuardrailFunctionOutputFactory.rejectContent(decision.message, {
31
+ paybond: {
32
+ kind: decision.kind,
33
+ operation: decision.operation,
34
+ auditId: decision.auditId,
35
+ code: decision.code,
36
+ },
37
+ });
38
+ }
39
+ function buildPaybondInputGuardrail(run, toolName) {
40
+ const guard = createToolInputGuardAdapter(run);
41
+ return defineToolInputGuardrail({
42
+ name: `paybond_spend_${toolName}`,
43
+ run: async ({ toolCall }) => {
44
+ const args = parseToolArguments(toolCall.arguments);
45
+ const decision = await guard.evaluate({
46
+ toolName: toolCall.name,
47
+ toolCallId: toolCall.callId,
48
+ arguments: args,
49
+ });
50
+ return mapPaybondDecisionToOpenAIToolGuardrail(decision);
51
+ },
52
+ });
53
+ }
54
+ function resolveToolCallId(details) {
55
+ const callId = details?.toolCall?.callId?.trim();
56
+ if (callId) {
57
+ return callId;
58
+ }
59
+ return globalThis.crypto.randomUUID();
60
+ }
61
+ function guardFunctionTool(run, fnTool, options) {
62
+ if (!run.registry.isSideEffecting(fnTool.name)) {
63
+ return fnTool;
64
+ }
65
+ const paybondGuardrail = buildPaybondInputGuardrail(run, fnTool.name);
66
+ const originalInvoke = fnTool.invoke.bind(fnTool);
67
+ const bridgeApproval = options?.bridgeNeedsApproval === true;
68
+ return {
69
+ ...fnTool,
70
+ inputGuardrails: [...(fnTool.inputGuardrails ?? []), paybondGuardrail],
71
+ needsApproval: bridgeApproval
72
+ ? async (runContext, input, callId) => {
73
+ const baseNeedsApproval = typeof fnTool.needsApproval === "function"
74
+ ? await fnTool.needsApproval(runContext, input, callId)
75
+ : Boolean(fnTool.needsApproval);
76
+ return baseNeedsApproval || bridgeApproval;
77
+ }
78
+ : fnTool.needsApproval,
79
+ invoke: async (runContext, input, details) => {
80
+ const args = parseToolArguments(input);
81
+ const wrapped = await run.interceptor.wrapExecute({
82
+ toolName: fnTool.name,
83
+ toolCallId: resolveToolCallId(details),
84
+ arguments: args,
85
+ execute: async () => {
86
+ const raw = await originalInvoke(runContext, input, details);
87
+ if (typeof raw === "string") {
88
+ try {
89
+ return JSON.parse(raw);
90
+ }
91
+ catch {
92
+ return raw;
93
+ }
94
+ }
95
+ return raw;
96
+ },
97
+ });
98
+ const { toolResult } = wrapped;
99
+ if (typeof toolResult === "string") {
100
+ return toolResult;
101
+ }
102
+ if (toolResult === undefined || toolResult === null) {
103
+ return "";
104
+ }
105
+ if (typeof toolResult === "object") {
106
+ return JSON.stringify(toolResult);
107
+ }
108
+ return toolResult;
109
+ },
110
+ };
111
+ }
112
+ /** RunConfig fragment enabling Paybond verify before OpenAI approval interruptions. */
113
+ export const paybondOpenAIAgentsRunConfig = {
114
+ toolExecution: {
115
+ preApprovalInputGuardrails: true,
116
+ },
117
+ };
118
+ /** Translate Paybond middleware into OpenAI Agents SDK tool input guardrails. */
119
+ export function createOpenAIAgentsAdapter(run, options) {
120
+ const guard = createToolInputGuardAdapter(run);
121
+ return {
122
+ name: "openai-agents",
123
+ evaluate: guard.evaluate.bind(guard),
124
+ wrapExecutors: guard.wrapExecutors.bind(guard),
125
+ runConfig: paybondOpenAIAgentsRunConfig,
126
+ inputGuardrailFor(toolName) {
127
+ return buildPaybondInputGuardrail(run, toolName);
128
+ },
129
+ guardFunctionTools(tools) {
130
+ return tools.map((tool) => guardFunctionTool(run, tool, options));
131
+ },
132
+ };
133
+ }
134
+ /** Convenience alias for {@link createOpenAIAgentsAdapter}. */
135
+ export function paybondOpenAIAgentsAdapter(run, options) {
136
+ return createOpenAIAgentsAdapter(run, options);
137
+ }
138
+ export { runOpenAIAgentsSandboxDemo, } from "./sandbox-demo.js";
139
+ /**
140
+ * Framework runner helper for OpenAI Agents SDK `Runner.run`.
141
+ *
142
+ * Returns guarded function tools and the `runConfig` fragment that enables
143
+ * Paybond verify before approval interruptions.
144
+ */
145
+ export function createPaybondOpenAIAgentsConfig(run, tools, options) {
146
+ const adapter = createOpenAIAgentsAdapter(run, options);
147
+ return {
148
+ tools: adapter.guardFunctionTools(tools),
149
+ runConfig: adapter.runConfig,
150
+ };
151
+ }
@@ -0,0 +1,34 @@
1
+ import type { Paybond } from "../index.js";
2
+ export type RunOpenAIAgentsSandboxDemoInput = {
3
+ paybond: Paybond;
4
+ operation?: string;
5
+ requestedSpendCents?: number;
6
+ evidencePreset?: string;
7
+ toolCallId?: string;
8
+ };
9
+ export type RunOpenAIAgentsSandboxDemoResult = {
10
+ bind: {
11
+ run_id: string;
12
+ tenant_id: string;
13
+ intent_id: string;
14
+ capability_token: string;
15
+ operation: string;
16
+ sandbox_lifecycle_status?: string;
17
+ };
18
+ guardrail: {
19
+ behavior: string;
20
+ };
21
+ execute: {
22
+ tool_result?: unknown;
23
+ evidence?: {
24
+ submitted: boolean;
25
+ sandbox_lifecycle_status?: string;
26
+ predicate_passed?: boolean | null;
27
+ };
28
+ };
29
+ };
30
+ /**
31
+ * No-LLM OpenAI Agents SDK sandbox demo: input guardrail pre-check + guarded
32
+ * `invoke` + auto-evidence.
33
+ */
34
+ export declare function runOpenAIAgentsSandboxDemo(input: RunOpenAIAgentsSandboxDemoInput): Promise<RunOpenAIAgentsSandboxDemoResult>;
@@ -0,0 +1,118 @@
1
+ import { createPaybondToolRegistry } from "../agent/registry.js";
2
+ import { createPaybondOpenAIAgentsConfig } from "./index.js";
3
+ function makePaidFunctionTool(name) {
4
+ return {
5
+ type: "function",
6
+ name,
7
+ description: `Paid operation ${name}`,
8
+ parameters: {
9
+ type: "object",
10
+ properties: {
11
+ estimatedPriceCents: { type: "integer", minimum: 0 },
12
+ },
13
+ required: ["estimatedPriceCents"],
14
+ additionalProperties: false,
15
+ },
16
+ strict: false,
17
+ invoke: async (_runContext, input) => {
18
+ const args = JSON.parse(input);
19
+ return JSON.stringify({
20
+ status: "completed",
21
+ cost_cents: args.estimatedPriceCents,
22
+ });
23
+ },
24
+ needsApproval: async () => false,
25
+ isEnabled: async () => true,
26
+ };
27
+ }
28
+ /**
29
+ * No-LLM OpenAI Agents SDK sandbox demo: input guardrail pre-check + guarded
30
+ * `invoke` + auto-evidence.
31
+ */
32
+ export async function runOpenAIAgentsSandboxDemo(input) {
33
+ const operation = (input.operation ?? "paid-tool").trim();
34
+ const requestedSpendCents = input.requestedSpendCents ?? 100;
35
+ const evidencePreset = (input.evidencePreset ?? "cost_and_completion").trim();
36
+ const toolCallId = (input.toolCallId ?? "openai-demo-1").trim();
37
+ const registry = createPaybondToolRegistry({
38
+ defaultDeny: true,
39
+ sideEffecting: {
40
+ [operation]: {
41
+ operation,
42
+ evidencePreset,
43
+ spendCents: (args) => typeof args === "object" &&
44
+ args !== null &&
45
+ "estimatedPriceCents" in args &&
46
+ typeof args.estimatedPriceCents === "number"
47
+ ? args.estimatedPriceCents
48
+ : requestedSpendCents,
49
+ evidenceMapper: (result) => {
50
+ const payload = result;
51
+ return {
52
+ status: payload.status,
53
+ cost_cents: payload.cost_cents,
54
+ };
55
+ },
56
+ },
57
+ },
58
+ });
59
+ const run = await input.paybond.agentRun.bind({
60
+ bootstrap: {
61
+ kind: "sandbox",
62
+ operation,
63
+ requestedSpendCents,
64
+ completionPreset: evidencePreset,
65
+ },
66
+ registry,
67
+ });
68
+ const paidTool = makePaidFunctionTool(operation);
69
+ const config = createPaybondOpenAIAgentsConfig(run, [paidTool]);
70
+ const guarded = config.tools[0];
71
+ if (!guarded) {
72
+ throw new Error("openai-agents sandbox demo missing guarded tool");
73
+ }
74
+ const toolCall = {
75
+ type: "function_call",
76
+ name: operation,
77
+ callId: toolCallId,
78
+ arguments: JSON.stringify({ estimatedPriceCents: requestedSpendCents }),
79
+ };
80
+ const guardrail = guarded.inputGuardrails?.[0];
81
+ const guardrailResult = guardrail
82
+ ? await guardrail.run({
83
+ agent: {},
84
+ context: {},
85
+ toolCall,
86
+ })
87
+ : undefined;
88
+ const output = (await guarded.invoke({}, JSON.stringify({ estimatedPriceCents: requestedSpendCents }), { toolCall }));
89
+ let toolResult;
90
+ try {
91
+ toolResult = JSON.parse(output);
92
+ }
93
+ catch {
94
+ toolResult = output;
95
+ }
96
+ const sandboxStatus = run.binding.sandbox?.sandboxLifecycleStatus;
97
+ return {
98
+ bind: {
99
+ run_id: run.runId,
100
+ tenant_id: run.tenantId,
101
+ intent_id: run.intentId,
102
+ capability_token: run.capabilityToken,
103
+ operation,
104
+ sandbox_lifecycle_status: sandboxStatus,
105
+ },
106
+ guardrail: {
107
+ behavior: guardrailResult?.behavior.type ?? "not-applicable",
108
+ },
109
+ execute: {
110
+ tool_result: toolResult,
111
+ evidence: {
112
+ submitted: true,
113
+ sandbox_lifecycle_status: sandboxStatus,
114
+ predicate_passed: true,
115
+ },
116
+ },
117
+ };
118
+ }
@@ -3,28 +3,9 @@
3
3
  */
4
4
  import { sign, getPublicKey } from "@noble/ed25519";
5
5
  import { createHash } from "blake3";
6
- import { parse as parseUuid } from "uuid";
7
6
  import { ensureEd25519Sha512Sync } from "./ed25519-sync.js";
8
7
  import { jsonValueDigest } from "./json-digest.js";
9
- function concatBytes(...parts) {
10
- const n = parts.reduce((a, p) => a + p.length, 0);
11
- const out = new Uint8Array(n);
12
- let o = 0;
13
- for (const p of parts) {
14
- out.set(p, o);
15
- o += p.length;
16
- }
17
- return out;
18
- }
19
- function encodeU64(n) {
20
- const b = new Uint8Array(8);
21
- new DataView(b.buffer).setBigUint64(0, BigInt(n), true);
22
- return b;
23
- }
24
- function encodeBincodeString(s) {
25
- const utf8 = new TextEncoder().encode(s);
26
- return concatBytes(encodeU64(utf8.length), utf8);
27
- }
8
+ import { concatBytes, encodeBincodeString, encodeBincodeUuid, encodeFixed32, encodeU8, EVIDENCE_SIGN_VERSION, } from "./bincode-wire.js";
28
9
  /** BLAKE3 digest of concatenated artifact hashes (empty list matches Harbor / `paybond-evidence`). */
29
10
  export function artifactsDigest(artifactHashes32) {
30
11
  const h = createHash();
@@ -35,15 +16,7 @@ export function artifactsDigest(artifactHashes32) {
35
16
  return new Uint8Array(buf);
36
17
  }
37
18
  function encodeEvidenceSignV1(input) {
38
- const version = new Uint8Array([1]);
39
- const intentBytes = parseUuid(input.intentId);
40
- if (intentBytes.length !== 16) {
41
- throw new Error("intentId must be a UUID string");
42
- }
43
- if (input.payloadDigest.length !== 32 || input.artifactsDigest.length !== 32) {
44
- throw new Error("digest must be 32 bytes");
45
- }
46
- return concatBytes(version, encodeBincodeString(input.tenantId), encodeU64(16), intentBytes, encodeBincodeString(input.payeeDid), input.payloadDigest, input.artifactsDigest, encodeBincodeString(input.submittedAtRfc3339));
19
+ return concatBytes(encodeU8(EVIDENCE_SIGN_VERSION), encodeBincodeString(input.tenantId), encodeBincodeUuid(input.intentId), encodeBincodeString(input.payeeDid), encodeFixed32(input.payloadDigest), encodeFixed32(input.artifactsDigest), encodeBincodeString(input.submittedAtRfc3339));
47
20
  }
48
21
  function bytesToBase64(bytes) {
49
22
  let binary = "";
@@ -0,0 +1,31 @@
1
+ import { listGuardrailCatalogEntries } from "./guardrail-spec.js";
2
+ export type PolicyDomainCatalogEntry = {
3
+ id: string;
4
+ title: string;
5
+ layered: boolean;
6
+ };
7
+ export type PolicyPresetCatalogEntry = {
8
+ id: string;
9
+ kind: "composed" | "flat";
10
+ layered: boolean;
11
+ };
12
+ export type PolicySolutionCatalogEntry = {
13
+ id: string;
14
+ title: string;
15
+ domain: string;
16
+ guardrails: string[];
17
+ primary_operation: string;
18
+ };
19
+ /** List bundled domain layers for CLI and docs. */
20
+ export declare function listPolicyDomainCatalog(): PolicyDomainCatalogEntry[];
21
+ /** List flat and composed policy presets. */
22
+ export declare function listPolicyPresetCatalog(): PolicyPresetCatalogEntry[];
23
+ /** List bundled solution manifests. */
24
+ export declare function listPolicySolutionCatalog(): PolicySolutionCatalogEntry[];
25
+ /** Combined catalog payload for `paybond policy presets list`. */
26
+ export declare function listPolicyPresetsCatalog(): {
27
+ domains: PolicyDomainCatalogEntry[];
28
+ guardrails: ReturnType<typeof listGuardrailCatalogEntries>;
29
+ solutions: PolicySolutionCatalogEntry[];
30
+ presets: PolicyPresetCatalogEntry[];
31
+ };
@@ -0,0 +1,48 @@
1
+ import { LAYERED_POLICY_PRESET_IDS } from "./compose.js";
2
+ import { listGuardrailCatalogEntries } from "./guardrail-spec.js";
3
+ import { isLayeredPolicyPresetId, listPolicyPresetIds } from "./presets.js";
4
+ import { listSolutionIds, loadSolutionManifest } from "../solutions/catalog.js";
5
+ const DOMAIN_TITLES = {
6
+ travel: "Travel booking",
7
+ shopping: "Shopping checkout",
8
+ saas: "SaaS provisioning",
9
+ aws: "AWS operator",
10
+ };
11
+ /** List bundled domain layers for CLI and docs. */
12
+ export function listPolicyDomainCatalog() {
13
+ return LAYERED_POLICY_PRESET_IDS.map((id) => ({
14
+ id,
15
+ title: DOMAIN_TITLES[id] ?? id,
16
+ layered: true,
17
+ }));
18
+ }
19
+ /** List flat and composed policy presets. */
20
+ export function listPolicyPresetCatalog() {
21
+ return listPolicyPresetIds().map((id) => ({
22
+ id,
23
+ kind: isLayeredPolicyPresetId(id) ? "composed" : "flat",
24
+ layered: isLayeredPolicyPresetId(id),
25
+ }));
26
+ }
27
+ /** List bundled solution manifests. */
28
+ export function listPolicySolutionCatalog() {
29
+ return listSolutionIds().map((id) => {
30
+ const manifest = loadSolutionManifest(id);
31
+ return {
32
+ id: manifest.id,
33
+ title: manifest.title,
34
+ domain: manifest.policy_default.domain,
35
+ guardrails: [...manifest.policy_default.guardrails],
36
+ primary_operation: manifest.primary_operation,
37
+ };
38
+ });
39
+ }
40
+ /** Combined catalog payload for `paybond policy presets list`. */
41
+ export function listPolicyPresetsCatalog() {
42
+ return {
43
+ domains: listPolicyDomainCatalog(),
44
+ guardrails: listGuardrailCatalogEntries(),
45
+ solutions: listPolicySolutionCatalog(),
46
+ presets: listPolicyPresetCatalog(),
47
+ };
48
+ }
@@ -0,0 +1,3 @@
1
+ import type { PaybondPolicyToolEntry } from "./schema.js";
2
+ /** Clone a tool registry entry for compose merges. */
3
+ export declare function cloneToolEntry(entry: PaybondPolicyToolEntry): PaybondPolicyToolEntry;
@@ -0,0 +1,4 @@
1
+ /** Clone a tool registry entry for compose merges. */
2
+ export function cloneToolEntry(entry) {
3
+ return { ...entry };
4
+ }
@@ -0,0 +1,20 @@
1
+ import { type PolicyGuardrailLayer } from "./guardrails.js";
2
+ import { type PolicyPresetId } from "./presets.js";
3
+ import { type PaybondPolicyDocumentV1 } from "./schema.js";
4
+ export declare const LAYERED_POLICY_PRESET_IDS: readonly ["travel", "shopping", "saas", "aws"];
5
+ export type LayeredPolicyPresetId = (typeof LAYERED_POLICY_PRESET_IDS)[number];
6
+ /** Stack a domain document with one or more guardrail layers (same-tenant compose, not org inheritance). */
7
+ export declare function composePolicyLayers(domainDocument: PaybondPolicyDocumentV1, ...layers: PolicyGuardrailLayer[]): PaybondPolicyDocumentV1;
8
+ /** True when a bundled preset is composed from domain + guardrails layers. */
9
+ export declare function isLayeredPolicyPreset(presetId: string): presetId is LayeredPolicyPresetId;
10
+ /** Merge domain and guardrail YAML objects (bundled preset file generation). */
11
+ export declare function composePolicyPresetLayers(domain: Record<string, unknown>, guardrails: Record<string, unknown>): Record<string, unknown>;
12
+ /** Default bundled guardrail layers for a vertical preset id. */
13
+ export declare function bundledDefaultGuardrails(presetId: LayeredPolicyPresetId): PolicyGuardrailLayer[];
14
+ /** Compose the shipped default for a vertical preset (domain + bundled guardrails). */
15
+ export declare function composeBundledPresetDefault(presetId: LayeredPolicyPresetId): PaybondPolicyDocumentV1;
16
+ /** Load and compose a layered vertical preset (domain + guardrails YAML files). */
17
+ export declare function composeLayeredPolicyPresetDocument(presetId: LayeredPolicyPresetId): Record<string, unknown>;
18
+ /** Compare composed layered presets with bundled flat preset files (tests). */
19
+ export declare function assertLayeredPresetMatchesFlat(presetId: PolicyPresetId): void;
20
+ export { readPresetLayerYaml } from "./layers-io.js";