@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.
@@ -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;
@@ -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
@@ -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
- await client.triggers.activate({ workflowId, id: triggerId });
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
- await client.workflows.setRunning({ id: workflowId });
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openserv-labs/client",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
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",