@paybond/kit 0.11.10 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/completion-presets/catalog.json +374 -3
- package/completion-presets/catalog.sha256 +1 -1
- package/dist/agent/facade.js +13 -0
- package/dist/agent/guarded-agent.d.ts +1 -1
- package/dist/agent/guarded-agent.js +19 -0
- package/dist/agent/index.d.ts +2 -1
- package/dist/agent/index.js +1 -0
- package/dist/agent/instrument.d.ts +6 -0
- package/dist/agent/instrument.js +6 -0
- package/dist/agent/interceptor.d.ts +9 -0
- package/dist/agent/interceptor.js +177 -1
- package/dist/agent/receipt-client.d.ts +49 -0
- package/dist/agent/receipt-client.js +45 -0
- package/dist/agent/registry.js +1 -0
- package/dist/agent/run.d.ts +2 -0
- package/dist/agent/run.js +52 -0
- package/dist/agent/types.d.ts +70 -0
- package/dist/agent-receipt-external-attestations.d.ts +29 -0
- package/dist/agent-receipt-external-attestations.js +124 -0
- package/dist/agent-receipt.d.ts +134 -0
- package/dist/agent-receipt.js +580 -0
- package/dist/agent-recognition.d.ts +25 -0
- package/dist/agent-recognition.js +36 -0
- package/dist/audit/exports.d.ts +72 -0
- package/dist/audit/exports.js +185 -0
- package/dist/audit/index.d.ts +3 -0
- package/dist/audit/index.js +3 -0
- package/dist/audit/verify.d.ts +8 -0
- package/dist/audit/verify.js +113 -0
- package/dist/audit/wire.d.ts +54 -0
- package/dist/audit/wire.js +80 -0
- package/dist/cli/agent/demo-loaders.d.ts +2 -0
- package/dist/cli/agent/demo-loaders.js +24 -0
- package/dist/cli/agent/production-evidence.d.ts +11 -0
- package/dist/cli/agent/production-evidence.js +17 -0
- package/dist/cli/audit-export.d.ts +2 -7
- package/dist/cli/audit-export.js +2 -120
- package/dist/cli/command-spec.js +43 -10
- package/dist/cli/commands/agent.d.ts +3 -0
- package/dist/cli/commands/agent.js +143 -1
- package/dist/cli/commands/discovery.js +39 -36
- package/dist/cli/commands/workflows.js +116 -18
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.js +12 -8
- package/dist/cli/intents-harbor-mutation.d.ts +18 -0
- package/dist/cli/intents-harbor-mutation.js +33 -0
- package/dist/cli/paybond.d.ts +9 -0
- package/dist/cli/paybond.js +23 -0
- package/dist/cli/redact.js +3 -0
- package/dist/cloudflare-agents/config.d.ts +24 -0
- package/dist/cloudflare-agents/config.js +23 -0
- package/dist/cloudflare-agents/index.d.ts +3 -0
- package/dist/cloudflare-agents/index.js +3 -0
- package/dist/cloudflare-agents/peer.d.ts +9 -0
- package/dist/cloudflare-agents/peer.js +20 -0
- package/dist/cloudflare-agents/sandbox-demo.d.ts +36 -0
- package/dist/cloudflare-agents/sandbox-demo.js +89 -0
- package/dist/completion-catalog-digest.d.ts +1 -1
- package/dist/completion-catalog-digest.js +1 -1
- package/dist/completion-init.js +8 -3
- package/dist/dev/offline-gateway.d.ts +2 -1
- package/dist/dev/offline-gateway.js +34 -3
- package/dist/dev/x402-fund-mock.d.ts +28 -0
- package/dist/dev/x402-fund-mock.js +124 -0
- package/dist/index.d.ts +125 -9
- package/dist/index.js +264 -17
- package/dist/init.js +113 -2
- package/dist/mastra/config.d.ts +30 -0
- package/dist/mastra/config.js +58 -0
- package/dist/mastra/index.d.ts +2 -0
- package/dist/mastra/index.js +2 -0
- package/dist/mastra/peer.d.ts +11 -0
- package/dist/mastra/peer.js +24 -0
- package/dist/mastra/sandbox-demo.d.ts +36 -0
- package/dist/mastra/sandbox-demo.js +87 -0
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/sandbox-demo.d.ts +38 -0
- package/dist/mcp/sandbox-demo.js +112 -0
- package/dist/mcp-receipt-resource.d.ts +10 -0
- package/dist/mcp-receipt-resource.js +32 -0
- package/dist/mcp-server.d.ts +6 -0
- package/dist/mcp-server.js +124 -1
- package/dist/mpp-commercial.d.ts +19 -0
- package/dist/mpp-commercial.js +34 -0
- package/dist/mpp-funding.d.ts +71 -0
- package/dist/mpp-funding.js +192 -0
- package/dist/payment-transport.d.ts +30 -0
- package/dist/payment-transport.js +56 -0
- package/dist/policy/init.js +2 -0
- package/dist/policy/intent-spec.js +2 -0
- package/dist/principal-intent.d.ts +1 -1
- package/dist/principal-intent.js +4 -1
- package/dist/project-init.js +8 -0
- package/dist/template-init.d.ts +2 -2
- package/dist/template-init.js +6 -2
- package/dist/x402-funding.d.ts +52 -0
- package/dist/x402-funding.js +124 -0
- package/package.json +20 -2
- package/templates/manifest.json +28 -9
- package/templates/openai-shopping-agent/package-lock.json +16 -8
- package/templates/openai-shopping-agent/package.json +1 -1
- package/templates/paybond-aws-operator/package-lock.json +13 -5
- package/templates/paybond-aws-operator/package.json +1 -1
- package/templates/paybond-claude-agents-demo/package-lock.json +16 -8
- package/templates/paybond-claude-agents-demo/package.json +1 -1
- package/templates/paybond-invoice-agent/requirements.txt +1 -1
- package/templates/paybond-mastra-travel-agent/.env.example +3 -0
- package/templates/paybond-mastra-travel-agent/.github/workflows/smoke.yml +20 -0
- package/templates/paybond-mastra-travel-agent/LICENSE +201 -0
- package/templates/paybond-mastra-travel-agent/README.md +29 -0
- package/templates/paybond-mastra-travel-agent/package-lock.json +3377 -0
- package/templates/paybond-mastra-travel-agent/package.json +22 -0
- package/templates/paybond-mastra-travel-agent/paybond.policy.yaml +22 -0
- package/templates/paybond-mastra-travel-agent/src/index.ts +22 -0
- package/templates/paybond-mastra-travel-agent/src/paybond.config.ts +51 -0
- package/templates/paybond-mastra-travel-agent/tsconfig.json +13 -0
- package/templates/paybond-mcp-coding-agent/package-lock.json +13 -5
- package/templates/paybond-mcp-coding-agent/package.json +1 -1
- package/templates/paybond-openai-agents-demo/package-lock.json +16 -8
- package/templates/paybond-openai-agents-demo/package.json +1 -1
- package/templates/paybond-procurement-agent/package-lock.json +13 -5
- package/templates/paybond-procurement-agent/package.json +1 -1
- package/templates/paybond-travel-agent/package-lock.json +16 -8
- package/templates/paybond-travel-agent/package.json +1 -1
- package/templates/paybond-vercel-shopping-agent/package-lock.json +13 -5
- package/templates/paybond-vercel-shopping-agent/package.json +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
const DEFAULT_MAX_ATTEMPTS = 30;
|
|
2
|
+
const DEFAULT_INTERVAL_MS = 2_000;
|
|
3
|
+
const FUND_REQUEST_BODY = {};
|
|
4
|
+
const TERMINAL_X402_FUNDING_STATUSES = new Set([
|
|
5
|
+
"authorization_failed",
|
|
6
|
+
"capture_failed",
|
|
7
|
+
"void_failed",
|
|
8
|
+
]);
|
|
9
|
+
/** Raised when x402 funding cannot complete (missing challenge, terminal rail status, unexpected HTTP). */
|
|
10
|
+
export class PaybondX402FundingFailedError extends Error {
|
|
11
|
+
intentId;
|
|
12
|
+
lastResult;
|
|
13
|
+
constructor(message, init) {
|
|
14
|
+
super(message, { cause: init.cause });
|
|
15
|
+
this.name = "PaybondX402FundingFailedError";
|
|
16
|
+
this.intentId = init.intentId;
|
|
17
|
+
this.lastResult = init.lastResult;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Raised when polling exhausts `maxAttempts` before Harbor returns a funded capability token. */
|
|
21
|
+
export class PaybondX402FundingPendingError extends Error {
|
|
22
|
+
intentId;
|
|
23
|
+
lastResult;
|
|
24
|
+
attempts;
|
|
25
|
+
constructor(message, init) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.name = "PaybondX402FundingPendingError";
|
|
28
|
+
this.intentId = init.intentId;
|
|
29
|
+
this.lastResult = init.lastResult;
|
|
30
|
+
this.attempts = init.attempts;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Canonical `/fund` request envelope for Gateway `POST /harbor/intents/{intentId}/fund`. */
|
|
34
|
+
export function buildX402FundRequestEnvelope(intentId) {
|
|
35
|
+
const trimmed = intentId.trim();
|
|
36
|
+
if (!trimmed) {
|
|
37
|
+
throw new Error("fundWithX402: intentId is required");
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
intentId: trimmed,
|
|
41
|
+
method: "POST",
|
|
42
|
+
path: `/harbor/intents/${trimmed}/fund`,
|
|
43
|
+
body: FUND_REQUEST_BODY,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function isFundingComplete(result) {
|
|
47
|
+
if (result.capabilityToken?.trim()) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return result.statusCode === 200 && result.funded;
|
|
51
|
+
}
|
|
52
|
+
function isTerminalFundingFailure(result) {
|
|
53
|
+
const status = result.funding?.status?.trim();
|
|
54
|
+
return status !== undefined && TERMINAL_X402_FUNDING_STATUSES.has(status);
|
|
55
|
+
}
|
|
56
|
+
function failureMessage(result) {
|
|
57
|
+
const status = result.funding?.status ?? result.state;
|
|
58
|
+
return `x402 funding failed for intent ${result.intentId} (status=${status})`;
|
|
59
|
+
}
|
|
60
|
+
async function sleep(ms) {
|
|
61
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Orchestrate x402 `/fund`: handle 402 signing, retry with `payment-signature`, and poll 202 until funded.
|
|
65
|
+
*/
|
|
66
|
+
export async function executeFundWithX402(params) {
|
|
67
|
+
const intentId = params.intentId.trim();
|
|
68
|
+
if (!intentId) {
|
|
69
|
+
throw new Error("fundWithX402: intentId is required");
|
|
70
|
+
}
|
|
71
|
+
const maxAttempts = Math.max(1, params.pollOptions?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS);
|
|
72
|
+
const intervalMs = Math.max(0, params.pollOptions?.intervalMs ?? DEFAULT_INTERVAL_MS);
|
|
73
|
+
const envelope = buildX402FundRequestEnvelope(intentId);
|
|
74
|
+
let paymentSignature;
|
|
75
|
+
let result = await params.fund({ recognitionProof: params.recognitionProof });
|
|
76
|
+
if (result.statusCode === 402) {
|
|
77
|
+
if (!result.paymentRequired?.trim()) {
|
|
78
|
+
throw new PaybondX402FundingFailedError("x402 fund challenge missing payment-required header", { intentId, lastResult: result });
|
|
79
|
+
}
|
|
80
|
+
paymentSignature = (await params.signPayment(result.paymentRequired)).trim();
|
|
81
|
+
if (!paymentSignature) {
|
|
82
|
+
throw new PaybondX402FundingFailedError("x402 signPayment returned an empty payment signature", {
|
|
83
|
+
intentId,
|
|
84
|
+
lastResult: result,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const retryProof = await params.issueRecognitionProof(envelope);
|
|
88
|
+
result = await params.fund({
|
|
89
|
+
recognitionProof: retryProof,
|
|
90
|
+
paymentSignature,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (isTerminalFundingFailure(result)) {
|
|
94
|
+
throw new PaybondX402FundingFailedError(failureMessage(result), { intentId, lastResult: result });
|
|
95
|
+
}
|
|
96
|
+
if (isFundingComplete(result)) {
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
let attempts = 0;
|
|
100
|
+
while (result.statusCode === 202 || (!isFundingComplete(result) && result.statusCode === 200)) {
|
|
101
|
+
attempts += 1;
|
|
102
|
+
if (attempts > maxAttempts) {
|
|
103
|
+
throw new PaybondX402FundingPendingError(`x402 funding still pending after ${maxAttempts} poll attempt(s) for intent ${intentId}`, { intentId, lastResult: result, attempts: maxAttempts });
|
|
104
|
+
}
|
|
105
|
+
if (intervalMs > 0) {
|
|
106
|
+
await sleep(intervalMs);
|
|
107
|
+
}
|
|
108
|
+
const pollProof = await params.issueRecognitionProof(envelope);
|
|
109
|
+
result = await params.fund({
|
|
110
|
+
recognitionProof: pollProof,
|
|
111
|
+
...(paymentSignature ? { paymentSignature } : {}),
|
|
112
|
+
});
|
|
113
|
+
if (isTerminalFundingFailure(result)) {
|
|
114
|
+
throw new PaybondX402FundingFailedError(failureMessage(result), { intentId, lastResult: result });
|
|
115
|
+
}
|
|
116
|
+
if (isFundingComplete(result)) {
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (isFundingComplete(result)) {
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
throw new PaybondX402FundingFailedError(`unexpected x402 fund response HTTP ${result.statusCode} for intent ${intentId}`, { intentId, lastResult: result });
|
|
124
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paybond/kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
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",
|
|
@@ -46,6 +46,14 @@
|
|
|
46
46
|
"types": "./dist/mcp/index.d.ts",
|
|
47
47
|
"import": "./dist/mcp/index.js"
|
|
48
48
|
},
|
|
49
|
+
"./mastra": {
|
|
50
|
+
"types": "./dist/mastra/index.d.ts",
|
|
51
|
+
"import": "./dist/mastra/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./cloudflare-agents": {
|
|
54
|
+
"types": "./dist/cloudflare-agents/index.d.ts",
|
|
55
|
+
"import": "./dist/cloudflare-agents/index.js"
|
|
56
|
+
},
|
|
49
57
|
"./policy": {
|
|
50
58
|
"types": "./dist/policy/index.d.ts",
|
|
51
59
|
"import": "./dist/policy/index.js"
|
|
@@ -124,6 +132,8 @@
|
|
|
124
132
|
"@anthropic-ai/claude-agent-sdk": ">=0.2.100",
|
|
125
133
|
"@langchain/core": ">=0.3.0",
|
|
126
134
|
"@langchain/langgraph": ">=0.2.50",
|
|
135
|
+
"@mastra/core": ">=1.0.0",
|
|
136
|
+
"agents": ">=0.10.0",
|
|
127
137
|
"@openai/agents": ">=0.12.0",
|
|
128
138
|
"ai": ">=4.0.0",
|
|
129
139
|
"zod": "^3.25.32 || ^4.2.0"
|
|
@@ -138,6 +148,12 @@
|
|
|
138
148
|
"@langchain/langgraph": {
|
|
139
149
|
"optional": true
|
|
140
150
|
},
|
|
151
|
+
"@mastra/core": {
|
|
152
|
+
"optional": true
|
|
153
|
+
},
|
|
154
|
+
"agents": {
|
|
155
|
+
"optional": true
|
|
156
|
+
},
|
|
141
157
|
"@openai/agents": {
|
|
142
158
|
"optional": true
|
|
143
159
|
},
|
|
@@ -155,13 +171,15 @@
|
|
|
155
171
|
"ajv": "^8.17.1",
|
|
156
172
|
"blake3": "^2.1.7",
|
|
157
173
|
"uuid": "^14.0.0",
|
|
158
|
-
"zod": "^
|
|
174
|
+
"zod": "^3.25.32 || ^4.2.0"
|
|
159
175
|
},
|
|
160
176
|
"devDependencies": {
|
|
161
177
|
"@anthropic-ai/claude-agent-sdk": "^0.3.197",
|
|
162
178
|
"@langchain/core": "^1.2.1",
|
|
163
179
|
"@langchain/langgraph": "^1.4.7",
|
|
164
180
|
"@langchain/langgraph-sdk": "^1.9.25",
|
|
181
|
+
"@mastra/core": "^1.49.0",
|
|
182
|
+
"agents": "^0.17.3",
|
|
165
183
|
"@openai/agents": "^0.12.0",
|
|
166
184
|
"@types/node": "^22.10.0",
|
|
167
185
|
"ai": "^7.0.4",
|
package/templates/manifest.json
CHANGED
|
@@ -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.
|
|
16
|
+
"@paybond/kit": "^0.11.11",
|
|
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.
|
|
36
|
+
"@paybond/kit": "^0.11.11",
|
|
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.
|
|
55
|
+
"@paybond/kit": "^0.11.11",
|
|
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.
|
|
74
|
+
"@paybond/kit": "^0.11.11",
|
|
75
75
|
"@openai/agents": "^0.4.0",
|
|
76
76
|
"zod": "^4.2.0"
|
|
77
77
|
},
|
|
@@ -90,13 +90,32 @@
|
|
|
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.
|
|
93
|
+
"@paybond/kit": "^0.11.11",
|
|
94
94
|
"@anthropic-ai/claude-agent-sdk": "^0.2.100",
|
|
95
95
|
"zod": "^4.2.0"
|
|
96
96
|
},
|
|
97
97
|
"demo_import": "@paybond/kit/claude-agents",
|
|
98
98
|
"demo_export": "runClaudeAgentsSandboxDemo"
|
|
99
99
|
},
|
|
100
|
+
{
|
|
101
|
+
"id": "mastra-travel-agent",
|
|
102
|
+
"repo": "paybond-mastra-travel-agent",
|
|
103
|
+
"title": "Travel booking agent (Mastra)",
|
|
104
|
+
"language": "typescript",
|
|
105
|
+
"framework": "mastra",
|
|
106
|
+
"preset": "travel",
|
|
107
|
+
"primary_operation": "travel.book_hotel",
|
|
108
|
+
"requested_spend_cents": 18700,
|
|
109
|
+
"evidence_preset": "cost_and_completion",
|
|
110
|
+
"smoke_result_body": { "status": "completed", "cost_cents": 18700 },
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"@paybond/kit": "^0.11.11",
|
|
113
|
+
"@mastra/core": "^1.49.0",
|
|
114
|
+
"zod": "^4.2.0"
|
|
115
|
+
},
|
|
116
|
+
"demo_import": "@paybond/kit/mastra",
|
|
117
|
+
"demo_export": "runMastraSandboxDemo"
|
|
118
|
+
},
|
|
100
119
|
{
|
|
101
120
|
"id": "mcp-coding-agent",
|
|
102
121
|
"repo": "paybond-mcp-coding-agent",
|
|
@@ -110,7 +129,7 @@
|
|
|
110
129
|
"evidence_preset": "cost_and_completion",
|
|
111
130
|
"smoke_result_body": { "status": "completed", "cost_cents": 500 },
|
|
112
131
|
"dependencies": {
|
|
113
|
-
"@paybond/kit": "^0.11.
|
|
132
|
+
"@paybond/kit": "^0.11.11"
|
|
114
133
|
},
|
|
115
134
|
"mcp_tool_policy": "spend-write"
|
|
116
135
|
},
|
|
@@ -127,7 +146,7 @@
|
|
|
127
146
|
"evidence_preset": "cost_and_completion",
|
|
128
147
|
"smoke_result_body": { "status": "completed", "cost_cents": 12000 },
|
|
129
148
|
"dependencies": {
|
|
130
|
-
"@paybond/kit": "^0.11.
|
|
149
|
+
"@paybond/kit": "^0.11.11"
|
|
131
150
|
},
|
|
132
151
|
"demo_mode": "generic"
|
|
133
152
|
},
|
|
@@ -143,7 +162,7 @@
|
|
|
143
162
|
"evidence_preset": "cost_and_completion",
|
|
144
163
|
"smoke_result_body": { "status": "completed", "cost_cents": 12500 },
|
|
145
164
|
"dependencies": {
|
|
146
|
-
"@paybond/kit": "^0.11.
|
|
165
|
+
"@paybond/kit": "^0.11.11"
|
|
147
166
|
},
|
|
148
167
|
"demo_mode": "generic"
|
|
149
168
|
},
|
|
@@ -159,7 +178,7 @@
|
|
|
159
178
|
"evidence_preset": "cost_and_completion",
|
|
160
179
|
"smoke_result_body": { "status": "completed", "cost_cents": 2900 },
|
|
161
180
|
"python_dependencies": {
|
|
162
|
-
"paybond-kit": ">=0.11.
|
|
181
|
+
"paybond-kit": ">=0.11.11",
|
|
163
182
|
"langgraph": ">=1.2.0"
|
|
164
183
|
},
|
|
165
184
|
"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.
|
|
10
|
+
"@paybond/kit": "^0.12.0",
|
|
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.
|
|
173
|
-
"resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.
|
|
174
|
-
"integrity": "sha512-
|
|
172
|
+
"version": "0.12.0",
|
|
173
|
+
"resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.12.0.tgz",
|
|
174
|
+
"integrity": "sha512-iAluOkqE8aINum1GF/LkR6Oi04xH9cNCZDJRF5BBFUQMqcNUpN1g/zNQK78jIGVlwcssexnLmiet31Z0NJ5jbg==",
|
|
175
175
|
"license": "Apache-2.0",
|
|
176
176
|
"dependencies": {
|
|
177
177
|
"@noble/ed25519": "^2.2.1",
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
"ajv": "^8.17.1",
|
|
181
181
|
"blake3": "^2.1.7",
|
|
182
182
|
"uuid": "^14.0.0",
|
|
183
|
-
"zod": "^
|
|
183
|
+
"zod": "^3.25.32 || ^4.2.0"
|
|
184
184
|
},
|
|
185
185
|
"bin": {
|
|
186
186
|
"paybond": "dist/cli.js",
|
|
@@ -195,7 +195,9 @@
|
|
|
195
195
|
"@anthropic-ai/claude-agent-sdk": ">=0.2.100",
|
|
196
196
|
"@langchain/core": ">=0.3.0",
|
|
197
197
|
"@langchain/langgraph": ">=0.2.50",
|
|
198
|
+
"@mastra/core": ">=1.0.0",
|
|
198
199
|
"@openai/agents": ">=0.12.0",
|
|
200
|
+
"agents": ">=0.10.0",
|
|
199
201
|
"ai": ">=4.0.0",
|
|
200
202
|
"zod": "^3.25.32 || ^4.2.0"
|
|
201
203
|
},
|
|
@@ -209,9 +211,15 @@
|
|
|
209
211
|
"@langchain/langgraph": {
|
|
210
212
|
"optional": true
|
|
211
213
|
},
|
|
214
|
+
"@mastra/core": {
|
|
215
|
+
"optional": true
|
|
216
|
+
},
|
|
212
217
|
"@openai/agents": {
|
|
213
218
|
"optional": true
|
|
214
219
|
},
|
|
220
|
+
"agents": {
|
|
221
|
+
"optional": true
|
|
222
|
+
},
|
|
215
223
|
"ai": {
|
|
216
224
|
"optional": true
|
|
217
225
|
},
|
|
@@ -798,9 +806,9 @@
|
|
|
798
806
|
}
|
|
799
807
|
},
|
|
800
808
|
"node_modules/hono": {
|
|
801
|
-
"version": "4.12.
|
|
802
|
-
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.
|
|
803
|
-
"integrity": "sha512-
|
|
809
|
+
"version": "4.12.28",
|
|
810
|
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.28.tgz",
|
|
811
|
+
"integrity": "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==",
|
|
804
812
|
"license": "MIT",
|
|
805
813
|
"optional": true,
|
|
806
814
|
"engines": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation commerce.checkout --requested-spend-cents 4500 --result-body '{\"status\":\"completed\",\"cost_cents\":4500}' --format json"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@paybond/kit": "^0.11.
|
|
11
|
+
"@paybond/kit": "^0.11.11",
|
|
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.
|
|
9
|
+
"@paybond/kit": "^0.12.0"
|
|
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.
|
|
51
|
-
"resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.
|
|
52
|
-
"integrity": "sha512-
|
|
50
|
+
"version": "0.12.0",
|
|
51
|
+
"resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.12.0.tgz",
|
|
52
|
+
"integrity": "sha512-iAluOkqE8aINum1GF/LkR6Oi04xH9cNCZDJRF5BBFUQMqcNUpN1g/zNQK78jIGVlwcssexnLmiet31Z0NJ5jbg==",
|
|
53
53
|
"license": "Apache-2.0",
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@noble/ed25519": "^2.2.1",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"ajv": "^8.17.1",
|
|
59
59
|
"blake3": "^2.1.7",
|
|
60
60
|
"uuid": "^14.0.0",
|
|
61
|
-
"zod": "^
|
|
61
|
+
"zod": "^3.25.32 || ^4.2.0"
|
|
62
62
|
},
|
|
63
63
|
"bin": {
|
|
64
64
|
"paybond": "dist/cli.js",
|
|
@@ -73,7 +73,9 @@
|
|
|
73
73
|
"@anthropic-ai/claude-agent-sdk": ">=0.2.100",
|
|
74
74
|
"@langchain/core": ">=0.3.0",
|
|
75
75
|
"@langchain/langgraph": ">=0.2.50",
|
|
76
|
+
"@mastra/core": ">=1.0.0",
|
|
76
77
|
"@openai/agents": ">=0.12.0",
|
|
78
|
+
"agents": ">=0.10.0",
|
|
77
79
|
"ai": ">=4.0.0",
|
|
78
80
|
"zod": "^3.25.32 || ^4.2.0"
|
|
79
81
|
},
|
|
@@ -87,9 +89,15 @@
|
|
|
87
89
|
"@langchain/langgraph": {
|
|
88
90
|
"optional": true
|
|
89
91
|
},
|
|
92
|
+
"@mastra/core": {
|
|
93
|
+
"optional": true
|
|
94
|
+
},
|
|
90
95
|
"@openai/agents": {
|
|
91
96
|
"optional": true
|
|
92
97
|
},
|
|
98
|
+
"agents": {
|
|
99
|
+
"optional": true
|
|
100
|
+
},
|
|
93
101
|
"ai": {
|
|
94
102
|
"optional": true
|
|
95
103
|
},
|
|
@@ -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 --result-body '{\"status\":\"completed\",\"cost_cents\":12500}' --format json"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@paybond/kit": "^0.11.
|
|
11
|
+
"@paybond/kit": "^0.11.11"
|
|
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.
|
|
10
|
+
"@paybond/kit": "^0.12.0",
|
|
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.
|
|
264
|
-
"resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.
|
|
265
|
-
"integrity": "sha512-
|
|
263
|
+
"version": "0.12.0",
|
|
264
|
+
"resolved": "https://registry.npmjs.org/@paybond/kit/-/kit-0.12.0.tgz",
|
|
265
|
+
"integrity": "sha512-iAluOkqE8aINum1GF/LkR6Oi04xH9cNCZDJRF5BBFUQMqcNUpN1g/zNQK78jIGVlwcssexnLmiet31Z0NJ5jbg==",
|
|
266
266
|
"license": "Apache-2.0",
|
|
267
267
|
"dependencies": {
|
|
268
268
|
"@noble/ed25519": "^2.2.1",
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
"ajv": "^8.17.1",
|
|
272
272
|
"blake3": "^2.1.7",
|
|
273
273
|
"uuid": "^14.0.0",
|
|
274
|
-
"zod": "^
|
|
274
|
+
"zod": "^3.25.32 || ^4.2.0"
|
|
275
275
|
},
|
|
276
276
|
"bin": {
|
|
277
277
|
"paybond": "dist/cli.js",
|
|
@@ -286,7 +286,9 @@
|
|
|
286
286
|
"@anthropic-ai/claude-agent-sdk": ">=0.2.100",
|
|
287
287
|
"@langchain/core": ">=0.3.0",
|
|
288
288
|
"@langchain/langgraph": ">=0.2.50",
|
|
289
|
+
"@mastra/core": ">=1.0.0",
|
|
289
290
|
"@openai/agents": ">=0.12.0",
|
|
291
|
+
"agents": ">=0.10.0",
|
|
290
292
|
"ai": ">=4.0.0",
|
|
291
293
|
"zod": "^3.25.32 || ^4.2.0"
|
|
292
294
|
},
|
|
@@ -300,9 +302,15 @@
|
|
|
300
302
|
"@langchain/langgraph": {
|
|
301
303
|
"optional": true
|
|
302
304
|
},
|
|
305
|
+
"@mastra/core": {
|
|
306
|
+
"optional": true
|
|
307
|
+
},
|
|
303
308
|
"@openai/agents": {
|
|
304
309
|
"optional": true
|
|
305
310
|
},
|
|
311
|
+
"agents": {
|
|
312
|
+
"optional": true
|
|
313
|
+
},
|
|
306
314
|
"ai": {
|
|
307
315
|
"optional": true
|
|
308
316
|
},
|
|
@@ -846,9 +854,9 @@
|
|
|
846
854
|
}
|
|
847
855
|
},
|
|
848
856
|
"node_modules/hono": {
|
|
849
|
-
"version": "4.12.
|
|
850
|
-
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.
|
|
851
|
-
"integrity": "sha512-
|
|
857
|
+
"version": "4.12.28",
|
|
858
|
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.28.tgz",
|
|
859
|
+
"integrity": "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==",
|
|
852
860
|
"license": "MIT",
|
|
853
861
|
"engines": {
|
|
854
862
|
"node": ">=16.9.0"
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"smoke": "paybond agent sandbox smoke --policy-file paybond.policy.yaml --operation travel.book_hotel --requested-spend-cents 18700 --result-body '{\"status\":\"completed\",\"cost_cents\":18700}' --format json"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@paybond/kit": "^0.11.
|
|
11
|
+
"@paybond/kit": "^0.11.11",
|
|
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.
|
|
1
|
+
paybond-kit>=0.11.11
|
|
2
2
|
langgraph>=1.2.0
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: smoke
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
smoke:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: actions/setup-node@v4
|
|
14
|
+
with:
|
|
15
|
+
node-version: "22"
|
|
16
|
+
cache: npm
|
|
17
|
+
- run: npm ci
|
|
18
|
+
- run: npm run smoke
|
|
19
|
+
env:
|
|
20
|
+
PAYBOND_API_KEY: ${{ secrets.PAYBOND_SANDBOX_API_KEY }}
|