From f4655b7123fbca853752ffa9dabbb9d37be75b3b Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Wed, 24 Dec 2025 13:33:53 +0000 Subject: [PATCH 01/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 1bd803f08..21d543247 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 1bd803f08800c518df1a1a6201407fa6bb6a548e +Subproject commit 21d5432471861501411447afb5cf6dbcd5a124c6 From 56154f15583fcf27a0d4a4ae4b2ca95a460dc6e3 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Mon, 29 Dec 2025 09:03:09 +0000 Subject: [PATCH 02/16] add test api --- packages/client/src/EnvironmentsApi.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/client/src/EnvironmentsApi.ts b/packages/client/src/EnvironmentsApi.ts index 6be5e5c16..47247548c 100644 --- a/packages/client/src/EnvironmentsApi.ts +++ b/packages/client/src/EnvironmentsApi.ts @@ -1,6 +1,6 @@ -import { ExecutionEnvironment, ExecutionEnvironmentCreatePayload, ExecutionEnvironmentRef, ExecutionEnvironmentUpdatePayload, LoadBalancingEnvConfig, MediatorEnvConfig } from "@vertesia/common"; import type { AIModel, EmbeddingsOptions, EmbeddingsResult, ModelSearchPayload } from "@llumiverse/common"; import { ApiTopic, ClientBase } from "@vertesia/api-fetch-client"; +import { ExecutionEnvironment, ExecutionEnvironmentCreatePayload, ExecutionEnvironmentRef, ExecutionEnvironmentUpdatePayload, LoadBalancingEnvConfig, MediatorEnvConfig } from "@vertesia/common"; export default class EnvironmentsApi extends ApiTopic { constructor(parent: ClientBase) { @@ -67,4 +67,19 @@ export default class EnvironmentsApi extends ApiTopic { }); } + /** + * Test batch embeddings with a given environment + * @param id The environment ID to test with + * @returns Batch job details + */ + testBatchEmbeddings(id: string): Promise<{ + success: boolean; + job_id: string; + job_status: string; + job_type: string; + model: string; + }> { + return this.post('/' + id + '/test-batch-embeddings'); + } + } From a6f2ec2eaec7759b430863105cd393a600b59279 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Mon, 5 Jan 2026 14:17:06 +0000 Subject: [PATCH 03/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index e17c777c8..6f1166728 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit e17c777c8d93f9b2df67519667c54e49737ac87a +Subproject commit 6f116672886a8ea24f89bfeab7c4ef85d6634557 From c70b8aaba15ddadfbfc1491daca7697162b200b4 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Tue, 6 Jan 2026 12:13:45 +0000 Subject: [PATCH 04/16] update client --- packages/client/src/BatchApi.ts | 90 ++++++++++++++++++++++++++ packages/client/src/EnvironmentsApi.ts | 15 ----- packages/client/src/client.ts | 2 + 3 files changed, 92 insertions(+), 15 deletions(-) create mode 100644 packages/client/src/BatchApi.ts diff --git a/packages/client/src/BatchApi.ts b/packages/client/src/BatchApi.ts new file mode 100644 index 000000000..ada2cb3e2 --- /dev/null +++ b/packages/client/src/BatchApi.ts @@ -0,0 +1,90 @@ +import { ApiTopic, ClientBase } from "@vertesia/api-fetch-client"; +import type { BatchJob, CreateBatchJobOptions, ListBatchJobsOptions, ListBatchJobsResult } from "@llumiverse/common"; + +export default class BatchApi extends ApiTopic { + constructor(parent: ClientBase) { + super(parent, "/api/v1/batch"); + } + + /** + * List batch jobs for a given environment + * @param envId The environment ID + * @param options Optional list options (pageSize, pageToken, filter) + */ + list(envId: string, options?: ListBatchJobsOptions): Promise> { + return super.get('/', { + query: { + envId, + ...options + } + }); + } + + /** + * Create a new batch job + * @param envId The environment ID + * @param options Batch job creation options + */ + create(envId: string, options: CreateBatchJobOptions): Promise> { + return this.post('/', { + payload: { + envId, + ...options + } + }); + } + + /** + * Get details of a specific batch job + * @param batchId The batch job ID + * @param envId The environment ID + */ + retrieve(batchId: string, envId: string): Promise> { + return super.get('/' + batchId, { + query: { envId } + }); + } + + /** + * Cancel a running batch job + * @param batchId The batch job ID + * @param envId The environment ID + */ + cancel(batchId: string, envId: string): Promise> { + return this.post('/' + batchId + '/cancel', { + query: { envId } + }); + } + + /** + * Delete a batch job + * @param batchId The batch job ID + * @param envId The environment ID + */ + remove(batchId: string, envId: string): Promise { + return super.delete('/' + batchId, { + query: { envId } + }); + } + + /** + * Test batch embeddings with a given environment + * @param envId The environment ID to test with + * @param model Optional model to use (defaults to gemini-embedding-001) + * @returns Batch job details + */ + testBatchEmbeddings(envId: string, model?: string): Promise<{ + success: boolean; + job_id: string; + job_status: string; + job_type: string; + model: string; + }> { + return this.post('/test-batch-embeddings', { + payload: { + envId, + model + } + }); + } +} diff --git a/packages/client/src/EnvironmentsApi.ts b/packages/client/src/EnvironmentsApi.ts index 47247548c..abd38af06 100644 --- a/packages/client/src/EnvironmentsApi.ts +++ b/packages/client/src/EnvironmentsApi.ts @@ -67,19 +67,4 @@ export default class EnvironmentsApi extends ApiTopic { }); } - /** - * Test batch embeddings with a given environment - * @param id The environment ID to test with - * @returns Batch job details - */ - testBatchEmbeddings(id: string): Promise<{ - success: boolean; - job_id: string; - job_status: string; - job_type: string; - model: string; - }> { - return this.post('/' + id + '/test-batch-embeddings'); - } - } diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 1ecd401a7..e9289ab39 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -5,6 +5,7 @@ import AccountsApi from "./AccountsApi.js"; import AnalyticsApi from "./AnalyticsApi.js"; import { ApiKeysApi } from "./ApiKeysApi.js"; import AppsApi from "./AppsApi.js"; +import BatchApi from "./BatchApi.js"; import CommandsApi from "./CommandsApi.js"; import EnvironmentsApi from "./EnvironmentsApi.js"; import { IamApi } from "./IamApi.js"; @@ -312,6 +313,7 @@ export class VertesiaClient extends AbstractFetchClient { projects = new ProjectsApi(this); environments = new EnvironmentsApi(this); + batch = new BatchApi(this); interactions = new InteractionsApi(this); skills = new SkillsApi(this); prompts = new PromptsApi(this); From af880765a028e5b428d2c31837765a582cc9ea06 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Tue, 6 Jan 2026 12:13:51 +0000 Subject: [PATCH 05/16] formatting --- packages/client/src/BatchApi.ts | 2 +- packages/client/src/client.ts | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/client/src/BatchApi.ts b/packages/client/src/BatchApi.ts index ada2cb3e2..79a156249 100644 --- a/packages/client/src/BatchApi.ts +++ b/packages/client/src/BatchApi.ts @@ -1,5 +1,5 @@ -import { ApiTopic, ClientBase } from "@vertesia/api-fetch-client"; import type { BatchJob, CreateBatchJobOptions, ListBatchJobsOptions, ListBatchJobsResult } from "@llumiverse/common"; +import { ApiTopic, ClientBase } from "@vertesia/api-fetch-client"; export default class BatchApi extends ApiTopic { constructor(parent: ClientBase) { diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index e9289ab39..4cba81c88 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -11,14 +11,14 @@ import EnvironmentsApi from "./EnvironmentsApi.js"; import { IamApi } from "./IamApi.js"; import InteractionsApi from "./InteractionsApi.js"; import ProjectsApi from "./ProjectsApi.js"; -import SkillsApi from "./SkillsApi.js"; import PromptsApi from "./PromptsApi.js"; import { RefsApi } from "./RefsApi.js"; import { RunsApi } from "./RunsApi.js"; +import SkillsApi from "./SkillsApi.js"; import { ZenoClient } from "./store/client.js"; +import { VERSION, VERSION_HEADER } from "./store/version.js"; import TrainingApi from "./TrainingApi.js"; import UsersApi from "./UsersApi.js"; -import { VERSION, VERSION_HEADER } from "./store/version.js"; /** @@ -40,9 +40,9 @@ export type VertesiaClientProps = { * @since 0.52.0 */ site?: - | "api.vertesia.io" - | "api-preview.vertesia.io" - | "api-staging.vertesia.io"; + | "api.vertesia.io" + | "api-preview.vertesia.io" + | "api-staging.vertesia.io"; serverUrl?: string; storeUrl?: string; tokenServerUrl?: string; @@ -94,7 +94,7 @@ export class VertesiaClient extends AbstractFetchClient { }).withApiKey(token); } - static decodeEndpoints() {} + static decodeEndpoints() { } constructor( opts: VertesiaClientProps = { @@ -210,16 +210,16 @@ export class VertesiaClient extends AbstractFetchClient { return this.withAuthCallback( apiKey ? async () => { - if (!isApiKey(apiKey)) { - return `Bearer ${apiKey}`; - } - - if (isTokenExpired(this._jwt)) { - const jwt = await this.getAuthToken(apiKey); - this._jwt = jwt.token; - } - return `Bearer ${this._jwt}`; - } + if (!isApiKey(apiKey)) { + return `Bearer ${apiKey}`; + } + + if (isTokenExpired(this._jwt)) { + const jwt = await this.getAuthToken(apiKey); + this._jwt = jwt.token; + } + return `Bearer ${this._jwt}`; + } : undefined, ); } From ed1b7950b3c530b80e5cb934d7424b224865fb45 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Tue, 6 Jan 2026 12:14:37 +0000 Subject: [PATCH 06/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 6f1166728..dd93e94d0 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 6f116672886a8ea24f89bfeab7c4ef85d6634557 +Subproject commit dd93e94d008e1554d556b99980e8f42f91713f9c From 03b33aca47e502f96fc6b32ed86d593b7bfb9d38 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Tue, 6 Jan 2026 12:41:34 +0000 Subject: [PATCH 07/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index dd93e94d0..ddbc1b13f 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit dd93e94d008e1554d556b99980e8f42f91713f9c +Subproject commit ddbc1b13ffa5df26ef2bea4c918d410055f97288 From 1aa49054ef21e74a5de2a496413a03299fb4bacc Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Mon, 12 Jan 2026 01:50:53 +0000 Subject: [PATCH 08/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index ec6af4ad4..024daf593 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit ec6af4ad406583dbfd81d728b75aed3f722f8e81 +Subproject commit 024daf593ed2c1544ce205f6bf7c752f9655f631 From 6fd7930f64ccce82b8025abc732674c0b25e853e Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Mon, 12 Jan 2026 18:22:10 +0000 Subject: [PATCH 09/16] scaffold zeno batch api --- packages/client/src/store/Batch.ts | 8 ++++++++ packages/client/src/store/index.ts | 1 + 2 files changed, 9 insertions(+) create mode 100644 packages/client/src/store/Batch.ts diff --git a/packages/client/src/store/Batch.ts b/packages/client/src/store/Batch.ts new file mode 100644 index 000000000..904aa372c --- /dev/null +++ b/packages/client/src/store/Batch.ts @@ -0,0 +1,8 @@ +import { ApiTopic, ClientBase } from "@vertesia/api-fetch-client"; + +export class BatchApi extends ApiTopic { + + constructor(parent: ClientBase) { + super(parent, "/api/v1/batch"); + } +} diff --git a/packages/client/src/store/index.ts b/packages/client/src/store/index.ts index 786ccd29e..45a8a5bc0 100644 --- a/packages/client/src/store/index.ts +++ b/packages/client/src/store/index.ts @@ -4,4 +4,5 @@ export * from "./FilesApi.js"; export * from "./ObjectsApi.js"; export * from "./TypesApi.js"; export * from "./WorkflowsApi.js"; +export * from "./Batch.js"; From 913a8de6c98a32e512fafcbca2b1f1b439488df5 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Mon, 12 Jan 2026 18:22:17 +0000 Subject: [PATCH 10/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 024daf593..196b5cce5 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 024daf593ed2c1544ce205f6bf7c752f9655f631 +Subproject commit 196b5cce5d4a480fb829687b4ec7107e650414fb From e2d1ce5b02d46fb43455e571f1abf06e5e8becaa Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Wed, 14 Jan 2026 14:28:22 +0000 Subject: [PATCH 11/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 4d66c6ae9..6bd48fc8f 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 4d66c6ae99ff629b8c118e73ae3b3d013f52dab0 +Subproject commit 6bd48fc8f43ccbef480c3417ef419451c4508483 From ba4c9a6ecaf8d36cc2d32802d9532500b6c5ffbc Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Fri, 16 Jan 2026 19:56:46 +0000 Subject: [PATCH 12/16] sync to llumiverse preview --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 6bd48fc8f..bf5c53dbe 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 6bd48fc8f43ccbef480c3417ef419451c4508483 +Subproject commit bf5c53dbe973b73cbd09bbbfb1f53b7f58eda532 From 910adabaf6f8efdbdd21c68a056b2ca9c8dc48e6 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Fri, 16 Jan 2026 19:59:16 +0000 Subject: [PATCH 13/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index bf5c53dbe..6ce69cd4e 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit bf5c53dbe973b73cbd09bbbfb1f53b7f58eda532 +Subproject commit 6ce69cd4e58d7b553c5b05947341c9ee845d3bf2 From d09da367983e8fdc86754d01bb4e39487bd80c30 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Sat, 17 Jan 2026 00:09:52 +0000 Subject: [PATCH 14/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 6ce69cd4e..0c33837df 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 6ce69cd4e58d7b553c5b05947341c9ee845d3bf2 +Subproject commit 0c33837df3bfd3a41cf775ba46cab77fb16f0312 From 47f9b5cea0d26758da299a1cc971c1769c58fb87 Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Mon, 19 Jan 2026 09:58:59 +0000 Subject: [PATCH 15/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 0c33837df..03918067f 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 0c33837df3bfd3a41cf775ba46cab77fb16f0312 +Subproject commit 03918067f7482c94c77741589e05227fe920254e From 68b38523d7d08c51d8de4a19c7249b9f47ade83b Mon Sep 17 00:00:00 2001 From: Leon Ruggiero Date: Tue, 20 Jan 2026 17:57:51 +0100 Subject: [PATCH 16/16] sync to llumiverse branch --- llumiverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llumiverse b/llumiverse index 03918067f..4059bad32 160000 --- a/llumiverse +++ b/llumiverse @@ -1 +1 @@ -Subproject commit 03918067f7482c94c77741589e05227fe920254e +Subproject commit 4059bad32c778ce0a571c8410b129a00bc910ec6