{"version":3,"file":"index.cjs","names":["BaseClient","getRunMetadataFromResponse"],"sources":["../../../src/client/runs/index.ts"],"sourcesContent":["import {\n  CancelAction,\n  DefaultValues,\n  Run,\n  RunSelectField,\n  RunStatus,\n  ThreadState,\n} from \"../../schema.js\";\nimport type {\n  RunsCreatePayload,\n  RunsStreamPayload,\n  RunsWaitPayload,\n  StreamEvent,\n} from \"../../types.js\";\nimport type { StreamMode, TypedAsyncGenerator } from \"../../types.stream.js\";\n\nimport { BaseClient, getRunMetadataFromResponse } from \"../base.js\";\n\nexport class RunsClient<\n  TStateType = DefaultValues,\n  TUpdateType = TStateType,\n  TCustomEventType = unknown,\n> extends BaseClient {\n  stream<\n    TStreamMode extends StreamMode | StreamMode[] = StreamMode,\n    TSubgraphs extends boolean = false,\n  >(\n    threadId: null,\n    assistantId: string,\n    payload?: Omit<\n      RunsStreamPayload<TStreamMode, TSubgraphs>,\n      \"multitaskStrategy\" | \"onCompletion\"\n    >\n  ): TypedAsyncGenerator<\n    TStreamMode,\n    TSubgraphs,\n    TStateType,\n    TUpdateType,\n    TCustomEventType\n  >;\n\n  stream<\n    TStreamMode extends StreamMode | StreamMode[] = StreamMode,\n    TSubgraphs extends boolean = false,\n  >(\n    threadId: string,\n    assistantId: string,\n    payload?: RunsStreamPayload<TStreamMode, TSubgraphs>\n  ): TypedAsyncGenerator<\n    TStreamMode,\n    TSubgraphs,\n    TStateType,\n    TUpdateType,\n    TCustomEventType\n  >;\n\n  /**\n   * Create a run and stream the results.\n   *\n   * @param threadId The ID of the thread.\n   * @param assistantId Assistant ID to use for this run.\n   * @param payload Payload for creating a run.\n   */\n  async *stream<\n    TStreamMode extends StreamMode | StreamMode[] = StreamMode,\n    TSubgraphs extends boolean = false,\n  >(\n    threadId: string | null,\n    assistantId: string,\n    payload?: RunsStreamPayload<TStreamMode, TSubgraphs>\n  ): TypedAsyncGenerator<\n    TStreamMode,\n    TSubgraphs,\n    TStateType,\n    TUpdateType,\n    TCustomEventType\n  > {\n    const json: Record<string, unknown> = {\n      input: payload?.input,\n      command: payload?.command,\n      config: payload?.config,\n      context: payload?.context,\n      metadata: payload?.metadata,\n      stream_mode: payload?.streamMode,\n      stream_subgraphs: payload?.streamSubgraphs,\n      stream_resumable: payload?.streamResumable,\n      feedback_keys: payload?.feedbackKeys,\n      assistant_id: assistantId,\n      interrupt_before: payload?.interruptBefore,\n      interrupt_after: payload?.interruptAfter,\n      checkpoint: payload?.checkpoint,\n      webhook: payload?.webhook,\n      multitask_strategy: payload?.multitaskStrategy,\n      on_completion: payload?.onCompletion,\n      on_disconnect: payload?.onDisconnect,\n      after_seconds: payload?.afterSeconds,\n      if_not_exists: payload?.ifNotExists,\n      checkpoint_during: payload?.checkpointDuring,\n      durability: payload?.durability,\n    };\n\n    yield* this.streamWithRetry({\n      endpoint:\n        threadId == null ? `/runs/stream` : `/threads/${threadId}/runs/stream`,\n      method: \"POST\",\n      json,\n      signal: payload?.signal,\n      onInitialResponse: (response) => {\n        const runMetadata = getRunMetadataFromResponse(response);\n        if (runMetadata) payload?.onRunCreated?.(runMetadata);\n      },\n    }) as TypedAsyncGenerator<\n      TStreamMode,\n      TSubgraphs,\n      TStateType,\n      TUpdateType,\n      TCustomEventType\n    >;\n  }\n\n  /**\n   * Create a run.\n   *\n   * @param threadId The ID of the thread.\n   * @param assistantId Assistant ID to use for this run.\n   * @param payload Payload for creating a run.\n   * @returns The created run.\n   */\n  async create(\n    threadId: string | null,\n    assistantId: string,\n    payload?: RunsCreatePayload\n  ): Promise<Run> {\n    const json: Record<string, unknown> = {\n      input: payload?.input,\n      command: payload?.command,\n      config: payload?.config,\n      context: payload?.context,\n      metadata: payload?.metadata,\n      stream_mode: payload?.streamMode,\n      stream_subgraphs: payload?.streamSubgraphs,\n      stream_resumable: payload?.streamResumable,\n      feedback_keys: payload?.feedbackKeys,\n      assistant_id: assistantId,\n      interrupt_before: payload?.interruptBefore,\n      interrupt_after: payload?.interruptAfter,\n      webhook: payload?.webhook,\n      checkpoint: payload?.checkpoint,\n      checkpoint_id: payload?.checkpointId,\n      multitask_strategy: payload?.multitaskStrategy,\n      after_seconds: payload?.afterSeconds,\n      if_not_exists: payload?.ifNotExists,\n      checkpoint_during: payload?.checkpointDuring,\n      durability: payload?.durability,\n      on_completion: payload?.onCompletion,\n      langsmith_tracer: payload?._langsmithTracer\n        ? {\n            project_name: payload?._langsmithTracer?.projectName,\n            example_id: payload?._langsmithTracer?.exampleId,\n          }\n        : undefined,\n    };\n\n    const endpoint = threadId === null ? \"/runs\" : `/threads/${threadId}/runs`;\n    const [run, response] = await this.fetch<Run>(endpoint, {\n      method: \"POST\",\n      json,\n      signal: payload?.signal,\n      withResponse: true,\n    });\n\n    const runMetadata = getRunMetadataFromResponse(response);\n    if (runMetadata) payload?.onRunCreated?.(runMetadata);\n\n    return run;\n  }\n\n  /**\n   * Create a batch of stateless background runs.\n   *\n   * @param payloads An array of payloads for creating runs.\n   * @returns An array of created runs.\n   */\n  async createBatch(\n    payloads: (Omit<RunsCreatePayload, \"signal\"> & { assistantId: string })[],\n    options?: { signal?: AbortSignal }\n  ): Promise<Run[]> {\n    const filteredPayloads = payloads\n      .map((payload) => ({ ...payload, assistant_id: payload.assistantId }))\n      .map((payload) => {\n        return Object.fromEntries(\n          Object.entries(payload).filter(([_, v]) => v !== undefined)\n        );\n      });\n\n    return this.fetch<Run[]>(\"/runs/batch\", {\n      method: \"POST\",\n      json: filteredPayloads,\n      signal: options?.signal,\n    });\n  }\n\n  async wait(\n    threadId: null,\n    assistantId: string,\n    payload?: Omit<RunsWaitPayload, \"multitaskStrategy\" | \"onCompletion\">\n  ): Promise<ThreadState[\"values\"]>;\n\n  async wait(\n    threadId: string,\n    assistantId: string,\n    payload?: RunsWaitPayload\n  ): Promise<ThreadState[\"values\"]>;\n\n  /**\n   * Create a run and wait for it to complete.\n   *\n   * @param threadId The ID of the thread.\n   * @param assistantId Assistant ID to use for this run.\n   * @param payload Payload for creating a run.\n   * @returns The last values chunk of the thread.\n   */\n  async wait(\n    threadId: string | null,\n    assistantId: string,\n    payload?: RunsWaitPayload\n  ): Promise<ThreadState[\"values\"]> {\n    const json: Record<string, unknown> = {\n      input: payload?.input,\n      command: payload?.command,\n      config: payload?.config,\n      context: payload?.context,\n      metadata: payload?.metadata,\n      assistant_id: assistantId,\n      interrupt_before: payload?.interruptBefore,\n      interrupt_after: payload?.interruptAfter,\n      checkpoint: payload?.checkpoint,\n      checkpoint_id: payload?.checkpointId,\n      webhook: payload?.webhook,\n      multitask_strategy: payload?.multitaskStrategy,\n      on_completion: payload?.onCompletion,\n      on_disconnect: payload?.onDisconnect,\n      after_seconds: payload?.afterSeconds,\n      if_not_exists: payload?.ifNotExists,\n      checkpoint_during: payload?.checkpointDuring,\n      durability: payload?.durability,\n      langsmith_tracer: payload?._langsmithTracer\n        ? {\n            project_name: payload?._langsmithTracer?.projectName,\n            example_id: payload?._langsmithTracer?.exampleId,\n          }\n        : undefined,\n    };\n    const endpoint =\n      threadId == null ? `/runs/wait` : `/threads/${threadId}/runs/wait`;\n    const [run, response] = await this.fetch<ThreadState[\"values\"]>(endpoint, {\n      method: \"POST\",\n      json,\n      timeoutMs: null,\n      signal: payload?.signal,\n      withResponse: true,\n    });\n\n    const runMetadata = getRunMetadataFromResponse(response);\n    if (runMetadata) payload?.onRunCreated?.(runMetadata);\n\n    const raiseError =\n      payload?.raiseError !== undefined ? payload.raiseError : true;\n    if (\n      raiseError &&\n      \"__error__\" in run &&\n      typeof run.__error__ === \"object\" &&\n      run.__error__ &&\n      \"error\" in run.__error__ &&\n      \"message\" in run.__error__\n    ) {\n      throw new Error(`${run.__error__?.error}: ${run.__error__?.message}`);\n    }\n    return run;\n  }\n\n  /**\n   * List all runs for a thread.\n   *\n   * @param threadId The ID of the thread.\n   * @param options Filtering and pagination options.\n   * @returns List of runs.\n   */\n  async list(\n    threadId: string,\n    options?: {\n      limit?: number;\n      offset?: number;\n      status?: RunStatus;\n      select?: RunSelectField[];\n      signal?: AbortSignal;\n    }\n  ): Promise<Run[]> {\n    return this.fetch<Run[]>(`/threads/${threadId}/runs`, {\n      params: {\n        limit: options?.limit ?? 10,\n        offset: options?.offset ?? 0,\n        status: options?.status ?? undefined,\n        select: options?.select ?? undefined,\n      },\n      signal: options?.signal,\n    });\n  }\n\n  /**\n   * Get a run by ID.\n   *\n   * @param threadId The ID of the thread.\n   * @param runId The ID of the run.\n   * @returns The run.\n   */\n  async get(\n    threadId: string,\n    runId: string,\n    options?: { signal?: AbortSignal }\n  ): Promise<Run> {\n    return this.fetch<Run>(`/threads/${threadId}/runs/${runId}`, {\n      signal: options?.signal,\n    });\n  }\n\n  /**\n   * Cancel a run.\n   *\n   * @param threadId The ID of the thread.\n   * @param runId The ID of the run.\n   * @param wait Whether to block when canceling\n   * @param action Action to take when cancelling the run. Possible values are `interrupt` or `rollback`. Default is `interrupt`.\n   * @returns\n   */\n  async cancel(\n    threadId: string,\n    runId: string,\n    wait: boolean = false,\n    action: CancelAction = \"interrupt\",\n    options: { signal?: AbortSignal } = {}\n  ): Promise<void> {\n    return this.fetch<void>(`/threads/${threadId}/runs/${runId}/cancel`, {\n      method: \"POST\",\n      params: { wait: wait ? \"1\" : \"0\", action },\n      signal: options?.signal,\n    });\n  }\n\n  /**\n   * Cancel one or more runs.\n   *\n   * @param options Options for cancelling runs.\n   * @returns\n   */\n  async cancelMany(options: {\n    threadId?: string;\n    runIds?: string[];\n    status?: \"pending\" | \"running\" | \"all\";\n    action?: CancelAction;\n    signal?: AbortSignal;\n  }): Promise<void> {\n    return this.fetch<void>(`/runs/cancel`, {\n      method: \"POST\",\n      json: {\n        thread_id: options.threadId,\n        run_ids: options.runIds,\n        status: options.status,\n      },\n      params: { action: options.action },\n      signal: options.signal,\n    });\n  }\n\n  /**\n   * Block until a run is done.\n   *\n   * @param threadId The ID of the thread.\n   * @param runId The ID of the run.\n   * @returns\n   */\n  async join(\n    threadId: string,\n    runId: string,\n    options?: { cancelOnDisconnect?: boolean; signal?: AbortSignal }\n  ): Promise<TStateType> {\n    return this.fetch<TStateType>(`/threads/${threadId}/runs/${runId}/join`, {\n      timeoutMs: null,\n      params: { cancel_on_disconnect: options?.cancelOnDisconnect ? \"1\" : \"0\" },\n      signal: options?.signal,\n    });\n  }\n\n  /**\n   * Stream output from a run in real-time, until the run is done.\n   *\n   * @param threadId The ID of the thread.\n   * @param runId The ID of the run.\n   * @param options Additional options for controlling the stream behavior.\n   * @returns An async generator yielding stream parts.\n   */\n  async *joinStream(\n    threadId: string | undefined | null,\n    runId: string,\n    options?:\n      | {\n          signal?: AbortSignal;\n          cancelOnDisconnect?: boolean;\n          lastEventId?: string;\n          streamMode?: StreamMode | StreamMode[];\n        }\n      | AbortSignal\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): AsyncGenerator<{ id?: string; event: StreamEvent; data: any }> {\n    const opts =\n      typeof options === \"object\" &&\n      options != null &&\n      // eslint-disable-next-line no-instanceof/no-instanceof\n      options instanceof AbortSignal\n        ? { signal: options }\n        : options;\n\n    yield* this.streamWithRetry({\n      endpoint:\n        threadId != null\n          ? `/threads/${threadId}/runs/${runId}/stream`\n          : `/runs/${runId}/stream`,\n      method: \"GET\",\n      signal: opts?.signal,\n      headers: opts?.lastEventId\n        ? { \"Last-Event-ID\": opts.lastEventId }\n        : undefined,\n      params: {\n        cancel_on_disconnect: opts?.cancelOnDisconnect ? \"1\" : \"0\",\n        stream_mode: opts?.streamMode,\n      },\n    });\n  }\n\n  /**\n   * Delete a run.\n   *\n   * @param threadId The ID of the thread.\n   * @param runId The ID of the run.\n   * @returns\n   */\n  async delete(\n    threadId: string,\n    runId: string,\n    options?: { signal?: AbortSignal }\n  ): Promise<void> {\n    return this.fetch<void>(`/threads/${threadId}/runs/${runId}`, {\n      method: \"DELETE\",\n      signal: options?.signal,\n    });\n  }\n}\n"],"mappings":"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"}