@ampersend_ai/ampersend-sdk 0.0.16 → 0.0.21

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 (128) hide show
  1. package/dist/ampersend/approval.d.ts +8 -8
  2. package/dist/ampersend/approval.d.ts.map +1 -1
  3. package/dist/ampersend/approval.js +10 -15
  4. package/dist/ampersend/approval.js.map +1 -1
  5. package/dist/ampersend/client.d.ts +4 -9
  6. package/dist/ampersend/client.d.ts.map +1 -1
  7. package/dist/ampersend/client.js +25 -21
  8. package/dist/ampersend/client.js.map +1 -1
  9. package/dist/ampersend/treasurer.d.ts +14 -79
  10. package/dist/ampersend/treasurer.d.ts.map +1 -1
  11. package/dist/ampersend/treasurer.js +34 -102
  12. package/dist/ampersend/treasurer.js.map +1 -1
  13. package/dist/ampersend/types.d.ts +356 -338
  14. package/dist/ampersend/types.d.ts.map +1 -1
  15. package/dist/ampersend/types.js +120 -150
  16. package/dist/ampersend/types.js.map +1 -1
  17. package/dist/ampersend/zod-bridge.d.ts +15 -0
  18. package/dist/ampersend/zod-bridge.d.ts.map +1 -0
  19. package/dist/ampersend/zod-bridge.js +29 -0
  20. package/dist/ampersend/zod-bridge.js.map +1 -0
  21. package/dist/cli/commands/fetch.d.ts.map +1 -1
  22. package/dist/cli/commands/fetch.js.map +1 -1
  23. package/dist/cli/commands/setup.d.ts +4 -0
  24. package/dist/cli/commands/setup.d.ts.map +1 -1
  25. package/dist/cli/commands/setup.js +52 -7
  26. package/dist/cli/commands/setup.js.map +1 -1
  27. package/dist/index.d.ts +2 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp/client/client.d.ts +0 -3
  32. package/dist/mcp/client/client.d.ts.map +1 -1
  33. package/dist/mcp/client/client.js +10 -14
  34. package/dist/mcp/client/client.js.map +1 -1
  35. package/dist/mcp/client/factory.d.ts +0 -2
  36. package/dist/mcp/client/factory.d.ts.map +1 -1
  37. package/dist/mcp/client/factory.js +0 -3
  38. package/dist/mcp/client/factory.js.map +1 -1
  39. package/dist/mcp/client/middleware.d.ts +0 -3
  40. package/dist/mcp/client/middleware.d.ts.map +1 -1
  41. package/dist/mcp/client/middleware.js +9 -12
  42. package/dist/mcp/client/middleware.js.map +1 -1
  43. package/dist/mcp/client/protocol.d.ts +81 -85
  44. package/dist/mcp/client/protocol.d.ts.map +1 -1
  45. package/dist/mcp/client/protocol.js +17 -15
  46. package/dist/mcp/client/protocol.js.map +1 -1
  47. package/dist/mcp/client/types.d.ts +6 -19
  48. package/dist/mcp/client/types.d.ts.map +1 -1
  49. package/dist/mcp/proxy/cli.d.ts.map +1 -1
  50. package/dist/mcp/proxy/cli.js +0 -1
  51. package/dist/mcp/proxy/cli.js.map +1 -1
  52. package/dist/mcp/proxy/env.d.ts +0 -9
  53. package/dist/mcp/proxy/env.d.ts.map +1 -1
  54. package/dist/mcp/proxy/env.js +0 -2
  55. package/dist/mcp/proxy/env.js.map +1 -1
  56. package/dist/mcp/proxy/factory.d.ts +0 -2
  57. package/dist/mcp/proxy/factory.d.ts.map +1 -1
  58. package/dist/mcp/proxy/factory.js +0 -3
  59. package/dist/mcp/proxy/factory.js.map +1 -1
  60. package/dist/mcp/server/fastmcp/middleware.d.ts +9 -29
  61. package/dist/mcp/server/fastmcp/middleware.d.ts.map +1 -1
  62. package/dist/mcp/server/fastmcp/middleware.js +10 -42
  63. package/dist/mcp/server/fastmcp/middleware.js.map +1 -1
  64. package/dist/version.d.ts +1 -1
  65. package/dist/version.js +1 -1
  66. package/dist/x402/envelopes.d.ts +62 -0
  67. package/dist/x402/envelopes.d.ts.map +1 -0
  68. package/dist/x402/envelopes.js +73 -0
  69. package/dist/x402/envelopes.js.map +1 -0
  70. package/dist/x402/http/client.d.ts +37 -0
  71. package/dist/x402/http/client.d.ts.map +1 -0
  72. package/dist/x402/http/client.js +159 -0
  73. package/dist/x402/http/client.js.map +1 -0
  74. package/dist/x402/http/factory.d.ts +11 -25
  75. package/dist/x402/http/factory.d.ts.map +1 -1
  76. package/dist/x402/http/factory.js +11 -22
  77. package/dist/x402/http/factory.js.map +1 -1
  78. package/dist/x402/http/index.d.ts +4 -1
  79. package/dist/x402/http/index.d.ts.map +1 -1
  80. package/dist/x402/http/index.js +2 -1
  81. package/dist/x402/http/index.js.map +1 -1
  82. package/dist/x402/index.d.ts +4 -1
  83. package/dist/x402/index.d.ts.map +1 -1
  84. package/dist/x402/index.js +3 -2
  85. package/dist/x402/index.js.map +1 -1
  86. package/dist/x402/treasurer.d.ts +22 -47
  87. package/dist/x402/treasurer.d.ts.map +1 -1
  88. package/dist/x402/treasurers/naive.d.ts +4 -40
  89. package/dist/x402/treasurers/naive.d.ts.map +1 -1
  90. package/dist/x402/treasurers/naive.js +7 -44
  91. package/dist/x402/treasurers/naive.js.map +1 -1
  92. package/dist/x402/wallet.d.ts +7 -32
  93. package/dist/x402/wallet.d.ts.map +1 -1
  94. package/dist/x402/wallet.js +0 -3
  95. package/dist/x402/wallet.js.map +1 -1
  96. package/dist/x402/wallets/account/wallet.d.ts +9 -30
  97. package/dist/x402/wallets/account/wallet.d.ts.map +1 -1
  98. package/dist/x402/wallets/account/wallet.js +30 -37
  99. package/dist/x402/wallets/account/wallet.js.map +1 -1
  100. package/dist/x402/wallets/index.d.ts +0 -1
  101. package/dist/x402/wallets/index.d.ts.map +1 -1
  102. package/dist/x402/wallets/index.js +0 -1
  103. package/dist/x402/wallets/index.js.map +1 -1
  104. package/dist/x402/wallets/smart-account/chain.d.ts +4 -0
  105. package/dist/x402/wallets/smart-account/chain.d.ts.map +1 -0
  106. package/dist/x402/wallets/smart-account/chain.js +12 -0
  107. package/dist/x402/wallets/smart-account/chain.js.map +1 -0
  108. package/dist/x402/wallets/smart-account/cosigned.d.ts +7 -33
  109. package/dist/x402/wallets/smart-account/cosigned.d.ts.map +1 -1
  110. package/dist/x402/wallets/smart-account/cosigned.js +28 -51
  111. package/dist/x402/wallets/smart-account/cosigned.js.map +1 -1
  112. package/dist/x402/wallets/smart-account/exact.d.ts +6 -20
  113. package/dist/x402/wallets/smart-account/exact.d.ts.map +1 -1
  114. package/dist/x402/wallets/smart-account/exact.js +33 -43
  115. package/dist/x402/wallets/smart-account/exact.js.map +1 -1
  116. package/dist/x402/wallets/smart-account/wallet.d.ts +6 -39
  117. package/dist/x402/wallets/smart-account/wallet.d.ts.map +1 -1
  118. package/dist/x402/wallets/smart-account/wallet.js +9 -36
  119. package/dist/x402/wallets/smart-account/wallet.js.map +1 -1
  120. package/package.json +8 -6
  121. package/dist/x402/http/adapter.d.ts +0 -38
  122. package/dist/x402/http/adapter.d.ts.map +0 -1
  123. package/dist/x402/http/adapter.js +0 -199
  124. package/dist/x402/http/adapter.js.map +0 -1
  125. package/dist/x402/http/v2-adapter.d.ts +0 -56
  126. package/dist/x402/http/v2-adapter.d.ts.map +0 -1
  127. package/dist/x402/http/v2-adapter.js +0 -94
  128. package/dist/x402/http/v2-adapter.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { ApprovalResponse, ApprovalStatus, type CreateAgentApprovalRequest } from "./types.js";
1
+ import { ApprovalResponse, ApprovalStatus, type AgentApprovalRequest } from "./types.js";
2
2
  export interface ApprovalClientOptions {
3
3
  apiUrl?: string;
4
4
  timeout?: number;
@@ -7,8 +7,8 @@ export interface ApprovalClientOptions {
7
7
  * Client for the approve-action flow.
8
8
  *
9
9
  * This client handles unauthenticated approval requests where an agent
10
- * programmatically requests creation and waits for user approval via
11
- * the Ampersend dashboard.
10
+ * programmatically requests setup (creation or key connection) and waits
11
+ * for user approval via the Ampersend dashboard.
12
12
  *
13
13
  * @example
14
14
  * ```typescript
@@ -16,8 +16,8 @@ export interface ApprovalClientOptions {
16
16
  *
17
17
  * const client = new ApprovalClient()
18
18
  *
19
- * // Request agent creation approval
20
- * const response = await client.requestAgentCreation({
19
+ * // Request agent setup approval
20
+ * const response = await client.requestAgentApproval({
21
21
  * name: "my-agent",
22
22
  * agent_key_address: "0x...",
23
23
  * })
@@ -27,7 +27,7 @@ export interface ApprovalClientOptions {
27
27
  * // Poll for status
28
28
  * const status = await client.getApprovalStatus(response.token)
29
29
  * if (status.status === "resolved" && "agent" in status) {
30
- * console.log("Agent created at:", status.agent.address)
30
+ * console.log("Agent ready at:", status.agent.address)
31
31
  * }
32
32
  * ```
33
33
  */
@@ -36,11 +36,11 @@ export declare class ApprovalClient {
36
36
  private timeout;
37
37
  constructor(options?: ApprovalClientOptions);
38
38
  /**
39
- * Request approval to create a new agent.
39
+ * Request approval to set up an agent (create new or connect key to existing).
40
40
  *
41
41
  * Returns URLs for the user to approve the action and to poll for status.
42
42
  */
43
- requestAgentCreation(request: typeof CreateAgentApprovalRequest.Encoded): Promise<ApprovalResponse>;
43
+ requestAgentApproval(request: typeof AgentApprovalRequest.Encoded): Promise<ApprovalResponse>;
44
44
  /**
45
45
  * Get the current status of an approval request.
46
46
  *
@@ -1 +1 @@
1
- {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../src/ampersend/approval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,gBAAgB,EAAE,cAAc,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAIxG,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,GAAE,qBAA0B;IAK/C;;;;OAIG;IACG,oBAAoB,CAAC,OAAO,EAAE,OAAO,0BAA0B,CAAC,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYzG;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAIjD,KAAK;CA4CpB"}
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../src/ampersend/approval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,gBAAgB,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIlG,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,GAAE,qBAA0B;IAK/C;;;;OAIG;IACG,oBAAoB,CAAC,OAAO,EAAE,OAAO,oBAAoB,CAAC,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASnG;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAIjD,KAAK;CA4CpB"}
@@ -5,8 +5,8 @@ const DEFAULT_API_URL = "https://api.ampersend.ai";
5
5
  * Client for the approve-action flow.
6
6
  *
7
7
  * This client handles unauthenticated approval requests where an agent
8
- * programmatically requests creation and waits for user approval via
9
- * the Ampersend dashboard.
8
+ * programmatically requests setup (creation or key connection) and waits
9
+ * for user approval via the Ampersend dashboard.
10
10
  *
11
11
  * @example
12
12
  * ```typescript
@@ -14,8 +14,8 @@ const DEFAULT_API_URL = "https://api.ampersend.ai";
14
14
  *
15
15
  * const client = new ApprovalClient()
16
16
  *
17
- * // Request agent creation approval
18
- * const response = await client.requestAgentCreation({
17
+ * // Request agent setup approval
18
+ * const response = await client.requestAgentApproval({
19
19
  * name: "my-agent",
20
20
  * agent_key_address: "0x...",
21
21
  * })
@@ -25,7 +25,7 @@ const DEFAULT_API_URL = "https://api.ampersend.ai";
25
25
  * // Poll for status
26
26
  * const status = await client.getApprovalStatus(response.token)
27
27
  * if (status.status === "resolved" && "agent" in status) {
28
- * console.log("Agent created at:", status.agent.address)
28
+ * console.log("Agent ready at:", status.agent.address)
29
29
  * }
30
30
  * ```
31
31
  */
@@ -37,19 +37,14 @@ export class ApprovalClient {
37
37
  this.timeout = options.timeout ?? 30000;
38
38
  }
39
39
  /**
40
- * Request approval to create a new agent.
40
+ * Request approval to set up an agent (create new or connect key to existing).
41
41
  *
42
42
  * Returns URLs for the user to approve the action and to poll for status.
43
43
  */
44
- async requestAgentCreation(request) {
45
- // Map SDK field names to API wire format
46
- const payload = {
47
- name: request.name,
48
- session_key_address: request.agent_key_address,
49
- };
50
- if (request.spend_config !== undefined) {
51
- payload.spend_config = request.spend_config;
52
- }
44
+ async requestAgentApproval(request) {
45
+ const { agent_key_address, ...optional } = request;
46
+ // Map SDK field name to API wire format and strip undefined values
47
+ const payload = Object.fromEntries(Object.entries({ session_key_address: agent_key_address, ...optional }).filter(([, v]) => v !== undefined));
53
48
  return this.fetch("POST", "/api/v1/approve-action/agent", payload, ApprovalResponse);
54
49
  }
55
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/ampersend/approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/ampersend/approval.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { AgentPaymentAuthResponse, AgentPaymentEventResponse, type Address, type AgentPaymentAuthRequest, type ApiClientOptions, type PaymentEvent, type PaymentPayload, type PaymentRequirements } from "./types.js";
1
+ import type { PaymentAuthorization, PaymentRequest } from "../x402/envelopes.ts";
2
+ import { AgentAuthorizeRequest, AgentAuthorizeResponse, AgentPaymentEventResponse, type Address, type ApiClientOptions, type PaymentEvent } from "./types.js";
2
3
  export * from "./types.js";
3
4
  /**
4
5
  * TypeScript SDK for the API
@@ -18,14 +19,8 @@ export declare class ApiClient {
18
19
  * Internal method to perform authentication without mutex (for use within mutex)
19
20
  */
20
21
  private performAuthentication;
21
- /**
22
- * Request authorization for a payment
23
- */
24
- authorizePayment(requirements: readonly [PaymentRequirements, ...Array<PaymentRequirements>], context?: AgentPaymentAuthRequest["context"]): Promise<AgentPaymentAuthResponse>;
25
- /**
26
- * Report a payment lifecycle event
27
- */
28
- reportPaymentEvent(eventId: string, payment: PaymentPayload, event: PaymentEvent): Promise<AgentPaymentEventResponse>;
22
+ authorizePayment(paymentRequest: PaymentRequest, context?: AgentAuthorizeRequest["context"]): Promise<typeof AgentAuthorizeResponse.Type>;
23
+ reportPaymentEvent(eventId: string, payment: PaymentAuthorization, event: PaymentEvent): Promise<AgentPaymentEventResponse>;
29
24
  /**
30
25
  * Clear the current authentication state
31
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ampersend/client.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EAIzB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAE5B,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAA;AAEnB,cAAc,YAAY,CAAA;AAE1B;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,IAAI,CAGX;gBAEW,OAAO,EAAE,gBAAgB;IAOrC;;OAEG;YACW,qBAAqB;IAmEnC;;OAEG;IACG,gBAAgB,CACpB,YAAY,EAAE,SAAS,CAAC,mBAAmB,EAAE,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAC3E,OAAO,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,GAC3C,OAAO,CAAC,wBAAwB,CAAC;IAsBpC;;OAEG;IACG,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,yBAAyB,CAAC;IAuBrC;;OAEG;IACH,SAAS,IAAI,IAAI;IAOjB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;YACW,mBAAmB;IAQjC;;OAEG;YACW,KAAK;CAkCpB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ampersend/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAEtB,yBAAyB,EAIzB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAElB,MAAM,YAAY,CAAA;AAEnB,cAAc,YAAY,CAAA;AAE1B;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,IAAI,CAGX;gBAEW,OAAO,EAAE,gBAAgB;IAOrC;;OAEG;YACW,qBAAqB;IAmE7B,gBAAgB,CACpB,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,GACzC,OAAO,CAAC,OAAO,sBAAsB,CAAC,IAAI,CAAC;IAoCxC,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,yBAAyB,CAAC;IAoBrC;;OAEG;IACH,SAAS,IAAI,IAAI;IAOjB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;YACW,mBAAmB;IAQjC;;OAEG;YACW,KAAK;CAkCpB"}
@@ -2,7 +2,7 @@ import { Mutex } from "async-mutex";
2
2
  import { DateTime, Schema } from "effect";
3
3
  import { SiweMessage } from "siwe";
4
4
  import { privateKeyToAccount } from "viem/accounts";
5
- import { AgentPaymentAuthResponse, AgentPaymentEventResponse, ApiError, SIWELoginResponse, SIWENonceResponse, } from "./types.js";
5
+ import { AgentAuthorizeRequest, AgentAuthorizeResponse, AgentPaymentEventReport, AgentPaymentEventResponse, ApiError, SIWELoginResponse, SIWENonceResponse, } from "./types.js";
6
6
  export * from "./types.js";
7
7
  /**
8
8
  * TypeScript SDK for the API
@@ -84,41 +84,45 @@ export class ApiClient {
84
84
  throw new ApiError(`Authentication failed: ${error}`);
85
85
  }
86
86
  }
87
- /**
88
- * Request authorization for a payment
89
- */
90
- async authorizePayment(requirements, context) {
87
+ async authorizePayment(paymentRequest, context) {
91
88
  await this.ensureAuthenticated();
92
- const request = {
93
- requirements,
94
- context,
95
- };
96
- return this.fetch(`/api/v1/agents/${this.agentAddress}/payment/authorize`, {
89
+ const request = { paymentRequest, context };
90
+ const wireBody = Schema.encodeSync(AgentAuthorizeRequest)(request);
91
+ const response = await this.fetch(`/api/v1/agents/${this.agentAddress}/payment/authorize`, {
97
92
  method: "POST",
98
93
  headers: {
99
94
  "Content-Type": "application/json",
100
95
  Authorization: `Bearer ${this.auth.token}`,
101
96
  },
102
- body: JSON.stringify(request),
103
- }, AgentPaymentAuthResponse);
97
+ body: JSON.stringify(wireBody),
98
+ }, AgentAuthorizeResponse);
99
+ // A bad acceptsIndex from the server would silently point the wallet at
100
+ // the wrong line-item. Catch it here rather than letting it fall through.
101
+ const acceptsLen = paymentRequest.data.accepts.length;
102
+ const checkIndex = (idx, where) => {
103
+ if (!Number.isInteger(idx) || idx < 0 || idx >= acceptsLen) {
104
+ throw new ApiError(`authorize response: ${where} acceptsIndex=${idx} out of bounds (accepts.length=${acceptsLen})`);
105
+ }
106
+ };
107
+ if (response.authorized.selected)
108
+ checkIndex(response.authorized.selected.acceptsIndex, "selected");
109
+ for (const alt of response.authorized.alternatives)
110
+ checkIndex(alt.acceptsIndex, "alternatives");
111
+ for (const rej of response.rejected)
112
+ checkIndex(rej.acceptsIndex, "rejected");
113
+ return response;
104
114
  }
105
- /**
106
- * Report a payment lifecycle event
107
- */
108
115
  async reportPaymentEvent(eventId, payment, event) {
109
116
  await this.ensureAuthenticated();
110
- const report = {
111
- id: eventId,
112
- payment,
113
- event,
114
- };
117
+ const report = { id: eventId, payment, event };
118
+ const wireBody = Schema.encodeSync(AgentPaymentEventReport)(report);
115
119
  return this.fetch(`/api/v1/agents/${this.agentAddress}/payment/events`, {
116
120
  method: "POST",
117
121
  headers: {
118
122
  "Content-Type": "application/json",
119
123
  Authorization: `Bearer ${this.auth.token}`,
120
124
  },
121
- body: JSON.stringify(report),
125
+ body: JSON.stringify(wireBody),
122
126
  }, AgentPaymentEventResponse);
123
127
  }
124
128
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ampersend/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ampersend/client.ts"],"names":[],"mappings":"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"}
@@ -1,115 +1,50 @@
1
1
  import type { Address, Hex } from "viem";
2
- import type { PaymentRequirements } from "x402/types";
2
+ import { type PaymentRequest } from "../x402/envelopes.ts";
3
3
  import { type Authorization, type PaymentContext, type PaymentStatus, type WalletConfig, type X402Treasurer, type X402Wallet } from "../x402/index.ts";
4
4
  import { ApiClient } from "./client.ts";
5
- /**
6
- * Simplified configuration for quick setup with smart accounts.
7
- * This is the recommended way to configure the treasurer for most use cases.
8
- *
9
- * @example
10
- * ```typescript
11
- * const treasurer = createAmpersendTreasurer({
12
- * smartAccountAddress: "0x...",
13
- * sessionKeyPrivateKey: "0x...",
14
- * })
15
- * ```
16
- */
5
+ /** Simplified config for the common "smart account + session key" setup. */
17
6
  export interface SimpleAmpersendTreasurerConfig {
18
- /** Smart account address */
19
7
  smartAccountAddress: Address;
20
- /** Session key private key for signing */
21
8
  sessionKeyPrivateKey: Hex;
22
- /** Ampersend API URL (defaults to production) */
9
+ /** Defaults to the production Ampersend API. */
23
10
  apiUrl?: string;
24
- /** Chain ID (defaults to Base mainnet 8453) */
25
- chainId?: number;
26
11
  }
27
- /**
28
- * Full configuration for advanced use cases with complete wallet control.
29
- * Use this when you need EOA wallets or custom authentication settings.
30
- */
12
+ /** Full config for EOA wallets or custom SIWE auth. */
31
13
  export interface FullAmpersendTreasurerConfig {
32
- /** Base URL of the Ampersend API server */
33
14
  apiUrl: string;
34
- /** Wallet configuration (EOA or Smart Account) */
35
15
  walletConfig: WalletConfig;
36
- /** Optional authentication configuration */
37
16
  authConfig?: {
38
- /** SIWE domain for authentication */
17
+ /** SIWE domain. */
39
18
  domain?: string;
40
- /** SIWE statement for authentication */
19
+ /** SIWE statement. */
41
20
  statement?: string;
42
21
  };
43
22
  }
44
- /**
45
- * Configuration for the Ampersend treasurer.
46
- * Can be either simplified (recommended) or full configuration.
47
- */
48
23
  export type AmpersendTreasurerConfig = SimpleAmpersendTreasurerConfig | FullAmpersendTreasurerConfig;
49
24
  /**
50
- * AmpersendTreasurer - Ampersend API-based payment authorization with X402Treasurer pattern
51
- *
52
- * This treasurer:
53
- * 1. Authenticates with the Ampersend API using SIWE
54
- * 2. Requests payment authorization from the API before creating payments
55
- * 3. Creates payments only when authorized by the API
56
- * 4. Reports payment lifecycle events back to the API for tracking
57
- *
58
- * @example
59
- * ```typescript
60
- * const treasurer = createAmpersendTreasurer({
61
- * apiUrl: "https://api.example.com",
62
- * walletConfig: { type: "eoa", privateKey: "0x..." }
63
- * })
64
- * await initializeProxyServer({ transport, treasurer })
65
- * ```
25
+ * Forwards the 402 to the Ampersend API, which applies budget/policy and
26
+ * returns an `acceptsIndex` to sign (plus optional co-signature).
66
27
  */
67
28
  export declare class AmpersendTreasurer implements X402Treasurer {
68
29
  private apiClient;
69
30
  private wallet;
70
31
  constructor(apiClient: ApiClient, wallet: X402Wallet);
71
- /**
72
- * Requests payment authorization from API before creating payment.
73
- * Only creates payment if API authorizes it.
74
- */
75
- onPaymentRequired(requirements: ReadonlyArray<PaymentRequirements>, context?: PaymentContext): Promise<Authorization | null>;
76
- /**
77
- * Reports payment status updates back to API for tracking.
78
- * Logs errors but doesn't fail on tracking errors.
79
- */
32
+ onPaymentRequired(request: PaymentRequest, context?: PaymentContext): Promise<Authorization | null>;
80
33
  onStatus(status: PaymentStatus, authorization: Authorization, _context?: PaymentContext): Promise<void>;
81
- /**
82
- * Maps X402 PaymentStatus to legacy PaymentEvent for API compatibility
83
- */
84
34
  private mapStatusToEvent;
85
35
  }
86
36
  /**
87
- * Creates an Ampersend treasurer that consults the Ampersend API before making payments.
88
- *
89
- * This treasurer:
90
- * 1. Authenticates with the Ampersend API using SIWE
91
- * 2. Requests payment authorization from the API
92
- * 3. Creates payments only when authorized
93
- * 4. Reports payment lifecycle events back to the API
94
- *
95
- * @example Simple setup (recommended):
37
+ * @example Simple (recommended):
96
38
  * ```typescript
97
- * const treasurer = createAmpersendTreasurer({
98
- * smartAccountAddress: "0x...",
99
- * sessionKeyPrivateKey: "0x...",
100
- * })
39
+ * createAmpersendTreasurer({ smartAccountAddress: "0x...", sessionKeyPrivateKey: "0x..." })
101
40
  * ```
102
- *
103
- * @example Full control:
41
+ * @example Full (EOA or custom auth):
104
42
  * ```typescript
105
- * const treasurer = createAmpersendTreasurer({
43
+ * createAmpersendTreasurer({
106
44
  * apiUrl: "https://api.ampersend.ai",
107
- * walletConfig: { type: "eoa", privateKey: "0x..." }
45
+ * walletConfig: { type: "eoa", privateKey: "0x..." },
108
46
  * })
109
47
  * ```
110
- *
111
- * @param config - Configuration for the Ampersend treasurer
112
- * @returns An X402Treasurer implementation
113
48
  */
114
49
  export declare function createAmpersendTreasurer(config: AmpersendTreasurerConfig): X402Treasurer;
115
50
  //# sourceMappingURL=treasurer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"treasurer.d.ts","sourceRoot":"","sources":["../../src/ampersend/treasurer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,EAAkB,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAIrE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AASvC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,8BAA8B;IAC7C,4BAA4B;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,0CAA0C;IAC1C,oBAAoB,EAAE,GAAG,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,YAAY,EAAE,YAAY,CAAA;IAC1B,4CAA4C;IAC5C,UAAU,CAAC,EAAE;QACX,qCAAqC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,wCAAwC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,GAAG,4BAA4B,CAAA;AASpG;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAEpD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBADN,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU;IAG5B;;;OAGG;IACG,iBAAiB,CACrB,YAAY,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAChD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkDhC;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7G;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAczB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,aAAa,CA+CxF"}
1
+ {"version":3,"file":"treasurer.d.ts","sourceRoot":"","sources":["../../src/ampersend/treasurer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAIxC,OAAO,EAAsD,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9G,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAKvC,4EAA4E;AAC5E,MAAM,WAAW,8BAA8B;IAC7C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,oBAAoB,EAAE,GAAG,CAAA;IACzB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,uDAAuD;AACvD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE;QACX,mBAAmB;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,sBAAsB;QACtB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,GAAG,4BAA4B,CAAA;AAMpG;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAEpD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;gBADN,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU;IAGtB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA4BnG,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7G,OAAO,CAAC,gBAAgB;CAczB;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,aAAa,CAwCxF"}
@@ -1,34 +1,15 @@
1
1
  import { privateKeyToAccount } from "viem/accounts";
2
2
  import { OWNABLE_VALIDATOR } from "../smart-account/index.js";
3
+ import { acceptedOf, resourceUrlOf } from "../x402/envelopes.js";
3
4
  import { createWalletFromConfig, } from "../x402/index.js";
4
5
  import { ApiClient } from "./client.js";
5
- /** Default Ampersend API URL */
6
6
  const DEFAULT_API_URL = "https://api.ampersend.ai";
7
- /** Default chain ID (Base mainnet) */
8
- const DEFAULT_CHAIN_ID = 8453;
9
- /**
10
- * Type guard to check if config is the simplified format
11
- */
12
7
  function isSimpleConfig(config) {
13
8
  return "smartAccountAddress" in config && "sessionKeyPrivateKey" in config && !("walletConfig" in config);
14
9
  }
15
10
  /**
16
- * AmpersendTreasurer - Ampersend API-based payment authorization with X402Treasurer pattern
17
- *
18
- * This treasurer:
19
- * 1. Authenticates with the Ampersend API using SIWE
20
- * 2. Requests payment authorization from the API before creating payments
21
- * 3. Creates payments only when authorized by the API
22
- * 4. Reports payment lifecycle events back to the API for tracking
23
- *
24
- * @example
25
- * ```typescript
26
- * const treasurer = createAmpersendTreasurer({
27
- * apiUrl: "https://api.example.com",
28
- * walletConfig: { type: "eoa", privateKey: "0x..." }
29
- * })
30
- * await initializeProxyServer({ transport, treasurer })
31
- * ```
11
+ * Forwards the 402 to the Ampersend API, which applies budget/policy and
12
+ * returns an `acceptsIndex` to sign (plus optional co-signature).
32
13
  */
33
14
  export class AmpersendTreasurer {
34
15
  apiClient;
@@ -37,71 +18,39 @@ export class AmpersendTreasurer {
37
18
  this.apiClient = apiClient;
38
19
  this.wallet = wallet;
39
20
  }
40
- /**
41
- * Requests payment authorization from API before creating payment.
42
- * Only creates payment if API authorizes it.
43
- */
44
- async onPaymentRequired(requirements, context) {
45
- try {
46
- // Authorize payment with API
47
- // Cast needed: x402 PaymentRequirements (zod) ampersend PaymentRequirements (Effect Schema)
48
- // Structurally compatible at runtime, different type systems
49
- const response = await this.apiClient.authorizePayment(requirements, context);
50
- // Check if any requirements were authorized
51
- if (response.authorized.requirements.length === 0) {
52
- // Log rejection reasons for debugging
53
- const reasons = response.rejected.map((r) => `${r.requirement.resource}: ${r.reason}`).join(", ");
54
- console.log(`[AmpersendTreasurer] No requirements authorized. Reasons: ${reasons || "None provided"}`);
55
- return null; // Decline
56
- }
57
- // Use recommended requirement (or first if recommended is null)
58
- const recommendedIndex = response.authorized.recommended ?? 0;
59
- const authorizedReq = response.authorized.requirements[recommendedIndex];
60
- if (!authorizedReq) {
61
- throw new Error("Recommended requirement index out of bounds");
62
- }
63
- // Check if server provided co-signature (for co-signed keys)
64
- let payment;
65
- if (response.payment) {
66
- // Co-signed path: use server-provided authorization data and signature
67
- const serverAuth = {
68
- authorizationData: response.payment.authorizationData,
69
- serverSignature: response.payment.serverSignature,
70
- };
71
- payment = await this.wallet.createPayment(response.payment.requirement, serverAuth);
72
- }
73
- else {
74
- // Full-access path: sign independently
75
- payment = await this.wallet.createPayment(authorizedReq.requirement);
76
- }
77
- return {
78
- payment,
79
- authorizationId: crypto.randomUUID(),
80
- };
81
- }
82
- catch (error) {
83
- console.error("[AmpersendTreasurer] Payment authorization failed:", error);
21
+ async onPaymentRequired(request, context) {
22
+ const response = await this.apiClient.authorizePayment(request, context);
23
+ const selected = response.authorized.selected;
24
+ if (!selected) {
25
+ const reasons = response.rejected
26
+ .map((r) => `${resourceUrlOf(instructionFor(request, r.acceptsIndex))}: ${r.reason}`)
27
+ .join(", ");
28
+ console.log(`[AmpersendTreasurer] No options authorized. Reasons: ${reasons || "None provided"}`);
84
29
  return null;
85
30
  }
31
+ const instruction = instructionFor(request, selected.acceptsIndex);
32
+ const serverAuth = selected.coSignature
33
+ ? {
34
+ authorizationData: selected.coSignature.authorizationData,
35
+ serverSignature: selected.coSignature.serverSignature,
36
+ }
37
+ : undefined;
38
+ const payment = await this.wallet.createPayment(instruction, serverAuth);
39
+ return {
40
+ payment,
41
+ authorizationId: crypto.randomUUID(),
42
+ accepted: acceptedOf(instruction),
43
+ };
86
44
  }
87
- /**
88
- * Reports payment status updates back to API for tracking.
89
- * Logs errors but doesn't fail on tracking errors.
90
- */
91
45
  async onStatus(status, authorization, _context) {
92
46
  try {
93
- // Map status to event type for API
94
47
  const event = this.mapStatusToEvent(status);
95
48
  await this.apiClient.reportPaymentEvent(authorization.authorizationId, authorization.payment, event);
96
49
  }
97
50
  catch (error) {
98
- // Log but don't fail on event tracking errors
99
51
  console.error(`[AmpersendTreasurer] Failed to report status ${status}:`, error);
100
52
  }
101
53
  }
102
- /**
103
- * Maps X402 PaymentStatus to legacy PaymentEvent for API compatibility
104
- */
105
54
  mapStatusToEvent(status) {
106
55
  switch (status) {
107
56
  case "sending":
@@ -117,42 +66,30 @@ export class AmpersendTreasurer {
117
66
  }
118
67
  }
119
68
  }
69
+ function instructionFor(request, acceptsIndex) {
70
+ return request.protocol === "x402-v1"
71
+ ? { protocol: "x402-v1", request: request.data, acceptsIndex }
72
+ : { protocol: "x402-v2", request: request.data, acceptsIndex };
73
+ }
120
74
  /**
121
- * Creates an Ampersend treasurer that consults the Ampersend API before making payments.
122
- *
123
- * This treasurer:
124
- * 1. Authenticates with the Ampersend API using SIWE
125
- * 2. Requests payment authorization from the API
126
- * 3. Creates payments only when authorized
127
- * 4. Reports payment lifecycle events back to the API
128
- *
129
- * @example Simple setup (recommended):
75
+ * @example Simple (recommended):
130
76
  * ```typescript
131
- * const treasurer = createAmpersendTreasurer({
132
- * smartAccountAddress: "0x...",
133
- * sessionKeyPrivateKey: "0x...",
134
- * })
77
+ * createAmpersendTreasurer({ smartAccountAddress: "0x...", sessionKeyPrivateKey: "0x..." })
135
78
  * ```
136
- *
137
- * @example Full control:
79
+ * @example Full (EOA or custom auth):
138
80
  * ```typescript
139
- * const treasurer = createAmpersendTreasurer({
81
+ * createAmpersendTreasurer({
140
82
  * apiUrl: "https://api.ampersend.ai",
141
- * walletConfig: { type: "eoa", privateKey: "0x..." }
83
+ * walletConfig: { type: "eoa", privateKey: "0x..." },
142
84
  * })
143
85
  * ```
144
- *
145
- * @param config - Configuration for the Ampersend treasurer
146
- * @returns An X402Treasurer implementation
147
86
  */
148
87
  export function createAmpersendTreasurer(config) {
149
88
  if (isSimpleConfig(config)) {
150
- // Simple config - build wallet config automatically
151
89
  const walletConfig = {
152
90
  type: "smart-account",
153
91
  smartAccountAddress: config.smartAccountAddress,
154
92
  sessionKeyPrivateKey: config.sessionKeyPrivateKey,
155
- chainId: config.chainId ?? DEFAULT_CHAIN_ID,
156
93
  validatorAddress: OWNABLE_VALIDATOR,
157
94
  };
158
95
  const apiClient = new ApiClient({
@@ -164,15 +101,11 @@ export function createAmpersendTreasurer(config) {
164
101
  const wallet = createWalletFromConfig(walletConfig);
165
102
  return new AmpersendTreasurer(apiClient, wallet);
166
103
  }
167
- // Full config - existing behavior
168
104
  const { apiUrl, authConfig, walletConfig } = config;
169
- // Determine which private key to use for API authentication
170
105
  const authPrivateKey = walletConfig.type === "eoa" ? walletConfig.privateKey : walletConfig.sessionKeyPrivateKey;
171
- // Derive agent address from wallet config
172
106
  const agentAddress = walletConfig.type === "smart-account"
173
107
  ? walletConfig.smartAccountAddress
174
108
  : privateKeyToAccount(walletConfig.privateKey).address;
175
- // Create API client
176
109
  const apiClient = new ApiClient({
177
110
  baseUrl: apiUrl,
178
111
  sessionKeyPrivateKey: authPrivateKey,
@@ -180,7 +113,6 @@ export function createAmpersendTreasurer(config) {
180
113
  timeout: 30000,
181
114
  ...authConfig,
182
115
  });
183
- // Create wallet from configuration
184
116
  const wallet = createWalletFromConfig(walletConfig);
185
117
  return new AmpersendTreasurer(apiClient, wallet);
186
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"treasurer.js","sourceRoot":"","sources":["../../src/ampersend/treasurer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"treasurer.js","sourceRoot":"","sources":["../../src/ampersend/treasurer.ts"],"names":[],"mappings":"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"}