@intentfi/agent-sdk 0.1.0 → 0.1.1

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 CHANGED
@@ -94,6 +94,59 @@ Agents authenticate by signing a SIWE (Sign-In with Ethereum) message with their
94
94
 
95
95
  `Authorization: Bearer ifak_...` is also accepted.
96
96
 
97
+ ## Payments (x402)
98
+
99
+ Some gateway routes may require payment via the x402 protocol. The SDK handles this automatically when you provide an `X402PaymentManager`:
100
+
101
+ ```typescript
102
+ import { IntentFiClient, DefaultX402PaymentManager } from "@intentfi/agent-sdk";
103
+
104
+ const client = new IntentFiClient({
105
+ baseUrl: "https://agentic.intentfi.io",
106
+ apiKey: process.env.INTENTFI_API_KEY,
107
+ transport: "rest",
108
+ paymentManager: new DefaultX402PaymentManager({
109
+ schemes: {
110
+ exact: async ({ context }) => {
111
+ // Sign and return payment payload for context.requirement
112
+ return { /* signed payment fields */ };
113
+ },
114
+ },
115
+ approve: ({ context }) => {
116
+ // Optional gate: return false to reject a payment request
117
+ return true;
118
+ },
119
+ policy: {
120
+ maxAmountAtomic: 1000000n, // optional: max per-payment
121
+ allowedNetworks: ["base-sepolia"], // optional: restrict networks
122
+ },
123
+ }),
124
+ });
125
+ ```
126
+
127
+ When configured:
128
+ - **REST:** the client catches `402` responses, signs payment, and retries with `PAYMENT-SIGNATURE` automatically.
129
+ - **MCP:** the client catches payment challenge tool results and retries with `_meta["x402/payment"]` automatically.
130
+ - **Settlement:** if your payment manager implements `onSettlement`, it receives confirmation with the on-chain transaction hash.
131
+
132
+ CLI note:
133
+ - For CLI x402 payment retries, configure `--x402-payer` and a signing key via `--x402-private-key` or `INTENTFI_X402_PRIVATE_KEY` (fallbacks: `INTENTFI_PRIVATE_KEY`, `AGENT_E2E_PRIVATE_KEY`).
134
+
135
+ If no `paymentManager` is set, payable routes that require payment will throw with `PAYMENT_REQUIRED`.
136
+
137
+ ### x402 Types
138
+
139
+ The SDK exports these types for custom payment manager implementations:
140
+
141
+ - `X402PaymentManager` — interface: `buildPaymentPayload(...)`, `onSettlement?(...)`
142
+ - `X402PaymentRequired` — decoded payment challenge from the gateway
143
+ - `X402PaymentRequirement` — a single accepted payment option (scheme, network, amount, asset, payTo)
144
+ - `X402PaymentPayload` — signed payment sent back to the gateway
145
+ - `X402SettlementResponse` — settlement confirmation (success, transaction, payer)
146
+ - `X402PaymentApproval` — optional approval callback signature
147
+ - `X402PaymentPolicy` — optional policy constraints (maxAmountAtomic, allowedNetworks)
148
+ - `DefaultX402PaymentManager` — default implementation that delegates to per-scheme handlers
149
+
97
150
  ## SDK Methods
98
151
 
99
152
  **Authentication:**
package/dist/cli.js CHANGED
@@ -2,14 +2,18 @@
2
2
  import { createPublicClient, createWalletClient, http, } from "viem";
3
3
  import { privateKeyToAccount } from "viem/accounts";
4
4
  import { arbitrum, base } from "viem/chains";
5
- import { IntentFiClient } from "./client";
5
+ import { DefaultX402PaymentManager, IntentFiClient } from "./client";
6
+ import { createCliExactX402SchemeHandler } from "./x402Signing";
6
7
  async function main() {
7
8
  const args = parseArgs(process.argv.slice(2));
9
+ const apiKey = flagString(args.flags, "api-key");
10
+ const paymentManager = buildCliX402PaymentManager(args.flags, apiKey);
8
11
  const client = new IntentFiClient({
9
12
  baseUrl: flagString(args.flags, "base-url"),
10
- apiKey: flagString(args.flags, "api-key"),
13
+ apiKey,
11
14
  transport: (flagString(args.flags, "transport") ??
12
15
  process.env.INTENTFI_TRANSPORT),
16
+ ...(paymentManager ? { paymentManager } : {}),
13
17
  });
14
18
  if (!args.command) {
15
19
  printUsage();
@@ -316,6 +320,61 @@ function resolveChainAndRpc(chainId, rpcOverride) {
316
320
  }
317
321
  throw new Error(`Unsupported chainId ${chainId}. Pass --rpc-url for custom chains.`);
318
322
  }
323
+ function buildCliX402PaymentManager(flags, apiKey) {
324
+ const x402Enabled = parseBoolean(flagString(flags, "x402-enabled") ?? process.env.INTENTFI_X402_ENABLED, false);
325
+ const payer = flagString(flags, "x402-payer") ??
326
+ process.env.INTENTFI_X402_PAYER;
327
+ if (apiKey) {
328
+ if (!x402Enabled || !payer) {
329
+ return undefined;
330
+ }
331
+ }
332
+ else if (!x402Enabled && !payer) {
333
+ return undefined;
334
+ }
335
+ if (!payer) {
336
+ throw new Error("x402 payer address is required when x402 is enabled. Set --x402-payer or INTENTFI_X402_PAYER.");
337
+ }
338
+ const privateKeyRaw = flagString(flags, "x402-private-key")
339
+ ?? process.env.INTENTFI_X402_PRIVATE_KEY
340
+ ?? process.env.INTENTFI_PRIVATE_KEY
341
+ ?? process.env.AGENT_E2E_PRIVATE_KEY;
342
+ if (!privateKeyRaw) {
343
+ throw new Error("x402 private key is required. Set --x402-private-key or INTENTFI_X402_PRIVATE_KEY.");
344
+ }
345
+ const normalizedPayer = payer.trim().toLowerCase();
346
+ if (!/^0x[0-9a-f]{40}$/.test(normalizedPayer)) {
347
+ throw new Error("x402 payer must be a lowercase 0x-prefixed EVM address.");
348
+ }
349
+ const allowedNetworks = (flagString(flags, "x402-allowed-networks") ??
350
+ process.env.INTENTFI_X402_ALLOWED_NETWORKS ??
351
+ "")
352
+ .split(",")
353
+ .map((value) => value.trim())
354
+ .filter((value) => value.length > 0);
355
+ const maxAmountAtomic = parseOptionalBigInt(flagString(flags, "x402-max-amount-atomic")
356
+ ?? process.env.INTENTFI_X402_MAX_AMOUNT_ATOMIC);
357
+ const autoApprove = parseBoolean(flagString(flags, "x402-auto-approve") ?? process.env.INTENTFI_X402_AUTO_APPROVE, true);
358
+ const privateKey = asHexPrivateKey(privateKeyRaw);
359
+ const paymentManager = new DefaultX402PaymentManager({
360
+ policy: {
361
+ ...(maxAmountAtomic !== undefined ? { maxAmountAtomic } : {}),
362
+ ...(allowedNetworks.length > 0 ? { allowedNetworks } : {}),
363
+ },
364
+ approve: async ({ context }) => {
365
+ if (autoApprove) {
366
+ return true;
367
+ }
368
+ console.error(`x402 payment blocked by policy: operation=${context.operation} network=${context.requirement.network} amount=${context.requirement.amount}`);
369
+ return false;
370
+ },
371
+ });
372
+ paymentManager.registerScheme("exact", createCliExactX402SchemeHandler({
373
+ payer: normalizedPayer,
374
+ privateKey,
375
+ }));
376
+ return paymentManager;
377
+ }
319
378
  function parseArgs(raw) {
320
379
  const command = raw[0];
321
380
  const maybeSubcommand = raw[1];
@@ -410,6 +469,7 @@ function printUsage() {
410
469
  console.log("intentfi watch <workflowId> [--wait-ms 120000] [--min-delay-ms 500] [--max-delay-ms 30000] [--transport rest|mcp]");
411
470
  console.log("intentfi execute <workflowId> [--wait-ms 120000] [--dry-run true|false] [--rpc-url <url>] [--transport rest|mcp]");
412
471
  console.log("for signing flows, set INTENTFI_PRIVATE_KEY (preferred) or pass --private-key for local debugging.");
472
+ console.log("for x402 CLI signing, set INTENTFI_X402_PRIVATE_KEY (or --x402-private-key) and --x402-payer.");
413
473
  }
414
474
  main().catch((error) => {
415
475
  console.error(error instanceof Error ? error.message : error);
package/dist/client.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import type { ActiveSubmissionContext, ExecutionArtifactInput, GatewayWalletType, PrepareActiveResult, SubmittedTransaction, TransportMode, WorkflowDetail } from "./types";
1
+ import type { ActiveOffchainContext, ActiveSubmissionContext, ExecutionArtifactInput, GatewayWalletType, OffchainSubmissionResult, OffchainTypedData, PrepareActiveResult, SubmittedTransaction, TransportMode, WorkflowDetail, X402PaymentApproval, X402PaymentManager, X402PaymentPayload, X402PaymentPolicy, X402PaymentRequired, X402PaymentSchemeHandler, X402SettlementResponse } from "./types";
2
2
  type FetchLike = typeof fetch;
3
3
  type ClientOptions = {
4
4
  baseUrl?: string;
5
5
  apiKey?: string;
6
6
  transport?: TransportMode;
7
7
  fetchImpl?: FetchLike;
8
+ paymentManager?: X402PaymentManager;
8
9
  };
9
10
  type MintKeyArgs = {
10
11
  message: string;
@@ -14,11 +15,42 @@ type MintKeyArgs = {
14
15
  label?: string;
15
16
  expiresAtMs?: number;
16
17
  };
18
+ type McpPaymentRetryOptions = {
19
+ stream?: boolean;
20
+ idempotencyKey?: string;
21
+ paymentPayload?: X402PaymentPayload;
22
+ };
23
+ type DefaultX402PaymentManagerOptions = {
24
+ policy?: X402PaymentPolicy;
25
+ approve?: X402PaymentApproval;
26
+ schemes?: Record<string, X402PaymentSchemeHandler>;
27
+ };
28
+ export declare class DefaultX402PaymentManager implements X402PaymentManager {
29
+ private readonly policy;
30
+ private readonly approve?;
31
+ private readonly schemes;
32
+ constructor(options?: DefaultX402PaymentManagerOptions);
33
+ registerScheme(scheme: string, handler: X402PaymentSchemeHandler): this;
34
+ buildPaymentPayload(args: {
35
+ transport: TransportMode;
36
+ operation: string;
37
+ idempotencyKey?: string;
38
+ paymentRequired: X402PaymentRequired;
39
+ }): Promise<X402PaymentPayload>;
40
+ onSettlement(args: {
41
+ transport: TransportMode;
42
+ operation: string;
43
+ settlement: X402SettlementResponse;
44
+ }): Promise<void>;
45
+ private selectRequirement;
46
+ private passesPolicy;
47
+ }
17
48
  export declare class IntentFiClient {
18
49
  readonly baseUrl: string;
19
50
  private readonly apiKey?;
20
51
  readonly transport: TransportMode;
21
52
  private readonly fetchImpl;
53
+ private readonly paymentManager?;
22
54
  private mcpSessionId?;
23
55
  constructor(options?: ClientOptions);
24
56
  requestSiweChallenge(args: {
@@ -41,6 +73,13 @@ export declare class IntentFiClient {
41
73
  intent: string;
42
74
  operationId: string;
43
75
  chainId?: number;
76
+ discoveryHandoff?: {
77
+ runId: string;
78
+ cardId: string;
79
+ actionId: string;
80
+ amountUsd?: number;
81
+ fromTokenSymbol?: string;
82
+ };
44
83
  }): Promise<{
45
84
  workflowId: string;
46
85
  }>;
@@ -60,9 +99,73 @@ export declare class IntentFiClient {
60
99
  result: PrepareActiveResult;
61
100
  status: number;
62
101
  }>;
102
+ prepareOffchainActive(args: {
103
+ workflowId: string;
104
+ requestId: string;
105
+ waitMs?: number;
106
+ }): Promise<{
107
+ result: ActiveOffchainContext;
108
+ status: number;
109
+ }>;
63
110
  getActiveSubmissionContext(args: {
64
111
  workflowId: string;
65
112
  }): Promise<ActiveSubmissionContext>;
113
+ submitOffchainActive(args: {
114
+ workflowId: string;
115
+ requestId: string;
116
+ operationId: string;
117
+ idempotencyKey: string;
118
+ typedData: OffchainTypedData;
119
+ signature: string;
120
+ waitMs?: number;
121
+ }): Promise<{
122
+ result: OffchainSubmissionResult;
123
+ status: number;
124
+ }>;
125
+ reportOffchainResultActive(args: {
126
+ workflowId: string;
127
+ requestId: string;
128
+ operationId: string;
129
+ idempotencyKey: string;
130
+ externalOrderId: string;
131
+ reportedStatus: string;
132
+ submitRequest?: unknown;
133
+ submitResponse?: unknown;
134
+ responseHash: string;
135
+ reporterAddressLower: string;
136
+ attestationSignature: string;
137
+ attestationExpiresAtMs: number;
138
+ hashSchemaVersion: string;
139
+ waitMs?: number;
140
+ }): Promise<{
141
+ result: OffchainSubmissionResult;
142
+ status: number;
143
+ }>;
144
+ reportOffchainFailureActive(args: {
145
+ workflowId: string;
146
+ requestId: string;
147
+ operationId: string;
148
+ idempotencyKey: string;
149
+ failureCode: string;
150
+ errorMessage: string;
151
+ retryable: boolean;
152
+ requestPayload?: unknown;
153
+ waitMs?: number;
154
+ }): Promise<{
155
+ result: OffchainSubmissionResult;
156
+ status: number;
157
+ }>;
158
+ cancelOffchainActive(args: {
159
+ workflowId: string;
160
+ requestId: string;
161
+ operationId: string;
162
+ idempotencyKey: string;
163
+ reason?: string;
164
+ waitMs?: number;
165
+ }): Promise<{
166
+ result: OffchainSubmissionResult;
167
+ status: number;
168
+ }>;
66
169
  submitActiveTransactions(args: {
67
170
  workflowId: string;
68
171
  requestId: string;
@@ -89,16 +192,23 @@ export declare class IntentFiClient {
89
192
  private createWorkflowRest;
90
193
  private getWorkflowRest;
91
194
  private prepareActiveRest;
195
+ private prepareOffchainActiveRest;
196
+ private submitOffchainActiveRest;
197
+ private reportOffchainResultActiveRest;
198
+ private reportOffchainFailureActiveRest;
199
+ private cancelOffchainActiveRest;
92
200
  private submitActiveTransactionsRest;
93
201
  private submitActiveSendCallsRest;
94
202
  mcpInitialize(): Promise<void>;
95
- mcpToolCall<T>(name: string, args: Record<string, unknown>, options?: {
96
- stream?: boolean;
97
- }, attempt?: number): Promise<T>;
203
+ mcpToolCall<T>(name: string, args: Record<string, unknown>, options?: McpPaymentRetryOptions, attempt?: number, paymentAttempt?: number): Promise<T>;
98
204
  private withApiKey;
99
- private assertApiKey;
205
+ private assertCredential;
206
+ private buildPaymentPayload;
207
+ private handleSettlement;
100
208
  private fetchJson;
209
+ private fetchPaidEnvelope;
101
210
  private fetchEnvelope;
211
+ private parseEnvelopeResponse;
102
212
  }
103
213
  export {};
104
214
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EAEtB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AASF,qBAAa,cAAc;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,OAAO,GAAE,aAAkB;IASjC,oBAAoB,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB9D,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAW7G,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAQhH,WAAW,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBxI,aAAa,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBzI,0BAA0B,CAAC,IAAI,EAAE;QACrC,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAgB9B,wBAAwB,CAAC,IAAI,EAAE;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,oBAAoB,EAAE,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB1D,qBAAqB,CAAC,IAAI,EAAE;QAChC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;QAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;YAiBlD,kBAAkB;YAclB,eAAe;YAoBf,iBAAiB;YAmBjB,4BAA4B;YAkB5B,yBAAyB;IAqBjC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC9B,WAAW,CAAC,CAAC,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAC9B,OAAO,SAAI,GACV,OAAO,CAAC,CAAC,CAAC;IAuFb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,YAAY;YAQN,SAAS;YAKT,aAAa;CAkB5B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}