@paybond/kit 0.12.0 → 0.12.1

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 (107) hide show
  1. package/dist/agent/evidence.d.ts +10 -0
  2. package/dist/agent/evidence.js +16 -0
  3. package/dist/agent/index.d.ts +1 -1
  4. package/dist/agent/index.js +1 -1
  5. package/dist/agent/interceptor.js +4 -0
  6. package/dist/agent/receipt-client.d.ts +16 -1
  7. package/dist/agent/run.d.ts +3 -0
  8. package/dist/agent/run.js +1 -1
  9. package/dist/agent-mandate.d.ts +103 -0
  10. package/dist/agent-mandate.js +423 -0
  11. package/dist/agent-receipt-external-attestations.d.ts +27 -0
  12. package/dist/agent-receipt-external-attestations.js +61 -0
  13. package/dist/agent-receipt-pdf-export.d.ts +43 -0
  14. package/dist/agent-receipt-pdf-export.js +109 -0
  15. package/dist/agent-receipt-prevalidate.d.ts +7 -0
  16. package/dist/agent-receipt-prevalidate.js +63 -0
  17. package/dist/agent-receipt.d.ts +21 -1
  18. package/dist/agent-receipt.js +63 -4
  19. package/dist/cli/command-spec.js +50 -1
  20. package/dist/cli/commands/dev.js +10 -3
  21. package/dist/cli/commands/setup.js +19 -1
  22. package/dist/cli/commands/shopify.d.ts +53 -0
  23. package/dist/cli/commands/shopify.js +808 -0
  24. package/dist/cli/help.d.ts +1 -1
  25. package/dist/cli/help.js +13 -3
  26. package/dist/cli/router.js +15 -1
  27. package/dist/commerce-binding.d.ts +59 -0
  28. package/dist/commerce-binding.js +129 -0
  29. package/dist/doctor-completion.d.ts +16 -0
  30. package/dist/doctor-completion.js +157 -1
  31. package/dist/index.d.ts +27 -2
  32. package/dist/index.js +43 -7
  33. package/dist/mcp-server.d.ts +1 -0
  34. package/dist/mcp-server.js +28 -9
  35. package/dist/policy/presets.d.ts +1 -1
  36. package/dist/policy/presets.js +1 -0
  37. package/dist/project-init.d.ts +1 -1
  38. package/dist/project-init.js +1 -0
  39. package/dist/protocol-receipt.d.ts +129 -0
  40. package/dist/protocol-receipt.js +620 -0
  41. package/dist/shopify/checkout.d.ts +29 -0
  42. package/dist/shopify/checkout.js +79 -0
  43. package/dist/shopify/evidence.d.ts +13 -0
  44. package/dist/shopify/evidence.js +85 -0
  45. package/dist/shopify/index.d.ts +8 -0
  46. package/dist/shopify/index.js +6 -0
  47. package/dist/shopify/instrument.d.ts +61 -0
  48. package/dist/shopify/instrument.js +52 -0
  49. package/dist/shopify/order.d.ts +8 -0
  50. package/dist/shopify/order.js +110 -0
  51. package/dist/shopify/types.d.ts +82 -0
  52. package/dist/shopify/types.js +4 -0
  53. package/dist/solutions/catalog.d.ts +1 -1
  54. package/dist/solutions/catalog.js +1 -1
  55. package/dist/stripe-commerce/evidence.d.ts +13 -0
  56. package/dist/stripe-commerce/evidence.js +164 -0
  57. package/dist/stripe-commerce/index.d.ts +3 -0
  58. package/dist/stripe-commerce/index.js +2 -0
  59. package/dist/stripe-commerce/metadata.d.ts +11 -0
  60. package/dist/stripe-commerce/metadata.js +34 -0
  61. package/dist/stripe-commerce/types.d.ts +38 -0
  62. package/dist/stripe-commerce/types.js +1 -0
  63. package/dist/template-init.d.ts +1 -1
  64. package/dist/template-init.js +6 -1
  65. package/package.json +1 -1
  66. package/policy/presets/stripe-commerce.yaml +19 -0
  67. package/solutions/stripe-commerce.json +19 -0
  68. package/templates/manifest.json +82 -10
  69. package/templates/openai-shopping-agent/package-lock.json +10 -10
  70. package/templates/openai-shopping-agent/src/paybond.config.ts +1 -1
  71. package/templates/paybond-aws-operator/package-lock.json +7 -7
  72. package/templates/paybond-aws-operator/src/paybond.config.ts +1 -1
  73. package/templates/paybond-claude-agents-demo/package-lock.json +7 -7
  74. package/templates/paybond-claude-agents-demo/src/paybond.config.ts +1 -1
  75. package/templates/paybond-mastra-travel-agent/package-lock.json +30 -30
  76. package/templates/paybond-mastra-travel-agent/src/paybond.config.ts +1 -1
  77. package/templates/paybond-mcp-coding-agent/package-lock.json +7 -7
  78. package/templates/paybond-mcp-coding-agent/src/paybond.config.ts +1 -1
  79. package/templates/paybond-openai-agents-demo/package-lock.json +10 -10
  80. package/templates/paybond-openai-agents-demo/src/paybond.config.ts +1 -1
  81. package/templates/paybond-procurement-agent/package-lock.json +7 -7
  82. package/templates/paybond-procurement-agent/src/paybond.config.ts +1 -1
  83. package/templates/paybond-shopify-shopping-agent/.env.example +3 -0
  84. package/templates/paybond-shopify-shopping-agent/.github/workflows/smoke.yml +20 -0
  85. package/templates/paybond-shopify-shopping-agent/LICENSE +201 -0
  86. package/templates/paybond-shopify-shopping-agent/README.md +29 -0
  87. package/templates/paybond-shopify-shopping-agent/package-lock.json +223 -0
  88. package/templates/paybond-shopify-shopping-agent/package.json +20 -0
  89. package/templates/paybond-shopify-shopping-agent/paybond.policy.yaml +22 -0
  90. package/templates/paybond-shopify-shopping-agent/src/index.ts +54 -0
  91. package/templates/paybond-shopify-shopping-agent/src/paybond.config.ts +51 -0
  92. package/templates/paybond-shopify-shopping-agent/tsconfig.json +13 -0
  93. package/templates/paybond-stripe-agent-demo/.env.example +9 -0
  94. package/templates/paybond-stripe-agent-demo/.github/workflows/smoke.yml +20 -0
  95. package/templates/paybond-stripe-agent-demo/LICENSE +201 -0
  96. package/templates/paybond-stripe-agent-demo/README.md +50 -0
  97. package/templates/paybond-stripe-agent-demo/package-lock.json +223 -0
  98. package/templates/paybond-stripe-agent-demo/package.json +20 -0
  99. package/templates/paybond-stripe-agent-demo/paybond.policy.yaml +22 -0
  100. package/templates/paybond-stripe-agent-demo/src/charge-customer.ts +237 -0
  101. package/templates/paybond-stripe-agent-demo/src/index.ts +78 -0
  102. package/templates/paybond-stripe-agent-demo/src/paybond.config.ts +51 -0
  103. package/templates/paybond-stripe-agent-demo/tsconfig.json +13 -0
  104. package/templates/paybond-travel-agent/package-lock.json +13 -13
  105. package/templates/paybond-travel-agent/src/paybond.config.ts +1 -1
  106. package/templates/paybond-vercel-shopping-agent/package-lock.json +7 -7
  107. package/templates/paybond-vercel-shopping-agent/src/paybond.config.ts +1 -1
@@ -1,3 +1,3 @@
1
- export declare const ROOT_HELP = "Usage: paybond [--global-flags] <command> [<subcommand> ...] [args]\n\nGlobal flags:\n --gateway <url> Gateway base URL (default: https://api.paybond.ai)\n --env-file <path> Local secrets file (default: .env.local)\n --format table|json Human table or JSON envelope output (default: table)\n --json <fields> Field-selectable JSON for list/read commands (plain JSON; use --format json for envelope)\n --jq <expr> jq-style filter for list/read command output\n --profile <name> Named credential profile from the Paybond CLI config file\n --request-id <id> Correlation ID for Gateway calls and JSON output\n --yes Skip confirmation for destructive operations\n --no-open Do not open a browser for device login\n --color auto|always|never Colorize human table output and help text (default: auto)\n --no-color Disable color output (also honors NO_COLOR)\n\nCommands:\n onboarding Guided, non-destructive first-run checks\n help Detailed help for a command\n examples Copy-paste examples from the command spec\n completion bash|zsh|fish Shell completion scripts\n login Sandbox device login\n init Interactive first-run scaffold (solution, spend cap, framework, owned policy files)\n init guardrail|completion|agent-middleware\n Scaffold sandbox guardrail, completion evidence, or agent middleware integration files\n mcp serve|install|verify-config|tools MCP server and host configuration\n doctor Validate local runtime, credentials, and optional agent setup\n dev smoke|trace|loop|up\n Local sandbox developer loop: travel smoke, trace dashboard, WireMock up, and guided setup\n version Print package version (use --verbose for runtime details)\n diagnose Emit a redacted support bundle with --redacted\n config get|set|unset|list\n Manage CLI configuration values\n whoami Resolve the authenticated principal and tenant realm\n keys list|create|rotate|revoke\n Manage tenant service-account API keys\n intents list|get|create|fund|evidence|settlement-confirm\n Harbor intent workflows\n guardrails bootstrap|evidence\n Sandbox guardrail helpers\n spend authorize Authorize delegated spend for a tool call\n signal reputation|portfolio|fraud\n Signal summaries and fraud reads\n receipts get|verify\n Protocol settlement and agent action receipts (--kind agent)\n mandates verify|import\n Agent mandate verification and import\n a2a card|contracts\n Agent card discovery and task contracts\n policy init|init-org|extend|presets list|presets show|validate-tools|templates|preview|import-mcp-receipt|import-x402-receipt|validate-evidence\n Scaffold and validate paybond.policy.yaml (including enterprise org inheritance), browse policy presets and solutions, list completion presets, preview Harbor templates, and import receipts\n agent run bind|status|trace|reload-policy|tool execute|validate|registry validate|sandbox smoke\n Agent middleware: bind runs, reload policy, execute tools, validate registry, sandbox smoke\n audit exports list|get|verify|delete\n Compliance audit export jobs and local bundle verification\n\nGetting started:\n Sandbox setup\n Authenticate, validate the runtime, and confirm tenant context.\n $ paybond login\n $ paybond doctor --format json\n Next: paybond whoami\n Agent + MCP host\n Preview MCP host config and list tools exposed to agents.\n $ paybond mcp install --host claude --scope local\n $ paybond mcp verify-config --host claude\n $ paybond mcp tools\n Next: paybond doctor --agent\n Paid-tool guardrail\n Scaffold a sandbox guardrail integration file for your agent runtime.\n $ paybond init guardrail\n $ paybond guardrails bootstrap --operation paid-tool --requested-spend-cents 100\n Next: paybond spend authorize --help\n Policy-driven agent sandbox\n Validate and smoke-test agent middleware from a versioned paybond.policy.yaml file.\n $ paybond policy init --out paybond.policy.yaml\n $ paybond policy validate-tools --file paybond.policy.yaml\n $ paybond agent sandbox smoke --policy-file paybond.policy.yaml --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json\n Next: paybond policy validate-tools --help\n Agent middleware sandbox\n Bind a sandbox run and execute a guarded tool with auto-evidence.\n $ paybond agent sandbox smoke --operation paid-tool --requested-spend-cents 100 --evidence-preset cost_and_completion --result-body '{\"status\":\"ok\",\"cost_cents\":100}' --format json\n Next: paybond agent run bind --help\n Completion preset\n Scaffold catalog-aligned completion evidence for Harbor release predicates.\n $ paybond init completion --preset api_response_ok\n $ paybond policy templates\n $ paybond policy preview --preset api_response_ok --evidence-file evidence.json\n Next: paybond policy preview --help\n\nDocumentation: https://docs.paybond.ai/kit\n\nLearn more:\n paybond help <command> Detailed help for a command\n paybond examples Copy-paste command examples\n paybond onboarding Guided first-run checks\n paybond completion <shell> Shell completions (bash|zsh|fish)\n\nLegacy aliases: paybond-kit-login, paybond-init, paybond-kit-init, paybond-mcp-server\n";
1
+ export declare const ROOT_HELP = "Usage: paybond [--global-flags] <command> [<subcommand> ...] [args]\n\nGlobal flags:\n --gateway <url> Gateway base URL (default: https://api.paybond.ai)\n --env-file <path> Local secrets file (default: .env.local)\n --format table|json Human table or JSON envelope output (default: table)\n --json <fields> Field-selectable JSON for list/read commands (plain JSON; use --format json for envelope)\n --jq <expr> jq-style filter for list/read command output\n --profile <name> Named credential profile from the Paybond CLI config file\n --request-id <id> Correlation ID for Gateway calls and JSON output\n --yes Skip confirmation for destructive operations\n --no-open Do not open a browser for device login\n --color auto|always|never Colorize human table output and help text (default: auto)\n --no-color Disable color output (also honors NO_COLOR)\n\nCommands:\n onboarding Guided, non-destructive first-run checks\n help Detailed help for a command\n examples Copy-paste examples from the command spec\n completion bash|zsh|fish Shell completion scripts\n login Sandbox device login\n init Interactive first-run scaffold (solution, spend cap, framework, owned policy files)\n init guardrail|completion|agent-middleware\n Scaffold sandbox guardrail, completion evidence, or agent middleware integration files\n mcp serve|install|verify-config|tools MCP server and host configuration\n doctor Validate local runtime, credentials, and optional agent or Shopify setup\n dev smoke|trace|loop|up\n Local sandbox developer loop: travel/shopping smoke, trace dashboard, WireMock up, and guided setup\n shopify doctor|link|dev|webhook trigger|checkout smoke|order show|capture ready|payments doctor|payments smoke|payments session show\n Shopify agentic commerce orchestration: readiness, dev loop, webhook trigger, checkout smoke, and Payments app rail smoke\n version Print package version (use --verbose for runtime details)\n diagnose Emit a redacted support bundle with --redacted\n config get|set|unset|list\n Manage CLI configuration values\n whoami Resolve the authenticated principal and tenant realm\n keys list|create|rotate|revoke\n Manage tenant service-account API keys\n intents list|get|create|fund|evidence|settlement-confirm\n Harbor intent workflows\n guardrails bootstrap|evidence\n Sandbox guardrail helpers\n spend authorize Authorize delegated spend for a tool call\n signal reputation|portfolio|fraud\n Signal summaries and fraud reads\n receipts get|verify\n Protocol settlement and agent action receipts (--kind agent)\n mandates verify|import\n Agent mandate verification and import\n a2a card|contracts\n Agent card discovery and task contracts\n policy init|init-org|extend|presets list|presets show|validate-tools|templates|preview|import-mcp-receipt|import-x402-receipt|validate-evidence\n Scaffold and validate paybond.policy.yaml (including enterprise org inheritance), browse policy presets and solutions, list completion presets, preview Harbor templates, and import receipts\n agent run bind|status|trace|reload-policy|tool execute|validate|registry validate|sandbox smoke\n Agent middleware: bind runs, reload policy, execute tools, validate registry, sandbox smoke\n audit exports list|get|verify|delete\n Compliance audit export jobs and local bundle verification\n\nGetting started:\n Sandbox setup\n Authenticate, validate the runtime, and confirm tenant context.\n $ paybond login\n $ paybond doctor --format json\n Next: paybond whoami\n Agent + MCP host\n Preview MCP host config and list tools exposed to agents.\n $ paybond mcp install --host claude --scope local\n $ paybond mcp verify-config --host claude\n $ paybond mcp tools\n Next: paybond doctor --agent\n Paid-tool guardrail\n Scaffold a sandbox guardrail integration file for your agent runtime.\n $ paybond init guardrail\n $ paybond guardrails bootstrap --operation paid-tool --requested-spend-cents 100\n Next: paybond spend authorize --help\n Policy-driven agent sandbox\n Validate and smoke-test agent middleware from a versioned paybond.policy.yaml file.\n $ paybond policy init --out paybond.policy.yaml\n $ paybond policy validate-tools --file paybond.policy.yaml\n $ paybond agent sandbox smoke --policy-file paybond.policy.yaml --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json\n Next: paybond policy validate-tools --help\n Agent middleware sandbox\n Bind a sandbox run and execute a guarded tool with auto-evidence.\n $ paybond agent sandbox smoke --operation paid-tool --requested-spend-cents 100 --evidence-preset cost_and_completion --result-body '{\"status\":\"ok\",\"cost_cents\":100}' --format json\n Next: paybond agent run bind --help\n Completion preset\n Scaffold catalog-aligned completion evidence for Harbor release predicates.\n $ paybond init completion --preset api_response_ok\n $ paybond policy templates\n $ paybond policy preview --preset api_response_ok --evidence-file evidence.json\n Next: paybond policy preview --help\n\nDocumentation: https://docs.paybond.ai/kit\n\nLearn more:\n paybond help <command> Detailed help for a command\n paybond examples Copy-paste command examples\n paybond onboarding Guided first-run checks\n paybond completion <shell> Shell completions (bash|zsh|fish)\n\nLegacy aliases: paybond-kit-login, paybond-init, paybond-kit-init, paybond-mcp-server\n";
2
2
  export declare const COMMAND_HELP: Record<string, string>;
3
3
  export declare function helpForCommand(path: string): string;
package/dist/cli/help.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Generated by kit/cli-parity/generate.mjs — do not edit by hand.
2
- export const ROOT_HELP = "Usage: paybond [--global-flags] <command> [<subcommand> ...] [args]\n\nGlobal flags:\n --gateway <url> Gateway base URL (default: https://api.paybond.ai)\n --env-file <path> Local secrets file (default: .env.local)\n --format table|json Human table or JSON envelope output (default: table)\n --json <fields> Field-selectable JSON for list/read commands (plain JSON; use --format json for envelope)\n --jq <expr> jq-style filter for list/read command output\n --profile <name> Named credential profile from the Paybond CLI config file\n --request-id <id> Correlation ID for Gateway calls and JSON output\n --yes Skip confirmation for destructive operations\n --no-open Do not open a browser for device login\n --color auto|always|never Colorize human table output and help text (default: auto)\n --no-color Disable color output (also honors NO_COLOR)\n\nCommands:\n onboarding Guided, non-destructive first-run checks\n help Detailed help for a command\n examples Copy-paste examples from the command spec\n completion bash|zsh|fish Shell completion scripts\n login Sandbox device login\n init Interactive first-run scaffold (solution, spend cap, framework, owned policy files)\n init guardrail|completion|agent-middleware\n Scaffold sandbox guardrail, completion evidence, or agent middleware integration files\n mcp serve|install|verify-config|tools MCP server and host configuration\n doctor Validate local runtime, credentials, and optional agent setup\n dev smoke|trace|loop|up\n Local sandbox developer loop: travel smoke, trace dashboard, WireMock up, and guided setup\n version Print package version (use --verbose for runtime details)\n diagnose Emit a redacted support bundle with --redacted\n config get|set|unset|list\n Manage CLI configuration values\n whoami Resolve the authenticated principal and tenant realm\n keys list|create|rotate|revoke\n Manage tenant service-account API keys\n intents list|get|create|fund|evidence|settlement-confirm\n Harbor intent workflows\n guardrails bootstrap|evidence\n Sandbox guardrail helpers\n spend authorize Authorize delegated spend for a tool call\n signal reputation|portfolio|fraud\n Signal summaries and fraud reads\n receipts get|verify\n Protocol settlement and agent action receipts (--kind agent)\n mandates verify|import\n Agent mandate verification and import\n a2a card|contracts\n Agent card discovery and task contracts\n policy init|init-org|extend|presets list|presets show|validate-tools|templates|preview|import-mcp-receipt|import-x402-receipt|validate-evidence\n Scaffold and validate paybond.policy.yaml (including enterprise org inheritance), browse policy presets and solutions, list completion presets, preview Harbor templates, and import receipts\n agent run bind|status|trace|reload-policy|tool execute|validate|registry validate|sandbox smoke\n Agent middleware: bind runs, reload policy, execute tools, validate registry, sandbox smoke\n audit exports list|get|verify|delete\n Compliance audit export jobs and local bundle verification\n\nGetting started:\n Sandbox setup\n Authenticate, validate the runtime, and confirm tenant context.\n $ paybond login\n $ paybond doctor --format json\n Next: paybond whoami\n Agent + MCP host\n Preview MCP host config and list tools exposed to agents.\n $ paybond mcp install --host claude --scope local\n $ paybond mcp verify-config --host claude\n $ paybond mcp tools\n Next: paybond doctor --agent\n Paid-tool guardrail\n Scaffold a sandbox guardrail integration file for your agent runtime.\n $ paybond init guardrail\n $ paybond guardrails bootstrap --operation paid-tool --requested-spend-cents 100\n Next: paybond spend authorize --help\n Policy-driven agent sandbox\n Validate and smoke-test agent middleware from a versioned paybond.policy.yaml file.\n $ paybond policy init --out paybond.policy.yaml\n $ paybond policy validate-tools --file paybond.policy.yaml\n $ paybond agent sandbox smoke --policy-file paybond.policy.yaml --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json\n Next: paybond policy validate-tools --help\n Agent middleware sandbox\n Bind a sandbox run and execute a guarded tool with auto-evidence.\n $ paybond agent sandbox smoke --operation paid-tool --requested-spend-cents 100 --evidence-preset cost_and_completion --result-body '{\"status\":\"ok\",\"cost_cents\":100}' --format json\n Next: paybond agent run bind --help\n Completion preset\n Scaffold catalog-aligned completion evidence for Harbor release predicates.\n $ paybond init completion --preset api_response_ok\n $ paybond policy templates\n $ paybond policy preview --preset api_response_ok --evidence-file evidence.json\n Next: paybond policy preview --help\n\nDocumentation: https://docs.paybond.ai/kit\n\nLearn more:\n paybond help <command> Detailed help for a command\n paybond examples Copy-paste command examples\n paybond onboarding Guided first-run checks\n paybond completion <shell> Shell completions (bash|zsh|fish)\n\nLegacy aliases: paybond-kit-login, paybond-init, paybond-kit-init, paybond-mcp-server\n";
2
+ export const ROOT_HELP = "Usage: paybond [--global-flags] <command> [<subcommand> ...] [args]\n\nGlobal flags:\n --gateway <url> Gateway base URL (default: https://api.paybond.ai)\n --env-file <path> Local secrets file (default: .env.local)\n --format table|json Human table or JSON envelope output (default: table)\n --json <fields> Field-selectable JSON for list/read commands (plain JSON; use --format json for envelope)\n --jq <expr> jq-style filter for list/read command output\n --profile <name> Named credential profile from the Paybond CLI config file\n --request-id <id> Correlation ID for Gateway calls and JSON output\n --yes Skip confirmation for destructive operations\n --no-open Do not open a browser for device login\n --color auto|always|never Colorize human table output and help text (default: auto)\n --no-color Disable color output (also honors NO_COLOR)\n\nCommands:\n onboarding Guided, non-destructive first-run checks\n help Detailed help for a command\n examples Copy-paste examples from the command spec\n completion bash|zsh|fish Shell completion scripts\n login Sandbox device login\n init Interactive first-run scaffold (solution, spend cap, framework, owned policy files)\n init guardrail|completion|agent-middleware\n Scaffold sandbox guardrail, completion evidence, or agent middleware integration files\n mcp serve|install|verify-config|tools MCP server and host configuration\n doctor Validate local runtime, credentials, and optional agent or Shopify setup\n dev smoke|trace|loop|up\n Local sandbox developer loop: travel/shopping smoke, trace dashboard, WireMock up, and guided setup\n shopify doctor|link|dev|webhook trigger|checkout smoke|order show|capture ready|payments doctor|payments smoke|payments session show\n Shopify agentic commerce orchestration: readiness, dev loop, webhook trigger, checkout smoke, and Payments app rail smoke\n version Print package version (use --verbose for runtime details)\n diagnose Emit a redacted support bundle with --redacted\n config get|set|unset|list\n Manage CLI configuration values\n whoami Resolve the authenticated principal and tenant realm\n keys list|create|rotate|revoke\n Manage tenant service-account API keys\n intents list|get|create|fund|evidence|settlement-confirm\n Harbor intent workflows\n guardrails bootstrap|evidence\n Sandbox guardrail helpers\n spend authorize Authorize delegated spend for a tool call\n signal reputation|portfolio|fraud\n Signal summaries and fraud reads\n receipts get|verify\n Protocol settlement and agent action receipts (--kind agent)\n mandates verify|import\n Agent mandate verification and import\n a2a card|contracts\n Agent card discovery and task contracts\n policy init|init-org|extend|presets list|presets show|validate-tools|templates|preview|import-mcp-receipt|import-x402-receipt|validate-evidence\n Scaffold and validate paybond.policy.yaml (including enterprise org inheritance), browse policy presets and solutions, list completion presets, preview Harbor templates, and import receipts\n agent run bind|status|trace|reload-policy|tool execute|validate|registry validate|sandbox smoke\n Agent middleware: bind runs, reload policy, execute tools, validate registry, sandbox smoke\n audit exports list|get|verify|delete\n Compliance audit export jobs and local bundle verification\n\nGetting started:\n Sandbox setup\n Authenticate, validate the runtime, and confirm tenant context.\n $ paybond login\n $ paybond doctor --format json\n Next: paybond whoami\n Agent + MCP host\n Preview MCP host config and list tools exposed to agents.\n $ paybond mcp install --host claude --scope local\n $ paybond mcp verify-config --host claude\n $ paybond mcp tools\n Next: paybond doctor --agent\n Paid-tool guardrail\n Scaffold a sandbox guardrail integration file for your agent runtime.\n $ paybond init guardrail\n $ paybond guardrails bootstrap --operation paid-tool --requested-spend-cents 100\n Next: paybond spend authorize --help\n Policy-driven agent sandbox\n Validate and smoke-test agent middleware from a versioned paybond.policy.yaml file.\n $ paybond policy init --out paybond.policy.yaml\n $ paybond policy validate-tools --file paybond.policy.yaml\n $ paybond agent sandbox smoke --policy-file paybond.policy.yaml --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json\n Next: paybond policy validate-tools --help\n Agent middleware sandbox\n Bind a sandbox run and execute a guarded tool with auto-evidence.\n $ paybond agent sandbox smoke --operation paid-tool --requested-spend-cents 100 --evidence-preset cost_and_completion --result-body '{\"status\":\"ok\",\"cost_cents\":100}' --format json\n Next: paybond agent run bind --help\n Completion preset\n Scaffold catalog-aligned completion evidence for Harbor release predicates.\n $ paybond init completion --preset api_response_ok\n $ paybond policy templates\n $ paybond policy preview --preset api_response_ok --evidence-file evidence.json\n Next: paybond policy preview --help\n\nDocumentation: https://docs.paybond.ai/kit\n\nLearn more:\n paybond help <command> Detailed help for a command\n paybond examples Copy-paste command examples\n paybond onboarding Guided first-run checks\n paybond completion <shell> Shell completions (bash|zsh|fish)\n\nLegacy aliases: paybond-kit-login, paybond-init, paybond-kit-init, paybond-mcp-server\n";
3
3
  export const COMMAND_HELP = {
4
4
  "onboarding": "Usage: paybond onboarding [--host claude|codex|openai|generic]\n\nRuns a guided, non-destructive first-run workflow: runtime check, login status, guardrail file status, MCP config preview, and doctor.\n\nExamples:\n $ paybond onboarding\n $ paybond onboarding --host claude --format json\n\nDocs: https://docs.paybond.ai/kit/coding-agent-setup\n\nNext: paybond login",
5
5
  "help": "Usage: paybond help [<command> [<subcommand> ...]]\n\nShows detailed help for a command path. Without arguments, prints root help.\n\nExamples:\n $ paybond help\n $ paybond help login\n $ paybond help mcp install",
@@ -24,12 +24,22 @@ export const COMMAND_HELP = {
24
24
  "mcp install": "Usage: paybond mcp install --host claude|codex|openai|generic [--scope local|project|user] [--format json|toml] [--out <path>] [--env-file <path>] [--tool-policy readonly|spend-write|allowlist] [--tool-allowlist <names>]\n\nWrites a stdio MCP server entry that references PAYBOND_ENV_FILE (never raw API keys).\nDefault format is TOML for codex and JSON for other hosts. --scope local prints without writing.\nOptional --tool-policy controls which Paybond MCP tools the server exposes.\n\nExamples:\n $ paybond mcp install --host claude\n $ paybond mcp install --host generic --scope project --tool-policy readonly\n\nDocs: https://docs.paybond.ai/kit/coding-agent-setup\n\nNext: paybond mcp verify-config --host claude",
25
25
  "mcp verify-config": "Usage: paybond mcp verify-config --host claude|codex|openai|generic [--format json|toml] [--env-file <path>] [--config <path>]\n\nValidates a generated or on-disk MCP host config without launching the MCP server.\n\nExamples:\n $ paybond mcp verify-config --host claude\n $ paybond mcp verify-config --host generic --config .paybond/mcp.json\n\nDocs: https://docs.paybond.ai/kit/coding-agent-setup\n\nNext: paybond doctor --agent",
26
26
  "mcp tools": "Usage: paybond mcp tools\n\nLists tools exposed by the local MCP server.\n\nExamples:\n $ paybond mcp tools",
27
- "doctor": "Usage: paybond doctor [--agent] [--host claude|codex|openai|generic]\n\nValidates runtime, package version, env file, key shape, principal lookup, and with --agent deep MCP checks plus agent middleware sandbox smoke (bind, authorize, execute, auto-evidence).\n\nExamples:\n $ paybond doctor\n $ paybond doctor --agent --format json\n\nDocs: https://docs.paybond.ai/kit/coding-agent-setup\n\nNext: paybond agent sandbox smoke --operation paid-tool --requested-spend-cents 100 --evidence-preset cost_and_completion --result-body '{\"status\":\"ok\",\"cost_cents\":100}' --format json",
27
+ "doctor": "Usage: paybond doctor [--agent] [--shopify] [--host claude|codex|openai|generic]\n\nValidates runtime, package version, env file, key shape, principal lookup, and with --agent deep MCP checks plus agent middleware sandbox smoke. With --shopify, runs Shopify CLI readiness checks.\n\nExamples:\n $ paybond doctor\n $ paybond doctor --agent --format json\n $ paybond doctor --shopify\n\nDocs: https://docs.paybond.ai/kit/coding-agent-setup\n\nNext: paybond agent sandbox smoke --operation paid-tool --requested-spend-cents 100 --evidence-preset cost_and_completion --result-body '{\"status\":\"ok\",\"cost_cents\":100}' --format json",
28
28
  "dev": "Usage: paybond dev <smoke|trace|loop|up> [args]\n\nLocal sandbox developer workflows: travel smoke with checklist output, trace dashboard, optional WireMock Gateway (`dev up`), and a guided login → policy → validate → smoke loop. Use `--offline` on smoke/loop for in-process mock capability and simulated settlement without PAYBOND_API_KEY.\n\nExamples:\n $ paybond dev smoke --offline\n $ paybond dev trace\n $ paybond dev loop\n $ paybond dev up\n\nDocs: https://docs.paybond.ai/kit/quickstart-agent\n\nNext: paybond dev loop --offline",
29
29
  "dev smoke": "Usage: paybond dev smoke [--preset travel] [--offline] [--format table|json]\n\nRuns agent sandbox smoke with travel preset defaults and records a local trace event. With `--offline`, uses an in-process mock capability and simulated settlement lifecycle (no PAYBOND_API_KEY required).\n\nExamples:\n $ paybond dev smoke\n $ paybond dev smoke --offline\n $ paybond dev smoke --format json\n\nDocs: https://docs.paybond.ai/kit/quickstart-agent\n\nNext: paybond dev trace",
30
30
  "dev trace": "Usage: paybond dev trace [--port 9477]\n\nStarts a local HTTP trace dashboard on port 9477 showing recent tool authorization events from dev smoke runs.\n\nExamples:\n $ paybond dev trace\n $ paybond dev trace --port 9477\n\nDocs: https://docs.paybond.ai/kit/quickstart-agent",
31
- "dev loop": "Usage: paybond dev loop [--policy-file paybond.policy.yaml] [--offline] [--no-login]\n\nGuided local loop: login when needed (skipped with `--offline`), scaffold travel policy, validate tools locally, then run dev smoke. Prints a startup banner with trace and audit log paths.\n\nExamples:\n $ paybond dev loop\n $ paybond dev loop --offline\n $ paybond dev loop --format json\n\nDocs: https://docs.paybond.ai/kit/quickstart-agent\n\nNext: paybond dev trace",
31
+ "dev loop": "Usage: paybond dev loop [--preset travel|shopping] [--shopify] [--policy-file paybond.policy.yaml] [--offline] [--no-login]\n\nGuided local loop: login when needed (skipped with `--offline`), scaffold policy from preset, validate tools locally, then run dev smoke. With `--shopify`, prints Shopify next-steps after smoke.\n\nExamples:\n $ paybond dev loop\n $ paybond dev loop --offline\n $ paybond dev loop --preset shopping --shopify\n $ paybond dev loop --format json\n\nDocs: https://docs.paybond.ai/kit/quickstart-agent\n\nNext: paybond dev trace",
32
32
  "dev up": "Usage: paybond dev up [--port 18089] [--down]\n\nStarts or stops a local WireMock Gateway using bundled partner-dry-run mappings (Docker required). After `dev up`, point `--gateway` at the printed URL for HTTP-level sandbox smoke.\n\nExamples:\n $ paybond dev up\n $ paybond dev up --port 18089\n $ paybond dev up --down\n\nDocs: https://docs.paybond.ai/kit/quickstart-agent\n\nNext: paybond dev loop --gateway http://127.0.0.1:18089 --no-login",
33
+ "shopify doctor": "Usage: paybond shopify doctor\n\nReadiness checklist: Shopify CLI and UCP CLI on PATH, linked shopify.app.toml, dev store env, Paybond shop link, manual capture, and shopify_authorized_order rail readiness.\n\nExamples:\n $ paybond shopify doctor\n $ paybond shopify doctor --format json\n\nDocs: https://docs.paybond.ai/kit/shopify-cli\n\nNext: paybond shopify link",
34
+ "shopify link": "Usage: paybond shopify link\n\nPrints guided setup: paybond login, Console settlement link, and the exact shopify app config link command.\n\nExamples:\n $ paybond shopify link\n\nDocs: https://docs.paybond.ai/kit/shopify-cli\n\nNext: shopify app config link",
35
+ "shopify dev": "Usage: paybond shopify dev [--tunnel <url>]\n\nOrchestrated local dev instructions: paybond dev trace in one terminal, shopify app dev in another, with resolved sandbox webhook address.\n\nExamples:\n $ paybond shopify dev\n $ paybond shopify dev --tunnel https://example.ngrok-free.app\n\nDocs: https://docs.paybond.ai/kit/shopify-cli\n\nNext: paybond shopify checkout smoke",
36
+ "shopify webhook trigger": "Usage: paybond shopify webhook trigger [--topic orders/paid] [--gateway <url>] [--address <url>] [--dry-run]\n\nWraps shopify app webhook trigger with Paybond gateway webhook path pre-filled (/webhooks/sandbox/shopify).\n\nExamples:\n $ paybond shopify webhook trigger --topic orders/paid --gateway https://api.paybond.ai\n $ paybond shopify webhook trigger --address http://127.0.0.1:8081/webhooks/sandbox/shopify --dry-run\n\nDocs: https://docs.paybond.ai/kit/shopify-cli",
37
+ "shopify checkout smoke": "Usage: paybond shopify checkout smoke [--shop <domain>] [--requested-spend-cents 4500] [--offline]\n\nE2E Harbor middleware smoke with Shopify-shaped checkout result and binding guidance. Falls back to agent sandbox smoke when UCP CLI is absent.\n\nExamples:\n $ paybond shopify checkout smoke --shop paybond-agent-commerce-dev.myshopify.com\n $ paybond shopify checkout smoke --offline --format json\n\nDocs: https://docs.paybond.ai/kit/shopify-cli\n\nNext: paybond dev trace",
38
+ "shopify order show": "Usage: paybond shopify order show <id> [--shop <domain>]\n\nFetch order via Shopify UCP Order MCP and display binding metadata (dev only).\n\nExamples:\n $ paybond shopify order show gid://shopify/Order/123 --shop paybond-agent-commerce-dev.myshopify.com\n\nDocs: https://docs.paybond.ai/kit/shopify-cli",
39
+ "shopify capture ready": "Usage: paybond shopify capture ready\n\nVerify merchant manual-capture setting and shopify_authorized_order rail prerequisites via settlement config.\n\nExamples:\n $ paybond shopify capture ready\n $ paybond shopify capture ready --format json\n\nDocs: https://docs.paybond.ai/kit/shopify-cli",
40
+ "shopify payments doctor": "Usage: paybond shopify payments doctor\n\nReadiness checklist for the shopify_payments_app rail: Shopify CLI, Paybond Payments app toml, dev store env, Payments app link, paymentsAppConfigure ready, mTLS ingress, and shopify_payments_app rail readiness.\n\nExamples:\n $ paybond shopify payments doctor\n $ paybond shopify payments doctor --format json\n\nDocs: https://docs.paybond.ai/guides/configure-shopify-settlement\n\nNext: paybond shopify payments smoke",
41
+ "shopify payments smoke": "Usage: paybond shopify payments smoke [--shop <domain>] [--requested-spend-cents 4500] [--offline]\n\nE2E Harbor middleware smoke with Shopify Payments app session-shaped result and dev-store next steps. Pair with `cd apps/shopify-payments && shopify app dev` for live checkout.\n\nExamples:\n $ paybond shopify payments smoke --shop paybond-agent-commerce-dev.myshopify.com\n $ paybond shopify payments smoke --offline --format json\n\nDocs: https://docs.paybond.ai/guides/configure-shopify-settlement\n\nNext: paybond shopify payments session show <payment_session_id>",
42
+ "shopify payments session show": "Usage: paybond shopify payments session show <id> [--shop <domain>]\n\nFetch a tenant-scoped Shopify Payments session row from the gateway idempotency store (requires paybond login).\n\nExamples:\n $ paybond shopify payments session show paybond-smoke-payment-session --shop paybond-agent-commerce-dev.myshopify.com\n\nDocs: https://docs.paybond.ai/guides/configure-shopify-settlement",
33
43
  "version": "Usage: paybond version [--verbose]\n\nPrints the installed Kit package version. With --verbose, includes runtime, platform, config paths, gateway URL, request ID, MCP tool count, and redacted credential source.\n\nExamples:\n $ paybond version\n $ paybond version --verbose --format json\n\nDocs: https://docs.paybond.ai/kit/package-provenance",
34
44
  "diagnose": "Usage: paybond diagnose --redacted\n\nEmits a redacted support bundle for troubleshooting. Never prints raw API keys.\n\nExamples:\n $ paybond diagnose --redacted\n $ paybond diagnose --redacted --format json\n\nDocs: https://docs.paybond.ai/kit/package-provenance",
35
45
  "config get": "Usage: paybond config get <key>\n\nExamples:\n $ paybond config get gateway",
@@ -6,6 +6,7 @@ import { handleConfig, handleDoctor, handleDiagnose, handleInitCompletion, handl
6
6
  import { handlePolicyExtend, handlePolicyImportMcpReceipt, handlePolicyImportX402Receipt, handlePolicyInit, handlePolicyInitOrg, handlePolicyPresetsList, handlePolicyPresetsShow, handlePolicyPreview, handlePolicyTemplates, handlePolicyValidateEvidence, handlePolicyValidateTools, } from "./commands/policy.js";
7
7
  import { handleAgent } from "./commands/agent.js";
8
8
  import { handleDev } from "./commands/dev.js";
9
+ import { handleShopify } from "./commands/shopify.js";
9
10
  import { handleGuardrails, handleIntents, handleKeys, handleSpendAuthorize, } from "./commands/workflows.js";
10
11
  import { failureEnvelope, prepareCommandOutput, successEnvelope, writeEnvelope, writeTableLines } from "./envelope.js";
11
12
  import { defaultGlobalOptions, parseCliArgv } from "./globals.js";
@@ -213,6 +214,13 @@ export async function runCli(argv, deps = {}) {
213
214
  canonical = "doctor";
214
215
  result = await handleDoctor(ctx, command.slice(1));
215
216
  }
217
+ else if (head === "shopify" && second) {
218
+ const isPaymentsSessionShow = second === "payments" && third === "session";
219
+ const fourth = isPaymentsSessionShow ? command[3] : undefined;
220
+ canonical = commandPath(["shopify", second, third, fourth].filter(Boolean));
221
+ const argvStart = isPaymentsSessionShow ? 4 : third ? 3 : 2;
222
+ result = await handleShopify(ctx, second, third, fourth, command.slice(argvStart));
223
+ }
216
224
  else if (head === "dev" && second) {
217
225
  canonical = commandPath(["dev", second]);
218
226
  result = await handleDev(ctx, second, tail);
@@ -361,7 +369,13 @@ export async function runCli(argv, deps = {}) {
361
369
  }
362
370
  }
363
371
  }
364
- else if ((canonical === "dev smoke" || canonical === "dev loop") &&
372
+ else if ((canonical === "dev smoke" ||
373
+ canonical === "dev loop" ||
374
+ canonical === "shopify doctor" ||
375
+ canonical === "shopify checkout smoke" ||
376
+ canonical === "shopify capture ready" ||
377
+ canonical === "shopify dev" ||
378
+ canonical === "shopify link") &&
365
379
  Array.isArray(result.data.checklist_lines)) {
366
380
  if (canonical === "dev loop" && Array.isArray(result.data.banner_lines)) {
367
381
  writeTableLines(ctx.stdout, result.data.banner_lines);
@@ -0,0 +1,59 @@
1
+ export declare const PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY = "tenant_id";
2
+ export declare const PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY = "paybond_intent_id";
3
+ export type CommerceBinding = {
4
+ /**
5
+ * Tenant realm identifier.
6
+ *
7
+ * Must be sourced from authenticated Paybond session context — never from
8
+ * unauthenticated client input.
9
+ */
10
+ tenantId: string;
11
+ /**
12
+ * Harbor intent identifier (UUID).
13
+ *
14
+ * Must be sourced from authenticated Paybond session context — never from
15
+ * unauthenticated client input.
16
+ */
17
+ intentId: string;
18
+ };
19
+ export type StripeMetadata = Record<string, string>;
20
+ export type ShopifyNoteAttribute = {
21
+ name: string;
22
+ value: string;
23
+ };
24
+ /**
25
+ * Validates and normalizes the canonical Paybond commerce binding.
26
+ *
27
+ * This helper is intentionally strict: the binding is used for tenant isolation
28
+ * and provider webhook preflight matching.
29
+ */
30
+ export declare function normalizeCommerceBinding(binding: CommerceBinding): CommerceBinding;
31
+ /**
32
+ * Encodes a canonical Paybond commerce binding into Stripe `metadata`.
33
+ *
34
+ * - Preserves unknown metadata keys.
35
+ * - Rejects collisions when an existing binding key disagrees.
36
+ */
37
+ export declare function encodeCommerceBindingToStripeMetadata(binding: CommerceBinding, existingMetadata?: StripeMetadata): StripeMetadata;
38
+ /**
39
+ * Decodes a canonical Paybond commerce binding from Stripe `metadata`.
40
+ *
41
+ * Returns `null` when binding keys are absent. Throws on empty values.
42
+ */
43
+ export declare function decodeCommerceBindingFromStripeMetadata(metadata: Record<string, unknown> | null | undefined): CommerceBinding | null;
44
+ /**
45
+ * Encodes a canonical Paybond commerce binding into Shopify `note_attributes`.
46
+ *
47
+ * - Preserves unknown attributes.
48
+ * - Removes any existing occurrences of binding keys (after verifying they match).
49
+ * - Appends canonical binding attributes in stable order.
50
+ */
51
+ export declare function encodeCommerceBindingToShopifyNoteAttributes(binding: CommerceBinding, existingAttributes?: readonly ShopifyNoteAttribute[]): ShopifyNoteAttribute[];
52
+ /**
53
+ * Decodes a canonical Paybond commerce binding from Shopify `note_attributes`.
54
+ *
55
+ * Returns `null` when binding keys are absent. Throws on:
56
+ * - empty binding values
57
+ * - multiple conflicting values for the same key
58
+ */
59
+ export declare function decodeCommerceBindingFromShopifyNoteAttributes(noteAttributes: unknown): CommerceBinding | null;
@@ -0,0 +1,129 @@
1
+ export const PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY = "tenant_id";
2
+ export const PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY = "paybond_intent_id";
3
+ function requireNonEmptyTrimmed(value, label) {
4
+ const trimmed = value.trim();
5
+ if (!trimmed) {
6
+ throw new Error(`commerce-binding: ${label} is required`);
7
+ }
8
+ return trimmed;
9
+ }
10
+ function assertNoCollision(existingValue, nextValue, label) {
11
+ if (existingValue === undefined) {
12
+ return;
13
+ }
14
+ if (existingValue === nextValue) {
15
+ return;
16
+ }
17
+ throw new Error(`commerce-binding: ${label} collision (${JSON.stringify(existingValue)} != ${JSON.stringify(nextValue)})`);
18
+ }
19
+ /**
20
+ * Validates and normalizes the canonical Paybond commerce binding.
21
+ *
22
+ * This helper is intentionally strict: the binding is used for tenant isolation
23
+ * and provider webhook preflight matching.
24
+ */
25
+ export function normalizeCommerceBinding(binding) {
26
+ return {
27
+ tenantId: requireNonEmptyTrimmed(binding.tenantId, "tenantId"),
28
+ intentId: requireNonEmptyTrimmed(binding.intentId, "intentId"),
29
+ };
30
+ }
31
+ /**
32
+ * Encodes a canonical Paybond commerce binding into Stripe `metadata`.
33
+ *
34
+ * - Preserves unknown metadata keys.
35
+ * - Rejects collisions when an existing binding key disagrees.
36
+ */
37
+ export function encodeCommerceBindingToStripeMetadata(binding, existingMetadata) {
38
+ const normalized = normalizeCommerceBinding(binding);
39
+ const merged = { ...(existingMetadata ?? {}) };
40
+ assertNoCollision(merged[PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY], normalized.tenantId, PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY);
41
+ assertNoCollision(merged[PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY], normalized.intentId, PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY);
42
+ merged[PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY] = normalized.tenantId;
43
+ merged[PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY] = normalized.intentId;
44
+ return merged;
45
+ }
46
+ /**
47
+ * Decodes a canonical Paybond commerce binding from Stripe `metadata`.
48
+ *
49
+ * Returns `null` when binding keys are absent. Throws on empty values.
50
+ */
51
+ export function decodeCommerceBindingFromStripeMetadata(metadata) {
52
+ if (!metadata) {
53
+ return null;
54
+ }
55
+ const rawTenantId = metadata[PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY];
56
+ const rawIntentId = metadata[PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY];
57
+ if (typeof rawTenantId !== "string" || typeof rawIntentId !== "string") {
58
+ return null;
59
+ }
60
+ return normalizeCommerceBinding({ tenantId: rawTenantId, intentId: rawIntentId });
61
+ }
62
+ /**
63
+ * Encodes a canonical Paybond commerce binding into Shopify `note_attributes`.
64
+ *
65
+ * - Preserves unknown attributes.
66
+ * - Removes any existing occurrences of binding keys (after verifying they match).
67
+ * - Appends canonical binding attributes in stable order.
68
+ */
69
+ export function encodeCommerceBindingToShopifyNoteAttributes(binding, existingAttributes) {
70
+ const normalized = normalizeCommerceBinding(binding);
71
+ const attrs = [];
72
+ const input = existingAttributes ?? [];
73
+ for (const attr of input) {
74
+ if (!attr || typeof attr.name !== "string" || typeof attr.value !== "string") {
75
+ continue;
76
+ }
77
+ if (attr.name === PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY) {
78
+ assertNoCollision(attr.value, normalized.tenantId, attr.name);
79
+ continue;
80
+ }
81
+ if (attr.name === PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY) {
82
+ assertNoCollision(attr.value, normalized.intentId, attr.name);
83
+ continue;
84
+ }
85
+ attrs.push({ name: attr.name, value: attr.value });
86
+ }
87
+ attrs.push({ name: PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY, value: normalized.tenantId }, { name: PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY, value: normalized.intentId });
88
+ return attrs;
89
+ }
90
+ /**
91
+ * Decodes a canonical Paybond commerce binding from Shopify `note_attributes`.
92
+ *
93
+ * Returns `null` when binding keys are absent. Throws on:
94
+ * - empty binding values
95
+ * - multiple conflicting values for the same key
96
+ */
97
+ export function decodeCommerceBindingFromShopifyNoteAttributes(noteAttributes) {
98
+ if (!Array.isArray(noteAttributes)) {
99
+ return null;
100
+ }
101
+ let tenantId;
102
+ let intentId;
103
+ for (const entry of noteAttributes) {
104
+ if (!entry || typeof entry !== "object") {
105
+ continue;
106
+ }
107
+ const name = entry.name;
108
+ const value = entry.value;
109
+ if (typeof name !== "string" || typeof value !== "string") {
110
+ continue;
111
+ }
112
+ if (name === PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY) {
113
+ if (tenantId !== undefined && tenantId !== value) {
114
+ throw new Error(`commerce-binding: ${name} collision (${JSON.stringify(tenantId)} != ${JSON.stringify(value)})`);
115
+ }
116
+ tenantId = value;
117
+ }
118
+ if (name === PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY) {
119
+ if (intentId !== undefined && intentId !== value) {
120
+ throw new Error(`commerce-binding: ${name} collision (${JSON.stringify(intentId)} != ${JSON.stringify(value)})`);
121
+ }
122
+ intentId = value;
123
+ }
124
+ }
125
+ if (tenantId === undefined || intentId === undefined) {
126
+ return null;
127
+ }
128
+ return normalizeCommerceBinding({ tenantId, intentId });
129
+ }
@@ -1,5 +1,12 @@
1
1
  /** Stripe payment-rail webhook event types that must not appear as tool-completion predicates. */
2
2
  export declare const STRIPE_FUNDING_WEBHOOK_EVENT_TYPES: readonly ["payment_intent.succeeded", "charge.succeeded"];
3
+ /** Helper identifiers that satisfy the Stripe metadata-binding doctor check. */
4
+ export declare const STRIPE_METADATA_HELPER_MARKERS: readonly ["buildPaybondStripeMetadata", "build_paybond_stripe_metadata"];
5
+ /**
6
+ * Heuristic markers that a source file wraps Stripe payment / PaymentIntent APIs
7
+ * and therefore should bind Paybond metadata from an authenticated session.
8
+ */
9
+ export declare const STRIPE_WRAPPING_SOURCE_MARKERS: readonly ["paymentIntents.create", "payment_intents.create", "PaymentIntent.create", "stripe.PaymentIntent", "stripe.paymentIntents", "charges.create", "Charge.create", "payments.charge_customer"];
3
10
  export type CompletionDoctorCheck = {
4
11
  name: string;
5
12
  ok: boolean;
@@ -7,6 +14,15 @@ export type CompletionDoctorCheck = {
7
14
  details?: Record<string, unknown>;
8
15
  };
9
16
  export declare function isStripeFundingWebhookEventType(eventType: unknown): boolean;
17
+ /** True when source text appears to wrap Stripe charge / PaymentIntent APIs. */
18
+ export declare function sourceLooksLikeStripeWrapping(body: string): boolean;
19
+ /** True when source text references Paybond Stripe metadata helpers. */
20
+ export declare function sourceUsesStripeMetadataHelper(body: string): boolean;
21
+ /**
22
+ * Scan project sources for Stripe-wrapping tools that omit metadata helpers.
23
+ * Warns (ok: true) when helpers appear missing; never hard-fails.
24
+ */
25
+ export declare function runStripeToolMetadataBindingDoctorCheck(cwd: string): Promise<CompletionDoctorCheck>;
10
26
  type GatewayJsonClient = {
11
27
  getJson(path: string): Promise<Record<string, unknown>>;
12
28
  };
@@ -1,4 +1,4 @@
1
- import { readdir, readFile } from "node:fs/promises";
1
+ import { readdir, readFile, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { loadCompletionCatalog } from "./completion-catalog.js";
4
4
  import { completionPresetDeprecationWarning, isVendorPack, resolveCompletionPreset, vendorEvidenceSchema, } from "./completion-resolve.js";
@@ -7,6 +7,42 @@ export const STRIPE_FUNDING_WEBHOOK_EVENT_TYPES = [
7
7
  "payment_intent.succeeded",
8
8
  "charge.succeeded",
9
9
  ];
10
+ /** Helper identifiers that satisfy the Stripe metadata-binding doctor check. */
11
+ export const STRIPE_METADATA_HELPER_MARKERS = [
12
+ "buildPaybondStripeMetadata",
13
+ "build_paybond_stripe_metadata",
14
+ ];
15
+ /**
16
+ * Heuristic markers that a source file wraps Stripe payment / PaymentIntent APIs
17
+ * and therefore should bind Paybond metadata from an authenticated session.
18
+ */
19
+ export const STRIPE_WRAPPING_SOURCE_MARKERS = [
20
+ "paymentIntents.create",
21
+ "payment_intents.create",
22
+ "PaymentIntent.create",
23
+ "stripe.PaymentIntent",
24
+ "stripe.paymentIntents",
25
+ "charges.create",
26
+ "Charge.create",
27
+ "payments.charge_customer",
28
+ ];
29
+ const SOURCE_FILE_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py"]);
30
+ const SKIP_DIR_NAMES = new Set([
31
+ ".git",
32
+ ".hg",
33
+ ".svn",
34
+ ".paybond",
35
+ "node_modules",
36
+ "dist",
37
+ "build",
38
+ "coverage",
39
+ "__pycache__",
40
+ ".venv",
41
+ "venv",
42
+ "target",
43
+ ".next",
44
+ ".turbo",
45
+ ]);
10
46
  function stableJson(value) {
11
47
  return JSON.stringify(value);
12
48
  }
@@ -73,6 +109,124 @@ export function isStripeFundingWebhookEventType(eventType) {
73
109
  return (typeof eventType === "string" &&
74
110
  STRIPE_FUNDING_WEBHOOK_EVENT_TYPES.includes(eventType));
75
111
  }
112
+ /** True when source text appears to wrap Stripe charge / PaymentIntent APIs. */
113
+ export function sourceLooksLikeStripeWrapping(body) {
114
+ return STRIPE_WRAPPING_SOURCE_MARKERS.some((marker) => body.includes(marker));
115
+ }
116
+ /** True when source text references Paybond Stripe metadata helpers. */
117
+ export function sourceUsesStripeMetadataHelper(body) {
118
+ return STRIPE_METADATA_HELPER_MARKERS.some((marker) => body.includes(marker));
119
+ }
120
+ async function collectSourceFiles(root, maxFiles = 400) {
121
+ const files = [];
122
+ const queue = [root];
123
+ while (queue.length > 0 && files.length < maxFiles) {
124
+ const current = queue.shift();
125
+ if (!current) {
126
+ break;
127
+ }
128
+ let entries;
129
+ try {
130
+ entries = await readdir(current, { withFileTypes: true });
131
+ }
132
+ catch {
133
+ continue;
134
+ }
135
+ for (const entry of entries) {
136
+ if (files.length >= maxFiles) {
137
+ break;
138
+ }
139
+ if (entry.isDirectory()) {
140
+ if (SKIP_DIR_NAMES.has(entry.name) || entry.name.startsWith(".")) {
141
+ continue;
142
+ }
143
+ queue.push(path.join(current, entry.name));
144
+ continue;
145
+ }
146
+ if (!entry.isFile()) {
147
+ continue;
148
+ }
149
+ const ext = path.extname(entry.name).toLowerCase();
150
+ if (!SOURCE_FILE_EXTENSIONS.has(ext)) {
151
+ continue;
152
+ }
153
+ files.push(path.join(current, entry.name));
154
+ }
155
+ }
156
+ return files;
157
+ }
158
+ /**
159
+ * Scan project sources for Stripe-wrapping tools that omit metadata helpers.
160
+ * Warns (ok: true) when helpers appear missing; never hard-fails.
161
+ */
162
+ export async function runStripeToolMetadataBindingDoctorCheck(cwd) {
163
+ let rootStat;
164
+ try {
165
+ rootStat = await stat(cwd);
166
+ }
167
+ catch {
168
+ return {
169
+ name: "stripe_tool_metadata_binding",
170
+ ok: true,
171
+ message: "skipped Stripe tool metadata binding scan (cwd unreadable)",
172
+ };
173
+ }
174
+ if (!rootStat.isDirectory()) {
175
+ return {
176
+ name: "stripe_tool_metadata_binding",
177
+ ok: true,
178
+ message: "skipped Stripe tool metadata binding scan (cwd is not a directory)",
179
+ };
180
+ }
181
+ const sourceFiles = await collectSourceFiles(cwd);
182
+ const missingHelperFiles = [];
183
+ let stripeWrappingFiles = 0;
184
+ for (const filePath of sourceFiles) {
185
+ let body;
186
+ try {
187
+ body = await readFile(filePath, "utf8");
188
+ }
189
+ catch {
190
+ continue;
191
+ }
192
+ if (!sourceLooksLikeStripeWrapping(body)) {
193
+ continue;
194
+ }
195
+ stripeWrappingFiles += 1;
196
+ if (!sourceUsesStripeMetadataHelper(body)) {
197
+ missingHelperFiles.push(path.relative(cwd, filePath) || path.basename(filePath));
198
+ }
199
+ }
200
+ if (stripeWrappingFiles === 0) {
201
+ return {
202
+ name: "stripe_tool_metadata_binding",
203
+ ok: true,
204
+ message: "Stripe tool metadata binding: no Stripe-wrapping sources detected (use buildPaybondStripeMetadata with tenant_id from Paybond session)",
205
+ details: { checked_files: sourceFiles.length, stripe_wrapping_files: 0 },
206
+ };
207
+ }
208
+ if (missingHelperFiles.length > 0) {
209
+ return {
210
+ name: "stripe_tool_metadata_binding",
211
+ ok: true,
212
+ message: `warn: Stripe-wrapping tool(s) may lack Paybond metadata helpers (${missingHelperFiles.slice(0, 5).join(", ")}${missingHelperFiles.length > 5 ? ", …" : ""}); use buildPaybondStripeMetadata / build_paybond_stripe_metadata with tenant_id from authenticated Paybond session credentials — never client input`,
213
+ details: {
214
+ checked_files: sourceFiles.length,
215
+ stripe_wrapping_files: stripeWrappingFiles,
216
+ missing_helper_files: missingHelperFiles,
217
+ },
218
+ };
219
+ }
220
+ return {
221
+ name: "stripe_tool_metadata_binding",
222
+ ok: true,
223
+ message: `Stripe tool metadata binding: ${stripeWrappingFiles} Stripe-wrapping source(s) reference Paybond metadata helpers`,
224
+ details: {
225
+ checked_files: sourceFiles.length,
226
+ stripe_wrapping_files: stripeWrappingFiles,
227
+ },
228
+ };
229
+ }
76
230
  function extractTemplateParametersFromScaffold(body) {
77
231
  const tsMatch = body.match(/export const completionTemplateParameters = (\{[\s\S]*?\}) as const;/);
78
232
  if (tsMatch?.[1]) {
@@ -314,6 +468,7 @@ export async function runCompletionCatalogDoctorChecks(options) {
314
468
  message: "skipped policy head check (no gateway credentials)",
315
469
  });
316
470
  pushFundingEventMisuseCheck(checks, fundingEventWarnings, scaffoldPaths.length);
471
+ checks.push(await runStripeToolMetadataBindingDoctorCheck(options.cwd));
317
472
  return checks;
318
473
  }
319
474
  const archetypes = catalog.presets.filter((preset) => !isVendorPack(preset));
@@ -364,6 +519,7 @@ export async function runCompletionCatalogDoctorChecks(options) {
364
519
  });
365
520
  }
366
521
  pushFundingEventMisuseCheck(checks, fundingEventWarnings, scaffoldPaths.length);
522
+ checks.push(await runStripeToolMetadataBindingDoctorCheck(options.cwd));
367
523
  return checks;
368
524
  }
369
525
  function pushPackStaleCheck(checks, warnings, scaffoldCount) {
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { type BuildSignedCreateIntentParams, type BuildSignedCreateIntentWithPolicyBindingParams, type SettlementRail } from "./principal-intent.js";
6
6
  import { type SignPayeeEvidenceParams } from "./payee-evidence.js";
7
+ import type { AgentReceiptExternalAttestationV1 } from "./agent-receipt.js";
7
8
  import { PaybondAgentRunFacade, type PaybondAgentCallable, PaybondInstrumentBuilder, PaybondInstrumentRuntime, PaybondToolRegistry, type CreateGuardedAgentInput, type CreateGuardedAgentResult, type PaybondInlinePolicy, type PaybondInstrumentAgentOptions, type PaybondInstrumentInput, type PaybondInstrumented, type PaybondToolRegistryConfig, type PaybondWrapToolsOptions } from "./agent/index.js";
8
9
  import { GatewayAgentRunTraceReporter } from "./agent/gateway-trace-reporter.js";
9
10
  import { PaybondAudit } from "./audit/index.js";
@@ -986,6 +987,10 @@ type GatewayHarborClientOptions = {
986
987
  type GatewayHarborMutationOptions = {
987
988
  idempotencyKey?: string;
988
989
  recognitionProof?: AgentRecognitionProofV1 | Record<string, unknown>;
990
+ /** Kit-verified external attestation digests forwarded for Gateway compose (evidence submit only). */
991
+ agentReceiptAttestations?: AgentReceiptExternalAttestationV1[];
992
+ /** Agent run id matching the attestation header for server-side audit. */
993
+ agentReceiptSourceRunId?: string;
989
994
  };
990
995
  /**
991
996
  * Gateway-backed Harbor surface for hosted Paybond integrations.
@@ -1204,6 +1209,12 @@ export type ServiceAccountSignalSessionInit = {
1204
1209
  maxRetries?: number;
1205
1210
  };
1206
1211
  export type ServiceAccountFraudSessionInit = ServiceAccountSignalSessionInit;
1212
+ /** Server-derived principal identity: tenant plus the deployment environment the API key is bound to. */
1213
+ export type ResolvedGatewayPrincipal = {
1214
+ tenantId: string;
1215
+ /** `"live"` or `"sandbox"` as reported by the gateway principal, or `null` when the field is absent. */
1216
+ environment: PaybondEnvironment | null;
1217
+ };
1207
1218
  /**
1208
1219
  * Read-only tenant-bound Signal session for one service-account API key.
1209
1220
  */
@@ -1351,6 +1362,13 @@ export declare class Paybond {
1351
1362
  readonly audit: PaybondAudit;
1352
1363
  readonly agentRun: PaybondAgentRunFacade;
1353
1364
  readonly agent: PaybondAgentCallable;
1365
+ /**
1366
+ * Deployment environment this session is bound to, as reported by the gateway principal
1367
+ * (`"live"` or `"sandbox"`), or `null` when the gateway did not report one. Server-derived —
1368
+ * prefer this over the client-supplied `expectedEnvironment` hint when gating environment-sensitive
1369
+ * behavior (for example, refusing live Stripe secrets in a sandbox-only demo).
1370
+ */
1371
+ readonly environment: PaybondEnvironment | null;
1354
1372
  private constructor();
1355
1373
  /** Open a tenant-bound hosted Paybond session from a service-account API key. */
1356
1374
  static open(init: PaybondOpenOptions): Promise<Paybond>;
@@ -1415,6 +1433,9 @@ export { artifactsDigest, evidenceSignBytesV1, signPayeeEvidenceBinding, type Si
1415
1433
  export { AGENT_RECOGNITION_GATEWAY_VERIFIER_ID, AGENT_RECOGNITION_PROOF_KIND_V1, AGENT_RECOGNITION_PURPOSE_CREATE, AGENT_RECOGNITION_PURPOSE_FUND, AGENT_RECOGNITION_PURPOSE_EVIDENCE_SUBMIT, newAgentRecognitionRequestEnvelope, signAgentRecognitionProofV1, signHarborCreateRecognitionProof, signHarborFundRecognitionProof, signHarborEvidenceSubmitRecognitionProof, signHarborSettlementConfirmRecognitionProof, type SignAgentRecognitionProofV1Params, type SignedAgentRecognitionProofV1, } from "./agent-recognition.js";
1416
1434
  export { executeFundWithX402, buildX402FundRequestEnvelope, PaybondX402FundingFailedError, PaybondX402FundingPendingError, type FundRequestEnvelope, type PaymentRequired, type X402FundPollOptions, } from "./x402-funding.js";
1417
1435
  export { executeFundWithMpp, executeFundWithMppCharge, executeFundWithMppSession, buildMppFundRequestEnvelope, parsePaymentAuthChallenge, selectMppChargeChallenge, selectMppSessionChallenge, PaybondMppFundingFailedError, PaybondMppFundingPendingError, type MppFundPollOptions, type ParsedPaymentAuthChallenge, type PaymentAuthChallenge, } from "./mpp-funding.js";
1436
+ export { buildPaybondStripeMetadata, assertNotStripeFundingWebhook, mapStripeToolResultToEvidence, STRIPE_COMMERCE_MAPPER_VERSION, PAYBOND_STRIPE_METADATA_TENANT_ID_KEY, PAYBOND_STRIPE_METADATA_INTENT_ID_KEY, PAYBOND_STRIPE_METADATA_RAIL_KEY, type BuildPaybondStripeMetadataParams, type CostAndCompletionEvidence, type MapStripeToolResultToEvidenceOptions, type PaybondStripeMetadata, type PaybondStripeSettlementRail, type StripeChargeVendorEvidence, type StripeCommerceEvidencePreset, type StripeToolResultInput, } from "./stripe-commerce/index.js";
1437
+ export { PAYBOND_UCP_AGENT_PROFILE_URL, PAYBOND_SHOPIFY_UCP_VERSION, SHOPIFY_COMMERCE_MAPPER_VERSION, assertNotShopifyFundingWebhook, createCheckoutWithBinding, createGuardedShopifyCheckoutHandler, getOrder, instrumentShopifyCheckout, mapShopifyToolResultToEvidence, mergeBindingIntoCheckoutPayload, toUcpCheckoutLineItems, type CreateCheckoutWithBindingParams, type CreateGuardedShopifyCheckoutHandlerOptions, type GetShopifyOrderParams, type InstrumentShopifyCheckoutInput, type MapShopifyToolResultToEvidenceOptions, type ShopifyCheckoutCreatePayload, type ShopifyCheckoutExecuteInput, type ShopifyCheckoutExecutor, type ShopifyCheckoutLineItemInput, type ShopifyCheckoutSessionBinding, type ShopifyCheckoutToolArgs, type ShopifyCheckoutToolResult, type ShopifyCommerceEvidencePreset, type ShopifyOrderSummary, type ShopifyUcpCheckoutLineItem, type ShopifyUcpFetch, } from "./shopify/index.js";
1438
+ export { normalizeCommerceBinding, encodeCommerceBindingToStripeMetadata, decodeCommerceBindingFromStripeMetadata, encodeCommerceBindingToShopifyNoteAttributes, decodeCommerceBindingFromShopifyNoteAttributes, PAYBOND_COMMERCE_BINDING_TENANT_ID_KEY, PAYBOND_COMMERCE_BINDING_INTENT_ID_KEY, type CommerceBinding, type ShopifyNoteAttribute, type StripeMetadata, } from "./commerce-binding.js";
1418
1439
  export { validateCompletionEvidence, type CompletionEvidenceValidationReport, } from "./completion-validate-evidence.js";
1419
1440
  export { completionSchemaDigestHex, computeVendorContractDigests, verifyVendorContract, verifyCatalogVendorContracts, type VendorContract, type VendorContractDigests, } from "./completion-contract-digest.js";
1420
1441
  export { contractSnapshotForPreset, mapVendorEvidenceToCanonical, resolveCompletionPreset, } from "./completion-resolve.js";
@@ -1423,5 +1444,9 @@ export { PaybondAudit, PaybondAuditExports, GatewayAuditExportsClient, parseAudi
1423
1444
  export { PaybondPolicy, composePolicyLayers, composeBundledPresetDefault, domain, guardrails, paybondPolicyPresets, resolveComposedPresetDocument, type LayeredPolicyPresetId, type PaybondPolicyPresets, type PolicyGuardrailLayer, type PolicyPresetId, type VerticalPolicyOptions, } from "./policy/index.js";
1424
1445
  export { getSolutionSmokeDefaults, isKnownSolutionId, listSolutionIds, loadSolutionManifest, paybondSolutionPresets, type PaybondSolutionBundle, type PaybondSolutionPresets, type SolutionId, type SolutionManifest, type SolutionSmokeDefaults, } from "./solutions/index.js";
1425
1446
  export { appendDirectHarborPaymentAuthorization, formatPaymentAuthorizationValue, PAYBOND_PAYMENT_AUTHORIZATION_HEADER, PAYMENT_TRANSPORT_RESPONSE_HEADERS, paymentAuthorizationGatewayHeader, readFundPaymentTransportHeaders, type FundPaymentTransportHeaders, } from "./payment-transport.js";
1426
- export { AGENT_RECEIPT_KIND_V1, AGENT_RECEIPT_SCHEMA_VERSION, AGENT_RECEIPT_SCOPE_ACTION, AGENT_RECEIPT_SCOPE_INTENT_TERMINAL, AGENT_RECEIPT_SIGNING_ALGORITHM_ED25519, AGENT_RECEIPT_VERSION_V1, AGENT_RECEIPT_WELL_KNOWN_PATH, actionReceiptId, canonicalAgentReceiptBytes, configHashSha256Hex, promptHashSha256Hex, valueDigestSha256Hex, verifyAgentReceiptV1, type AgentReceiptAgentV1, type AgentReceiptAuthorizationV1, type AgentReceiptEvidenceV1, type AgentReceiptExecutionV1, type AgentReceiptExternalAttestationV1, type AgentReceiptMerchantV1, type AgentReceiptOutcomeV1, type AgentReceiptPaymentV1, type AgentReceiptPolicyV1, type AgentReceiptReferencesV1, type AgentReceiptV1, type ConfigHashInput, } from "./agent-receipt.js";
1427
- export { AGENT_RECEIPT_EXTERNAL_SOURCE_SEP2828, AGENT_RECEIPT_EXTERNAL_SOURCE_X402, partnerRecordDigestSha256Hex, resolveExternalAttestations, sep2828RecordsToExternalAttestations, x402ReceiptToExternalAttestations, type PaybondExternalAttestationInput, } from "./agent-receipt-external-attestations.js";
1447
+ export { AGENT_RECEIPT_KIND_V1, AGENT_RECEIPT_SCHEMA_VERSION, AGENT_RECEIPT_SCOPE_ACTION, AGENT_RECEIPT_SCOPE_INTENT_TERMINAL, AGENT_RECEIPT_SIGNING_ALGORITHM_ED25519, AGENT_RECEIPT_VERSION_V1, AGENT_RECEIPT_SIGNING_KEYS_WELL_KNOWN_PATH, AGENT_RECEIPT_WELL_KNOWN_PATH, PAYBOND_AGENT_RECEIPT_ATTESTATIONS_HEADER, PAYBOND_AGENT_RECEIPT_SOURCE_RUN_HEADER, actionReceiptId, attachOperatorAttestationV1, canonicalAgentReceiptBytes, configHashSha256Hex, promptHashSha256Hex, valueDigestSha256Hex, verifyAgentReceiptV1, verifyAgentReceiptV1FromJSON, type AgentReceiptAgentV1, type AgentReceiptAuthorizationV1, type AgentReceiptEvidenceV1, type AgentReceiptExecutionV1, type AgentReceiptExternalAttestationV1, type AgentReceiptMerchantV1, type AgentReceiptOperatorAttestationV1, type AgentReceiptOutcomeV1, type AgentReceiptPaymentV1, type AgentReceiptPolicyV1, type AgentReceiptReferencesV1, type AgentReceiptV1, type ConfigHashInput, type VerifyAgentReceiptV1Options, } from "./agent-receipt.js";
1448
+ export { FORBIDDEN_AGENT_RECEIPT_FIELDS, parseAgentReceiptJSON, validateAgentReceiptJSON, } from "./agent-receipt-prevalidate.js";
1449
+ export { AGENT_RECEIPT_EXTERNAL_SOURCE_AP2, AGENT_RECEIPT_EXTERNAL_SOURCE_SEP2828, AGENT_RECEIPT_EXTERNAL_SOURCE_X402, partnerRecordDigestSha256Hex, protocolAuthorizationReceiptToExternalAttestations, protocolSettlementReceiptToExternalAttestations, resolveExternalAttestations, sep2828RecordsToExternalAttestations, signedMandateToExternalAttestations, x402ReceiptToExternalAttestations, type PaybondExternalAttestationInput, } from "./agent-receipt-external-attestations.js";
1450
+ export { AGENT_RECEIPT_PDF_EXPORT_DERIVED_VIEW_LABEL, AGENT_RECEIPT_PDF_EXPORT_MANIFEST_KIND, AGENT_RECEIPT_PDF_EXPORT_MANIFEST_SCHEMA_VERSION, FORBIDDEN_PDF_EXPORT_MANIFEST_FIELDS, gateAgentReceiptPDFExport, parseAgentReceiptPDFExportManifestJSON, validateAgentReceiptPDFExportManifestJSON, type AgentReceiptPDFExportFooterStamp, type AgentReceiptPDFExportManifest, type AgentReceiptPDFExportSourceKind, type GateAgentReceiptPDFExportInput, } from "./agent-receipt-pdf-export.js";
1451
+ export { AGENT_AUTHORIZATION_KIND_PRINCIPAL, AGENT_AUTHORIZATION_KIND_TENANT, AGENT_MANDATE_KIND_V1, AGENT_MANDATE_SCHEMA_VERSION, AGENT_MANDATE_SIGNING_ALGORITHM_ED25519_SHA256, CONSTRAINT_REFERENCE_KIND_POLICY, CONSTRAINT_REFERENCE_KIND_PREDICATE, HUMAN_PRESENCE_MODE_HUMAN_NOT_PRESENT, HUMAN_PRESENCE_MODE_HUMAN_PRESENT, agentMandateDigestSha256Hex, canonicalAgentMandateJsonBytes, normalizeAgentMandateV1, signAgentMandateV1, verifySignedAgentMandateV1, } from "./agent-mandate.js";
1452
+ export { PROTOCOL_AUTHORIZATION_RECEIPT_KIND_V1, PROTOCOL_RECEIPT_SCHEMA_VERSION, PROTOCOL_RECEIPT_SIGNING_ALGORITHM_ED25519_SHA256, PROTOCOL_RECEIPT_STATUS_AUTHORIZED, PROTOCOL_RECEIPT_VERSION_V1, PROTOCOL_SETTLEMENT_RECEIPT_KIND_V1, PROTOCOL_SOURCE_ACP, PROTOCOL_SOURCE_AP2, PROTOCOL_SOURCE_UCP, normalizeProtocolAuthorizationReceiptV1, normalizeProtocolSettlementReceiptV1, signProtocolAuthorizationReceiptV1, signProtocolSettlementReceiptV1, verifyProtocolAuthorizationReceiptV1, verifyProtocolSettlementReceiptV1, } from "./protocol-receipt.js";