@paybond/kit 0.11.2 → 0.11.3

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 (47) hide show
  1. package/dist/agent/facade.d.ts +1 -1
  2. package/dist/agent/facade.js +1 -1
  3. package/dist/agent/guarded-agent.d.ts +1 -1
  4. package/dist/agent/guarded-agent.js +1 -1
  5. package/dist/claude-agents/config.d.ts +2 -2
  6. package/dist/claude-agents/config.js +22 -1
  7. package/dist/cli/commands/agent.js +2 -1
  8. package/dist/langgraph/awrap-tool-call.d.ts +2 -2
  9. package/dist/langgraph/awrap-tool-call.js +40 -3
  10. package/dist/langgraph/tool-node.d.ts +4 -1
  11. package/dist/langgraph/tool-node.js +44 -26
  12. package/dist/mcp-server.js +1 -1
  13. package/dist/openai-agents/index.d.ts +2 -2
  14. package/dist/openai-agents/index.js +23 -1
  15. package/package.json +3 -2
  16. package/policy/presets/aws.yaml +19 -0
  17. package/policy/presets/domain/aws.yaml +15 -0
  18. package/policy/presets/domain/saas.yaml +15 -0
  19. package/policy/presets/domain/shopping.yaml +15 -0
  20. package/policy/presets/domain/travel.yaml +15 -0
  21. package/policy/presets/guardrails/default-aws.yaml +8 -0
  22. package/policy/presets/guardrails/default-saas.yaml +8 -0
  23. package/policy/presets/guardrails/default-shopping.yaml +8 -0
  24. package/policy/presets/guardrails/default-travel.yaml +8 -0
  25. package/policy/presets/read-only.yaml +23 -0
  26. package/policy/presets/saas.yaml +19 -0
  27. package/policy/presets/shopping.yaml +19 -0
  28. package/policy/presets/strict.yaml +16 -0
  29. package/policy/presets/travel.yaml +19 -0
  30. package/templates/manifest.json +9 -9
  31. package/templates/openai-shopping-agent/package-lock.json +4 -4
  32. package/templates/openai-shopping-agent/package.json +1 -1
  33. package/templates/paybond-aws-operator/package-lock.json +4 -4
  34. package/templates/paybond-aws-operator/package.json +1 -1
  35. package/templates/paybond-claude-agents-demo/package-lock.json +4 -4
  36. package/templates/paybond-claude-agents-demo/package.json +1 -1
  37. package/templates/paybond-invoice-agent/requirements.txt +1 -1
  38. package/templates/paybond-mcp-coding-agent/package-lock.json +4 -4
  39. package/templates/paybond-mcp-coding-agent/package.json +1 -1
  40. package/templates/paybond-openai-agents-demo/package-lock.json +4 -4
  41. package/templates/paybond-openai-agents-demo/package.json +1 -1
  42. package/templates/paybond-procurement-agent/package-lock.json +4 -4
  43. package/templates/paybond-procurement-agent/package.json +1 -1
  44. package/templates/paybond-travel-agent/package-lock.json +4 -4
  45. package/templates/paybond-travel-agent/package.json +1 -1
  46. package/templates/paybond-vercel-shopping-agent/package-lock.json +4 -4
  47. package/templates/paybond-vercel-shopping-agent/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import type { ClaudeAgentsConfig } from "../claude-agents/index.js";
1
+ import type { ClaudeAgentsConfig } from "../claude-agents/config.js";
2
2
  import type { PaybondLangGraphHooks } from "../langgraph/config.js";
3
3
  import { createOpenAIAgentsAdapter } from "../openai-agents/index.js";
4
4
  import type { PaybondPolicy } from "../policy/load.js";
@@ -1,4 +1,4 @@
1
- import { createPaybondClaudeAgentsConfig } from "../claude-agents/index.js";
1
+ import { createPaybondClaudeAgentsConfig } from "../claude-agents/config.js";
2
2
  import { createPaybondOpenAIAgentsConfig } from "../openai-agents/index.js";
3
3
  import { isKnownPolicyPresetId, resolvePolicyPresetPath } from "../policy/presets.js";
4
4
  import { createPaybondVercelAgentConfig } from "../vercel-ai/config.js";
@@ -6,7 +6,7 @@ import type { PolicyValidatorOptions } from "../policy/validate.js";
6
6
  import { paybondVercelToolApproval } from "../vercel-ai/tool-approval.js";
7
7
  import { type PaybondLangGraphAwrapToolCall } from "../langgraph/awrap-tool-call.js";
8
8
  import { paybondToolNode } from "../langgraph/tool-node.js";
9
- import { type ClaudeAgentsConfig } from "../claude-agents/index.js";
9
+ import { type ClaudeAgentsConfig } from "../claude-agents/config.js";
10
10
  import type { PaybondToolRegistry } from "./registry.js";
11
11
  import type { PaybondAgentRunHost } from "./run.js";
12
12
  import { PaybondAgentRun } from "./run.js";
@@ -2,7 +2,7 @@ import { createOpenAIAgentsAdapter, createPaybondOpenAIAgentsConfig, } from "../
2
2
  import { PaybondPolicy } from "../policy/load.js";
3
3
  import { createPaybondVercelAgentConfig } from "../vercel-ai/config.js";
4
4
  import { createPaybondLangGraphHooks } from "../langgraph/config.js";
5
- import { createPaybondClaudeAgentsConfig, } from "../claude-agents/index.js";
5
+ import { createPaybondClaudeAgentsConfig, } from "../claude-agents/config.js";
6
6
  import { createPaybondGenericAgentConfig, } from "./generic-runner.js";
7
7
  import { PaybondAgentRun } from "./run.js";
8
8
  async function resolvePolicy(source) {
@@ -1,4 +1,4 @@
1
- import { createSdkMcpServer, type SdkMcpToolDefinition } from "@anthropic-ai/claude-agent-sdk";
1
+ import type { SdkMcpToolDefinition } from "@anthropic-ai/claude-agent-sdk";
2
2
  import type { PaybondAgentRun } from "../agent/run.js";
3
3
  /** Pre-built SDK tool from `tool()` in `@anthropic-ai/claude-agent-sdk`. */
4
4
  export type ClaudeAgentSdkTool = SdkMcpToolDefinition;
@@ -9,7 +9,7 @@ export type PaybondClaudeAgentsConfigOptions = {
9
9
  serverVersion?: string;
10
10
  };
11
11
  export type ClaudeAgentsConfig = {
12
- mcpServer: ReturnType<typeof createSdkMcpServer>;
12
+ mcpServer: ReturnType<typeof import("@anthropic-ai/claude-agent-sdk").createSdkMcpServer>;
13
13
  allowedTools: string[];
14
14
  /** Same tool array as input — side-effecting handlers are wrapped in-place. */
15
15
  agentTools: ClaudeAgentSdkTool[];
@@ -1,6 +1,26 @@
1
- import { createSdkMcpServer, } from "@anthropic-ai/claude-agent-sdk";
1
+ import { createRequire } from "node:module";
2
2
  import { PaybondAutoEvidenceSubmitError, PaybondUnregisteredSideEffectingToolError, } from "../agent/types.js";
3
3
  import { PaybondSpendApprovalRequiredError, PaybondSpendDeniedError, } from "../index.js";
4
+ let cachedClaudeAgentSdk;
5
+ /**
6
+ * Lazily resolve the optional `@anthropic-ai/claude-agent-sdk` peer dependency.
7
+ *
8
+ * Importing this module must not require the peer to be installed, so the Paybond barrel
9
+ * can load for consumers of other frameworks. The peer is only needed when the Claude Agents
10
+ * config is actually built.
11
+ */
12
+ function loadClaudeAgentSdk() {
13
+ if (cachedClaudeAgentSdk === undefined) {
14
+ try {
15
+ const require = createRequire(import.meta.url);
16
+ cachedClaudeAgentSdk = require("@anthropic-ai/claude-agent-sdk");
17
+ }
18
+ catch (err) {
19
+ throw new Error('The Claude Agents integration requires the optional peer dependency "@anthropic-ai/claude-agent-sdk"; install it with: npm install @anthropic-ai/claude-agent-sdk', { cause: err });
20
+ }
21
+ }
22
+ return cachedClaudeAgentSdk;
23
+ }
4
24
  function claudeMcpAllowedToolName(serverName, toolName) {
5
25
  return `mcp__${serverName}__${toolName}`;
6
26
  }
@@ -127,6 +147,7 @@ function wrapClaudeAgentSdkTool(run, sdkTool) {
127
147
  * into an in-process MCP server for `query({ options: { mcpServers, allowedTools } })`.
128
148
  */
129
149
  export function createPaybondClaudeAgentsConfig(run, tools, options) {
150
+ const { createSdkMcpServer } = loadClaudeAgentSdk();
130
151
  const sdkTools = assertClaudeAgentSdkTools(tools);
131
152
  const serverName = options?.serverName?.trim() || "paybond";
132
153
  for (const sdkTool of sdkTools) {
@@ -1,6 +1,7 @@
1
1
  import { resolve } from "node:path";
2
2
  import { readFile } from "node:fs/promises";
3
- import { PaybondAgentRun, PaybondAutoEvidenceSubmitError, PaybondToolRegistryValidationError, PaybondUnregisteredSideEffectingToolError, } from "../../agent/index.js";
3
+ import { PaybondAgentRun } from "../../agent/run.js";
4
+ import { PaybondAutoEvidenceSubmitError, PaybondToolRegistryValidationError, PaybondUnregisteredSideEffectingToolError, } from "../../agent/types.js";
4
5
  import { runGenericSandboxDemo } from "../../agent/generic-sandbox-demo.js";
5
6
  import { loadRunClaudeAgentsSandboxDemo, loadRunLangGraphSandboxDemo, loadRunOpenAIAgentsSandboxDemo, loadRunVercelAiSandboxDemo, } from "../agent/demo-loaders.js";
6
7
  import { buildSmokeRegistry, loadAgentRegistryFile, validateAgentRegistryDocument, } from "../../agent/registry-file.js";
@@ -1,5 +1,5 @@
1
- import { ToolMessage } from "@langchain/core/messages";
2
- import { type Command } from "@langchain/langgraph";
1
+ import type { ToolMessage } from "@langchain/core/messages";
2
+ import type { Command } from "@langchain/langgraph";
3
3
  import type { PaybondAgentRun } from "../agent/run.js";
4
4
  /** LangGraph `ToolCallRequest`-compatible shape used by Paybond interceptors. */
5
5
  export type PaybondLangGraphToolCallRequest = {
@@ -1,7 +1,41 @@
1
- import { ToolMessage } from "@langchain/core/messages";
2
- import { isCommand } from "@langchain/langgraph";
1
+ import { createRequire } from "node:module";
3
2
  import { PaybondAutoEvidenceSubmitError, PaybondUnregisteredSideEffectingToolError, } from "../agent/types.js";
4
3
  import { PaybondSpendApprovalRequiredError, PaybondSpendDeniedError, } from "../index.js";
4
+ let cachedCoreMessages;
5
+ let cachedLangGraph;
6
+ function missingLangGraphPeerError(err) {
7
+ return new Error('The LangGraph integration requires the optional peer dependencies "@langchain/core" and "@langchain/langgraph"; install them with: npm install @langchain/core @langchain/langgraph', { cause: err });
8
+ }
9
+ /**
10
+ * Lazily resolve `@langchain/core/messages`; importing this module must not require the peer.
11
+ */
12
+ function loadCoreMessages() {
13
+ if (cachedCoreMessages === undefined) {
14
+ try {
15
+ const require = createRequire(import.meta.url);
16
+ cachedCoreMessages = require("@langchain/core/messages");
17
+ }
18
+ catch (err) {
19
+ throw missingLangGraphPeerError(err);
20
+ }
21
+ }
22
+ return cachedCoreMessages;
23
+ }
24
+ /**
25
+ * Lazily resolve `@langchain/langgraph`; importing this module must not require the peer.
26
+ */
27
+ function loadLangGraph() {
28
+ if (cachedLangGraph === undefined) {
29
+ try {
30
+ const require = createRequire(import.meta.url);
31
+ cachedLangGraph = require("@langchain/langgraph");
32
+ }
33
+ catch (err) {
34
+ throw missingLangGraphPeerError(err);
35
+ }
36
+ }
37
+ return cachedLangGraph;
38
+ }
5
39
  function toolCallFields(request) {
6
40
  const call = request.tool_call;
7
41
  return {
@@ -11,6 +45,7 @@ function toolCallFields(request) {
11
45
  };
12
46
  }
13
47
  function denyToolMessage(name, toolCallId, content) {
48
+ const { ToolMessage } = loadCoreMessages();
14
49
  return new ToolMessage({
15
50
  content,
16
51
  name: name || "unknown",
@@ -19,9 +54,11 @@ function denyToolMessage(name, toolCallId, content) {
19
54
  });
20
55
  }
21
56
  function isToolMessage(value) {
22
- return value instanceof ToolMessage;
57
+ return value instanceof loadCoreMessages().ToolMessage;
23
58
  }
24
59
  export function normalizeLangGraphHookResult(call, result) {
60
+ const { isCommand } = loadLangGraph();
61
+ const { ToolMessage } = loadCoreMessages();
25
62
  if (isToolMessage(result) || isCommand(result)) {
26
63
  return result;
27
64
  }
@@ -1,10 +1,13 @@
1
1
  import type { DynamicTool, StructuredToolInterface } from "@langchain/core/tools";
2
2
  import type { RunnableToolLike } from "@langchain/core/runnables";
3
- import { ToolNode, type ToolNodeOptions } from "@langchain/langgraph/prebuilt";
3
+ import type { ToolNode, ToolNodeOptions } from "@langchain/langgraph/prebuilt";
4
4
  import type { PaybondAgentRun } from "../agent/run.js";
5
5
  type LangGraphTool = StructuredToolInterface | DynamicTool | RunnableToolLike;
6
6
  /**
7
7
  * Convenience factory: `ToolNode` with Paybond spend guard + auto-evidence on every tool call.
8
+ *
9
+ * LangGraph JS does not yet expose `awrapToolCall` on `ToolNode`; the returned subclass provides
10
+ * the same interceptor boundary as Python's `ToolNode(..., awrap_tool_call=...)`.
8
11
  */
9
12
  export declare function paybondToolNode(tools: LangGraphTool[], run: PaybondAgentRun, options?: ToolNodeOptions): ToolNode;
10
13
  export {};
@@ -1,38 +1,56 @@
1
- import { ToolNode } from "@langchain/langgraph/prebuilt";
1
+ import { createRequire } from "node:module";
2
2
  import { normalizeLangGraphHookResult, paybondAwrapToolCall, } from "./awrap-tool-call.js";
3
+ let cachedPrebuilt;
3
4
  /**
4
- * `ToolNode` subclass that runs {@link paybondAwrapToolCall} before each tool invocation.
5
+ * Lazily resolve the optional `@langchain/langgraph` peer dependency.
5
6
  *
6
- * LangGraph JS does not yet expose `awrapToolCall` on `ToolNode`; this wrapper provides the
7
- * same interceptor boundary as Python's `ToolNode(..., awrap_tool_call=...)`.
7
+ * Importing this module must not require the peer to be installed, so the Paybond barrel
8
+ * can load for consumers of other frameworks. The peer is only needed when a guarded
9
+ * LangGraph `ToolNode` is actually constructed.
8
10
  */
9
- class PaybondGuardedToolNode extends ToolNode {
10
- awrap;
11
- constructor(tools, run, options) {
12
- super(tools, options);
13
- this.awrap = paybondAwrapToolCall(run);
14
- }
15
- async runTool(call, config, state) {
16
- const request = {
17
- tool_call: {
18
- name: call.name,
19
- id: call.id,
20
- args: (call.args ?? {}),
21
- },
22
- };
23
- const execute = async (req) => super.runTool({
24
- ...call,
25
- name: req.tool_call.name,
26
- id: req.tool_call.id ?? call.id,
27
- args: req.tool_call.args ?? call.args,
28
- }, config, state);
29
- const result = await this.awrap(request, execute);
30
- return normalizeLangGraphHookResult(call, result);
11
+ function loadLangGraphPrebuilt() {
12
+ if (cachedPrebuilt === undefined) {
13
+ try {
14
+ const require = createRequire(import.meta.url);
15
+ cachedPrebuilt = require("@langchain/langgraph/prebuilt");
16
+ }
17
+ catch (err) {
18
+ throw new Error('The LangGraph integration requires the optional peer dependencies "@langchain/core" and "@langchain/langgraph"; install them with: npm install @langchain/core @langchain/langgraph', { cause: err });
19
+ }
31
20
  }
21
+ return cachedPrebuilt;
32
22
  }
33
23
  /**
34
24
  * Convenience factory: `ToolNode` with Paybond spend guard + auto-evidence on every tool call.
25
+ *
26
+ * LangGraph JS does not yet expose `awrapToolCall` on `ToolNode`; the returned subclass provides
27
+ * the same interceptor boundary as Python's `ToolNode(..., awrap_tool_call=...)`.
35
28
  */
36
29
  export function paybondToolNode(tools, run, options) {
30
+ const { ToolNode: ToolNodeCtor } = loadLangGraphPrebuilt();
31
+ class PaybondGuardedToolNode extends ToolNodeCtor {
32
+ awrap;
33
+ constructor(guardedTools, guardedRun, guardedOptions) {
34
+ super(guardedTools, guardedOptions);
35
+ this.awrap = paybondAwrapToolCall(guardedRun);
36
+ }
37
+ async runTool(call, config, state) {
38
+ const request = {
39
+ tool_call: {
40
+ name: call.name,
41
+ id: call.id,
42
+ args: (call.args ?? {}),
43
+ },
44
+ };
45
+ const execute = async (req) => super.runTool({
46
+ ...call,
47
+ name: req.tool_call.name,
48
+ id: req.tool_call.id ?? call.id,
49
+ args: req.tool_call.args ?? call.args,
50
+ }, config, state);
51
+ const result = await this.awrap(request, execute);
52
+ return normalizeLangGraphHookResult(call, result);
53
+ }
54
+ }
37
55
  return new PaybondGuardedToolNode(tools, run, options);
38
56
  }
@@ -13,7 +13,7 @@ import { McpCapabilityTokenCache, mcpToolStoresCapabilityToken, parseMcpCapabili
13
13
  import { createMcpPolicyGatewayAdapter, McpPolicyReloadGate, parseMcpPolicyReloadConfig, } from "./mcp-policy-reload.js";
14
14
  import { DEFAULT_PAYBOND_GATEWAY_BASE_URL, GatewayFraudClient, GatewaySignalClient, } from "./index.js";
15
15
  const SERVER_NAME = "Paybond MCP";
16
- const SERVER_VERSION = "0.11.2";
16
+ const SERVER_VERSION = "0.11.3";
17
17
  const MCP_PROTOCOL_VERSION = "2025-11-25";
18
18
  const DEFAULT_PRINCIPAL_PATH = "/v1/auth/principal";
19
19
  const DEFAULT_RECOGNITION_VERIFIER_ID = "paybond-gateway";
@@ -1,4 +1,4 @@
1
- import { ToolGuardrailFunctionOutputFactory, type FunctionTool, type RunConfig, type ToolInputGuardrailDefinition } from "@openai/agents";
1
+ import type { FunctionTool, RunConfig, ToolInputGuardrailDefinition } from "@openai/agents";
2
2
  import { type PaybondAgentRun, type PaybondToolInputGuardDecision } from "../agent/index.js";
3
3
  export type PaybondOpenAIAgentsAdapterOptions = {
4
4
  /**
@@ -11,7 +11,7 @@ declare function isFunctionTool(value: unknown): value is FunctionTool;
11
11
  /** Detect OpenAI Agents SDK function tools (`type: "function"`). */
12
12
  export { isFunctionTool as isOpenAIFunctionTool };
13
13
  /** Map a framework-neutral Paybond decision to OpenAI tool guardrail output. */
14
- export declare function mapPaybondDecisionToOpenAIToolGuardrail(decision: PaybondToolInputGuardDecision): ReturnType<typeof ToolGuardrailFunctionOutputFactory.allow>;
14
+ export declare function mapPaybondDecisionToOpenAIToolGuardrail(decision: PaybondToolInputGuardDecision): ReturnType<typeof import("@openai/agents").ToolGuardrailFunctionOutputFactory.allow>;
15
15
  /** RunConfig fragment enabling Paybond verify before OpenAI approval interruptions. */
16
16
  export declare const paybondOpenAIAgentsRunConfig: Pick<RunConfig, "toolExecution">;
17
17
  /** Translate Paybond middleware into OpenAI Agents SDK tool input guardrails. */
@@ -1,5 +1,25 @@
1
- import { defineToolInputGuardrail, ToolGuardrailFunctionOutputFactory, } from "@openai/agents";
1
+ import { createRequire } from "node:module";
2
2
  import { createToolInputGuardAdapter, } from "../agent/index.js";
3
+ let cachedOpenAIAgents;
4
+ /**
5
+ * Lazily resolve the optional `@openai/agents` peer dependency.
6
+ *
7
+ * Importing this module must not require the peer to be installed, so consumers of
8
+ * other frameworks (LangGraph, Vercel AI, etc.) can load the Paybond barrel without it.
9
+ * The peer is only needed when the OpenAI Agents adapter functions actually run.
10
+ */
11
+ function loadOpenAIAgents() {
12
+ if (cachedOpenAIAgents === undefined) {
13
+ try {
14
+ const require = createRequire(import.meta.url);
15
+ cachedOpenAIAgents = require("@openai/agents");
16
+ }
17
+ catch (err) {
18
+ throw new Error('The OpenAI Agents integration requires the optional peer dependency "@openai/agents"; install it with: npm install @openai/agents', { cause: err });
19
+ }
20
+ }
21
+ return cachedOpenAIAgents;
22
+ }
3
23
  function parseToolArguments(raw) {
4
24
  if (!raw.trim()) {
5
25
  return {};
@@ -17,6 +37,7 @@ function isFunctionTool(value) {
17
37
  export { isFunctionTool as isOpenAIFunctionTool };
18
38
  /** Map a framework-neutral Paybond decision to OpenAI tool guardrail output. */
19
39
  export function mapPaybondDecisionToOpenAIToolGuardrail(decision) {
40
+ const { ToolGuardrailFunctionOutputFactory } = loadOpenAIAgents();
20
41
  if (decision.kind === "allow") {
21
42
  return ToolGuardrailFunctionOutputFactory.allow({
22
43
  paybond: {
@@ -37,6 +58,7 @@ export function mapPaybondDecisionToOpenAIToolGuardrail(decision) {
37
58
  });
38
59
  }
39
60
  function buildPaybondInputGuardrail(run, toolName) {
61
+ const { defineToolInputGuardrail } = loadOpenAIAgents();
40
62
  const guard = createToolInputGuardAdapter(run);
41
63
  return defineToolInputGuardrail({
42
64
  name: `paybond_spend_${toolName}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paybond/kit",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
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",
@@ -53,6 +53,7 @@
53
53
  },
54
54
  "files": [
55
55
  "dist",
56
+ "policy",
56
57
  "completion-presets",
57
58
  "solutions",
58
59
  "templates",
@@ -109,7 +110,7 @@
109
110
  },
110
111
  "scripts": {
111
112
  "clean": "node ./scripts/clean-dist.mjs",
112
- "build": "npm run clean && tsc -p tsconfig.json && node ../scripts/sync-completion-catalog.mjs && node ../scripts/sync-dev-trace-ui.mjs && node ./scripts/generate-templates.mjs",
113
+ "build": "npm run clean && tsc -p tsconfig.json && node ../scripts/sync-completion-catalog.mjs && node ../scripts/sync-policy-presets.mjs && node ../scripts/sync-dev-trace-ui.mjs && node ./scripts/generate-templates.mjs",
113
114
  "cli": "node dist/cli.js",
114
115
  "cli:dev": "npm run build --silent && node dist/cli.js",
115
116
  "generate:cli-contract": "node ../cli-parity/generate.mjs",
@@ -0,0 +1,19 @@
1
+ version: 1
2
+ name: aws-operator-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ aws.ec2.start_instance:
7
+ side_effecting: true
8
+ max_spend_cents: 50000
9
+ evidence_preset: cost_and_completion
10
+
11
+ aws.ec2.describe_instances:
12
+ side_effecting: false
13
+
14
+ intent:
15
+ allowed_tools:
16
+ - aws.ec2.start_instance
17
+ budget:
18
+ currency: usd
19
+ max_spend_usd: 500
@@ -0,0 +1,15 @@
1
+ version: 1
2
+ name: aws-operator-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ aws.ec2.start_instance:
7
+ side_effecting: true
8
+ evidence_preset: cost_and_completion
9
+
10
+ aws.ec2.describe_instances:
11
+ side_effecting: false
12
+
13
+ intent:
14
+ allowed_tools:
15
+ - aws.ec2.start_instance
@@ -0,0 +1,15 @@
1
+ version: 1
2
+ name: saas-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ saas.provision_seat:
7
+ side_effecting: true
8
+ evidence_preset: cost_and_completion
9
+
10
+ saas.list_plans:
11
+ side_effecting: false
12
+
13
+ intent:
14
+ allowed_tools:
15
+ - saas.provision_seat
@@ -0,0 +1,15 @@
1
+ version: 1
2
+ name: shopping-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ commerce.checkout:
7
+ side_effecting: true
8
+ evidence_preset: cost_and_completion
9
+
10
+ search.products:
11
+ side_effecting: false
12
+
13
+ intent:
14
+ allowed_tools:
15
+ - commerce.checkout
@@ -0,0 +1,15 @@
1
+ version: 1
2
+ name: travel-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ travel.book_hotel:
7
+ side_effecting: true
8
+ evidence_preset: cost_and_completion
9
+
10
+ search.web:
11
+ side_effecting: false
12
+
13
+ intent:
14
+ allowed_tools:
15
+ - travel.book_hotel
@@ -0,0 +1,8 @@
1
+ tools:
2
+ aws.ec2.start_instance:
3
+ max_spend_cents: 50000
4
+
5
+ intent:
6
+ budget:
7
+ currency: usd
8
+ max_spend_usd: 500
@@ -0,0 +1,8 @@
1
+ tools:
2
+ saas.provision_seat:
3
+ max_spend_cents: 5000
4
+
5
+ intent:
6
+ budget:
7
+ currency: usd
8
+ max_spend_usd: 50
@@ -0,0 +1,8 @@
1
+ tools:
2
+ commerce.checkout:
3
+ max_spend_cents: 10000
4
+
5
+ intent:
6
+ budget:
7
+ currency: usd
8
+ max_spend_usd: 100
@@ -0,0 +1,8 @@
1
+ tools:
2
+ travel.book_hotel:
3
+ max_spend_cents: 20000
4
+
5
+ intent:
6
+ budget:
7
+ currency: usd
8
+ max_spend_usd: 200
@@ -0,0 +1,23 @@
1
+ version: 1
2
+ name: read-only-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ search.web:
7
+ side_effecting: false
8
+
9
+ search.products:
10
+ side_effecting: false
11
+
12
+ saas.list_plans:
13
+ side_effecting: false
14
+
15
+ aws.ec2.describe_instances:
16
+ side_effecting: false
17
+
18
+ intent:
19
+ allowed_tools:
20
+ - search.web
21
+ - search.products
22
+ - saas.list_plans
23
+ - aws.ec2.describe_instances
@@ -0,0 +1,19 @@
1
+ version: 1
2
+ name: saas-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ saas.provision_seat:
7
+ side_effecting: true
8
+ max_spend_cents: 5000
9
+ evidence_preset: cost_and_completion
10
+
11
+ saas.list_plans:
12
+ side_effecting: false
13
+
14
+ intent:
15
+ allowed_tools:
16
+ - saas.provision_seat
17
+ budget:
18
+ currency: usd
19
+ max_spend_usd: 50
@@ -0,0 +1,19 @@
1
+ version: 1
2
+ name: shopping-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ commerce.checkout:
7
+ side_effecting: true
8
+ max_spend_cents: 10000
9
+ evidence_preset: cost_and_completion
10
+
11
+ search.products:
12
+ side_effecting: false
13
+
14
+ intent:
15
+ allowed_tools:
16
+ - commerce.checkout
17
+ budget:
18
+ currency: usd
19
+ max_spend_usd: 100
@@ -0,0 +1,16 @@
1
+ version: 1
2
+ name: strict-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ travel.book_hotel:
7
+ side_effecting: true
8
+ max_spend_cents: 1000
9
+ evidence_preset: cost_and_completion
10
+
11
+ intent:
12
+ allowed_tools:
13
+ - travel.book_hotel
14
+ budget:
15
+ currency: usd
16
+ max_spend_usd: 10
@@ -0,0 +1,19 @@
1
+ version: 1
2
+ name: travel-agent-v1
3
+ default_deny: true
4
+
5
+ tools:
6
+ travel.book_hotel:
7
+ side_effecting: true
8
+ max_spend_cents: 20000
9
+ evidence_preset: cost_and_completion
10
+
11
+ search.web:
12
+ side_effecting: false
13
+
14
+ intent:
15
+ allowed_tools:
16
+ - travel.book_hotel
17
+ budget:
18
+ currency: usd
19
+ max_spend_usd: 200
@@ -13,7 +13,7 @@
13
13
  "evidence_preset": "cost_and_completion",
14
14
  "smoke_result_body": { "status": "completed", "cost_cents": 18700 },
15
15
  "dependencies": {
16
- "@paybond/kit": "^0.11.2",
16
+ "@paybond/kit": "^0.11.3",
17
17
  "@langchain/core": "^1.2.1",
18
18
  "@langchain/langgraph": "^1.4.7",
19
19
  "zod": "^4.2.0"
@@ -33,7 +33,7 @@
33
33
  "evidence_preset": "cost_and_completion",
34
34
  "smoke_result_body": { "status": "completed", "cost_cents": 4500 },
35
35
  "dependencies": {
36
- "@paybond/kit": "^0.11.2",
36
+ "@paybond/kit": "^0.11.3",
37
37
  "ai": "^5.0.0",
38
38
  "zod": "^4.2.0"
39
39
  },
@@ -52,7 +52,7 @@
52
52
  "evidence_preset": "cost_and_completion",
53
53
  "smoke_result_body": { "status": "completed", "cost_cents": 2900 },
54
54
  "dependencies": {
55
- "@paybond/kit": "^0.11.2",
55
+ "@paybond/kit": "^0.11.3",
56
56
  "@openai/agents": "^0.4.0",
57
57
  "zod": "^4.2.0"
58
58
  },
@@ -71,7 +71,7 @@
71
71
  "evidence_preset": "cost_and_completion",
72
72
  "smoke_result_body": { "status": "completed", "cost_cents": 4500 },
73
73
  "dependencies": {
74
- "@paybond/kit": "^0.11.2",
74
+ "@paybond/kit": "^0.11.3",
75
75
  "@openai/agents": "^0.4.0",
76
76
  "zod": "^4.2.0"
77
77
  },
@@ -90,7 +90,7 @@
90
90
  "evidence_preset": "cost_and_completion",
91
91
  "smoke_result_body": { "status": "completed", "cost_cents": 18700 },
92
92
  "dependencies": {
93
- "@paybond/kit": "^0.11.2",
93
+ "@paybond/kit": "^0.11.3",
94
94
  "@anthropic-ai/claude-agent-sdk": "^0.2.100",
95
95
  "zod": "^4.2.0"
96
96
  },
@@ -110,7 +110,7 @@
110
110
  "evidence_preset": "cost_and_completion",
111
111
  "smoke_result_body": { "status": "completed", "cost_cents": 500 },
112
112
  "dependencies": {
113
- "@paybond/kit": "^0.11.2"
113
+ "@paybond/kit": "^0.11.3"
114
114
  },
115
115
  "mcp_tool_policy": "spend-write"
116
116
  },
@@ -127,7 +127,7 @@
127
127
  "evidence_preset": "cost_and_completion",
128
128
  "smoke_result_body": { "status": "completed", "cost_cents": 12000 },
129
129
  "dependencies": {
130
- "@paybond/kit": "^0.11.2"
130
+ "@paybond/kit": "^0.11.3"
131
131
  },
132
132
  "demo_mode": "generic"
133
133
  },
@@ -143,7 +143,7 @@
143
143
  "evidence_preset": "cost_and_completion",
144
144
  "smoke_result_body": { "status": "completed", "cost_cents": 12500 },
145
145
  "dependencies": {
146
- "@paybond/kit": "^0.11.2"
146
+ "@paybond/kit": "^0.11.3"
147
147
  },
148
148
  "demo_mode": "generic"
149
149
  },
@@ -159,7 +159,7 @@
159
159
  "evidence_preset": "cost_and_completion",
160
160
  "smoke_result_body": { "status": "completed", "cost_cents": 2900 },
161
161
  "python_dependencies": {
162
- "paybond-kit": ">=0.11.2",
162
+ "paybond-kit": ">=0.11.3",
163
163
  "langgraph": ">=1.2.0"
164
164
  },
165
165
  "demo_import": "paybond_kit.langgraph_sandbox_demo",
@@ -7,7 +7,7 @@
7
7
  "name": "openai-shopping-agent",
8
8
  "dependencies": {
9
9
  "@openai/agents": "^0.4.0",
10
- "@paybond/kit": "^0.11.2",
10
+ "@paybond/kit": "^0.11.3",
11
11
  "zod": "^4.2.0"
12
12
  },
13
13
  "devDependencies": {
@@ -169,9 +169,9 @@
169
169
  }
170
170
  },
171
171
  "node_modules/@paybond/kit": {
172
- "version": "0.11.2",
173
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
174
- "integrity": "sha512-ogdppjWoUaT8z3Sl7LekZE5dvPj6hhAeBjjorVxI1gW5TE0Q0uwlwvfzDMiyJ4YnoXBfDkxEUNRJ8umpUasEeA==",
172
+ "version": "0.11.3",
173
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
174
+ "integrity": "sha512-+hOAHp78nZGHM5cCOe+kaNNM6hItnkv8ick9CBKHxKe5k9B/EYFS0LKiKsRCBcJnVF3VRf5340j3mT3D2M3W4Q==",
175
175
  "license": "Apache-2.0",
176
176
  "dependencies": {
177
177
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation commerce.checkout --requested-spend-cents 4500 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":4500}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2",
11
+ "@paybond/kit": "^0.11.3",
12
12
  "@openai/agents": "^0.4.0",
13
13
  "zod": "^4.2.0"
14
14
  },
@@ -6,7 +6,7 @@
6
6
  "": {
7
7
  "name": "paybond-aws-operator",
8
8
  "dependencies": {
9
- "@paybond/kit": "^0.11.2"
9
+ "@paybond/kit": "^0.11.3"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@types/node": "^22.10.1",
@@ -47,9 +47,9 @@
47
47
  }
48
48
  },
49
49
  "node_modules/@paybond/kit": {
50
- "version": "0.11.2",
51
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
52
- "integrity": "sha512-KHqslvzEv2y5lCQ6YAiIBuyudY7wmajrN08tPXVJFq7HLbdyzEvvIuQ715vAv0nI4LTUBEp/67xGkoHGPe/l0w==",
50
+ "version": "0.11.3",
51
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
52
+ "integrity": "sha512-elKVrvovb54TgitThi8oPFqGkcRiP6lGQyzoenEf/khNWaAuEv7k5SJiZMOT5aDoUy+pb4Ovs31QAXtHxcrhAg==",
53
53
  "license": "Apache-2.0",
54
54
  "dependencies": {
55
55
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation aws.ec2.start_instance --requested-spend-cents 12500 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":12500}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2"
11
+ "@paybond/kit": "^0.11.3"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/node": "^22.10.1",
@@ -7,7 +7,7 @@
7
7
  "name": "paybond-claude-agents-demo",
8
8
  "dependencies": {
9
9
  "@anthropic-ai/claude-agent-sdk": "^0.2.100",
10
- "@paybond/kit": "^0.11.2",
10
+ "@paybond/kit": "^0.11.3",
11
11
  "zod": "^4.2.0"
12
12
  },
13
13
  "devDependencies": {
@@ -260,9 +260,9 @@
260
260
  }
261
261
  },
262
262
  "node_modules/@paybond/kit": {
263
- "version": "0.11.2",
264
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
265
- "integrity": "sha512-OPx3cfzQrljMNdCwQqymnAoIxxgvLHYhlSX82U2qc5ZtVLKT/ib5QtskhbRA0zjlH82nHuKiBdZSe65nZk6dJw==",
263
+ "version": "0.11.3",
264
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
265
+ "integrity": "sha512-4gCmDuFlYNg6jESOTlhVuV5ZFS7Tg7qLPqxGlfFBGYs+m+sAV2md1rln3rxWpbaSK5M11mhDSPq6g9zHpjvwOA==",
266
266
  "license": "Apache-2.0",
267
267
  "dependencies": {
268
268
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation travel.book_hotel --requested-spend-cents 18700 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2",
11
+ "@paybond/kit": "^0.11.3",
12
12
  "@anthropic-ai/claude-agent-sdk": "^0.2.100",
13
13
  "zod": "^4.2.0"
14
14
  },
@@ -1,2 +1,2 @@
1
- paybond-kit>=0.11.2
1
+ paybond-kit>=0.11.3
2
2
  langgraph>=1.2.0
@@ -6,7 +6,7 @@
6
6
  "": {
7
7
  "name": "paybond-mcp-coding-agent",
8
8
  "dependencies": {
9
- "@paybond/kit": "^0.11.2"
9
+ "@paybond/kit": "^0.11.3"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@types/node": "^22.10.1",
@@ -47,9 +47,9 @@
47
47
  }
48
48
  },
49
49
  "node_modules/@paybond/kit": {
50
- "version": "0.11.2",
51
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
52
- "integrity": "sha512-UdRXP545JtF1H1ktZzqQCfYeSXmdkG6wLcTyE06/AEp/EJkEnEqpVtg9vP+U/IRYYONXA2yzM0ctEVROSld6oQ==",
50
+ "version": "0.11.3",
51
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
52
+ "integrity": "sha512-AlsBZDOnrC3n0/NHII+QWO4Iotg1H3TksQ1iGLskxM1XPQ7W+d83bzc2Yags7DDr/jfTyMy3ItNlVpRPZC7wNw==",
53
53
  "license": "Apache-2.0",
54
54
  "dependencies": {
55
55
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation deploy.preview --requested-spend-cents 500 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":500}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2"
11
+ "@paybond/kit": "^0.11.3"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/node": "^22.10.1",
@@ -7,7 +7,7 @@
7
7
  "name": "paybond-openai-agents-demo",
8
8
  "dependencies": {
9
9
  "@openai/agents": "^0.4.0",
10
- "@paybond/kit": "^0.11.2",
10
+ "@paybond/kit": "^0.11.3",
11
11
  "zod": "^4.2.0"
12
12
  },
13
13
  "devDependencies": {
@@ -169,9 +169,9 @@
169
169
  }
170
170
  },
171
171
  "node_modules/@paybond/kit": {
172
- "version": "0.11.2",
173
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
174
- "integrity": "sha512-EOgjB45nyErS4GyU4JVrCY0JWIxZ5Ymp4ZlRLuJB9plqA4Pnh/shTi2lF0Oh1Oq98/4W0Vk2E+LJC+emS5v0mQ==",
172
+ "version": "0.11.3",
173
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
174
+ "integrity": "sha512-NlUW7qqYhLeA5BtjcDrtpJnv1/qwpGU4xXOFYmdbNJb9dyR6GytYATBsuWQ3ZtSfNAI6//u5gg3AocaKIjWEwg==",
175
175
  "license": "Apache-2.0",
176
176
  "dependencies": {
177
177
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation saas.provision_seat --requested-spend-cents 2900 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":2900}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2",
11
+ "@paybond/kit": "^0.11.3",
12
12
  "@openai/agents": "^0.4.0",
13
13
  "zod": "^4.2.0"
14
14
  },
@@ -6,7 +6,7 @@
6
6
  "": {
7
7
  "name": "paybond-procurement-agent",
8
8
  "dependencies": {
9
- "@paybond/kit": "^0.11.2"
9
+ "@paybond/kit": "^0.11.3"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@types/node": "^22.10.1",
@@ -47,9 +47,9 @@
47
47
  }
48
48
  },
49
49
  "node_modules/@paybond/kit": {
50
- "version": "0.11.2",
51
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
52
- "integrity": "sha512-FuY5SAso14RF+QHCOFhQsNU9aqFi3RveemWypzsDr+I9sY7VJra9KRWxTUw9vgLNrCZNkPCYKFaj6KFudph/qw==",
50
+ "version": "0.11.3",
51
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
52
+ "integrity": "sha512-ZkQmWkHcC+4NugPGZjiwdFx8LiL8c7h5iVZOz/SMsaljYfrvn2+r169mRknzsKeo0rOkf16mWSxa66RWNmV9RQ==",
53
53
  "license": "Apache-2.0",
54
54
  "dependencies": {
55
55
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation procurement.submit_po --requested-spend-cents 12000 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":12000}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2"
11
+ "@paybond/kit": "^0.11.3"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/node": "^22.10.1",
@@ -8,7 +8,7 @@
8
8
  "dependencies": {
9
9
  "@langchain/core": "^1.2.1",
10
10
  "@langchain/langgraph": "^1.4.7",
11
- "@paybond/kit": "^0.11.2",
11
+ "@paybond/kit": "^0.11.3",
12
12
  "zod": "^4.2.0"
13
13
  },
14
14
  "devDependencies": {
@@ -178,9 +178,9 @@
178
178
  }
179
179
  },
180
180
  "node_modules/@paybond/kit": {
181
- "version": "0.11.2",
182
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
183
- "integrity": "sha512-qsklp8fV/5q1o5/LsJja4+v1UhU7vLhwXcieHs2U7DHYI3d0IrotlgoG/vK22Ol0SUW0jVF7ncJh9MShLxvnsw==",
181
+ "version": "0.11.3",
182
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
183
+ "integrity": "sha512-O+NW0/6+ybT8xBXhybSrXNfOzJZahTNjOovcIfAfiiCEkTGpXrWFhOw3IJbOmoqLhdBK8NE5OG3pCiatmNZcLQ==",
184
184
  "license": "Apache-2.0",
185
185
  "dependencies": {
186
186
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation travel.book_hotel --requested-spend-cents 18700 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2",
11
+ "@paybond/kit": "^0.11.3",
12
12
  "@langchain/core": "^1.2.1",
13
13
  "@langchain/langgraph": "^1.4.7",
14
14
  "zod": "^4.2.0"
@@ -6,7 +6,7 @@
6
6
  "": {
7
7
  "name": "paybond-vercel-shopping-agent",
8
8
  "dependencies": {
9
- "@paybond/kit": "^0.11.2",
9
+ "@paybond/kit": "^0.11.3",
10
10
  "ai": "^5.0.0",
11
11
  "zod": "^4.2.0"
12
12
  },
@@ -104,9 +104,9 @@
104
104
  }
105
105
  },
106
106
  "node_modules/@paybond/kit": {
107
- "version": "0.11.2",
108
- "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.2.tgz",
109
- "integrity": "sha512-BfumFFZrxAv5WhH2mg1dkuB28E+x1kf4ib8gaDMYqOynvpgNEgytAziSDvn8pEGdQfWwmhf0vLeMEqtrjcszzw==",
107
+ "version": "0.11.3",
108
+ "resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.11.3.tgz",
109
+ "integrity": "sha512-fPSNotqz+kGpKWlk2tqFXwJi9PnYgHjIGGKp5Ts0+eiN028ZNumyzQX+oTGb6X5C/xBJ7Axe/aAtDyYhfSVrdg==",
110
110
  "license": "Apache-2.0",
111
111
  "dependencies": {
112
112
  "@noble/ed25519": "^2.2.1",
@@ -8,7 +8,7 @@
8
8
  "smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation commerce.checkout --requested-spend-cents 4500 --evidence-preset cost_and_completion --result-body '{\"status\":\"completed\",\"cost_cents\":4500}' --format json"
9
9
  },
10
10
  "dependencies": {
11
- "@paybond/kit": "^0.11.2",
11
+ "@paybond/kit": "^0.11.3",
12
12
  "ai": "^5.0.0",
13
13
  "zod": "^4.2.0"
14
14
  },