{"version":3,"sources":["../src/index.ts","../src/auth/credentials.ts","../src/schemas/analytics.ts","../src/utils/http.ts","../src/exceptions/exceptions.ts","../src/services/analytics.ts","../src/utils/helpers.ts","../src/mappers/assistant.mapper.ts","../src/services/assistant.ts","../src/schemas/assistant.ts","../src/schemas/conversation.ts","../src/services/conversation.ts","../src/services/datasource.ts","../src/models/datasource.ts","../src/mappers/datasource.mapper.ts","../src/services/files.ts","../src/models/integration.ts","../src/schemas/integration.ts","../src/services/integration.ts","../src/services/llm.ts","../src/schemas/skill.ts","../src/models/skill.ts","../src/services/skill.ts","../src/services/task.ts","../src/mappers/user.mapper.ts","../src/services/user.ts","../src/services/category.ts","../src/mappers/workflow.mapper.ts","../src/schemas/workflow.ts","../src/models/workflow.ts","../src/services/workflow_execution_state.ts","../src/services/workflow_execution.ts","../src/services/workflow.ts","../src/client/client.ts","../src/models/assistant.ts","../src/models/errors.ts","../src/models/llm.ts","../src/models/task.ts","../src/schemas/project.ts"],"sourcesContent":["export * from \"./client\";\nexport * from \"./exceptions\";\nexport * from \"./models\";\nexport * from \"./schemas\";\nexport * from \"./services\";\nexport { formatCookies } from \"./utils/http\";\n","import { Agent } from \"node:https\";\nimport axios, { type AxiosError } from \"axios\";\nimport type { KeycloakCredentialsConfig, TokenPayload, TokenResponse } from \"./types\";\n\nconst DEFAULT_CLIENT_ID = \"codemie-sdk\";\n\nexport class KeycloakCredentials {\n  private config: KeycloakCredentialsConfig;\n  private httpAgent: Agent;\n  private cachedToken: string | null = null;\n  private tokenExpiresAt = 0;\n  private static readonly TOKEN_EXPIRY_BUFFER_MS = 30_000;\n\n  constructor(config: KeycloakCredentialsConfig) {\n    this.validateConfigCredentials(config);\n    this.config = config;\n\n    this.httpAgent = new Agent({\n      rejectUnauthorized: config.verifySSL,\n    });\n  }\n\n  async getToken(): Promise<string> {\n    const now = Date.now();\n    if (this.cachedToken && now < this.tokenExpiresAt) {\n      return this.cachedToken;\n    }\n\n    const { serverUrl, realmName } = this.config;\n    const url = `${serverUrl}/realms/${realmName}/protocol/openid-connect/token`;\n\n    let payload: TokenPayload;\n\n    if (this.config.externalToken && this.config.externalIdp) {\n      const raw = this.config.externalToken;\n      const subjectToken = typeof raw === \"function\" ? await raw() : raw;\n      payload = this.createTokenExchangePayload(subjectToken);\n    } else if (this.config.username && this.config.password) {\n      payload = this.createResourceOwnerCredentialsPayload();\n    } else {\n      payload = this.createClientCredentialsPayload();\n    }\n\n    try {\n      const { data } = await axios.post<TokenResponse>(url, this.createSearchParams(payload), {\n        headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n        httpsAgent: this.httpAgent,\n      });\n\n      this.cachedToken = data.access_token;\n      const expiresIn = data.expires_in ?? 300;\n      this.tokenExpiresAt = now + expiresIn * 1000 - KeycloakCredentials.TOKEN_EXPIRY_BUFFER_MS;\n      return this.cachedToken;\n    } catch (err) {\n      const axiosErr = err as AxiosError;\n      const reason = axiosErr.message ?? String(err);\n      throw new Error(`Cannot connect to Keycloak at ${url}: ${reason}`);\n    }\n  }\n\n  clearCache(): void {\n    this.cachedToken = null;\n    this.tokenExpiresAt = 0;\n  }\n\n  private createTokenExchangePayload(subjectToken: string): TokenPayload {\n    const { clientId, clientSecret, externalIdp } = this.config;\n\n    return {\n      grant_type: \"urn:ietf:params:oauth:grant-type:token-exchange\",\n      client_id: clientId || DEFAULT_CLIENT_ID,\n      client_secret: clientSecret,\n      subject_token: subjectToken,\n      subject_token_type: \"urn:ietf:params:oauth:token-type:access_token\",\n      subject_issuer: externalIdp,\n      requested_token_type: \"urn:ietf:params:oauth:token-type:access_token\",\n    };\n  }\n\n  private createResourceOwnerCredentialsPayload(): TokenPayload {\n    const { username, password, clientId } = this.config;\n\n    return {\n      grant_type: \"password\",\n      username,\n      password,\n      client_id: clientId || DEFAULT_CLIENT_ID,\n    };\n  }\n\n  private createClientCredentialsPayload(): TokenPayload {\n    const { clientId, clientSecret } = this.config;\n\n    return {\n      grant_type: \"client_credentials\",\n      client_id: clientId || DEFAULT_CLIENT_ID,\n      client_secret: clientSecret,\n    };\n  }\n\n  private createSearchParams(payload: Record<string, string | undefined>): URLSearchParams {\n    return new URLSearchParams(\n      Object.fromEntries(Object.entries(payload).filter(([_, v]) => v !== undefined)) as Record<\n        string,\n        string\n      >,\n    );\n  }\n\n  private validateConfigCredentials(config: KeycloakCredentialsConfig): void {\n    const hasClientCredentials = !!(config.clientId && config.clientSecret);\n    const hasUserCredentials = !!(config.username && config.password);\n    const hasExternalTokenCredentials = !!(config.externalToken && config.externalIdp);\n\n    if (!hasClientCredentials && !hasUserCredentials && !hasExternalTokenCredentials) {\n      throw new Error(\n        \"Either client credentials (clientId, clientSecret), \" +\n          \"user credentials (username, password), \" +\n          \"or external token credentials (externalToken, externalIdp) must be provided\",\n      );\n    }\n  }\n}\n","import { z } from \"zod\";\n\nexport const TIME_PERIOD_VALUES = [\n  \"last_hour\",\n  \"last_6_hours\",\n  \"last_24_hours\",\n  \"last_7_days\",\n  \"last_30_days\",\n  \"last_60_days\",\n  \"last_year\",\n] as const;\n\nexport type TimePeriod = (typeof TIME_PERIOD_VALUES)[number];\n\nconst timePeriodSchema = z.enum(TIME_PERIOD_VALUES);\n\nconst analyticsQueryParamsBase = z.object({\n  time_period: timePeriodSchema.optional(),\n  start_date: z.string().datetime({ offset: true }).optional(),\n  end_date: z.string().datetime({ offset: true }).optional(),\n  users: z.string().optional(),\n  projects: z.string().optional(),\n});\n\nexport const AnalyticsQueryParamsSchema = analyticsQueryParamsBase.readonly();\n\nexport type AnalyticsQueryParams = Partial<\n  z.infer<typeof AnalyticsQueryParamsSchema>\n>;\n\nexport const PaginatedAnalyticsQueryParamsSchema = analyticsQueryParamsBase\n  .extend({\n    page: z.number().int().min(0).default(0),\n    per_page: z.number().int().min(1).default(20),\n  })\n  .readonly();\n\nexport type PaginatedAnalyticsQueryParams = Partial<\n  z.infer<typeof PaginatedAnalyticsQueryParamsSchema>\n>;\n","import { Agent } from \"node:https\";\nimport axios from \"axios\";\nimport type { AxiosError, AxiosInstance, AxiosResponse } from \"axios/index\";\nimport type FormData from \"form-data\";\nimport { ApiError, NotFoundError } from \"../exceptions\";\nimport type { AuthConfig } from \"../models/common\";\n\nexport interface ApiResponse<T> {\n  data: T;\n}\n\n/**\n * Convert cookies object to cookie string format.\n * Example: {key1: \"value1\", key2: \"value2\"} => \"key1=value1; key2=value2\"\n */\nexport function formatCookies(cookies: Record<string, string>): string {\n  return Object.entries(cookies)\n    .map(([key, value]) => `${key}=${value}`)\n    .join(\"; \");\n}\n\nexport class ApiRequestHandler {\n  private client: AxiosInstance;\n\n  constructor(config: AuthConfig) {\n    const { apiDomain, token, verifySSL = true, cookies = {}, tokenGetter } = config;\n\n    const headers: Record<string, string> = {\n      \"Content-Type\": \"application/json\",\n    };\n\n    // Use Cookie header if cookies are provided, otherwise use Bearer token\n    if (Object.keys(cookies).length > 0) {\n      headers.Cookie = formatCookies(cookies);\n    } else if (token) {\n      headers.Authorization = `Bearer ${token}`;\n    }\n\n    this.client = axios.create({\n      baseURL: apiDomain.replace(/\\/$/, \"\"), // Remove trailing slash\n      validateStatus: (status: number) => status < 400,\n      headers,\n      httpsAgent: new Agent({\n        rejectUnauthorized: verifySSL,\n      }),\n    });\n\n    this.client.interceptors.response.use(\n      (response: AxiosResponse) => response,\n      (error: AxiosError) => this.processFailedResponse(error),\n    );\n\n    if (tokenGetter) {\n      this.client.interceptors.request.use(async (requestConfig) => {\n        const freshToken = await tokenGetter();\n        requestConfig.headers.Authorization = `Bearer ${freshToken}`;\n        return requestConfig;\n      });\n    }\n  }\n\n  private async request<T>(\n    method: \"get\" | \"post\" | \"put\" | \"delete\",\n    path: string,\n    config: Record<string, unknown> = {},\n  ): Promise<T> {\n    const response = await this.client.request<T>({\n      method,\n      url: path,\n      ...config,\n    });\n    return response.data;\n  }\n\n  /**\n   * Merge extra headers into the request (used for X-* propagation)\n   */\n  private withHeaders(config: Record<string, unknown> = {}, extraHeaders?: Record<string, string>) {\n    if (!extraHeaders || Object.keys(extraHeaders).length === 0) return config;\n    const headers = (config.headers as Record<string, string> | undefined) ?? {};\n    return { ...config, headers: { ...headers, ...extraHeaders } };\n  }\n\n  async get<T>(\n    path: string,\n    params?: Record<string, unknown>,\n    config: Record<string, unknown> = {},\n    extraHeaders?: Record<string, string>,\n  ): Promise<T> {\n    return this.request<T>(\"get\", path, this.withHeaders({ ...config, params }, extraHeaders));\n  }\n\n  async post<T>(\n    path: string,\n    data?: unknown,\n    config: Record<string, unknown> = {},\n    extraHeaders?: Record<string, string>,\n  ): Promise<T> {\n    return this.request<T>(\"post\", path, this.withHeaders({ ...config, data }, extraHeaders));\n  }\n\n  async put<T>(\n    path: string,\n    data?: unknown,\n    config: Record<string, unknown> = {},\n    extraHeaders?: Record<string, string>,\n  ): Promise<T> {\n    return this.request<T>(\"put\", path, this.withHeaders({ ...config, data }, extraHeaders));\n  }\n\n  async postMultipart<T>(\n    url: string,\n    formData: FormData,\n    params?: Record<string, unknown>,\n  ): Promise<T> {\n    const response = await this.client.post<T>(url, formData, {\n      headers: {\n        \"Content-Type\": \"multipart/form-data\",\n      },\n      params,\n    });\n    return response.data;\n  }\n\n  async delete<T>(path: string, config: Record<string, unknown> = {}): Promise<T> {\n    return this.request<T>(\"delete\", path, config);\n  }\n\n  async stream(\n    path: string,\n    data?: unknown,\n    config: Record<string, unknown> = {},\n  ): Promise<AxiosResponse> {\n    return this.client.post(path, data, {\n      ...config,\n      responseType: \"stream\",\n    });\n  }\n\n  private processFailedResponse(error: AxiosError): void {\n    const response = error.response;\n    const status = response?.status || 500;\n\n    const data = (response?.data || {}) as {\n      error?: { message?: string; detail?: string; help?: string; details?: string };\n    };\n\n    if (status === 404) {\n      throw new NotFoundError(\"Resource\", \"unknown\");\n    }\n\n    if (status === 422) {\n      // Validation error returns different structure (details instead of detail)\n      const errorMessage = [\n        data.error?.message,\n        data.error?.help,\n        JSON.stringify(data.error?.details ?? {}),\n      ]\n        .filter(Boolean)\n        .join(\". \");\n      throw new ApiError(errorMessage || \"Validation error\", status, data);\n    }\n\n    const errorMessage = [data.error?.message, data.error?.detail, data.error?.help]\n      .filter(Boolean)\n      .join(\". \");\n\n    throw new ApiError(errorMessage || `HTTP ${status} error`, status, data);\n  }\n}\n","import type { AnyJson } from \"../models/common\";\n\nexport class CodeMieError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"CodeMieError\";\n  }\n}\n\nexport class ApiError extends CodeMieError {\n  statusCode?: number;\n  response?: AnyJson;\n\n  constructor(message: string, statusCode?: number, response?: AnyJson) {\n    super(message);\n    this.name = \"ApiError\";\n    this.statusCode = statusCode;\n    this.response = response;\n  }\n}\n\nexport class NotFoundError extends ApiError {\n  constructor(resourceType: string, resourceId: string) {\n    super(`${resourceType} with ${resourceId} not found`, 404);\n    this.name = \"NotFoundError\";\n  }\n}\n","import type { AuthConfig } from \"../models/common\";\nimport type { SummariesResponse, TabularResponse, UsersListResponse } from \"../models/analytics\";\nimport {\n  AnalyticsQueryParamsSchema,\n  PaginatedAnalyticsQueryParamsSchema,\n  type AnalyticsQueryParams,\n  type PaginatedAnalyticsQueryParams,\n} from \"../schemas/analytics\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class AnalyticsService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  async getSummaries(_params: AnalyticsQueryParams = {}): Promise<SummariesResponse> {\n    const params = AnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<SummariesResponse>(\"/v1/analytics/summaries\", params);\n  }\n\n  async getCliSummary(_params: AnalyticsQueryParams = {}): Promise<SummariesResponse> {\n    const params = AnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<SummariesResponse>(\"/v1/analytics/cli-summary\", params);\n  }\n\n  async getUsers(_params: AnalyticsQueryParams = {}): Promise<UsersListResponse> {\n    const params = AnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<UsersListResponse>(\"/v1/analytics/users\", params);\n  }\n\n  async getAssistantsChats(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/assistants-chats\", params);\n  }\n\n  async getWorkflows(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/workflows\", params);\n  }\n\n  async getToolsUsage(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/tools-usage\", params);\n  }\n\n  async getWebhooksInvocation(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/webhooks-invocation\", params);\n  }\n\n  async getMcpServers(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/mcp-servers\", params);\n  }\n\n  async getMcpServersByUsers(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/mcp-servers-by-users\", params);\n  }\n\n  async getProjectsSpending(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/projects-spending\", params);\n  }\n\n  async getLlmsUsage(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/llms-usage\", params);\n  }\n\n  async getUsersSpending(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/users-spending\", params);\n  }\n\n  async getBudgetSoftLimit(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/budget-soft-limit\", params);\n  }\n\n  async getBudgetHardLimit(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/budget-hard-limit\", params);\n  }\n\n  async getUsersActivity(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/users-activity\", params);\n  }\n\n  async getProjectsActivity(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/projects-activity\", params);\n  }\n\n  async getAgentsUsage(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/agents-usage\", params);\n  }\n\n  async getCliAgents(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/cli-agents\", params);\n  }\n\n  async getCliLlms(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/cli-llms\", params);\n  }\n\n  async getCliUsers(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/cli-users\", params);\n  }\n\n  async getCliErrors(_params: PaginatedAnalyticsQueryParams = {}): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/cli-errors\", params);\n  }\n\n  async getCliRepositories(\n    _params: PaginatedAnalyticsQueryParams = {},\n  ): Promise<TabularResponse> {\n    const params = PaginatedAnalyticsQueryParamsSchema.parse(_params);\n    return this.api.get<TabularResponse>(\"/v1/analytics/cli-repositories\", params);\n  }\n}\n","/**\n * Utility function to omit properties with undefined values from an object.\n * Helper during API response mapping to ensure clean data.\n */\nexport function omitUndefined<T extends Record<string, unknown>>(obj: T): T {\n  return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== undefined)) as T;\n}\n","import type { BaseModelApiResponse, BaseModelResponse } from \"../models\";\nimport { omitUndefined } from \"../utils/helpers\";\n\nexport class AssistantMapper {\n  static mapBaseModelApiResponse(response: BaseModelApiResponse): BaseModelResponse {\n    return omitUndefined({\n      generated: response.generated,\n      time_elapsed: response.timeElapsed,\n      tokens_used: response.tokensUsed,\n      thoughts: response.thoughts,\n      task_id: response.taskId,\n      success: response.success,\n      agent_error: response.agentError,\n      tool_errors: response.toolErrors,\n    });\n  }\n}\n","import { AssistantMapper } from \"../mappers/assistant.mapper\";\nimport type {\n  Assistant,\n  AssistantBase,\n  AssistantVersion,\n  BaseModelApiResponse,\n  BaseModelResponse,\n  ToolKitDetails,\n  AssistantCreateResponse,\n  AssistantUpdateResponse,\n} from \"../models/assistant\";\nimport type { AnyJson, AuthConfig, PaginatedResponse } from \"../models/common\";\nimport { z } from \"zod\";\nimport {\n  AssistantChatParamsSchema,\n  VirtualAssistantChatParamsSchema,\n  type AssistantCreateParams,\n  AssistantCreateParamsSchema,\n  type AssistantEvaluationParams,\n  AssistantEvaluationParamsSchema,\n  type AssistantListParams,\n  AssistantListParamsSchema,\n  type AssistantUpdateParams,\n  AssistantUpdateParamsSchema,\n  type AssistantChatParams,\n  type VirtualAssistantChatParams,\n  AssistantVersionsListParamsSchema,\n  type AssistantVersionsListParams,\n} from \"../schemas/assistant\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\n// Union of supported response shapes for versions list endpoint to avoid `any`.\n// - Backend may return a raw array, or wrap in {data: [...]}, or {versions: [...]}.\nexport type VersionsListResponse =\n  | AssistantVersion[]\n  | { data: AssistantVersion[];[key: string]: unknown }\n  | { versions: AssistantVersion[];[key: string]: unknown }\n  | { items: AssistantVersion[];[key: string]: unknown };\n\nexport class AssistantService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get list of available assistants.\n   */\n  async list(_params: AssistantListParams = {}): Promise<(Assistant | AssistantBase)[]> {\n    const params = AssistantListParamsSchema.parse(_params);\n\n    const response = await this.api.get<PaginatedResponse<Assistant | AssistantBase>>(\n      \"/v1/assistants\",\n      {\n        ...params,\n        ...(params.filters ? { filters: JSON.stringify(params.filters) } : {}),\n      },\n    );\n\n    return response.data;\n  }\n\n  /**\n   * Get list of available assistants with pagination metadata.\n   */\n  async listPaginated(\n    _params: AssistantListParams = {},\n  ): Promise<PaginatedResponse<Assistant | AssistantBase>> {\n    const params = AssistantListParamsSchema.parse(_params);\n\n    const response = await this.api.get<PaginatedResponse<Assistant | AssistantBase>>(\n      \"/v1/assistants\",\n      {\n        ...params,\n        ...(params.filters ? { filters: JSON.stringify(params.filters) } : {}),\n      },\n    );\n\n    return response;\n  }\n\n  /**\n   * Get assistant by ID.\n   */\n  async get(assistantId: string): Promise<Assistant> {\n    return this.api.get<Assistant>(`/v1/assistants/id/${assistantId}`);\n  }\n\n  /**\n   * Get assistant by slug.\n   */\n  async getBySlug(slug: string): Promise<Assistant> {\n    return this.api.get<Assistant>(`/v1/assistants/slug/${slug}`);\n  }\n\n  /**\n   * Create a new assistant.\n   * @returns AssistantCreateResponse with assistant_id and optional validation results\n   */\n  async create(_params: AssistantCreateParams): Promise<AssistantCreateResponse> {\n    const params = { ..._params };\n\n    // Ensure is_global is a boolean, default to false if not\n    if (\"is_global\" in params && typeof params.is_global !== \"boolean\") {\n      params.is_global = false;\n    }\n\n    const validatedParams = AssistantCreateParamsSchema.parse(params);\n    return this.api.post<AssistantCreateResponse>(\"/v1/assistants\", validatedParams);\n  }\n\n  /**\n   * Update an existing assistant.\n   * @returns AssistantUpdateResponse with optional validation results\n   */\n  async update(\n    assistantId: string,\n    _params: AssistantUpdateParams,\n  ): Promise<AssistantUpdateResponse> {\n    const params = { ..._params };\n\n    // Ensure is_global is a boolean, default to false if not\n    if (\"is_global\" in params && typeof params.is_global !== \"boolean\") {\n      params.is_global = false;\n    }\n\n    const validatedParams = AssistantUpdateParamsSchema.parse(params);\n    return this.api.put<AssistantUpdateResponse>(`/v1/assistants/${assistantId}`, validatedParams);\n  }\n\n  /**\n   * Get list of available tools.\n   */\n  async getTools(): Promise<ToolKitDetails[]> {\n    return this.api.get<ToolKitDetails[]>(\"/v1/assistants/tools\");\n  }\n\n  /**\n   * Delete an assistant by ID.\n   */\n  async delete(assistantId: string): Promise<AnyJson> {\n    return this.api.delete(`/v1/assistants/${assistantId}`);\n  }\n\n  /**\n   * Get list of prebuilt assistants.\n   */\n  async getPrebuilt(): Promise<Assistant[]> {\n    return this.api.get<Assistant[]>(\"/v1/assistants/prebuilt\");\n  }\n\n  /**\n   * Get prebuilt assistant by slug.\n   */\n  async getPrebuiltBySlug(slug: string): Promise<Assistant> {\n    return this.api.get<Assistant>(`/v1/assistants/prebuilt/${slug}`);\n  }\n\n  /**\n   * List assistant versions.\n   */\n  async listVersions(\n    assistantId: string,\n    _params: AssistantVersionsListParams = {},\n  ): Promise<AssistantVersion[]> {\n    const params = AssistantVersionsListParamsSchema.parse(_params);\n    const response = await this.api.get<VersionsListResponse>(\n      `/v1/assistants/${assistantId}/versions`,\n      params,\n    );\n    // Support multiple backend response shapes: array, {data: [...]}, {versions: [...]}, {items: [...]}.\n    if (Array.isArray(response)) {\n      return response;\n    }\n    if (response && \"data\" in response && Array.isArray(response.data)) {\n      return response.data;\n    }\n    if (\n      response &&\n      \"versions\" in response &&\n      Array.isArray((response as { versions: unknown }).versions)\n    ) {\n      return (response as { versions: AssistantVersion[] }).versions;\n    }\n    if (response && \"items\" in response && Array.isArray((response as { items: unknown }).items)) {\n      return (response as { items: AssistantVersion[] }).items;\n    }\n    return [];\n  }\n\n  /**\n   * Get a specific assistant version by number.\n   */\n  async getVersion(assistantId: string, versionNumber: number): Promise<AssistantVersion> {\n    return this.api.get<AssistantVersion>(\n      `/v1/assistants/${assistantId}/versions/${versionNumber}`,\n    );\n  }\n\n  /**\n   * Send a chat request to an assistant.\n   */\n  async chat(\n    assistantId: string,\n    _params: AssistantChatParams,\n    headers?: Record<string, string>,\n  ): Promise<BaseModelResponse> {\n    let zodSchema: z.ZodType | undefined = undefined;\n    let params = { ..._params };\n\n    if (params.output_schema && params.output_schema instanceof z.ZodType) {\n      zodSchema = params.output_schema as z.ZodType;\n      // Convert Zod schema to JSON schema\n      params.output_schema = z.toJSONSchema(zodSchema);\n    }\n\n    params = AssistantChatParamsSchema.parse(params);\n\n    const response = await this.api.post<BaseModelApiResponse>(\n      `/v1/assistants/${assistantId}/model`,\n      params,\n      {\n        responseType: params.stream ? \"stream\" : undefined,\n      },\n      headers,\n    );\n\n    const mapped = AssistantMapper.mapBaseModelApiResponse(response);\n\n    if (!params.stream && zodSchema && mapped.generated) {\n      mapped.generated = zodSchema.parse(mapped.generated);\n    }\n\n    return mapped;\n  }\n\n  /**\n   * Send a chat request to an assistant by slug.\n   */\n  async chatBySlug(\n    assistantSlug: string,\n    _params: AssistantChatParams,\n    headers?: Record<string, string>,\n  ): Promise<BaseModelResponse> {\n    let zodSchema: z.ZodType | undefined = undefined;\n    let params = { ..._params };\n\n    if (params.output_schema && params.output_schema instanceof z.ZodType) {\n      zodSchema = params.output_schema as z.ZodType;\n      params.output_schema = z.toJSONSchema(zodSchema);\n    }\n\n    params = AssistantChatParamsSchema.parse(params);\n\n    const response = await this.api.post<BaseModelApiResponse>(\n      `/v1/assistants/slug/${assistantSlug}/model`,\n      params,\n      {\n        responseType: params.stream ? \"stream\" : undefined,\n      },\n      headers,\n    );\n    const mapped = AssistantMapper.mapBaseModelApiResponse(response);\n\n    if (!params.stream && zodSchema && mapped.generated) {\n      mapped.generated = zodSchema.parse(mapped.generated);\n    }\n\n    return mapped;\n  }\n\n  /**\n   * Run inference using an inline (virtual) assistant definition.\n   * No database assistant record is required. History is never persisted.\n   */\n  async askVirtual(\n    _params: VirtualAssistantChatParams,\n    headers?: Record<string, string>,\n  ): Promise<BaseModelResponse> {\n    let zodSchema: z.ZodType | undefined = undefined;\n    let params = { ..._params };\n\n    if (params.output_schema && params.output_schema instanceof z.ZodType) {\n      zodSchema = params.output_schema as z.ZodType;\n      params.output_schema = z.toJSONSchema(zodSchema);\n    }\n\n    params = VirtualAssistantChatParamsSchema.parse(params);\n\n    const response = await this.api.post<BaseModelApiResponse>(\n      \"/v1/assistants/virtual/model\",\n      params,\n      {\n        responseType: params.stream ? \"stream\" : undefined,\n      },\n      headers,\n    );\n\n    const mapped = AssistantMapper.mapBaseModelApiResponse(response);\n\n    if (!params.stream && zodSchema && mapped.generated) {\n      mapped.generated = zodSchema.parse(mapped.generated);\n    }\n\n    return mapped;\n  }\n\n  /**\n   * Compare two assistant versions.\n   */\n  async compareVersions(\n    assistantId: string,\n    v1: number,\n    v2: number,\n  ): Promise<Record<string, unknown>> {\n    return this.api.get<Record<string, unknown>>(\n      `/v1/assistants/${assistantId}/versions/${v1}/compare/${v2}`,\n    );\n  }\n\n  /**\n   * Rollback assistant to a specific version. Creates a new version mirroring the target.\n   */\n  async rollbackToVersion(assistantId: string, versionNumber: number): Promise<AnyJson> {\n    return this.api.post<AnyJson>(\n      `/v1/assistants/${assistantId}/versions/${versionNumber}/rollback`,\n      {},\n    );\n  }\n\n  /**\n   * Send a chat request to a specific assistant version.\n   */\n  async chatWithVersion(\n    assistantId: string,\n    versionNumber: number,\n    _params: AssistantChatParams,\n  ): Promise<BaseModelResponse> {\n    let zodSchema: z.ZodType | undefined = undefined;\n    let params = { ..._params };\n\n    if (params.output_schema && params.output_schema instanceof z.ZodType) {\n      zodSchema = params.output_schema as z.ZodType;\n      params.output_schema = z.toJSONSchema(zodSchema);\n    }\n\n    params = AssistantChatParamsSchema.parse(params);\n\n    // Use stable chat endpoint and pass version in body for broader backend compatibility\n    const response = await this.api.post<BaseModelApiResponse>(\n      `/v1/assistants/${assistantId}/model`,\n      { ...params, version: versionNumber },\n      {\n        responseType: params.stream ? \"stream\" : undefined,\n      },\n    );\n\n    const mapped = AssistantMapper.mapBaseModelApiResponse(response);\n\n    if (!params.stream && zodSchema && mapped.generated) {\n      mapped.generated = zodSchema.parse(mapped.generated);\n    }\n\n    return mapped;\n  }\n\n  /**\n   * Evaluate an assistant with a dataset.\n   */\n  async evaluate(assistantId: string, _params: AssistantEvaluationParams): Promise<AnyJson> {\n    const params = AssistantEvaluationParamsSchema.parse(_params);\n    return this.api.post(`/v1/assistants/${assistantId}/evaluate`, params);\n  }\n}\n","import { z } from \"zod\";\n\nexport const AssistantListParamsSchema = z\n  .object({\n    minimal_response: z.boolean().default(true),\n    scope: z.enum([\"visible_to_user\", \"marketplace\"]).default(\"visible_to_user\"),\n    page: z.number().default(0),\n    per_page: z.number().default(12),\n    filters: z.record(z.string(), z.unknown()).optional(),\n  })\n  .readonly();\nexport type AssistantListParams = Partial<z.infer<typeof AssistantListParamsSchema>>;\n\nconst PromptVariableSchema = z.object({\n  key: z.string(),\n  description: z.string().optional(),\n  default_value: z.string(),\n});\n\nconst MCPServerConfigObjectSchema = z.object({\n  url: z.string().optional(),\n  command: z.string().optional(),\n  args: z.array(z.string()).optional(),\n  env: z.record(z.string(), z.unknown()).optional(),\n  auth_token: z.string().optional(),\n  headers: z.record(z.string(), z.string()).optional(),\n  type: z.string().optional(),\n  single_usage: z.boolean().optional(),\n  audience: z.string().optional(),\n});\n\nexport const MCPServerConfigSchema = MCPServerConfigObjectSchema.optional().refine((config) => {\n  if (!config) {\n    return true;\n  }\n  const hasUrl = !!config.url;\n  const hasCommand = !!config.command;\n  return hasUrl !== hasCommand;\n}, \"Either 'url' or 'command' must be provided in config, but not both\");\n\nexport const AssistantCreateParamsSchema = z\n  .object({\n    name: z.string(),\n    description: z.string(),\n    icon_url: z.string().optional(),\n    system_prompt: z.string(),\n    project: z.string(),\n    context: z.array(\n      z.object({\n        context_type: z.enum([\"knowledge_base\", \"code\"]),\n        name: z.string(),\n      }),\n    ),\n    llm_model_type: z.string(),\n    toolkits: z.array(\n      z.object({\n        toolkit: z.string(),\n        tools: z.array(\n          z.object({\n            name: z.string(),\n            label: z.string().optional(),\n            settings_config: z.boolean(),\n            user_description: z.string().optional(),\n            settings: z.any().nullable().optional(),\n          }),\n        ),\n        label: z.string(),\n        settings_config: z.boolean(),\n        is_external: z.boolean(),\n        settings: z.any().optional(),\n      }),\n    ),\n    conversation_starters: z.array(z.string()),\n    shared: z.boolean().optional(),\n    is_react: z.boolean().optional(),\n    is_global: z.boolean().optional(),\n    slug: z.string().optional(),\n    temperature: z.number().optional(),\n    top_p: z.number().optional(),\n    mcp_servers: z.array(\n      z.object({\n        name: z.string(),\n        description: z.string().optional(),\n        enabled: z.boolean(),\n        config: MCPServerConfigSchema,\n        mcp_connect_url: z.string().optional(),\n        tools_tokens_size_limit: z.number().optional(),\n        command: z.string().optional(),\n        arguments: z.string().optional(),\n        settings: z.any().optional(),\n        mcp_connect_auth_token: z.any().optional(),\n      }),\n    ),\n    assistant_ids: z.array(z.string()),\n    skill_ids: z.array(z.string()).optional(),\n    prompt_variables: z.array(PromptVariableSchema).optional().default([]),\n    categories: z.array(z.string()).max(3).optional(),\n    skip_integration_validation: z.boolean().optional().default(false),\n  })\n  .readonly();\n// In order to make sure that default values are applied correctly, we use z.input here\n// instead of z.infer which would give us the type after defaults are applied.\nexport type AssistantCreateParams = z.input<typeof AssistantCreateParamsSchema>;\n\nexport const AssistantUpdateParamsSchema = AssistantCreateParamsSchema;\nexport type AssistantUpdateParams = z.input<typeof AssistantUpdateParamsSchema>;\n\nexport const AssistantChatParamsSchema = z\n  .object({\n    conversation_id: z.string().optional(),\n    text: z.string(),\n    content_raw: z.string().optional(),\n    file_names: z.array(z.string()).optional(),\n    llm_model: z.string().optional(),\n    history: z.union([\n      z.array(\n        z.object({\n          role: z.enum([\"Assistant\", \"User\"]),\n          message: z.string().optional(),\n        }),\n      ),\n      z.string(),\n    ]),\n    history_index: z.number().optional(),\n    stream: z.boolean().optional(),\n    propagate_headers: z.boolean().optional(),\n    custom_metadata: z.record(z.string(), z.unknown()).optional(),\n    top_k: z.number().optional(),\n    system_prompt: z.string().optional(),\n    background_task: z.boolean().optional(),\n    metadata: z.record(z.string(), z.unknown()).optional(),\n    mcp_server_single_usage: z.boolean().optional(),\n    save_history: z.boolean().optional(),\n\n    version: z.number().optional(),\n    output_schema: z\n      .union([z.custom((val) => val instanceof z.ZodType), z.record(z.string(), z.unknown())])\n      .optional(),\n  })\n  .readonly();\nexport type AssistantChatParams = z.infer<typeof AssistantChatParamsSchema>;\n\nconst VirtualAssistantContextSchema = z.object({\n  context_type: z.enum([\"knowledge_base\", \"code\"]),\n  name: z.string(),\n});\n\nconst VirtualAssistantToolSchema = z.object({\n  name: z.string(),\n  label: z.string().nullable().optional(),\n  settings_config: z.boolean(),\n  user_description: z.string().nullable().optional(),\n  settings: z.any().nullable().optional(),\n});\n\nconst VirtualAssistantToolKitSchema = z.object({\n  toolkit: z.string(),\n  tools: z.array(VirtualAssistantToolSchema),\n  label: z.string(),\n  settings_config: z.boolean(),\n  is_external: z.boolean().nullable().optional(),\n  settings: z.any().optional(),\n});\n\nconst VirtualAssistantMCPServerConfigSchema = z.object({\n  command: z.string().nullable().optional(),\n  url: z.string().nullable().optional(),\n  args: z.array(z.string()).nullable().optional(),\n  env: z.record(z.string(), z.unknown()).nullable().optional(),\n  auth_token: z.string().nullable().optional(),\n  headers: z.record(z.string(), z.string()).nullable().optional(),\n  type: z.string().nullable().optional(),\n  single_usage: z.boolean().nullable().optional(),\n  audience: z.string().nullable().optional(),\n  auth_config: z.record(z.string(), z.unknown()).nullable().optional(),\n  tools: z.array(z.string()).nullable().optional(),\n});\n\nconst VirtualAssistantMCPServerSchema = z.object({\n  name: z.string(),\n  description: z.string().nullable().optional(),\n  enabled: z.boolean(),\n  config: VirtualAssistantMCPServerConfigSchema.optional(),\n  mcp_connect_url: z.string().nullable().optional(),\n  tools_tokens_size_limit: z.number().nullable().optional(),\n  command: z.string().nullable().optional(),\n  arguments: z.string().nullable().optional(),\n  settings: z.any().optional(),\n  mcp_connect_auth_token: z.any().optional(),\n});\n\nexport const VirtualAssistantChatParamsSchema = z\n  .object({\n    // Assistant definition fields\n    system_prompt: z.string().default(\"\"),\n    llm_model_type: z.string().optional(),\n    temperature: z.number().min(0).max(2).optional(),\n    top_p: z.number().min(0).max(1).optional(),\n    toolkits: z.array(VirtualAssistantToolKitSchema).default([]),\n    context: z.array(VirtualAssistantContextSchema).default([]),\n    mcp_servers: z.array(VirtualAssistantMCPServerSchema).default([]),\n    skill_ids: z.array(z.string()).default([]),\n    assistant_ids: z.array(z.string()).default([]),\n    agent_mode: z.enum([\"general\", \"plan_execute\"]).default(\"general\"),\n    plan_prompt: z.string().optional(),\n    smart_tool_selection_enabled: z.boolean().default(false),\n    prompt_variables: z.array(PromptVariableSchema).default([]),\n\n    // Chat parameters\n    conversation_id: z.string().optional(),\n    text: z.string(),\n    content_raw: z.string().optional(),\n    file_names: z.array(z.string()).optional(),\n    history: z\n      .union([\n        z.array(\n          z.object({\n            role: z.enum([\"Assistant\", \"User\"]),\n            message: z.string().optional(),\n          }),\n        ),\n        z.string(),\n      ])\n      .default([]),\n    stream: z.boolean().optional(),\n    output_schema: z\n      .union([z.custom((val) => val instanceof z.ZodType), z.record(z.string(), z.unknown())])\n      .optional(),\n    tools_config: z\n      .array(\n        z.object({\n          name: z.string(),\n          tool_creds: z.record(z.string(), z.unknown()).optional(),\n          integration_id: z.string().optional(),\n        }),\n      )\n      .optional(),\n    metadata: z.record(z.string(), z.unknown()).optional(),\n    top_k: z.number().default(10),\n    propagate_headers: z.boolean().default(false),\n    disable_cache: z.boolean().optional(),\n    mcp_server_single_usage: z.boolean().optional(),\n  })\n  .readonly();\nexport type VirtualAssistantChatParams = z.input<typeof VirtualAssistantChatParamsSchema>;\n\nexport const AssistantEvaluationParamsSchema = z\n  .object({\n    dataset_id: z.string(),\n    experiment_name: z.string(),\n    system_prompt: z.string().optional(),\n    llm_model: z.string().optional(),\n  })\n  .readonly();\nexport type AssistantEvaluationParams = z.infer<typeof AssistantEvaluationParamsSchema>;\n\nexport const AssistantVersionsListParamsSchema = z\n  .object({\n    page: z.number().optional(),\n    per_page: z.number().optional(),\n  })\n  .readonly();\nexport type AssistantVersionsListParams = Partial<\n  z.infer<typeof AssistantVersionsListParamsSchema>\n>;\n","import { z } from \"zod\";\n\nexport const ConversationCreateParamsSchema = z\n  .object({\n    initial_assistant_id: z.string().optional(),\n    folder: z.string().optional(),\n    mcp_server_single_usage: z.boolean().optional().default(false),\n  })\n  .readonly();\n\nexport type ConversationCreateParams = z.input<typeof ConversationCreateParamsSchema>;\n","import type { Conversation, ConversationDetails } from \"../models/conversation\";\nimport type { AnyJson, AuthConfig } from \"../models/common\";\nimport {\n  ConversationCreateParamsSchema,\n  type ConversationCreateParams,\n} from \"../schemas/conversation\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class ConversationService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get list of all conversations for the current user.\n   */\n  async list(): Promise<Conversation[]> {\n    return this.api.get<Conversation[]>(\"/v1/conversations\");\n  }\n\n  /**\n   * Get list of all conversations for the current user that include the specified assistant.\n   */\n  async listByAssistantId(assistantId: string): Promise<Conversation[]> {\n    const conversations = await this.list();\n    return conversations.filter((conv) => conv.assistant_ids.includes(assistantId));\n  }\n\n  /**\n   * Get details for a specific conversation by its ID.\n   */\n  async get(conversationId: string): Promise<ConversationDetails> {\n    return this.api.get<ConversationDetails>(`/v1/conversations/${conversationId}`);\n  }\n\n  /**\n   * Create a new conversation.\n   */\n  async create(_params: ConversationCreateParams = {}): Promise<AnyJson> {\n    const params = ConversationCreateParamsSchema.parse(_params);\n    return this.api.post(\"/v1/conversations\", params);\n  }\n\n  /**\n   * Delete a specific conversation by its ID.\n   */\n  async delete(conversationId: string): Promise<AnyJson> {\n    return this.api.delete(`/v1/conversations/${conversationId}`);\n  }\n}\n","import FormData from \"form-data\";\nimport { DatasourceMapper } from \"../mappers/datasource.mapper\";\nimport type { AnyJson, PaginatedResponse, AuthConfig } from \"../models/common\";\nimport type {\n  DataSource,\n  DataSourceCreateParams,\n  DataSourceListParams,\n  DataSourceResponse,\n  DataSourceTypeType,\n  DataSourceUpdateParams,\n  ElasticsearchStats,\n  FileDataSourceCreateParams,\n  ProviderDataSourceRequest,\n} from \"../models/datasource\";\nimport { DataSourceType } from \"../models/datasource\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nconst DATA_SOURCE_TO_PATH_PARAM: Record<string, string> = {\n  [DataSourceType.CODE]: \"CODE\",\n  [DataSourceType.CONFLUENCE]: \"CONFLUENCE\",\n  [DataSourceType.JIRA]: \"JIRA\",\n  [DataSourceType.FILE]: \"FILE\",\n  [DataSourceType.GOOGLE]: \"GOOGLE\",\n  [DataSourceType.PROVIDER]: \"PROVIDER\",\n  [DataSourceType.SUMMARY]: \"SUMMARY\",\n  [DataSourceType.CHUNK_SUMMARY]: \"CHUNK_SUMMARY\",\n  [DataSourceType.JSON]: \"JSON\",\n  [DataSourceType.BEDROCK]: \"BEDROCK\",\n  [DataSourceType.XRAY]: \"XRAY\",\n  [DataSourceType.PLATFORM]: \"PLATFORM_MARKETPLACE_ASSISTANT\",\n  [DataSourceType.AZURE_DEVOPS_WIKI]: \"AZURE_DEVOPS_WIKI\",\n  [DataSourceType.AZURE_DEVOPS_WORK_ITEM]: \"AZURE_DEVOPS_WORK_ITEM\",\n  [DataSourceType.SHAREPOINT]: \"SHAREPOINT\",\n};\n\nexport class DatasourceService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Create a new datasource.\n   */\n  async create(params: DataSourceCreateParams): Promise<AnyJson> {\n    const dto = DatasourceMapper.mapDatasourceCreateToDto(params);\n\n    if (dto.type === DataSourceType.FILE) {\n      return this.createFileDatasource(dto as unknown as FileDataSourceCreateParams);\n    }\n\n    return this.api.post(this.getCreateDatasourceUrl(dto.type, dto.project_name), dto);\n  }\n\n  /**\n   * Create a file datasource.\n   */\n  private async createFileDatasource({\n    files,\n    ...datasource\n  }: FileDataSourceCreateParams): Promise<AnyJson> {\n    const formData = new FormData();\n\n    for (const file of files) {\n      formData.append(\"files\", Buffer.from(file.content), {\n        filename: file.name,\n        contentType: file.mime_type,\n      });\n    }\n\n    return this.api.postMultipart(\n      this.getCreateDatasourceUrl(datasource.type, datasource.project_name),\n      formData,\n      datasource,\n    );\n  }\n\n  /**\n   * Update an existing datasource.\n   */\n  async update(params: DataSourceUpdateParams): Promise<AnyJson> {\n    this.validateUpdateReindexParams(params);\n\n    const { full_reindex, skip_reindex, resume_indexing, incremental_reindex, ...data } = params;\n\n    const endpoint =\n      params.type === DataSourceType.CODE\n        ? `/v1/application/${params.project_name}/index/${params.name}`\n        : `/v1/index/knowledge_base/${this.getKnowledgeBaseParam(params.type)}`;\n\n    // Extract reindex params\n    const queryParams = {\n      full_reindex,\n      skip_reindex,\n      resume_indexing,\n      incremental_reindex,\n    };\n\n    const { type, ...dto } = DatasourceMapper.mapDatasourceUpdateToDto(data);\n\n    return this.api.put(endpoint, dto, { params: queryParams });\n  }\n\n  /**\n   * List datasources with pagination and filtering support.\n   */\n  async list(params: DataSourceListParams = {}): Promise<DataSource[]> {\n    const queryParams: Record<string, number | string> = {\n      page: params.page || 0,\n      per_page: params.per_page || 10,\n      sort_key: params.sort_key || \"update_date\",\n      sort_order: params.sort_order || \"desc\",\n    };\n\n    if (params.datasource_types || params.projects || params.status || params.owner || params.search) {\n      const filters: Record<string, number | string | string[]> = {};\n      if (params.datasource_types) filters.index_type = params.datasource_types;\n      if (params.projects) filters.project = params.projects;\n      if (params.status) filters.status = params.status;\n      if (params.owner) filters.created_by = params.owner;\n      if (params.search) filters.name = params.search;\n      queryParams.filters = JSON.stringify(filters);\n    }\n\n    const response = await this.api.get<PaginatedResponse<DataSourceResponse>>(\n      \"/v1/index\",\n      queryParams,\n    );\n\n    const items = Array.isArray(response?.data) ? response.data : [];\n    return items.map(DatasourceMapper.mapDatasourceResponse);\n  }\n\n  /**\n   * Get datasource by ID.\n   */\n  async get(datasourceId: string): Promise<DataSource> {\n    const response = await this.api.get<DataSourceResponse>(`/v1/index/${datasourceId}`);\n    return DatasourceMapper.mapDatasourceResponse(response);\n  }\n\n  /**\n   * Delete a datasource by ID.\n   */\n  async delete(datasourceId: string): Promise<AnyJson> {\n    return this.api.delete(`/v1/index/${datasourceId}`);\n  }\n\n  /**\n   * Get all assistants that use a specific datasource.\n   */\n  async getAssistantsUsingDatasource(datasourceId: string): Promise<AnyJson[]> {\n    return this.api.get<AnyJson[]>(`/v1/index/${datasourceId}/assistants`);\n  }\n\n  /**\n   * Create a provider datasource (CodeAnalysis or CodeExploration).\n   */\n  async createProvider(\n    toolkitId: string,\n    providerName: string,\n    params: ProviderDataSourceRequest,\n  ): Promise<AnyJson> {\n    const { shared_with_project, ...rest } = params as typeof params & { shared_with_project?: boolean };\n    return this.api.post(\n      \"/v1/index/provider\",\n      { ...rest, project_space_visible: shared_with_project ?? false },\n      { params: { toolkit_id: toolkitId, provider_name: providerName } },\n    );\n  }\n\n  /**\n   * Get Elasticsearch index statistics for a datasource.\n   */\n  async getElasticsearchStats(datasourceId: string): Promise<ElasticsearchStats> {\n    return this.api.get<ElasticsearchStats>(`/v1/index/${datasourceId}/elasticsearch`);\n  }\n\n  private getCreateDatasourceUrl(type: DataSourceTypeType, projectName: string): string {\n    if (type === DataSourceType.CODE) {\n      return `/v1/application/${projectName}/index`;\n    }\n    return `/v1/index/knowledge_base/${this.getKnowledgeBaseParam(type)}`;\n  }\n\n  private getKnowledgeBaseParam(type: DataSourceTypeType): string {\n    return DATA_SOURCE_TO_PATH_PARAM[type].toLowerCase();\n  }\n\n  /**\n   * Validates update parameters for reindexing.\n   * @throws {Error} If the update parameters are invalid for the given datasource type.\n   */\n  private validateUpdateReindexParams(updateParams: DataSourceUpdateParams): void {\n    if (updateParams.type === DataSourceType.CONFLUENCE && updateParams.incremental_reindex) {\n      throw new Error(\"Confluence data sources only support full_reindex and resume_indexing\");\n    }\n    if (updateParams.type === DataSourceType.JIRA && updateParams.resume_indexing) {\n      throw new Error(\"Jira data sources only support full_reindex and incremental_reindex\");\n    }\n    if (updateParams.type === DataSourceType.CODE && updateParams.incremental_reindex) {\n      throw new Error(\"Code data sources do not support incremental_reindex\");\n    }\n    if (updateParams.type === DataSourceType.GOOGLE && updateParams.incremental_reindex) {\n      throw new Error(\"Google data sources only support full_reindex\");\n    }\n    if (\n      updateParams.type === DataSourceType.SHAREPOINT &&\n      (updateParams.incremental_reindex || updateParams.resume_indexing)\n    ) {\n      throw new Error(\"SharePoint data sources only support full_reindex\");\n    }\n  }\n}\n","/** Models for datasource service. */\nimport type { BaseUser, SortOrder, TokensUsage } from \"./common\";\n\n/** Code datasource type options */\nexport const CodeDataSourceType = {\n  CODE: \"code\",\n  SUMMARY: \"summary\",\n  CHUNK_SUMMARY: \"chunk-summary\",\n} as const;\nexport type CodeDataSourceTypeType = (typeof CodeDataSourceType)[keyof typeof CodeDataSourceType];\n\n/** Datasource type options */\nexport const DataSourceType = {\n  CODE: \"code\",\n  CONFLUENCE: \"knowledge_base_confluence\",\n  JIRA: \"knowledge_base_jira\",\n  FILE: \"knowledge_base_file\",\n  GOOGLE: \"llm_routing_google\",\n  PROVIDER: \"provider\",\n  SUMMARY: \"summary\",\n  CHUNK_SUMMARY: \"chunk-summary\",\n  JSON: \"knowledge_base_json\",\n  BEDROCK: \"knowledge_base_bedrock\",\n  XRAY: \"knowledge_base_xray\",\n  PLATFORM: \"platform_marketplace_assistant\",\n  AZURE_DEVOPS_WIKI: \"knowledge_base_azure_devops_wiki\",\n  AZURE_DEVOPS_WORK_ITEM: \"knowledge_base_azure_devops_work_item\",\n  SHAREPOINT: \"knowledge_base_sharepoint\",\n} as const;\nexport type DataSourceTypeType = (typeof DataSourceType)[keyof typeof DataSourceType];\n\n/** Datasource status options */\nexport const DataSourceStatus = {\n  COMPLETED: \"completed\",\n  FAILED: \"failed\",\n  FETCHING: \"fetching\",\n  IN_PROGRESS: \"in_progress\",\n} as const;\nexport type DataSourceStatusType = (typeof DataSourceStatus)[keyof typeof DataSourceStatus];\n\n/** Base file model for file datasources */\nexport type File = Readonly<{\n  /** File name */\n  name: string;\n  /** File content */\n  content: string | Buffer<ArrayBuffer>;\n  /** MIME type of the file */\n  mime_type: string;\n}>;\n\n/** Confluence-specific configuration */\nexport interface Confluence {\n  cql: string;\n  include_restricted_content?: boolean;\n  include_archived_content?: boolean;\n  include_attachments?: boolean;\n  include_comments?: boolean;\n  keep_markdown_format?: boolean;\n  keep_newlines?: boolean;\n  max_pages?: number;\n  pages_per_request?: number;\n}\n\n/** Jira-specific configuration */\nexport interface Jira {\n  jql: string;\n}\n\n/** Google-specific configuration */\nexport interface Google {\n  googleDoc: string;\n}\n\n/** File-specific configuration */\nexport interface Files {\n  files: File[];\n}\n\n/** Code repository configuration */\nexport interface Code {\n  branch: string;\n  docsGeneration?: boolean;\n  embeddingsModel?: string;\n  filesFilter?: string;\n  indexType: CodeDataSourceTypeType;\n  link: string;\n  projectSpaceVisible?: boolean;\n  prompt?: string;\n  settingId: string;\n  summarizationModel?: string;\n}\n\n/** Azure DevOps Wiki-specific configuration */\nexport interface AzureDevOpsWiki {\n  wiki_query?: string;\n  organization?: string;\n  project?: string;\n  wiki_name?: string;\n}\n\n/** Azure DevOps Work Item-specific configuration */\nexport interface AzureDevOpsWorkItem {\n  wiql_query?: string;\n  organization?: string;\n  project?: string;\n}\n\n/** SharePoint authentication type */\nexport type SharePointAuthType = \"integration\" | \"oauth_codemie\" | \"oauth_custom\";\n\n/** SharePoint-specific configuration (used in responses) */\nexport interface SharePoint {\n  site_url: string;\n  include_pages?: boolean;\n  include_documents?: boolean;\n  include_lists?: boolean;\n  max_file_size_mb?: number;\n  files_filter?: string;\n  auth_type?: SharePointAuthType;\n  oauth_client_id?: string;\n  oauth_tenant_id?: string;\n}\n\n/** SharePoint-specific create/update parameters */\nexport interface BaseSharePointParams {\n  /** SharePoint site URL (must start with https://) */\n  site_url: string;\n  /** Index SharePoint site pages */\n  include_pages?: boolean;\n  /** Index document libraries */\n  include_documents?: boolean;\n  /** Index list items */\n  include_lists?: boolean;\n  /** Maximum file size in MB to index (1–500, default 50) */\n  max_file_size_mb?: number;\n  /** Gitignore-style file/path filter */\n  files_filter?: string;\n  /** Authentication method */\n  auth_type?: SharePointAuthType;\n  /** OAuth access token (required for oauth_codemie and oauth_custom) */\n  access_token?: string;\n  /** Azure app client ID (oauth_custom only) */\n  oauth_client_id?: string;\n  /** Azure AD tenant ID (oauth_custom only) */\n  oauth_tenant_id?: string;\n  /** Override default embedding model */\n  embedding_model?: string;\n  /** Cron expression for scheduled reindexing */\n  cron_expression?: string;\n}\n\n/** Elasticsearch statistics response */\nexport interface ElasticsearchStats {\n  index_name: string;\n  size_in_bytes: number;\n}\n\n/** Code Analysis provider datasource creation parameters */\nexport interface CodeAnalysisProviderCreateParams {\n  name: string;\n  description: string;\n  project_name: string;\n  shared_with_project?: boolean;\n  branch: string;\n  api_url: string;\n  access_token: string;\n  analyzer: string;\n  datasource_root: string;\n}\n\n/** Code Exploration provider datasource creation parameters */\nexport interface CodeExplorationProviderCreateParams {\n  name: string;\n  description: string;\n  project_name: string;\n  shared_with_project?: boolean;\n  code_analysis_datasource_ids: string[];\n}\n\n/** Provider datasource creation parameters */\nexport type ProviderDataSourceRequest =\n  | CodeAnalysisProviderCreateParams\n  | CodeExplorationProviderCreateParams;\n\n/** Base data source DTO */\nexport interface BaseDataSourceCreateDto {\n  name: string;\n  project_name: string;\n  description: string;\n  project_space_visible: boolean;\n  setting_id: string | null;\n  type: DataSourceTypeType;\n}\n\nexport interface ConfluenceDataSourceCreateDto extends BaseDataSourceCreateDto, Confluence {\n  type: typeof DataSourceType.CONFLUENCE;\n}\nexport interface JiraDataSourceCreateDto extends BaseDataSourceCreateDto, Jira {\n  type: typeof DataSourceType.JIRA;\n}\nexport interface GoogleDataSourceCreateDto extends BaseDataSourceCreateDto, Google {\n  type: typeof DataSourceType.GOOGLE;\n}\nexport interface FileDataSourceCreateDto extends BaseDataSourceCreateDto, Files {\n  type: typeof DataSourceType.FILE;\n}\nexport interface CodeDataSourceCreateDto\n  // override to comply with keys in json\n  extends Omit<BaseDataSourceCreateDto, \"setting_id\" | \"project_space_visible\">,\n    Code {\n  type: typeof DataSourceType.CODE;\n}\nexport interface AzureDevOpsWikiDataSourceCreateDto extends BaseDataSourceCreateDto, AzureDevOpsWiki {\n  type: typeof DataSourceType.AZURE_DEVOPS_WIKI;\n}\nexport interface AzureDevOpsWorkItemDataSourceCreateDto\n  extends BaseDataSourceCreateDto,\n    AzureDevOpsWorkItem {\n  type: typeof DataSourceType.AZURE_DEVOPS_WORK_ITEM;\n}\nexport interface XrayDataSourceCreateDto extends BaseDataSourceCreateDto, Jira {\n  type: typeof DataSourceType.XRAY;\n}\nexport interface SharePointDataSourceCreateDto extends BaseDataSourceCreateDto, BaseSharePointParams {\n  type: typeof DataSourceType.SHAREPOINT;\n}\n\nexport type DataSourceCreateDto =\n  | ConfluenceDataSourceCreateDto\n  | JiraDataSourceCreateDto\n  | GoogleDataSourceCreateDto\n  | FileDataSourceCreateDto\n  | CodeDataSourceCreateDto\n  | AzureDevOpsWikiDataSourceCreateDto\n  | AzureDevOpsWorkItemDataSourceCreateDto\n  | XrayDataSourceCreateDto\n  | SharePointDataSourceCreateDto\n  | BaseDataSourceCreateDto;\n\n/** Base data source update DTO */\nexport interface BaseDataSourceUpdateDto {\n  name: string;\n  project_name: string;\n  description?: string;\n  project_space_visible?: boolean;\n  setting_id?: string | null;\n  type: DataSourceTypeType;\n  full_reindex?: boolean;\n  skip_reindex?: boolean;\n  resume_indexing?: boolean;\n  incremental_reindex?: boolean;\n}\n\nexport interface ConfluenceDataSourceUpdateDto\n  extends BaseDataSourceUpdateDto,\n    Partial<Confluence> {\n  type: typeof DataSourceType.CONFLUENCE;\n}\nexport interface JiraDataSourceUpdateDto extends BaseDataSourceUpdateDto, Partial<Jira> {\n  type: typeof DataSourceType.JIRA;\n}\nexport interface GoogleDataSourceUpdateDto extends BaseDataSourceUpdateDto, Partial<Google> {\n  type: typeof DataSourceType.GOOGLE;\n}\nexport interface FileDataSourceUpdateDto extends BaseDataSourceUpdateDto, Partial<Files> {\n  type: typeof DataSourceType.FILE;\n}\nexport interface CodeDataSourceUpdateDto\n  extends Omit<BaseDataSourceUpdateDto, \"setting_id\" | \"project_space_visible\">,\n    Partial<Code> {\n  type: typeof DataSourceType.CODE;\n}\nexport interface AzureDevOpsWikiDataSourceUpdateDto\n  extends BaseDataSourceUpdateDto,\n    Partial<AzureDevOpsWiki> {\n  type: typeof DataSourceType.AZURE_DEVOPS_WIKI;\n}\nexport interface AzureDevOpsWorkItemDataSourceUpdateDto\n  extends BaseDataSourceUpdateDto,\n    Partial<AzureDevOpsWorkItem> {\n  type: typeof DataSourceType.AZURE_DEVOPS_WORK_ITEM;\n}\nexport interface XrayDataSourceUpdateDto extends BaseDataSourceUpdateDto, Partial<Jira> {\n  type: typeof DataSourceType.XRAY;\n}\nexport interface SharePointDataSourceUpdateDto\n  extends BaseDataSourceUpdateDto,\n    Partial<BaseSharePointParams> {\n  type: typeof DataSourceType.SHAREPOINT;\n}\n\nexport type DataSourceUpdateDto =\n  | ConfluenceDataSourceUpdateDto\n  | JiraDataSourceUpdateDto\n  | GoogleDataSourceUpdateDto\n  | FileDataSourceUpdateDto\n  | CodeDataSourceUpdateDto\n  | AzureDevOpsWikiDataSourceUpdateDto\n  | AzureDevOpsWorkItemDataSourceUpdateDto\n  | XrayDataSourceUpdateDto\n  | SharePointDataSourceUpdateDto\n  | BaseDataSourceUpdateDto;\n\n/** Processing information for datasource */\nexport interface DataSourceProcessingInfoResponse {\n  /** Total number of documents processed */\n  total_documents?: number;\n  /** Number of documents skipped */\n  skipped_documents?: number;\n  /** Total size in kilobytes */\n  total_size_kb?: number;\n  /** Average file size in bytes */\n  average_file_size_bytes?: number;\n  /** List of unique file extensions */\n  unique_extensions?: string[];\n  /** Filtered documents count or list */\n  filtered_documents?: number | string[];\n  /** Number of processed documents */\n  documents_count_key?: number;\n}\n\n/** Processing information for datasource */\nexport interface DataSourceProcessingInfo {\n  /** Total number of documents processed */\n  total_documents_count?: number;\n  /** Number of documents skipped */\n  skipped_documents_count?: number;\n  /** Total size in kilobytes */\n  total_size_kb?: number;\n  /** Average file size in bytes */\n  average_file_size_bytes?: number;\n  /** List of unique file extensions */\n  unique_extensions?: string[];\n  /** Filtered documents count or list */\n  filtered_documents?: number | string[];\n  /** Number of processed documents */\n  processed_documents_count?: number;\n}\n\nexport type DataSourceResponse = BaseDataSourceResponse | CodeDataSourceResponse;\n\n/** Datasource response interface */\nexport interface BaseDataSourceResponse {\n  /** Unique identifier */\n  id: string;\n  /** Project name */\n  project_name: string;\n  /** Datasource name */\n  repo_name: string;\n  /** Description */\n  description?: string;\n  /** Type of datasource */\n  index_type: DataSourceTypeType;\n  /** Embeddings model used */\n  embeddings_model?: string;\n  /** Whether datasource has an error */\n  error?: boolean;\n  /** Whether datasource indexing is complete */\n  completed?: boolean;\n  /** Whether datasource is currently fetching */\n  is_fetching?: boolean;\n  /** Whether datasource is queued */\n  is_queued?: boolean;\n  /** Setting ID reference */\n  setting_id?: string;\n  /** Creation date */\n  date: string;\n  /** Creator information */\n  created_by: BaseUser;\n  /** Whether shared with project */\n  project_space_visible: boolean;\n  /** Last update date */\n  update_date: string;\n  /** Error message if failed */\n  text?: string;\n  /** User abilities list */\n  user_abilities: string[];\n  /** Processing information */\n  processing_info?: DataSourceProcessingInfoResponse;\n  /** List of processed documents */\n  processed_files?: string[];\n  /** Token usage statistics */\n  tokens_usage?: TokensUsage;\n  /** Jira-specific configuration */\n  jira?: Jira;\n  /** Confluence-specific configuration */\n  confluence?: Confluence;\n  /** Google document link */\n  google_doc_link?: string;\n  /** Azure DevOps Wiki-specific configuration */\n  azure_devops_wiki?: AzureDevOpsWiki;\n  /** Azure DevOps Work Item-specific configuration */\n  azure_devops_work_item?: AzureDevOpsWorkItem;\n  /** SharePoint-specific configuration */\n  sharepoint?: SharePoint;\n}\n\nexport type CodeDataSourceResponse = BaseDataSourceResponse & {\n  /** Repository URL */\n  link: string;\n  /** Branch name */\n  branch: string;\n  /** Type of index to create */\n  index_type: CodeDataSourceTypeType;\n  /** Files filter pattern */\n  files_filter?: string;\n  /** Embeddings model to use */\n  embeddings_model?: string;\n  /** Summarization model to use */\n  summarization_model?: string;\n  /** Custom summarization prompt */\n  prompt?: string;\n  /** Enable documentation generation */\n  docs_generation?: boolean;\n};\n\n/** Datasource model */\nexport interface DataSource {\n  /** Unique identifier */\n  id: string;\n  /** Project name */\n  project_name: string;\n  /** Datasource name */\n  name: string;\n  /** Description */\n  description?: string;\n  /** Type of datasource */\n  type: DataSourceTypeType;\n  /** Embeddings model used */\n  embeddings_model?: string;\n  /** Current status */\n  status: DataSourceStatusType;\n  /** Setting ID reference */\n  setting_id?: string | null;\n  /** Creation date */\n  created_date: string;\n  /** Creator information */\n  created_by: BaseUser;\n  /** Whether shared with project */\n  shared_with_project: boolean;\n  /** Last update date */\n  update_date: string;\n  /** Error message if failed */\n  error_message?: string;\n  /** User abilities list */\n  user_abilities: string[];\n  /** Processing information */\n  processing_info?: DataSourceProcessingInfo;\n  /** List of processed documents */\n  processed_documents?: string[];\n  /** Token usage statistics */\n  tokens_usage?: TokensUsage;\n  /** Code-specific configuration */\n  code?: Partial<Code>;\n  /** Jira-specific configuration */\n  jira?: Jira;\n  /** Confluence-specific configuration */\n  confluence?: Confluence;\n  /** Google document link */\n  google_doc_link?: string;\n  /** Azure DevOps Wiki-specific configuration */\n  azure_devops_wiki?: AzureDevOpsWiki;\n  /** Azure DevOps Work Item-specific configuration */\n  azure_devops_work_item?: AzureDevOpsWorkItem;\n  /** SharePoint-specific configuration */\n  sharepoint?: SharePoint;\n}\n\n/** DataSource fetch parameters */\nexport type DataSourceListParams = {\n  page?: number;\n  per_page?: number;\n  sort_key?: \"date\" | \"update_date\";\n  sort_order?: SortOrder;\n  datasource_types?: DataSourceTypeType[];\n  projects?: string[];\n  owner?: string;\n  status?: DataSourceStatusType;\n  search?: string;\n};\n\n// Datasources create and update parameters\nexport interface BaseConfluenceParams {\n  /** Confluence Query Language string */\n  cql: string;\n  /** Include restricted content */\n  include_restricted_content?: boolean;\n  /** Include archived content */\n  include_archived_content?: boolean;\n  /** Include attachments */\n  include_attachments?: boolean;\n  /** Include comments */\n  include_comments?: boolean;\n  /** Keep markdown format */\n  keep_markdown_format?: boolean;\n  /** Keep newlines */\n  keep_newlines?: boolean;\n  /** Maximum pages to fetch */\n  max_pages?: number;\n  /** Pages per request */\n  pages_per_request?: number;\n}\n\nexport interface BaseJiraParams {\n  /** Jira Query Language string */\n  jql: string;\n}\n\n/** File-specific configuration */\nexport interface BaseFileParams {\n  /** List of files with their content and mime type */\n  files: File[];\n}\n\n/** Google-specific configuration */\nexport interface BaseGoogleParams {\n  /** Google document ID or URL */\n  google_doc: string;\n}\n\n/** Code repository configuration */\nexport interface BaseCodeParams {\n  /** Repository URL */\n  link: string;\n  /** Branch name */\n  branch: string;\n  /** Type of index to create */\n  index_type: CodeDataSourceTypeType;\n  /** Files filter pattern */\n  files_filter?: string;\n  /** Embeddings model to use */\n  embeddings_model?: string;\n  /** Summarization model to use */\n  summarization_model?: string;\n  /** Custom summarization prompt */\n  prompt?: string;\n  /** Enable documentation generation */\n  docs_generation?: boolean;\n}\n\nexport interface BaseDataSourceCreateParams {\n  /** Name of the datasource */\n  name: string;\n  /** Project name */\n  project_name: string;\n  /** Description of the datasource */\n  description: string;\n  /** Whether to share with project */\n  shared_with_project: boolean;\n  /** Setting ID reference */\n  setting_id: string | null;\n  /** Type of datasource */\n  type: DataSourceTypeType;\n}\n\nexport interface ConfluenceDataSourceCreateParams\n  extends BaseDataSourceCreateParams,\n    BaseConfluenceParams {\n  type: typeof DataSourceType.CONFLUENCE;\n}\nexport interface JiraDataSourceCreateParams extends BaseDataSourceCreateParams, BaseJiraParams {\n  type: typeof DataSourceType.JIRA;\n}\nexport interface GoogleDataSourceCreateParams extends BaseDataSourceCreateParams, BaseGoogleParams {\n  type: typeof DataSourceType.GOOGLE;\n}\nexport interface FileDataSourceCreateParams extends BaseDataSourceCreateParams, BaseFileParams {\n  type: typeof DataSourceType.FILE;\n}\nexport interface CodeDataSourceCreateParams extends BaseDataSourceCreateParams, BaseCodeParams {\n  type: typeof DataSourceType.CODE;\n}\nexport interface AzureDevOpsWikiDataSourceCreateParams\n  extends BaseDataSourceCreateParams,\n    AzureDevOpsWiki {\n  type: typeof DataSourceType.AZURE_DEVOPS_WIKI;\n}\nexport interface AzureDevOpsWorkItemDataSourceCreateParams\n  extends BaseDataSourceCreateParams,\n    AzureDevOpsWorkItem {\n  type: typeof DataSourceType.AZURE_DEVOPS_WORK_ITEM;\n}\nexport interface XrayDataSourceCreateParams extends BaseDataSourceCreateParams, BaseJiraParams {\n  type: typeof DataSourceType.XRAY;\n}\nexport interface SharePointDataSourceCreateParams\n  extends BaseDataSourceCreateParams,\n    BaseSharePointParams {\n  type: typeof DataSourceType.SHAREPOINT;\n}\nexport interface OtherDataSourceCreateParams extends BaseDataSourceCreateParams {\n  type:\n    | typeof DataSourceType.PROVIDER\n    | typeof DataSourceType.SUMMARY\n    | typeof DataSourceType.CHUNK_SUMMARY\n    | typeof DataSourceType.JSON\n    | typeof DataSourceType.PLATFORM;\n}\n\n/** DataSource create parameters */\nexport type DataSourceCreateParams =\n  | ConfluenceDataSourceCreateParams\n  | JiraDataSourceCreateParams\n  | GoogleDataSourceCreateParams\n  | FileDataSourceCreateParams\n  | CodeDataSourceCreateParams\n  | AzureDevOpsWikiDataSourceCreateParams\n  | AzureDevOpsWorkItemDataSourceCreateParams\n  | XrayDataSourceCreateParams\n  | SharePointDataSourceCreateParams\n  | OtherDataSourceCreateParams;\n\nexport interface BaseDataSourceUpdateParams {\n  /** Type of datasource */\n  type: DataSourceTypeType;\n  /** Name of the datasource */\n  name: string;\n  /** Project name */\n  project_name: string;\n  /** Description of the datasource */\n  description?: string;\n  /** Whether to share with project */\n  shared_with_project?: boolean;\n  /** Setting ID reference */\n  setting_id?: string | null;\n  /** Perform full reindex */\n  full_reindex?: boolean;\n  /** Skip reindex operation */\n  skip_reindex?: boolean;\n  /** Resume interrupted indexing */\n  resume_indexing?: boolean;\n  /** Perform incremental reindex */\n  incremental_reindex?: boolean;\n}\n\nexport interface ConfluenceDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseConfluenceParams> {\n  type: typeof DataSourceType.CONFLUENCE;\n}\nexport interface JiraDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseJiraParams> {\n  type: typeof DataSourceType.JIRA;\n}\nexport interface GoogleDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseGoogleParams> {\n  type: typeof DataSourceType.GOOGLE;\n}\nexport interface FileDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseFileParams> {\n  type: typeof DataSourceType.FILE;\n}\nexport interface CodeDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseCodeParams> {\n  type: typeof DataSourceType.CODE;\n}\nexport interface AzureDevOpsWikiDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<AzureDevOpsWiki> {\n  type: typeof DataSourceType.AZURE_DEVOPS_WIKI;\n}\nexport interface AzureDevOpsWorkItemDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<AzureDevOpsWorkItem> {\n  type: typeof DataSourceType.AZURE_DEVOPS_WORK_ITEM;\n}\nexport interface XrayDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseJiraParams> {\n  type: typeof DataSourceType.XRAY;\n}\nexport interface SharePointDataSourceUpdateParams\n  extends BaseDataSourceUpdateParams,\n    Partial<BaseSharePointParams> {\n  type: typeof DataSourceType.SHAREPOINT;\n}\nexport interface OtherDataSourceUpdateParams extends BaseDataSourceUpdateParams {\n  type:\n    | typeof DataSourceType.PROVIDER\n    | typeof DataSourceType.SUMMARY\n    | typeof DataSourceType.CHUNK_SUMMARY\n    | typeof DataSourceType.JSON\n    | typeof DataSourceType.PLATFORM;\n}\n\n/** DataSource update parameters */\nexport type DataSourceUpdateParams =\n  | ConfluenceDataSourceUpdateParams\n  | JiraDataSourceUpdateParams\n  | GoogleDataSourceUpdateParams\n  | FileDataSourceUpdateParams\n  | CodeDataSourceUpdateParams\n  | AzureDevOpsWikiDataSourceUpdateParams\n  | AzureDevOpsWorkItemDataSourceUpdateParams\n  | XrayDataSourceUpdateParams\n  | SharePointDataSourceUpdateParams\n  | OtherDataSourceUpdateParams;\n","import type {\n  AzureDevOpsWikiDataSourceCreateParams,\n  AzureDevOpsWikiDataSourceUpdateParams,\n  AzureDevOpsWorkItemDataSourceCreateParams,\n  AzureDevOpsWorkItemDataSourceUpdateParams,\n  CodeDataSourceResponse,\n  CodeDataSourceCreateParams,\n  CodeDataSourceUpdateParams,\n  ConfluenceDataSourceCreateParams,\n  ConfluenceDataSourceUpdateParams,\n  DataSource,\n  DataSourceCreateDto,\n  DataSourceCreateParams,\n  DataSourceProcessingInfo,\n  DataSourceProcessingInfoResponse,\n  DataSourceResponse,\n  DataSourceUpdateDto,\n  DataSourceUpdateParams,\n  FileDataSourceCreateParams,\n  FileDataSourceUpdateParams,\n  GoogleDataSourceCreateParams,\n  GoogleDataSourceUpdateParams,\n  JiraDataSourceCreateParams,\n  JiraDataSourceUpdateParams,\n  SharePointDataSourceCreateParams,\n  SharePointDataSourceUpdateParams,\n  XrayDataSourceCreateParams,\n  XrayDataSourceUpdateParams,\n  Code,\n  DataSourceStatusType,\n} from \"../models\";\nimport { DataSourceStatus, DataSourceType } from \"../models/datasource\";\nimport { omitUndefined } from \"../utils/helpers\";\n\nexport class DatasourceMapper {\n  /** Transforms API response into a client-friendly DataSource model, maintaining API-agnostic interface */\n  static mapDatasourceResponse(response: DataSourceResponse): DataSource {\n    return omitUndefined({\n      ...DatasourceMapper.mapDataSourceResponseCommonFields(response),\n      ...(response.index_type === DataSourceType.JIRA && {\n        jira: response.jira,\n      }),\n      ...(response.index_type === DataSourceType.CONFLUENCE && {\n        confluence: response.confluence,\n      }),\n      ...(response.index_type === DataSourceType.GOOGLE && {\n        google_doc: response.google_doc_link,\n      }),\n      ...(response.index_type === DataSourceType.CODE && {\n        code: DatasourceMapper.extractCodeDataSourceResponseFields(\n          response as CodeDataSourceResponse,\n        ),\n      }),\n      ...(response.index_type === DataSourceType.AZURE_DEVOPS_WIKI && {\n        azure_devops_wiki: response.azure_devops_wiki,\n      }),\n      ...(response.index_type === DataSourceType.AZURE_DEVOPS_WORK_ITEM && {\n        azure_devops_work_item: response.azure_devops_work_item,\n      }),\n      ...(response.index_type === DataSourceType.SHAREPOINT && {\n        sharepoint: response.sharepoint,\n      }),\n    });\n  }\n\n  static mapDataSourceResponseCommonFields(response: DataSourceResponse) {\n    let status: DataSourceStatusType;\n    if (response.error) {\n      status = DataSourceStatus.FAILED;\n    } else if (response.completed) {\n      status = DataSourceStatus.COMPLETED;\n    } else if (response.is_fetching) {\n      status = DataSourceStatus.FETCHING;\n    } else {\n      status = DataSourceStatus.IN_PROGRESS;\n    }\n\n    return {\n      id: response.id,\n      created_by: response.created_by,\n      created_date: response.date,\n      description: response.description,\n      embeddings_model: response.embeddings_model,\n      error_message: response.text,\n      name: response.repo_name,\n      processed_documents: response.processed_files,\n      processing_info: response.processing_info\n        ? DatasourceMapper.mapDatasourceProcessingInfoResponse(response.processing_info)\n        : undefined,\n      project_name: response.project_name,\n      setting_id: response.setting_id,\n      shared_with_project: response.project_space_visible,\n      status,\n      tokens_usage: response.tokens_usage,\n      type: response.index_type,\n      update_date: response.update_date,\n      user_abilities: response.user_abilities,\n    };\n  }\n\n  static extractCodeDataSourceResponseFields(response: CodeDataSourceResponse): Partial<Code> {\n    return omitUndefined({\n      branch: response.branch,\n      docsGeneration: response.docs_generation || false,\n      embeddingsModel: response.embeddings_model,\n      filesFilter: response.files_filter,\n      indexType: response.index_type,\n      link: response.link,\n      projectSpaceVisible: response.project_space_visible || false,\n      prompt: response.prompt,\n      settingId: response.setting_id,\n      summarizationModel: response.summarization_model,\n    });\n  }\n\n  /** Converts processing metadata from API format to client model format with consistent property naming */\n  static mapDatasourceProcessingInfoResponse(\n    response: DataSourceProcessingInfoResponse,\n  ): DataSourceProcessingInfo {\n    return omitUndefined({\n      total_documents_count: response.total_documents,\n      skipped_documents_count: response.skipped_documents,\n      total_size_kb: response.total_size_kb,\n      average_file_size_bytes: response.average_file_size_bytes,\n      unique_extensions: response.unique_extensions,\n      filtered_documents: response.filtered_documents,\n      processed_documents_count: response.documents_count_key,\n    });\n  }\n\n  /** Transforms datasource creation parameters into DTO format, applying type-specific mappings based on datasource type */\n  static mapDatasourceCreateToDto(create: DataSourceCreateParams): DataSourceCreateDto {\n    return omitUndefined({\n      ...DatasourceMapper.mapCommonDataSourceParams(create),\n      ...(create.type === DataSourceType.CONFLUENCE &&\n        DatasourceMapper.mapConfluenceDataSourceParams(create as ConfluenceDataSourceCreateParams)),\n      ...(create.type === DataSourceType.JIRA &&\n        DatasourceMapper.mapJiraDataSourceParams(create as JiraDataSourceCreateParams)),\n      ...(create.type === DataSourceType.GOOGLE &&\n        DatasourceMapper.mapGoogleDataSourceParams(create as GoogleDataSourceCreateParams)),\n      ...(create.type === DataSourceType.FILE &&\n        DatasourceMapper.mapFileDataSourceParams(create as FileDataSourceCreateParams)),\n      ...(create.type === DataSourceType.CODE &&\n        DatasourceMapper.mapCodeDataSourceParams(create as CodeDataSourceCreateParams)),\n      ...(create.type === DataSourceType.AZURE_DEVOPS_WIKI &&\n        DatasourceMapper.mapAzureDevOpsWikiParams(\n          create as AzureDevOpsWikiDataSourceCreateParams,\n        )),\n      ...(create.type === DataSourceType.AZURE_DEVOPS_WORK_ITEM &&\n        DatasourceMapper.mapAzureDevOpsWorkItemParams(\n          create as AzureDevOpsWorkItemDataSourceCreateParams,\n        )),\n      ...(create.type === DataSourceType.XRAY &&\n        DatasourceMapper.mapXrayDataSourceParams(create as XrayDataSourceCreateParams)),\n      ...(create.type === DataSourceType.SHAREPOINT &&\n        DatasourceMapper.mapSharePointParams(create as SharePointDataSourceCreateParams)),\n    });\n  }\n\n  /** Converts datasource update parameters to DTO format with conditional inclusion of type-specific properties */\n  static mapDatasourceUpdateToDto(update: DataSourceUpdateParams): DataSourceUpdateDto {\n    return omitUndefined({\n      ...DatasourceMapper.mapCommonUpdateDataSourceParams(update),\n      ...(update.type === DataSourceType.CONFLUENCE &&\n        DatasourceMapper.mapConfluenceDataSourceParams(update as ConfluenceDataSourceUpdateParams)),\n      ...(update.type === DataSourceType.JIRA &&\n        DatasourceMapper.mapJiraDataSourceParams(update as JiraDataSourceUpdateParams)),\n      ...(update.type === DataSourceType.GOOGLE &&\n        DatasourceMapper.mapGoogleDataSourceParams(update as GoogleDataSourceUpdateParams)),\n      ...(update.type === DataSourceType.FILE &&\n        DatasourceMapper.mapFileDataSourceParams(update as FileDataSourceUpdateParams)),\n      ...(update.type === DataSourceType.CODE &&\n        DatasourceMapper.mapCodeDataSourceParams(update as CodeDataSourceUpdateParams)),\n      ...(update.type === DataSourceType.AZURE_DEVOPS_WIKI &&\n        DatasourceMapper.mapAzureDevOpsWikiParams(\n          update as AzureDevOpsWikiDataSourceUpdateParams,\n        )),\n      ...(update.type === DataSourceType.AZURE_DEVOPS_WORK_ITEM &&\n        DatasourceMapper.mapAzureDevOpsWorkItemParams(\n          update as AzureDevOpsWorkItemDataSourceUpdateParams,\n        )),\n      ...(update.type === DataSourceType.XRAY &&\n        DatasourceMapper.mapXrayDataSourceParams(update as XrayDataSourceUpdateParams)),\n      ...(update.type === DataSourceType.SHAREPOINT &&\n        DatasourceMapper.mapSharePointParams(update as SharePointDataSourceUpdateParams)),\n    });\n  }\n\n  /** Maps Confluence-specific configuration parameters for content filtering and pagination options */\n  private static mapConfluenceDataSourceParams<\n    T extends ConfluenceDataSourceCreateParams | ConfluenceDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      cql: params.cql,\n      include_restricted_content: params.include_restricted_content,\n      include_archived_content: params.include_archived_content,\n      include_attachments: params.include_attachments,\n      include_comments: params.include_comments,\n      keep_markdown_format: params.keep_markdown_format,\n      keep_newlines: params.keep_newlines,\n      max_pages: params.max_pages,\n      pages_per_request: params.pages_per_request,\n    };\n  }\n\n  /** Maps Jira-specific parameters, transforming JQL (Jira Query Language) filter configuration */\n  private static mapJiraDataSourceParams<\n    T extends JiraDataSourceCreateParams | JiraDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      jql: params.jql,\n    };\n  }\n\n  /** Maps Xray-specific parameters, transforming JQL filter configuration */\n  private static mapXrayDataSourceParams<\n    T extends XrayDataSourceCreateParams | XrayDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      jql: params.jql,\n    };\n  }\n\n  /** Maps SharePoint-specific configuration parameters */\n  private static mapSharePointParams<\n    T extends SharePointDataSourceCreateParams | SharePointDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      site_url: params.site_url,\n      include_pages: params.include_pages,\n      include_documents: params.include_documents,\n      include_lists: params.include_lists,\n      max_file_size_mb: params.max_file_size_mb,\n      files_filter: params.files_filter,\n      auth_type: params.auth_type,\n      access_token: params.access_token,\n      oauth_client_id: params.oauth_client_id,\n      oauth_tenant_id: params.oauth_tenant_id,\n      embedding_model: params.embedding_model,\n      cron_expression: params.cron_expression,\n    };\n  }\n\n  /** Maps Google Doc specific parameters with proper API naming conventions */\n  private static mapGoogleDataSourceParams<\n    T extends GoogleDataSourceCreateParams | GoogleDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      googleDoc: params.google_doc,\n    };\n  }\n\n  /** Maps file upload datasource parameters, handling file reference collections */\n  private static mapFileDataSourceParams<\n    T extends FileDataSourceCreateParams | FileDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      files: params.files,\n    };\n  }\n\n  /** Maps code repository specific parameters including indexing strategy and code processing settings */\n  private static mapCodeDataSourceParams<\n    T extends CodeDataSourceCreateParams | CodeDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      settingId: params.setting_id,\n      projectSpaceVisible: params.shared_with_project || false,\n      link: params.link,\n      branch: params.branch,\n      indexType: params.index_type,\n      filesFilter: params.files_filter,\n      embeddingsModel: params.embeddings_model,\n      summarizationModel: params.summarization_model,\n      prompt: params.prompt,\n      docsGeneration: params.docs_generation || false,\n    };\n  }\n\n  /** Maps Azure DevOps Wiki-specific configuration parameters */\n  private static mapAzureDevOpsWikiParams<\n    T extends AzureDevOpsWikiDataSourceCreateParams | AzureDevOpsWikiDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      wiki_query: params.wiki_query,\n      organization: params.organization,\n      project: params.project,\n      wiki_name: params.wiki_name,\n    };\n  }\n\n  /** Maps Azure DevOps Work Item-specific configuration parameters */\n  private static mapAzureDevOpsWorkItemParams<\n    T extends AzureDevOpsWorkItemDataSourceCreateParams | AzureDevOpsWorkItemDataSourceUpdateParams,\n  >(params: T) {\n    return {\n      wiql_query: params.wiql_query,\n      organization: params.organization,\n      project: params.project,\n    };\n  }\n\n  /** Maps general datasource parameters common across all datasource types with appropriate fallback values */\n  private static mapCommonDataSourceParams(params: DataSourceCreateParams) {\n    return {\n      name: params.name,\n      project_name: params.project_name,\n      description: params.description,\n      project_space_visible: params.shared_with_project || false,\n      setting_id: params.setting_id || null,\n      type: params.type,\n    };\n  }\n\n  private static mapCommonUpdateDataSourceParams(params: DataSourceUpdateParams) {\n    return omitUndefined({\n      name: params.name,\n      project_name: params.project_name,\n      description: params.description,\n      project_space_visible: params.shared_with_project || false,\n      setting_id: params.setting_id || null,\n      type: params.type,\n    });\n  }\n}\n","import FormData from \"form-data\";\nimport type { FileUploadResponse, FileBulkUploadResponse, FileToUpload } from \"../models/file\";\nimport type { AuthConfig } from \"../models/common\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class FileService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Upload a single file\n   * POST /v1/files/\n   */\n  async upload(file: FileToUpload): Promise<FileUploadResponse> {\n    const formData = new FormData();\n    formData.append(\"file\", file.content, {\n      filename: file.name,\n      contentType: file.mimeType,\n    });\n\n    return this.api.postMultipart<FileUploadResponse>(\"/v1/files/\", formData);\n  }\n\n  /**\n   * Upload multiple files\n   * POST /v1/files/bulk\n   */\n  async bulkUpload(files: FileToUpload[]): Promise<FileBulkUploadResponse> {\n    const formData = new FormData();\n\n    for (const file of files) {\n      formData.append(\"files\", file.content, {\n        filename: file.name,\n        contentType: file.mimeType,\n      });\n    }\n\n    return this.api.postMultipart<FileBulkUploadResponse>(\"/v1/files/bulk\", formData);\n  }\n\n  /**\n   * Get file by URL/ID\n   * GET /v1/files/{file_name}\n   */\n  async getFile(fileUrl: string): Promise<Buffer> {\n    const response = await this.api.get<ArrayBuffer>(`/v1/files/${fileUrl}`, undefined, {\n      responseType: \"arraybuffer\",\n    });\n    return Buffer.from(response);\n  }\n}\n","/** Models for integration-related data structures */\n\n/**\n * Credential types as constant object\n */\nexport const CredentialTypes = {\n  JIRA: \"Jira\",\n  CONFLUENCE: \"Confluence\",\n  GIT: \"Git\",\n  KUBERNETES: \"Kubernetes\",\n  AWS: \"AWS\",\n  GCP: \"GCP\",\n  KEYCLOAK: \"Keycloak\",\n  AZURE: \"Azure\",\n  ELASTIC: \"Elastic\",\n  OPENAPI: \"OpenAPI\",\n  PLUGIN: \"Plugin\",\n  FILESYSTEM: \"FileSystem\",\n  SCHEDULER: \"Scheduler\",\n  WEBHOOK: \"Webhook\",\n  EMAIL: \"Email\",\n  AZURE_DEVOPS: \"AzureDevOps\",\n  SONAR: \"Sonar\",\n  SQL: \"SQL\",\n  TELEGRAM: \"Telegram\",\n  ZEPHYR_SCALE: \"ZephyrScale\",\n  ZEPHYR_SQUAD: \"ZephyrSquad\",\n  SERVICE_NOW: \"ServiceNow\",\n  DIAL: \"DIAL\",\n  A2A: \"A2A\",\n  MCP: \"MCP\",\n  LITE_LLM: \"LiteLLM\",\n  REPORT_PORTAL: \"ReportPortal\",\n  XRAY: \"Xray\",\n  SHAREPOINT: \"SharePoint\",\n} as const;\n\nexport type CredentialTypesType = (typeof CredentialTypes)[keyof typeof CredentialTypes];\n\n/**\n * Integration types as constant object\n */\nexport const IntegrationType = {\n  USER: \"user\",\n  PROJECT: \"project\",\n} as const;\n\nexport type IntegrationTypeType = (typeof IntegrationType)[keyof typeof IntegrationType];\n\n/**\n * Model for credential values\n */\nexport interface CredentialValues {\n  /** Key for the credential value */\n  key: string;\n  /** Value of the credential (can be any type) */\n  value: unknown;\n}\n\n/**\n * Model for settings configuration\n */\nexport interface Integration {\n  /** Integration ID */\n  id: string;\n  /** Creation date */\n  date?: string;\n  /** Last update date */\n  update_date?: string;\n  /** User ID */\n  user_id?: string;\n  /** Project name */\n  project_name: string;\n  /** Integration alias */\n  alias?: string;\n  /** Whether this is the default integration */\n  default?: boolean;\n  /** Whether this is a global integration */\n  is_global?: boolean;\n  /** Type of credential */\n  credential_type: CredentialTypesType;\n  /** List of credential values */\n  credential_values: CredentialValues[];\n  /** Type of integration */\n  setting_type: IntegrationTypeType;\n}\n\n","import { z } from \"zod\";\nimport { CredentialTypes, IntegrationType, type IntegrationTypeType } from \"../models/integration\";\n\nexport const IntegrationListParamsSchema = z\n  .object({\n    setting_type: z\n      .enum([IntegrationType.USER, IntegrationType.PROJECT])\n      .default(IntegrationType.USER),\n    page: z.number().default(0),\n    per_page: z.number().default(10),\n    filters: z.record(z.string(), z.unknown()).optional(),\n  })\n  .readonly();\nexport type IntegrationListParams = Partial<z.infer<typeof IntegrationListParamsSchema>>;\n\nexport const IntegrationGetParamsSchema = z\n  .object({\n    integration_id: z.string(),\n    setting_type: z\n      .enum([IntegrationType.USER, IntegrationType.PROJECT])\n      .default(IntegrationType.USER),\n  })\n  .readonly();\nexport type IntegrationGetParams = z.infer<typeof IntegrationGetParamsSchema>;\n\nexport const IntegrationGetByAliasParamsSchema = z\n  .object({\n    alias: z.string(),\n    setting_type: z\n      .enum([IntegrationType.USER, IntegrationType.PROJECT])\n      .default(IntegrationType.USER),\n  })\n  .readonly();\nexport type IntegrationGetByAliasParams = Omit<\n  z.infer<typeof IntegrationGetByAliasParamsSchema>,\n  \"setting_type\"\n> & {\n  setting_type?: IntegrationTypeType;\n};\n\nconst CredentialValueSchema = z.object({\n  key: z.string(),\n  value: z.unknown(),\n});\n\nexport const IntegrationCreateParamsSchema = z\n  .object({\n    credential_type: z.enum(Object.values(CredentialTypes) as [string, ...string[]]),\n    credential_values: z.array(CredentialValueSchema),\n    project_name: z.string(),\n    setting_type: z\n      .enum([IntegrationType.USER, IntegrationType.PROJECT])\n      .default(IntegrationType.USER),\n    alias: z.string().optional(),\n    default: z.boolean().optional().default(false),\n    project: z.string().optional(),\n    enabled: z.boolean().optional().default(true),\n    external_id: z.string().optional(),\n  })\n  .readonly();\nexport type IntegrationCreateParams = Omit<\n  z.infer<typeof IntegrationCreateParamsSchema>,\n  \"default\" | \"enabled\"\n> & {\n  default?: boolean;\n  enabled?: boolean;\n};\n\nexport const IntegrationUpdateParamsSchema = IntegrationCreateParamsSchema;\nexport type IntegrationUpdateParams = Omit<\n  z.infer<typeof IntegrationUpdateParamsSchema>,\n  \"default\" | \"enabled\"\n> & {\n  default?: boolean;\n  enabled?: boolean;\n};\n","import { NotFoundError } from \"../exceptions\";\nimport type { AnyJson, PaginatedResponse, AuthConfig } from \"../models/common\";\nimport { type Integration, IntegrationType, type IntegrationTypeType } from \"../models/integration\";\nimport {\n  IntegrationCreateParamsSchema,\n  type IntegrationCreateParams,\n  IntegrationGetByAliasParamsSchema,\n  type IntegrationGetByAliasParams,\n  IntegrationGetParamsSchema,\n  type IntegrationGetParams,\n  IntegrationListParamsSchema,\n  type IntegrationListParams,\n  IntegrationUpdateParamsSchema,\n  type IntegrationUpdateParams,\n} from \"../schemas/integration\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class IntegrationService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get base API path based on setting type.\n   */\n  private getBasePath(settingType: IntegrationTypeType): string {\n    return `/v1/settings/${settingType === IntegrationType.USER ? \"user\" : \"project\"}`;\n  }\n\n  /**\n   * Get list of available integrations.\n   */\n  async list(_params: IntegrationListParams = {}): Promise<Integration[]> {\n    const params = IntegrationListParamsSchema.parse(_params);\n    const settingType = params.setting_type;\n\n    const queryParams = {\n      page: params.page,\n      per_page: params.per_page,\n      ...(params.filters ? { filters: JSON.stringify(params.filters) } : {}),\n    };\n\n    const response = await this.api.get<PaginatedResponse<Integration>>(\n      this.getBasePath(settingType),\n      queryParams,\n    );\n\n    return Array.isArray(response?.data) ? response.data : [];\n  }\n\n  /**\n   * Get integration by ID.\n   */\n  async get(_params: IntegrationGetParams): Promise<Integration> {\n    const params = IntegrationGetParamsSchema.parse(_params);\n    const settingType = params.setting_type;\n    const integrationId = params.integration_id;\n\n    const integrations = await this.list({\n      per_page: 100,\n      setting_type: settingType,\n    });\n\n    const integration = integrations.find((i) => i.id === integrationId);\n    if (!integration) {\n      throw new NotFoundError(\"Integration\", integrationId);\n    }\n\n    return integration;\n  }\n\n  /**\n   * Get integration by alias.\n   */\n  async getByAlias(_params: IntegrationGetByAliasParams): Promise<Integration> {\n    const params = IntegrationGetByAliasParamsSchema.parse(_params);\n    const settingType = params.setting_type;\n    const alias = params.alias;\n\n    const integrations = await this.list({\n      per_page: 100,\n      setting_type: settingType,\n    });\n\n    const integration = integrations.find((i) => i.alias === alias);\n    if (!integration) {\n      throw new NotFoundError(\"Integration\", alias);\n    }\n\n    return integration;\n  }\n\n  /**\n   * Create a new integration.\n   */\n  async create(_params: IntegrationCreateParams): Promise<AnyJson> {\n    const params = IntegrationCreateParamsSchema.parse(_params);\n    const settingType = params.setting_type;\n\n    return this.api.post(this.getBasePath(settingType), {\n      ...params,\n      setting_type: settingType,\n      default: false,\n    });\n  }\n\n  /**\n   * Update an existing integration.\n   */\n  async update(settingId: string, _params: IntegrationUpdateParams): Promise<AnyJson> {\n    const params = IntegrationUpdateParamsSchema.parse(_params);\n    const settingType = params.setting_type;\n\n    return this.api.put(`${this.getBasePath(settingType)}/${settingId}`, {\n      ...params,\n      setting_type: settingType,\n      default: false,\n    });\n  }\n\n  /**\n   * Delete an integration by ID.\n   */\n  async delete(\n    settingId: string,\n    settingType: IntegrationTypeType = IntegrationType.USER,\n  ): Promise<AnyJson> {\n    return this.api.delete(`${this.getBasePath(settingType)}/${settingId}`);\n  }\n}\n","import type { AuthConfig } from \"../models/common\";\nimport type { LLMModel } from \"../models/llm\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class LLMService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get list of available LLM models.\n   */\n  async list(): Promise<LLMModel[]> {\n    return this.api.get<LLMModel[]>(\"/v1/llm_models\");\n  }\n\n  /**\n   * Get list of available embeddings models.\n   */\n  async listEmbeddings(): Promise<LLMModel[]> {\n    return this.api.get<LLMModel[]>(\"/v1/embeddings_models\");\n  }\n}\n","import { z } from \"zod\";\nimport { SkillSortBy, SkillScopeFilter } from \"../models/skill\";\n\nexport const SkillListParamsSchema = z\n  .object({\n    page: z.number().default(0),\n    per_page: z.number().default(20),\n    filters: z.record(z.string(), z.unknown()).optional(),\n    sort_by: z.nativeEnum(SkillSortBy).optional(),\n    scope: z.nativeEnum(SkillScopeFilter).optional(),\n    assistant_id: z.string().optional(),\n  })\n  .readonly();\n\nexport type SkillListParams = Partial<z.infer<typeof SkillListParamsSchema>>;","/** Models for skill-related data structures. */\n\nexport enum SkillVisibility {\n  PRIVATE = \"private\",\n  PROJECT = \"project\",\n  PUBLIC = \"public\",\n}\n\nexport enum SkillScopeFilter {\n  MARKETPLACE = \"marketplace\",\n  PROJECT = \"project\",\n  PROJECT_WITH_MARKETPLACE = \"project_with_marketplace\",\n}\n\nexport enum SkillSortBy {\n  CREATED_DATE = \"created_date\",\n  ASSISTANTS_COUNT = \"assistants_count\",\n  RELEVANCE = \"relevance\",\n}\n\nexport enum SkillCategory {\n  DEVELOPMENT = \"development\",\n  ENGINEERING = \"engineering\",\n  TESTING = \"testing\",\n  QUALITY_ASSURANCE = \"quality_assurance\",\n  CODE_REVIEW = \"code_review\",\n  DOCUMENTATION = \"documentation\",\n  DEVOPS = \"devops\",\n  SECURITY = \"security\",\n  COMPLIANCE = \"compliance\",\n  MONITORING_ALERTS = \"monitoring_alerts\",\n  ARCHITECTURE = \"architecture\",\n  UI_UX_DESIGN = \"ui_ux_design\",\n  DATA_ANALYSIS = \"data_analysis\",\n  DATA_ANALYTICS = \"data_analytics\",\n  PROJECT_MANAGEMENT = \"project_management\",\n  PRODUCT_MANAGEMENT = \"product_management\",\n  BUSINESS_ANALYSIS = \"business_analysis\",\n  MIGRATION_MODERNIZATION = \"migration_modernization\",\n  SUPPORT = \"support\",\n  CUSTOMER_EXPERIENCE = \"customer_experience\",\n  KNOWLEDGE_MANAGEMENT = \"knowledge_management\",\n  TRAINING = \"training\",\n  PRESALES = \"presales\",\n  INTERVIEW = \"interview\",\n  TALENT_ACQUISITION = \"talent_acquisition\",\n  OTHER = \"other\",\n}\n\nexport interface SkillCreatedBy {\n  id: string;\n  username: string;\n  name: string;\n}\n\nexport interface SkillListItem {\n  id: string;\n  name: string;\n  description: string;\n  project: string;\n  visibility: SkillVisibility;\n  created_by: SkillCreatedBy | null;\n  categories: SkillCategory[];\n  createdDate: string;\n  updatedDate: string | null;\n  is_attached: boolean;\n  assistants_count: number;\n  user_abilities: string[];\n  unique_likes_count: number;\n  unique_dislikes_count: number;\n}\n\nexport interface SkillDetail extends SkillListItem {\n  display_name?: string | null;\n  content: string;\n  toolkits: unknown[];\n  mcp_servers: unknown[];\n}\n\nexport interface SkillListPaginatedResponse {\n  skills: SkillListItem[];\n  page: number;\n  perPage: number;\n  pages: number;\n  total: number;\n}\n\n/** Skill category API response item. */\nexport interface SkillCategoryItem {\n  value: string;\n  label: string;\n  description?: string;\n}\n\n/** Parameters for creating a skill. */\nexport interface SkillCreateParams {\n  /** Kebab-case identifier, 3–64 chars (e.g. \"my-skill\"). Must start and end with a letter or number. */\n  name: string;\n  /** 10–1000 chars. */\n  description: string;\n  /** Markdown skill instructions, minimum 100 chars. */\n  content: string;\n  project: string;\n  visibility?: SkillVisibility;\n  /** Max 3 categories. */\n  categories?: string[];\n  toolkits?: unknown[];\n  mcp_servers?: unknown[];\n}\n\n/** Parameters for updating a skill. */\nexport interface SkillUpdateParams {\n  /** Kebab-case identifier, 3–64 chars. Must start and end with a letter or number. */\n  name?: string;\n  /** 10–1000 chars. */\n  description?: string;\n  /** Markdown skill instructions, minimum 100 chars. */\n  content?: string;\n  project?: string;\n  visibility?: SkillVisibility;\n  /** Max 3 categories. */\n  categories?: string[];\n  toolkits?: unknown[];\n  mcp_servers?: unknown[];\n}\n\n/** Parameters for importing a skill from .md file. */\nexport interface SkillImportParams {\n  /**\n   * Base64-encoded markdown file content. The file must include YAML frontmatter\n   * with `name` and `description` fields. This matches the format produced by `export()`.\n   *\n   * @example\n   * Buffer.from(\"---\\nname: my-skill\\ndescription: What this skill does\\n---\\n\\n# Instructions\\n...\").toString(\"base64\")\n   */\n  file_content: string;\n  filename: string;\n  project: string;\n  visibility?: SkillVisibility;\n}","import type { AnyJson, AuthConfig } from \"../models/common\";\nimport type {\n  SkillCategoryItem,\n  SkillCreateParams,\n  SkillDetail,\n  SkillImportParams,\n  SkillListItem,\n  SkillListPaginatedResponse,\n  SkillUpdateParams,\n} from \"../models/skill\";\nimport { SkillListParamsSchema, type SkillListParams } from \"../schemas/skill\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class SkillService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get paginated list of skills accessible to the current user.\n   */\n  async listPaginated(_params: SkillListParams = {}): Promise<SkillListPaginatedResponse> {\n    const { scope, assistant_id, filters: rawFilters, ...rest } = SkillListParamsSchema.parse(_params);\n\n    const mergedFilters = scope || rawFilters ? { ...rawFilters, ...(scope && { scope }) } : undefined;\n\n    return this.api.get<SkillListPaginatedResponse>(\"/v1/skills\", {\n      ...rest,\n      ...(assistant_id && { assistant_id }),\n      ...(mergedFilters && { filters: JSON.stringify(mergedFilters) }),\n    });\n  }\n\n  /**\n   * Get flat list of skills (without pagination metadata).\n   */\n  async list(_params: SkillListParams = {}): Promise<SkillListItem[]> {\n    const response = await this.listPaginated(_params);\n    return response.skills;\n  }\n\n  /**\n   * Get skill details by ID.\n   */\n  async get(skillId: string): Promise<SkillDetail> {\n    return this.api.get<SkillDetail>(`/v1/skills/${skillId}`);\n  }\n\n  /**\n   * Create a new skill.\n   */\n  async create(params: SkillCreateParams): Promise<SkillDetail> {\n    return this.api.post<SkillDetail>(\"/v1/skills\", params);\n  }\n\n  /**\n   * Update an existing skill.\n   */\n  async update(skillId: string, params: SkillUpdateParams): Promise<SkillDetail> {\n    return this.api.put<SkillDetail>(`/v1/skills/${skillId}`, params);\n  }\n\n  /**\n   * Delete a skill by ID.\n   */\n  async delete(skillId: string): Promise<AnyJson> {\n    return this.api.delete<AnyJson>(`/v1/skills/${skillId}`);\n  }\n\n  /**\n   * Import a skill from .md file content.\n   */\n  async importSkill(params: SkillImportParams): Promise<SkillDetail> {\n    return this.api.post<SkillDetail>(\"/v1/skills/import\", params);\n  }\n\n  /**\n   * Export a skill as markdown content.\n   */\n  async export(skillId: string): Promise<string> {\n    return this.api.get<string>(`/v1/skills/${skillId}/export`, undefined, { responseType: \"text\" });\n  }\n\n  /**\n   * Attach a skill to an assistant.\n   */\n  async attachToAssistant(assistantId: string, skillId: string): Promise<AnyJson> {\n    return this.api.post<AnyJson>(`/v1/assistants/${assistantId}/skills`, { skill_id: skillId });\n  }\n\n  /**\n   * Detach a skill from an assistant.\n   */\n  async detachFromAssistant(assistantId: string, skillId: string): Promise<AnyJson> {\n    return this.api.delete<AnyJson>(`/v1/assistants/${assistantId}/skills/${skillId}`);\n  }\n\n  /**\n   * Get all skills attached to an assistant.\n   */\n  async getAssistantSkills(assistantId: string): Promise<SkillListItem[]> {\n    return this.api.get<SkillListItem[]>(`/v1/assistants/${assistantId}/skills`);\n  }\n\n  /**\n   * Bulk attach a skill to multiple assistants.\n   */\n  async bulkAttachToAssistants(skillId: string, assistantIds: string[]): Promise<AnyJson> {\n    return this.api.post<AnyJson>(`/v1/skills/${skillId}/assistants/bulk-attach`, {\n      assistant_ids: assistantIds,\n    });\n  }\n\n  /**\n   * Get all assistants using this skill.\n   */\n  async getSkillAssistants(skillId: string): Promise<AnyJson[]> {\n    return this.api.get<AnyJson[]>(`/v1/skills/${skillId}/assistants`);\n  }\n\n  /**\n   * Publish a skill to the marketplace.\n   */\n  async publish(skillId: string, categories?: string[]): Promise<AnyJson> {\n    const body = categories?.length ? { categories } : undefined;\n    return this.api.post<AnyJson>(`/v1/skills/${skillId}/marketplace/publish`, body);\n  }\n\n  /**\n   * Unpublish a skill from the marketplace.\n   */\n  async unpublish(skillId: string): Promise<AnyJson> {\n    return this.api.post<AnyJson>(`/v1/skills/${skillId}/marketplace/unpublish`);\n  }\n\n  /**\n   * Get list of available skill categories.\n   */\n  async listCategories(): Promise<SkillCategoryItem[]> {\n    return this.api.get<SkillCategoryItem[]>(\"/v1/skills/categories\");\n  }\n\n  /**\n   * Get users with access to skills.\n   */\n  async getUsers(): Promise<AnyJson[]> {\n    return this.api.get<AnyJson[]>(\"/v1/skills/users\");\n  }\n\n  /**\n   * React to a skill.\n   */\n  async react(skillId: string, reaction: \"like\" | \"dislike\"): Promise<AnyJson> {\n    return this.api.post<AnyJson>(`/v1/skills/${skillId}/reactions`, { reaction });\n  }\n\n  /**\n   * Remove all reactions from a skill.\n   */\n  async removeReactions(skillId: string): Promise<AnyJson> {\n    return this.api.delete<AnyJson>(`/v1/skills/${skillId}/reactions`);\n  }\n}","import type { AuthConfig } from \"../models/common\";\nimport type { BackgroundTaskEntity } from \"../models/task\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class TaskService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get a background task by ID.\n   */\n  async get(taskId: string): Promise<BackgroundTaskEntity> {\n    return this.api.get(`/v1/tasks/${taskId}`);\n  }\n}\n","import type { AboutUser, AboutUserResponse } from \"../models\";\nimport { omitUndefined } from \"../utils/helpers\";\n\nexport class UserMapper {\n  static mapAboutUserResponse(response: AboutUserResponse): AboutUser {\n    return omitUndefined({\n      user_id: response.user_id,\n      name: response.name,\n      username: response.username,\n      email: response.email,\n      is_admin: response.is_admin,\n      applications: response.applications,\n      applications_admin: response.applications_admin,\n      picture: response.picture,\n      knowledge_bases: response.knowledge_bases,\n    });\n  }\n}\n","import { UserMapper } from \"../mappers/user.mapper\";\nimport type { AuthConfig } from \"../models/common\";\nimport type { AboutUser, AboutUserResponse, UserData } from \"../models/user\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class UserService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get current user profile.\n   */\n  async aboutMe(): Promise<AboutUser> {\n    const response = await this.api.get<AboutUserResponse>(\"/v1/user\");\n    return UserMapper.mapAboutUserResponse(response);\n  }\n\n  /**\n   * Get user data and preferences.\n   */\n  async getData(): Promise<UserData> {\n    return this.api.get(\"/v1/user/data\");\n  }\n}\n","import type { AuthConfig } from \"../models/common\";\nimport type {\n  Category,\n  CategoryCreateParams,\n  CategoryListResponse,\n  CategoryResponse,\n  CategoryUpdateParams,\n} from \"../models/category\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class CategoryService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get all available assistant categories (legacy, non-paginated).\n   * Public endpoint — no admin access required.\n   * GET /v1/assistants/categories\n   */\n  async getCategories(): Promise<Category[]> {\n    return this.api.get<Category[]>(\"/v1/assistants/categories\");\n  }\n\n  /**\n   * Get paginated list of categories with marketplace/project assistant counts.\n   * Admin access required.\n   * GET /v1/assistants/categories/list\n   */\n  async listCategories(page = 0, perPage = 10): Promise<CategoryListResponse> {\n    return this.api.get<CategoryListResponse>(\"/v1/assistants/categories/list\", {\n      page,\n      per_page: perPage,\n    });\n  }\n\n  /**\n   * Get a specific category by ID with assistant counts.\n   * Admin access required.\n   * GET /v1/assistants/categories/{id}\n   */\n  async getCategory(categoryId: string): Promise<CategoryResponse> {\n    return this.api.get<CategoryResponse>(`/v1/assistants/categories/${categoryId}`);\n  }\n\n  /**\n   * Create a new category. The ID is auto-generated from the name.\n   * Admin access required.\n   * POST /v1/assistants/categories\n   */\n  async createCategory(params: CategoryCreateParams): Promise<CategoryResponse> {\n    return this.api.post<CategoryResponse>(\"/v1/assistants/categories\", params);\n  }\n\n  /**\n   * Update an existing category.\n   * Admin access required.\n   * PUT /v1/assistants/categories/{id}\n   */\n  async updateCategory(categoryId: string, params: CategoryUpdateParams): Promise<CategoryResponse> {\n    return this.api.put<CategoryResponse>(`/v1/assistants/categories/${categoryId}`, params);\n  }\n\n  /**\n   * Delete a category. Fails with 409 if any assistants are assigned to it.\n   * Admin access required.\n   * DELETE /v1/assistants/categories/{id}\n   */\n  async deleteCategory(categoryId: string): Promise<void> {\n    return this.api.delete<void>(`/v1/assistants/categories/${categoryId}`);\n  }\n}\n","import type {\n  Workflow,\n  WorkflowExecution,\n  WorkflowExecutionResponse,\n  WorkflowResponse,\n} from \"../models\";\nimport { omitUndefined } from \"../utils/helpers\";\n\nexport class WorkflowMapper {\n  static mapWorkflowResponse(response: WorkflowResponse): Workflow {\n    return omitUndefined({\n      id: response.id,\n      project: response.project,\n      name: response.name,\n      description: response.description,\n      yaml_config: response.yaml_config,\n      mode: response.mode,\n      shared: response.shared,\n      icon_url: response.icon_url,\n      created_date: response.date,\n      update_date: response.update_date,\n      created_by: response.created_by,\n    });\n  }\n\n  static mapWorkflowExecutionResponse(response: WorkflowExecutionResponse): WorkflowExecution {\n    return omitUndefined({\n      id: response.id,\n      execution_id: response.execution_id,\n      workflow_id: response.workflow_id,\n      overall_status: response.overall_status,\n      created_date: response.date,\n      prompt: response.prompt,\n      updated_date: response.updated_date,\n      created_by: response.created_by,\n      tokens_usage: response.tokens_usage,\n    });\n  }\n}\n","import { z } from \"zod\";\nimport { WorkflowMode } from \"../models/workflow\";\n\n/**\n * Workflow list parameters schema\n */\nexport const WorkflowListParamsSchema = z\n  .object({\n    page: z.number().default(0),\n    per_page: z.number().default(10),\n    projects: z.array(z.string()).optional(),\n    search: z.string().optional(),\n  })\n  .readonly();\nexport type WorkflowListParams = Partial<z.infer<typeof WorkflowListParamsSchema>>;\n\n/**\n * Workflow create parameters schema\n */\nexport const WorkflowCreateParamsSchema = z\n  .object({\n    project: z.string(),\n    name: z.string(),\n    description: z.string().optional(),\n    yaml_config: z.string(),\n    mode: z.enum([WorkflowMode.SEQUENTIAL, WorkflowMode.AUTONOMOUS]),\n    shared: z.boolean(),\n    icon_url: z.string().optional(),\n  })\n  .readonly();\nexport type WorkflowCreateParams = z.infer<typeof WorkflowCreateParamsSchema>;\n\n/**\n * Workflow update parameters schema\n */\nexport const WorkflowUpdateParamsSchema = z\n  .object({\n    project: z.string(),\n    name: z.string(),\n    description: z.string().optional(),\n    yaml_config: z.string(),\n    mode: z.enum([WorkflowMode.SEQUENTIAL, WorkflowMode.AUTONOMOUS]).optional(),\n    shared: z.boolean().optional(),\n    icon_url: z.string().optional(),\n  })\n  .readonly();\nexport type WorkflowUpdateParams = z.infer<typeof WorkflowUpdateParamsSchema>;\n\n/**\n * Workflow evaluation parameters schema\n */\nexport const WorkflowEvaluationParamsSchema = z\n  .object({\n    dataset_id: z.string(),\n    experiment_name: z.string(),\n    max_concurrency: z.number().min(1).max(5).default(1),\n  })\n  .readonly();\nexport type WorkflowEvaluationParams = z.infer<typeof WorkflowEvaluationParamsSchema>;\n\n/**\n * Workflow execution list parameters schema\n */\nexport const WorkflowExecutionListParamsSchema = z\n  .object({\n    page: z.number().default(0),\n    per_page: z.number().default(10),\n  })\n  .readonly();\nexport type WorkflowExecutionListParams = Partial<\n  z.infer<typeof WorkflowExecutionListParamsSchema>\n>;\n\n/**\n * Workflow execution create parameters schema\n */\nexport const WorkflowExecutionCreateParamsSchema = z\n  .object({\n    user_input: z\n      .union([\n        z.string(),\n        z.record(z.string(), z.unknown()),\n        z.array(z.unknown()),\n        z.number(),\n        z.boolean(),\n      ])\n      .optional(),\n    file_name: z.string().optional(),\n    session_id: z.string().optional(),\n    propagate_headers: z.boolean().optional(),\n    tags: z.array(z.string()).optional(),\n  })\n  .readonly();\nexport type WorkflowExecutionCreateParams = z.infer<typeof WorkflowExecutionCreateParamsSchema>;\n\n/**\n * Workflow execution state list parameters schema\n */\nexport const WorkflowExecutionStateListParamsSchema = z\n  .object({\n    page: z.number().default(0),\n    per_page: z.number().default(10),\n  })\n  .readonly();\nexport type WorkflowExecutionStateListParams = Partial<\n  z.infer<typeof WorkflowExecutionStateListParamsSchema>\n>;\n","/** Models for workflow functionality */\nimport type { BaseUser, TokensUsage } from \"./common\";\n\n/** Available workflow modes */\nexport const WorkflowMode = {\n  SEQUENTIAL: \"Sequential\",\n  AUTONOMOUS: \"Autonomous\",\n} as const;\nexport type WorkflowModeType = (typeof WorkflowMode)[keyof typeof WorkflowMode];\n\n/** Workflow execution status */\nexport const ExecutionStatus = {\n  IN_PROGRESS: \"In Progress\",\n  NOT_STARTED: \"Not Started\",\n  INTERRUPTED: \"Interrupted\",\n  FAILED: \"Failed\",\n  SUCCEEDED: \"Succeeded\",\n  ABORTED: \"Aborted\",\n} as const;\nexport type ExecutionStatusType = (typeof ExecutionStatus)[keyof typeof ExecutionStatus];\n\n/** Workflow API response */\nexport interface WorkflowResponse {\n  /** Unique identifier */\n  id: string;\n  /** Project name */\n  project: string;\n  /** Workflow name */\n  name: string;\n  /** Workflow description */\n  description?: string;\n  /** YAML configuration */\n  yaml_config?: string;\n  /** Workflow execution mode */\n  mode: WorkflowModeType;\n  /** Whether workflow is shared */\n  shared: boolean;\n  /** URL to workflow icon */\n  icon_url?: string;\n  /** Creation date */\n  date: string;\n  /** Last update date */\n  update_date: string;\n  /** Creator information */\n  created_by: BaseUser;\n}\n\n/** Workflow model */\nexport interface Workflow {\n  /** Unique identifier */\n  id: string;\n  /** Project name */\n  project: string;\n  /** Workflow name */\n  name: string;\n  /** Workflow description */\n  description?: string;\n  /** YAML configuration */\n  yaml_config?: string;\n  /** Workflow execution mode */\n  mode: WorkflowModeType;\n  /** Whether workflow is shared */\n  shared: boolean;\n  /** URL to workflow icon */\n  icon_url?: string;\n  /** Creation date */\n  created_date: string;\n  /** Last update date */\n  update_date: string;\n  /** Creator information */\n  created_by: BaseUser;\n  /** Project display name, populated at response time */\n  display_name?: string | null;\n}\n\n/** Workflow execution API response */\nexport interface WorkflowExecutionResponse {\n  /** Unique identifier */\n  id: string;\n  /** Execution identifier */\n  execution_id: string;\n  /** Associated workflow identifier */\n  workflow_id: string;\n  /** Execution status */\n  overall_status: ExecutionStatusType;\n  /** Creation date */\n  date: string;\n  /** Execution prompt */\n  prompt: string;\n  /** Last update date */\n  updated_date?: string;\n  /** Creator information */\n  created_by: BaseUser;\n  /** Token usage statistics */\n  tokens_usage?: TokensUsage;\n}\n\n/** Model representing a workflow execution */\nexport interface WorkflowExecution {\n  /** Unique identifier */\n  id: string;\n  /** Execution identifier */\n  execution_id: string;\n  /** Associated workflow identifier */\n  workflow_id: string;\n  /** Execution status */\n  overall_status: ExecutionStatusType;\n  /** Creation date */\n  created_date: string;\n  /** Execution prompt */\n  prompt: string;\n  /** Last update date */\n  updated_date?: string;\n  /** Creator information */\n  created_by: BaseUser;\n  /** Token usage statistics */\n  tokens_usage?: TokensUsage;\n}\n\n/** Model for workflow execution state thought */\nexport interface WorkflowExecutionStateThought {\n  /** Unique identifier */\n  id: string;\n  /** Thought content */\n  text: string;\n  /** Creation timestamp */\n  created_at: string;\n  /** Parent thought identifier */\n  parent_id?: string;\n}\n\n/** Model for workflow execution state */\nexport interface WorkflowExecutionState {\n  /** Unique identifier */\n  id: string;\n  /** Execution identifier */\n  execution_id: string;\n  /** State name */\n  name: string;\n  /** Associated task */\n  task?: string;\n  /** State status */\n  status: ExecutionStatusType;\n  /** Start timestamp */\n  started_at?: string;\n  /** Completion timestamp */\n  completed_at?: string;\n}\n\n/** Model for workflow execution state output */\nexport interface WorkflowExecutionStateOutput {\n  /** Output content */\n  output?: string;\n}\n","import type { PaginatedResponse } from \"../models/common\";\nimport type { WorkflowExecutionState, WorkflowExecutionStateOutput } from \"../models/workflow\";\nimport {\n  WorkflowExecutionStateListParamsSchema,\n  type WorkflowExecutionStateListParams,\n} from \"../schemas/workflow\";\nimport type { ApiRequestHandler } from \"../utils/http\";\n\nexport class WorkflowExecutionStateService {\n  private api: ApiRequestHandler;\n  private workflowId: string;\n  private executionId: string;\n\n  constructor(api: ApiRequestHandler, workflowId: string, executionId: string) {\n    this.api = api;\n    this.workflowId = workflowId;\n    this.executionId = executionId;\n  }\n\n  /**\n   * List states for the workflow execution with filtering and pagination support.\n   */\n  async list(_params: WorkflowExecutionStateListParams = {}): Promise<WorkflowExecutionState[]> {\n    const params = WorkflowExecutionStateListParamsSchema.parse(_params);\n\n    const queryParams = {\n      page: params.page,\n      per_page: params.per_page,\n    };\n\n    const response = await this.api.get<PaginatedResponse<WorkflowExecutionState>>(\n      `/v1/workflows/${this.workflowId}/executions/${this.executionId}/states`,\n      queryParams,\n    );\n\n    return response.data;\n  }\n\n  /**\n   * Get output for a specific execution state.\n   */\n  async getOutput(stateId: string): Promise<WorkflowExecutionStateOutput> {\n    return this.api.get(\n      `/v1/workflows/${this.workflowId}/executions/${this.executionId}/states/${stateId}/output`,\n    );\n  }\n}\n","import { WorkflowMapper } from \"../mappers/workflow.mapper\";\nimport type { AnyJson, PaginatedResponse } from \"../models/common\";\nimport type { WorkflowExecution, WorkflowExecutionResponse } from \"../models/workflow\";\nimport {\n  WorkflowExecutionCreateParamsSchema,\n  WorkflowExecutionListParamsSchema,\n  type WorkflowExecutionListParams,\n} from \"../schemas/workflow\";\nimport type { ApiRequestHandler } from \"../utils/http\";\nimport { WorkflowExecutionStateService } from \"./workflow_execution_state\";\n\nexport class WorkflowExecutionService {\n  private api: ApiRequestHandler;\n  private workflowId: string;\n\n  constructor(api: ApiRequestHandler, workflowId: string) {\n    this.api = api;\n    this.workflowId = workflowId;\n  }\n\n  /**\n   * List executions for the workflow with filtering and pagination support.\n   */\n  async list(_params: WorkflowExecutionListParams = {}): Promise<WorkflowExecution[]> {\n    const params = WorkflowExecutionListParamsSchema.parse(_params);\n\n    const queryParams = {\n      page: params.page,\n      per_page: params.per_page,\n    };\n\n    const response = await this.api.get<PaginatedResponse<WorkflowExecutionResponse>>(\n      `/v1/workflows/${this.workflowId}/executions`,\n      queryParams,\n    );\n\n    return response.data.map(WorkflowMapper.mapWorkflowExecutionResponse);\n  }\n\n  /**\n   * Create a new workflow execution.\n   */\n  async create(\n    userInput?: string | Record<string, unknown> | unknown[] | number | boolean,\n    fileName?: string,\n    sessionId?: string,\n    propagateHeaders?: boolean,\n    headers?: Record<string, string>,\n    tags?: string[],\n  ): Promise<AnyJson> {\n    const params = WorkflowExecutionCreateParamsSchema.parse({\n      user_input: userInput,\n      file_name: fileName,\n      session_id: sessionId,\n      propagate_headers: propagateHeaders,\n      tags,\n    });\n    return this.api.post(`/v1/workflows/${this.workflowId}/executions`, params, {}, headers);\n  }\n\n  /**\n   * Get workflow execution by ID.\n   */\n  async get(executionId: string): Promise<WorkflowExecution> {\n    const response = await this.api.get<WorkflowExecutionResponse>(\n      `/v1/workflows/${this.workflowId}/executions/${executionId}`,\n    );\n    return WorkflowMapper.mapWorkflowExecutionResponse(response);\n  }\n\n  /**\n   * Get states service for a specific workflow execution.\n   */\n  states(executionId: string): WorkflowExecutionStateService {\n    return new WorkflowExecutionStateService(this.api, this.workflowId, executionId);\n  }\n\n  /**\n   * Delete all workflow executions.\n   */\n  async deleteAll(): Promise<AnyJson> {\n    return this.api.delete(`/v1/workflows/${this.workflowId}/executions`);\n  }\n\n  /**\n   * Abort a running workflow execution.\n   */\n  async abort(executionId: string): Promise<AnyJson> {\n    return this.api.put(`/v1/workflows/${this.workflowId}/executions/${executionId}/abort`);\n  }\n\n  /**\n   * Resume an interrupted workflow execution.\n   */\n  async resume(\n    executionId: string,\n    propagateHeaders?: boolean,\n    headers?: Record<string, string>,\n  ): Promise<AnyJson> {\n    const config = { params: { propagate_headers: propagateHeaders } };\n    // empty body per API; send {} with query param and optional headers\n    return this.api.put(\n      `/v1/workflows/${this.workflowId}/executions/${executionId}/resume`,\n      {},\n      config,\n      headers,\n    );\n  }\n}\n","import { WorkflowMapper } from \"../mappers/workflow.mapper\";\nimport type { AnyJson, PaginatedResponse, AuthConfig } from \"../models/common\";\nimport type { Workflow, WorkflowResponse } from \"../models/workflow\";\nimport {\n  WorkflowCreateParamsSchema,\n  type WorkflowCreateParams,\n  WorkflowEvaluationParamsSchema,\n  type WorkflowEvaluationParams,\n  WorkflowListParamsSchema,\n  type WorkflowListParams,\n  WorkflowUpdateParamsSchema,\n  type WorkflowUpdateParams,\n} from \"../schemas/workflow\";\nimport { ApiRequestHandler } from \"../utils/http\";\nimport { WorkflowExecutionService } from \"./workflow_execution\";\n\nexport class WorkflowService {\n  private api: ApiRequestHandler;\n\n  constructor(config: AuthConfig) {\n    this.api = new ApiRequestHandler(config);\n  }\n\n  /**\n   * Get list of prebuilt workflows.\n   */\n  async getPrebuilt(): Promise<Workflow[]> {\n    const response = await this.api.get<WorkflowResponse[]>(\"/v1/workflows/prebuilt\");\n    const prebuiltItems = Array.isArray(response) ? response : [];\n    return prebuiltItems.map(WorkflowMapper.mapWorkflowResponse);\n  }\n\n  /**\n   * Create a new workflow.\n   */\n  async create(_params: WorkflowCreateParams): Promise<AnyJson> {\n    const params = WorkflowCreateParamsSchema.parse(_params);\n    return this.api.post(\"/v1/workflows\", params);\n  }\n\n  /**\n   * Update an existing workflow.\n   */\n  async update(workflowId: string, _params: WorkflowUpdateParams): Promise<AnyJson> {\n    const params = WorkflowUpdateParamsSchema.parse(_params);\n    return this.api.put(`/v1/workflows/${workflowId}`, params);\n  }\n\n  /**\n   * List workflows with filtering and pagination support.\n   */\n  async list(_params: WorkflowListParams = {}): Promise<Workflow[]> {\n    const params = WorkflowListParamsSchema.parse(_params);\n\n    const queryParams: Record<string, number | string> = {\n      page: params.page,\n      per_page: params.per_page,\n    };\n\n    const filters: Record<string, string | string[]> = {};\n    if (params.projects?.length) filters.project = params.projects;\n    if (params.search) filters.name = params.search;\n    if (Object.keys(filters).length)\n      queryParams.filters = JSON.stringify(filters);\n\n    const workflows = await this.api.get<PaginatedResponse<WorkflowResponse>>(\n      \"/v1/workflows\",\n      queryParams,\n    );\n\n    const items = Array.isArray(workflows?.data) ? workflows.data : [];\n    return items.map(WorkflowMapper.mapWorkflowResponse);\n  }\n\n  /**\n   * Get workflow by ID.\n   */\n  async get(workflowId: string): Promise<Workflow> {\n    const response = await this.api.get<WorkflowResponse>(`/v1/workflows/id/${workflowId}`);\n    return WorkflowMapper.mapWorkflowResponse(response);\n  }\n\n  /**\n   * Delete a workflow by ID.\n   */\n  async delete(workflowId: string): Promise<AnyJson> {\n    return this.api.delete(`/v1/workflows/${workflowId}`);\n  }\n\n  /**\n   * Run a workflow by ID.\n   */\n  async run(\n    workflowId: string,\n    userInput?: string | Record<string, unknown> | unknown[] | number | boolean,\n    fileName?: string,\n    sessionId?: string,\n    propagateHeaders?: boolean,\n    headers?: Record<string, string>,\n    tags?: string[],\n  ): Promise<AnyJson> {\n    return this.executions(workflowId).create(\n      userInput,\n      fileName,\n      sessionId,\n      propagateHeaders,\n      headers,\n      tags,\n    );\n  }\n\n  /**\n   * Evaluate a workflow with a dataset.\n   */\n  async evaluate(workflowId: string, _params: WorkflowEvaluationParams): Promise<AnyJson> {\n    const params = WorkflowEvaluationParamsSchema.parse(_params);\n    return this.api.post(`/v1/workflows/${workflowId}/evaluate`, params);\n  }\n\n  /**\n   * Get workflow execution service for the specified workflow.\n   */\n  executions(workflowId: string): WorkflowExecutionService {\n    return new WorkflowExecutionService(this.api, workflowId);\n  }\n}\n","import { KeycloakCredentials } from \"../auth/credentials\";\nimport type { AuthConfig } from \"../models/common\";\nimport { AnalyticsService } from \"../services/analytics\";\nimport { AssistantService } from \"../services/assistant\";\nimport { ConversationService } from \"../services/conversation\";\nimport { DatasourceService } from \"../services/datasource\";\nimport { FileService } from \"../services/files\";\nimport { IntegrationService } from \"../services/integration\";\nimport { LLMService } from \"../services/llm\";\nimport { SkillService } from \"../services/skill\";\nimport { TaskService } from \"../services/task\";\nimport { UserService } from \"../services/user\";\nimport { CategoryService } from \"../services/category\";\nimport { WorkflowService } from \"../services/workflow\";\n\nexport interface CodeMieClientConfig {\n  auth_server_url?: string;\n  auth_realm_name?: string;\n  codemie_api_domain: string;\n  auth_client_id?: string;\n  auth_client_secret?: string;\n  username?: string;\n  password?: string;\n  external_token?: string;\n  external_idp?: string;\n  cookies?: Record<string, string>;\n  verify_ssl?: boolean;\n  jwt_token?: string;\n}\n\nexport class CodeMieClient {\n  private auth: KeycloakCredentials | null = null;\n  private token: string | null = null;\n  private cookies: Record<string, string>;\n  private apiDomain: string;\n  private verifySSL: boolean;\n  private useCookieAuth: boolean;\n  private _isJwtAuth = false;\n  private _jwtToken: string | null = null;\n\n  // Service instances\n  private _analytics: AnalyticsService;\n  private _assistants: AssistantService;\n  private _conversations: ConversationService;\n  private _datasources: DatasourceService;\n  private _files: FileService;\n  private _integrations: IntegrationService;\n  private _llms: LLMService;\n  private _skills: SkillService;\n  private _tasks: TaskService;\n  private _users: UserService;\n  private _categories: CategoryService;\n  private _workflows: WorkflowService;\n\n  constructor(config: CodeMieClientConfig) {\n    const {\n      auth_server_url,\n      auth_realm_name,\n      codemie_api_domain,\n      auth_client_id,\n      auth_client_secret,\n      username,\n      password,\n      external_token,\n      external_idp,\n      cookies,\n      verify_ssl = true,\n      jwt_token,\n    } = config;\n\n    this.apiDomain = codemie_api_domain.replace(/\\/$/, \"\");\n    this.verifySSL = verify_ssl;\n    this.cookies = cookies || {};\n    this.useCookieAuth = !!cookies && Object.keys(cookies).length > 0;\n    this._isJwtAuth = !!jwt_token;\n\n    if (this._isJwtAuth) {\n      this._jwtToken = jwt_token ?? null;\n    } else if (!this.useCookieAuth) {\n      if (!auth_server_url || !auth_realm_name) {\n        throw new Error(\n          \"auth_server_url and auth_realm_name are required when not using cookie authentication\",\n        );\n      }\n\n      this.auth = new KeycloakCredentials({\n        serverUrl: auth_server_url,\n        realmName: auth_realm_name,\n        clientId: auth_client_id,\n        clientSecret: auth_client_secret,\n        username: username,\n        password: password,\n        externalToken: external_token,\n        externalIdp: external_idp,\n        verifySSL: verify_ssl,\n      });\n      this.token = \"\";\n    }\n\n    let tokenGetter: AuthConfig[\"tokenGetter\"];\n    if (this._isJwtAuth) {\n      tokenGetter = () => {\n        if (!this._jwtToken) throw new Error(\"JWT token not configured\");\n        return Promise.resolve(this._jwtToken);\n      };\n    } else {\n      // biome-ignore lint/style/noNonNullAssertion: auth is non-null here, guarded by ternary\n      tokenGetter = this.auth ? () => this.auth!.getToken() : null;\n    }\n\n    const authConfig: AuthConfig = {\n      apiDomain: this.apiDomain,\n      token: this.token,\n      verifySSL: this.verifySSL,\n      cookies: this.cookies,\n      tokenGetter,\n    };\n\n    this._analytics = new AnalyticsService(authConfig);\n    this._assistants = new AssistantService(authConfig);\n    this._conversations = new ConversationService(authConfig);\n    this._datasources = new DatasourceService(authConfig);\n    this._files = new FileService(authConfig);\n    this._integrations = new IntegrationService(authConfig);\n    this._llms = new LLMService(authConfig);\n    this._tasks = new TaskService(authConfig);\n    this._skills = new SkillService(authConfig);\n    this._users = new UserService(authConfig);\n    this._categories = new CategoryService(authConfig);\n    this._workflows = new WorkflowService(authConfig);\n  }\n\n  /**\n   * Get the AnalyticsService instance.\n   */\n  get analytics(): AnalyticsService {\n    return this._analytics;\n  }\n\n  /**\n   * Get the AssistantService instance.\n   */\n  get assistants(): AssistantService {\n    return this._assistants;\n  }\n\n  /**\n   * Get the ConversationService instance.\n   */\n  get conversations(): ConversationService {\n    return this._conversations;\n  }\n\n  /**\n   * Get the LLMService instance.\n   */\n  get llms(): LLMService {\n    return this._llms;\n  }\n\n  /**\n   * Get the IntegrationService instance.\n   */\n  get integrations(): IntegrationService {\n    return this._integrations;\n  }\n\n  /**\n   * Get the TaskService instance.\n   */\n  get tasks(): TaskService {\n    return this._tasks;\n  }\n\n  /**\n   * Get the UserService instance.\n   */\n  get users(): UserService {\n    return this._users;\n  }\n\n  /**\n   * Get the DatasourceService instance.\n   */\n  get datasources(): DatasourceService {\n    return this._datasources;\n  }\n\n  /**\n   * Get the FileService instance.\n   */\n  get files(): FileService {\n    return this._files;\n  }\n\n  /**\n   * Get the CategoryService instance.\n   */\n  get categories(): CategoryService {\n    return this._categories;\n  }\n\n  /**\n   * Get the SkillService instance.\n   */\n  get skills(): SkillService {\n    return this._skills;\n  }\n\n  /**\n   * Get the WorkflowService instance.\n   */\n  get workflows(): WorkflowService {\n    return this._workflows;\n  }\n\n  /**\n   * Initialize the client by obtaining the initial token.\n   * This should be called after creating the client instance.\n   * When using cookie-based or JWT token authentication, this is a no-op.\n   */\n  async initialize(): Promise<void> {\n    if (this.useCookieAuth || this._isJwtAuth) {\n      return;\n    }\n\n    if (!this.auth) {\n      throw new Error(\"Authentication not configured\");\n    }\n\n    this.token = await this.auth.getToken();\n    await this.refreshServices();\n  }\n\n  /**\n   * Get the current access token or fetch a new one if not available.\n   * Returns null when using cookie-based authentication.\n   */\n  async getToken(): Promise<string | null> {\n    if (this.useCookieAuth) {\n      return null;\n    }\n\n    if (this._isJwtAuth) {\n      return this._jwtToken;\n    }\n\n    if (!this.auth) {\n      throw new Error(\"Authentication not configured\");\n    }\n\n    if (!this.token) {\n      this.token = await this.auth.getToken();\n      await this.refreshServices();\n    }\n    return this.token;\n  }\n\n  /**\n   * Force token refresh and update all services with the new token.\n   * Throws an error when using cookie-based authentication.\n   * Returns the static token unchanged when using JWT authentication.\n   */\n  async refreshToken(): Promise<string> {\n    if (this.useCookieAuth) {\n      throw new Error(\"Token refresh is not supported with cookie-based authentication\");\n    }\n\n    if (this._isJwtAuth) {\n      if (!this._jwtToken) throw new Error(\"JWT token not configured\");\n      return this._jwtToken;\n    }\n\n    if (!this.auth) {\n      throw new Error(\"Authentication not configured\");\n    }\n\n    this.auth.clearCache();\n    this.token = await this.auth.getToken();\n    await this.refreshServices();\n    return this.token;\n  }\n\n  /**\n   * Reinitialize all services with the current token or cookies.\n   */\n  private async refreshServices(): Promise<void> {\n    if (this.useCookieAuth || this._isJwtAuth) {\n      return;\n    }\n\n    if (!this.token) {\n      throw new Error(\"Token not available\");\n    }\n\n    const authConfig: AuthConfig = {\n      apiDomain: this.apiDomain,\n      token: this.token,\n      verifySSL: this.verifySSL,\n      cookies: this.cookies,\n      // biome-ignore lint/style/noNonNullAssertion: auth is non-null here, guarded by ternary\n      tokenGetter: this.auth ? () => this.auth!.getToken() : null,\n    };\n\n    this._analytics = new AnalyticsService(authConfig);\n    this._assistants = new AssistantService(authConfig);\n    this._conversations = new ConversationService(authConfig);\n    this._datasources = new DatasourceService(authConfig);\n    this._files = new FileService(authConfig);\n    this._integrations = new IntegrationService(authConfig);\n    this._llms = new LLMService(authConfig);\n    this._skills = new SkillService(authConfig);\n    this._tasks = new TaskService(authConfig);\n    this._users = new UserService(authConfig);\n    this._categories = new CategoryService(authConfig);\n    this._workflows = new WorkflowService(authConfig);\n  }\n}\n","/** Models for assistant-related data structures. */\n\nimport type { BaseUser } from \"./common\";\nimport type { Integration } from \"./integration\";\nimport type { AgentErrorDetails, ToolErrorDetails } from \"./errors\";\n\nexport enum ContextType {\n  KNOWLEDGE_BASE = \"knowledge_base\",\n  CODE = \"code\",\n}\n\nexport enum ChatRole {\n  ASSISTANT = \"Assistant\",\n  USER = \"User\",\n}\n\nexport interface ToolDetails {\n  description?: string | null;\n  label?: string;\n  name: string;\n  settings?: Integration | null;\n  settings_config: boolean;\n  user_description?: string;\n}\n\nexport interface ToolKitDetails {\n  is_external: boolean;\n  label: string;\n  settings?: Integration;\n  settings_config: boolean;\n  toolkit: string;\n  tools: ToolDetails[];\n}\n\nexport interface Context {\n  context_type: ContextType;\n  name: string;\n}\n\nexport interface PromptVariable {\n  key: string;\n  description?: string;\n  default_value: string;\n}\n\nexport interface MCPServerConfig {\n  command?: string;\n  url?: string;\n  args?: string[];\n  env?: Record<string, unknown>;\n  headers?: Record<string, string>;\n  type?: string;\n  auth_token?: string;\n  single_usage?: boolean;\n  audience?: string;\n}\n\nexport interface MCPServerDetails {\n  name: string;\n  description?: string;\n  enabled: boolean;\n  config?: MCPServerConfig;\n  mcp_connect_url?: string;\n  tools_tokens_size_limit?: number;\n  command?: string;\n  arguments?: string;\n  settings?: Integration;\n  mcp_connect_auth_token?: Integration;\n}\n\nexport interface SystemPromptHistory {\n  system_prompt: string;\n  date: string;\n  created_by?: BaseUser;\n}\n\nexport interface AssistantCategory {\n  id: string;\n  name: string;\n  description?: string;\n}\n\nexport interface AssistantBase {\n  id: string;\n  created_by?: BaseUser;\n  description: string;\n  icon_url?: string;\n  name: string;\n}\n\nexport interface Assistant extends AssistantBase {\n  display_name?: string | null;\n  assistant_ids: string[];\n  categories?: AssistantCategory[];\n  context: Context[];\n  skill_ids?: string[];\n  conversation_starters: string[];\n  created_date?: string;\n  creator: string;\n  is_global: boolean;\n  is_react: boolean;\n  llm_model_type?: string;\n  mcp_servers: MCPServerDetails[];\n  nested_assistants: Partial<Assistant>[];\n  project: string;\n  prompt_variables?: PromptVariable[];\n  shared: boolean;\n  slug?: string;\n  system_prompt: string;\n  system_prompt_history: SystemPromptHistory[];\n  temperature?: number;\n  toolkits: ToolKitDetails[];\n  top_p?: number;\n  unique_users_count?: number;\n  updated_date?: string;\n  user_abilities?: unknown[];\n  version_count?: number;\n}\n\n/**\n * API response for assistant chat (camelCase format from API).\n *\n * Error fields expose agent and tool errors.\n */\nexport interface BaseModelApiResponse {\n  generated: string;\n  timeElapsed?: number;\n  tokensUsed?: number;\n  thoughts?: Record<string, unknown>[];\n  taskId?: string;\n  success?: boolean;\n  agentError?: AgentErrorDetails;\n  toolErrors?: ToolErrorDetails[];\n}\n\n/**\n * Client-facing response for assistant chat (snake_case format).\n *\n * Error fields expose agent and tool errors without breaking backward\n * compatibility (all error fields optional).\n */\nexport interface BaseModelResponse {\n  generated: string | object | unknown;\n  time_elapsed?: number;\n  tokens_used?: number;\n  thoughts?: Record<string, unknown>[];\n  task_id?: string;\n  success?: boolean;\n  agent_error?: AgentErrorDetails;\n  tool_errors?: ToolErrorDetails[];\n}\n\n// Assistant versioning models\nexport interface AssistantVersion {\n  version_number: number;\n  created_date: string;\n  created_by?: BaseUser;\n  change_notes?: string;\n  description?: string;\n  system_prompt: string;\n  llm_model_type?: string;\n  temperature?: number;\n  top_p?: number;\n  context: Context[];\n  toolkits: ToolKitDetails[];\n  mcp_servers: MCPServerDetails[];\n  assistant_ids: string[];\n  prompt_variables?: PromptVariable[];\n  // allow future fields without breaking consumers\n  [key: string]: unknown;\n}\n\n// Assistant validation models\nexport interface MissingIntegration {\n  toolkit: string;\n  tool: string;\n  label: string;\n  credential_type?: string;\n}\n\nexport interface MissingIntegrationsByCredentialType {\n  credential_type: string;\n  missing_tools: MissingIntegration[];\n  assistant_id?: string;\n  assistant_name?: string;\n  icon_url?: string;\n}\n\nexport interface IntegrationValidationResult {\n  has_missing_integrations: boolean;\n  missing_by_credential_type: MissingIntegrationsByCredentialType[];\n  sub_assistants_missing: MissingIntegrationsByCredentialType[];\n  message?: string;\n}\n\nexport interface AssistantCreateResponse {\n  message: string;\n  assistant_id?: string;\n  validation?: IntegrationValidationResult;\n}\n\nexport interface AssistantUpdateResponse {\n  message: string;\n  validation?: IntegrationValidationResult;\n}\n\n// Note: compareVersions returns a generic object; no strict SDK interface is defined\n","/**\n * Error models for structured error handling in CodeMie SDK responses.\n *\n * This module provides error classification and structured error details that match\n * the CodeMie API error response format, enabling proper error handling without\n * parsing error messages.\n */\n\n/**\n * High-level categorization of errors in the CodeMie system.\n *\n * Separates errors by their source to enable proper handling and debugging.\n */\nexport enum ErrorCategory {\n  AGENT = \"agent\", // Agent-level errors (execution, callbacks, etc.)\n  TOOL = \"tool\", // Tool execution errors (HTTP errors, timeouts, etc.)\n  LLM = \"llm\", // LLM provider errors (rate limits, content policy, etc.)\n  VALIDATION = \"validation\", // Input/output validation errors\n}\n\n/**\n * Specific error codes for detailed error classification.\n *\n * These codes enable clients to programmatically handle different error scenarios\n * without parsing error messages.\n */\nexport enum ErrorCode {\n  // Agent errors - internal execution issues\n  AGENT_TIMEOUT = \"agent_timeout\",\n  AGENT_TOKEN_LIMIT = \"agent_token_limit\",\n  AGENT_BUDGET_EXCEEDED = \"agent_budget_exceeded\",\n  AGENT_CALLBACK_FAILURE = \"agent_callback_failure\",\n  AGENT_NETWORK_ERROR = \"agent_network_error\",\n  AGENT_CONFIGURATION_ERROR = \"agent_configuration_error\",\n  AGENT_INTERNAL_ERROR = \"agent_internal_error\",\n\n  // Tool errors - external service/integration errors\n  TOOL_AUTHENTICATION = \"tool_authentication\", // 401 Unauthorized\n  TOOL_AUTHORIZATION = \"tool_authorization\", // 403 Forbidden\n  TOOL_NOT_FOUND = \"tool_not_found\", // 404 Not Found\n  TOOL_CONFLICT = \"tool_conflict\", // 409 Conflict\n  TOOL_RATE_LIMITED = \"tool_rate_limited\", // 429 Too Many Requests\n  TOOL_SERVER_ERROR = \"tool_server_error\", // 5xx Server Error\n  TOOL_TIMEOUT = \"tool_timeout\",\n  TOOL_VALIDATION = \"tool_validation\", // Invalid tool input\n  TOOL_NETWORK_ERROR = \"tool_network_error\",\n  TOOL_EXECUTION_FAILED = \"tool_execution_failed\", // Generic tool failure\n\n  // LLM errors - provider-specific errors\n  LLM_CONTENT_POLICY = \"llm_content_policy\",\n  LLM_CONTEXT_LENGTH = \"llm_context_length\",\n  LLM_UNAVAILABLE = \"llm_unavailable\",\n  LLM_RATE_LIMITED = \"llm_rate_limited\",\n  LLM_INVALID_REQUEST = \"llm_invalid_request\",\n\n  // Validation errors - input/output validation\n  VALIDATION_INPUT = \"validation_input\",\n  VALIDATION_OUTPUT = \"validation_output\",\n  VALIDATION_SCHEMA = \"validation_schema\",\n}\n\n/**\n * Structured details for a tool execution error.\n *\n * Captures comprehensive information about tool failures to enable proper\n * debugging and error handling without relying on the LLM to interpret errors.\n */\nexport interface ToolErrorDetails {\n  /** Name of the tool that encountered an error */\n  tool_name: string;\n  /** Unique identifier for the tool call */\n  tool_call_id?: string;\n  /** Classified error code for programmatic handling */\n  error_code: ErrorCode;\n  /** Human-readable error message */\n  message: string;\n  /** HTTP status code if applicable (401, 403, 404, 5xx, etc.) */\n  http_status?: number;\n  /** Additional error context (integration name, action, etc.) */\n  details?: Record<string, unknown>;\n  /** ISO 8601 timestamp of when error occurred */\n  timestamp: string;\n}\n\n/**\n * Error verbosity level for API responses.\n *\n * Controls how much detail is included in tool error responses:\n * - Minimal: Only error code and message (for production clients)\n * - Standard: Adds HTTP status and tool_call_id (default, for debugging)\n * - Full: Includes all details including timestamp (for development)\n */\nexport enum ErrorDetailLevel {\n  Minimal = \"minimal\",\n  Standard = \"standard\",\n  Full = \"full\",\n}\n\n/**\n * Structured details for an agent-level error.\n *\n * Captures agent execution failures that are not related to specific tools,\n * such as token limits, budget constraints, or internal errors.\n */\nexport interface AgentErrorDetails {\n  /** Classified error code for programmatic handling */\n  error_code: ErrorCode;\n  /** Human-readable error message */\n  message: string;\n  /** Additional error context */\n  details?: Record<string, unknown>;\n  /** Full stacktrace for debugging (only in debug mode) */\n  stacktrace?: string;\n}\n\n/**\n * Complete error response with separated agent and tool errors.\n *\n * This structure ensures that errors from different sources are clearly\n * distinguished and not absorbed by the LLM's response text.\n */\nexport interface ErrorResponse {\n  /** High-level error category */\n  category: ErrorCategory;\n  /** Agent-level error details (if applicable) */\n  agent_error?: AgentErrorDetails;\n  /** Tool error details (multiple tools can fail) */\n  tool_errors?: ToolErrorDetails[];\n  /** Whether the error is recoverable */\n  is_recoverable: boolean;\n}\n\n/**\n * Format tool error details to minimal format (code + message only).\n */\nexport function formatToolErrorMinimal(error: ToolErrorDetails): Record<string, unknown> {\n  return {\n    tool_name: error.tool_name,\n    error_code: error.error_code,\n    message: error.message,\n  };\n}\n\n/**\n * Format tool error details to standard format (+ http_status, tool_call_id).\n */\nexport function formatToolErrorStandard(error: ToolErrorDetails): Record<string, unknown> {\n  return {\n    tool_name: error.tool_name,\n    tool_call_id: error.tool_call_id,\n    error_code: error.error_code,\n    message: error.message,\n    http_status: error.http_status,\n  };\n}\n\n/**\n * Format tool error details to full format (all fields).\n */\nexport function formatToolErrorFull(error: ToolErrorDetails): Record<string, unknown> {\n  return { ...error };\n}\n\n/**\n * Format tool error details based on verbosity level.\n */\nexport function formatToolErrorForLevel(\n  error: ToolErrorDetails,\n  level: ErrorDetailLevel,\n): Record<string, unknown> {\n  switch (level) {\n    case ErrorDetailLevel.Minimal:\n      return formatToolErrorMinimal(error);\n    case ErrorDetailLevel.Standard:\n      return formatToolErrorStandard(error);\n    case ErrorDetailLevel.Full:\n      return formatToolErrorFull(error);\n  }\n}\n\n/**\n * HTTP status code to error code mapping.\n */\nexport const HTTP_STATUS_TO_ERROR_CODE: Record<number, ErrorCode> = {\n  // Client errors (4xx)\n  401: ErrorCode.TOOL_AUTHENTICATION,\n  403: ErrorCode.TOOL_AUTHORIZATION,\n  404: ErrorCode.TOOL_NOT_FOUND,\n  409: ErrorCode.TOOL_CONFLICT,\n  429: ErrorCode.TOOL_RATE_LIMITED,\n  // Server errors (5xx)\n  500: ErrorCode.TOOL_SERVER_ERROR,\n  501: ErrorCode.TOOL_SERVER_ERROR,\n  502: ErrorCode.TOOL_SERVER_ERROR,\n  503: ErrorCode.TOOL_SERVER_ERROR,\n  504: ErrorCode.TOOL_SERVER_ERROR,\n  505: ErrorCode.TOOL_SERVER_ERROR,\n  506: ErrorCode.TOOL_SERVER_ERROR,\n  507: ErrorCode.TOOL_SERVER_ERROR,\n  508: ErrorCode.TOOL_SERVER_ERROR,\n  509: ErrorCode.TOOL_SERVER_ERROR,\n  510: ErrorCode.TOOL_SERVER_ERROR,\n  511: ErrorCode.TOOL_SERVER_ERROR,\n};\n\n/**\n * Error message keywords to error code mapping.\n */\nexport const ERROR_MESSAGE_PATTERNS: Record<string, ErrorCode> = {\n  timeout: ErrorCode.TOOL_TIMEOUT,\n  network: ErrorCode.TOOL_NETWORK_ERROR,\n  connection: ErrorCode.TOOL_NETWORK_ERROR,\n  validation: ErrorCode.TOOL_VALIDATION,\n  invalid: ErrorCode.TOOL_VALIDATION,\n};\n\n/**\n * Classify error based on HTTP status code only.\n *\n * Uses dictionary mapping for efficient lookup of common HTTP status codes.\n * This is the primary classification method - message-based classification is only\n * used as a fallback when status code classification yields a generic result.\n */\nfunction classifyByHttpStatus(statusCode: number): ErrorCode {\n  // Try direct lookup first\n  if (statusCode in HTTP_STATUS_TO_ERROR_CODE) {\n    return HTTP_STATUS_TO_ERROR_CODE[statusCode];\n  }\n\n  // Fallback for any 5xx not in the dict\n  if (statusCode >= 500 && statusCode < 600) {\n    return ErrorCode.TOOL_SERVER_ERROR;\n  }\n\n  // Default for unknown status codes\n  return ErrorCode.TOOL_EXECUTION_FAILED;\n}\n\n/**\n * Classify error based on error message content.\n *\n * Checks for keywords in the error message to determine error type.\n */\nfunction classifyByMessage(errorMessage: string): ErrorCode {\n  const errorLower = errorMessage.toLowerCase();\n\n  // Check each pattern\n  for (const [keyword, errorCode] of Object.entries(ERROR_MESSAGE_PATTERNS)) {\n    if (errorLower.includes(keyword)) {\n      return errorCode;\n    }\n  }\n\n  // Default for unrecognized error messages\n  return ErrorCode.TOOL_EXECUTION_FAILED;\n}\n\n/**\n * Classify HTTP status codes into appropriate ErrorCode values.\n *\n * Uses a two-stage classification approach:\n * 1. Primary: Classification by HTTP status code using dictionary mapping\n * 2. Fallback: If status yields generic result, analyze error message content\n */\nexport function classifyHttpError(statusCode: number, errorMessage = \"\"): ErrorCode {\n  // First, try classification by HTTP status\n  let errorCode = classifyByHttpStatus(statusCode);\n\n  // If we got a generic error and have a message, try message-based classification\n  if (errorCode === ErrorCode.TOOL_EXECUTION_FAILED && errorMessage) {\n    errorCode = classifyByMessage(errorMessage);\n  }\n\n  return errorCode;\n}\n\n/**\n * Determine if an error is recoverable (can be retried).\n */\nexport function isRecoverableError(errorCode: ErrorCode): boolean {\n  const recoverableErrors = new Set([\n    ErrorCode.TOOL_TIMEOUT,\n    ErrorCode.TOOL_RATE_LIMITED,\n    ErrorCode.TOOL_SERVER_ERROR,\n    ErrorCode.TOOL_NETWORK_ERROR,\n    ErrorCode.AGENT_NETWORK_ERROR,\n    ErrorCode.LLM_RATE_LIMITED,\n    ErrorCode.LLM_UNAVAILABLE,\n  ]);\n  return recoverableErrors.has(errorCode);\n}\n","/** Models for LLM service. */\n\n/** LLM provider options as constant object */\nexport const LLMProvider = {\n  AZURE_OPENAI: \"azure_openai\",\n  AWS_BEDROCK: \"aws_bedrock\",\n  GOOGLE_VERTEXAI: \"google_vertexai\",\n} as const;\n\nexport type LLMProviderType = (typeof LLMProvider)[keyof typeof LLMProvider];\n\n/** Cost configuration for LLM model */\nexport interface CostConfig {\n  /** Cost per input token */\n  input: number;\n  /** Cost per output token */\n  output: number;\n}\n\n/** Features supported by LLM model */\nexport interface LLMFeatures {\n  /** Support for streaming responses */\n  streaming: boolean;\n  /** Support for tool usage */\n  tools: boolean;\n  /** Support for temperature parameter */\n  temperature: boolean;\n  /** Support for parallel tool calls */\n  parallel_tool_calls: boolean;\n  /** Support for system prompt */\n  system_prompt: boolean;\n  /** Support for max tokens parameter */\n  max_tokens: boolean;\n}\n\n/** LLM model configuration. */\nexport interface LLMModel {\n  /** Base name of the model */\n  base_name: string;\n  /** Deployment name */\n  deployment_name: string;\n  /** Display label */\n  label?: string;\n  /** Whether model supports multimodal inputs */\n  multimodal?: boolean;\n  /** Whether model supports react agent pattern */\n  react_agent?: boolean;\n  /** Whether the model is enabled */\n  enabled: boolean;\n  /** LLM provider */\n  provider?: LLMProviderType;\n  /** Whether this is the default model */\n  default?: boolean;\n  /** Cost configuration */\n  cost?: CostConfig;\n  /** Maximum output tokens */\n  max_output_tokens?: number;\n  /** Supported features */\n  features: LLMFeatures;\n}\n","/** Models for task service. */\n\n/** Background task status constants */\nexport const BackgroundTaskStatus = {\n  STARTED: \"STARTED\",\n  COMPLETED: \"COMPLETED\",\n  FAILED: \"FAILED\",\n} as const;\nexport type BackgroundTaskStatusType =\n  (typeof BackgroundTaskStatus)[keyof typeof BackgroundTaskStatus];\n\n/** Model representing task user information */\nexport interface TaskUser {\n  /** Unique identifier of the user */\n  user_id: string;\n  /** Username of the task owner */\n  username: string;\n  /** Display name of the task owner */\n  name: string;\n}\n\n/** Model representing a background task */\nexport interface BackgroundTaskEntity {\n  /** Unique identifier of the task */\n  id: string;\n  /** Task description or name */\n  task: string;\n  /** Information about the task owner */\n  user: TaskUser;\n  /** The final result or output of the task */\n  final_output?: string;\n  /** Current step or stage of the task */\n  current_step?: string;\n  /** Task status (STARTED, COMPLETED, or FAILED) */\n  status: BackgroundTaskStatusType;\n  /** Task creation timestamp */\n  date: string;\n  /** Last update timestamp */\n  update_date: string;\n}\n","// Copyright 2026 EPAM Systems, Inc. (\"EPAM\")\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { z } from 'zod'\n\nexport const ProjectSchema = z.object({\n  name: z.string(),\n  display_name: z.string().max(150).nullable().optional(),\n  description: z.string().optional(),\n  project_type: z.string().optional(),\n  created_by: z.string().optional(),\n  created_at: z.string().optional(),\n})\n\nexport type Project = z.infer<typeof ProjectSchema>\n"],"mappings":"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","names":["axios","import_node_https","import_axios","axios","errorMessage","import_zod","import_zod","import_zod","FormData","import_form_data","FormData","import_zod","import_zod","SkillVisibility","SkillScopeFilter","SkillSortBy","SkillCategory","import_zod","ContextType","ChatRole","ErrorCategory","ErrorCode","ErrorDetailLevel","import_zod"]}