agents 0.0.0-d72c6a2 → 0.0.0-d7b2f14
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 +5 -3
- package/dist/ai-chat-agent.d.ts +99 -19
- package/dist/ai-chat-agent.js +804 -351
- package/dist/ai-chat-agent.js.map +1 -1
- package/dist/ai-chat-v5-migration-BSiGZmYU.js +155 -0
- package/dist/ai-chat-v5-migration-BSiGZmYU.js.map +1 -0
- package/dist/ai-chat-v5-migration.d.ts +7 -4
- package/dist/ai-chat-v5-migration.js +3 -19
- package/dist/ai-react.d.ts +25 -23
- package/dist/ai-react.js +409 -304
- package/dist/ai-react.js.map +1 -1
- package/dist/ai-types-81H_-Uxh.d.ts +103 -0
- package/dist/ai-types-CrMqkwc_.js +24 -0
- package/dist/ai-types-CrMqkwc_.js.map +1 -0
- package/dist/ai-types.d.ts +6 -91
- package/dist/ai-types.js +3 -7
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +28 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client-B3SR12TQ.js +117 -0
- package/dist/client-B3SR12TQ.js.map +1 -0
- package/dist/client-BAQA84dr.d.ts +104 -0
- package/dist/client-CFhjXCiO.js +1093 -0
- package/dist/client-CFhjXCiO.js.map +1 -0
- package/dist/client-z9RQJDtK.d.ts +833 -0
- package/dist/client.d.ts +11 -92
- package/dist/client.js +4 -12
- package/dist/codemode/ai.d.ts +27 -0
- package/dist/codemode/ai.js +151 -0
- package/dist/codemode/ai.js.map +1 -0
- package/dist/do-oauth-client-provider-C2CHH5x-.d.ts +55 -0
- package/dist/do-oauth-client-provider-CwqK5SXm.js +94 -0
- package/dist/do-oauth-client-provider-CwqK5SXm.js.map +1 -0
- package/dist/index-BUle9RiP.d.ts +58 -0
- package/dist/index-D3s0zwxa.d.ts +587 -0
- package/dist/index.d.ts +56 -550
- package/dist/index.js +7 -31
- package/dist/mcp/client.d.ts +4 -11
- package/dist/mcp/client.js +4 -9
- package/dist/mcp/do-oauth-client-provider.d.ts +2 -42
- package/dist/mcp/do-oauth-client-provider.js +3 -7
- package/dist/mcp/index.d.ts +188 -92
- package/dist/mcp/index.js +1430 -1012
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/x402.d.ts +34 -0
- package/dist/mcp/x402.js +198 -0
- package/dist/mcp/x402.js.map +1 -0
- package/dist/mcp-BwPscEiF.d.ts +61 -0
- package/dist/observability/index.d.ts +3 -46
- package/dist/observability/index.js +7 -11
- package/dist/react-D9Ou_tyQ.d.ts +113 -0
- package/dist/react.d.ts +10 -123
- package/dist/react.js +183 -112
- package/dist/react.js.map +1 -1
- package/dist/schedule.d.ts +13 -10
- package/dist/schedule.js +43 -31
- package/dist/schedule.js.map +1 -1
- package/dist/serializable-faDkMCai.d.ts +39 -0
- package/dist/serializable.d.ts +7 -32
- package/dist/serializable.js +1 -1
- package/dist/src-CNAXL7wY.js +1182 -0
- package/dist/src-CNAXL7wY.js.map +1 -0
- package/package.json +71 -32
- package/dist/ai-chat-v5-migration.js.map +0 -1
- package/dist/ai-types.js.map +0 -1
- package/dist/chunk-AVYJQSLW.js +0 -17
- package/dist/chunk-AVYJQSLW.js.map +0 -1
- package/dist/chunk-LL2AFX7V.js +0 -109
- package/dist/chunk-LL2AFX7V.js.map +0 -1
- package/dist/chunk-MH46VMM4.js +0 -612
- package/dist/chunk-MH46VMM4.js.map +0 -1
- package/dist/chunk-QEVM4BVL.js +0 -116
- package/dist/chunk-QEVM4BVL.js.map +0 -1
- package/dist/chunk-UJVEAURM.js +0 -150
- package/dist/chunk-UJVEAURM.js.map +0 -1
- package/dist/chunk-YDUDMOL6.js +0 -1296
- package/dist/chunk-YDUDMOL6.js.map +0 -1
- package/dist/client-CvaJdLQA.d.ts +0 -5015
- package/dist/client.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/do-oauth-client-provider.js.map +0 -1
- package/dist/observability/index.js.map +0 -1
- package/dist/serializable.js.map +0 -1
- package/src/index.ts +0 -1947
package/dist/mcp/x402.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { base, baseSepolia } from "viem/chains";
|
|
2
|
+
import { processPriceToAtomicAmount } from "x402/shared";
|
|
3
|
+
import { exact } from "x402/schemes";
|
|
4
|
+
import { useFacilitator } from "x402/verify";
|
|
5
|
+
import { createWalletClient, http } from "viem";
|
|
6
|
+
import { createPaymentHeader } from "x402/client";
|
|
7
|
+
|
|
8
|
+
//#region src/mcp/x402.ts
|
|
9
|
+
function withX402(server, cfg) {
|
|
10
|
+
const { verify, settle } = useFacilitator(cfg.facilitator);
|
|
11
|
+
const x402Version = cfg.version ?? 1;
|
|
12
|
+
function paidTool(name, description, priceUSD, paramsSchema, annotations, cb) {
|
|
13
|
+
return server.registerTool(name, {
|
|
14
|
+
description,
|
|
15
|
+
inputSchema: paramsSchema,
|
|
16
|
+
annotations,
|
|
17
|
+
_meta: {
|
|
18
|
+
"agents-x402/paymentRequired": true,
|
|
19
|
+
"agents-x402/priceUSD": priceUSD
|
|
20
|
+
}
|
|
21
|
+
}, (async (args, extra) => {
|
|
22
|
+
const atomic = processPriceToAtomicAmount(priceUSD, cfg.network);
|
|
23
|
+
if ("error" in atomic) {
|
|
24
|
+
const payload = {
|
|
25
|
+
x402Version,
|
|
26
|
+
error: "PRICE_COMPUTE_FAILED"
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
isError: true,
|
|
30
|
+
_meta: { "x402/error": payload },
|
|
31
|
+
content: [{
|
|
32
|
+
type: "text",
|
|
33
|
+
text: JSON.stringify(payload)
|
|
34
|
+
}]
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const { maxAmountRequired, asset } = atomic;
|
|
38
|
+
const requirements = {
|
|
39
|
+
scheme: "exact",
|
|
40
|
+
network: cfg.network,
|
|
41
|
+
maxAmountRequired,
|
|
42
|
+
payTo: cfg.recipient,
|
|
43
|
+
asset: asset.address,
|
|
44
|
+
maxTimeoutSeconds: 300,
|
|
45
|
+
resource: `x402://${name}`,
|
|
46
|
+
mimeType: "application/json",
|
|
47
|
+
description,
|
|
48
|
+
extra: "eip712" in asset ? asset.eip712 : void 0
|
|
49
|
+
};
|
|
50
|
+
const headers = extra?.requestInfo?.headers ?? {};
|
|
51
|
+
const token = extra?._meta?.["x402/payment"] ?? headers["X-PAYMENT"];
|
|
52
|
+
const paymentRequired = (reason = "PAYMENT_REQUIRED", extraFields = {}) => {
|
|
53
|
+
const payload = {
|
|
54
|
+
x402Version,
|
|
55
|
+
error: reason,
|
|
56
|
+
accepts: [requirements],
|
|
57
|
+
...extraFields
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
isError: true,
|
|
61
|
+
_meta: { "x402/error": payload },
|
|
62
|
+
content: [{
|
|
63
|
+
type: "text",
|
|
64
|
+
text: JSON.stringify(payload)
|
|
65
|
+
}]
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
if (!token || typeof token !== "string") return paymentRequired();
|
|
69
|
+
let decoded;
|
|
70
|
+
try {
|
|
71
|
+
decoded = exact.evm.decodePayment(token);
|
|
72
|
+
decoded.x402Version = x402Version;
|
|
73
|
+
} catch {
|
|
74
|
+
return paymentRequired("INVALID_PAYMENT");
|
|
75
|
+
}
|
|
76
|
+
const vr = await verify(decoded, requirements);
|
|
77
|
+
if (!vr.isValid) return paymentRequired(vr.invalidReason ?? "INVALID_PAYMENT", { payer: vr.payer });
|
|
78
|
+
let result;
|
|
79
|
+
let failed = false;
|
|
80
|
+
try {
|
|
81
|
+
result = await cb(args, extra);
|
|
82
|
+
if (result && typeof result === "object" && "isError" in result && result.isError) failed = true;
|
|
83
|
+
} catch (e) {
|
|
84
|
+
failed = true;
|
|
85
|
+
result = {
|
|
86
|
+
isError: true,
|
|
87
|
+
content: [{
|
|
88
|
+
type: "text",
|
|
89
|
+
text: `Tool execution failed: ${String(e)}`
|
|
90
|
+
}]
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (!failed) try {
|
|
94
|
+
const s = await settle(decoded, requirements);
|
|
95
|
+
if (s.success) {
|
|
96
|
+
result._meta ??= {};
|
|
97
|
+
result._meta["x402/payment-response"] = {
|
|
98
|
+
success: true,
|
|
99
|
+
transaction: s.transaction,
|
|
100
|
+
network: s.network,
|
|
101
|
+
payer: s.payer
|
|
102
|
+
};
|
|
103
|
+
} else return paymentRequired(s.errorReason ?? "SETTLEMENT_FAILED");
|
|
104
|
+
} catch {
|
|
105
|
+
return paymentRequired("SETTLEMENT_FAILED");
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
Object.defineProperty(server, "paidTool", {
|
|
111
|
+
value: paidTool,
|
|
112
|
+
writable: false,
|
|
113
|
+
enumerable: false,
|
|
114
|
+
configurable: true
|
|
115
|
+
});
|
|
116
|
+
return server;
|
|
117
|
+
}
|
|
118
|
+
const toChain = (network) => {
|
|
119
|
+
switch (network) {
|
|
120
|
+
case "base": return base;
|
|
121
|
+
case "base-sepolia": return baseSepolia;
|
|
122
|
+
default: throw new Error(`Unsupported network: ${network}`);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
function withX402Client(client, x402Config) {
|
|
126
|
+
const { network, account, version } = x402Config;
|
|
127
|
+
const wallet = createWalletClient({
|
|
128
|
+
account,
|
|
129
|
+
transport: http(),
|
|
130
|
+
chain: toChain(network)
|
|
131
|
+
});
|
|
132
|
+
const maxPaymentValue = x402Config.maxPaymentValue ?? BigInt(.1 * 10 ** 6);
|
|
133
|
+
const _listTools = client.listTools.bind(client);
|
|
134
|
+
const listTools = async (params, options) => {
|
|
135
|
+
const toolsRes = await _listTools(params, options);
|
|
136
|
+
toolsRes.tools = toolsRes.tools.map((tool) => {
|
|
137
|
+
let description = tool.description;
|
|
138
|
+
if (tool._meta?.["agents-x402/paymentRequired"]) {
|
|
139
|
+
const cost = tool._meta?.["agents-x402/priceUSD"] ? `$${tool._meta?.["agents-x402/priceUSD"]}` : "an unknown amount";
|
|
140
|
+
description += ` (This is a paid tool, you will be charged ${cost} for its execution)`;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
...tool,
|
|
144
|
+
description
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
return toolsRes;
|
|
148
|
+
};
|
|
149
|
+
const _callTool = client.callTool.bind(client);
|
|
150
|
+
const callToolWithPayment = async (x402ConfirmationCallback, params, resultSchema, options) => {
|
|
151
|
+
const res = await _callTool(params, resultSchema, options);
|
|
152
|
+
console.log("res", res);
|
|
153
|
+
const maybeX402Error = res._meta?.["x402/error"];
|
|
154
|
+
if (res.isError && maybeX402Error && maybeX402Error.accepts && Array.isArray(maybeX402Error.accepts) && maybeX402Error.accepts.length > 0) {
|
|
155
|
+
const accepts = maybeX402Error.accepts;
|
|
156
|
+
const confirmationCallback = x402ConfirmationCallback ?? x402Config.confirmationCallback;
|
|
157
|
+
if (confirmationCallback && !await confirmationCallback(accepts)) return {
|
|
158
|
+
isError: true,
|
|
159
|
+
content: [{
|
|
160
|
+
type: "text",
|
|
161
|
+
text: "User declined payment"
|
|
162
|
+
}]
|
|
163
|
+
};
|
|
164
|
+
const req = accepts.find((a) => a?.scheme === "exact" && a?.network === network) ?? accepts[0];
|
|
165
|
+
if (!req || req.scheme !== "exact") return res;
|
|
166
|
+
const maxAmountRequired = BigInt(req.maxAmountRequired);
|
|
167
|
+
if (maxAmountRequired > maxPaymentValue) return {
|
|
168
|
+
isError: true,
|
|
169
|
+
content: [{
|
|
170
|
+
type: "text",
|
|
171
|
+
text: `Payment exceeds client cap: ${maxAmountRequired} > ${maxPaymentValue}`
|
|
172
|
+
}]
|
|
173
|
+
};
|
|
174
|
+
const token = await createPaymentHeader(wallet, version ?? 1, req);
|
|
175
|
+
return _callTool({
|
|
176
|
+
...params,
|
|
177
|
+
_meta: {
|
|
178
|
+
...params._meta,
|
|
179
|
+
"x402/payment": token
|
|
180
|
+
}
|
|
181
|
+
}, resultSchema, options);
|
|
182
|
+
}
|
|
183
|
+
return res;
|
|
184
|
+
};
|
|
185
|
+
const _client = client;
|
|
186
|
+
_client.listTools = listTools;
|
|
187
|
+
Object.defineProperty(_client, "callTool", {
|
|
188
|
+
value: callToolWithPayment,
|
|
189
|
+
writable: false,
|
|
190
|
+
enumerable: false,
|
|
191
|
+
configurable: true
|
|
192
|
+
});
|
|
193
|
+
return _client;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
//#endregion
|
|
197
|
+
export { withX402, withX402Client };
|
|
198
|
+
//# sourceMappingURL=x402.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402.js","names":["decoded: PaymentPayload","result: CallToolResult","listTools: typeof _listTools"],"sources":["../../src/mcp/x402.ts"],"sourcesContent":["/**\n * X402 MCP Integration\n *\n * Based on:\n * - Coinbase's x402 (Apache 2.0): https://github.com/coinbase/x402\n * - @ethanniser and his work at https://github.com/ethanniser/x402-mcp\n */\n\nimport type {\n McpServer,\n RegisteredTool,\n ToolCallback\n} from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport type { Client as MCPClient } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport type {\n CallToolResultSchema,\n CompatibilityCallToolResultSchema,\n CallToolRequest,\n CallToolResult,\n ToolAnnotations\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport type { ZodRawShape } from \"zod\";\nimport { base, baseSepolia, type Chain } from \"viem/chains\";\n\nimport { processPriceToAtomicAmount } from \"x402/shared\";\nimport { exact } from \"x402/schemes\";\nimport { useFacilitator } from \"x402/verify\";\nimport type {\n FacilitatorConfig,\n Network,\n PaymentPayload,\n PaymentRequirements,\n Wallet\n} from \"x402/types\";\nimport type { RequestOptions } from \"@modelcontextprotocol/sdk/shared/protocol.js\";\nimport { createWalletClient, http, type Account } from \"viem\";\nimport { createPaymentHeader } from \"x402/client\";\n\n/*\n ======= SERVER SIDE =======\n*/\n\nexport type X402Config = {\n network: Network;\n recipient: `0x${string}`;\n facilitator: FacilitatorConfig;\n version?: number;\n};\n\nexport interface X402AugmentedServer {\n paidTool<Args extends ZodRawShape>(\n name: string,\n description: string,\n priceUSD: number,\n paramsSchema: Args,\n annotations: ToolAnnotations,\n cb: ToolCallback<Args>\n ): RegisteredTool;\n}\n\nexport function withX402<T extends McpServer>(\n server: McpServer,\n cfg: X402Config\n): T & X402AugmentedServer {\n const { verify, settle } = useFacilitator(cfg.facilitator);\n const x402Version = cfg.version ?? 1;\n\n function paidTool<Args extends ZodRawShape>(\n name: string,\n description: string,\n priceUSD: number,\n paramsSchema: Args,\n annotations: ToolAnnotations,\n cb: ToolCallback<Args>\n ): RegisteredTool {\n return server.registerTool(\n name,\n {\n description,\n inputSchema: paramsSchema,\n annotations,\n _meta: {\n \"agents-x402/paymentRequired\": true,\n \"agents-x402/priceUSD\": priceUSD\n }\n },\n (async (args, extra) => {\n // Build PaymentRequirements for this call\n const atomic = processPriceToAtomicAmount(priceUSD, cfg.network);\n if (\"error\" in atomic) {\n const payload = { x402Version, error: \"PRICE_COMPUTE_FAILED\" };\n return {\n isError: true,\n _meta: { \"x402/error\": payload },\n content: [{ type: \"text\", text: JSON.stringify(payload) }]\n } as const;\n }\n const { maxAmountRequired, asset } = atomic;\n const requirements = {\n scheme: \"exact\" as const,\n network: cfg.network,\n maxAmountRequired,\n payTo: cfg.recipient,\n asset: asset.address,\n maxTimeoutSeconds: 300,\n resource: `x402://${name}`,\n mimeType: \"application/json\" as const,\n description,\n extra: \"eip712\" in asset ? asset.eip712 : undefined\n };\n\n // Get token either from MCP _meta or from header\n const headers = extra?.requestInfo?.headers ?? {};\n const token =\n (extra?._meta?.[\"x402/payment\"] as string | undefined) ??\n headers[\"X-PAYMENT\"];\n\n const paymentRequired = (\n reason = \"PAYMENT_REQUIRED\",\n extraFields: Record<string, unknown> = {}\n ) => {\n const payload = {\n x402Version,\n error: reason,\n accepts: [requirements],\n ...extraFields\n };\n return {\n isError: true,\n _meta: { \"x402/error\": payload },\n content: [{ type: \"text\", text: JSON.stringify(payload) }]\n } as const;\n };\n\n if (!token || typeof token !== \"string\") return paymentRequired();\n\n // Decode & verify\n let decoded: PaymentPayload;\n try {\n decoded = exact.evm.decodePayment(token);\n decoded.x402Version = x402Version;\n } catch {\n return paymentRequired(\"INVALID_PAYMENT\");\n }\n\n const vr = await verify(decoded, requirements);\n if (!vr.isValid) {\n return paymentRequired(vr.invalidReason ?? \"INVALID_PAYMENT\", {\n payer: vr.payer\n });\n }\n\n // Execute tool\n let result: CallToolResult;\n let failed = false;\n try {\n result = await cb(args, extra);\n if (\n result &&\n typeof result === \"object\" &&\n \"isError\" in result &&\n result.isError\n ) {\n failed = true;\n }\n } catch (e) {\n failed = true;\n result = {\n isError: true,\n content: [\n { type: \"text\", text: `Tool execution failed: ${String(e)}` }\n ]\n };\n }\n\n // Settle only on success\n if (!failed) {\n try {\n const s = await settle(decoded, requirements);\n if (s.success) {\n result._meta ??= {};\n result._meta[\"x402/payment-response\"] = {\n success: true,\n transaction: s.transaction,\n network: s.network,\n payer: s.payer\n };\n } else {\n return paymentRequired(s.errorReason ?? \"SETTLEMENT_FAILED\");\n }\n } catch {\n return paymentRequired(\"SETTLEMENT_FAILED\");\n }\n }\n\n return result;\n }) as ToolCallback<Args>\n );\n }\n\n Object.defineProperty(server, \"paidTool\", {\n value: paidTool,\n writable: false,\n enumerable: false,\n configurable: true\n });\n\n // Tell TS the object now also has the paidTool method\n return server as T & X402AugmentedServer;\n}\n\n/*\n ======= CLIENT SIDE =======\n*/\n\nconst toChain = (network: Network): Chain => {\n switch (network) {\n case \"base\":\n return base;\n case \"base-sepolia\":\n return baseSepolia;\n default:\n throw new Error(`Unsupported network: ${network}`);\n }\n};\n\nexport interface X402AugmentedClient {\n callTool(\n x402ConfirmationCallback:\n | ((payment: PaymentRequirements[]) => Promise<boolean>)\n | null,\n params: CallToolRequest[\"params\"],\n resultSchema?:\n | typeof CallToolResultSchema\n | typeof CompatibilityCallToolResultSchema,\n options?: RequestOptions\n ): Promise<CallToolResult>;\n}\n\nexport type X402ClientConfig = {\n network: Network; // we only support base and base-sepolia for now\n account: Account;\n maxPaymentValue?: bigint;\n version?: number;\n confirmationCallback?: (payment: PaymentRequirements[]) => Promise<boolean>; // Confirmation callback for payment\n};\n\nexport function withX402Client<T extends MCPClient>(\n client: T,\n x402Config: X402ClientConfig\n): X402AugmentedClient & T {\n const { network, account, version } = x402Config;\n const wallet = createWalletClient({\n account,\n transport: http(),\n chain: toChain(network)\n });\n\n const maxPaymentValue = x402Config.maxPaymentValue ?? BigInt(0.1 * 10 ** 6); // 0.10 USDC\n\n const _listTools = client.listTools.bind(client);\n\n // Wrap the original method to include payment information in the description\n const listTools: typeof _listTools = async (params, options) => {\n const toolsRes = await _listTools(params, options);\n toolsRes.tools = toolsRes.tools.map((tool) => {\n let description = tool.description;\n // Check _meta for payment information (agents-x402/ is our extension for pre-advertising prices)\n if (tool._meta?.[\"agents-x402/paymentRequired\"]) {\n const cost = tool._meta?.[\"agents-x402/priceUSD\"]\n ? `$${tool._meta?.[\"agents-x402/priceUSD\"]}`\n : \"an unknown amount\";\n description += ` (This is a paid tool, you will be charged ${cost} for its execution)`;\n }\n return {\n ...tool,\n description\n };\n });\n\n // Wrap each tool to add payment support\n\n return toolsRes;\n };\n\n const _callTool = client.callTool.bind(client);\n\n const callToolWithPayment = async (\n x402ConfirmationCallback:\n | ((payment: PaymentRequirements[]) => Promise<boolean>)\n | null,\n params: CallToolRequest[\"params\"],\n resultSchema?:\n | typeof CallToolResultSchema\n | typeof CompatibilityCallToolResultSchema,\n options?: RequestOptions\n ): ReturnType<typeof client.callTool> => {\n // call the tool\n const res = await _callTool(params, resultSchema, options);\n console.log(\"res\", res);\n\n // If it errored and returned accepts, we need to confirm payment\n const maybeX402Error = res._meta?.[\"x402/error\"] as\n | { accepts: PaymentRequirements[] }\n | undefined;\n\n if (\n res.isError &&\n maybeX402Error &&\n maybeX402Error.accepts &&\n Array.isArray(maybeX402Error.accepts) &&\n maybeX402Error.accepts.length > 0\n ) {\n const accepts = maybeX402Error.accepts;\n const confirmationCallback =\n x402ConfirmationCallback ?? x402Config.confirmationCallback;\n\n // Use the x402 confirmation callback if provided\n if (confirmationCallback && !(await confirmationCallback(accepts))) {\n return {\n isError: true,\n content: [{ type: \"text\", text: \"User declined payment\" }]\n };\n }\n\n // Pick the first exact-scheme requirement that matches our network\n // (we're only setting one on the McpAgent side for now)\n const req =\n accepts.find((a) => a?.scheme === \"exact\" && a?.network === network) ??\n accepts[0];\n\n if (!req || req.scheme !== \"exact\") return res;\n\n const maxAmountRequired = BigInt(req.maxAmountRequired);\n if (maxAmountRequired > maxPaymentValue) {\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: `Payment exceeds client cap: ${maxAmountRequired} > ${maxPaymentValue}`\n }\n ]\n };\n }\n\n // Use x402/client to get the X-PAYMENT token\n const token = await createPaymentHeader(\n wallet as Wallet,\n version ?? 1,\n req\n );\n\n // Call the tool with the payment token\n return _callTool(\n {\n ...params,\n _meta: {\n ...params._meta,\n \"x402/payment\": token\n }\n },\n resultSchema,\n options\n );\n }\n\n return res;\n };\n\n const _client = client as X402AugmentedClient & T;\n _client.listTools = listTools;\n Object.defineProperty(_client, \"callTool\", {\n value: callToolWithPayment,\n writable: false,\n enumerable: false,\n configurable: true\n });\n\n return _client;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region src/observability/base.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Base event structure for all observability events
|
|
4
|
+
*/
|
|
5
|
+
type BaseEvent<
|
|
6
|
+
T extends string,
|
|
7
|
+
Payload extends Record<string, unknown> = {}
|
|
8
|
+
> = {
|
|
9
|
+
type: T;
|
|
10
|
+
/**
|
|
11
|
+
* The unique identifier for the event
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/**
|
|
15
|
+
* The message to display in the logs for this event, should the implementation choose to display
|
|
16
|
+
* a human-readable message.
|
|
17
|
+
*/
|
|
18
|
+
displayMessage: string;
|
|
19
|
+
/**
|
|
20
|
+
* The payload of the event
|
|
21
|
+
*/
|
|
22
|
+
payload: Payload & Record<string, unknown>;
|
|
23
|
+
/**
|
|
24
|
+
* The timestamp of the event in milliseconds since epoch
|
|
25
|
+
*/
|
|
26
|
+
timestamp: number;
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/observability/mcp.d.ts
|
|
30
|
+
/**
|
|
31
|
+
* MCP-specific observability events
|
|
32
|
+
* These track the lifecycle of MCP connections and operations
|
|
33
|
+
*/
|
|
34
|
+
type MCPObservabilityEvent =
|
|
35
|
+
| BaseEvent<
|
|
36
|
+
"mcp:client:preconnect",
|
|
37
|
+
{
|
|
38
|
+
serverId: string;
|
|
39
|
+
}
|
|
40
|
+
>
|
|
41
|
+
| BaseEvent<
|
|
42
|
+
"mcp:client:connect",
|
|
43
|
+
{
|
|
44
|
+
url: string;
|
|
45
|
+
transport: string;
|
|
46
|
+
state: string;
|
|
47
|
+
error?: string;
|
|
48
|
+
}
|
|
49
|
+
>
|
|
50
|
+
| BaseEvent<
|
|
51
|
+
"mcp:client:authorize",
|
|
52
|
+
{
|
|
53
|
+
serverId: string;
|
|
54
|
+
authUrl: string;
|
|
55
|
+
clientId?: string;
|
|
56
|
+
}
|
|
57
|
+
>
|
|
58
|
+
| BaseEvent<"mcp:client:discover", {}>;
|
|
59
|
+
//#endregion
|
|
60
|
+
export { BaseEvent as n, MCPObservabilityEvent as t };
|
|
61
|
+
//# sourceMappingURL=mcp-BwPscEiF.d.ts.map
|
|
@@ -1,46 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* The unique identifier for the event
|
|
5
|
-
*/
|
|
6
|
-
id: string;
|
|
7
|
-
/**
|
|
8
|
-
* The message to display in the logs for this event, should the implementation choose to display
|
|
9
|
-
* a human-readable message.
|
|
10
|
-
*/
|
|
11
|
-
displayMessage: string;
|
|
12
|
-
/**
|
|
13
|
-
* The payload of the event
|
|
14
|
-
*/
|
|
15
|
-
payload: Payload;
|
|
16
|
-
/**
|
|
17
|
-
* The timestamp of the event in milliseconds since epoch
|
|
18
|
-
*/
|
|
19
|
-
timestamp: number;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* The type of events that can be emitted by an Agent
|
|
23
|
-
*/
|
|
24
|
-
type ObservabilityEvent = BaseEvent<"state:update", {}> | BaseEvent<"rpc", {
|
|
25
|
-
method: string;
|
|
26
|
-
streaming?: boolean;
|
|
27
|
-
}> | BaseEvent<"message:request" | "message:response", {}> | BaseEvent<"message:clear"> | BaseEvent<"schedule:create" | "schedule:execute" | "schedule:cancel", {
|
|
28
|
-
callback: string;
|
|
29
|
-
id: string;
|
|
30
|
-
}> | BaseEvent<"destroy"> | BaseEvent<"connect", {
|
|
31
|
-
connectionId: string;
|
|
32
|
-
}>;
|
|
33
|
-
interface Observability {
|
|
34
|
-
/**
|
|
35
|
-
* Emit an event for the Agent's observability implementation to handle.
|
|
36
|
-
* @param event - The event to emit
|
|
37
|
-
* @param ctx - The execution context of the invocation
|
|
38
|
-
*/
|
|
39
|
-
emit(event: ObservabilityEvent, ctx: DurableObjectState): void;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* A generic observability implementation that logs events to the console.
|
|
43
|
-
*/
|
|
44
|
-
declare const genericObservability: Observability;
|
|
45
|
-
|
|
46
|
-
export { type Observability, type ObservabilityEvent, genericObservability };
|
|
1
|
+
import "../mcp-BwPscEiF.js";
|
|
2
|
+
import { n as ObservabilityEvent, r as genericObservability, t as Observability } from "../index-BUle9RiP.js";
|
|
3
|
+
export { Observability, ObservabilityEvent, genericObservability };
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import "../
|
|
5
|
-
import "../
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
genericObservability
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import "../ai-types-CrMqkwc_.js";
|
|
2
|
+
import "../client-B3SR12TQ.js";
|
|
3
|
+
import "../client-CFhjXCiO.js";
|
|
4
|
+
import "../do-oauth-client-provider-CwqK5SXm.js";
|
|
5
|
+
import { f as genericObservability } from "../src-CNAXL7wY.js";
|
|
6
|
+
|
|
7
|
+
export { genericObservability };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { m as MCPServersState, t as Agent } from "./index-D3s0zwxa.js";
|
|
2
|
+
import { n as RPCMethod, t as Method } from "./serializable-faDkMCai.js";
|
|
3
|
+
import { i as StreamOptions } from "./client-BAQA84dr.js";
|
|
4
|
+
import { PartySocket } from "partysocket";
|
|
5
|
+
import { usePartySocket } from "partysocket/react";
|
|
6
|
+
|
|
7
|
+
//#region src/react.d.ts
|
|
8
|
+
type QueryObject = Record<string, string | null>;
|
|
9
|
+
/**
|
|
10
|
+
* Options for the useAgent hook
|
|
11
|
+
* @template State Type of the Agent's state
|
|
12
|
+
*/
|
|
13
|
+
type UseAgentOptions<State = unknown> = Omit<
|
|
14
|
+
Parameters<typeof usePartySocket>[0],
|
|
15
|
+
"party" | "room" | "query"
|
|
16
|
+
> & {
|
|
17
|
+
/** Name of the agent to connect to */
|
|
18
|
+
agent: string;
|
|
19
|
+
/** Name of the specific Agent instance */
|
|
20
|
+
name?: string;
|
|
21
|
+
/** Query parameters - can be static object or async function */
|
|
22
|
+
query?: QueryObject | (() => Promise<QueryObject>);
|
|
23
|
+
/** Dependencies for async query caching */
|
|
24
|
+
queryDeps?: unknown[];
|
|
25
|
+
/** Cache TTL in milliseconds for auth tokens/time-sensitive data */
|
|
26
|
+
cacheTtl?: number;
|
|
27
|
+
/** Called when the Agent's state is updated */
|
|
28
|
+
onStateUpdate?: (state: State, source: "server" | "client") => void;
|
|
29
|
+
/** Called when MCP server state is updated */
|
|
30
|
+
onMcpUpdate?: (mcpServers: MCPServersState) => void;
|
|
31
|
+
};
|
|
32
|
+
type AllOptional<T> = T extends [infer A, ...infer R]
|
|
33
|
+
? undefined extends A
|
|
34
|
+
? AllOptional<R>
|
|
35
|
+
: false
|
|
36
|
+
: true;
|
|
37
|
+
type RPCMethods<T> = {
|
|
38
|
+
[K in keyof T as T[K] extends RPCMethod<T[K]> ? K : never]: RPCMethod<T[K]>;
|
|
39
|
+
};
|
|
40
|
+
type OptionalParametersMethod<T extends RPCMethod> =
|
|
41
|
+
AllOptional<Parameters<T>> extends true ? T : never;
|
|
42
|
+
type AgentMethods<T> = Omit<RPCMethods<T>, keyof Agent<any, any>>;
|
|
43
|
+
type OptionalAgentMethods<T> = {
|
|
44
|
+
[K in keyof AgentMethods<T> as AgentMethods<T>[K] extends OptionalParametersMethod<
|
|
45
|
+
AgentMethods<T>[K]
|
|
46
|
+
>
|
|
47
|
+
? K
|
|
48
|
+
: never]: OptionalParametersMethod<AgentMethods<T>[K]>;
|
|
49
|
+
};
|
|
50
|
+
type RequiredAgentMethods<T> = Omit<
|
|
51
|
+
AgentMethods<T>,
|
|
52
|
+
keyof OptionalAgentMethods<T>
|
|
53
|
+
>;
|
|
54
|
+
type AgentPromiseReturnType<T, K$1 extends keyof AgentMethods<T>> =
|
|
55
|
+
ReturnType<AgentMethods<T>[K$1]> extends Promise<any>
|
|
56
|
+
? ReturnType<AgentMethods<T>[K$1]>
|
|
57
|
+
: Promise<ReturnType<AgentMethods<T>[K$1]>>;
|
|
58
|
+
type OptionalArgsAgentMethodCall<AgentT> = <
|
|
59
|
+
K$1 extends keyof OptionalAgentMethods<AgentT>
|
|
60
|
+
>(
|
|
61
|
+
method: K$1,
|
|
62
|
+
args?: Parameters<OptionalAgentMethods<AgentT>[K$1]>,
|
|
63
|
+
streamOptions?: StreamOptions
|
|
64
|
+
) => AgentPromiseReturnType<AgentT, K$1>;
|
|
65
|
+
type RequiredArgsAgentMethodCall<AgentT> = <
|
|
66
|
+
K$1 extends keyof RequiredAgentMethods<AgentT>
|
|
67
|
+
>(
|
|
68
|
+
method: K$1,
|
|
69
|
+
args: Parameters<RequiredAgentMethods<AgentT>[K$1]>,
|
|
70
|
+
streamOptions?: StreamOptions
|
|
71
|
+
) => AgentPromiseReturnType<AgentT, K$1>;
|
|
72
|
+
type AgentMethodCall<AgentT> = OptionalArgsAgentMethodCall<AgentT> &
|
|
73
|
+
RequiredArgsAgentMethodCall<AgentT>;
|
|
74
|
+
type UntypedAgentMethodCall = <T = unknown>(
|
|
75
|
+
method: string,
|
|
76
|
+
args?: unknown[],
|
|
77
|
+
streamOptions?: StreamOptions
|
|
78
|
+
) => Promise<T>;
|
|
79
|
+
type AgentStub<T> = {
|
|
80
|
+
[K in keyof AgentMethods<T>]: (
|
|
81
|
+
...args: Parameters<AgentMethods<T>[K]>
|
|
82
|
+
) => AgentPromiseReturnType<AgentMethods<T>, K>;
|
|
83
|
+
};
|
|
84
|
+
type UntypedAgentStub = Record<string, Method>;
|
|
85
|
+
/**
|
|
86
|
+
* React hook for connecting to an Agent
|
|
87
|
+
*/
|
|
88
|
+
declare function useAgent<State = unknown>(
|
|
89
|
+
options: UseAgentOptions<State>
|
|
90
|
+
): PartySocket & {
|
|
91
|
+
agent: string;
|
|
92
|
+
name: string;
|
|
93
|
+
setState: (state: State) => void;
|
|
94
|
+
call: UntypedAgentMethodCall;
|
|
95
|
+
stub: UntypedAgentStub;
|
|
96
|
+
};
|
|
97
|
+
declare function useAgent<
|
|
98
|
+
AgentT extends {
|
|
99
|
+
get state(): State;
|
|
100
|
+
},
|
|
101
|
+
State
|
|
102
|
+
>(
|
|
103
|
+
options: UseAgentOptions<State>
|
|
104
|
+
): PartySocket & {
|
|
105
|
+
agent: string;
|
|
106
|
+
name: string;
|
|
107
|
+
setState: (state: State) => void;
|
|
108
|
+
call: AgentMethodCall<AgentT>;
|
|
109
|
+
stub: AgentStub<AgentT>;
|
|
110
|
+
};
|
|
111
|
+
//#endregion
|
|
112
|
+
export { useAgent as n, UseAgentOptions as t };
|
|
113
|
+
//# sourceMappingURL=react-D9Ou_tyQ.d.ts.map
|
package/dist/react.d.ts
CHANGED
|
@@ -1,123 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "
|
|
9
|
-
import "
|
|
10
|
-
|
|
11
|
-
import "zod";
|
|
12
|
-
import "@modelcontextprotocol/sdk/shared/protocol.js";
|
|
13
|
-
import "ai";
|
|
14
|
-
import "@modelcontextprotocol/sdk/client/sse.js";
|
|
15
|
-
import "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
16
|
-
import "./mcp/do-oauth-client-provider.js";
|
|
17
|
-
import "@modelcontextprotocol/sdk/client/auth.js";
|
|
18
|
-
import "@modelcontextprotocol/sdk/shared/auth.js";
|
|
19
|
-
import "./observability/index.js";
|
|
20
|
-
import "./ai-types.js";
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Options for the useAgent hook
|
|
24
|
-
* @template State Type of the Agent's state
|
|
25
|
-
*/
|
|
26
|
-
type UseAgentOptions<State = unknown> = Omit<
|
|
27
|
-
Parameters<typeof usePartySocket>[0],
|
|
28
|
-
"party" | "room"
|
|
29
|
-
> & {
|
|
30
|
-
/** Name of the agent to connect to */
|
|
31
|
-
agent: string;
|
|
32
|
-
/** Name of the specific Agent instance */
|
|
33
|
-
name?: string;
|
|
34
|
-
/** Called when the Agent's state is updated */
|
|
35
|
-
onStateUpdate?: (state: State, source: "server" | "client") => void;
|
|
36
|
-
/** Called when MCP server state is updated */
|
|
37
|
-
onMcpUpdate?: (mcpServers: MCPServersState) => void;
|
|
38
|
-
};
|
|
39
|
-
type AllOptional<T> = T extends [infer A, ...infer R]
|
|
40
|
-
? undefined extends A
|
|
41
|
-
? AllOptional<R>
|
|
42
|
-
: false
|
|
43
|
-
: true;
|
|
44
|
-
type RPCMethods<T> = {
|
|
45
|
-
[K in keyof T as T[K] extends RPCMethod<T[K]> ? K : never]: RPCMethod<T[K]>;
|
|
46
|
-
};
|
|
47
|
-
type OptionalParametersMethod<T extends RPCMethod> =
|
|
48
|
-
AllOptional<Parameters<T>> extends true ? T : never;
|
|
49
|
-
type AgentMethods<T> = Omit<RPCMethods<T>, keyof Agent<any, any>>;
|
|
50
|
-
type OptionalAgentMethods<T> = {
|
|
51
|
-
[K in keyof AgentMethods<T> as AgentMethods<T>[K] extends OptionalParametersMethod<
|
|
52
|
-
AgentMethods<T>[K]
|
|
53
|
-
>
|
|
54
|
-
? K
|
|
55
|
-
: never]: OptionalParametersMethod<AgentMethods<T>[K]>;
|
|
56
|
-
};
|
|
57
|
-
type RequiredAgentMethods<T> = Omit<
|
|
58
|
-
AgentMethods<T>,
|
|
59
|
-
keyof OptionalAgentMethods<T>
|
|
60
|
-
>;
|
|
61
|
-
type AgentPromiseReturnType<T, K extends keyof AgentMethods<T>> =
|
|
62
|
-
ReturnType<AgentMethods<T>[K]> extends Promise<any>
|
|
63
|
-
? ReturnType<AgentMethods<T>[K]>
|
|
64
|
-
: Promise<ReturnType<AgentMethods<T>[K]>>;
|
|
65
|
-
type OptionalArgsAgentMethodCall<AgentT> = <
|
|
66
|
-
K extends keyof OptionalAgentMethods<AgentT>
|
|
67
|
-
>(
|
|
68
|
-
method: K,
|
|
69
|
-
args?: Parameters<OptionalAgentMethods<AgentT>[K]>,
|
|
70
|
-
streamOptions?: StreamOptions
|
|
71
|
-
) => AgentPromiseReturnType<AgentT, K>;
|
|
72
|
-
type RequiredArgsAgentMethodCall<AgentT> = <
|
|
73
|
-
K extends keyof RequiredAgentMethods<AgentT>
|
|
74
|
-
>(
|
|
75
|
-
method: K,
|
|
76
|
-
args: Parameters<RequiredAgentMethods<AgentT>[K]>,
|
|
77
|
-
streamOptions?: StreamOptions
|
|
78
|
-
) => AgentPromiseReturnType<AgentT, K>;
|
|
79
|
-
type AgentMethodCall<AgentT> = OptionalArgsAgentMethodCall<AgentT> &
|
|
80
|
-
RequiredArgsAgentMethodCall<AgentT>;
|
|
81
|
-
type UntypedAgentMethodCall = <T = unknown>(
|
|
82
|
-
method: string,
|
|
83
|
-
args?: unknown[],
|
|
84
|
-
streamOptions?: StreamOptions
|
|
85
|
-
) => Promise<T>;
|
|
86
|
-
type AgentStub<T> = {
|
|
87
|
-
[K in keyof AgentMethods<T>]: (
|
|
88
|
-
...args: Parameters<AgentMethods<T>[K]>
|
|
89
|
-
) => AgentPromiseReturnType<AgentMethods<T>, K>;
|
|
90
|
-
};
|
|
91
|
-
type UntypedAgentStub = Record<string, Method>;
|
|
92
|
-
/**
|
|
93
|
-
* React hook for connecting to an Agent
|
|
94
|
-
* @template State Type of the Agent's state
|
|
95
|
-
* @template Agent Type of the Agent
|
|
96
|
-
* @param options Connection options
|
|
97
|
-
* @returns WebSocket connection with setState and call methods
|
|
98
|
-
*/
|
|
99
|
-
declare function useAgent<State = unknown>(
|
|
100
|
-
options: UseAgentOptions<State>
|
|
101
|
-
): PartySocket & {
|
|
102
|
-
agent: string;
|
|
103
|
-
name: string;
|
|
104
|
-
setState: (state: State) => void;
|
|
105
|
-
call: UntypedAgentMethodCall;
|
|
106
|
-
stub: UntypedAgentStub;
|
|
107
|
-
};
|
|
108
|
-
declare function useAgent<
|
|
109
|
-
AgentT extends {
|
|
110
|
-
get state(): State;
|
|
111
|
-
},
|
|
112
|
-
State
|
|
113
|
-
>(
|
|
114
|
-
options: UseAgentOptions<State>
|
|
115
|
-
): PartySocket & {
|
|
116
|
-
agent: string;
|
|
117
|
-
name: string;
|
|
118
|
-
setState: (state: State) => void;
|
|
119
|
-
call: AgentMethodCall<AgentT>;
|
|
120
|
-
stub: AgentStub<AgentT>;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
export { type UseAgentOptions, useAgent };
|
|
1
|
+
import "./client-z9RQJDtK.js";
|
|
2
|
+
import "./mcp-BwPscEiF.js";
|
|
3
|
+
import "./do-oauth-client-provider-C2CHH5x-.js";
|
|
4
|
+
import "./index-BUle9RiP.js";
|
|
5
|
+
import "./ai-types-81H_-Uxh.js";
|
|
6
|
+
import "./index-D3s0zwxa.js";
|
|
7
|
+
import "./serializable-faDkMCai.js";
|
|
8
|
+
import "./client-BAQA84dr.js";
|
|
9
|
+
import { n as useAgent, t as UseAgentOptions } from "./react-D9Ou_tyQ.js";
|
|
10
|
+
export { UseAgentOptions, useAgent };
|