@ampersend_ai/ampersend-sdk 0.0.21 → 0.0.25

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 (109) hide show
  1. package/dist/ampersend/agent-client.d.ts +81 -0
  2. package/dist/ampersend/agent-client.d.ts.map +1 -0
  3. package/dist/ampersend/agent-client.js +104 -0
  4. package/dist/ampersend/agent-client.js.map +1 -0
  5. package/dist/ampersend/agent.d.ts +119 -0
  6. package/dist/ampersend/agent.d.ts.map +1 -0
  7. package/dist/ampersend/agent.js +99 -0
  8. package/dist/ampersend/agent.js.map +1 -0
  9. package/dist/ampersend/client.d.ts +32 -8
  10. package/dist/ampersend/client.d.ts.map +1 -1
  11. package/dist/ampersend/client.js +81 -3
  12. package/dist/ampersend/client.js.map +1 -1
  13. package/dist/ampersend/curated-agent.d.ts +117 -0
  14. package/dist/ampersend/curated-agent.d.ts.map +1 -0
  15. package/dist/ampersend/curated-agent.js +149 -0
  16. package/dist/ampersend/curated-agent.js.map +1 -0
  17. package/dist/ampersend/env.d.ts +0 -15
  18. package/dist/ampersend/env.d.ts.map +1 -1
  19. package/dist/ampersend/env.js +0 -4
  20. package/dist/ampersend/env.js.map +1 -1
  21. package/dist/ampersend/index.d.ts +4 -0
  22. package/dist/ampersend/index.d.ts.map +1 -1
  23. package/dist/ampersend/index.js +6 -0
  24. package/dist/ampersend/index.js.map +1 -1
  25. package/dist/ampersend/marketplace.d.ts +53 -0
  26. package/dist/ampersend/marketplace.d.ts.map +1 -0
  27. package/dist/ampersend/marketplace.js +65 -0
  28. package/dist/ampersend/marketplace.js.map +1 -0
  29. package/dist/ampersend/treasurer.d.ts +4 -0
  30. package/dist/ampersend/treasurer.d.ts.map +1 -1
  31. package/dist/ampersend/treasurer.js +2 -2
  32. package/dist/ampersend/treasurer.js.map +1 -1
  33. package/dist/ampersend/types.d.ts +39 -6
  34. package/dist/ampersend/types.d.ts.map +1 -1
  35. package/dist/ampersend/types.js +19 -1
  36. package/dist/ampersend/types.js.map +1 -1
  37. package/dist/cli/ampersend.js +47 -2
  38. package/dist/cli/ampersend.js.map +1 -1
  39. package/dist/cli/commands/agent.d.ts +22 -0
  40. package/dist/cli/commands/agent.d.ts.map +1 -0
  41. package/dist/cli/commands/agent.js +144 -0
  42. package/dist/cli/commands/agent.js.map +1 -0
  43. package/dist/cli/commands/card.d.ts +125 -0
  44. package/dist/cli/commands/card.d.ts.map +1 -0
  45. package/dist/cli/commands/card.js +399 -0
  46. package/dist/cli/commands/card.js.map +1 -0
  47. package/dist/cli/commands/config.d.ts.map +1 -1
  48. package/dist/cli/commands/config.js +2 -21
  49. package/dist/cli/commands/config.js.map +1 -1
  50. package/dist/cli/commands/fetch.d.ts +76 -2
  51. package/dist/cli/commands/fetch.d.ts.map +1 -1
  52. package/dist/cli/commands/fetch.js +208 -133
  53. package/dist/cli/commands/fetch.js.map +1 -1
  54. package/dist/cli/commands/fund.d.ts +3 -0
  55. package/dist/cli/commands/fund.d.ts.map +1 -0
  56. package/dist/cli/commands/fund.js +22 -0
  57. package/dist/cli/commands/fund.js.map +1 -0
  58. package/dist/cli/commands/marketplace.d.ts +22 -0
  59. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  60. package/dist/cli/commands/marketplace.js +136 -0
  61. package/dist/cli/commands/marketplace.js.map +1 -0
  62. package/dist/cli/commands/version.d.ts +3 -0
  63. package/dist/cli/commands/version.d.ts.map +1 -0
  64. package/dist/cli/commands/version.js +12 -0
  65. package/dist/cli/commands/version.js.map +1 -0
  66. package/dist/cli/config.d.ts +58 -10
  67. package/dist/cli/config.d.ts.map +1 -1
  68. package/dist/cli/config.js +110 -31
  69. package/dist/cli/config.js.map +1 -1
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +1 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/mcp/proxy/cli.js +1 -0
  75. package/dist/mcp/proxy/cli.js.map +1 -1
  76. package/dist/mcp/proxy/factory.d.ts +2 -0
  77. package/dist/mcp/proxy/factory.d.ts.map +1 -1
  78. package/dist/mcp/proxy/factory.js +10 -1
  79. package/dist/mcp/proxy/factory.js.map +1 -1
  80. package/dist/mcp/proxy/server/init.js +1 -1
  81. package/dist/mcp/proxy/server/init.js.map +1 -1
  82. package/dist/mcp/proxy/server/server.d.ts +3 -1
  83. package/dist/mcp/proxy/server/server.d.ts.map +1 -1
  84. package/dist/mcp/proxy/server/server.js +5 -2
  85. package/dist/mcp/proxy/server/server.js.map +1 -1
  86. package/dist/mcp/proxy/types.d.ts +7 -0
  87. package/dist/mcp/proxy/types.d.ts.map +1 -1
  88. package/dist/mcp/proxy/types.js.map +1 -1
  89. package/dist/version.d.ts +3 -1
  90. package/dist/version.d.ts.map +1 -1
  91. package/dist/version.js +3 -1
  92. package/dist/version.js.map +1 -1
  93. package/dist/x402/http/factory.d.ts +2 -2
  94. package/dist/x402/http/factory.d.ts.map +1 -1
  95. package/dist/x402/http/factory.js +14 -8
  96. package/dist/x402/http/factory.js.map +1 -1
  97. package/dist/x402/index.d.ts +2 -0
  98. package/dist/x402/index.d.ts.map +1 -1
  99. package/dist/x402/index.js +2 -0
  100. package/dist/x402/index.js.map +1 -1
  101. package/dist/x402/siwx.d.ts +55 -0
  102. package/dist/x402/siwx.d.ts.map +1 -0
  103. package/dist/x402/siwx.js +122 -0
  104. package/dist/x402/siwx.js.map +1 -0
  105. package/dist/x402/wallets/smart-account/cosigned.d.ts +9 -2
  106. package/dist/x402/wallets/smart-account/cosigned.d.ts.map +1 -1
  107. package/dist/x402/wallets/smart-account/cosigned.js +13 -4
  108. package/dist/x402/wallets/smart-account/cosigned.js.map +1 -1
  109. package/package.json +3 -2
@@ -18,6 +18,8 @@ export interface SimpleProxyOptions {
18
18
  sessionKeyPrivateKey: Hex;
19
19
  /** Ampersend API URL (defaults to production) */
20
20
  apiUrl?: string;
21
+ /** Client name for product-analytics attribution. Defaults to `sdk-typescript`. */
22
+ clientName?: string;
21
23
  }
22
24
  /**
23
25
  * Initialize an MCP proxy with minimal configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/mcp/proxy/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAIxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAKrD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,0CAA0C;IAC1C,oBAAoB,EAAE,GAAG,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAWxG;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/mcp/proxy/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAIxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAKrD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,0CAA0C;IAC1C,oBAAoB,EAAE,GAAG,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAoBxG;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -31,14 +31,23 @@ const DEFAULT_API_URL = "https://api.ampersend.ai";
31
31
  * @returns Promise resolving to the proxy server instance
32
32
  */
33
33
  export async function createAmpersendProxy(options) {
34
+ const apiUrl = options.apiUrl ?? DEFAULT_API_URL;
35
+ const clientNameOverride = options.clientName !== undefined ? { clientName: options.clientName } : {};
34
36
  const treasurer = createAmpersendTreasurer({
35
37
  smartAccountAddress: options.smartAccountAddress,
36
38
  sessionKeyPrivateKey: options.sessionKeyPrivateKey,
37
- apiUrl: options.apiUrl ?? DEFAULT_API_URL,
39
+ apiUrl,
40
+ ...clientNameOverride,
38
41
  });
39
42
  return initializeProxyServerInternal({
40
43
  transport: { type: "http", port: options.port },
41
44
  treasurer,
45
+ siwx: {
46
+ smartAccountAddress: options.smartAccountAddress,
47
+ sessionKeyPrivateKey: options.sessionKeyPrivateKey,
48
+ apiUrl,
49
+ ...clientNameOverride,
50
+ },
42
51
  });
43
52
  }
44
53
  // Re-export original for advanced use cases
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/mcp/proxy/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,qBAAqB,IAAI,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AAG1F,gCAAgC;AAChC,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAiBlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAA2B;IACpE,MAAM,SAAS,GAAG,wBAAwB,CAAC;QACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe;KAC1C,CAAC,CAAA;IAEF,OAAO,6BAA6B,CAAC;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QAC/C,SAAS;KACV,CAAC,CAAA;AACJ,CAAC;AAED,4CAA4C;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/mcp/proxy/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,qBAAqB,IAAI,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AAG1F,gCAAgC;AAChC,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAmBlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAA2B;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAA;IAChD,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACrG,MAAM,SAAS,GAAG,wBAAwB,CAAC;QACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,MAAM;QACN,GAAG,kBAAkB;KACtB,CAAC,CAAA;IAEF,OAAO,6BAA6B,CAAC;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QAC/C,SAAS;QACT,IAAI,EAAE;YACJ,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,MAAM;YACN,GAAG,kBAAkB;SACtB;KACF,CAAC,CAAA;AACJ,CAAC;AAED,4CAA4C;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -3,7 +3,7 @@ export async function initializeProxyServer(options) {
3
3
  if (options.transport.type !== "http") {
4
4
  throw new Error("transport based proxy only supports HTTP transport");
5
5
  }
6
- const server = new ProxyServer(options.treasurer);
6
+ const server = new ProxyServer(options.treasurer, options.siwx);
7
7
  await server.start(options.transport.port);
8
8
  return { server };
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/mcp/proxy/server/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA2B;IACrE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACjD,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/mcp/proxy/server/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA2B;IACrE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC"}
@@ -1,9 +1,11 @@
1
+ import { type SiwxSignerConfig } from "../../../x402/siwx.ts";
1
2
  import type { X402Treasurer } from "../../../x402/treasurer.ts";
2
3
  export declare class ProxyServer {
3
4
  private _app;
4
5
  private _bridges;
5
6
  private _httpServer;
6
- constructor(treasurer: X402Treasurer);
7
+ private readonly _outboundFetch;
8
+ constructor(treasurer: X402Treasurer, siwx?: SiwxSignerConfig);
7
9
  start(port: number): Promise<void>;
8
10
  stop(): Promise<void>;
9
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/mcp/proxy/server/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI/D,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,WAAW,CAAsB;gBAE7B,SAAS,EAAE,aAAa;IAkF9B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAc5B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/mcp/proxy/server/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAI/D,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;gBAExD,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAsFvD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAc5B"}
@@ -1,13 +1,16 @@
1
1
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
2
2
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
3
3
  import express, {} from "express";
4
+ import { wrapFetchWithAmpersendSiwx } from "../../../x402/siwx.js";
4
5
  import { X402BridgeTransport } from "./bridge.js";
5
6
  import { URLValidationError, validateTargetURL } from "./validation.js";
6
7
  export class ProxyServer {
7
8
  _app = express();
8
9
  _bridges = new Map();
9
10
  _httpServer = null;
10
- constructor(treasurer) {
11
+ _outboundFetch;
12
+ constructor(treasurer, siwx) {
13
+ this._outboundFetch = siwx ? wrapFetchWithAmpersendSiwx(fetch, siwx) : undefined;
11
14
  this._app.use(express.json());
12
15
  this._app.post("/mcp", async (req, res) => {
13
16
  const targetUrl = req.query.target;
@@ -43,7 +46,7 @@ export class ProxyServer {
43
46
  });
44
47
  const bridge = new X402BridgeTransport({
45
48
  leftTransport,
46
- rightTransport: new StreamableHTTPClientTransport(validatedUrl),
49
+ rightTransport: new StreamableHTTPClientTransport(validatedUrl, this._outboundFetch ? { fetch: this._outboundFetch } : undefined),
47
50
  treasurer,
48
51
  });
49
52
  bridge.onerror = (err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/mcp/proxy/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/mcp/proxy/server/server.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { SiwxSignerConfig } from "../../x402/siwx.ts";
1
2
  import type { X402Treasurer } from "../../x402/treasurer.ts";
2
3
  export type { EOAWalletConfig, SmartAccountWalletConfig, WalletConfig } from "../../x402/wallets/index.ts";
3
4
  export interface HTTPTransportOptions {
@@ -16,6 +17,12 @@ export interface ProxyServerOptions {
16
17
  transport: TransportConfig;
17
18
  /** X402Treasurer for handling payment decisions. Required. */
18
19
  treasurer: X402Treasurer;
20
+ /**
21
+ * Sign-In-With-X signer config. When set, the proxy attaches a SIWX-aware
22
+ * fetch to the outbound MCP transport so 402 challenges from sellers who
23
+ * already know the wallet are satisfied without spending.
24
+ */
25
+ siwx?: SiwxSignerConfig;
19
26
  }
20
27
  /**
21
28
  * Runtime context for proxy operations
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/proxy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAG5D,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1G,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,eAAe,CAAA;IAC1B,8DAA8D;IAC9D,SAAS,EAAE,aAAa,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;gBADnB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM;CAKtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/proxy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAG5D,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1G,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,eAAe,CAAA;IAC1B,8DAA8D;IAC9D,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;gBADnB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM;CAKtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/proxy/types.ts"],"names":[],"mappings":"AAiCA;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAG1B;IAFT,YACE,OAAe,EACR,IAAY;QAEnB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFP,SAAI,GAAJ,IAAI,CAAQ;QAGnB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/proxy/types.ts"],"names":[],"mappings":"AAwCA;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAG1B;IAFT,YACE,OAAe,EACR,IAAY;QAEnB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFP,SAAI,GAAJ,IAAI,CAAQ;QAGnB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  /** SDK version - keep in sync with package.json */
2
- export declare const VERSION = "0.0.21";
2
+ export declare const VERSION = "0.0.25";
3
+ /** Minimum skill version this CLI supports. The skill's frontmatter `version` is compared against this. */
4
+ export declare const MIN_SKILL_VERSION = "0.0.22";
3
5
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,eAAO,MAAM,OAAO,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,eAAO,MAAM,OAAO,WAAW,CAAA;AAE/B,2GAA2G;AAC3G,eAAO,MAAM,iBAAiB,WAAW,CAAA"}
package/dist/version.js CHANGED
@@ -1,3 +1,5 @@
1
1
  /** SDK version - keep in sync with package.json */
2
- export const VERSION = "0.0.21";
2
+ export const VERSION = "0.0.25";
3
+ /** Minimum skill version this CLI supports. The skill's frontmatter `version` is compared against this. */
4
+ export const MIN_SKILL_VERSION = "0.0.22";
3
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA;AAE/B,2GAA2G;AAC3G,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAA"}
@@ -12,8 +12,8 @@ export interface SimpleHttpClientOptions {
12
12
  sessionKeyPrivateKey: Hex;
13
13
  /** Ampersend API URL. Defaults to production. */
14
14
  apiUrl?: string;
15
- /** v1 network name (e.g. `"base"`). v1 and v2 (CAIP-2) are both registered. */
16
- network?: string;
15
+ /** Client name for product-analytics attribution. Defaults to `sdk-typescript`. */
16
+ clientName?: string;
17
17
  }
18
18
  /**
19
19
  * Create an `AmpersendX402Client` wired to the Ampersend API.
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/x402/http/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAKjD,MAAM,WAAW,uBAAuB;IACtC,6BAA6B;IAC7B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,2CAA2C;IAC3C,oBAAoB,EAAE,GAAG,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,uBAAuB,GAAG,mBAAmB,CAiB/F"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/x402/http/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AASjD,MAAM,WAAW,uBAAuB;IACtC,6BAA6B;IAC7B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,2CAA2C;IAC3C,oBAAoB,EAAE,GAAG,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,uBAAuB,GAAG,mBAAmB,CAoB/F"}
@@ -7,7 +7,10 @@ import { EVM_NETWORK_CHAIN_ID_MAP } from "@x402/evm/v1";
7
7
  import { createAmpersendTreasurer } from "../../ampersend/treasurer.js";
8
8
  import { AmpersendX402Client } from "./client.js";
9
9
  const DEFAULT_API_URL = "https://api.ampersend.ai";
10
- const DEFAULT_NETWORK = "base";
10
+ // Ampersend smart accounts run on Base. Register both mainnet and testnet so
11
+ // the buyer can pay sellers on either without per-call configuration; the API
12
+ // arbitrates which one is actually authorized.
13
+ const SUPPORTED_V1_NETWORKS = ["base", "base-sepolia"];
11
14
  /**
12
15
  * Create an `AmpersendX402Client` wired to the Ampersend API.
13
16
  *
@@ -25,19 +28,22 @@ const DEFAULT_NETWORK = "base";
25
28
  * ```
26
29
  */
27
30
  export function createAmpersendHttpClient(options) {
28
- const network = options.network ?? DEFAULT_NETWORK;
29
- const chainId = EVM_NETWORK_CHAIN_ID_MAP[network];
30
- if (chainId === undefined) {
31
- throw new Error(`Unknown network: ${network}`);
32
- }
31
+ const chainIds = SUPPORTED_V1_NETWORKS.map((network) => {
32
+ const chainId = EVM_NETWORK_CHAIN_ID_MAP[network];
33
+ if (chainId === undefined) {
34
+ throw new Error(`Unknown network: ${network}`);
35
+ }
36
+ return chainId;
37
+ });
33
38
  const treasurer = createAmpersendTreasurer({
34
39
  smartAccountAddress: options.smartAccountAddress,
35
40
  sessionKeyPrivateKey: options.sessionKeyPrivateKey,
36
41
  apiUrl: options.apiUrl ?? DEFAULT_API_URL,
42
+ ...(options.clientName !== undefined ? { clientName: options.clientName } : {}),
37
43
  });
38
44
  return new AmpersendX402Client(treasurer).withNetworks({
39
- v1: [network],
40
- v2: [`eip155:${chainId}`],
45
+ v1: SUPPORTED_V1_NETWORKS,
46
+ v2: chainIds.map((id) => `eip155:${id}`),
41
47
  });
42
48
  }
43
49
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/x402/http/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAClD,MAAM,eAAe,GAAG,MAAM,CAAA;AAa9B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAA;IAClD,MAAM,OAAO,GAAI,wBAA6D,CAAC,OAAO,CAAC,CAAA;IACvF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,SAAS,GAAG,wBAAwB,CAAC;QACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe;KAC1C,CAAC,CAAA;IAEF,OAAO,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;QACrD,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,EAAE,EAAE,CAAC,UAAU,OAAO,EAAE,CAAC;KAC1B,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/x402/http/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAElD,6EAA6E;AAC7E,8EAA8E;AAC9E,+CAA+C;AAC/C,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAU,CAAA;AAa/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgC;IACxE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACrD,MAAM,OAAO,GAAI,wBAA6D,CAAC,OAAO,CAAC,CAAA;QACvF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,wBAAwB,CAAC;QACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe;QACzC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC,CAAA;IAEF,OAAO,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;QACrD,EAAE,EAAE,qBAAqB;QACzB,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;KACzC,CAAC,CAAA;AACJ,CAAC"}
@@ -8,4 +8,6 @@ export { AccountWallet, SmartAccountWallet, createWalletFromConfig } from "./wal
8
8
  export type { SmartAccountConfig, WalletConfig, EOAWalletConfig, SmartAccountWalletConfig } from "./wallets/index.ts";
9
9
  export { AmpersendX402Client, PaymentDeclinedError, UnsupportedProtocolError, createAmpersendHttpClient, } from "./http/index.ts";
10
10
  export type { AmpersendNetworks, SimpleHttpClientOptions } from "./http/index.ts";
11
+ export { createSiwxSigner, wrapFetchWithAmpersendSiwx } from "./siwx.ts";
12
+ export type { SiwxSignerConfig } from "./siwx.ts";
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG5G,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACjG,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC9F,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGrH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG5G,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACjG,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC9F,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGrH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAGjF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA"}
@@ -4,4 +4,6 @@ export { WalletError } from "./wallet.js";
4
4
  export { AccountWallet, SmartAccountWallet, createWalletFromConfig } from "./wallets/index.js";
5
5
  // HTTP integration
6
6
  export { AmpersendX402Client, PaymentDeclinedError, UnsupportedProtocolError, createAmpersendHttpClient, } from "./http/index.js";
7
+ // Sign-In-With-X integration
8
+ export { createSiwxSigner, wrapFetchWithAmpersendSiwx } from "./siwx.js";
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAK5G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGzC,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG9F,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAK5G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGzC,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG9F,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AAGxB,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Sign-In-With-X (SIWX) integration for Ampersend smart accounts.
3
+ *
4
+ * Every ERC-1271 signature out of an Ampersend Safe is gated by
5
+ * CoSignerValidator (session key + service key). This module wires that
6
+ * dual-sig requirement into the SIWX client flow: session key signs the SIWE
7
+ * message hash locally, the API co-signs the same hash, the pair is packed
8
+ * into a CoSignerValidator envelope, and the result becomes the SIWX
9
+ * signature. Servers MUST verify via ERC-1271 (e.g. `publicClient.verifyMessage`).
10
+ */
11
+ import { type EVMSigner } from "@x402/extensions/sign-in-with-x";
12
+ import { type Address, type Hex } from "viem";
13
+ export interface SiwxSignerConfig {
14
+ /** Smart account address — the SIWX-claimed identity and the payment-history address. */
15
+ smartAccountAddress: Address;
16
+ /** Session key authorized via CoSignerValidator to sign for the smart account. */
17
+ sessionKeyPrivateKey: Hex;
18
+ /** Ampersend API base URL. */
19
+ apiUrl: string;
20
+ /** CoSignerValidator address. Defaults to the standard CoSignerValidator. */
21
+ validatorAddress?: Address;
22
+ /** Client name for product-analytics attribution. Defaults to `sdk-typescript`. */
23
+ clientName?: string;
24
+ }
25
+ /**
26
+ * Build an EVMSigner that signs SIWX messages as the smart account.
27
+ *
28
+ * Each `signMessage` call dispatches a co-sign request to the Ampersend API,
29
+ * so SIWX inherits the same liveness + policy boundary as payments. The
30
+ * returned signature is a CoSignerValidator ERC-1271 envelope: server
31
+ * verifiers call the Safe's `isValidSignature`, which routes to
32
+ * CoSignerValidator, which recovers both keys against `hashMessage(message)`.
33
+ */
34
+ export declare function createSiwxSigner(config: SiwxSignerConfig): EVMSigner;
35
+ /**
36
+ * Wrap a fetch implementation so SIWX 402 challenges are satisfied
37
+ * automatically, signing as the configured smart account.
38
+ *
39
+ * Pair with `wrapFetchWithPayment` from `@x402/fetch`, putting SIWX **inside**
40
+ * the payment wrapper. SIWX handles auth-only routes and re-entry to
41
+ * previously-paid resources; anything else (no SIWX extension, signature
42
+ * rejected) falls through unchanged to the payment wrapper.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const fetchWithSiwx = wrapFetchWithAmpersendSiwx(fetch, {
47
+ * smartAccountAddress,
48
+ * sessionKeyPrivateKey,
49
+ * apiUrl,
50
+ * })
51
+ * const fetchWithPayment = wrapFetchWithPayment(fetchWithSiwx, ampersendClient)
52
+ * ```
53
+ */
54
+ export declare function wrapFetchWithAmpersendSiwx(fetchImpl: typeof globalThis.fetch, config: SiwxSignerConfig): typeof globalThis.fetch;
55
+ //# sourceMappingURL=siwx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siwx.d.ts","sourceRoot":"","sources":["../../src/x402/siwx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAe,KAAK,OAAO,EAAE,KAAK,GAAG,EAAwB,MAAM,MAAM,CAAA;AAOhF,MAAM,WAAW,gBAAgB;IAC/B,yFAAyF;IACzF,mBAAmB,EAAE,OAAO,CAAA;IAC5B,kFAAkF;IAClF,oBAAoB,EAAE,GAAG,CAAA;IACzB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CA6BpE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,UAAU,CAAC,KAAK,EAClC,MAAM,EAAE,gBAAgB,GACvB,OAAO,UAAU,CAAC,KAAK,CA0CzB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Sign-In-With-X (SIWX) integration for Ampersend smart accounts.
3
+ *
4
+ * Every ERC-1271 signature out of an Ampersend Safe is gated by
5
+ * CoSignerValidator (session key + service key). This module wires that
6
+ * dual-sig requirement into the SIWX client flow: session key signs the SIWE
7
+ * message hash locally, the API co-signs the same hash, the pair is packed
8
+ * into a CoSignerValidator envelope, and the result becomes the SIWX
9
+ * signature. Servers MUST verify via ERC-1271 (e.g. `publicClient.verifyMessage`).
10
+ */
11
+ import { decodePaymentRequiredHeader } from "@x402/core/http";
12
+ import { createSIWxPayload, encodeSIWxHeader, SIGN_IN_WITH_X, } from "@x402/extensions/sign-in-with-x";
13
+ import { hashMessage } from "viem";
14
+ import { privateKeyToAccount } from "viem/accounts";
15
+ import { ApiClient } from "../ampersend/client.js";
16
+ import { COSIGNER_VALIDATOR } from "../smart-account/constants.js";
17
+ import { encodeCoSignerEnvelope } from "./wallets/smart-account/cosigned.js";
18
+ /**
19
+ * Normalize viem's `SignableMessage` to the raw string SIWE produces.
20
+ * SIWX message bodies are always strings per CAIP-122; reject the `{ raw }`
21
+ * shape rather than guess what to send to the API for parsing.
22
+ */
23
+ function requireStringMessage(message) {
24
+ if (typeof message === "string")
25
+ return message;
26
+ throw new Error("SIWX signer received a non-string message; SIWE messages must be strings");
27
+ }
28
+ /**
29
+ * Build an EVMSigner that signs SIWX messages as the smart account.
30
+ *
31
+ * Each `signMessage` call dispatches a co-sign request to the Ampersend API,
32
+ * so SIWX inherits the same liveness + policy boundary as payments. The
33
+ * returned signature is a CoSignerValidator ERC-1271 envelope: server
34
+ * verifiers call the Safe's `isValidSignature`, which routes to
35
+ * CoSignerValidator, which recovers both keys against `hashMessage(message)`.
36
+ */
37
+ export function createSiwxSigner(config) {
38
+ const validatorAddress = config.validatorAddress ?? COSIGNER_VALIDATOR;
39
+ const sessionKeyAccount = privateKeyToAccount(config.sessionKeyPrivateKey);
40
+ const apiClient = new ApiClient({
41
+ baseUrl: config.apiUrl,
42
+ sessionKeyPrivateKey: config.sessionKeyPrivateKey,
43
+ agentAddress: config.smartAccountAddress,
44
+ ...(config.clientName !== undefined ? { clientName: config.clientName } : {}),
45
+ });
46
+ return {
47
+ address: config.smartAccountAddress,
48
+ signMessage: async ({ message }) => {
49
+ const messageString = requireStringMessage(message);
50
+ // viem's verifyMessage passes hashMessage(message) to the Safe's
51
+ // isValidSignature; CoSignerValidator's `_validateDualSignature` then
52
+ // calls `ECDSA.recover(hash, sig)` directly — no further EIP-191
53
+ // wrapping. Both signatures MUST be raw ECDSA over this exact hash,
54
+ // not signMessage({ raw }) (which would re-prefix and recover wrong).
55
+ const messageHash = hashMessage(messageString);
56
+ const [agentSignature, { serverSignature }] = await Promise.all([
57
+ sessionKeyAccount.sign({ hash: messageHash }),
58
+ apiClient.signSiwxChallenge(messageString),
59
+ ]);
60
+ return encodeCoSignerEnvelope(agentSignature, serverSignature, validatorAddress);
61
+ },
62
+ };
63
+ }
64
+ /**
65
+ * Wrap a fetch implementation so SIWX 402 challenges are satisfied
66
+ * automatically, signing as the configured smart account.
67
+ *
68
+ * Pair with `wrapFetchWithPayment` from `@x402/fetch`, putting SIWX **inside**
69
+ * the payment wrapper. SIWX handles auth-only routes and re-entry to
70
+ * previously-paid resources; anything else (no SIWX extension, signature
71
+ * rejected) falls through unchanged to the payment wrapper.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * const fetchWithSiwx = wrapFetchWithAmpersendSiwx(fetch, {
76
+ * smartAccountAddress,
77
+ * sessionKeyPrivateKey,
78
+ * apiUrl,
79
+ * })
80
+ * const fetchWithPayment = wrapFetchWithPayment(fetchWithSiwx, ampersendClient)
81
+ * ```
82
+ */
83
+ export function wrapFetchWithAmpersendSiwx(fetchImpl, config) {
84
+ const signer = createSiwxSigner(config);
85
+ // Upstream `wrapFetchWithSIWx` keys chain selection off `accepts[0].network`,
86
+ // which breaks auth-only routes (`accepts: []`) — they hand off to the
87
+ // payment wrapper which then errors on the empty accepts array. We pick the
88
+ // chain from `accepts[0]` when present, otherwise fall back to the first
89
+ // entry in `supportedChains`. Loop guard via the SIWX header is preserved.
90
+ return async (input, init) => {
91
+ const request = new Request(input, init);
92
+ const clonedRequest = request.clone();
93
+ const response = await fetchImpl(request);
94
+ if (response.status !== 402)
95
+ return response;
96
+ const paymentRequiredHeader = response.headers.get("PAYMENT-REQUIRED");
97
+ if (!paymentRequiredHeader)
98
+ return response;
99
+ const paymentRequired = decodePaymentRequiredHeader(paymentRequiredHeader);
100
+ const siwxExtension = paymentRequired.extensions?.[SIGN_IN_WITH_X];
101
+ if (!siwxExtension?.supportedChains?.length)
102
+ return response;
103
+ if (clonedRequest.headers.has(SIGN_IN_WITH_X)) {
104
+ throw new Error("SIWX authentication already attempted");
105
+ }
106
+ const paymentNetwork = paymentRequired.accepts?.[0]?.network;
107
+ const matchingChain = paymentNetwork
108
+ ? siwxExtension.supportedChains.find((c) => c.chainId === paymentNetwork)
109
+ : siwxExtension.supportedChains[0];
110
+ if (!matchingChain)
111
+ return response;
112
+ const completeInfo = {
113
+ ...siwxExtension.info,
114
+ chainId: matchingChain.chainId,
115
+ type: matchingChain.type,
116
+ };
117
+ const payload = await createSIWxPayload(completeInfo, signer);
118
+ clonedRequest.headers.set(SIGN_IN_WITH_X, encodeSIWxHeader(payload));
119
+ return fetchImpl(clonedRequest);
120
+ };
121
+ }
122
+ //# sourceMappingURL=siwx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siwx.js","sourceRoot":"","sources":["../../src/x402/siwx.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,15 @@ export interface CoSignedPaymentConfig {
7
7
  coSignerValidatorAddress: Address;
8
8
  }
9
9
  /**
10
- * CoSignerValidator ERC-1271 signature: agent signs → `abi.encode(agentSig, serverSig)`
11
- * `encodePacked(validator, combined)`.
10
+ * Pack a pair of ECDSA signatures into a CoSignerValidator ERC-1271 envelope:
11
+ * `abi.encode(agentSig, serverSig)` then `encodePacked(validator, combined)`
12
+ * (ERC-7579 nested-validator framing). Both signatures MUST be over the same
13
+ * digest that the validator will recover against.
14
+ */
15
+ export declare function encodeCoSignerEnvelope(agentSignature: Hex, serverSignature: Hex, validator: Address): Hex;
16
+ /**
17
+ * CoSignerValidator ERC-1271 signature for EIP-712 typed data: agent signs the
18
+ * typed data, then the pair is packed via {@link encodeCoSignerEnvelope}.
12
19
  */
13
20
  export declare function encodeCoSignedERC1271Signature(agentPrivateKey: Hex, typedDataParams: TypedDataDefinition, serverSignature: Hex, coSignerValidatorAddress: Address): Promise<Hex>;
14
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cosigned.d.ts","sourceRoot":"","sources":["../../../../src/x402/wallets/smart-account/cosigned.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAI1G,OAAO,EAAkC,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAG7D,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,oBAAoB,EAAE,GAAG,CAAA;IACzB,wBAAwB,EAAE,OAAO,CAAA;CAClC;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,GAAG,EACpB,eAAe,EAAE,mBAAmB,EACpC,eAAe,EAAE,GAAG,EACpB,wBAAwB,EAAE,OAAO,GAChC,OAAO,CAAC,GAAG,CAAC,CAUd;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,kBAAkB,EAC/B,MAAM,EAAE,qBAAqB,EAC7B,mBAAmB,EAAE,uBAAuB,GAC3C,OAAO,CAAC,oBAAoB,CAAC,CAyD/B"}
1
+ {"version":3,"file":"cosigned.d.ts","sourceRoot":"","sources":["../../../../src/x402/wallets/smart-account/cosigned.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAI1G,OAAO,EAAkC,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAG7D,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,oBAAoB,EAAE,GAAG,CAAA;IACzB,wBAAwB,EAAE,OAAO,CAAA;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,CAGzG;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,GAAG,EACpB,eAAe,EAAE,mBAAmB,EACpC,eAAe,EAAE,GAAG,EACpB,wBAAwB,EAAE,OAAO,GAChC,OAAO,CAAC,GAAG,CAAC,CAId;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,kBAAkB,EAC/B,MAAM,EAAE,qBAAqB,EAC7B,mBAAmB,EAAE,uBAAuB,GAC3C,OAAO,CAAC,oBAAoB,CAAC,CAyD/B"}
@@ -4,14 +4,23 @@ import { TRANSFER_WITH_AUTHORIZATION_TYPE } from "../../../smart-account/eip712-
4
4
  import { acceptedOf, buildAuthorization } from "../../envelopes.js";
5
5
  import { chainIdOf } from "./chain.js";
6
6
  /**
7
- * CoSignerValidator ERC-1271 signature: agent signs → `abi.encode(agentSig, serverSig)`
8
- * `encodePacked(validator, combined)`.
7
+ * Pack a pair of ECDSA signatures into a CoSignerValidator ERC-1271 envelope:
8
+ * `abi.encode(agentSig, serverSig)` then `encodePacked(validator, combined)`
9
+ * (ERC-7579 nested-validator framing). Both signatures MUST be over the same
10
+ * digest that the validator will recover against.
11
+ */
12
+ export function encodeCoSignerEnvelope(agentSignature, serverSignature, validator) {
13
+ const combined = encodeAbiParameters([{ type: "bytes" }, { type: "bytes" }], [agentSignature, serverSignature]);
14
+ return encodePacked(["address", "bytes"], [validator, combined]);
15
+ }
16
+ /**
17
+ * CoSignerValidator ERC-1271 signature for EIP-712 typed data: agent signs the
18
+ * typed data, then the pair is packed via {@link encodeCoSignerEnvelope}.
9
19
  */
10
20
  export async function encodeCoSignedERC1271Signature(agentPrivateKey, typedDataParams, serverSignature, coSignerValidatorAddress) {
11
21
  const agentAccount = privateKeyToAccount(agentPrivateKey);
12
22
  const agentSignature = await agentAccount.signTypedData(typedDataParams);
13
- const combinedSignature = encodeAbiParameters([{ type: "bytes" }, { type: "bytes" }], [agentSignature, serverSignature]);
14
- return encodePacked(["address", "bytes"], [coSignerValidatorAddress, combinedSignature]);
23
+ return encodeCoSignerEnvelope(agentSignature, serverSignature, coSignerValidatorAddress);
15
24
  }
16
25
  /**
17
26
  * Sign a co-signed `exact` instruction. Server supplies ERC-3009
@@ -1 +1 @@
1
- {"version":3,"file":"cosigned.js","sourceRoot":"","sources":["../../../../src/x402/wallets/smart-account/cosigned.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cosigned.js","sourceRoot":"","sources":["../../../../src/x402/wallets/smart-account/cosigned.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ampersend_ai/ampersend-sdk",
3
3
  "description": "Tooling for building applications with x402 payment capabilities. Supports buyer and seller roles.",
4
- "version": "0.0.21",
4
+ "version": "0.0.25",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -66,10 +66,11 @@
66
66
  "@types/express": "^5.0.6",
67
67
  "@x402/core": "2.9.0",
68
68
  "@x402/evm": "2.9.0",
69
+ "@x402/extensions": "2.9.0",
69
70
  "@x402/fetch": "2.9.0",
70
71
  "async-mutex": "^0.5.0",
71
72
  "commander": "^12.1.0",
72
- "effect": "^3.21.0",
73
+ "effect": "^3.21.2",
73
74
  "express": "^5.2.1",
74
75
  "fastmcp": "npm:@ampersend_ai/fastmcp@^1.0.0",
75
76
  "siwe": "^3.0.0",