codemie-sdk 0.1.280 → 0.1.282
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -3
- package/dist/index.d.ts +40 -3
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/auth/credentials.ts","../src/utils/helpers.ts","../src/mappers/assistant.mapper.ts","../src/services/assistant.ts","../src/schemas/assistant.ts","../src/utils/http.ts","../src/exceptions/exceptions.ts","../src/schemas/conversation.ts","../src/services/conversation.ts","../src/services/datasource.ts","../src/models/datasource.ts","../src/mappers/datasource.mapper.ts","../src/models/integration.ts","../src/schemas/integration.ts","../src/services/integration.ts","../src/services/llm.ts","../src/services/task.ts","../src/mappers/user.mapper.ts","../src/services/user.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/llm.ts","../src/models/task.ts"],"sourcesContent":["import { Agent } from \"node:https\";\nimport axios 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\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 { serverUrl, realmName } = this.config;\n const url = `${serverUrl}/realms/${realmName}/protocol/openid-connect/token`;\n\n const payload =\n this.config.username && this.config.password\n ? this.createResourceOwnerCredentialsPayload()\n : this.createClientCredentialsPayload();\n\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 return data.access_token;\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 if (!((config.clientId && config.clientSecret) || (config.username && config.password))) {\n throw new Error(\n \"Either client credentials (clientId, clientSecret) or \" +\n \"user credentials (username, password) must be provided\",\n );\n }\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 });\n }\n}\n","import {AssistantMapper} from \"../mappers/assistant.mapper\";\nimport type {\n Assistant,\n AssistantBase,\n AssistantVersion,\n BaseModelApiResponse,\n BaseModelResponse,\n ToolKitDetails,\n} from \"../models/assistant\";\nimport type {AnyJson, PaginatedResponse} from \"../models/common\";\nimport {z} from \"zod\";\nimport {zodToJsonSchema} from \"zod-to-json-schema\";\nimport {\n AssistantChatParamsSchema,\n type AssistantCreateParams,\n AssistantCreateParamsSchema,\n type AssistantListParams,\n AssistantListParamsSchema,\n type AssistantUpdateParams,\n AssistantUpdateParamsSchema,\n type AssistantChatParams,\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(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 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 */\n async create(_params: AssistantCreateParams): Promise<AnyJson> {\n const params = AssistantCreateParamsSchema.parse(_params);\n return this.api.post(\"/v1/assistants\", params);\n }\n\n /**\n * Update an existing assistant.\n */\n async update(assistantId: string, _params: AssistantUpdateParams): Promise<AnyJson> {\n const params = AssistantUpdateParamsSchema.parse(_params);\n return this.api.put(`/v1/assistants/${assistantId}`, params);\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 (response && \"versions\" in response && Array.isArray((response as { versions: unknown }).versions)) {\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 = zodToJsonSchema(zodSchema, {\n definitions: {},\n });\n\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 = zodToJsonSchema(zodSchema, { definitions: {} });\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 );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 = zodToJsonSchema(zodSchema, {\n definitions: {},\n });\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}","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.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\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: z\n .object({\n command: z.string(),\n args: z.array(z.string()).optional(),\n env: z.record(z.unknown()).optional(),\n auth_token: z.string().optional(),\n })\n .optional(),\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 prompt_variables: z.array(PromptVariableSchema).optional().default([]),\n categories: z.array(z.string()).max(3).optional(),\n })\n .readonly();\nexport type AssistantCreateParams = z.infer<typeof AssistantCreateParamsSchema>;\n\nexport const AssistantUpdateParamsSchema = AssistantCreateParamsSchema;\nexport type AssistantUpdateParams = z.infer<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.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.unknown()).optional(),\n mcp_server_single_usage: z.boolean().optional(),\n\n version: z.number().optional(),\n output_schema: z.union([\n z.custom(val => val instanceof z.ZodType),\n z.record(z.unknown())\n ]).optional(),\n })\n .readonly();\nexport type AssistantChatParams = z.infer<typeof AssistantChatParamsSchema>;\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<z.infer<typeof AssistantVersionsListParamsSchema>>;\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\";\n\nexport interface ApiResponse<T> {\n data: T;\n}\n\nexport class ApiRequestHandler {\n private client: AxiosInstance;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.client = axios.create({\n baseURL: apiDomain.replace(/\\/$/, \"\"), // Remove trailing slash\n validateStatus: (status: number) => status < 400,\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\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\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>(path: string, data?: unknown, config: Record<string, unknown> = {}, extraHeaders?: Record<string, string>): Promise<T> {\n return this.request<T>(\"post\", path, this.withHeaders({ ...config, data }, extraHeaders));\n }\n\n async put<T>(path: string, data?: unknown, config: Record<string, unknown> = {}, extraHeaders?: Record<string, string>): Promise<T> {\n return this.request<T>(\"put\", path, this.withHeaders({ ...config, data }, extraHeaders));\n }\n\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\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, 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 { 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().default(false).optional(),\n })\n .readonly();\n\nexport type ConversationCreateParams = z.infer<typeof ConversationCreateParamsSchema>;","import type { Conversation, ConversationDetails } from \"../models/conversation\";\nimport type { AnyJson } from \"../models/common\";\nimport { ConversationCreateParamsSchema, type ConversationCreateParams } from \"../schemas/conversation\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class ConversationService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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}","import FormData from \"form-data\";\nimport { DatasourceMapper } from \"../mappers/datasource.mapper\";\nimport type { AnyJson, PaginatedResponse } from \"../models/common\";\nimport type {\n DataSource,\n DataSourceCreateParams,\n DataSourceListParams,\n DataSourceResponse,\n DataSourceTypeType,\n DataSourceUpdateParams,\n FileDataSourceCreateParams,\n} from \"../models/datasource\";\nimport { DataSourceType } from \"../models/datasource\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nconst DATA_SOURCE_TO_PATH_PARAM = {\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};\n\nexport class DatasourceService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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) {\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 queryParams.filters = JSON.stringify(filters);\n }\n\n const response = await this.api.get<PaginatedResponse<DataSourceResponse>>(\n \"/v1/index\",\n queryParams,\n );\n\n return response.data.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 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 }\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} 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?: boolean;\n pages_per_request?: boolean;\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 settingId: string;\n projectSpaceVisible?: boolean;\n link: string;\n branch: string;\n indexType: CodeDataSourceTypeType;\n filesFilter?: string;\n embeddingsModel?: string;\n summarizationModel?: string;\n prompt?: string;\n docsGeneration?: boolean;\n}\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}\n\nexport type DataSourceCreateDto =\n | ConfluenceDataSourceCreateDto\n | JiraDataSourceCreateDto\n | GoogleDataSourceCreateDto\n | FileDataSourceCreateDto\n | CodeDataSourceCreateDto\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}\n\nexport type DataSourceUpdateDto =\n | ConfluenceDataSourceUpdateDto\n | JiraDataSourceUpdateDto\n | GoogleDataSourceUpdateDto\n | FileDataSourceUpdateDto\n | CodeDataSourceUpdateDto\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\n/** Datasource response interface */\nexport interface DataSourceResponse {\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 /** Current status */\n status: DataSourceStatusType;\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 /** Code-specific configuration */\n code?: 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}\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;\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?: 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}\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};\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 OtherDataSourceCreateParams extends BaseDataSourceCreateParams {\n type:\n | typeof DataSourceType.PROVIDER\n | typeof DataSourceType.SUMMARY\n | typeof DataSourceType.CHUNK_SUMMARY\n | typeof DataSourceType.JSON;\n}\n\n/** DataSource create parameters */\nexport type DataSourceCreateParams =\n | ConfluenceDataSourceCreateParams\n | JiraDataSourceCreateParams\n | GoogleDataSourceCreateParams\n | FileDataSourceCreateParams\n | CodeDataSourceCreateParams\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 OtherDataSourceUpdateParams extends BaseDataSourceUpdateParams {\n type:\n | typeof DataSourceType.PROVIDER\n | typeof DataSourceType.SUMMARY\n | typeof DataSourceType.CHUNK_SUMMARY\n | typeof DataSourceType.JSON;\n}\n\n/** DataSource update parameters */\nexport type DataSourceUpdateParams =\n | ConfluenceDataSourceUpdateParams\n | JiraDataSourceUpdateParams\n | GoogleDataSourceUpdateParams\n | FileDataSourceUpdateParams\n | CodeDataSourceUpdateParams\n | OtherDataSourceUpdateParams;\n","import type {\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} from \"../models\";\nimport { 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 id: response.id,\n project_name: response.project_name,\n name: response.repo_name,\n description: response.description,\n type: response.index_type,\n embeddings_model: response.embeddings_model,\n status: response.status,\n setting_id: response.setting_id,\n created_date: response.date,\n created_by: response.created_by,\n shared_with_project: response.project_space_visible,\n update_date: response.update_date,\n error_message: response.text,\n user_abilities: response.user_abilities,\n processing_info: response.processing_info\n ? DatasourceMapper.mapDatasourceProcessingInfoResponse(response.processing_info)\n : undefined,\n processed_documents: response.processed_files,\n tokens_usage: response.tokens_usage,\n code: response.code,\n jira: response.jira,\n confluence: response.confluence,\n google_doc_link: response.google_doc_link,\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 });\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 });\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 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 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","/** 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_CLOUD: \"ZephyrCloud\",\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} 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 /** 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","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.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 } 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(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 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 { LLMModel } from \"../models/llm\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class LLMService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 type { BackgroundTaskEntity } from \"../models/task\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class TaskService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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.userId,\n name: response.name,\n username: response.username,\n is_admin: response.isAdmin,\n applications: response.applications,\n applications_admin: response.applicationsAdmin,\n picture: response.picture,\n knowledge_bases: response.knowledgeBases,\n });\n }\n}\n","import { UserMapper } from \"../mappers/user.mapper\";\nimport type { AboutUser, AboutUserResponse, UserData } from \"../models/user\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class UserService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 {\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.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 })\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 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.union([z.string(), z.record(z.unknown()), z.array(z.unknown()), z.number(), z.boolean()]).optional(),\n file_name: z.string().optional(),\n propagate_headers: z.boolean().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}\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 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 { params: 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 { params: 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 propagateHeaders?: boolean,\n headers?: Record<string, string>,\n ): Promise<AnyJson> {\n const params = WorkflowExecutionCreateParamsSchema.parse({\n user_input: userInput,\n file_name: fileName,\n propagate_headers: propagateHeaders,\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(executionId: string, propagateHeaders?: boolean, headers?: Record<string, string>): 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(`/v1/workflows/${this.workflowId}/executions/${executionId}/resume`, {}, config, headers);\n }\n}\n","import { WorkflowMapper } from \"../mappers/workflow.mapper\";\nimport type { AnyJson, PaginatedResponse } from \"../models/common\";\nimport type { Workflow, WorkflowResponse } from \"../models/workflow\";\nimport {\n WorkflowCreateParamsSchema,\n type WorkflowCreateParams,\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(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 return response.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 = {\n filters: JSON.stringify({\n page: params.page,\n per_page: params.per_page,\n ...(params.projects?.length ? { projects: params.projects } : {}),\n }),\n };\n\n const workflows = await this.api.get<PaginatedResponse<WorkflowResponse>>(\"/v1/workflows\", {\n params: queryParams,\n });\n\n return workflows.data.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 propagateHeaders?: boolean,\n headers?: Record<string, string>,\n ): Promise<AnyJson> {\n return this.executions(workflowId).create(userInput, fileName, propagateHeaders, headers);\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 { AssistantService } from \"../services/assistant\";\nimport { ConversationService } from \"../services/conversation\";\nimport { DatasourceService } from \"../services/datasource\";\nimport { IntegrationService } from \"../services/integration\";\nimport { LLMService } from \"../services/llm\";\nimport { TaskService } from \"../services/task\";\nimport { UserService } from \"../services/user\";\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 verify_ssl?: boolean;\n}\n\nexport class CodeMieClient {\n private auth: KeycloakCredentials;\n private token: string | null = null;\n private apiDomain: string;\n private verifySSL: boolean;\n\n // Service instances\n private _assistants: AssistantService;\n private _conversations: ConversationService;\n private _llms: LLMService;\n private _integrations: IntegrationService;\n private _tasks: TaskService;\n private _users: UserService;\n private _datasources: DatasourceService;\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 verify_ssl = true,\n } = config;\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 verifySSL: verify_ssl,\n });\n\n this.apiDomain = codemie_api_domain.replace(/\\/$/, \"\");\n this.verifySSL = verify_ssl;\n\n // Initialize token\n this.token = \"\"; // Will be set in initialize()\n\n // Initialize services\n this._assistants = new AssistantService(this.apiDomain, this.token, this.verifySSL);\n this._conversations = new ConversationService(this.apiDomain, this.token, this.verifySSL);\n this._llms = new LLMService(this.apiDomain, this.token, this.verifySSL);\n this._integrations = new IntegrationService(this.apiDomain, this.token, this.verifySSL);\n this._tasks = new TaskService(this.apiDomain, this.token, this.verifySSL);\n this._users = new UserService(this.apiDomain, this.token, this.verifySSL);\n this._datasources = new DatasourceService(this.apiDomain, this.token, this.verifySSL);\n this._workflows = new WorkflowService(this.apiDomain, this.token, this.verifySSL);\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 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 */\n async initialize(): Promise<void> {\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 */\n async getToken(): Promise<string> {\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 */\n async refreshToken(): Promise<string> {\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.\n */\n private async refreshServices(): Promise<void> {\n if (!this.token) {\n throw new Error(\"Token not available\");\n }\n\n this._assistants = new AssistantService(this.apiDomain, this.token, this.verifySSL);\n this._conversations = new ConversationService(this.apiDomain, this.token, this.verifySSL);\n this._llms = new LLMService(this.apiDomain, this.token, this.verifySSL);\n this._integrations = new IntegrationService(this.apiDomain, this.token, this.verifySSL);\n this._tasks = new TaskService(this.apiDomain, this.token, this.verifySSL);\n this._users = new UserService(this.apiDomain, this.token, this.verifySSL);\n this._datasources = new DatasourceService(this.apiDomain, this.token, this.verifySSL);\n this._workflows = new WorkflowService(this.apiDomain, this.token, this.verifySSL);\n }\n}\n","/** Models for assistant-related data structures. */\n\nimport type { BaseUser } from \"./common\";\nimport type { Integration } from \"./integration\";\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 name: string;\n label?: string;\n settings_config: boolean;\n user_description?: string;\n settings?: Integration | null;\n}\n\nexport interface ToolKitDetails {\n toolkit: string;\n tools: ToolDetails[];\n label: string;\n settings_config: boolean;\n is_external: boolean;\n settings?: Integration;\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}\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 assistant_ids: string[];\n categories?: AssistantCategory[];\n context: Context[];\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 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 updated_date?: string;\n user_abilities?: unknown[];\n version_count?: number;\n}\n\nexport interface AssistantRequestBase extends AssistantBase {\n system_prompt: string;\n project: string;\n context: Context[];\n llm_model_type: string;\n toolkits: ToolKitDetails[];\n conversation_starters: string[];\n shared?: boolean;\n is_react?: boolean;\n is_global?: boolean;\n slug?: string;\n temperature?: number;\n top_p?: number;\n mcp_servers: MCPServerDetails[];\n assistant_ids: string[];\n prompt_variables?: PromptVariable[];\n}\n\nexport interface ChatMessage {\n role: ChatRole;\n message?: string;\n}\n\nexport interface BaseModelApiResponse {\n generated: string;\n timeElapsed?: number;\n tokensUsed?: number;\n thoughts?: Record<string, unknown>[];\n taskId?: string;\n}\n\nexport interface BaseModelResponse {\n generated: string | object;\n time_elapsed?: number;\n tokens_used?: number;\n thoughts?: Record<string, unknown>[];\n task_id?: string;\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// Note: compareVersions returns a generic object; no strict SDK interface is defined\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"],"mappings":"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","names":["z","Agent","axios","axios","Agent","errorMessage","z","z","z","z","z","z","ContextType","ChatRole"]}
|
|
1
|
+
{"version":3,"sources":["../src/auth/credentials.ts","../src/utils/helpers.ts","../src/mappers/assistant.mapper.ts","../src/services/assistant.ts","../src/schemas/assistant.ts","../src/utils/http.ts","../src/exceptions/exceptions.ts","../src/schemas/conversation.ts","../src/services/conversation.ts","../src/services/datasource.ts","../src/models/datasource.ts","../src/mappers/datasource.mapper.ts","../src/models/integration.ts","../src/schemas/integration.ts","../src/services/integration.ts","../src/services/llm.ts","../src/services/task.ts","../src/mappers/user.mapper.ts","../src/services/user.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/llm.ts","../src/models/task.ts"],"sourcesContent":["import { Agent } from \"node:https\";\nimport axios 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\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 { serverUrl, realmName } = this.config;\n const url = `${serverUrl}/realms/${realmName}/protocol/openid-connect/token`;\n\n const payload =\n this.config.username && this.config.password\n ? this.createResourceOwnerCredentialsPayload()\n : this.createClientCredentialsPayload();\n\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 return data.access_token;\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 if (!((config.clientId && config.clientSecret) || (config.username && config.password))) {\n throw new Error(\n \"Either client credentials (clientId, clientSecret) or \" +\n \"user credentials (username, password) must be provided\",\n );\n }\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 });\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, PaginatedResponse} from \"../models/common\";\nimport {z} from \"zod\";\nimport {zodToJsonSchema} from \"zod-to-json-schema\";\nimport {\n AssistantChatParamsSchema,\n type AssistantCreateParams,\n AssistantCreateParamsSchema,\n type AssistantListParams,\n AssistantListParamsSchema,\n type AssistantUpdateParams,\n AssistantUpdateParamsSchema,\n type AssistantChatParams,\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(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 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 = AssistantCreateParamsSchema.parse(_params);\n return this.api.post<AssistantCreateResponse>(\"/v1/assistants\", params);\n }\n\n /**\n * Update an existing assistant.\n * @returns AssistantUpdateResponse with optional validation results\n */\n async update(assistantId: string, _params: AssistantUpdateParams): Promise<AssistantUpdateResponse> {\n const params = AssistantUpdateParamsSchema.parse(_params);\n return this.api.put<AssistantUpdateResponse>(`/v1/assistants/${assistantId}`, params);\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 (response && \"versions\" in response && Array.isArray((response as { versions: unknown }).versions)) {\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 = zodToJsonSchema(zodSchema, {\n definitions: {},\n });\n\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 = zodToJsonSchema(zodSchema, { definitions: {} });\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 );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 = zodToJsonSchema(zodSchema, {\n definitions: {},\n });\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}","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.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\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: z\n .object({\n command: z.string(),\n args: z.array(z.string()).optional(),\n env: z.record(z.unknown()).optional(),\n auth_token: z.string().optional(),\n })\n .optional(),\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 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();\nexport type AssistantCreateParams = z.infer<typeof AssistantCreateParamsSchema>;\n\nexport const AssistantUpdateParamsSchema = AssistantCreateParamsSchema;\nexport type AssistantUpdateParams = z.infer<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.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.unknown()).optional(),\n mcp_server_single_usage: z.boolean().optional(),\n\n version: z.number().optional(),\n output_schema: z.union([\n z.custom(val => val instanceof z.ZodType),\n z.record(z.unknown())\n ]).optional(),\n })\n .readonly();\nexport type AssistantChatParams = z.infer<typeof AssistantChatParamsSchema>;\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<z.infer<typeof AssistantVersionsListParamsSchema>>;\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\";\n\nexport interface ApiResponse<T> {\n data: T;\n}\n\nexport class ApiRequestHandler {\n private client: AxiosInstance;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.client = axios.create({\n baseURL: apiDomain.replace(/\\/$/, \"\"), // Remove trailing slash\n validateStatus: (status: number) => status < 400,\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\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\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>(path: string, data?: unknown, config: Record<string, unknown> = {}, extraHeaders?: Record<string, string>): Promise<T> {\n return this.request<T>(\"post\", path, this.withHeaders({ ...config, data }, extraHeaders));\n }\n\n async put<T>(path: string, data?: unknown, config: Record<string, unknown> = {}, extraHeaders?: Record<string, string>): Promise<T> {\n return this.request<T>(\"put\", path, this.withHeaders({ ...config, data }, extraHeaders));\n }\n\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\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, 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 { 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().default(false).optional(),\n })\n .readonly();\n\nexport type ConversationCreateParams = z.infer<typeof ConversationCreateParamsSchema>;","import type { Conversation, ConversationDetails } from \"../models/conversation\";\nimport type { AnyJson } from \"../models/common\";\nimport { ConversationCreateParamsSchema, type ConversationCreateParams } from \"../schemas/conversation\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class ConversationService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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}","import FormData from \"form-data\";\nimport { DatasourceMapper } from \"../mappers/datasource.mapper\";\nimport type { AnyJson, PaginatedResponse } from \"../models/common\";\nimport type {\n DataSource,\n DataSourceCreateParams,\n DataSourceListParams,\n DataSourceResponse,\n DataSourceTypeType,\n DataSourceUpdateParams,\n FileDataSourceCreateParams,\n} from \"../models/datasource\";\nimport { DataSourceType } from \"../models/datasource\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nconst DATA_SOURCE_TO_PATH_PARAM = {\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};\n\nexport class DatasourceService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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) {\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 queryParams.filters = JSON.stringify(filters);\n }\n\n const response = await this.api.get<PaginatedResponse<DataSourceResponse>>(\n \"/v1/index\",\n queryParams,\n );\n\n return response.data.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 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 }\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} 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?: boolean;\n pages_per_request?: boolean;\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 settingId: string;\n projectSpaceVisible?: boolean;\n link: string;\n branch: string;\n indexType: CodeDataSourceTypeType;\n filesFilter?: string;\n embeddingsModel?: string;\n summarizationModel?: string;\n prompt?: string;\n docsGeneration?: boolean;\n}\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}\n\nexport type DataSourceCreateDto =\n | ConfluenceDataSourceCreateDto\n | JiraDataSourceCreateDto\n | GoogleDataSourceCreateDto\n | FileDataSourceCreateDto\n | CodeDataSourceCreateDto\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}\n\nexport type DataSourceUpdateDto =\n | ConfluenceDataSourceUpdateDto\n | JiraDataSourceUpdateDto\n | GoogleDataSourceUpdateDto\n | FileDataSourceUpdateDto\n | CodeDataSourceUpdateDto\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\n/** Datasource response interface */\nexport interface DataSourceResponse {\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 /** Current status */\n status: DataSourceStatusType;\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 /** Code-specific configuration */\n code?: 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}\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;\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?: 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}\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};\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 OtherDataSourceCreateParams extends BaseDataSourceCreateParams {\n type:\n | typeof DataSourceType.PROVIDER\n | typeof DataSourceType.SUMMARY\n | typeof DataSourceType.CHUNK_SUMMARY\n | typeof DataSourceType.JSON;\n}\n\n/** DataSource create parameters */\nexport type DataSourceCreateParams =\n | ConfluenceDataSourceCreateParams\n | JiraDataSourceCreateParams\n | GoogleDataSourceCreateParams\n | FileDataSourceCreateParams\n | CodeDataSourceCreateParams\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 OtherDataSourceUpdateParams extends BaseDataSourceUpdateParams {\n type:\n | typeof DataSourceType.PROVIDER\n | typeof DataSourceType.SUMMARY\n | typeof DataSourceType.CHUNK_SUMMARY\n | typeof DataSourceType.JSON;\n}\n\n/** DataSource update parameters */\nexport type DataSourceUpdateParams =\n | ConfluenceDataSourceUpdateParams\n | JiraDataSourceUpdateParams\n | GoogleDataSourceUpdateParams\n | FileDataSourceUpdateParams\n | CodeDataSourceUpdateParams\n | OtherDataSourceUpdateParams;\n","import type {\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} from \"../models\";\nimport { 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 id: response.id,\n project_name: response.project_name,\n name: response.repo_name,\n description: response.description,\n type: response.index_type,\n embeddings_model: response.embeddings_model,\n status: response.status,\n setting_id: response.setting_id,\n created_date: response.date,\n created_by: response.created_by,\n shared_with_project: response.project_space_visible,\n update_date: response.update_date,\n error_message: response.text,\n user_abilities: response.user_abilities,\n processing_info: response.processing_info\n ? DatasourceMapper.mapDatasourceProcessingInfoResponse(response.processing_info)\n : undefined,\n processed_documents: response.processed_files,\n tokens_usage: response.tokens_usage,\n code: response.code,\n jira: response.jira,\n confluence: response.confluence,\n google_doc_link: response.google_doc_link,\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 });\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 });\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 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 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","/** 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_CLOUD: \"ZephyrCloud\",\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} 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 /** 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","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.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 } 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(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 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 { LLMModel } from \"../models/llm\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class LLMService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 type { BackgroundTaskEntity } from \"../models/task\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class TaskService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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.userId,\n name: response.name,\n username: response.username,\n is_admin: response.isAdmin,\n applications: response.applications,\n applications_admin: response.applicationsAdmin,\n picture: response.picture,\n knowledge_bases: response.knowledgeBases,\n });\n }\n}\n","import { UserMapper } from \"../mappers/user.mapper\";\nimport type { AboutUser, AboutUserResponse, UserData } from \"../models/user\";\nimport { ApiRequestHandler } from \"../utils/http\";\n\nexport class UserService {\n private api: ApiRequestHandler;\n\n constructor(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 {\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.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 })\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 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.union([z.string(), z.record(z.unknown()), z.array(z.unknown()), z.number(), z.boolean()]).optional(),\n file_name: z.string().optional(),\n propagate_headers: z.boolean().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}\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 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 { params: 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 { params: 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 propagateHeaders?: boolean,\n headers?: Record<string, string>,\n ): Promise<AnyJson> {\n const params = WorkflowExecutionCreateParamsSchema.parse({\n user_input: userInput,\n file_name: fileName,\n propagate_headers: propagateHeaders,\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(executionId: string, propagateHeaders?: boolean, headers?: Record<string, string>): 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(`/v1/workflows/${this.workflowId}/executions/${executionId}/resume`, {}, config, headers);\n }\n}\n","import { WorkflowMapper } from \"../mappers/workflow.mapper\";\nimport type { AnyJson, PaginatedResponse } from \"../models/common\";\nimport type { Workflow, WorkflowResponse } from \"../models/workflow\";\nimport {\n WorkflowCreateParamsSchema,\n type WorkflowCreateParams,\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(apiDomain: string, token: string, verifySSL = true) {\n this.api = new ApiRequestHandler(apiDomain, token, verifySSL);\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 return response.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 = {\n filters: JSON.stringify({\n page: params.page,\n per_page: params.per_page,\n ...(params.projects?.length ? { projects: params.projects } : {}),\n }),\n };\n\n const workflows = await this.api.get<PaginatedResponse<WorkflowResponse>>(\"/v1/workflows\", {\n params: queryParams,\n });\n\n return workflows.data.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 propagateHeaders?: boolean,\n headers?: Record<string, string>,\n ): Promise<AnyJson> {\n return this.executions(workflowId).create(userInput, fileName, propagateHeaders, headers);\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 { AssistantService } from \"../services/assistant\";\nimport { ConversationService } from \"../services/conversation\";\nimport { DatasourceService } from \"../services/datasource\";\nimport { IntegrationService } from \"../services/integration\";\nimport { LLMService } from \"../services/llm\";\nimport { TaskService } from \"../services/task\";\nimport { UserService } from \"../services/user\";\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 verify_ssl?: boolean;\n}\n\nexport class CodeMieClient {\n private auth: KeycloakCredentials;\n private token: string | null = null;\n private apiDomain: string;\n private verifySSL: boolean;\n\n // Service instances\n private _assistants: AssistantService;\n private _conversations: ConversationService;\n private _llms: LLMService;\n private _integrations: IntegrationService;\n private _tasks: TaskService;\n private _users: UserService;\n private _datasources: DatasourceService;\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 verify_ssl = true,\n } = config;\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 verifySSL: verify_ssl,\n });\n\n this.apiDomain = codemie_api_domain.replace(/\\/$/, \"\");\n this.verifySSL = verify_ssl;\n\n // Initialize token\n this.token = \"\"; // Will be set in initialize()\n\n // Initialize services\n this._assistants = new AssistantService(this.apiDomain, this.token, this.verifySSL);\n this._conversations = new ConversationService(this.apiDomain, this.token, this.verifySSL);\n this._llms = new LLMService(this.apiDomain, this.token, this.verifySSL);\n this._integrations = new IntegrationService(this.apiDomain, this.token, this.verifySSL);\n this._tasks = new TaskService(this.apiDomain, this.token, this.verifySSL);\n this._users = new UserService(this.apiDomain, this.token, this.verifySSL);\n this._datasources = new DatasourceService(this.apiDomain, this.token, this.verifySSL);\n this._workflows = new WorkflowService(this.apiDomain, this.token, this.verifySSL);\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 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 */\n async initialize(): Promise<void> {\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 */\n async getToken(): Promise<string> {\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 */\n async refreshToken(): Promise<string> {\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.\n */\n private async refreshServices(): Promise<void> {\n if (!this.token) {\n throw new Error(\"Token not available\");\n }\n\n this._assistants = new AssistantService(this.apiDomain, this.token, this.verifySSL);\n this._conversations = new ConversationService(this.apiDomain, this.token, this.verifySSL);\n this._llms = new LLMService(this.apiDomain, this.token, this.verifySSL);\n this._integrations = new IntegrationService(this.apiDomain, this.token, this.verifySSL);\n this._tasks = new TaskService(this.apiDomain, this.token, this.verifySSL);\n this._users = new UserService(this.apiDomain, this.token, this.verifySSL);\n this._datasources = new DatasourceService(this.apiDomain, this.token, this.verifySSL);\n this._workflows = new WorkflowService(this.apiDomain, this.token, this.verifySSL);\n }\n}\n","/** Models for assistant-related data structures. */\n\nimport type { BaseUser } from \"./common\";\nimport type { Integration } from \"./integration\";\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 name: string;\n label?: string;\n settings_config: boolean;\n user_description?: string;\n settings?: Integration | null;\n}\n\nexport interface ToolKitDetails {\n toolkit: string;\n tools: ToolDetails[];\n label: string;\n settings_config: boolean;\n is_external: boolean;\n settings?: Integration;\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}\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 assistant_ids: string[];\n categories?: AssistantCategory[];\n context: Context[];\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 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 updated_date?: string;\n user_abilities?: unknown[];\n version_count?: number;\n}\n\nexport interface AssistantRequestBase extends AssistantBase {\n system_prompt: string;\n project: string;\n context: Context[];\n llm_model_type: string;\n toolkits: ToolKitDetails[];\n conversation_starters: string[];\n shared?: boolean;\n is_react?: boolean;\n is_global?: boolean;\n slug?: string;\n temperature?: number;\n top_p?: number;\n mcp_servers: MCPServerDetails[];\n assistant_ids: string[];\n prompt_variables?: PromptVariable[];\n skip_integration_validation?: boolean;\n}\n\nexport interface ChatMessage {\n role: ChatRole;\n message?: string;\n}\n\nexport interface BaseModelApiResponse {\n generated: string;\n timeElapsed?: number;\n tokensUsed?: number;\n thoughts?: Record<string, unknown>[];\n taskId?: string;\n}\n\nexport interface BaseModelResponse {\n generated: string | object;\n time_elapsed?: number;\n tokens_used?: number;\n thoughts?: Record<string, unknown>[];\n task_id?: string;\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","/** 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"],"mappings":"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","names":["z","Agent","axios","axios","Agent","errorMessage","z","z","z","z","z","z","ContextType","ChatRole"]}
|