@openserv-labs/client 2.2.0 → 2.2.2
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/models-api.d.ts +47 -0
- package/dist/models-api.d.ts.map +1 -0
- package/dist/models-api.js +28 -0
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +46 -2
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { PlatformClient } from "./client";
|
|
2
|
+
/**
|
|
3
|
+
* Metadata for a single model parameter.
|
|
4
|
+
*/
|
|
5
|
+
export interface ModelParameterMeta {
|
|
6
|
+
type: "number" | "boolean" | "enum";
|
|
7
|
+
default: number | boolean | string;
|
|
8
|
+
min?: number;
|
|
9
|
+
max?: number;
|
|
10
|
+
values?: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Information about an available model including its provider and parameter schema.
|
|
14
|
+
*/
|
|
15
|
+
export interface ModelInfo {
|
|
16
|
+
model: string;
|
|
17
|
+
provider: string;
|
|
18
|
+
parameters: Record<string, ModelParameterMeta>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Response from the GET /agents/models endpoint.
|
|
22
|
+
*/
|
|
23
|
+
export interface ModelsResponse {
|
|
24
|
+
models: ModelInfo[];
|
|
25
|
+
default: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* API for discovering available LLM models on the OpenServ platform.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const client = new PlatformClient({ apiKey: 'your-key' });
|
|
33
|
+
* const { models, default: defaultModel } = await client.models.list();
|
|
34
|
+
* console.log('Available models:', models.map(m => m.model));
|
|
35
|
+
* console.log('Default model:', defaultModel);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class ModelsAPI {
|
|
39
|
+
private client;
|
|
40
|
+
constructor(client: PlatformClient);
|
|
41
|
+
/**
|
|
42
|
+
* List all available models with their parameter schemas.
|
|
43
|
+
* @returns Available models, their providers, parameter metadata, and the platform default model
|
|
44
|
+
*/
|
|
45
|
+
list(): Promise<ModelsResponse>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=models-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models-api.d.ts","sourceRoot":"","sources":["../src/models-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;CAGtC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelsAPI = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* API for discovering available LLM models on the OpenServ platform.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const client = new PlatformClient({ apiKey: 'your-key' });
|
|
10
|
+
* const { models, default: defaultModel } = await client.models.list();
|
|
11
|
+
* console.log('Available models:', models.map(m => m.model));
|
|
12
|
+
* console.log('Default model:', defaultModel);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
class ModelsAPI {
|
|
16
|
+
client;
|
|
17
|
+
constructor(client) {
|
|
18
|
+
this.client = client;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List all available models with their parameter schemas.
|
|
22
|
+
* @returns Available models, their providers, parameter metadata, and the platform default model
|
|
23
|
+
*/
|
|
24
|
+
async list() {
|
|
25
|
+
return this.client.get("/agents/models");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.ModelsAPI = ModelsAPI;
|
package/dist/provision.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAIA,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,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,KAAK,EAAE;QACL;;;;WAIG;QACH,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,gCAAgC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,8CAA8C;QAC9C,WAAW,EAAE,MAAM,CAAC;QACpB;;;;;WAKG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,6BAA6B;IAC7B,QAAQ,EAAE;QACR,sEAAsE;QACtE,IAAI,EAAE,MAAM,CAAC;QACb,8DAA8D;QAC9D,IAAI,EAAE,MAAM,CAAC;QACb,mDAAmD;QACnD,OAAO,EAAE,aAAa,CAAC;QACvB,gGAAgG;QAChG,IAAI,CAAC,EAAE;YACL,uBAAuB;YACvB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,yBAAyB;YACzB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC;QACF;;;;WAIG;QACH,KAAK,CAAC,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,sEAAsE;YACtE,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;QACH,+FAA+F;QAC/F,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QACzB,gGAAgG;QAChG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA4BD;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,iCAAiC;IACjC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,2BAA2B;IAC3B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,yBAAyB;IACzB,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAEpD;
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
package/dist/provision.js
CHANGED
|
@@ -222,6 +222,16 @@ function isNotFoundError(error) {
|
|
|
222
222
|
const axiosError = error;
|
|
223
223
|
return axiosError.response?.status === 404;
|
|
224
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* Check if an error is an "already in desired state" error (400).
|
|
227
|
+
* The platform returns this when activating an already-active trigger
|
|
228
|
+
* or setting a workflow to running when it's already running.
|
|
229
|
+
*/
|
|
230
|
+
function isAlreadyInStateError(error) {
|
|
231
|
+
const axiosError = error;
|
|
232
|
+
return (axiosError.response?.status === 400 &&
|
|
233
|
+
!!axiosError.response?.data?.message?.toLowerCase().includes("already"));
|
|
234
|
+
}
|
|
225
235
|
/**
|
|
226
236
|
* Register or update an agent on the platform.
|
|
227
237
|
* This function is idempotent - calling it multiple times with the same config
|
|
@@ -351,6 +361,28 @@ async function provisionWorkflow(client, agentId, agentName, config) {
|
|
|
351
361
|
...(config.edges && { edges: config.edges }),
|
|
352
362
|
});
|
|
353
363
|
logger.info(`Updated workflow ${workflowName} (${workflowId})`);
|
|
364
|
+
// Always re-activate all triggers and set workflow to running.
|
|
365
|
+
// A health check or other process may have disabled them.
|
|
366
|
+
// These calls may 400 if already in the desired state — that's fine.
|
|
367
|
+
const allTriggers = await client.triggers.list({ workflowId });
|
|
368
|
+
for (const t of allTriggers) {
|
|
369
|
+
if (t.id) {
|
|
370
|
+
try {
|
|
371
|
+
await client.triggers.activate({ workflowId, id: t.id });
|
|
372
|
+
}
|
|
373
|
+
catch (e) {
|
|
374
|
+
if (!isAlreadyInStateError(e))
|
|
375
|
+
throw e;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
try {
|
|
380
|
+
await client.workflows.setRunning({ id: workflowId });
|
|
381
|
+
}
|
|
382
|
+
catch (e) {
|
|
383
|
+
if (!isAlreadyInStateError(e))
|
|
384
|
+
throw e;
|
|
385
|
+
}
|
|
354
386
|
}
|
|
355
387
|
catch (error) {
|
|
356
388
|
// Only create a new workflow if the existing one was deleted from the platform (404)
|
|
@@ -390,10 +422,22 @@ async function provisionWorkflow(client, agentId, agentName, config) {
|
|
|
390
422
|
logger.info(`Created trigger ${triggerId} (token: ${triggerToken || "N/A"})`);
|
|
391
423
|
// Activate trigger
|
|
392
424
|
if (triggerId) {
|
|
393
|
-
|
|
425
|
+
try {
|
|
426
|
+
await client.triggers.activate({ workflowId, id: triggerId });
|
|
427
|
+
}
|
|
428
|
+
catch (e) {
|
|
429
|
+
if (!isAlreadyInStateError(e))
|
|
430
|
+
throw e;
|
|
431
|
+
}
|
|
394
432
|
}
|
|
395
433
|
// Set workspace to running
|
|
396
|
-
|
|
434
|
+
try {
|
|
435
|
+
await client.workflows.setRunning({ id: workflowId });
|
|
436
|
+
}
|
|
437
|
+
catch (e) {
|
|
438
|
+
if (!isAlreadyInStateError(e))
|
|
439
|
+
throw e;
|
|
440
|
+
}
|
|
397
441
|
// Re-read state to avoid overwriting concurrent changes
|
|
398
442
|
const freshState = readState();
|
|
399
443
|
if (!freshState.workflows[agentName]) {
|
package/package.json
CHANGED