@paybond/kit 0.12.5 → 0.12.6

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 (113) hide show
  1. package/dist/agent/facade.d.ts +2 -0
  2. package/dist/agent/facade.js +10 -2
  3. package/dist/agent/guarded-agent.d.ts +3 -1
  4. package/dist/agent/guarded-agent.js +13 -2
  5. package/dist/agent/index.d.ts +2 -2
  6. package/dist/agent/index.js +1 -1
  7. package/dist/agent/instrument.d.ts +3 -0
  8. package/dist/agent/instrument.js +21 -10
  9. package/dist/agent/interceptor.js +19 -0
  10. package/dist/agent/types.d.ts +14 -0
  11. package/dist/agent-receipt-acta.d.ts +58 -0
  12. package/dist/agent-receipt-acta.js +140 -0
  13. package/dist/agent-receipt-inclusion.d.ts +40 -0
  14. package/dist/agent-receipt-inclusion.js +209 -0
  15. package/dist/agent-receipt-owner-disclosure.d.ts +71 -0
  16. package/dist/agent-receipt-owner-disclosure.js +277 -0
  17. package/dist/agent-receipt-pef.d.ts +69 -0
  18. package/dist/agent-receipt-pef.js +121 -0
  19. package/dist/agent-receipt-scitt.d.ts +50 -0
  20. package/dist/agent-receipt-scitt.js +382 -0
  21. package/dist/agent-receipt.d.ts +55 -0
  22. package/dist/agent-receipt.js +297 -4
  23. package/dist/claude-agents/config.d.ts +21 -2
  24. package/dist/claude-agents/config.js +37 -0
  25. package/dist/claude-agents/index.d.ts +1 -1
  26. package/dist/claude-agents/index.js +1 -1
  27. package/dist/cli/agent/demo-loaders.d.ts +1 -0
  28. package/dist/cli/agent/demo-loaders.js +12 -0
  29. package/dist/cli/command-spec.js +16 -1
  30. package/dist/cli/commands/agent.d.ts +4 -0
  31. package/dist/cli/commands/agent.js +107 -1
  32. package/dist/cli/help.js +4 -1
  33. package/dist/cloudflare-agents/config.d.ts +1 -1
  34. package/dist/cloudflare-agents/config.js +2 -2
  35. package/dist/google-adk/config.d.ts +36 -0
  36. package/dist/google-adk/config.js +172 -0
  37. package/dist/google-adk/index.d.ts +2 -0
  38. package/dist/google-adk/index.js +2 -0
  39. package/dist/google-adk/sandbox-demo.d.ts +32 -0
  40. package/dist/google-adk/sandbox-demo.js +104 -0
  41. package/dist/index.d.ts +10 -2
  42. package/dist/index.js +11 -3
  43. package/dist/init.js +29 -0
  44. package/dist/mcp-receipt-resource.js +3 -1
  45. package/dist/mcp-server.js +122 -2
  46. package/dist/policy/adapter-options.d.ts +9 -0
  47. package/dist/policy/adapter-options.js +11 -0
  48. package/dist/policy/index.d.ts +1 -0
  49. package/dist/policy/index.js +1 -0
  50. package/dist/policy/load.d.ts +7 -0
  51. package/dist/policy/load.js +13 -0
  52. package/dist/policy/merge.js +26 -0
  53. package/dist/policy/schema.d.ts +20 -0
  54. package/dist/policy/schema.js +34 -2
  55. package/dist/shopify/instrument.d.ts +8 -8
  56. package/dist/template-init.d.ts +2 -2
  57. package/dist/template-init.js +12 -4
  58. package/dist/vercel-ai/config.d.ts +2 -1
  59. package/dist/vercel-ai/config.js +2 -2
  60. package/dist/vercel-ai/index.d.ts +2 -1
  61. package/dist/vercel-ai/index.js +2 -1
  62. package/dist/vercel-ai/provider-executed.d.ts +7 -0
  63. package/dist/vercel-ai/provider-executed.js +20 -0
  64. package/dist/vercel-ai/tool-approval.d.ts +5 -0
  65. package/dist/vercel-ai/tool-approval.js +8 -1
  66. package/dist/vercel-ai/wrap-tools.d.ts +8 -1
  67. package/dist/vercel-ai/wrap-tools.js +17 -4
  68. package/package.json +13 -4
  69. package/templates/manifest.json +57 -12
  70. package/templates/openai-shopping-agent/package-lock.json +379 -14
  71. package/templates/openai-shopping-agent/package.json +2 -2
  72. package/templates/paybond-aws-operator/package-lock.json +376 -11
  73. package/templates/paybond-aws-operator/package.json +2 -2
  74. package/templates/paybond-claude-agents-demo/package-lock.json +379 -14
  75. package/templates/paybond-claude-agents-demo/package.json +2 -2
  76. package/templates/paybond-cloudflare-shopping-agent/.env.example +3 -0
  77. package/templates/paybond-cloudflare-shopping-agent/.github/workflows/smoke.yml +20 -0
  78. package/templates/paybond-cloudflare-shopping-agent/LICENSE +201 -0
  79. package/templates/paybond-cloudflare-shopping-agent/README.md +29 -0
  80. package/templates/paybond-cloudflare-shopping-agent/package-lock.json +2671 -0
  81. package/templates/paybond-cloudflare-shopping-agent/package.json +23 -0
  82. package/templates/paybond-cloudflare-shopping-agent/paybond.policy.yaml +22 -0
  83. package/templates/paybond-cloudflare-shopping-agent/src/agent.ts +109 -0
  84. package/templates/paybond-cloudflare-shopping-agent/src/index.ts +22 -0
  85. package/templates/paybond-cloudflare-shopping-agent/src/paybond.config.ts +51 -0
  86. package/templates/paybond-cloudflare-shopping-agent/tsconfig.json +13 -0
  87. package/templates/paybond-crewai-procurement-agent/.env.example +3 -0
  88. package/templates/paybond-crewai-procurement-agent/.github/workflows/smoke.yml +19 -0
  89. package/templates/paybond-crewai-procurement-agent/LICENSE +201 -0
  90. package/templates/paybond-crewai-procurement-agent/README.md +73 -0
  91. package/templates/paybond-crewai-procurement-agent/app.py +79 -0
  92. package/templates/paybond-crewai-procurement-agent/crew.py +117 -0
  93. package/templates/paybond-crewai-procurement-agent/package.json +6 -0
  94. package/templates/paybond-crewai-procurement-agent/paybond.policy.yaml +28 -0
  95. package/templates/paybond-crewai-procurement-agent/paybond_config.py +45 -0
  96. package/templates/paybond-crewai-procurement-agent/requirements.txt +2 -0
  97. package/templates/paybond-invoice-agent/requirements.txt +1 -1
  98. package/templates/paybond-mastra-travel-agent/package-lock.json +379 -14
  99. package/templates/paybond-mastra-travel-agent/package.json +2 -2
  100. package/templates/paybond-mcp-coding-agent/package-lock.json +376 -11
  101. package/templates/paybond-mcp-coding-agent/package.json +2 -2
  102. package/templates/paybond-openai-agents-demo/package-lock.json +379 -14
  103. package/templates/paybond-openai-agents-demo/package.json +2 -2
  104. package/templates/paybond-procurement-agent/package-lock.json +376 -11
  105. package/templates/paybond-procurement-agent/package.json +2 -2
  106. package/templates/paybond-shopify-shopping-agent/package-lock.json +376 -11
  107. package/templates/paybond-shopify-shopping-agent/package.json +2 -2
  108. package/templates/paybond-stripe-agent-demo/package-lock.json +376 -11
  109. package/templates/paybond-stripe-agent-demo/package.json +2 -2
  110. package/templates/paybond-travel-agent/package-lock.json +376 -11
  111. package/templates/paybond-travel-agent/package.json +2 -2
  112. package/templates/paybond-vercel-shopping-agent/package-lock.json +376 -11
  113. package/templates/paybond-vercel-shopping-agent/package.json +2 -2
@@ -1,12 +1,13 @@
1
1
  import type { ToolSet } from "ai";
2
2
  import type { PaybondAgentRun } from "../agent/run.js";
3
3
  import { paybondVercelToolApproval, type PaybondVercelToolApprovalOptions } from "./tool-approval.js";
4
+ import { type PaybondVercelWrapToolsOptions } from "./wrap-tools.js";
4
5
  /** Vercel AI SDK runner config: guarded tools plus centralized `toolApproval`. */
5
6
  export type PaybondVercelAgentConfig<TOOLS extends ToolSet = ToolSet> = {
6
7
  tools: TOOLS;
7
8
  toolApproval: ReturnType<typeof paybondVercelToolApproval<TOOLS>>;
8
9
  };
9
- export type PaybondVercelAgentConfigOptions = PaybondVercelToolApprovalOptions;
10
+ export type PaybondVercelAgentConfigOptions = PaybondVercelToolApprovalOptions & PaybondVercelWrapToolsOptions;
10
11
  /**
11
12
  * Framework runner helper for Vercel AI SDK `generateText` / `streamText`.
12
13
  *
@@ -1,5 +1,5 @@
1
1
  import { paybondVercelToolApproval, } from "./tool-approval.js";
2
- import { paybondVercelWrapTools } from "./wrap-tools.js";
2
+ import { paybondVercelWrapTools, } from "./wrap-tools.js";
3
3
  /**
4
4
  * Framework runner helper for Vercel AI SDK `generateText` / `streamText`.
5
5
  *
@@ -7,7 +7,7 @@ import { paybondVercelWrapTools } from "./wrap-tools.js";
7
7
  */
8
8
  export function createPaybondVercelAgentConfig(run, tools, options) {
9
9
  return {
10
- tools: paybondVercelWrapTools(run, tools),
10
+ tools: paybondVercelWrapTools(run, tools, options),
11
11
  toolApproval: paybondVercelToolApproval(run, options),
12
12
  };
13
13
  }
@@ -1,4 +1,5 @@
1
1
  export { createPaybondVercelAgentConfig, type PaybondVercelAgentConfig, type PaybondVercelAgentConfigOptions, } from "./config.js";
2
2
  export { mapPaybondDecisionToVercelToolApproval, paybondVercelToolApproval, type PaybondVercelToolApprovalOptions, } from "./tool-approval.js";
3
- export { paybondVercelWrapTools } from "./wrap-tools.js";
3
+ export { isProviderExecutedVercelTool, paybondProviderExecutedToolDenialReason, resolveVercelToolFromSet, } from "./provider-executed.js";
4
+ export { paybondVercelWrapTools, type PaybondVercelWrapToolsOptions, } from "./wrap-tools.js";
4
5
  export { runVercelAiSandboxDemo, type RunVercelAiSandboxDemoInput, type RunVercelAiSandboxDemoResult, } from "./sandbox-demo.js";
@@ -1,4 +1,5 @@
1
1
  export { createPaybondVercelAgentConfig, } from "./config.js";
2
2
  export { mapPaybondDecisionToVercelToolApproval, paybondVercelToolApproval, } from "./tool-approval.js";
3
- export { paybondVercelWrapTools } from "./wrap-tools.js";
3
+ export { isProviderExecutedVercelTool, paybondProviderExecutedToolDenialReason, resolveVercelToolFromSet, } from "./provider-executed.js";
4
+ export { paybondVercelWrapTools, } from "./wrap-tools.js";
4
5
  export { runVercelAiSandboxDemo, } from "./sandbox-demo.js";
@@ -0,0 +1,7 @@
1
+ import type { Tool, ToolSet } from "ai";
2
+ /** Returns true when the AI SDK tool is executed on the model provider (not in your process). */
3
+ export declare function isProviderExecutedVercelTool(tool: Tool): boolean;
4
+ /** User-facing denial reason for fail-closed provider-executed tool policy. */
5
+ export declare function paybondProviderExecutedToolDenialReason(): string;
6
+ /** Resolve a tool definition from a Vercel AI SDK toolApproval `tools` map. */
7
+ export declare function resolveVercelToolFromSet<TOOLS extends ToolSet>(tools: TOOLS | undefined, toolName: string): Tool | undefined;
@@ -0,0 +1,20 @@
1
+ const PROVIDER_EXECUTED_DENIAL_REASON = "Paybond governs only locally executed registry tools; provider-executed tools bypass Harbor verify and auto-evidence. Remove the tool, execute it locally, or disable denyProviderExecutedTools.";
2
+ /** Returns true when the AI SDK tool is executed on the model provider (not in your process). */
3
+ export function isProviderExecutedVercelTool(tool) {
4
+ if (typeof tool !== "object" || tool === null) {
5
+ return false;
6
+ }
7
+ return tool.isProviderExecuted === true;
8
+ }
9
+ /** User-facing denial reason for fail-closed provider-executed tool policy. */
10
+ export function paybondProviderExecutedToolDenialReason() {
11
+ return PROVIDER_EXECUTED_DENIAL_REASON;
12
+ }
13
+ /** Resolve a tool definition from a Vercel AI SDK toolApproval `tools` map. */
14
+ export function resolveVercelToolFromSet(tools, toolName) {
15
+ if (!tools || typeof tools !== "object") {
16
+ return undefined;
17
+ }
18
+ const record = tools;
19
+ return record[toolName];
20
+ }
@@ -6,6 +6,11 @@ export declare function mapPaybondDecisionToVercelToolApproval(decision: Paybond
6
6
  export type PaybondVercelToolApprovalOptions = {
7
7
  /** Override Paybond → Vercel approval status mapping (for example custom HITL labels). */
8
8
  mapDecision?: (decision: PaybondToolInputGuardDecision) => ToolApprovalStatus;
9
+ /**
10
+ * Fail closed on provider-executed tools (`isProviderExecuted: true`).
11
+ * When enabled, those tool calls are denied at approval time.
12
+ */
13
+ denyProviderExecutedTools?: boolean;
9
14
  };
10
15
  /**
11
16
  * Centralized `toolApproval` bridge for Vercel AI SDK `generateText` / `streamText`.
@@ -1,4 +1,5 @@
1
1
  import { createToolInputGuardAdapter } from "../agent/adapter.js";
2
+ import { isProviderExecutedVercelTool, paybondProviderExecutedToolDenialReason, resolveVercelToolFromSet, } from "./provider-executed.js";
2
3
  /** Map a framework-neutral Paybond decision to Vercel AI SDK tool approval status. */
3
4
  export function mapPaybondDecisionToVercelToolApproval(decision) {
4
5
  if (decision.kind === "allow") {
@@ -18,9 +19,15 @@ export function mapPaybondDecisionToVercelToolApproval(decision) {
18
19
  export function paybondVercelToolApproval(run, options) {
19
20
  const guard = createToolInputGuardAdapter(run);
20
21
  const mapDecision = options?.mapDecision ?? mapPaybondDecisionToVercelToolApproval;
21
- const approve = async ({ toolCall, }) => {
22
+ const approve = async ({ toolCall, tools, }) => {
22
23
  const toolName = toolCall.toolName;
23
24
  const toolCallId = toolCall.toolCallId;
25
+ if (options?.denyProviderExecutedTools === true) {
26
+ const toolDef = resolveVercelToolFromSet(tools, toolName);
27
+ if (toolDef !== undefined && isProviderExecutedVercelTool(toolDef)) {
28
+ return { type: "denied", reason: paybondProviderExecutedToolDenialReason() };
29
+ }
30
+ }
24
31
  if (!run.registry.isSideEffecting(toolName)) {
25
32
  const resolution = run.registry.resolveTool(toolName, {
26
33
  allowedTools: run.allowedTools,
@@ -1,9 +1,16 @@
1
1
  import type { ToolSet } from "ai";
2
2
  import type { PaybondAgentRun } from "../agent/run.js";
3
+ export type PaybondVercelWrapToolsOptions = {
4
+ /**
5
+ * Fail closed on provider-executed tools (`isProviderExecuted: true`).
6
+ * When enabled, those tools cannot run — only locally executed registry tools are governed.
7
+ */
8
+ denyProviderExecutedTools?: boolean;
9
+ };
3
10
  /**
4
11
  * Wrap side-effecting Vercel AI SDK tools with Paybond `wrapExecute` so Harbor
5
12
  * verify, spend finalize, and auto-evidence run after successful execution.
6
13
  *
7
14
  * Read-only and provider-executed tools pass through unchanged.
8
15
  */
9
- export declare function paybondVercelWrapTools<TOOLS extends ToolSet>(run: PaybondAgentRun, tools: TOOLS): TOOLS;
16
+ export declare function paybondVercelWrapTools<TOOLS extends ToolSet>(run: PaybondAgentRun, tools: TOOLS, options?: PaybondVercelWrapToolsOptions): TOOLS;
@@ -1,12 +1,20 @@
1
+ import { isProviderExecutedVercelTool, paybondProviderExecutedToolDenialReason, } from "./provider-executed.js";
1
2
  function isClientExecutedTool(tool) {
2
3
  if (typeof tool !== "object" || tool === null) {
3
4
  return false;
4
5
  }
5
- const record = tool;
6
- if (record.isProviderExecuted === true) {
6
+ if (isProviderExecutedVercelTool(tool)) {
7
7
  return false;
8
8
  }
9
- return typeof record.execute === "function";
9
+ return typeof tool.execute === "function";
10
+ }
11
+ function denyProviderExecutedTool(tool, toolName) {
12
+ return {
13
+ ...tool,
14
+ execute: async () => {
15
+ throw new Error(`${paybondProviderExecutedToolDenialReason()} (tool=${toolName})`);
16
+ },
17
+ };
10
18
  }
11
19
  /**
12
20
  * Wrap side-effecting Vercel AI SDK tools with Paybond `wrapExecute` so Harbor
@@ -14,9 +22,14 @@ function isClientExecutedTool(tool) {
14
22
  *
15
23
  * Read-only and provider-executed tools pass through unchanged.
16
24
  */
17
- export function paybondVercelWrapTools(run, tools) {
25
+ export function paybondVercelWrapTools(run, tools, options) {
18
26
  const wrapped = {};
27
+ const denyProviderExecutedTools = options?.denyProviderExecutedTools === true;
19
28
  for (const [toolName, tool] of Object.entries(tools)) {
29
+ if (denyProviderExecutedTools && isProviderExecutedVercelTool(tool)) {
30
+ wrapped[toolName] = denyProviderExecutedTool(tool, toolName);
31
+ continue;
32
+ }
20
33
  if (!isClientExecutedTool(tool) || !run.registry.isSideEffecting(toolName)) {
21
34
  wrapped[toolName] = tool;
22
35
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paybond/kit",
3
- "version": "0.12.5",
3
+ "version": "0.12.6",
4
4
  "mcpName": "io.github.nonameuserd/paybond",
5
5
  "description": "Paybond Kit for TypeScript: agent spend governance for paid tool calls with spend authorization, evidence receipts, refunds, disputes, hosted Gateway sessions, and settlement.",
6
6
  "license": "Apache-2.0",
@@ -30,6 +30,10 @@
30
30
  "types": "./dist/openai-agents/index.d.ts",
31
31
  "import": "./dist/openai-agents/index.js"
32
32
  },
33
+ "./google-adk": {
34
+ "types": "./dist/google-adk/index.d.ts",
35
+ "import": "./dist/google-adk/index.js"
36
+ },
33
37
  "./vercel-ai": {
34
38
  "types": "./dist/vercel-ai/index.d.ts",
35
39
  "import": "./dist/vercel-ai/index.js"
@@ -131,11 +135,12 @@
131
135
  },
132
136
  "peerDependencies": {
133
137
  "@anthropic-ai/claude-agent-sdk": ">=0.2.100",
138
+ "@google/adk": ">=1.0.0",
134
139
  "@langchain/core": ">=0.3.0",
135
140
  "@langchain/langgraph": ">=0.2.50",
136
141
  "@mastra/core": ">=1.0.0",
137
- "agents": ">=0.10.0",
138
142
  "@openai/agents": ">=0.12.0",
143
+ "agents": ">=0.10.0",
139
144
  "ai": ">=4.0.0",
140
145
  "zod": "^3.25.32 || ^4.2.0"
141
146
  },
@@ -158,6 +163,9 @@
158
163
  "@openai/agents": {
159
164
  "optional": true
160
165
  },
166
+ "@google/adk": {
167
+ "optional": true
168
+ },
161
169
  "ai": {
162
170
  "optional": true
163
171
  },
@@ -176,15 +184,16 @@
176
184
  },
177
185
  "devDependencies": {
178
186
  "@anthropic-ai/claude-agent-sdk": "^0.3.197",
187
+ "@google/adk": "^1.3.0",
179
188
  "@langchain/core": "^1.2.1",
180
189
  "@langchain/langgraph": "^1.4.7",
181
190
  "@langchain/langgraph-sdk": "^1.9.25",
182
191
  "@mastra/core": "^1.49.0",
183
- "agents": "^0.17.3",
184
192
  "@openai/agents": "^0.12.0",
185
193
  "@types/node": "^22.10.0",
194
+ "agents": "^0.17.3",
186
195
  "ai": "^7.0.4",
187
- "typescript": "^5.7.2",
196
+ "typescript": "^7.0.2",
188
197
  "vitest": "^4.1.8",
189
198
  "zod": "^4.4.3"
190
199
  }
@@ -16,7 +16,7 @@
16
16
  "cost_cents": 18700
17
17
  },
18
18
  "dependencies": {
19
- "@paybond/kit": "^0.11.11",
19
+ "@paybond/kit": "^0.12.5",
20
20
  "@langchain/core": "^1.2.1",
21
21
  "@langchain/langgraph": "^1.4.7",
22
22
  "zod": "^4.2.0"
@@ -39,13 +39,36 @@
39
39
  "cost_cents": 4500
40
40
  },
41
41
  "dependencies": {
42
- "@paybond/kit": "^0.11.11",
42
+ "@paybond/kit": "^0.12.5",
43
43
  "ai": "^5.0.0",
44
44
  "zod": "^4.2.0"
45
45
  },
46
46
  "demo_import": "@paybond/kit/vercel-ai",
47
47
  "demo_export": "runVercelAiSandboxDemo"
48
48
  },
49
+ {
50
+ "id": "cloudflare-shopping-agent",
51
+ "repo": "paybond-cloudflare-shopping-agent",
52
+ "title": "Shopping checkout agent (Cloudflare Agents)",
53
+ "language": "typescript",
54
+ "framework": "cloudflare-agents",
55
+ "preset": "shopping",
56
+ "primary_operation": "commerce.checkout",
57
+ "requested_spend_cents": 4500,
58
+ "evidence_preset": "cost_and_completion",
59
+ "smoke_result_body": {
60
+ "status": "completed",
61
+ "cost_cents": 4500
62
+ },
63
+ "dependencies": {
64
+ "@paybond/kit": "^0.12.5",
65
+ "agents": "^0.10.0",
66
+ "ai": "^5.0.0",
67
+ "zod": "^4.2.0"
68
+ },
69
+ "demo_import": "@paybond/kit/cloudflare-agents",
70
+ "demo_export": "runCloudflareAgentsSandboxDemo"
71
+ },
49
72
  {
50
73
  "id": "openai-agents-demo",
51
74
  "repo": "paybond-openai-agents-demo",
@@ -61,7 +84,7 @@
61
84
  "cost_cents": 2900
62
85
  },
63
86
  "dependencies": {
64
- "@paybond/kit": "^0.11.11",
87
+ "@paybond/kit": "^0.12.5",
65
88
  "@openai/agents": "^0.4.0",
66
89
  "zod": "^4.2.0"
67
90
  },
@@ -83,7 +106,7 @@
83
106
  "cost_cents": 4500
84
107
  },
85
108
  "dependencies": {
86
- "@paybond/kit": "^0.11.11",
109
+ "@paybond/kit": "^0.12.5",
87
110
  "@openai/agents": "^0.4.0",
88
111
  "zod": "^4.2.0"
89
112
  },
@@ -105,7 +128,7 @@
105
128
  "cost_cents": 18700
106
129
  },
107
130
  "dependencies": {
108
- "@paybond/kit": "^0.11.11",
131
+ "@paybond/kit": "^0.12.5",
109
132
  "@anthropic-ai/claude-agent-sdk": "^0.2.100",
110
133
  "zod": "^4.2.0"
111
134
  },
@@ -127,7 +150,7 @@
127
150
  "cost_cents": 18700
128
151
  },
129
152
  "dependencies": {
130
- "@paybond/kit": "^0.11.11",
153
+ "@paybond/kit": "^0.12.5",
131
154
  "@mastra/core": "^1.49.0",
132
155
  "zod": "^4.2.0"
133
156
  },
@@ -150,7 +173,7 @@
150
173
  "cost_cents": 500
151
174
  },
152
175
  "dependencies": {
153
- "@paybond/kit": "^0.11.11"
176
+ "@paybond/kit": "^0.12.5"
154
177
  },
155
178
  "mcp_tool_policy": "spend-write"
156
179
  },
@@ -170,7 +193,7 @@
170
193
  "cost_cents": 12000
171
194
  },
172
195
  "dependencies": {
173
- "@paybond/kit": "^0.11.11"
196
+ "@paybond/kit": "^0.12.5"
174
197
  },
175
198
  "demo_mode": "generic"
176
199
  },
@@ -189,7 +212,7 @@
189
212
  "cost_cents": 12500
190
213
  },
191
214
  "dependencies": {
192
- "@paybond/kit": "^0.11.11"
215
+ "@paybond/kit": "^0.12.5"
193
216
  },
194
217
  "demo_mode": "generic"
195
218
  },
@@ -210,7 +233,7 @@
210
233
  "status": "succeeded"
211
234
  },
212
235
  "dependencies": {
213
- "@paybond/kit": "^0.12.1"
236
+ "@paybond/kit": "^0.12.5"
214
237
  },
215
238
  "demo_mode": "generic"
216
239
  },
@@ -231,7 +254,7 @@
231
254
  "shop": "paybond-agent-commerce-dev.myshopify.com"
232
255
  },
233
256
  "dependencies": {
234
- "@paybond/kit": "^0.12.1"
257
+ "@paybond/kit": "^0.12.5"
235
258
  },
236
259
  "demo_mode": "generic"
237
260
  },
@@ -250,11 +273,33 @@
250
273
  "cost_cents": 2900
251
274
  },
252
275
  "python_dependencies": {
253
- "paybond-kit": ">=0.11.11",
276
+ "paybond-kit": ">=0.12.5",
254
277
  "langgraph": ">=1.2.0"
255
278
  },
256
279
  "demo_import": "paybond_kit.langgraph_sandbox_demo",
257
280
  "demo_export": "run_langgraph_sandbox_demo"
281
+ },
282
+ {
283
+ "id": "crewai-procurement-agent",
284
+ "repo": "paybond-crewai-procurement-agent",
285
+ "title": "Procurement crew (CrewAI + Paybond spend gates)",
286
+ "language": "python",
287
+ "framework": "crewai",
288
+ "preset": null,
289
+ "policy_file": "paybond.policy.yaml",
290
+ "primary_operation": "procurement.submit_po",
291
+ "requested_spend_cents": 12000,
292
+ "evidence_preset": "cost_and_completion",
293
+ "smoke_result_body": {
294
+ "status": "completed",
295
+ "cost_cents": 12000
296
+ },
297
+ "python_dependencies": {
298
+ "paybond-kit[crewai]": ">=0.12.5",
299
+ "crewai": ">=0.80.0"
300
+ },
301
+ "demo_import": "paybond_kit.crewai",
302
+ "demo_export": "run_crewai_sandbox_demo"
258
303
  }
259
304
  ]
260
305
  }