diff --git a/libs/sdk-js/src/client.mts b/libs/sdk-js/src/client.mts index 3847fd65c..67dc945d9 100644 --- a/libs/sdk-js/src/client.mts +++ b/libs/sdk-js/src/client.mts @@ -8,6 +8,7 @@ import { Run, Thread, ThreadState, + Cron, } from "./schema.js"; import { AsyncCaller, AsyncCallerParams } from "./utils/async_caller.mjs"; import { EventSourceParser, createParser } from "eventsource-parser"; @@ -17,6 +18,7 @@ import { RunsStreamPayload, RunsWaitPayload, StreamEvent, + CronsCreatePayload, } from "./types.mjs"; interface ClientConfig { @@ -104,6 +106,94 @@ class BaseClient { } } +class CronsClient extends BaseClient { + /** + * + * @param threadId The ID of the thread. + * @param assistantId Assistant ID to use for this cron job. + * @param payload Payload for creating a cron job. + * @returns The created background run. + */ + async createForThread( + threadId: string, + assistantId: string, + payload?: CronsCreatePayload, + ): Promise { + const json: Record = { + schedule: payload?.schedule, + input: payload?.input, + config: payload?.config, + metadata: payload?.metadata, + assistant_id: assistantId, + interrupt_before: payload?.interruptBefore, + interrupt_after: payload?.interruptAfter, + webhook: payload?.webhook, + }; + return this.fetch(`/threads/${threadId}/runs/crons`, { + method: "POST", + json, + }); + } + + /** + * + * @param assistantId Assistant ID to use for this cron job. + * @param payload Payload for creating a cron job. + * @returns + */ + async create( + assistantId: string, + payload?: CronsCreatePayload, + ): Promise { + const json: Record = { + schedule: payload?.schedule, + input: payload?.input, + config: payload?.config, + metadata: payload?.metadata, + assistant_id: assistantId, + interrupt_before: payload?.interruptBefore, + interrupt_after: payload?.interruptAfter, + webhook: payload?.webhook, + }; + return this.fetch(`/runs/crons`, { + method: "POST", + json, + }); + } + + /** + * + * @param cronId Cron ID of Cron job to delete. + */ + async delete(cronId: string): Promise { + await this.fetch(`/runs/crons/${cronId}`, { + method: "DELETE", + }); + } + + /** + * + * @param query Query options. + * @returns List of crons. + */ + async search(query?: { + assistantId?: string; + threadId?: string; + limit?: number; + offset?: number; + }): Promise { + return this.fetch("/runs/crons/search", { + method: "POST", + json: { + assistant_id: query?.assistantId ?? undefined, + thread_id: query?.threadId ?? undefined, + limit: query?.limit ?? 10, + offset: query?.offset ?? 0, + }, + }); + } +} + class AssistantsClient extends BaseClient { /** * Get an assistant by ID. @@ -674,9 +764,15 @@ export class Client { */ public runs: RunsClient; + /** + * The client for interacting with cron runs. + */ + public crons: CronsClient; + constructor(config?: ClientConfig) { this.assistants = new AssistantsClient(config); this.threads = new ThreadsClient(config); this.runs = new RunsClient(config); + this.crons = new CronsClient(config); } } diff --git a/libs/sdk-js/src/index.mts b/libs/sdk-js/src/index.mts index bb7359349..1198d17d9 100644 --- a/libs/sdk-js/src/index.mts +++ b/libs/sdk-js/src/index.mts @@ -10,4 +10,5 @@ export type { Run, Thread, ThreadState, + Cron, } from "./schema.js"; diff --git a/libs/sdk-js/src/schema.ts b/libs/sdk-js/src/schema.ts index 9594595eb..d9f8458a2 100644 --- a/libs/sdk-js/src/schema.ts +++ b/libs/sdk-js/src/schema.ts @@ -68,6 +68,16 @@ export interface Thread { metadata: Metadata; } +export interface Cron { + cron_id: string; + thread_id: Optional; + end_time: Optional; + schedule: string; + created_at: string; + updated_at: string; + payload: Record; +} + export type DefaultValues = Record[] | Record; export interface ThreadState { diff --git a/libs/sdk-js/src/types.mts b/libs/sdk-js/src/types.mts index c5ddaa5b4..50e702131 100644 --- a/libs/sdk-js/src/types.mts +++ b/libs/sdk-js/src/types.mts @@ -83,4 +83,11 @@ export interface RunsCreatePayload extends RunsInvokePayload { webhook?: string; } +export interface CronsCreatePayload extends RunsCreatePayload { + /** + * Schedule for running the Cron Job + */ + schedule: string; +} + export type RunsWaitPayload = RunsStreamPayload;