@openserv-labs/client 2.2.2 → 2.4.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.
@@ -80,12 +80,14 @@ export declare class AgentsAPI {
80
80
  * @param params.name - Unique name for the agent
81
81
  * @param params.capabilities_description - Description of what the agent can do
82
82
  * @param params.endpoint_url - URL where the agent is hosted
83
+ * @param params.model_parameters - Optional model parameters (e.g. { model: "gpt-5-mini", verbosity: "medium", reasoning_effort: "low" })
83
84
  * @returns The created agent
84
85
  */
85
86
  create(params: {
86
87
  name: string;
87
88
  capabilities_description: string;
88
89
  endpoint_url: string;
90
+ model_parameters?: Record<string, unknown>;
89
91
  }): Promise<Agent>;
90
92
  /**
91
93
  * Get the API key for an agent.
@@ -103,6 +105,7 @@ export declare class AgentsAPI {
103
105
  * @param params.endpoint_url - New endpoint URL (optional)
104
106
  * @param params.name - New name (optional)
105
107
  * @param params.capabilities_description - New description (optional)
108
+ * @param params.model_parameters - New model parameters (optional, e.g. { model: "gpt-4.1", temperature: 0 })
106
109
  * @returns The updated agent
107
110
  */
108
111
  update(params: {
@@ -110,6 +113,7 @@ export declare class AgentsAPI {
110
113
  endpoint_url?: string;
111
114
  name?: string;
112
115
  capabilities_description?: string;
116
+ model_parameters?: Record<string, unknown>;
113
117
  }): Promise<Agent>;
114
118
  /**
115
119
  * Delete an agent.
@@ -1 +1 @@
1
- {"version":3,"file":"agents-api.d.ts","sourceRoot":"","sources":["../src/agents-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EACV,KAAK,EAKL,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAK9B;;;;;;;;OAQG;IACG,eAAe,CAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAetC;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAI1D;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAO9D;;;;;;;OAOG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,wBAAwB,EAAE,MAAM,CAAC;QACjC,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,KAAK,CAAC;IAWlB;;;;;OAKG;IACG,SAAS,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjE;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,GAAG,OAAO,CAAC,KAAK,CAAC;IAwClB;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAOF;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,IAAI,CAAC;CAKlB"}
1
+ {"version":3,"file":"agents-api.d.ts","sourceRoot":"","sources":["../src/agents-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EACV,KAAK,EAKL,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAK9B;;;;;;;;OAQG;IACG,eAAe,CAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAetC;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAI1D;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAO9D;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,wBAAwB,EAAE,MAAM,CAAC;QACjC,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GAAG,OAAO,CAAC,KAAK,CAAC;IAclB;;;;;OAKG;IACG,SAAS,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjE;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GAAG,OAAO,CAAC,KAAK,CAAC;IA+ClB;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAOF;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,IAAI,CAAC;CAKlB"}
@@ -93,6 +93,7 @@ class AgentsAPI {
93
93
  * @param params.name - Unique name for the agent
94
94
  * @param params.capabilities_description - Description of what the agent can do
95
95
  * @param params.endpoint_url - URL where the agent is hosted
96
+ * @param params.model_parameters - Optional model parameters (e.g. { model: "gpt-5-mini", verbosity: "medium", reasoning_effort: "low" })
96
97
  * @returns The created agent
97
98
  */
98
99
  async create(params) {
@@ -102,6 +103,9 @@ class AgentsAPI {
102
103
  endpoint_url: params.endpoint_url,
103
104
  kind: "external",
104
105
  is_built_by_agent_builder: false,
106
+ ...(params.model_parameters && {
107
+ model_parameters: params.model_parameters,
108
+ }),
105
109
  });
106
110
  return this.get({ id: data.id });
107
111
  }
@@ -122,10 +126,11 @@ class AgentsAPI {
122
126
  * @param params.endpoint_url - New endpoint URL (optional)
123
127
  * @param params.name - New name (optional)
124
128
  * @param params.capabilities_description - New description (optional)
129
+ * @param params.model_parameters - New model parameters (optional, e.g. { model: "gpt-4.1", temperature: 0 })
125
130
  * @returns The updated agent
126
131
  */
127
132
  async update(params) {
128
- const { id, endpoint_url, name, capabilities_description } = params;
133
+ const { id, endpoint_url, name, capabilities_description, model_parameters, } = params;
129
134
  // First get the current agent to preserve ALL required fields
130
135
  const currentAgent = await this.get({ id });
131
136
  // Build update payload - API uses PUT and requires ALL fields
@@ -144,6 +149,7 @@ class AgentsAPI {
144
149
  is_listed_on_marketplace: currentAgent.is_listed_on_marketplace ?? false,
145
150
  is_trading_agent: currentAgent.is_trading_agent ?? false,
146
151
  scopes,
152
+ model_parameters: model_parameters ?? currentAgent.model_parameters,
147
153
  };
148
154
  // endpoint_url is required for external agents.
149
155
  // For your own agents, the GET endpoint returns endpoint_url.
package/dist/client.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type AxiosInstance, type AxiosRequestConfig } from "axios";
2
2
  import { AgentsAPI } from "./agents-api";
3
3
  import { IntegrationsAPI } from "./integrations-api";
4
+ import { ModelsAPI } from "./models-api";
4
5
  import { TriggersAPI } from "./triggers-api";
5
6
  import { TasksAPI } from "./tasks-api";
6
7
  import { WorkflowsAPI } from "./workflows-api";
@@ -31,6 +32,8 @@ export declare class PlatformClient {
31
32
  readonly agents: AgentsAPI;
32
33
  /** API for managing integration connections */
33
34
  readonly integrations: IntegrationsAPI;
35
+ /** API for discovering available LLM models */
36
+ readonly models: ModelsAPI;
34
37
  /** API for managing workflow triggers */
35
38
  readonly triggers: TriggersAPI;
36
39
  /** API for managing workflow tasks */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK3C;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAgB;IAElC,gHAAgH;IAChH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B;;;OAGG;IACH,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKnE;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;OAKG;IACG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKtE;;;;;;OAMG;gBACS,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAsB3D;;;;;;;;;;;;;;;;;OAiBG;IACG,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmExD;;;;;;;;OAQG;IACH,oBAAoB,IAAI,MAAM,GAAG,SAAS;CAO3C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAG3E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK3C;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAgB;IAElC,gHAAgH;IAChH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B;;;OAGG;IACH,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKnE;;;;;;OAMG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;OAKG;IACG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKtE;;;;;;OAMG;gBACS,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAuB3D;;;;;;;;;;;;;;;;;OAiBG;IACG,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmExD;;;;;;;;OAQG;IACH,oBAAoB,IAAI,MAAM,GAAG,SAAS;CAS3C"}
package/dist/client.js CHANGED
@@ -5,9 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.PlatformClient = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
- const ethers_1 = require("ethers");
8
+ const accounts_1 = require("viem/accounts");
9
+ const utils_1 = require("./utils");
9
10
  const agents_api_1 = require("./agents-api");
10
11
  const integrations_api_1 = require("./integrations-api");
12
+ const models_api_1 = require("./models-api");
11
13
  const triggers_api_1 = require("./triggers-api");
12
14
  const tasks_api_1 = require("./tasks-api");
13
15
  const workflows_api_1 = require("./workflows-api");
@@ -39,6 +41,8 @@ class PlatformClient {
39
41
  agents;
40
42
  /** API for managing integration connections */
41
43
  integrations;
44
+ /** API for discovering available LLM models */
45
+ models;
42
46
  /** API for managing workflow triggers */
43
47
  triggers;
44
48
  /** API for managing workflow tasks */
@@ -119,6 +123,7 @@ class PlatformClient {
119
123
  });
120
124
  this.agents = new agents_api_1.AgentsAPI(this);
121
125
  this.integrations = new integrations_api_1.IntegrationsAPI(this);
126
+ this.models = new models_api_1.ModelsAPI(this);
122
127
  this.triggers = new triggers_api_1.TriggersAPI(this);
123
128
  this.tasks = new tasks_api_1.TasksAPI(this);
124
129
  this.workflows = new workflows_api_1.WorkflowsAPI(this);
@@ -150,9 +155,9 @@ class PlatformClient {
150
155
  // If no wallet key, assume API key auth is already set up
151
156
  return "";
152
157
  }
153
- // Create wallet and store address for x402 wallet resolution
154
- const wallet = new ethers_1.ethers.Wallet(walletKey);
155
- const walletAddress = wallet.address;
158
+ // Create account and store address for x402 wallet resolution
159
+ const account = (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(walletKey));
160
+ const walletAddress = account.address;
156
161
  this.walletAddress = walletAddress;
157
162
  // Step 1: Get nonce from platform
158
163
  const nonceResponse = await this._apiClient.post("/auth/wallet/nonce", {
@@ -178,7 +183,7 @@ Chain ID: 1
178
183
  Nonce: ${nonce}
179
184
  Issued At: ${issuedAt}`;
180
185
  // Step 2: Sign the message
181
- const signature = await wallet.signMessage(message);
186
+ const signature = await account.signMessage({ message });
182
187
  // Step 3: Verify signature and get API key
183
188
  const verifyResponse = await this._apiClient.post("/auth/wallet/verify", {
184
189
  walletAddress,
@@ -203,7 +208,7 @@ Issued At: ${issuedAt}`;
203
208
  if (this.walletAddress)
204
209
  return this.walletAddress;
205
210
  if (process.env.WALLET_PRIVATE_KEY) {
206
- return new ethers_1.ethers.Wallet(process.env.WALLET_PRIVATE_KEY).address;
211
+ return (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(process.env.WALLET_PRIVATE_KEY)).address;
207
212
  }
208
213
  return undefined;
209
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"erc8004-api.d.ts","sourceRoot":"","sources":["../src/erc8004-api.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAM1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACG,MAAM,CACV,MAAM,EAAE,oBAAoB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GACpD,OAAO,CAAC,YAAY,CAAC;IAsBxB;;;OAGG;YACW,iBAAiB;IAiC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsQlC;;OAEG;YACW,YAAY;IAyB1B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA8CjC;;;;;;;;;;;;;;;;OAgBG;IACG,cAAc,CAAC,MAAM,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAKpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"erc8004-api.d.ts","sourceRoot":"","sources":["../src/erc8004-api.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACb,MAAM,SAAS,CAAC;AAKjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAM1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACG,MAAM,CACV,MAAM,EAAE,oBAAoB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GACpD,OAAO,CAAC,YAAY,CAAC;IAsBxB;;;OAGG;YACW,iBAAiB;IAiC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmQlC;;OAEG;YACW,YAAY;IAyB1B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA8CjC;;;;;;;;;;;;;;;;OAgBG;IACG,cAAc,CAAC,MAAM,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAKpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -6,6 +6,7 @@ const accounts_1 = require("viem/accounts");
6
6
  const pinata_1 = require("pinata");
7
7
  const erc8004_abi_js_1 = require("./erc8004-abi.js");
8
8
  const erc8004_contracts_js_1 = require("./erc8004-contracts.js");
9
+ const utils_1 = require("./utils");
9
10
  /**
10
11
  * API for ERC-8004 agent identity operations on the OpenServ platform.
11
12
  *
@@ -323,8 +324,7 @@ class Erc8004API {
323
324
  default: { http: [rpcUrl] },
324
325
  },
325
326
  });
326
- const normalizedKey = (privateKey.startsWith("0x") ? privateKey : `0x${privateKey}`);
327
- const account = (0, accounts_1.privateKeyToAccount)(normalizedKey);
327
+ const account = (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(privateKey));
328
328
  const publicClient = (0, viem_1.createPublicClient)({
329
329
  chain: viemChain,
330
330
  transport: (0, viem_1.http)(rpcUrl),
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export { PlatformClient } from "./client";
5
5
  export { Workflow } from "./workflow";
6
6
  export { AgentsAPI } from "./agents-api";
7
7
  export { IntegrationsAPI } from "./integrations-api";
8
+ export { ModelsAPI } from "./models-api";
9
+ export type { ModelParameterMeta, ModelInfo, ModelsResponse, } from "./models-api";
8
10
  export { TriggersAPI } from "./triggers-api";
9
11
  export { TasksAPI } from "./tasks-api";
10
12
  export { WorkflowsAPI } from "./workflows-api";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,EAEd,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,YAAY,EAEZ,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAEf,kBAAkB,EAClB,iBAAiB,EAEjB,oBAAoB,EACpB,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,YAAY,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,MAAM,GACP,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,GACV,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,EAEd,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,YAAY,EAEZ,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAEf,kBAAkB,EAClB,iBAAiB,EAEjB,oBAAoB,EACpB,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,YAAY,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,MAAM,GACP,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,GACV,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setLogger = exports.clearProvisionedState = exports.getProvisionedInfo = exports.isProvisioned = exports.provision = exports.listErc8004ChainIds = exports.getErc8004Contracts = exports.getErc8004Chain = exports.ERC8004_CHAINS = exports.ERC8004_TESTNET_CONTRACTS = exports.ERC8004_MAINNET_CONTRACTS = exports.Erc8004API = exports.PaymentsAPI = exports.Web3API = exports.WorkflowsAPI = exports.TasksAPI = exports.TriggersAPI = exports.IntegrationsAPI = exports.AgentsAPI = exports.Workflow = exports.PlatformClient = exports.inputSchemaToJsonSchema = exports.triggers = void 0;
3
+ exports.setLogger = exports.clearProvisionedState = exports.getProvisionedInfo = exports.isProvisioned = exports.provision = exports.listErc8004ChainIds = exports.getErc8004Contracts = exports.getErc8004Chain = exports.ERC8004_CHAINS = exports.ERC8004_TESTNET_CONTRACTS = exports.ERC8004_MAINNET_CONTRACTS = exports.Erc8004API = exports.PaymentsAPI = exports.Web3API = exports.WorkflowsAPI = exports.TasksAPI = exports.TriggersAPI = exports.ModelsAPI = exports.IntegrationsAPI = exports.AgentsAPI = exports.Workflow = exports.PlatformClient = exports.inputSchemaToJsonSchema = exports.triggers = void 0;
4
4
  // Trigger factory and helpers
5
5
  var triggers_api_1 = require("./triggers-api");
6
6
  Object.defineProperty(exports, "triggers", { enumerable: true, get: function () { return triggers_api_1.triggers; } });
@@ -14,6 +14,8 @@ var agents_api_1 = require("./agents-api");
14
14
  Object.defineProperty(exports, "AgentsAPI", { enumerable: true, get: function () { return agents_api_1.AgentsAPI; } });
15
15
  var integrations_api_1 = require("./integrations-api");
16
16
  Object.defineProperty(exports, "IntegrationsAPI", { enumerable: true, get: function () { return integrations_api_1.IntegrationsAPI; } });
17
+ var models_api_1 = require("./models-api");
18
+ Object.defineProperty(exports, "ModelsAPI", { enumerable: true, get: function () { return models_api_1.ModelsAPI; } });
17
19
  var triggers_api_2 = require("./triggers-api");
18
20
  Object.defineProperty(exports, "TriggersAPI", { enumerable: true, get: function () { return triggers_api_2.TriggersAPI; } });
19
21
  var tasks_api_1 = require("./tasks-api");
@@ -1 +1 @@
1
- {"version":3,"file":"payments-api.d.ts","sourceRoot":"","sources":["../src/payments-api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgDzE;;OAEG;YACW,qBAAqB;IAmCnC;;;;;;;;;;;;;;;;;OAiBG;IACG,gBAAgB,IAAI,OAAO,CAC/B,KAAK,CAAC;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CACH;IAmBD;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,mBAAmB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5D,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CAeH"}
1
+ {"version":3,"file":"payments-api.d.ts","sourceRoot":"","sources":["../src/payments-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGrE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDG;IACG,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiDzE;;OAEG;YACW,qBAAqB;IAmCnC;;;;;;;;;;;;;;;;;OAiBG;IACG,gBAAgB,IAAI,OAAO,CAC/B,KAAK,CAAC;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CACH;IAmBD;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,mBAAmB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5D,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CAeH"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PaymentsAPI = void 0;
4
4
  const accounts_1 = require("viem/accounts");
5
- const x402_fetch_1 = require("x402-fetch");
5
+ const x402_1 = require("./x402");
6
6
  /**
7
7
  * API for making x402 payments to access paid workflows.
8
8
  *
@@ -86,10 +86,11 @@ class PaymentsAPI {
86
86
  }
87
87
  // Create account from private key (for getting address)
88
88
  const account = (0, accounts_1.privateKeyToAccount)(privateKey);
89
- // Create signer for x402 payments on Base network
90
- const signer = await (0, x402_fetch_1.createSigner)("base", privateKey);
89
+ // Create signer for x402 payments (defaults to Base mainnet)
90
+ const network = params.network ?? "base";
91
+ const signer = (0, x402_1.createSigner)(network, privateKey);
91
92
  // Wrap fetch with x402 payment handling
92
- const x402Fetch = (0, x402_fetch_1.wrapFetchWithPayment)(fetch, signer);
93
+ const x402Fetch = (0, x402_1.wrapFetchWithPayment)(fetch, signer);
93
94
  // Make the request - x402Fetch automatically handles 402 responses
94
95
  const response = await x402Fetch(triggerUrl, {
95
96
  method: "POST",
@@ -109,8 +110,8 @@ class PaymentsAPI {
109
110
  txHash: "", // x402 handles this internally, tx hash not exposed
110
111
  price: "", // Price is handled by x402 protocol
111
112
  response: responseData,
112
- network: "base",
113
- chainId: 8453,
113
+ network,
114
+ chainId: signer.chain?.id ?? 8453,
114
115
  };
115
116
  }
116
117
  /**
@@ -183,7 +184,8 @@ class PaymentsAPI {
183
184
  */
184
185
  async getTriggerPreflight(params) {
185
186
  // This endpoint is public and doesn't require authentication
186
- const response = await fetch(`https://api.openserv.ai/webhooks/trigger/${params.token}`);
187
+ const baseUrl = this.client.rawClient.defaults.baseURL || "https://api.openserv.ai";
188
+ const response = await fetch(`${baseUrl}/webhooks/trigger/${params.token}`);
187
189
  if (!response.ok) {
188
190
  const errorData = await response.json().catch(() => ({}));
189
191
  throw new Error(`Failed to get trigger preflight: ${response.status} ${JSON.stringify(errorData)}`);
@@ -67,6 +67,18 @@ export interface ProvisionConfig {
67
67
  * Only provide this if your agent runs with a different publicly accessible URL.
68
68
  */
69
69
  endpointUrl?: string;
70
+ /**
71
+ * Optional model parameters for the agent.
72
+ * Controls which LLM model the runtime uses when executing tasks.
73
+ * If not provided, the platform default (gpt-5-mini) is used.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * model_parameters: { model: "gpt-5", verbosity: "medium", reasoning_effort: "high" }
78
+ * model_parameters: { model: "gpt-4o", temperature: 0.5, parallel_tool_calls: false }
79
+ * ```
80
+ */
81
+ model_parameters?: Record<string, unknown>;
70
82
  };
71
83
  /** Workflow configuration */
72
84
  workflow: {
@@ -1 +1 @@
1
- {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
package/dist/provision.js CHANGED
@@ -38,9 +38,10 @@ exports.provision = provision;
38
38
  exports.isProvisioned = isProvisioned;
39
39
  exports.getProvisionedInfo = getProvisionedInfo;
40
40
  exports.clearProvisionedState = clearProvisionedState;
41
- const ethers_1 = require("ethers");
41
+ const accounts_1 = require("viem/accounts");
42
42
  const fs = __importStar(require("node:fs"));
43
43
  const path = __importStar(require("node:path"));
44
+ const utils_1 = require("./utils");
44
45
  const client_1 = require("./client");
45
46
  const STATE_FILE = ".openserv.json";
46
47
  const defaultLogger = {
@@ -162,13 +163,13 @@ function writeWalletToEnv(privateKey) {
162
163
  async function getOrCreateWallet() {
163
164
  const { privateKey } = getWalletFromEnv();
164
165
  if (privateKey) {
165
- const wallet = new ethers_1.ethers.Wallet(privateKey);
166
- return { privateKey, address: wallet.address };
166
+ const account = (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(privateKey));
167
+ return { privateKey, address: account.address };
167
168
  }
168
169
  // Create new wallet
169
- const wallet = ethers_1.ethers.Wallet.createRandom();
170
- const newPrivateKey = wallet.privateKey;
171
- const newAddress = wallet.address;
170
+ const newPrivateKey = (0, accounts_1.generatePrivateKey)();
171
+ const account = (0, accounts_1.privateKeyToAccount)(newPrivateKey);
172
+ const newAddress = account.address;
172
173
  // Persist to .env (secrets stay in .env)
173
174
  writeWalletToEnv(newPrivateKey);
174
175
  logger.info("Created new wallet:", newAddress);
@@ -178,8 +179,7 @@ async function getOrCreateWallet() {
178
179
  // Platform API Client
179
180
  // ============================================================================
180
181
  async function createAuthenticatedClient(privateKey) {
181
- const wallet = new ethers_1.ethers.Wallet(privateKey);
182
- const walletAddress = wallet.address;
182
+ const walletAddress = (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(privateKey)).address;
183
183
  // Check if we have a saved user API key (for session continuity)
184
184
  const state = readState();
185
185
  const existingApiKey = state.userApiKey;
@@ -291,6 +291,9 @@ async function provisionAgent(client, config) {
291
291
  name: config.name,
292
292
  capabilities_description: config.description,
293
293
  endpoint_url: endpointUrl,
294
+ ...(config.model_parameters && {
295
+ model_parameters: config.model_parameters,
296
+ }),
294
297
  });
295
298
  const agentId = agent.id;
296
299
  // Get agent API key
package/dist/types.d.ts CHANGED
@@ -8,6 +8,7 @@ export interface Agent {
8
8
  is_listed_on_marketplace: boolean;
9
9
  is_trading_agent: boolean;
10
10
  scopes: Record<string, unknown> | string[];
11
+ model_parameters?: Record<string, unknown>;
11
12
  }
12
13
  export interface Category {
13
14
  id: number;
@@ -325,6 +326,8 @@ export interface X402PaymentRequest {
325
326
  privateKey?: string;
326
327
  /** Input data to pass to the workflow */
327
328
  input?: Record<string, unknown>;
329
+ /** Network to use for payment (default: "base"). Use "base-sepolia" for testnet. */
330
+ network?: string;
328
331
  }
329
332
  /**
330
333
  * Result from paying and executing an x402 workflow.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Hex } from "viem";
2
+ /**
3
+ * Normalize a private key string to a 0x-prefixed hex string.
4
+ * Accepts keys with or without the 0x prefix.
5
+ */
6
+ export declare function normalizePrivateKey(key: string): Hex;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAEpD"}
package/dist/utils.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizePrivateKey = normalizePrivateKey;
4
+ /**
5
+ * Normalize a private key string to a 0x-prefixed hex string.
6
+ * Accepts keys with or without the 0x prefix.
7
+ */
8
+ function normalizePrivateKey(key) {
9
+ return (key.startsWith("0x") ? key : `0x${key}`);
10
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"web3-api.d.ts","sourceRoot":"","sources":["../src/web3-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAajB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;;;;;;;;;;;;;;;OAiBG;IACG,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,qBAAqB,CACzB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAO9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,KAAK,CAAC,MAAM,EAAE;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,eAAe,CAAC;CAyF7B"}
1
+ {"version":3,"file":"web3-api.d.ts","sourceRoot":"","sources":["../src/web3-api.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AA4BjB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;;;;;;;;;;;;;;;OAiBG;IACG,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,qBAAqB,CACzB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAO9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,KAAK,CAAC,MAAM,EAAE;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,eAAe,CAAC;CAuG7B"}
package/dist/web3-api.js CHANGED
@@ -1,11 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Web3API = void 0;
4
- const ethers_1 = require("ethers");
5
- // ERC20 Transfer ABI (minimal)
4
+ const viem_1 = require("viem");
5
+ const accounts_1 = require("viem/accounts");
6
+ const utils_1 = require("./utils");
7
+ // ERC20 ABI (minimal, for balance check and transfer)
6
8
  const ERC20_ABI = [
7
- "function transfer(address to, uint256 amount) returns (bool)",
8
- "function balanceOf(address owner) view returns (uint256)",
9
+ {
10
+ name: "transfer",
11
+ type: "function",
12
+ stateMutability: "nonpayable",
13
+ inputs: [
14
+ { name: "to", type: "address" },
15
+ { name: "amount", type: "uint256" },
16
+ ],
17
+ outputs: [{ name: "", type: "bool" }],
18
+ },
19
+ {
20
+ name: "balanceOf",
21
+ type: "function",
22
+ stateMutability: "view",
23
+ inputs: [{ name: "owner", type: "address" }],
24
+ outputs: [{ name: "", type: "uint256" }],
25
+ },
9
26
  ];
10
27
  // Known RPC URLs for supported chains
11
28
  const CHAIN_RPC_URLS = {
@@ -143,33 +160,59 @@ class Web3API {
143
160
  const rpcUrl = params.rpcUrl ||
144
161
  CHAIN_RPC_URLS[config.chainId] ||
145
162
  `https://rpc.ankr.com/${config.network}`;
146
- // Step 2: Create wallet and connect to the chain
147
- const provider = new ethers_1.ethers.JsonRpcProvider(rpcUrl);
148
- const wallet = new ethers_1.ethers.Wallet(privateKey, provider);
163
+ // Step 2: Create viem clients
164
+ const account = (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(privateKey));
165
+ const chain = (0, viem_1.defineChain)({
166
+ id: config.chainId,
167
+ name: config.network,
168
+ nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 },
169
+ rpcUrls: { default: { http: [rpcUrl] } },
170
+ });
171
+ const publicClient = (0, viem_1.createPublicClient)({
172
+ chain,
173
+ transport: (0, viem_1.http)(rpcUrl),
174
+ });
175
+ const walletClient = (0, viem_1.createWalletClient)({
176
+ account,
177
+ chain,
178
+ transport: (0, viem_1.http)(rpcUrl),
179
+ });
149
180
  // Step 3: Check USDC balance
150
- const usdcContract = new ethers_1.ethers.Contract(config.usdcContractAddress, ERC20_ABI, wallet);
151
181
  // USDC has 6 decimals
152
- const amountInSmallestUnit = ethers_1.ethers.parseUnits(params.amountUsd.toString(), 6);
153
- const balance = await usdcContract.getFunction("balanceOf")(wallet.address);
182
+ const amountInSmallestUnit = (0, viem_1.parseUnits)(params.amountUsd.toString(), 6);
183
+ const balance = await publicClient.readContract({
184
+ address: config.usdcContractAddress,
185
+ abi: ERC20_ABI,
186
+ functionName: "balanceOf",
187
+ args: [account.address],
188
+ });
154
189
  if (balance < amountInSmallestUnit) {
155
- const balanceFormatted = ethers_1.ethers.formatUnits(balance, 6);
190
+ const balanceFormatted = (0, viem_1.formatUnits)(balance, 6);
156
191
  throw new Error(`Insufficient USDC balance. Have: ${balanceFormatted} USDC, need: ${params.amountUsd} USDC`);
157
192
  }
158
193
  // Step 4: Send USDC transfer
159
- const tx = await usdcContract.getFunction("transfer")(config.receiverAddress, amountInSmallestUnit);
194
+ const txHash = await walletClient.writeContract({
195
+ address: config.usdcContractAddress,
196
+ abi: ERC20_ABI,
197
+ functionName: "transfer",
198
+ args: [config.receiverAddress, amountInSmallestUnit],
199
+ });
160
200
  // Step 5: Wait for confirmation
161
- const receipt = await tx.wait();
162
- if (!receipt || receipt.status !== 1) {
201
+ const receipt = await publicClient.waitForTransactionReceipt({
202
+ hash: txHash,
203
+ });
204
+ if (receipt.status !== "success") {
163
205
  throw new Error("Transaction failed or was reverted");
164
206
  }
165
- const txHash = receipt.hash;
166
207
  // Step 6: Sign verification message
167
208
  const verificationMessage = `Verify USDC top-up: ${txHash}`;
168
- const signature = await wallet.signMessage(verificationMessage);
209
+ const signature = await account.signMessage({
210
+ message: verificationMessage,
211
+ });
169
212
  // Step 7: Verify transaction and add credits
170
213
  const verifyResult = await this.verifyUsdcTransaction({
171
214
  txHash,
172
- payerAddress: wallet.address,
215
+ payerAddress: account.address,
173
216
  signature,
174
217
  });
175
218
  return {
package/dist/x402.d.ts ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Vendored x402 EVM client-side payment implementation.
3
+ *
4
+ * This replaces the `x402-fetch` and `x402` npm packages to avoid pulling in
5
+ * wagmi, WalletConnect, Reown, MetaMask SDK, Solana SDK, and hundreds of MB
6
+ * of transitive dependencies that are unnecessary for server-side EVM usage.
7
+ *
8
+ * Only EVM payment support is included (Base network), which is all this SDK needs.
9
+ * The x402 protocol specification: https://www.x402.org/
10
+ *
11
+ * @module
12
+ */
13
+ import { type WalletClient } from "viem";
14
+ /**
15
+ * Create a viem WalletClient configured for x402 payment signing.
16
+ *
17
+ * @param network - Network name (e.g., "base", "base-sepolia")
18
+ * @param privateKey - Hex-encoded private key
19
+ * @returns Configured WalletClient
20
+ */
21
+ export declare function createSigner(network: string, privateKey: string): WalletClient;
22
+ /**
23
+ * Wrap a fetch function with x402 payment handling.
24
+ *
25
+ * When the wrapped fetch receives a 402 response, it automatically:
26
+ * 1. Parses the payment requirements from the response
27
+ * 2. Signs an EIP-3009 TransferWithAuthorization
28
+ * 3. Retries the request with the signed payment in the X-PAYMENT header
29
+ *
30
+ * The retry calls the raw (unwrapped) fetch directly, so a second 402
31
+ * is returned to the caller as-is without infinite retry loops.
32
+ *
33
+ * @param fetchFn - The fetch function to wrap
34
+ * @param walletClient - Wallet client for signing payments
35
+ * @param maxValue - Maximum payment amount in atomic units (default: 0.1 USDC = 100000)
36
+ * @returns Wrapped fetch function with x402 payment support
37
+ */
38
+ export declare function wrapFetchWithPayment(fetchFn: typeof fetch, walletClient: WalletClient, maxValue?: bigint): typeof fetch;
39
+ //# sourceMappingURL=x402.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../src/x402.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAqNd;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,YAAY,CAad;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,KAAK,EACrB,YAAY,EAAE,YAAY,EAC1B,QAAQ,GAAE,MAA8B,GACvC,OAAO,KAAK,CA6Cd"}
package/dist/x402.js ADDED
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Vendored x402 EVM client-side payment implementation.
4
+ *
5
+ * This replaces the `x402-fetch` and `x402` npm packages to avoid pulling in
6
+ * wagmi, WalletConnect, Reown, MetaMask SDK, Solana SDK, and hundreds of MB
7
+ * of transitive dependencies that are unnecessary for server-side EVM usage.
8
+ *
9
+ * Only EVM payment support is included (Base network), which is all this SDK needs.
10
+ * The x402 protocol specification: https://www.x402.org/
11
+ *
12
+ * @module
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createSigner = createSigner;
16
+ exports.wrapFetchWithPayment = wrapFetchWithPayment;
17
+ const viem_1 = require("viem");
18
+ const accounts_1 = require("viem/accounts");
19
+ const chains_1 = require("viem/chains");
20
+ const node_crypto_1 = require("node:crypto");
21
+ const utils_1 = require("./utils");
22
+ // ============================================================================
23
+ // Constants
24
+ // ============================================================================
25
+ /** Map network names to viem Chain objects. */
26
+ const NETWORK_CHAINS = {
27
+ base: chains_1.base,
28
+ "base-sepolia": chains_1.baseSepolia,
29
+ };
30
+ /**
31
+ * EIP-712 typed data for USDC TransferWithAuthorization (EIP-3009).
32
+ * Used to sign USDC transfer authorizations without an on-chain transaction.
33
+ */
34
+ const TRANSFER_WITH_AUTHORIZATION_TYPES = {
35
+ TransferWithAuthorization: [
36
+ { name: "from", type: "address" },
37
+ { name: "to", type: "address" },
38
+ { name: "value", type: "uint256" },
39
+ { name: "validAfter", type: "uint256" },
40
+ { name: "validBefore", type: "uint256" },
41
+ { name: "nonce", type: "bytes32" },
42
+ ],
43
+ };
44
+ // ============================================================================
45
+ // Helpers
46
+ // ============================================================================
47
+ function base64Encode(str) {
48
+ return Buffer.from(str).toString("base64");
49
+ }
50
+ function createNonce() {
51
+ return (0, viem_1.toHex)((0, node_crypto_1.randomBytes)(32));
52
+ }
53
+ function encodePayment(payment) {
54
+ const safe = {
55
+ ...payment,
56
+ payload: {
57
+ ...payment.payload,
58
+ authorization: Object.fromEntries(Object.entries(payment.payload.authorization).map(([key, value]) => [
59
+ key,
60
+ typeof value === "bigint" ? value.toString() : value,
61
+ ])),
62
+ },
63
+ };
64
+ return base64Encode(JSON.stringify(safe));
65
+ }
66
+ // ============================================================================
67
+ // Payment Logic
68
+ // ============================================================================
69
+ /**
70
+ * Select the best payment requirement from the server's options.
71
+ * Prefers requirements matching the wallet's network and "exact" scheme.
72
+ */
73
+ function selectPaymentRequirements(requirements, network) {
74
+ if (network) {
75
+ const matching = requirements.filter((r) => r.scheme === "exact" && r.network === network);
76
+ if (matching.length > 0)
77
+ return matching[0];
78
+ }
79
+ // Fallback: first "exact" scheme requirement, then any
80
+ const exact = requirements.filter((r) => r.scheme === "exact");
81
+ return exact[0] ?? requirements[0];
82
+ }
83
+ /**
84
+ * Sign an EIP-3009 TransferWithAuthorization using the wallet client.
85
+ */
86
+ async function signAuthorization(walletClient, authorization, paymentRequirements) {
87
+ const chainId = walletClient.chain?.id;
88
+ if (!chainId) {
89
+ throw new Error("Wallet client must have a chain configured");
90
+ }
91
+ const signature = await walletClient.signTypedData({
92
+ account: walletClient.account,
93
+ types: TRANSFER_WITH_AUTHORIZATION_TYPES,
94
+ domain: {
95
+ name: paymentRequirements.extra?.name,
96
+ version: paymentRequirements.extra?.version,
97
+ chainId,
98
+ verifyingContract: (0, viem_1.getAddress)(paymentRequirements.asset),
99
+ },
100
+ primaryType: "TransferWithAuthorization",
101
+ message: {
102
+ from: (0, viem_1.getAddress)(authorization.from),
103
+ to: (0, viem_1.getAddress)(authorization.to),
104
+ value: BigInt(authorization.value),
105
+ validAfter: BigInt(authorization.validAfter),
106
+ validBefore: BigInt(authorization.validBefore),
107
+ nonce: authorization.nonce,
108
+ },
109
+ });
110
+ return signature;
111
+ }
112
+ /**
113
+ * Create a signed x402 payment header for an EVM payment.
114
+ */
115
+ async function createPaymentHeader(walletClient, x402Version, paymentRequirements) {
116
+ const from = walletClient.account.address;
117
+ const nonce = createNonce();
118
+ const validAfter = BigInt(Math.floor(Date.now() / 1000) - 600).toString();
119
+ const validBefore = BigInt(Math.floor(Date.now() / 1000 + paymentRequirements.maxTimeoutSeconds)).toString();
120
+ const unsignedPayment = {
121
+ x402Version,
122
+ scheme: paymentRequirements.scheme,
123
+ network: paymentRequirements.network,
124
+ payload: {
125
+ signature: undefined,
126
+ authorization: {
127
+ from,
128
+ to: paymentRequirements.payTo,
129
+ value: paymentRequirements.maxAmountRequired,
130
+ validAfter,
131
+ validBefore,
132
+ nonce,
133
+ },
134
+ },
135
+ };
136
+ const signature = await signAuthorization(walletClient, unsignedPayment.payload.authorization, paymentRequirements);
137
+ return encodePayment({
138
+ ...unsignedPayment,
139
+ payload: {
140
+ ...unsignedPayment.payload,
141
+ signature,
142
+ },
143
+ });
144
+ }
145
+ // ============================================================================
146
+ // Public API
147
+ // ============================================================================
148
+ /**
149
+ * Create a viem WalletClient configured for x402 payment signing.
150
+ *
151
+ * @param network - Network name (e.g., "base", "base-sepolia")
152
+ * @param privateKey - Hex-encoded private key
153
+ * @returns Configured WalletClient
154
+ */
155
+ function createSigner(network, privateKey) {
156
+ const chain = NETWORK_CHAINS[network];
157
+ if (!chain) {
158
+ throw new Error(`Unsupported network: ${network}. Supported: ${Object.keys(NETWORK_CHAINS).join(", ")}`);
159
+ }
160
+ return (0, viem_1.createWalletClient)({
161
+ account: (0, accounts_1.privateKeyToAccount)((0, utils_1.normalizePrivateKey)(privateKey)),
162
+ chain,
163
+ transport: (0, viem_1.http)(),
164
+ });
165
+ }
166
+ /**
167
+ * Wrap a fetch function with x402 payment handling.
168
+ *
169
+ * When the wrapped fetch receives a 402 response, it automatically:
170
+ * 1. Parses the payment requirements from the response
171
+ * 2. Signs an EIP-3009 TransferWithAuthorization
172
+ * 3. Retries the request with the signed payment in the X-PAYMENT header
173
+ *
174
+ * The retry calls the raw (unwrapped) fetch directly, so a second 402
175
+ * is returned to the caller as-is without infinite retry loops.
176
+ *
177
+ * @param fetchFn - The fetch function to wrap
178
+ * @param walletClient - Wallet client for signing payments
179
+ * @param maxValue - Maximum payment amount in atomic units (default: 0.1 USDC = 100000)
180
+ * @returns Wrapped fetch function with x402 payment support
181
+ */
182
+ function wrapFetchWithPayment(fetchFn, walletClient, maxValue = BigInt(0.1 * 10 ** 6)) {
183
+ return async (input, init) => {
184
+ const response = await fetchFn(input, init);
185
+ if (response.status !== 402) {
186
+ return response;
187
+ }
188
+ // Parse payment requirements from 402 response
189
+ const body = (await response.json());
190
+ // Detect wallet's network name from chain ID
191
+ const chainId = walletClient.chain?.id;
192
+ const network = chainId
193
+ ? Object.entries(NETWORK_CHAINS).find(([, c]) => c.id === chainId)?.[0]
194
+ : undefined;
195
+ const selected = selectPaymentRequirements(body.accepts, network);
196
+ if (BigInt(selected.maxAmountRequired) > maxValue) {
197
+ throw new Error("Payment amount exceeds maximum allowed");
198
+ }
199
+ const paymentHeader = await createPaymentHeader(walletClient, body.x402Version, selected);
200
+ // Retry with payment header using raw fetchFn (not the wrapper) to avoid loops
201
+ return fetchFn(input, {
202
+ ...init,
203
+ headers: {
204
+ ...(init?.headers || {}),
205
+ "X-PAYMENT": paymentHeader,
206
+ "Access-Control-Expose-Headers": "X-PAYMENT-RESPONSE",
207
+ },
208
+ });
209
+ };
210
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openserv-labs/client",
3
- "version": "2.2.2",
3
+ "version": "2.4.1",
4
4
  "description": "OpenServ Platform Client - Manage agents, workflows, tasks, and triggers via the OpenServ API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,10 +38,8 @@
38
38
  "license": "MIT",
39
39
  "dependencies": {
40
40
  "axios": "^1.6.8",
41
- "ethers": "^6.16.0",
42
41
  "pinata": "^2.5.1",
43
- "viem": "^2.45.1",
44
- "x402-fetch": "^1.1.0"
42
+ "viem": "^2.45.1"
45
43
  },
46
44
  "devDependencies": {
47
45
  "@eslint/js": "^9.39.2",