@paybond/kit 0.12.4 → 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 (114) 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 +182 -10
  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/glama.json +6 -0
  69. package/package.json +15 -5
  70. package/templates/manifest.json +57 -12
  71. package/templates/openai-shopping-agent/package-lock.json +379 -14
  72. package/templates/openai-shopping-agent/package.json +2 -2
  73. package/templates/paybond-aws-operator/package-lock.json +376 -11
  74. package/templates/paybond-aws-operator/package.json +2 -2
  75. package/templates/paybond-claude-agents-demo/package-lock.json +379 -14
  76. package/templates/paybond-claude-agents-demo/package.json +2 -2
  77. package/templates/paybond-cloudflare-shopping-agent/.env.example +3 -0
  78. package/templates/paybond-cloudflare-shopping-agent/.github/workflows/smoke.yml +20 -0
  79. package/templates/paybond-cloudflare-shopping-agent/LICENSE +201 -0
  80. package/templates/paybond-cloudflare-shopping-agent/README.md +29 -0
  81. package/templates/paybond-cloudflare-shopping-agent/package-lock.json +2671 -0
  82. package/templates/paybond-cloudflare-shopping-agent/package.json +23 -0
  83. package/templates/paybond-cloudflare-shopping-agent/paybond.policy.yaml +22 -0
  84. package/templates/paybond-cloudflare-shopping-agent/src/agent.ts +109 -0
  85. package/templates/paybond-cloudflare-shopping-agent/src/index.ts +22 -0
  86. package/templates/paybond-cloudflare-shopping-agent/src/paybond.config.ts +51 -0
  87. package/templates/paybond-cloudflare-shopping-agent/tsconfig.json +13 -0
  88. package/templates/paybond-crewai-procurement-agent/.env.example +3 -0
  89. package/templates/paybond-crewai-procurement-agent/.github/workflows/smoke.yml +19 -0
  90. package/templates/paybond-crewai-procurement-agent/LICENSE +201 -0
  91. package/templates/paybond-crewai-procurement-agent/README.md +73 -0
  92. package/templates/paybond-crewai-procurement-agent/app.py +79 -0
  93. package/templates/paybond-crewai-procurement-agent/crew.py +117 -0
  94. package/templates/paybond-crewai-procurement-agent/package.json +6 -0
  95. package/templates/paybond-crewai-procurement-agent/paybond.policy.yaml +28 -0
  96. package/templates/paybond-crewai-procurement-agent/paybond_config.py +45 -0
  97. package/templates/paybond-crewai-procurement-agent/requirements.txt +2 -0
  98. package/templates/paybond-invoice-agent/requirements.txt +1 -1
  99. package/templates/paybond-mastra-travel-agent/package-lock.json +379 -14
  100. package/templates/paybond-mastra-travel-agent/package.json +2 -2
  101. package/templates/paybond-mcp-coding-agent/package-lock.json +376 -11
  102. package/templates/paybond-mcp-coding-agent/package.json +2 -2
  103. package/templates/paybond-openai-agents-demo/package-lock.json +379 -14
  104. package/templates/paybond-openai-agents-demo/package.json +2 -2
  105. package/templates/paybond-procurement-agent/package-lock.json +376 -11
  106. package/templates/paybond-procurement-agent/package.json +2 -2
  107. package/templates/paybond-shopify-shopping-agent/package-lock.json +376 -11
  108. package/templates/paybond-shopify-shopping-agent/package.json +2 -2
  109. package/templates/paybond-stripe-agent-demo/package-lock.json +376 -11
  110. package/templates/paybond-stripe-agent-demo/package.json +2 -2
  111. package/templates/paybond-travel-agent/package-lock.json +376 -11
  112. package/templates/paybond-travel-agent/package.json +2 -2
  113. package/templates/paybond-vercel-shopping-agent/package-lock.json +376 -11
  114. package/templates/paybond-vercel-shopping-agent/package.json +2 -2
@@ -37,25 +37,25 @@ export declare function createGuardedShopifyCheckoutHandler(options: CreateGuard
37
37
  * Returns the standard {@link PaybondInstrumentRuntime} surface from `paybond.instrument()`.
38
38
  */
39
39
  export declare function instrumentShopifyCheckout(paybond: Paybond, input: InstrumentShopifyCheckoutInput): Promise<{
40
- bindingRef: ShopifyCheckoutSessionBinding;
41
40
  tools: {
42
41
  "commerce.checkout": (args: ShopifyCheckoutToolArgs) => Promise<ShopifyCheckoutToolResult>;
43
42
  };
43
+ run: import("../index.js").PaybondAgentRun;
44
44
  policy: import("../index.js").PaybondPolicy;
45
+ hooks: import("../index.js").PaybondAgentHooks;
45
46
  binding: Extract<import("../index.js").PaybondInstrumentBinding, {
46
- phase: "deferred";
47
- } | {
48
- phase: "lazy";
47
+ phase: "bound";
49
48
  }>;
50
- } | {
51
49
  bindingRef: ShopifyCheckoutSessionBinding;
50
+ } | {
52
51
  tools: {
53
52
  "commerce.checkout": (args: ShopifyCheckoutToolArgs) => Promise<ShopifyCheckoutToolResult>;
54
53
  };
55
- run: import("../index.js").PaybondAgentRun;
56
54
  policy: import("../index.js").PaybondPolicy;
57
- hooks: import("../index.js").PaybondAgentHooks;
58
55
  binding: Extract<import("../index.js").PaybondInstrumentBinding, {
59
- phase: "bound";
56
+ phase: "deferred";
57
+ } | {
58
+ phase: "lazy";
60
59
  }>;
60
+ bindingRef: ShopifyCheckoutSessionBinding;
61
61
  }>;
@@ -1,5 +1,5 @@
1
1
  import type { PolicyPresetId } from "./policy/presets.js";
2
- export type TemplateId = "travel-agent" | "mastra-travel-agent" | "vercel-shopping-agent" | "openai-agents-demo" | "openai-shopping-agent" | "claude-agents-demo" | "mcp-coding-agent" | "procurement-agent" | "invoice-agent" | "aws-operator" | "stripe-agent-demo" | "shopify-shopping-agent";
2
+ export type TemplateId = "travel-agent" | "mastra-travel-agent" | "vercel-shopping-agent" | "cloudflare-shopping-agent" | "openai-agents-demo" | "openai-shopping-agent" | "claude-agents-demo" | "mcp-coding-agent" | "procurement-agent" | "invoice-agent" | "crewai-procurement-agent" | "aws-operator" | "stripe-agent-demo" | "shopify-shopping-agent";
3
3
  export type TemplateManifestEntry = {
4
4
  id: TemplateId;
5
5
  repo: string;
@@ -16,7 +16,7 @@ type TemplateManifest = {
16
16
  version: number;
17
17
  templates: TemplateManifestEntry[];
18
18
  };
19
- export type TemplateFramework = "generic" | "langgraph" | "vercel-ai" | "openai-agents" | "claude-agents" | "mcp" | "mastra";
19
+ export type TemplateFramework = "generic" | "langgraph" | "vercel-ai" | "openai-agents" | "claude-agents" | "mcp" | "mastra" | "cloudflare-agents" | "crewai";
20
20
  /** Normalize CLI `--framework` values to bundled template framework ids. */
21
21
  export declare function normalizeTemplateFramework(raw: string): TemplateFramework;
22
22
  /** Load the bundled starter-template manifest shipped with @paybond/kit. */
@@ -13,6 +13,8 @@ const TEMPLATE_FRAMEWORK_ALIASES = {
13
13
  "claude-agents": "claude-agents",
14
14
  mcp: "mcp",
15
15
  mastra: "mastra",
16
+ crewai: "crewai",
17
+ "cloudflare-agents": "cloudflare-agents",
16
18
  };
17
19
  /** Normalize CLI `--framework` values to bundled template framework ids. */
18
20
  export function normalizeTemplateFramework(raw) {
@@ -32,6 +34,8 @@ const TEMPLATE_ALIASES = {
32
34
  "paybond-mastra-travel-agent": "mastra-travel-agent",
33
35
  "vercel-shopping-agent": "vercel-shopping-agent",
34
36
  "paybond-vercel-shopping-agent": "vercel-shopping-agent",
37
+ "cloudflare-shopping-agent": "cloudflare-shopping-agent",
38
+ "paybond-cloudflare-shopping-agent": "cloudflare-shopping-agent",
35
39
  "openai-agents-demo": "openai-agents-demo",
36
40
  "paybond-openai-agents-demo": "openai-agents-demo",
37
41
  "openai-shopping-agent": "openai-shopping-agent",
@@ -43,6 +47,8 @@ const TEMPLATE_ALIASES = {
43
47
  "paybond-procurement-agent": "procurement-agent",
44
48
  "invoice-agent": "invoice-agent",
45
49
  "paybond-invoice-agent": "invoice-agent",
50
+ "crewai-procurement-agent": "crewai-procurement-agent",
51
+ "paybond-crewai-procurement-agent": "crewai-procurement-agent",
46
52
  "aws-operator": "aws-operator",
47
53
  "paybond-aws-operator": "aws-operator",
48
54
  "stripe-agent-demo": "stripe-agent-demo",
@@ -197,16 +203,18 @@ export function templateInitUsage() {
197
203
  " paybond init [--solution ...] [--framework ...] (wizard scaffold)",
198
204
  "",
199
205
  "Templates:",
200
- " travel-agent, mastra-travel-agent, vercel-shopping-agent, openai-agents-demo, openai-shopping-agent,",
201
- " claude-agents-demo, mcp-coding-agent, procurement-agent, invoice-agent, aws-operator, stripe-agent-demo,",
202
- " shopify-shopping-agent",
206
+ " travel-agent, mastra-travel-agent, vercel-shopping-agent, cloudflare-shopping-agent, openai-agents-demo, openai-shopping-agent,",
207
+ " claude-agents-demo, mcp-coding-agent, procurement-agent, invoice-agent, crewai-procurement-agent, aws-operator,",
208
+ " stripe-agent-demo, shopify-shopping-agent",
203
209
  "",
204
- "Frameworks (with --template): generic|langgraph|vercel-ai|openai|openai-agents|claude-agents|mcp|mastra",
210
+ "Frameworks (with --template): generic|langgraph|vercel-ai|openai|openai-agents|claude-agents|mcp|mastra|crewai",
205
211
  "",
206
212
  "Examples:",
207
213
  " paybond init --template travel-agent --framework langgraph",
208
214
  " paybond init --template mastra-travel-agent --framework mastra",
215
+ " paybond init --template crewai-procurement-agent --framework crewai",
209
216
  " paybond init --template paybond-vercel-shopping-agent --force",
217
+ " paybond init --template paybond-cloudflare-shopping-agent --force",
210
218
  " paybond init --solution travel --framework langgraph --non-interactive",
211
219
  ].join("\n");
212
220
  }
@@ -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/glama.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://glama.ai/mcp/schemas/server.json",
3
+ "maintainers": [
4
+ "nonameuserd"
5
+ ]
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paybond/kit",
3
- "version": "0.12.4",
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"
@@ -67,7 +71,8 @@
67
71
  "templates",
68
72
  "dev",
69
73
  "README.md",
70
- "LICENSE"
74
+ "LICENSE",
75
+ "glama.json"
71
76
  ],
72
77
  "engines": {
73
78
  "node": ">=22"
@@ -130,11 +135,12 @@
130
135
  },
131
136
  "peerDependencies": {
132
137
  "@anthropic-ai/claude-agent-sdk": ">=0.2.100",
138
+ "@google/adk": ">=1.0.0",
133
139
  "@langchain/core": ">=0.3.0",
134
140
  "@langchain/langgraph": ">=0.2.50",
135
141
  "@mastra/core": ">=1.0.0",
136
- "agents": ">=0.10.0",
137
142
  "@openai/agents": ">=0.12.0",
143
+ "agents": ">=0.10.0",
138
144
  "ai": ">=4.0.0",
139
145
  "zod": "^3.25.32 || ^4.2.0"
140
146
  },
@@ -157,6 +163,9 @@
157
163
  "@openai/agents": {
158
164
  "optional": true
159
165
  },
166
+ "@google/adk": {
167
+ "optional": true
168
+ },
160
169
  "ai": {
161
170
  "optional": true
162
171
  },
@@ -175,15 +184,16 @@
175
184
  },
176
185
  "devDependencies": {
177
186
  "@anthropic-ai/claude-agent-sdk": "^0.3.197",
187
+ "@google/adk": "^1.3.0",
178
188
  "@langchain/core": "^1.2.1",
179
189
  "@langchain/langgraph": "^1.4.7",
180
190
  "@langchain/langgraph-sdk": "^1.9.25",
181
191
  "@mastra/core": "^1.49.0",
182
- "agents": "^0.17.3",
183
192
  "@openai/agents": "^0.12.0",
184
193
  "@types/node": "^22.10.0",
194
+ "agents": "^0.17.3",
185
195
  "ai": "^7.0.4",
186
- "typescript": "^5.7.2",
196
+ "typescript": "^7.0.2",
187
197
  "vitest": "^4.1.8",
188
198
  "zod": "^4.4.3"
189
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
  }