@openserv-labs/client 2.4.7 → 2.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/provision.d.ts +12 -1
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +55 -5
- package/package.json +1 -1
package/dist/provision.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export interface AgentInstance {
|
|
|
47
47
|
* };
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
|
-
|
|
50
|
+
interface ProvisionConfigBase {
|
|
51
51
|
/** Agent configuration */
|
|
52
52
|
agent: {
|
|
53
53
|
/**
|
|
@@ -114,6 +114,16 @@ export interface ProvisionConfig {
|
|
|
114
114
|
agentIds?: number[];
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Pre-created user API key to skip SIWE authentication.
|
|
119
|
+
* When the workflow trigger is x402, walletAddress is also required
|
|
120
|
+
* so the platform knows which wallet to use for payments.
|
|
121
|
+
*/
|
|
122
|
+
interface ProvisionConfigWithCredentials extends ProvisionConfigBase {
|
|
123
|
+
userApiKey: string;
|
|
124
|
+
walletAddress?: string;
|
|
125
|
+
}
|
|
126
|
+
export type ProvisionConfig = ProvisionConfigWithCredentials | ProvisionConfigBase;
|
|
117
127
|
/**
|
|
118
128
|
* Result from provisioning an agent and workflow.
|
|
119
129
|
*/
|
|
@@ -268,4 +278,5 @@ export declare function getProvisionedInfo(agentName: string, workflowName?: str
|
|
|
268
278
|
* ```
|
|
269
279
|
*/
|
|
270
280
|
export declare function clearProvisionedState(): void;
|
|
281
|
+
export {};
|
|
271
282
|
//# sourceMappingURL=provision.d.ts.map
|
package/dist/provision.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
package/dist/provision.js
CHANGED
|
@@ -155,6 +155,32 @@ function writeWalletToEnv(privateKey) {
|
|
|
155
155
|
writeEnvVar("WALLET_PRIVATE_KEY", privateKey);
|
|
156
156
|
}
|
|
157
157
|
// ============================================================================
|
|
158
|
+
// State Initialization
|
|
159
|
+
// ============================================================================
|
|
160
|
+
/**
|
|
161
|
+
* Initialize the state file if it doesn't exist yet.
|
|
162
|
+
*
|
|
163
|
+
* Reads `OPENSERV_USER_API_KEY` from the environment and seeds
|
|
164
|
+
* `.openserv.json` with the key plus empty `agents` and `workflows` maps.
|
|
165
|
+
* If the state file already exists, this is a no-op.
|
|
166
|
+
*/
|
|
167
|
+
function initState() {
|
|
168
|
+
const statePath = path.resolve(process.cwd(), STATE_FILE);
|
|
169
|
+
if (fs.existsSync(statePath)) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const userApiKey = process.env.OPENSERV_USER_API_KEY;
|
|
173
|
+
const state = {
|
|
174
|
+
agents: {},
|
|
175
|
+
workflows: {},
|
|
176
|
+
};
|
|
177
|
+
if (userApiKey) {
|
|
178
|
+
state.userApiKey = userApiKey;
|
|
179
|
+
}
|
|
180
|
+
writeState(state);
|
|
181
|
+
logger.info("Initialized state file");
|
|
182
|
+
}
|
|
183
|
+
// ============================================================================
|
|
158
184
|
// Wallet Management
|
|
159
185
|
// ============================================================================
|
|
160
186
|
/**
|
|
@@ -483,6 +509,33 @@ async function provisionWorkflow(client, agentId, agentName, config) {
|
|
|
483
509
|
// ============================================================================
|
|
484
510
|
// Main Provision Function
|
|
485
511
|
// ============================================================================
|
|
512
|
+
function validateProvisionCredentials(config) {
|
|
513
|
+
const hasApiKey = "userApiKey" in config && !!config.userApiKey;
|
|
514
|
+
const hasWallet = "walletAddress" in config && !!config.walletAddress;
|
|
515
|
+
if (hasWallet && !hasApiKey) {
|
|
516
|
+
throw new Error("walletAddress requires userApiKey to be provided");
|
|
517
|
+
}
|
|
518
|
+
if (hasApiKey && !hasWallet && config.workflow.trigger.type === "x402") {
|
|
519
|
+
throw new Error("walletAddress is required when using an x402 trigger with userApiKey");
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
async function initializePlatformClient(config) {
|
|
523
|
+
const hasApiKey = "userApiKey" in config && !!config.userApiKey;
|
|
524
|
+
if (hasApiKey) {
|
|
525
|
+
const { userApiKey, walletAddress } = config;
|
|
526
|
+
const client = new client_1.PlatformClient({ apiKey: userApiKey });
|
|
527
|
+
if (walletAddress) {
|
|
528
|
+
client.walletAddress = walletAddress;
|
|
529
|
+
}
|
|
530
|
+
const state = readState();
|
|
531
|
+
writeState({ ...state, userApiKey });
|
|
532
|
+
return client;
|
|
533
|
+
}
|
|
534
|
+
initState();
|
|
535
|
+
const { privateKey } = await getOrCreateWallet();
|
|
536
|
+
const { client } = await createAuthenticatedClient(privateKey);
|
|
537
|
+
return client;
|
|
538
|
+
}
|
|
486
539
|
/**
|
|
487
540
|
* Provision an agent and workflow on the OpenServ platform.
|
|
488
541
|
*
|
|
@@ -524,11 +577,8 @@ async function provisionWorkflow(client, agentId, agentName, config) {
|
|
|
524
577
|
* ```
|
|
525
578
|
*/
|
|
526
579
|
async function provision(config) {
|
|
527
|
-
|
|
528
|
-
const
|
|
529
|
-
// Create authenticated client (reuses saved API key for session continuity)
|
|
530
|
-
// walletAddress is set on client.walletAddress for x402 resolution
|
|
531
|
-
const { client } = await createAuthenticatedClient(privateKey);
|
|
580
|
+
validateProvisionCredentials(config);
|
|
581
|
+
const client = await initializePlatformClient(config);
|
|
532
582
|
// Provision agent (returns agentId, apiKey, and authToken)
|
|
533
583
|
const { agentId, apiKey, authToken } = await provisionAgent(client, config.agent);
|
|
534
584
|
// Bind credentials to the agent
|
package/package.json
CHANGED