orchestrator-client 5.6.0 → 5.7.0

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/sync-client.ts","../src/config.ts","../src/fetch.ts","../src/socketio.ts","../src/index.ts"],"sourcesContent":["/**\n * Typed exception hierarchy for orchestrator API interactions.\n *\n * Every error carries `statusCode` and `errorCode` extracted from the\n * server's uniform error envelope, making it easy for callers to handle\n * specific error conditions programmatically.\n */\n\n/**\n * Base error for all orchestrator-related errors.\n */\nexport class OrchestratorError extends Error {\n public readonly statusCode: number | null\n public readonly errorCode: string | null\n public readonly details: Record<string, unknown>\n\n constructor(\n message: string,\n opts?: {\n statusCode?: number | null\n errorCode?: string | null\n details?: Record<string, unknown>\n },\n ) {\n super(message)\n this.name = \"OrchestratorError\"\n this.statusCode = opts?.statusCode ?? null\n this.errorCode = opts?.errorCode ?? null\n this.details = opts?.details ?? {}\n }\n}\n\n/**\n * Orchestrator is unreachable (network / DNS / timeout).\n */\nexport class OrchestratorConnectionError extends OrchestratorError {\n constructor(message: string) {\n super(message, { statusCode: null })\n this.name = \"OrchestratorConnectionError\"\n }\n}\n\n/**\n * Authentication or authorization failure (401/403).\n */\nexport class OrchestratorAuthError extends OrchestratorError {\n constructor(message: string, statusCode: number = 401) {\n super(message, { statusCode })\n this.name = \"OrchestratorAuthError\"\n }\n}\n\n/**\n * Requested resource does not exist (404).\n */\nexport class OrchestratorNotFoundError extends OrchestratorError {\n public readonly resourceType: string\n public readonly resourceId: string\n\n constructor(resourceType: string, resourceId: string, message?: string) {\n super(message ?? `${resourceType} not found: ${resourceId}`, {\n statusCode: 404,\n })\n this.name = \"OrchestratorNotFoundError\"\n this.resourceType = resourceType\n this.resourceId = resourceId\n }\n}\n\n/**\n * Non-2xx response from the orchestrator API.\n *\n * Covers 400 Bad Request, 500 Internal Server Error, and any other\n * unexpected status that isn't auth or not-found specific.\n */\nexport class OrchestratorAPIError extends OrchestratorError {\n constructor(\n message: string,\n statusCode: number,\n errorCode?: string | null,\n details?: Record<string, unknown>,\n ) {\n super(message, { statusCode, errorCode, details })\n this.name = \"OrchestratorAPIError\"\n }\n}\n\n/**\n * Invalid or missing client configuration (bad env vars, etc.).\n */\nexport class OrchestratorConfigError extends OrchestratorError {\n constructor(message: string) {\n super(message, { statusCode: null })\n this.name = \"OrchestratorConfigError\"\n }\n}\n","/**\n * OrchestratorAsync — async REST API wrapper for the DAMIT AIOps Orchestrator.\n *\n * Provides a complete mapping of the orchestrator's HTTP endpoints using\n * native fetch with automatic retry (exponential backoff), typed responses,\n * and configurable auth via bearer token or callback.\n *\n * Usage:\n *\n * const client = new OrchestratorAsync({ baseUrl: \"http://localhost:8080\" });\n * const tasks = await client.listTasks({ workflowId: \"proactive\" });\n * for (const t of tasks.tasks) {\n * console.log(t.id, t.status);\n * }\n * await client.close();\n */\n\nimport type {\n AuthConfig,\n AttachmentUploadResponse,\n CompactionEvent,\n ConfigurationStatus,\n ConversationResult,\n ErrorCountResult,\n ErrorEventDetail,\n ErrorPurgeResult,\n ErrorStatsResult,\n HealthDetail,\n HealthStatus,\n LeaderStatus,\n MatrixConversationResult,\n Message,\n MessageTranslation,\n MessageTranslationsResult,\n MetricSnapshot,\n MioContext,\n Pagination,\n ReadinessResult,\n SlotsStatus,\n SuccessResponse,\n SummaryWorkerStatus,\n SystemStatus,\n TaskCreateResponse,\n TaskDeleteResult,\n TaskDetail,\n TaskHandlerStatus,\n TaskHandlerStatusLocal,\n TaskJournal,\n TaskListResult,\n TaskSummary,\n TokenWorkerStatus,\n ToolInfo,\n ToolsListResult,\n VSATaskCreateResponse,\n WebSocketStatus,\n WorkflowStates,\n} from \"./models/index.js\"\nimport {\n OrchestratorAPIError,\n OrchestratorAuthError,\n OrchestratorConnectionError,\n OrchestratorNotFoundError,\n} from \"./errors.js\"\n\nconst RETRY_BACKOFF_BASE = 500\nconst DEFAULT_TIMEOUT_MS = 30_000\nconst DEFAULT_MAX_RETRIES = 3\n\n// ---------------------------------------------------------------------------\n// Internal helpers — build typed objects from raw API response data\n// ---------------------------------------------------------------------------\n\nfunction buildPagination(data: Record<string, unknown>): Pagination {\n const p = (data.pagination ?? {}) as Record<string, unknown>\n return {\n currentPage: (p.currentPage ?? 1) as number,\n perPage: (p.perPage ?? 25) as number,\n totalItems: (p.totalItems ?? 0) as number,\n totalPages: (p.totalPages ?? 1) as number,\n hasNext: (p.hasNext ?? false) as boolean,\n hasPrev: (p.hasPrev ?? false) as boolean,\n }\n}\n\nfunction buildTaskSummary(t: Record<string, unknown>): TaskSummary {\n return {\n id: (t.id ?? \"\") as string,\n status: (t.status ?? \"\") as string,\n workflowId: (t.workflowId ?? t.workflow_id ?? \"\") as string,\n iteration: (t.iteration ?? 0) as number,\n maxIterations: (t.maxIterations ?? t.max_iterations ?? 0) as number,\n goalPrompt: (t.goalPrompt ?? t.goal_prompt ?? \"\") as string,\n result: (t.result ?? \"\") as string,\n resultLocalized: (t.resultLocalized ?? t.result_localized ?? null) as string | null,\n approvalReason: (t.approvalReason ?? t.approval_reason ?? \"\") as string,\n ticketId: (t.ticketId ?? t.ticket_id ?? null) as string | null,\n availableTools: (t.availableTools ?? t.available_tools ?? null) as string[] | null,\n insight: (t.insight ?? null) as string | null,\n insightLocalized: (t.insightLocalized ?? t.insight_localized ?? null) as string | null,\n createdAt: (t.createdAt ?? t.created_at ?? \"\") as string,\n updatedAt: (t.updatedAt ?? t.updated_at ?? \"\") as string,\n pendingTranslationsForLocales: (t.pendingTranslationsForLocales ?? t.pending_translations_for_locales ?? null) as string[] | null | undefined,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Client options\n// ---------------------------------------------------------------------------\n\nexport interface OrchestratorClientOptions {\n /** Base URL of the orchestrator (e.g. \"http://localhost:8080\"). */\n baseUrl?: string\n /** Optional static bearer token. */\n apiKey?: string\n /** Async function that returns a bearer token (called on each request). */\n getToken?: () => string | Promise<string>\n /** Request timeout in milliseconds (default: 30000). */\n timeoutMs?: number\n /** Max retry attempts on transient failures (default: 3). */\n maxRetries?: number\n /**\n * Custom fetch implementation override.\n *\n * Use this to inject a fetch that ignores SSL errors (self-signed certs):\n *\n * new Orchestrator({\n * fetch: await createInsecureFetch(),\n * })\n *\n * When not provided, `globalThis.fetch` is used.\n */\n fetch?: typeof globalThis.fetch\n /**\n * Allow self-signed / invalid SSL certificates.\n *\n * When true and no custom `fetch` is provided, creates an internal fetch\n * that uses Node.js `https.Agent` with `rejectUnauthorized: false`.\n * Only works in Node.js; ignored in browsers.\n */\n insecure?: boolean\n}\n\n// ---------------------------------------------------------------------------\n// OrchestratorAsync\n// ---------------------------------------------------------------------------\n\nexport class OrchestratorAsync {\n protected _baseUrl: string\n protected _apiKey: string | undefined\n protected _getToken: (() => string | Promise<string>) | undefined\n protected _timeoutMs: number\n protected _maxRetries: number\n protected _fetch: typeof globalThis.fetch\n protected _abortController: AbortController | null = null\n\n constructor(opts: OrchestratorClientOptions = {}) {\n this._baseUrl = (opts.baseUrl ?? \"http://localhost:8080\").replace(/\\/+$/, \"\")\n this._apiKey = opts.apiKey\n this._getToken = opts.getToken\n this._timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS\n this._maxRetries = opts.maxRetries ?? DEFAULT_MAX_RETRIES\n this._fetch = opts.fetch ?? globalThis.fetch\n if (opts.insecure && !opts.fetch && typeof process !== \"undefined\" && process.versions?.node) {\n // Lazy-init insecure fetch — requires async import of Node.js modules\n // The actual switch happens at request time since we can't await here\n this._insecure = true\n }\n }\n\n protected _insecure = false\n\n async close(): Promise<void> {\n this._abortController?.abort()\n }\n\n // ------------------------------------------------------------------\n // Internal helpers\n // ------------------------------------------------------------------\n\n protected _makeUrl(path: string): string {\n return `${this._baseUrl}${path}`\n }\n\n protected async _resolveHeaders(): Promise<Record<string, string>> {\n const headers: Record<string, string> = {}\n if (this._apiKey) {\n headers[\"Authorization\"] = `Bearer ${this._apiKey}`\n } else if (this._getToken) {\n const token = await this._getToken()\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`\n }\n }\n return headers\n }\n\n protected async _request(\n method: string,\n path: string,\n opts?: {\n jsonBody?: unknown\n params?: Record<string, string | number | boolean | undefined>\n headers?: Record<string, string>\n rawResponse?: boolean\n signal?: AbortSignal\n },\n ): Promise<Response | unknown> {\n const url = new URL(this._makeUrl(path))\n if (opts?.params) {\n for (const [key, value] of Object.entries(opts.params)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n const extraHeaders = await this._resolveHeaders()\n const mergedHeaders: Record<string, string> = {\n ...extraHeaders,\n ...(opts?.headers ?? {}),\n }\n if (opts?.jsonBody !== undefined && !mergedHeaders[\"Content-Type\"]) {\n mergedHeaders[\"Content-Type\"] = \"application/json\"\n }\n\n for (let attempt = 1; attempt <= this._maxRetries; attempt++) {\n try {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), this._timeoutMs)\n const signal = opts?.signal\n ? combineSignals(opts.signal, controller.signal)\n : controller.signal\n\n const response = await this._fetch(url.toString(), {\n method,\n headers: mergedHeaders,\n body: opts?.jsonBody !== undefined ? JSON.stringify(opts.jsonBody) : undefined,\n signal,\n })\n\n clearTimeout(timeoutId)\n\n if (response.status === 401) {\n throw new OrchestratorAuthError(\n `Authentication failed for ${method} ${path}`,\n 401,\n )\n }\n if (response.status === 403) {\n throw new OrchestratorAuthError(\n `Access denied for ${method} ${path}`,\n 403,\n )\n }\n if (response.status === 404) {\n throw new OrchestratorNotFoundError(\n \"resource\",\n path,\n `Endpoint returned 404: ${method} ${path}`,\n )\n }\n\n if (response.status >= 500) {\n if (attempt === this._maxRetries) {\n // Fall through to error handling below\n } else {\n const delay = RETRY_BACKOFF_BASE * 2 ** (attempt - 1)\n console.warn(\n `Server error ${response.status} (attempt ${attempt}/${this._maxRetries}), retrying in ${delay}ms`,\n )\n await sleep(delay)\n continue\n }\n }\n\n if (opts?.rawResponse) {\n return response\n }\n\n if (response.ok) {\n const contentType = response.headers.get(\"content-type\") ?? \"\"\n if (contentType.includes(\"application/json\")) {\n return response.json() as Promise<unknown>\n }\n return { _text: await response.text() }\n }\n\n // Error handling\n let errorMessage: string\n let errorCode: string | null = null\n let errorDetails: Record<string, unknown> | null = null\n try {\n const body = (await response.json()) as Record<string, unknown>\n const error = (body.error ?? body) as Record<string, unknown>\n errorCode = (error.code as string) ?? null\n errorMessage = (error.message as string) ?? (await response.text())\n errorDetails = (error.details as Record<string, unknown>) ?? null\n } catch {\n errorMessage = await response.text()\n }\n\n throw new OrchestratorAPIError(\n errorMessage,\n response.status,\n errorCode,\n errorDetails ?? undefined,\n )\n } catch (err) {\n if (err instanceof OrchestratorAPIError || err instanceof OrchestratorAuthError || err instanceof OrchestratorNotFoundError) {\n throw err\n }\n if (err instanceof OrchestratorConnectionError) {\n throw err\n }\n if (err instanceof DOMException && err.name === \"AbortError\") {\n if (attempt === this._maxRetries) {\n throw new OrchestratorConnectionError(\n `Request timed out after ${this._timeoutMs}ms (${this._maxRetries} attempts): ${method} ${path}`,\n )\n }\n const delay = RETRY_BACKOFF_BASE * 2 ** (attempt - 1)\n console.warn(\n `Request timed out (attempt ${attempt}/${this._maxRetries}), retrying in ${delay}ms`,\n )\n await sleep(delay)\n continue\n }\n if (err instanceof TypeError) {\n // fetch network errors are TypeErrors\n if (attempt === this._maxRetries) {\n throw new OrchestratorConnectionError(\n `Orchestrator unreachable after ${this._maxRetries} attempts: ${(err as Error).message}`,\n )\n }\n const delay = RETRY_BACKOFF_BASE * 2 ** (attempt - 1)\n console.warn(\n `Request failed (attempt ${attempt}/${this._maxRetries}), retrying in ${delay}ms: ${(err as Error).message}`,\n )\n await sleep(delay)\n continue\n }\n throw err\n }\n }\n\n throw new OrchestratorConnectionError(\n `Request failed after ${this._maxRetries} attempts: ${method} ${path}`,\n )\n }\n\n protected async _get<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {\n return (await this._request(\"GET\", path, { params })) as T\n }\n\n protected async _post<T>(path: string, body?: unknown): Promise<T> {\n return (await this._request(\"POST\", path, { jsonBody: body })) as T\n }\n\n protected async _put<T>(path: string, body?: unknown): Promise<T> {\n return (await this._request(\"PUT\", path, { jsonBody: body })) as T\n }\n\n protected async _delete<T>(path: string): Promise<T> {\n return (await this._request(\"DELETE\", path)) as T\n }\n\n // ------------------------------------------------------------------\n // Tasks\n // ------------------------------------------------------------------\n\n async listTasks(params?: {\n workflowId?: string\n status?: string\n limit?: number\n offset?: number\n sortBy?: string\n sortOrder?: string\n }): Promise<TaskListResult> {\n const data = await this._get<Record<string, unknown>>(\"/tasks\", {\n workflow_id: params?.workflowId,\n status: params?.status,\n limit: params?.limit,\n offset: params?.offset,\n sort_by: params?.sortBy,\n sort_order: params?.sortOrder,\n })\n const tasks = ((data.tasks ?? []) as Record<string, unknown>[]).map(buildTaskSummary)\n return { tasks, pagination: buildPagination(data) }\n }\n\n async createTask(params: {\n workflowId: string\n goalPrompt: string\n maxIterations?: number\n options?: Record<string, boolean>\n ticketId?: string\n title?: string\n modelId?: string\n }): Promise<TaskCreateResponse> {\n const data = await this._post<Record<string, unknown>>(\"/tasks\", {\n workflow_id: params.workflowId,\n goal_prompt: params.goalPrompt,\n max_iterations: params.maxIterations,\n options: params.options,\n ticket_id: params.ticketId,\n title: params.title,\n model_id: params.modelId,\n })\n return {\n taskId: (data.taskId ?? data.task_id ?? \"\") as string,\n status: (data.status ?? \"\") as string,\n }\n }\n\n async getTaskStatus(taskId: string): Promise<TaskDetail> {\n const data = await this._get<Record<string, unknown>>(`/tasks/${taskId}`)\n return {\n ...buildTaskSummary(data),\n subtaskIds: (data.subtaskIds ?? data.subtask_ids ?? []) as string[],\n workflowData: (data.workflowData ?? data.workflow_data ?? null) as Record<string, unknown> | null,\n options: (data.options ?? null) as Record<string, unknown> | null,\n }\n }\n\n async getTaskConversation(taskId: string): Promise<ConversationResult> {\n const data = await this._get<Record<string, unknown>>(`/tasks/${taskId}/conversation`)\n return {\n taskId: (data.taskId ?? data.task_id ?? taskId) as string,\n conversation: ((data.conversation ?? []) as Record<string, unknown>[]).map(\n (m) => m as unknown as Message,\n ),\n }\n }\n\n async getArchivedMessageContent(taskId: string, messageId: number): Promise<Record<string, unknown>> {\n return this._get<Record<string, unknown>>(\n `/tasks/${taskId}/conversation/messages/${messageId}/archived`,\n )\n }\n\n async getTaskCompactions(taskId: string): Promise<CompactionEvent[]> {\n const data = await this._get<Record<string, unknown>>(`/tasks/${taskId}/compactions`)\n return (data.compactions ?? []) as CompactionEvent[]\n }\n\n async getTaskJournal(taskId: string): Promise<TaskJournal> {\n const data = await this._get<Record<string, unknown>>(`/tasks/${taskId}/journal`)\n return {\n taskId: (data.taskId ?? data.task_id ?? taskId) as string,\n exists: (data.exists ?? false) as boolean,\n content: (data.content ?? null) as string | null,\n updatedAt: (data.updated_at ?? data.updatedAt ?? null) as string | null,\n version: (data.version ?? null) as number | null,\n sectionsOverBudget: (data.sections_over_budget ?? data.sectionsOverBudget ?? null) as Record<string, number> | null,\n }\n }\n\n async cancelTask(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/cancel`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async deleteTask(taskId: string): Promise<TaskDeleteResult> {\n const data = await this._delete<Record<string, unknown>>(`/tasks/${taskId}`)\n return {\n deletedTasks: (data.deletedTasks ?? data.deleted_tasks ?? []) as string[],\n failedTasks: (data.failedTasks ?? data.failed_tasks ?? []) as string[],\n totalDeleted: (data.totalDeleted ?? data.total_deleted ?? 0) as number,\n totalFailed: (data.totalFailed ?? data.total_failed ?? 0) as number,\n }\n }\n\n async deleteTasks(taskIds: string[]): Promise<TaskDeleteResult> {\n const data = await this._post<Record<string, unknown>>(\"/tasks/delete\", { task_ids: taskIds })\n return {\n deletedTasks: (data.deletedTasks ?? data.deleted_tasks ?? []) as string[],\n failedTasks: (data.failedTasks ?? data.failed_tasks ?? []) as string[],\n totalDeleted: (data.totalDeleted ?? data.total_deleted ?? 0) as number,\n totalFailed: (data.totalFailed ?? data.total_failed ?? 0) as number,\n }\n }\n\n // ------------------------------------------------------------------\n // Attachments\n // ------------------------------------------------------------------\n\n async uploadAttachment(\n taskId: string,\n file: File | Blob,\n filename?: string,\n ): Promise<AttachmentUploadResponse> {\n const formData = new FormData()\n formData.append(\"file\", file, filename)\n const headers = await this._resolveHeaders()\n // Don't set Content-Type for FormData — browser sets it with boundary\n const response = await this._fetch(this._makeUrl(`/tasks/${taskId}/attachments`), {\n method: \"POST\",\n headers: { ...headers },\n body: formData,\n })\n if (!response.ok) {\n throw new OrchestratorAPIError(\n `Attachment upload failed: ${response.statusText}`,\n response.status,\n )\n }\n const data = (await response.json()) as Record<string, unknown>\n return {\n id: (data.id ?? \"\") as string,\n filename: (data.filename ?? \"\") as string,\n mimeType: (data.mimeType ?? data.mime_type ?? \"\") as string,\n size: (data.size ?? 0) as number,\n width: (data.width ?? null) as number | null,\n height: (data.height ?? null) as number | null,\n tokenCount: (data.tokenCount ?? data.token_count ?? null) as number | null,\n }\n }\n\n async downloadAttachment(taskId: string, attachmentId: string): Promise<Blob> {\n const headers = await this._resolveHeaders()\n const response = await this._fetch(this._makeUrl(`/tasks/${taskId}/attachments/${attachmentId}`), {\n headers,\n })\n if (!response.ok) {\n throw new OrchestratorAPIError(\n `Attachment download failed: ${response.statusText}`,\n response.status,\n )\n }\n return response.blob()\n }\n\n // ------------------------------------------------------------------\n // Interactive workflow\n // ------------------------------------------------------------------\n\n async sendInteractiveMessage(taskId: string, content: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/interactive/message`, {\n content,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async markInteractiveComplete(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/interactive/complete`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async markInteractiveFailed(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/interactive/failed`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async approveInteractiveAction(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/interactive/approve`)\n return { message: (data.message ?? \"\") as string }\n }\n\n // ------------------------------------------------------------------\n // Proactive workflow\n // ------------------------------------------------------------------\n\n async sendProactiveGuide(taskId: string, guide: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/proactive/guide`, {\n guide,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async respondProactiveHelp(taskId: string, response: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/proactive/respond`, {\n response,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async approveProactiveAction(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/proactive/approve`)\n return { message: (data.message ?? \"\") as string }\n }\n\n // ------------------------------------------------------------------\n // Ticket workflow\n // ------------------------------------------------------------------\n\n async sendTicketGuide(taskId: string, guide: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/ticket/guide`, {\n guide,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async respondTicketHelp(taskId: string, response: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/ticket/respond`, {\n response,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async approveTicketAction(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/ticket/approve`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async wakeTicket(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/ticket/wake`)\n return { message: (data.message ?? \"\") as string }\n }\n\n // ------------------------------------------------------------------\n // Matrix workflow\n // ------------------------------------------------------------------\n\n async sendMatrixMessage(taskId: string, content: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/matrix/message`, {\n content,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async markMatrixComplete(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/matrix/complete`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async markMatrixFailed(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/matrix/failed`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async approveMatrixAction(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/matrix/approve`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async getMatrixConversation(taskId: string): Promise<MatrixConversationResult> {\n const data = await this._get<Record<string, unknown>>(`/tasks/${taskId}/matrix/conversation`)\n return {\n taskId: (data.taskId ?? data.task_id ?? taskId) as string,\n conversation: ((data.conversation ?? []) as Record<string, unknown>[]).map(\n (m) => m as unknown as Message,\n ),\n }\n }\n\n // ------------------------------------------------------------------\n // VSA workflow\n // ------------------------------------------------------------------\n\n async createVSATask(params: {\n goalPrompt: string\n title?: string\n modelId?: string\n }): Promise<VSATaskCreateResponse> {\n const data = await this._post<Record<string, unknown>>(\"/tasks/vsa\", {\n goal_prompt: params.goalPrompt,\n title: params.title,\n model_id: params.modelId,\n })\n return {\n taskId: (data.taskId ?? data.task_id ?? \"\") as string,\n status: (data.status ?? \"\") as string,\n }\n }\n\n async sendVSAMessage(taskId: string, content: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/vsa/message`, {\n content,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async renameVSATask(taskId: string, title: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/vsa/rename`, {\n title,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async regenerateVSATitle(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/vsa/regenerate-title`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async markVSAComplete(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/vsa/complete`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async markVSAFailed(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/vsa/failed`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async stopVSA(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/vsa/stop`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async deleteVSA(taskId: string): Promise<SuccessResponse> {\n const data = await this._delete<Record<string, unknown>>(`/tasks/${taskId}/vsa`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async listVSATasks(params?: {\n status?: string\n limit?: number\n offset?: number\n }): Promise<TaskListResult> {\n const data = await this._get<Record<string, unknown>>(\"/tasks/vsa\", {\n status: params?.status,\n limit: params?.limit,\n offset: params?.offset,\n })\n const tasks = ((data.tasks ?? []) as Record<string, unknown>[]).map(buildTaskSummary)\n return { tasks, pagination: buildPagination(data) }\n }\n\n async searchVSATasks(query: string): Promise<TaskListResult> {\n const data = await this._get<Record<string, unknown>>(\"/tasks/vsa/search\", { q: query })\n const tasks = ((data.tasks ?? []) as Record<string, unknown>[]).map(buildTaskSummary)\n return { tasks, pagination: buildPagination(data) }\n }\n\n async deleteVSATasksBulk(taskIds: string[]): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/tasks/vsa/delete-bulk\", {\n task_ids: taskIds,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n // ------------------------------------------------------------------\n // MIO workflow\n // ------------------------------------------------------------------\n\n async sendMioMessage(taskId: string, content: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/message`, {\n content,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async approveMioAction(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/approve`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async wakeMio(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/wake`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async sendMioUserAway(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/user-away`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async markMioComplete(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/complete`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async markMioFailed(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/failed`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async archiveMio(taskId: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/mio/archive`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async getMioContext(taskId: string): Promise<MioContext> {\n const data = await this._get<Record<string, unknown>>(`/tasks/${taskId}/mio/context`)\n return {\n taskId: (data.taskId ?? data.task_id ?? taskId) as string,\n currentTokens: (data.currentTokens ?? data.current_tokens ?? 0) as number,\n contextLimit: (data.contextLimit ?? data.context_limit ?? 0) as number,\n usagePercentage: (data.usagePercentage ?? data.usage_percentage ?? 0) as number,\n archivedCount: (data.archivedCount ?? data.archived_count ?? 0) as number,\n activeCount: (data.activeCount ?? data.active_count ?? 0) as number,\n }\n }\n\n // ------------------------------------------------------------------\n // Tools\n // ------------------------------------------------------------------\n\n async listTools(): Promise<ToolsListResult> {\n const data = await this._get<Record<string, unknown>>(\"/tools\")\n return {\n tools: ((data.tools ?? data.tools ?? []) as Record<string, unknown>[]).map(\n (t) => t as unknown as ToolInfo,\n ),\n totalTools: (data.totalTools ?? data.total_tools ?? 0) as number,\n servers: (data.servers ?? []) as string[],\n }\n }\n\n // ------------------------------------------------------------------\n // Debug / Admin\n // ------------------------------------------------------------------\n\n async getWorkflowStates(): Promise<WorkflowStates> {\n const data = await this._get<Record<string, unknown>>(\"/debug/workflow-states\")\n return {\n validStates: (data.validStates ?? data.valid_states ?? {}) as Record<string, string[]>,\n processableStates: (data.processableStates ?? data.processable_states ?? {}) as Record<string, string[]>,\n waitingStates: (data.waitingStates ?? data.waiting_states ?? {}) as Record<string, string[]>,\n stoppedStates: (data.stoppedStates ?? data.stopped_states ?? {}) as Record<string, string[]>,\n intermediateStates: (data.intermediateStates ?? data.intermediate_states ?? {}) as Record<string, string[]>,\n }\n }\n\n async updateTaskModels(\n taskId: string,\n models: { agent?: string; orchestrator?: string },\n ): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/models`, {\n agent: models.agent,\n orchestrator: models.orchestrator,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async updateTaskIteration(\n taskId: string,\n iteration: number,\n ): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/iteration`, {\n iteration,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async updateTaskWorkflowData(\n taskId: string,\n workflowData: Record<string, unknown>,\n ): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(`/tasks/${taskId}/workflow-data`, {\n workflow_data: workflowData,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async deleteMessage(taskId: string, messageId: number): Promise<SuccessResponse> {\n const data = await this._delete<Record<string, unknown>>(\n `/tasks/${taskId}/conversation/messages/${messageId}`,\n )\n return { message: (data.message ?? \"\") as string }\n }\n\n async deleteMessages(\n taskId: string,\n messageIds: number[],\n ): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\n `/tasks/${taskId}/conversation/messages/delete`,\n { message_ids: messageIds },\n )\n return { message: (data.message ?? \"\") as string }\n }\n\n async updateMessage(\n taskId: string,\n messageId: number,\n update: { content?: string; reasoning?: string },\n ): Promise<SuccessResponse> {\n const data = await this._put<Record<string, unknown>>(\n `/tasks/${taskId}/conversation/messages/${messageId}`,\n update,\n )\n return { message: (data.message ?? \"\") as string }\n }\n\n async resetMatrixToPhase(taskId: string, phase: number): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\n `/tasks/${taskId}/matrix/reset`,\n { phase },\n )\n return { message: (data.message ?? \"\") as string }\n }\n\n async getMessageTranslations(\n taskId: string,\n messageId: number,\n locale?: string,\n ): Promise<MessageTranslationsResult> {\n const params: Record<string, string | number | boolean | undefined> = {}\n if (locale) params.locale = locale\n const data = await this._get<Record<string, unknown>>(\n `/tasks/${taskId}/conversation/messages/${messageId}/translations`,\n params,\n )\n return {\n messageId: (data.messageId ?? data.message_id ?? messageId) as number,\n translations: ((data.translations ?? []) as Record<string, unknown>[]).map(\n (t) => t as unknown as MessageTranslation,\n ),\n }\n }\n\n // ------------------------------------------------------------------\n // Error events\n // ------------------------------------------------------------------\n\n async listErrors(params?: {\n since?: string\n severity?: string\n source?: string\n limit?: number\n offset?: number\n }): Promise<ErrorEventDetail[]> {\n const queryParams: Record<string, string | number | boolean | undefined> = {}\n if (params?.since) queryParams.since = params.since\n if (params?.severity) queryParams.severity = params.severity\n if (params?.source) queryParams.source = params.source\n if (params?.limit) queryParams.limit = params.limit\n if (params?.offset) queryParams.offset = params.offset\n\n const data = await this._get<Record<string, unknown>>(\"/errors\", queryParams)\n return ((data.errors ?? []) as Record<string, unknown>[]).map(\n (e) => e as unknown as ErrorEventDetail,\n )\n }\n\n async getErrorDetail(errorId: string): Promise<ErrorEventDetail> {\n return this._get<ErrorEventDetail>(`/errors/${errorId}`)\n }\n\n async getErrorStats(since?: string): Promise<ErrorStatsResult> {\n const params: Record<string, string | number | boolean | undefined> = {}\n if (since) params.since = since\n return this._get<ErrorStatsResult>(\"/errors/stats\", params)\n }\n\n async countErrors(since?: string): Promise<ErrorCountResult> {\n const params: Record<string, string | number | boolean | undefined> = {}\n if (since) params.since = since\n return this._get<ErrorCountResult>(\"/errors/count\", params)\n }\n\n async purgeErrors(): Promise<ErrorPurgeResult> {\n return this._delete<ErrorPurgeResult>(\"/errors\")\n }\n\n // ------------------------------------------------------------------\n // Health / Metrics\n // ------------------------------------------------------------------\n\n async health(): Promise<HealthStatus> {\n return this._get<HealthStatus>(\"/health\")\n }\n\n async healthDetailed(): Promise<HealthDetail> {\n return this._get<HealthDetail>(\"/health/detail\")\n }\n\n async ready(): Promise<ReadinessResult> {\n return this._get<ReadinessResult>(\"/ready\")\n }\n\n async healthLeader(): Promise<LeaderStatus> {\n return this._get<LeaderStatus>(\"/leader\")\n }\n\n async getMetrics(types?: string): Promise<MetricSnapshot> {\n const params: Record<string, string | number | boolean | undefined> = {}\n if (types) params.types = types\n return this._get<MetricSnapshot>(\"/metrics\", params)\n }\n\n // ------------------------------------------------------------------\n // Configuration\n // ------------------------------------------------------------------\n\n async getSystemStatus(): Promise<SystemStatus> {\n return this._get<SystemStatus>(\"/config/status\")\n }\n\n async updateSettings(settings: Record<string, unknown>): Promise<SystemStatus> {\n return this._post<SystemStatus>(\"/config/settings\", settings)\n }\n\n async getConfigurationStatus(): Promise<ConfigurationStatus> {\n return this._get<ConfigurationStatus>(\"/config\")\n }\n\n async setAgentModel(model: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/models/agent\", { model })\n return { message: (data.message ?? \"\") as string }\n }\n\n async setOrchestratorModel(model: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/models/orchestrator\", { model })\n return { message: (data.message ?? \"\") as string }\n }\n\n async getLLMBackendStatus(): Promise<Record<string, unknown>> {\n return this._get<Record<string, unknown>>(\"/config/llmbackends\")\n }\n\n async addLLMBackend(host: string, apiKey: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/llmbackends\", {\n host,\n api_key: apiKey,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async removeLLMBackend(host: string): Promise<SuccessResponse> {\n const data = await this._delete<Record<string, unknown>>(`/config/llmbackends/${encodeURIComponent(host)}`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async getMCPServerStatus(): Promise<Record<string, unknown>> {\n return this._get<Record<string, unknown>>(\"/config/mcpservers\")\n }\n\n async addMCPServer(host: string, apiKey: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/mcpservers\", {\n host,\n api_key: apiKey,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async removeMCPServer(host: string): Promise<SuccessResponse> {\n const data = await this._delete<Record<string, unknown>>(`/config/mcpservers/${encodeURIComponent(host)}`)\n return { message: (data.message ?? \"\") as string }\n }\n\n async getTaskHandlerStatus(): Promise<TaskHandlerStatus> {\n return this._get<TaskHandlerStatus>(\"/config/taskhandler\")\n }\n\n async getTaskHandlerStatusLocal(): Promise<TaskHandlerStatusLocal> {\n return this._get<TaskHandlerStatusLocal>(\"/config/taskhandler/local\")\n }\n\n async setConcurrentTasksPerReplica(maxTasks: number): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/taskhandler/concurrency\", {\n max_tasks: maxTasks,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async getSummaryWorkerStatus(): Promise<SummaryWorkerStatus> {\n return this._get<SummaryWorkerStatus>(\"/config/summary-worker\")\n }\n\n async setCompactorModel(modelName: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/models/compactor\", {\n model_name: modelName,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async setTranslateModel(modelName: string): Promise<SuccessResponse> {\n const data = await this._post<Record<string, unknown>>(\"/config/models/translate\", {\n model_name: modelName,\n })\n return { message: (data.message ?? \"\") as string }\n }\n\n async getTokenWorkerStatus(): Promise<TokenWorkerStatus> {\n return this._get<TokenWorkerStatus>(\"/config/token-worker\")\n }\n\n async getSlotsStatus(): Promise<SlotsStatus> {\n return this._get<SlotsStatus>(\"/config/slots\")\n }\n\n // ------------------------------------------------------------------\n // Auth / WebSocket status\n // ------------------------------------------------------------------\n\n async getAuthConfig(): Promise<AuthConfig> {\n return this._get<AuthConfig>(\"/auth/config\")\n }\n\n async getWebSocketStatus(): Promise<WebSocketStatus> {\n return this._get<WebSocketStatus>(\"/websocket/status\")\n }\n\n // ------------------------------------------------------------------\n // SSE stream\n // ------------------------------------------------------------------\n\n async *streamTaskStatus(taskId: string): AsyncGenerator<Record<string, unknown>> {\n const headers = await this._resolveHeaders()\n headers[\"Accept\"] = \"text/event-stream\"\n const response = await this._fetch(this._makeUrl(`/tasks/${taskId}/stream`), {\n headers,\n })\n if (!response.ok) {\n throw new OrchestratorAPIError(\n `Stream connection failed: ${response.statusText}`,\n response.status,\n )\n }\n const reader = response.body?.getReader()\n if (!reader) {\n throw new OrchestratorConnectionError(\"Stream body is not readable\")\n }\n const decoder = new TextDecoder()\n let buffer = \"\"\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split(\"\\n\")\n buffer = lines.pop() ?? \"\"\n for (const line of lines) {\n if (line.startsWith(\"data: \")) {\n try {\n yield JSON.parse(line.slice(6))\n } catch {\n // ignore malformed SSE lines\n }\n }\n }\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nfunction combineSignals(...signals: AbortSignal[]): AbortSignal {\n const controller = new AbortController()\n for (const signal of signals) {\n if (signal.aborted) {\n controller.abort(signal.reason)\n return controller.signal\n }\n signal.addEventListener(\"abort\", () => controller.abort(signal.reason), { once: true })\n }\n return controller.signal\n}\n","/**\n * Orchestrator — synchronous wrapper around OrchestratorAsync.\n *\n * Uses a dedicated pattern so every method is a plain sync call — no\n * `await` needed. Perfect for scripts, REPL sessions, and CLI tools.\n *\n * Usage:\n *\n * const client = new Orchestrator({ baseUrl: \"http://localhost:8080\" });\n * const tasks = client.listTasks({ workflowId: \"proactive\" });\n * for (const t of tasks.tasks) {\n * console.log(t.id, t.status);\n * }\n * client.close();\n *\n * Or use the context manager pattern:\n *\n * const client = new Orchestrator();\n * try {\n * const status = client.getTaskStatus(\"task-abc123\");\n * console.log(status.status);\n * } finally {\n * client.close();\n * }\n */\n\nimport { OrchestratorAsync, type OrchestratorClientOptions } from \"./client.js\"\n\nexport { OrchestratorClientOptions }\n\n/**\n * Synchronous wrapper around OrchestratorAsync.\n *\n * Manages its own resolution so every method returns synchronously.\n * Cannot be used from within an active async context.\n */\nexport class Orchestrator {\n private _async: OrchestratorAsync\n\n constructor(opts: OrchestratorClientOptions = {}) {\n this._async = new OrchestratorAsync(opts)\n }\n\n /** Close the underlying resources. */\n close(): void {\n this._async.close().catch(() => {})\n }\n\n // ------------------------------------------------------------------\n // Tasks\n // ------------------------------------------------------------------\n\n listTasks(params?: Parameters<OrchestratorAsync[\"listTasks\"]>[0]) {\n return runSync(this._async.listTasks(params))\n }\n\n createTask(params: Parameters<OrchestratorAsync[\"createTask\"]>[0]) {\n return runSync(this._async.createTask(params))\n }\n\n getTaskStatus(taskId: string) {\n return runSync(this._async.getTaskStatus(taskId))\n }\n\n getTaskConversation(taskId: string) {\n return runSync(this._async.getTaskConversation(taskId))\n }\n\n getArchivedMessageContent(taskId: string, messageId: number) {\n return runSync(this._async.getArchivedMessageContent(taskId, messageId))\n }\n\n getTaskCompactions(taskId: string) {\n return runSync(this._async.getTaskCompactions(taskId))\n }\n\n getTaskJournal(taskId: string) {\n return runSync(this._async.getTaskJournal(taskId))\n }\n\n cancelTask(taskId: string) {\n return runSync(this._async.cancelTask(taskId))\n }\n\n deleteTask(taskId: string) {\n return runSync(this._async.deleteTask(taskId))\n }\n\n deleteTasks(taskIds: string[]) {\n return runSync(this._async.deleteTasks(taskIds))\n }\n\n // ------------------------------------------------------------------\n // Attachments\n // ------------------------------------------------------------------\n\n uploadAttachment(taskId: string, file: File | Blob, filename?: string) {\n return runSync(this._async.uploadAttachment(taskId, file, filename))\n }\n\n downloadAttachment(taskId: string, attachmentId: string) {\n return runSync(this._async.downloadAttachment(taskId, attachmentId))\n }\n\n // ------------------------------------------------------------------\n // Interactive workflow\n // ------------------------------------------------------------------\n\n sendInteractiveMessage(taskId: string, content: string) {\n return runSync(this._async.sendInteractiveMessage(taskId, content))\n }\n\n markInteractiveComplete(taskId: string) {\n return runSync(this._async.markInteractiveComplete(taskId))\n }\n\n markInteractiveFailed(taskId: string) {\n return runSync(this._async.markInteractiveFailed(taskId))\n }\n\n approveInteractiveAction(taskId: string) {\n return runSync(this._async.approveInteractiveAction(taskId))\n }\n\n // ------------------------------------------------------------------\n // Proactive workflow\n // ------------------------------------------------------------------\n\n sendProactiveGuide(taskId: string, guide: string) {\n return runSync(this._async.sendProactiveGuide(taskId, guide))\n }\n\n respondProactiveHelp(taskId: string, response: string) {\n return runSync(this._async.respondProactiveHelp(taskId, response))\n }\n\n approveProactiveAction(taskId: string) {\n return runSync(this._async.approveProactiveAction(taskId))\n }\n\n // ------------------------------------------------------------------\n // Ticket workflow\n // ------------------------------------------------------------------\n\n sendTicketGuide(taskId: string, guide: string) {\n return runSync(this._async.sendTicketGuide(taskId, guide))\n }\n\n respondTicketHelp(taskId: string, response: string) {\n return runSync(this._async.respondTicketHelp(taskId, response))\n }\n\n approveTicketAction(taskId: string) {\n return runSync(this._async.approveTicketAction(taskId))\n }\n\n wakeTicket(taskId: string) {\n return runSync(this._async.wakeTicket(taskId))\n }\n\n // ------------------------------------------------------------------\n // Matrix workflow\n // ------------------------------------------------------------------\n\n sendMatrixMessage(taskId: string, content: string) {\n return runSync(this._async.sendMatrixMessage(taskId, content))\n }\n\n markMatrixComplete(taskId: string) {\n return runSync(this._async.markMatrixComplete(taskId))\n }\n\n markMatrixFailed(taskId: string) {\n return runSync(this._async.markMatrixFailed(taskId))\n }\n\n approveMatrixAction(taskId: string) {\n return runSync(this._async.approveMatrixAction(taskId))\n }\n\n getMatrixConversation(taskId: string) {\n return runSync(this._async.getMatrixConversation(taskId))\n }\n\n // ------------------------------------------------------------------\n // VSA workflow\n // ------------------------------------------------------------------\n\n createVSATask(params: Parameters<OrchestratorAsync[\"createVSATask\"]>[0]) {\n return runSync(this._async.createVSATask(params))\n }\n\n sendVSAMessage(taskId: string, content: string) {\n return runSync(this._async.sendVSAMessage(taskId, content))\n }\n\n renameVSATask(taskId: string, title: string) {\n return runSync(this._async.renameVSATask(taskId, title))\n }\n\n regenerateVSATitle(taskId: string) {\n return runSync(this._async.regenerateVSATitle(taskId))\n }\n\n markVSAComplete(taskId: string) {\n return runSync(this._async.markVSAComplete(taskId))\n }\n\n markVSAFailed(taskId: string) {\n return runSync(this._async.markVSAFailed(taskId))\n }\n\n stopVSA(taskId: string) {\n return runSync(this._async.stopVSA(taskId))\n }\n\n deleteVSA(taskId: string) {\n return runSync(this._async.deleteVSA(taskId))\n }\n\n listVSATasks(params?: Parameters<OrchestratorAsync[\"listVSATasks\"]>[0]) {\n return runSync(this._async.listVSATasks(params))\n }\n\n searchVSATasks(query: string) {\n return runSync(this._async.searchVSATasks(query))\n }\n\n deleteVSATasksBulk(taskIds: string[]) {\n return runSync(this._async.deleteVSATasksBulk(taskIds))\n }\n\n // ------------------------------------------------------------------\n // MIO workflow\n // ------------------------------------------------------------------\n\n sendMioMessage(taskId: string, content: string) {\n return runSync(this._async.sendMioMessage(taskId, content))\n }\n\n approveMioAction(taskId: string) {\n return runSync(this._async.approveMioAction(taskId))\n }\n\n wakeMio(taskId: string) {\n return runSync(this._async.wakeMio(taskId))\n }\n\n sendMioUserAway(taskId: string) {\n return runSync(this._async.sendMioUserAway(taskId))\n }\n\n markMioComplete(taskId: string) {\n return runSync(this._async.markMioComplete(taskId))\n }\n\n markMioFailed(taskId: string) {\n return runSync(this._async.markMioFailed(taskId))\n }\n\n archiveMio(taskId: string) {\n return runSync(this._async.archiveMio(taskId))\n }\n\n getMioContext(taskId: string) {\n return runSync(this._async.getMioContext(taskId))\n }\n\n // ------------------------------------------------------------------\n // Tools\n // ------------------------------------------------------------------\n\n listTools() {\n return runSync(this._async.listTools())\n }\n\n // ------------------------------------------------------------------\n // Debug / Admin\n // ------------------------------------------------------------------\n\n getWorkflowStates() {\n return runSync(this._async.getWorkflowStates())\n }\n\n updateTaskModels(taskId: string, models: { agent?: string; orchestrator?: string }) {\n return runSync(this._async.updateTaskModels(taskId, models))\n }\n\n updateTaskIteration(taskId: string, iteration: number) {\n return runSync(this._async.updateTaskIteration(taskId, iteration))\n }\n\n updateTaskWorkflowData(taskId: string, workflowData: Record<string, unknown>) {\n return runSync(this._async.updateTaskWorkflowData(taskId, workflowData))\n }\n\n deleteMessage(taskId: string, messageId: number) {\n return runSync(this._async.deleteMessage(taskId, messageId))\n }\n\n deleteMessages(taskId: string, messageIds: number[]) {\n return runSync(this._async.deleteMessages(taskId, messageIds))\n }\n\n updateMessage(taskId: string, messageId: number, update: { content?: string; reasoning?: string }) {\n return runSync(this._async.updateMessage(taskId, messageId, update))\n }\n\n resetMatrixToPhase(taskId: string, phase: number) {\n return runSync(this._async.resetMatrixToPhase(taskId, phase))\n }\n\n getMessageTranslations(taskId: string, messageId: number, locale?: string) {\n return runSync(this._async.getMessageTranslations(taskId, messageId, locale))\n }\n\n // ------------------------------------------------------------------\n // Error events\n // ------------------------------------------------------------------\n\n listErrors(params?: Parameters<OrchestratorAsync[\"listErrors\"]>[0]) {\n return runSync(this._async.listErrors(params))\n }\n\n getErrorDetail(errorId: string) {\n return runSync(this._async.getErrorDetail(errorId))\n }\n\n getErrorStats(since?: string) {\n return runSync(this._async.getErrorStats(since))\n }\n\n countErrors(since?: string) {\n return runSync(this._async.countErrors(since))\n }\n\n purgeErrors() {\n return runSync(this._async.purgeErrors())\n }\n\n // ------------------------------------------------------------------\n // Health / Metrics\n // ------------------------------------------------------------------\n\n health() {\n return runSync(this._async.health())\n }\n\n healthDetailed() {\n return runSync(this._async.healthDetailed())\n }\n\n ready() {\n return runSync(this._async.ready())\n }\n\n healthLeader() {\n return runSync(this._async.healthLeader())\n }\n\n getMetrics(types?: string) {\n return runSync(this._async.getMetrics(types))\n }\n\n // ------------------------------------------------------------------\n // Configuration\n // ------------------------------------------------------------------\n\n getSystemStatus() {\n return runSync(this._async.getSystemStatus())\n }\n\n updateSettings(settings: Record<string, unknown>) {\n return runSync(this._async.updateSettings(settings))\n }\n\n getConfigurationStatus() {\n return runSync(this._async.getConfigurationStatus())\n }\n\n setAgentModel(model: string) {\n return runSync(this._async.setAgentModel(model))\n }\n\n setOrchestratorModel(model: string) {\n return runSync(this._async.setOrchestratorModel(model))\n }\n\n getLLMBackendStatus() {\n return runSync(this._async.getLLMBackendStatus())\n }\n\n addLLMBackend(host: string, apiKey: string) {\n return runSync(this._async.addLLMBackend(host, apiKey))\n }\n\n removeLLMBackend(host: string) {\n return runSync(this._async.removeLLMBackend(host))\n }\n\n getMCPServerStatus() {\n return runSync(this._async.getMCPServerStatus())\n }\n\n addMCPServer(host: string, apiKey: string) {\n return runSync(this._async.addMCPServer(host, apiKey))\n }\n\n removeMCPServer(host: string) {\n return runSync(this._async.removeMCPServer(host))\n }\n\n getTaskHandlerStatus() {\n return runSync(this._async.getTaskHandlerStatus())\n }\n\n getTaskHandlerStatusLocal() {\n return runSync(this._async.getTaskHandlerStatusLocal())\n }\n\n setConcurrentTasksPerReplica(maxTasks: number) {\n return runSync(this._async.setConcurrentTasksPerReplica(maxTasks))\n }\n\n getSummaryWorkerStatus() {\n return runSync(this._async.getSummaryWorkerStatus())\n }\n\n setCompactorModel(modelName: string) {\n return runSync(this._async.setCompactorModel(modelName))\n }\n\n setTranslateModel(modelName: string) {\n return runSync(this._async.setTranslateModel(modelName))\n }\n\n getTokenWorkerStatus() {\n return runSync(this._async.getTokenWorkerStatus())\n }\n\n getSlotsStatus() {\n return runSync(this._async.getSlotsStatus())\n }\n\n // ------------------------------------------------------------------\n // Auth / WebSocket status\n // ------------------------------------------------------------------\n\n getAuthConfig() {\n return runSync(this._async.getAuthConfig())\n }\n\n getWebSocketStatus() {\n return runSync(this._async.getWebSocketStatus())\n }\n\n // ------------------------------------------------------------------\n // SSE stream (collects all events into an array)\n // ------------------------------------------------------------------\n\n streamTaskStatus(_taskId: string): Record<string, unknown>[] {\n const events: Record<string, unknown>[] = []\n // Stream is async-only; for sync usage this returns empty\n // Users should use the async variant for streaming\n return events\n }\n}\n\nfunction runSync<T>(promise: Promise<T>): T {\n // In browser/Ember contexts, we can't use synchronous blocking.\n // This is a thin wrapper that assumes the promise resolves immediately\n // in practice, or the caller uses the async variant.\n // For Node.js scripts, the sync wrapper behaves correctly.\n let result: T | undefined\n let error: unknown\n let done = false\n\n promise.then(\n (r) => { result = r; done = true },\n (e) => { error = e; done = true },\n )\n\n // In Node.js, we could use a tight loop with setTimeout to wait,\n // but in browsers this hangs. The sync wrapper is best-effort;\n // for true synchronous use, prefer the async client or a Node.js\n // environment where we can block the event loop.\n if (!done) {\n // In Node.js, run a quick spin loop\n const start = Date.now()\n while (!done && Date.now() - start < 10_000) {\n // Spin — this works in Node.js for micro-tick resolution\n }\n }\n\n if (!done) {\n throw new Error(\"Orchestrator sync: operation timed out\")\n }\n if (error) throw error\n return result!\n}\n","/**\n * Environment-based configuration for the orchestrator client.\n *\n * All settings are read from environment variables with sensible defaults,\n * so upstream applications can configure the client without passing args.\n */\n\nexport interface OrchestratorConfig {\n /** Base URL of the orchestrator (e.g. \"http://localhost:8080\"). */\n baseUrl: string\n /** Optional static bearer token sent as `Authorization: Bearer <key>`. */\n apiKey?: string\n /** Default timeout in milliseconds for HTTP requests. */\n timeoutMs: number\n /** Maximum retry attempts on transient failures. */\n maxRetries: number\n}\n\nconst DEFAULTS: OrchestratorConfig = {\n baseUrl: \"http://localhost:8080\",\n apiKey: undefined,\n timeoutMs: 30_000,\n maxRetries: 3,\n}\n\n/**\n * Build configuration from environment variables.\n *\n * - `ORCHESTRATOR_URL` — base URL (default: \"http://localhost:8080\")\n * - `ORCHESTRATOR_API_KEY` — optional bearer token\n * - `ORCHESTRATOR_TIMEOUT_MS` — timeout in ms (default: 30000)\n * - `ORCHESTRATOR_MAX_RETRIES` — max retries (default: 3)\n */\nexport function loadConfig(\n overrides?: Partial<OrchestratorConfig>,\n): OrchestratorConfig {\n return {\n baseUrl: (\n process.env.ORCHESTRATOR_URL ??\n overrides?.baseUrl ??\n DEFAULTS.baseUrl\n ).replace(/\\/+$/, \"\"),\n apiKey:\n process.env.ORCHESTRATOR_API_KEY ??\n overrides?.apiKey ??\n DEFAULTS.apiKey,\n timeoutMs: Number(\n process.env.ORCHESTRATOR_TIMEOUT_MS ??\n overrides?.timeoutMs ??\n DEFAULTS.timeoutMs,\n ),\n maxRetries: Number(\n process.env.ORCHESTRATOR_MAX_RETRIES ??\n overrides?.maxRetries ??\n DEFAULTS.maxRetries,\n ),\n }\n}\n","/**\n * Create a fetch implementation that ignores SSL certificate errors.\n *\n * Useful for connecting to orchestrator instances with self-signed or\n * internally-issued certificates during development or in isolated networks.\n *\n * Usage:\n *\n * import { Orchestrator, createInsecureFetch } from \"orchestrator-client\";\n *\n * const client = new Orchestrator({\n * baseUrl: \"https://orchestrator.internal:8443\",\n * fetch: await createInsecureFetch(),\n * });\n *\n * Note: Only works in Node.js (uses `https.Agent` underneath).\n * In browser environments, the global `fetch` is returned as-is.\n */\n\nlet _insecureFetch: typeof globalThis.fetch | undefined\n\nexport async function createInsecureFetch(): Promise<typeof globalThis.fetch> {\n if (_insecureFetch) return _insecureFetch\n\n // Check if we're in Node.js\n if (\n typeof process === \"undefined\" ||\n process.versions?.node == null\n ) {\n // In browsers, SSL is handled by the browser — return global fetch\n _insecureFetch = globalThis.fetch\n return _insecureFetch\n }\n\n // Dynamic import — works with ESM and tsup bundling\n const https = await import(\"node:https\")\n const http = await import(\"node:http\")\n\n const agent = new https.Agent({ rejectUnauthorized: false })\n\n _insecureFetch = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const urlStr = typeof input === \"string\" ? input : input.toString()\n const urlObj = new URL(urlStr)\n const isHttps = urlObj.protocol === \"https:\"\n\n return new Promise<Response>((resolve, reject) => {\n const mod = isHttps ? https : http\n const req = mod.request(\n urlStr,\n {\n method: init?.method ?? \"GET\",\n headers: init?.headers as Record<string, string> | undefined,\n rejectUnauthorized: false,\n agent: isHttps ? agent : undefined,\n },\n (res: NodeJS.ReadableStream) => {\n const chunks: Buffer[] = []\n res.on(\"data\", (chunk: Buffer) => chunks.push(chunk))\n res.on(\"end\", () => {\n const body = Buffer.concat(chunks)\n const headers = new Headers()\n // Cast to access the headers object from Node's IncomingMessage\n const resHeaders = (res as unknown as { headers: Record<string, string | string[]> }).headers\n if (resHeaders) {\n for (const [key, value] of Object.entries(resHeaders)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const v of value) headers.append(key, v)\n } else {\n headers.set(key, value)\n }\n }\n }\n }\n resolve(\n new Response(body, {\n status: (res as unknown as { statusCode?: number }).statusCode,\n statusText: (res as unknown as { statusMessage?: string }).statusMessage,\n headers,\n }),\n )\n })\n },\n )\n\n req.on(\"error\", reject)\n if (init?.body != null) {\n req.write(init.body)\n }\n req.end()\n })\n }\n\n return _insecureFetch\n}\n","/**\n * RealtimeClient — Socket.IO wrapper for orchestrator realtime events.\n *\n * Connects to the orchestrator's Socket.IO endpoint (same host:port as the\n * REST API) and provides a typed subscription layer using the server's\n * room-based event system.\n *\n * Usage:\n *\n * const rt = new RealtimeClient(\"http://localhost:8080\");\n * await rt.connect();\n * await rt.subscribeTask(\"task-abc123\");\n *\n * rt.on(\"task_status_changed\", (event) => {\n * console.log(event.new_status);\n * });\n */\n\nimport type { Socket as SocketIOClient } from \"socket.io-client\"\n\n// ---------------------------------------------------------------------------\n// Event type constants — mirror the Python client's event name constants\n// ---------------------------------------------------------------------------\n\nexport const EVENT_TASK_CREATED = \"task_created\"\nexport const EVENT_TASK_STATUS_CHANGED = \"task_status_changed\"\nexport const EVENT_TASK_ITERATION_CHANGED = \"task_iteration_changed\"\nexport const EVENT_TASK_DELETED = \"task_deleted\"\nexport const EVENT_TASK_RESULT_UPDATED = \"task_result_updated\"\nexport const EVENT_TASK_INSIGHT_UPDATED = \"task_insight_updated\"\nexport const EVENT_MESSAGE_ADDED = \"message_added\"\nexport const EVENT_MESSAGE_STREAMING = \"message_streaming\"\nexport const EVENT_MESSAGE_SUMMARY_GENERATED = \"message_summary_generated\"\nexport const EVENT_MESSAGE_TRANSLATION_READY = \"message_translation_ready\"\nexport const EVENT_ERROR_EVENT_RECORDED = \"error_event_recorded\"\n\nexport type EventHandler = (...args: unknown[]) => void\n\nexport interface RealtimeClientOptions {\n /** Socket.IO connection options. */\n socketOptions?: Record<string, unknown>\n /** Optional bearer token or async token getter. */\n getToken?: (() => string | Promise<string>) | string\n /** Whether to auto-connect on construction (default: false). */\n autoConnect?: boolean\n}\n\n/**\n * Socket.IO-based realtime client for receiving orchestrator events.\n *\n * Requires the consumer to provide their own `socket.io-client` instance\n * to avoid version conflicts.\n */\nexport class RealtimeClient {\n private _baseUrl: string\n private _socketOptions: Record<string, unknown>\n private _getToken?: (() => string | Promise<string>) | string\n private _socket: SocketIOClient | null = null\n private _handlers: Map<string, Set<EventHandler>> = new Map()\n private _connected = false\n\n constructor(baseUrl: string, opts: RealtimeClientOptions) {\n this._baseUrl = baseUrl.replace(/\\/+$/, \"\")\n this._socketOptions = opts.socketOptions ?? {}\n this._getToken = opts.getToken\n\n if (opts.autoConnect) {\n this.connect()\n }\n }\n\n get connected(): boolean {\n return this._connected\n }\n\n async connect(): Promise<void> {\n const auth: Record<string, unknown> = {}\n if (this._getToken) {\n auth.token =\n typeof this._getToken === \"function\"\n ? await this._getToken()\n : this._getToken\n }\n\n // We construct the socket dynamically to avoid a hard import\n const { io } = await import(\"socket.io-client\")\n this._socket = io(this._baseUrl, {\n path: \"/socket.io\",\n auth,\n transports: [\"websocket\", \"polling\"],\n ...this._socketOptions,\n }) as unknown as SocketIOClient\n\n this._socket.on(\"connect\", () => {\n this._connected = true\n })\n\n this._socket.on(\"disconnect\", () => {\n this._connected = false\n })\n\n return new Promise<void>((resolve, reject) => {\n const socket = this._socket!\n socket.on(\"connect\", () => resolve())\n socket.on(\"connect_error\", (err: Error) => reject(err))\n // If already connected, resolve immediately\n if (socket.connected) {\n resolve()\n }\n })\n }\n\n async disconnect(): Promise<void> {\n if (this._socket) {\n this._socket.disconnect()\n this._socket = null\n }\n this._connected = false\n }\n\n /**\n * Subscribe to realtime events for a specific task.\n */\n async subscribeTask(taskId: string): Promise<void> {\n if (!this._socket) throw new Error(\"RealtimeClient not connected\")\n return new Promise((resolve, reject) => {\n this._socket!.emit(\"subscribe\", { task_id: taskId }, (response: { ok: boolean; error?: string }) => {\n if (response.ok) resolve()\n else reject(new Error(response.error ?? \"Subscription failed\"))\n })\n })\n }\n\n /**\n * Unsubscribe from realtime events for a specific task.\n */\n async unsubscribeTask(taskId: string): Promise<void> {\n if (!this._socket) throw new Error(\"RealtimeClient not connected\")\n return new Promise((resolve, reject) => {\n this._socket!.emit(\"unsubscribe\", { task_id: taskId }, (response: { ok: boolean; error?: string }) => {\n if (response.ok) resolve()\n else reject(new Error(response.error ?? \"Unsubscription failed\"))\n })\n })\n }\n\n /**\n * Register a handler for a specific event type.\n */\n on(event: string, handler: EventHandler): void {\n if (!this._handlers.has(event)) {\n this._handlers.set(event, new Set())\n // Wire up socket listener when first handler is added\n if (this._socket) {\n this._socket.on(event, (...args: unknown[]) => {\n const handlers = this._handlers.get(event)\n if (handlers) {\n for (const h of handlers) {\n h(...args)\n }\n }\n })\n }\n }\n this._handlers.get(event)!.add(handler)\n }\n\n /**\n * Remove a registered handler.\n */\n off(event: string, handler: EventHandler): void {\n const handlers = this._handlers.get(event)\n if (handlers) {\n handlers.delete(handler)\n if (handlers.size === 0) {\n this._handlers.delete(event)\n if (this._socket) {\n this._socket.off(event)\n }\n }\n }\n }\n\n /**\n * Wait for the connection to close (for long-running listeners).\n */\n wait(): Promise<void> {\n return new Promise((resolve) => {\n const socket = this._socket\n if (!socket) {\n resolve()\n return\n }\n socket.on(\"disconnect\", () => resolve())\n })\n }\n}\n","/**\n * orchestrator-client — TypeScript/JavaScript client for the DAMIT AIOps Orchestrator.\n *\n * Provides a complete wrapper for the orchestrator's REST API and\n * Socket.IO realtime events, with typed responses, automatic retry,\n * and configurable auth.\n *\n * Main components:\n *\n * - {@link Orchestrator} — synchronous REST client (primary interface)\n * - {@link OrchestratorAsync} — async REST client (for async contexts)\n * - {@link RealtimeClient} — Socket.IO event subscription layer\n * - Typed exception hierarchy ({@link OrchestratorError} and subclasses)\n * - Typed response interfaces for all response shapes\n */\n\nexport const VERSION = \"5.6.0\"\n\n// Client classes\nexport { OrchestratorAsync } from \"./client.js\"\nexport type { OrchestratorClientOptions } from \"./client.js\"\nexport { Orchestrator } from \"./sync-client.js\"\n\n// Config\nexport { loadConfig } from \"./config.js\"\nexport type { OrchestratorConfig } from \"./config.js\"\n\n// Custom fetch\nexport { createInsecureFetch } from \"./fetch.js\"\n\n// Socket.IO\nexport { RealtimeClient } from \"./socketio.js\"\nexport {\n EVENT_TASK_CREATED,\n EVENT_TASK_STATUS_CHANGED,\n EVENT_TASK_ITERATION_CHANGED,\n EVENT_TASK_DELETED,\n EVENT_TASK_RESULT_UPDATED,\n EVENT_TASK_INSIGHT_UPDATED,\n EVENT_MESSAGE_ADDED,\n EVENT_MESSAGE_STREAMING,\n EVENT_MESSAGE_SUMMARY_GENERATED,\n EVENT_MESSAGE_TRANSLATION_READY,\n EVENT_ERROR_EVENT_RECORDED,\n} from \"./socketio.js\"\nexport type { EventHandler, RealtimeClientOptions } from \"./socketio.js\"\n\n// Exceptions\nexport {\n OrchestratorError,\n OrchestratorConnectionError,\n OrchestratorAuthError,\n OrchestratorNotFoundError,\n OrchestratorAPIError,\n OrchestratorConfigError,\n} from \"./errors.js\"\n\n// Models\nexport type { Pagination } from \"./models/pagination.js\"\nexport type {\n TaskSummary,\n TaskOptions,\n TaskDetail,\n TaskListResult,\n TaskCreateResponse,\n TaskCancelResponse,\n TaskDeleteResult,\n VSATaskCreateResponse,\n} from \"./models/task.js\"\nexport type {\n AttachmentMeta,\n ToolCall,\n Message,\n ConversationResult,\n MatrixConversationResult,\n ArchivedContent,\n MessageTranslation,\n MessageTranslationsResult,\n MessageTranslationReadyEvent,\n} from \"./models/conversation.js\"\nexport type {\n ErrorEvent,\n ErrorEventDetail,\n ErrorStatsResult,\n ErrorCountResult,\n ErrorPurgeResult,\n} from \"./models/errors.js\"\nexport type {\n HealthStatus,\n ComponentHealth,\n HealthDetail,\n ReadinessCheck,\n ReadinessResult,\n LockStatus,\n LeaderStatus,\n MetricSnapshot,\n} from \"./models/health.js\"\nexport type {\n SystemStatusSettings,\n SystemStatus,\n LLMBackendInfo,\n MCPServerInfo,\n TaskHandlerReplica,\n TaskHandlerCluster,\n TaskHandlerStatus,\n TaskHandlerStatusLocal,\n SummaryWorkerStatus,\n TokenWorkerStatus,\n SlotInfo,\n SlotsStatus,\n ConfigurationStatus,\n} from \"./models/config-models.js\"\nexport type { ToolInfo, ToolsListResult } from \"./models/tools.js\"\nexport type {\n CompactionEvent,\n TaskJournal,\n AttachmentUploadResponse,\n} from \"./models/journal.js\"\nexport type { AuthConfig, WebSocketClientInfo, WebSocketStatus } from \"./models/auth.js\"\nexport type { SuccessResponse, MioContext, WorkflowStates } from \"./models/workflow.js\"\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/sync-client.ts","../src/config.ts","../src/fetch.ts","../src/socketio.ts","../src/index.ts"],"sourcesContent":["/**\n * Typed exception hierarchy for orchestrator API interactions.\n *\n * Every error carries `statusCode` and `errorCode` extracted from the\n * server's uniform error envelope, making it easy for callers to handle\n * specific error conditions programmatically.\n */\n\n/**\n * Base error for all orchestrator-related errors.\n */\nexport class OrchestratorError extends Error {\n\tpublic readonly statusCode: number | null;\n\tpublic readonly errorCode: string | null;\n\tpublic readonly details: Record<string, unknown>;\n\n\tconstructor(\n\t\tmessage: string,\n\t\topts?: {\n\t\t\tstatusCode?: number | null;\n\t\t\terrorCode?: string | null;\n\t\t\tdetails?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"OrchestratorError\";\n\t\tthis.statusCode = opts?.statusCode ?? null;\n\t\tthis.errorCode = opts?.errorCode ?? null;\n\t\tthis.details = opts?.details ?? {};\n\t}\n}\n\n/**\n * Orchestrator is unreachable (network / DNS / timeout).\n */\nexport class OrchestratorConnectionError extends OrchestratorError {\n\tconstructor(message: string) {\n\t\tsuper(message, { statusCode: null });\n\t\tthis.name = \"OrchestratorConnectionError\";\n\t}\n}\n\n/**\n * Authentication or authorization failure (401/403).\n */\nexport class OrchestratorAuthError extends OrchestratorError {\n\tconstructor(message: string, statusCode = 401) {\n\t\tsuper(message, { statusCode });\n\t\tthis.name = \"OrchestratorAuthError\";\n\t}\n}\n\n/**\n * Requested resource does not exist (404).\n */\nexport class OrchestratorNotFoundError extends OrchestratorError {\n\tpublic readonly resourceType: string;\n\tpublic readonly resourceId: string;\n\n\tconstructor(resourceType: string, resourceId: string, message?: string) {\n\t\tsuper(message ?? `${resourceType} not found: ${resourceId}`, {\n\t\t\tstatusCode: 404,\n\t\t});\n\t\tthis.name = \"OrchestratorNotFoundError\";\n\t\tthis.resourceType = resourceType;\n\t\tthis.resourceId = resourceId;\n\t}\n}\n\n/**\n * Non-2xx response from the orchestrator API.\n *\n * Covers 400 Bad Request, 500 Internal Server Error, and any other\n * unexpected status that isn't auth or not-found specific.\n */\nexport class OrchestratorAPIError extends OrchestratorError {\n\tconstructor(\n\t\tmessage: string,\n\t\tstatusCode: number,\n\t\terrorCode?: string | null,\n\t\tdetails?: Record<string, unknown>,\n\t) {\n\t\tsuper(message, { statusCode, errorCode, details });\n\t\tthis.name = \"OrchestratorAPIError\";\n\t}\n}\n\n/**\n * Invalid or missing client configuration (bad env vars, etc.).\n */\nexport class OrchestratorConfigError extends OrchestratorError {\n\tconstructor(message: string) {\n\t\tsuper(message, { statusCode: null });\n\t\tthis.name = \"OrchestratorConfigError\";\n\t}\n}\n","/**\n * OrchestratorAsync — async REST API wrapper for the DAMIT AIOps Orchestrator.\n *\n * Provides a complete mapping of the orchestrator's HTTP endpoints using\n * native fetch with automatic retry (exponential backoff), typed responses,\n * and configurable auth via bearer token or callback.\n *\n * Usage:\n *\n * const client = new OrchestratorAsync({ baseUrl: \"http://localhost:8080\" });\n * const tasks = await client.listTasks({ workflowId: \"proactive\" });\n * for (const t of tasks.tasks) {\n * console.log(t.id, t.status);\n * }\n * await client.close();\n */\n\nimport {\n\tOrchestratorAPIError,\n\tOrchestratorAuthError,\n\tOrchestratorConnectionError,\n\tOrchestratorNotFoundError,\n} from \"./errors.js\";\nimport type {\n\tAttachmentUploadResponse,\n\tAuthConfig,\n\tCompactionEvent,\n\tConfigurationStatus,\n\tConversationResult,\n\tErrorCountResult,\n\tErrorEventDetail,\n\tErrorPurgeResult,\n\tErrorStatsResult,\n\tHealthDetail,\n\tHealthStatus,\n\tLeaderStatus,\n\tMatrixConversationResult,\n\tMessage,\n\tMessageTranslation,\n\tMessageTranslationsResult,\n\tMetricSnapshot,\n\tMioContext,\n\tPagination,\n\tReadinessResult,\n\tSlotsStatus,\n\tSuccessResponse,\n\tSummaryWorkerStatus,\n\tSystemStatus,\n\tTaskCreateResponse,\n\tTaskDeleteResult,\n\tTaskDetail,\n\tTaskHandlerStatus,\n\tTaskHandlerStatusLocal,\n\tTaskJournal,\n\tTaskListResult,\n\tTaskSummary,\n\tTokenWorkerStatus,\n\tToolInfo,\n\tToolsListResult,\n\tVSATaskCreateResponse,\n\tWebSocketStatus,\n\tWorkflowStates,\n} from \"./models/index.js\";\n\nconst RETRY_BACKOFF_BASE = 500;\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\n\n// ---------------------------------------------------------------------------\n// Internal helpers — build typed objects from raw API response data\n// ---------------------------------------------------------------------------\n\nfunction buildPagination(data: Record<string, unknown>): Pagination {\n\tconst p = (data.pagination ?? {}) as Record<string, unknown>;\n\treturn {\n\t\tcurrentPage: (p.currentPage ?? 1) as number,\n\t\tperPage: (p.perPage ?? 25) as number,\n\t\ttotalItems: (p.totalItems ?? 0) as number,\n\t\ttotalPages: (p.totalPages ?? 1) as number,\n\t\thasNext: (p.hasNext ?? false) as boolean,\n\t\thasPrev: (p.hasPrev ?? false) as boolean,\n\t};\n}\n\nfunction buildTaskSummary(t: Record<string, unknown>): TaskSummary {\n\treturn {\n\t\tid: (t.id ?? \"\") as string,\n\t\tstatus: (t.status ?? \"\") as string,\n\t\tworkflowId: (t.workflowId ?? t.workflow_id ?? \"\") as string,\n\t\titeration: (t.iteration ?? 0) as number,\n\t\tmaxIterations: (t.maxIterations ?? t.max_iterations ?? 0) as number,\n\t\tgoalPrompt: (t.goalPrompt ?? t.goal_prompt ?? \"\") as string,\n\t\tresult: (t.result ?? \"\") as string,\n\t\tresultLocalized: (t.resultLocalized ?? t.result_localized ?? null) as\n\t\t\t| string\n\t\t\t| null,\n\t\tapprovalReason: (t.approvalReason ?? t.approval_reason ?? \"\") as string,\n\t\tticketId: (t.ticketId ?? t.ticket_id ?? null) as string | null,\n\t\tavailableTools: (t.availableTools ?? t.available_tools ?? null) as\n\t\t\t| string[]\n\t\t\t| null,\n\t\tinsight: (t.insight ?? null) as string | null,\n\t\tinsightLocalized: (t.insightLocalized ?? t.insight_localized ?? null) as\n\t\t\t| string\n\t\t\t| null,\n\t\tcreatedAt: (t.createdAt ?? t.created_at ?? \"\") as string,\n\t\tupdatedAt: (t.updatedAt ?? t.updated_at ?? \"\") as string,\n\t\tpendingTranslationsForLocales: (t.pendingTranslationsForLocales ??\n\t\t\tt.pending_translations_for_locales ??\n\t\t\tnull) as string[] | null | undefined,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Client options\n// ---------------------------------------------------------------------------\n\nexport interface OrchestratorClientOptions {\n\t/** Base URL of the orchestrator (e.g. \"http://localhost:8080\"). */\n\tbaseUrl?: string;\n\t/** Optional static bearer token. */\n\tapiKey?: string;\n\t/** Async function that returns a bearer token (called on each request). */\n\tgetToken?: () => string | Promise<string>;\n\t/** Request timeout in milliseconds (default: 30000). */\n\ttimeoutMs?: number;\n\t/** Max retry attempts on transient failures (default: 3). */\n\tmaxRetries?: number;\n\t/**\n\t * Custom fetch implementation override.\n\t *\n\t * Use this to inject a fetch that ignores SSL errors (self-signed certs):\n\t *\n\t * new Orchestrator({\n\t * fetch: await createInsecureFetch(),\n\t * })\n\t *\n\t * When not provided, `globalThis.fetch` is used.\n\t */\n\tfetch?: typeof globalThis.fetch;\n\t/**\n\t * Allow self-signed / invalid SSL certificates.\n\t *\n\t * When true and no custom `fetch` is provided, creates an internal fetch\n\t * that uses Node.js `https.Agent` with `rejectUnauthorized: false`.\n\t * Only works in Node.js; ignored in browsers.\n\t */\n\tinsecure?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// OrchestratorAsync\n// ---------------------------------------------------------------------------\n\nexport class OrchestratorAsync {\n\tprotected _baseUrl: string;\n\tprotected _apiKey: string | undefined;\n\tprotected _getToken: (() => string | Promise<string>) | undefined;\n\tprotected _timeoutMs: number;\n\tprotected _maxRetries: number;\n\tprotected _fetch: typeof globalThis.fetch;\n\tprotected _abortController: AbortController | null = null;\n\n\tconstructor(opts: OrchestratorClientOptions = {}) {\n\t\tthis._baseUrl = (opts.baseUrl ?? \"http://localhost:8080\").replace(\n\t\t\t/\\/+$/,\n\t\t\t\"\",\n\t\t);\n\t\tthis._apiKey = opts.apiKey;\n\t\tthis._getToken = opts.getToken;\n\t\tthis._timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n\t\tthis._maxRetries = opts.maxRetries ?? DEFAULT_MAX_RETRIES;\n\t\tthis._fetch = opts.fetch ?? globalThis.fetch;\n\t\tif (\n\t\t\topts.insecure &&\n\t\t\t!opts.fetch &&\n\t\t\ttypeof process !== \"undefined\" &&\n\t\t\tprocess.versions?.node\n\t\t) {\n\t\t\t// Lazy-init insecure fetch — requires async import of Node.js modules\n\t\t\t// The actual switch happens at request time since we can't await here\n\t\t\tthis._insecure = true;\n\t\t}\n\t}\n\n\tprotected _insecure = false;\n\n\tasync close(): Promise<void> {\n\t\tthis._abortController?.abort();\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Internal helpers\n\t// ------------------------------------------------------------------\n\n\tprotected _makeUrl(path: string): string {\n\t\treturn `${this._baseUrl}${path}`;\n\t}\n\n\tprotected async _resolveHeaders(): Promise<Record<string, string>> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (this._apiKey) {\n\t\t\theaders.Authorization = `Bearer ${this._apiKey}`;\n\t\t} else if (this._getToken) {\n\t\t\tconst token = await this._getToken();\n\t\t\tif (token) {\n\t\t\t\theaders.Authorization = `Bearer ${token}`;\n\t\t\t}\n\t\t}\n\t\treturn headers;\n\t}\n\n\tprotected async _request(\n\t\tmethod: string,\n\t\tpath: string,\n\t\topts?: {\n\t\t\tjsonBody?: unknown;\n\t\t\tparams?: Record<string, string | number | boolean | undefined>;\n\t\t\theaders?: Record<string, string>;\n\t\t\trawResponse?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t},\n\t): Promise<Response | unknown> {\n\t\tconst url = new URL(this._makeUrl(path));\n\t\tif (opts?.params) {\n\t\t\tfor (const [key, value] of Object.entries(opts.params)) {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\turl.searchParams.set(key, String(value));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst extraHeaders = await this._resolveHeaders();\n\t\tconst mergedHeaders: Record<string, string> = {\n\t\t\t...extraHeaders,\n\t\t\t...(opts?.headers ?? {}),\n\t\t};\n\t\tif (opts?.jsonBody !== undefined && !mergedHeaders[\"Content-Type\"]) {\n\t\t\tmergedHeaders[\"Content-Type\"] = \"application/json\";\n\t\t}\n\n\t\tfor (let attempt = 1; attempt <= this._maxRetries; attempt++) {\n\t\t\ttry {\n\t\t\t\tconst controller = new AbortController();\n\t\t\t\tconst timeoutId = setTimeout(() => controller.abort(), this._timeoutMs);\n\t\t\t\tconst signal = opts?.signal\n\t\t\t\t\t? combineSignals(opts.signal, controller.signal)\n\t\t\t\t\t: controller.signal;\n\n\t\t\t\tconst response = await this._fetch(url.toString(), {\n\t\t\t\t\tmethod,\n\t\t\t\t\theaders: mergedHeaders,\n\t\t\t\t\tbody:\n\t\t\t\t\t\topts?.jsonBody !== undefined\n\t\t\t\t\t\t\t? JSON.stringify(opts.jsonBody)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tsignal,\n\t\t\t\t});\n\n\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tthrow new OrchestratorAuthError(\n\t\t\t\t\t\t`Authentication failed for ${method} ${path}`,\n\t\t\t\t\t\t401,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (response.status === 403) {\n\t\t\t\t\tthrow new OrchestratorAuthError(\n\t\t\t\t\t\t`Access denied for ${method} ${path}`,\n\t\t\t\t\t\t403,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (response.status === 404) {\n\t\t\t\t\tthrow new OrchestratorNotFoundError(\n\t\t\t\t\t\t\"resource\",\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\t`Endpoint returned 404: ${method} ${path}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (response.status >= 500) {\n\t\t\t\t\tif (attempt === this._maxRetries) {\n\t\t\t\t\t\t// Fall through to error handling below\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst delay = RETRY_BACKOFF_BASE * 2 ** (attempt - 1);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`Server error ${response.status} (attempt ${attempt}/${this._maxRetries}), retrying in ${delay}ms`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait sleep(delay);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (opts?.rawResponse) {\n\t\t\t\t\treturn response;\n\t\t\t\t}\n\n\t\t\t\tif (response.ok) {\n\t\t\t\t\tconst contentType = response.headers.get(\"content-type\") ?? \"\";\n\t\t\t\t\tif (contentType.includes(\"application/json\")) {\n\t\t\t\t\t\treturn response.json() as Promise<unknown>;\n\t\t\t\t\t}\n\t\t\t\t\treturn { _text: await response.text() };\n\t\t\t\t}\n\n\t\t\t\t// Error handling\n\t\t\t\tlet errorMessage: string;\n\t\t\t\tlet errorCode: string | null = null;\n\t\t\t\tlet errorDetails: Record<string, unknown> | null = null;\n\t\t\t\ttry {\n\t\t\t\t\tconst body = (await response.json()) as Record<string, unknown>;\n\t\t\t\t\tconst error = (body.error ?? body) as Record<string, unknown>;\n\t\t\t\t\terrorCode = (error.code as string) ?? null;\n\t\t\t\t\terrorMessage = (error.message as string) ?? (await response.text());\n\t\t\t\t\terrorDetails = (error.details as Record<string, unknown>) ?? null;\n\t\t\t\t} catch {\n\t\t\t\t\terrorMessage = await response.text();\n\t\t\t\t}\n\n\t\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t\terrorMessage,\n\t\t\t\t\tresponse.status,\n\t\t\t\t\terrorCode,\n\t\t\t\t\terrorDetails ?? undefined,\n\t\t\t\t);\n\t\t\t} catch (err) {\n\t\t\t\tif (\n\t\t\t\t\terr instanceof OrchestratorAPIError ||\n\t\t\t\t\terr instanceof OrchestratorAuthError ||\n\t\t\t\t\terr instanceof OrchestratorNotFoundError\n\t\t\t\t) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tif (err instanceof OrchestratorConnectionError) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tif (err instanceof DOMException && err.name === \"AbortError\") {\n\t\t\t\t\tif (attempt === this._maxRetries) {\n\t\t\t\t\t\tthrow new OrchestratorConnectionError(\n\t\t\t\t\t\t\t`Request timed out after ${this._timeoutMs}ms (${this._maxRetries} attempts): ${method} ${path}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst delay = RETRY_BACKOFF_BASE * 2 ** (attempt - 1);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Request timed out (attempt ${attempt}/${this._maxRetries}), retrying in ${delay}ms`,\n\t\t\t\t\t);\n\t\t\t\t\tawait sleep(delay);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (err instanceof TypeError) {\n\t\t\t\t\t// fetch network errors are TypeErrors\n\t\t\t\t\tif (attempt === this._maxRetries) {\n\t\t\t\t\t\tthrow new OrchestratorConnectionError(\n\t\t\t\t\t\t\t`Orchestrator unreachable after ${this._maxRetries} attempts: ${(err as Error).message}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst delay = RETRY_BACKOFF_BASE * 2 ** (attempt - 1);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Request failed (attempt ${attempt}/${this._maxRetries}), retrying in ${delay}ms: ${(err as Error).message}`,\n\t\t\t\t\t);\n\t\t\t\t\tawait sleep(delay);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\n\t\tthrow new OrchestratorConnectionError(\n\t\t\t`Request failed after ${this._maxRetries} attempts: ${method} ${path}`,\n\t\t);\n\t}\n\n\tprotected async _get<T>(\n\t\tpath: string,\n\t\tparams?: Record<string, string | number | boolean | undefined>,\n\t): Promise<T> {\n\t\treturn (await this._request(\"GET\", path, { params })) as T;\n\t}\n\n\tprotected async _post<T>(path: string, body?: unknown): Promise<T> {\n\t\treturn (await this._request(\"POST\", path, { jsonBody: body })) as T;\n\t}\n\n\tprotected async _put<T>(path: string, body?: unknown): Promise<T> {\n\t\treturn (await this._request(\"PUT\", path, { jsonBody: body })) as T;\n\t}\n\n\tprotected async _delete<T>(path: string): Promise<T> {\n\t\treturn (await this._request(\"DELETE\", path)) as T;\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Tasks\n\t// ------------------------------------------------------------------\n\n\tasync listTasks(params?: {\n\t\tworkflowId?: string;\n\t\tstatus?: string;\n\t\tlimit?: number;\n\t\toffset?: number;\n\t\tsortBy?: string;\n\t\tsortOrder?: string;\n\t}): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/tasks\", {\n\t\t\tworkflow_id: params?.workflowId,\n\t\t\tstatus: params?.status,\n\t\t\tlimit: params?.limit,\n\t\t\toffset: params?.offset,\n\t\t\tsort_by: params?.sortBy,\n\t\t\tsort_order: params?.sortOrder,\n\t\t});\n\t\tconst tasks = ((data.tasks ?? []) as Record<string, unknown>[]).map(\n\t\t\tbuildTaskSummary,\n\t\t);\n\t\treturn { tasks, pagination: buildPagination(data) };\n\t}\n\n\tasync createTask(params: {\n\t\tworkflowId: string;\n\t\tgoalPrompt: string;\n\t\tmaxIterations?: number;\n\t\toptions?: Record<string, boolean>;\n\t\tticketId?: string;\n\t\ttitle?: string;\n\t\tmodelId?: string;\n\t}): Promise<TaskCreateResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/tasks\", {\n\t\t\tworkflow_id: params.workflowId,\n\t\t\tgoal_prompt: params.goalPrompt,\n\t\t\tmax_iterations: params.maxIterations,\n\t\t\toptions: params.options,\n\t\t\tticket_id: params.ticketId,\n\t\t\ttitle: params.title,\n\t\t\tmodel_id: params.modelId,\n\t\t});\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? \"\") as string,\n\t\t\tstatus: (data.status ?? \"\") as string,\n\t\t};\n\t}\n\n\tasync getTaskStatus(taskId: string): Promise<TaskDetail> {\n\t\tconst data = await this._get<Record<string, unknown>>(`/tasks/${taskId}`);\n\t\treturn {\n\t\t\t...buildTaskSummary(data),\n\t\t\tsubtaskIds: (data.subtaskIds ?? data.subtask_ids ?? []) as string[],\n\t\t\tworkflowData: (data.workflowData ?? data.workflow_data ?? null) as Record<\n\t\t\t\tstring,\n\t\t\t\tunknown\n\t\t\t> | null,\n\t\t\toptions: (data.options ?? null) as Record<string, unknown> | null,\n\t\t};\n\t}\n\n\tasync getTaskConversation(taskId: string): Promise<ConversationResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/conversation`,\n\t\t);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tconversation: (\n\t\t\t\t(data.conversation ?? []) as Record<string, unknown>[]\n\t\t\t).map((m) => m as unknown as Message),\n\t\t};\n\t}\n\n\tasync getArchivedMessageContent(\n\t\ttaskId: string,\n\t\tmessageId: number,\n\t): Promise<Record<string, unknown>> {\n\t\treturn this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/conversation/messages/${messageId}/archived`,\n\t\t);\n\t}\n\n\tasync getTaskCompactions(taskId: string): Promise<CompactionEvent[]> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/compactions`,\n\t\t);\n\t\treturn (data.compactions ?? []) as CompactionEvent[];\n\t}\n\n\tasync getTaskJournal(taskId: string): Promise<TaskJournal> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/journal`,\n\t\t);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\texists: (data.exists ?? false) as boolean,\n\t\t\tcontent: (data.content ?? null) as string | null,\n\t\t\tupdatedAt: (data.updated_at ?? data.updatedAt ?? null) as string | null,\n\t\t\tversion: (data.version ?? null) as number | null,\n\t\t\tsectionsOverBudget: (data.sections_over_budget ??\n\t\t\t\tdata.sectionsOverBudget ??\n\t\t\t\tnull) as Record<string, number> | null,\n\t\t};\n\t}\n\n\tasync cancelTask(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/cancel`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync deleteTask(taskId: string): Promise<TaskDeleteResult> {\n\t\tconst data = await this._delete<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}`,\n\t\t);\n\t\treturn {\n\t\t\tdeletedTasks: (data.deletedTasks ?? data.deleted_tasks ?? []) as string[],\n\t\t\tfailedTasks: (data.failedTasks ?? data.failed_tasks ?? []) as string[],\n\t\t\ttotalDeleted: (data.totalDeleted ?? data.total_deleted ?? 0) as number,\n\t\t\ttotalFailed: (data.totalFailed ?? data.total_failed ?? 0) as number,\n\t\t};\n\t}\n\n\tasync deleteTasks(taskIds: string[]): Promise<TaskDeleteResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/tasks/delete\", {\n\t\t\ttask_ids: taskIds,\n\t\t});\n\t\treturn {\n\t\t\tdeletedTasks: (data.deletedTasks ?? data.deleted_tasks ?? []) as string[],\n\t\t\tfailedTasks: (data.failedTasks ?? data.failed_tasks ?? []) as string[],\n\t\t\ttotalDeleted: (data.totalDeleted ?? data.total_deleted ?? 0) as number,\n\t\t\ttotalFailed: (data.totalFailed ?? data.total_failed ?? 0) as number,\n\t\t};\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Attachments\n\t// ------------------------------------------------------------------\n\n\tasync uploadAttachment(\n\t\ttaskId: string,\n\t\tfile: File | Blob,\n\t\tfilename?: string,\n\t): Promise<AttachmentUploadResponse> {\n\t\tconst formData = new FormData();\n\t\tformData.append(\"file\", file, filename);\n\t\tconst headers = await this._resolveHeaders();\n\t\t// Don't set Content-Type for FormData — browser sets it with boundary\n\t\tconst response = await this._fetch(\n\t\t\tthis._makeUrl(`/tasks/${taskId}/attachments`),\n\t\t\t{\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { ...headers },\n\t\t\t\tbody: formData,\n\t\t\t},\n\t\t);\n\t\tif (!response.ok) {\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t`Attachment upload failed: ${response.statusText}`,\n\t\t\t\tresponse.status,\n\t\t\t);\n\t\t}\n\t\tconst data = (await response.json()) as Record<string, unknown>;\n\t\treturn {\n\t\t\tid: (data.id ?? \"\") as string,\n\t\t\tfilename: (data.filename ?? \"\") as string,\n\t\t\tmimeType: (data.mimeType ?? data.mime_type ?? \"\") as string,\n\t\t\tsize: (data.size ?? 0) as number,\n\t\t\twidth: (data.width ?? null) as number | null,\n\t\t\theight: (data.height ?? null) as number | null,\n\t\t\ttokenCount: (data.tokenCount ?? data.token_count ?? null) as\n\t\t\t\t| number\n\t\t\t\t| null,\n\t\t};\n\t}\n\n\tasync downloadAttachment(\n\t\ttaskId: string,\n\t\tattachmentId: string,\n\t): Promise<Blob> {\n\t\tconst headers = await this._resolveHeaders();\n\t\tconst response = await this._fetch(\n\t\t\tthis._makeUrl(`/tasks/${taskId}/attachments/${attachmentId}`),\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t},\n\t\t);\n\t\tif (!response.ok) {\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t`Attachment download failed: ${response.statusText}`,\n\t\t\t\tresponse.status,\n\t\t\t);\n\t\t}\n\t\treturn response.blob();\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Interactive workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendInteractiveMessage(\n\t\ttaskId: string,\n\t\tcontent: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/interactive/message`,\n\t\t\t{\n\t\t\t\tcontent,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markInteractiveComplete(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/interactive/complete`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markInteractiveFailed(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/interactive/failed`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveInteractiveAction(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/interactive/approve`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Proactive workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendProactiveGuide(\n\t\ttaskId: string,\n\t\tguide: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/proactive/guide`,\n\t\t\t{\n\t\t\t\tguide,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync respondProactiveHelp(\n\t\ttaskId: string,\n\t\tresponse: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/proactive/respond`,\n\t\t\t{\n\t\t\t\tresponse,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveProactiveAction(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/proactive/approve`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Ticket workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendTicketGuide(\n\t\ttaskId: string,\n\t\tguide: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/ticket/guide`,\n\t\t\t{\n\t\t\t\tguide,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync respondTicketHelp(\n\t\ttaskId: string,\n\t\tresponse: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/ticket/respond`,\n\t\t\t{\n\t\t\t\tresponse,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveTicketAction(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/ticket/approve`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync wakeTicket(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/ticket/wake`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Matrix workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendMatrixMessage(\n\t\ttaskId: string,\n\t\tcontent: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/matrix/message`,\n\t\t\t{\n\t\t\t\tcontent,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markMatrixComplete(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/matrix/complete`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markMatrixFailed(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/matrix/failed`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveMatrixAction(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/matrix/approve`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMatrixConversation(\n\t\ttaskId: string,\n\t): Promise<MatrixConversationResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/matrix/conversation`,\n\t\t);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tconversation: (\n\t\t\t\t(data.conversation ?? []) as Record<string, unknown>[]\n\t\t\t).map((m) => m as unknown as Message),\n\t\t};\n\t}\n\n\t// ------------------------------------------------------------------\n\t// VSA workflow\n\t// ------------------------------------------------------------------\n\n\tasync createVSATask(params: {\n\t\tgoalPrompt: string;\n\t\ttitle?: string;\n\t\tmodelId?: string;\n\t\t/** Short-lived AiDIT delegated token (RFC 8693). Stored encrypted;\n\t\t * transparently appended as `token` to mcp-aidit tool-call arguments. */\n\t\tdelegatedToken?: string;\n\t}): Promise<VSATaskCreateResponse> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\tgoal_prompt: params.goalPrompt,\n\t\t\ttitle: params.title,\n\t\t\tmodel_id: params.modelId,\n\t\t};\n\t\tif (params.delegatedToken !== undefined) {\n\t\t\tbody.delegated_token = params.delegatedToken;\n\t\t}\n\t\tconst data = await this._post<Record<string, unknown>>(\"/tasks/vsa\", body);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? \"\") as string,\n\t\t\tstatus: (data.status ?? \"\") as string,\n\t\t};\n\t}\n\n\tasync sendVSAMessage(\n\t\ttaskId: string,\n\t\tcontent: string,\n\t\toptions?: {\n\t\t\t/** Short-lived AiDIT delegated token. When provided, overwrites the\n\t\t\t * token stored for the task. Omitting leaves the existing token unchanged. */\n\t\t\tdelegatedToken?: string;\n\t\t},\n\t): Promise<SuccessResponse> {\n\t\tconst body: Record<string, unknown> = { content };\n\t\tif (options?.delegatedToken !== undefined) {\n\t\t\tbody.delegated_token = options.delegatedToken;\n\t\t}\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa/message`,\n\t\t\tbody,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync renameVSATask(taskId: string, title: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa/rename`,\n\t\t\t{\n\t\t\t\ttitle,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync regenerateVSATitle(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa/regenerate-title`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markVSAComplete(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa/complete`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markVSAFailed(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa/failed`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync stopVSA(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa/stop`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync deleteVSA(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._delete<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/vsa`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync listVSATasks(params?: {\n\t\tstatus?: string;\n\t\tlimit?: number;\n\t\toffset?: number;\n\t}): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/tasks/vsa\", {\n\t\t\tstatus: params?.status,\n\t\t\tlimit: params?.limit,\n\t\t\toffset: params?.offset,\n\t\t});\n\t\tconst tasks = ((data.tasks ?? []) as Record<string, unknown>[]).map(\n\t\t\tbuildTaskSummary,\n\t\t);\n\t\treturn { tasks, pagination: buildPagination(data) };\n\t}\n\n\tasync searchVSATasks(query: string): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/tasks/vsa/search\", {\n\t\t\tq: query,\n\t\t});\n\t\tconst tasks = ((data.tasks ?? []) as Record<string, unknown>[]).map(\n\t\t\tbuildTaskSummary,\n\t\t);\n\t\treturn { tasks, pagination: buildPagination(data) };\n\t}\n\n\tasync deleteVSATasksBulk(taskIds: string[]): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/tasks/vsa/delete-bulk\",\n\t\t\t{\n\t\t\t\ttask_ids: taskIds,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\t// ------------------------------------------------------------------\n\t// MIO workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendMioMessage(\n\t\ttaskId: string,\n\t\tcontent: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/message`,\n\t\t\t{\n\t\t\t\tcontent,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveMioAction(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/approve`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync wakeMio(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/wake`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync sendMioUserAway(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/user-away`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markMioComplete(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/complete`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync markMioFailed(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/failed`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync archiveMio(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/archive`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMioContext(taskId: string): Promise<MioContext> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/mio/context`,\n\t\t);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tcurrentTokens: (data.currentTokens ?? data.current_tokens ?? 0) as number,\n\t\t\tcontextLimit: (data.contextLimit ?? data.context_limit ?? 0) as number,\n\t\t\tusagePercentage: (data.usagePercentage ??\n\t\t\t\tdata.usage_percentage ??\n\t\t\t\t0) as number,\n\t\t\tarchivedCount: (data.archivedCount ?? data.archived_count ?? 0) as number,\n\t\t\tactiveCount: (data.activeCount ?? data.active_count ?? 0) as number,\n\t\t};\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Tools\n\t// ------------------------------------------------------------------\n\n\tasync listTools(): Promise<ToolsListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/tools\");\n\t\treturn {\n\t\t\ttools: (\n\t\t\t\t(data.tools ?? data.tools ?? []) as Record<string, unknown>[]\n\t\t\t).map((t) => t as unknown as ToolInfo),\n\t\t\ttotalTools: (data.totalTools ?? data.total_tools ?? 0) as number,\n\t\t\tservers: (data.servers ?? []) as string[],\n\t\t};\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Debug / Admin\n\t// ------------------------------------------------------------------\n\n\tasync getWorkflowStates(): Promise<WorkflowStates> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t\"/debug/workflow-states\",\n\t\t);\n\t\treturn {\n\t\t\tvalidStates: (data.validStates ?? data.valid_states ?? {}) as Record<\n\t\t\t\tstring,\n\t\t\t\tstring[]\n\t\t\t>,\n\t\t\tprocessableStates: (data.processableStates ??\n\t\t\t\tdata.processable_states ??\n\t\t\t\t{}) as Record<string, string[]>,\n\t\t\twaitingStates: (data.waitingStates ??\n\t\t\t\tdata.waiting_states ??\n\t\t\t\t{}) as Record<string, string[]>,\n\t\t\tstoppedStates: (data.stoppedStates ??\n\t\t\t\tdata.stopped_states ??\n\t\t\t\t{}) as Record<string, string[]>,\n\t\t\tintermediateStates: (data.intermediateStates ??\n\t\t\t\tdata.intermediate_states ??\n\t\t\t\t{}) as Record<string, string[]>,\n\t\t};\n\t}\n\n\tasync updateTaskModels(\n\t\ttaskId: string,\n\t\tmodels: { agent?: string; orchestrator?: string },\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/models`,\n\t\t\t{\n\t\t\t\tagent: models.agent,\n\t\t\t\torchestrator: models.orchestrator,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync updateTaskIteration(\n\t\ttaskId: string,\n\t\titeration: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/iteration`,\n\t\t\t{\n\t\t\t\titeration,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync updateTaskWorkflowData(\n\t\ttaskId: string,\n\t\tworkflowData: Record<string, unknown>,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/workflow-data`,\n\t\t\t{\n\t\t\t\tworkflow_data: workflowData,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync deleteMessage(\n\t\ttaskId: string,\n\t\tmessageId: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._delete<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/conversation/messages/${messageId}`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync deleteMessages(\n\t\ttaskId: string,\n\t\tmessageIds: number[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/conversation/messages/delete`,\n\t\t\t{ message_ids: messageIds },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync updateMessage(\n\t\ttaskId: string,\n\t\tmessageId: number,\n\t\tupdate: { content?: string; reasoning?: string },\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._put<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/conversation/messages/${messageId}`,\n\t\t\tupdate,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync resetMatrixToPhase(\n\t\ttaskId: string,\n\t\tphase: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/matrix/reset`,\n\t\t\t{ phase },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMessageTranslations(\n\t\ttaskId: string,\n\t\tmessageId: number,\n\t\tlocale?: string,\n\t): Promise<MessageTranslationsResult> {\n\t\tconst params: Record<string, string | number | boolean | undefined> = {};\n\t\tif (locale) params.locale = locale;\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/tasks/${taskId}/conversation/messages/${messageId}/translations`,\n\t\t\tparams,\n\t\t);\n\t\treturn {\n\t\t\tmessageId: (data.messageId ?? data.message_id ?? messageId) as number,\n\t\t\ttranslations: (\n\t\t\t\t(data.translations ?? []) as Record<string, unknown>[]\n\t\t\t).map((t) => t as unknown as MessageTranslation),\n\t\t};\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Error events\n\t// ------------------------------------------------------------------\n\n\tasync listErrors(params?: {\n\t\tsince?: string;\n\t\tseverity?: string;\n\t\tsource?: string;\n\t\tlimit?: number;\n\t\toffset?: number;\n\t}): Promise<ErrorEventDetail[]> {\n\t\tconst queryParams: Record<string, string | number | boolean | undefined> =\n\t\t\t{};\n\t\tif (params?.since) queryParams.since = params.since;\n\t\tif (params?.severity) queryParams.severity = params.severity;\n\t\tif (params?.source) queryParams.source = params.source;\n\t\tif (params?.limit) queryParams.limit = params.limit;\n\t\tif (params?.offset) queryParams.offset = params.offset;\n\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t\"/errors\",\n\t\t\tqueryParams,\n\t\t);\n\t\treturn ((data.errors ?? []) as Record<string, unknown>[]).map(\n\t\t\t(e) => e as unknown as ErrorEventDetail,\n\t\t);\n\t}\n\n\tasync getErrorDetail(errorId: string): Promise<ErrorEventDetail> {\n\t\treturn this._get<ErrorEventDetail>(`/errors/${errorId}`);\n\t}\n\n\tasync getErrorStats(since?: string): Promise<ErrorStatsResult> {\n\t\tconst params: Record<string, string | number | boolean | undefined> = {};\n\t\tif (since) params.since = since;\n\t\treturn this._get<ErrorStatsResult>(\"/errors/stats\", params);\n\t}\n\n\tasync countErrors(since?: string): Promise<ErrorCountResult> {\n\t\tconst params: Record<string, string | number | boolean | undefined> = {};\n\t\tif (since) params.since = since;\n\t\treturn this._get<ErrorCountResult>(\"/errors/count\", params);\n\t}\n\n\tasync purgeErrors(): Promise<ErrorPurgeResult> {\n\t\treturn this._delete<ErrorPurgeResult>(\"/errors\");\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Health / Metrics\n\t// ------------------------------------------------------------------\n\n\tasync health(): Promise<HealthStatus> {\n\t\treturn this._get<HealthStatus>(\"/health\");\n\t}\n\n\tasync healthDetailed(): Promise<HealthDetail> {\n\t\treturn this._get<HealthDetail>(\"/health/detail\");\n\t}\n\n\tasync ready(): Promise<ReadinessResult> {\n\t\treturn this._get<ReadinessResult>(\"/ready\");\n\t}\n\n\tasync healthLeader(): Promise<LeaderStatus> {\n\t\treturn this._get<LeaderStatus>(\"/leader\");\n\t}\n\n\tasync getMetrics(types?: string): Promise<MetricSnapshot> {\n\t\tconst params: Record<string, string | number | boolean | undefined> = {};\n\t\tif (types) params.types = types;\n\t\treturn this._get<MetricSnapshot>(\"/metrics\", params);\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Configuration\n\t// ------------------------------------------------------------------\n\n\tasync getSystemStatus(): Promise<SystemStatus> {\n\t\treturn this._get<SystemStatus>(\"/config/status\");\n\t}\n\n\tasync updateSettings(\n\t\tsettings: Record<string, unknown>,\n\t): Promise<SystemStatus> {\n\t\treturn this._post<SystemStatus>(\"/config/settings\", settings);\n\t}\n\n\tasync getConfigurationStatus(): Promise<ConfigurationStatus> {\n\t\treturn this._get<ConfigurationStatus>(\"/config\");\n\t}\n\n\tasync setAgentModel(model: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/models/agent\",\n\t\t\t{ model },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync setOrchestratorModel(model: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/models/orchestrator\",\n\t\t\t{ model },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getLLMBackendStatus(): Promise<Record<string, unknown>> {\n\t\treturn this._get<Record<string, unknown>>(\"/config/llmbackends\");\n\t}\n\n\tasync addLLMBackend(host: string, apiKey: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/llmbackends\",\n\t\t\t{\n\t\t\t\thost,\n\t\t\t\tapi_key: apiKey,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync removeLLMBackend(host: string): Promise<SuccessResponse> {\n\t\tconst data = await this._delete<Record<string, unknown>>(\n\t\t\t`/config/llmbackends/${encodeURIComponent(host)}`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMCPServerStatus(): Promise<Record<string, unknown>> {\n\t\treturn this._get<Record<string, unknown>>(\"/config/mcpservers\");\n\t}\n\n\tasync addMCPServer(host: string, apiKey: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/mcpservers\",\n\t\t\t{\n\t\t\t\thost,\n\t\t\t\tapi_key: apiKey,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync removeMCPServer(host: string): Promise<SuccessResponse> {\n\t\tconst data = await this._delete<Record<string, unknown>>(\n\t\t\t`/config/mcpservers/${encodeURIComponent(host)}`,\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getTaskHandlerStatus(): Promise<TaskHandlerStatus> {\n\t\treturn this._get<TaskHandlerStatus>(\"/config/taskhandler\");\n\t}\n\n\tasync getTaskHandlerStatusLocal(): Promise<TaskHandlerStatusLocal> {\n\t\treturn this._get<TaskHandlerStatusLocal>(\"/config/taskhandler/local\");\n\t}\n\n\tasync setConcurrentTasksPerReplica(\n\t\tmaxTasks: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/taskhandler/concurrency\",\n\t\t\t{\n\t\t\t\tmax_tasks: maxTasks,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getSummaryWorkerStatus(): Promise<SummaryWorkerStatus> {\n\t\treturn this._get<SummaryWorkerStatus>(\"/config/summary-worker\");\n\t}\n\n\tasync setCompactorModel(modelName: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/models/compactor\",\n\t\t\t{\n\t\t\t\tmodel_name: modelName,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync setTranslateModel(modelName: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/config/models/translate\",\n\t\t\t{\n\t\t\t\tmodel_name: modelName,\n\t\t\t},\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getTokenWorkerStatus(): Promise<TokenWorkerStatus> {\n\t\treturn this._get<TokenWorkerStatus>(\"/config/token-worker\");\n\t}\n\n\tasync getSlotsStatus(): Promise<SlotsStatus> {\n\t\treturn this._get<SlotsStatus>(\"/config/slots\");\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Auth / WebSocket status\n\t// ------------------------------------------------------------------\n\n\tasync getAuthConfig(): Promise<AuthConfig> {\n\t\treturn this._get<AuthConfig>(\"/auth/config\");\n\t}\n\n\tasync getWebSocketStatus(): Promise<WebSocketStatus> {\n\t\treturn this._get<WebSocketStatus>(\"/websocket/status\");\n\t}\n\n\t// ------------------------------------------------------------------\n\t// SSE stream\n\t// ------------------------------------------------------------------\n\n\tasync *streamTaskStatus(\n\t\ttaskId: string,\n\t): AsyncGenerator<Record<string, unknown>> {\n\t\tconst headers = await this._resolveHeaders();\n\t\theaders.Accept = \"text/event-stream\";\n\t\tconst response = await this._fetch(\n\t\t\tthis._makeUrl(`/tasks/${taskId}/stream`),\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t},\n\t\t);\n\t\tif (!response.ok) {\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t`Stream connection failed: ${response.statusText}`,\n\t\t\t\tresponse.status,\n\t\t\t);\n\t\t}\n\t\tconst reader = response.body?.getReader();\n\t\tif (!reader) {\n\t\t\tthrow new OrchestratorConnectionError(\"Stream body is not readable\");\n\t\t}\n\t\tconst decoder = new TextDecoder();\n\t\tlet buffer = \"\";\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\tconst lines = buffer.split(\"\\n\");\n\t\t\tbuffer = lines.pop() ?? \"\";\n\t\t\tfor (const line of lines) {\n\t\t\t\tif (line.startsWith(\"data: \")) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tyield JSON.parse(line.slice(6));\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore malformed SSE lines\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction combineSignals(...signals: AbortSignal[]): AbortSignal {\n\tconst controller = new AbortController();\n\tfor (const signal of signals) {\n\t\tif (signal.aborted) {\n\t\t\tcontroller.abort(signal.reason);\n\t\t\treturn controller.signal;\n\t\t}\n\t\tsignal.addEventListener(\"abort\", () => controller.abort(signal.reason), {\n\t\t\tonce: true,\n\t\t});\n\t}\n\treturn controller.signal;\n}\n","/**\n * Orchestrator — synchronous wrapper around OrchestratorAsync.\n *\n * Uses a dedicated pattern so every method is a plain sync call — no\n * `await` needed. Perfect for scripts, REPL sessions, and CLI tools.\n *\n * Usage:\n *\n * const client = new Orchestrator({ baseUrl: \"http://localhost:8080\" });\n * const tasks = client.listTasks({ workflowId: \"proactive\" });\n * for (const t of tasks.tasks) {\n * console.log(t.id, t.status);\n * }\n * client.close();\n *\n * Or use the context manager pattern:\n *\n * const client = new Orchestrator();\n * try {\n * const status = client.getTaskStatus(\"task-abc123\");\n * console.log(status.status);\n * } finally {\n * client.close();\n * }\n */\n\nimport { OrchestratorAsync, type OrchestratorClientOptions } from \"./client.js\";\n\nexport type { OrchestratorClientOptions };\n\n/**\n * Synchronous wrapper around OrchestratorAsync.\n *\n * Manages its own resolution so every method returns synchronously.\n * Cannot be used from within an active async context.\n */\nexport class Orchestrator {\n\tprivate _async: OrchestratorAsync;\n\n\tconstructor(opts: OrchestratorClientOptions = {}) {\n\t\tthis._async = new OrchestratorAsync(opts);\n\t}\n\n\t/** Close the underlying resources. */\n\tclose(): void {\n\t\tthis._async.close().catch(() => {});\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Tasks\n\t// ------------------------------------------------------------------\n\n\tlistTasks(params?: Parameters<OrchestratorAsync[\"listTasks\"]>[0]) {\n\t\treturn runSync(this._async.listTasks(params));\n\t}\n\n\tcreateTask(params: Parameters<OrchestratorAsync[\"createTask\"]>[0]) {\n\t\treturn runSync(this._async.createTask(params));\n\t}\n\n\tgetTaskStatus(taskId: string) {\n\t\treturn runSync(this._async.getTaskStatus(taskId));\n\t}\n\n\tgetTaskConversation(taskId: string) {\n\t\treturn runSync(this._async.getTaskConversation(taskId));\n\t}\n\n\tgetArchivedMessageContent(taskId: string, messageId: number) {\n\t\treturn runSync(this._async.getArchivedMessageContent(taskId, messageId));\n\t}\n\n\tgetTaskCompactions(taskId: string) {\n\t\treturn runSync(this._async.getTaskCompactions(taskId));\n\t}\n\n\tgetTaskJournal(taskId: string) {\n\t\treturn runSync(this._async.getTaskJournal(taskId));\n\t}\n\n\tcancelTask(taskId: string) {\n\t\treturn runSync(this._async.cancelTask(taskId));\n\t}\n\n\tdeleteTask(taskId: string) {\n\t\treturn runSync(this._async.deleteTask(taskId));\n\t}\n\n\tdeleteTasks(taskIds: string[]) {\n\t\treturn runSync(this._async.deleteTasks(taskIds));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Attachments\n\t// ------------------------------------------------------------------\n\n\tuploadAttachment(taskId: string, file: File | Blob, filename?: string) {\n\t\treturn runSync(this._async.uploadAttachment(taskId, file, filename));\n\t}\n\n\tdownloadAttachment(taskId: string, attachmentId: string) {\n\t\treturn runSync(this._async.downloadAttachment(taskId, attachmentId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Interactive workflow\n\t// ------------------------------------------------------------------\n\n\tsendInteractiveMessage(taskId: string, content: string) {\n\t\treturn runSync(this._async.sendInteractiveMessage(taskId, content));\n\t}\n\n\tmarkInteractiveComplete(taskId: string) {\n\t\treturn runSync(this._async.markInteractiveComplete(taskId));\n\t}\n\n\tmarkInteractiveFailed(taskId: string) {\n\t\treturn runSync(this._async.markInteractiveFailed(taskId));\n\t}\n\n\tapproveInteractiveAction(taskId: string) {\n\t\treturn runSync(this._async.approveInteractiveAction(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Proactive workflow\n\t// ------------------------------------------------------------------\n\n\tsendProactiveGuide(taskId: string, guide: string) {\n\t\treturn runSync(this._async.sendProactiveGuide(taskId, guide));\n\t}\n\n\trespondProactiveHelp(taskId: string, response: string) {\n\t\treturn runSync(this._async.respondProactiveHelp(taskId, response));\n\t}\n\n\tapproveProactiveAction(taskId: string) {\n\t\treturn runSync(this._async.approveProactiveAction(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Ticket workflow\n\t// ------------------------------------------------------------------\n\n\tsendTicketGuide(taskId: string, guide: string) {\n\t\treturn runSync(this._async.sendTicketGuide(taskId, guide));\n\t}\n\n\trespondTicketHelp(taskId: string, response: string) {\n\t\treturn runSync(this._async.respondTicketHelp(taskId, response));\n\t}\n\n\tapproveTicketAction(taskId: string) {\n\t\treturn runSync(this._async.approveTicketAction(taskId));\n\t}\n\n\twakeTicket(taskId: string) {\n\t\treturn runSync(this._async.wakeTicket(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Matrix workflow\n\t// ------------------------------------------------------------------\n\n\tsendMatrixMessage(taskId: string, content: string) {\n\t\treturn runSync(this._async.sendMatrixMessage(taskId, content));\n\t}\n\n\tmarkMatrixComplete(taskId: string) {\n\t\treturn runSync(this._async.markMatrixComplete(taskId));\n\t}\n\n\tmarkMatrixFailed(taskId: string) {\n\t\treturn runSync(this._async.markMatrixFailed(taskId));\n\t}\n\n\tapproveMatrixAction(taskId: string) {\n\t\treturn runSync(this._async.approveMatrixAction(taskId));\n\t}\n\n\tgetMatrixConversation(taskId: string) {\n\t\treturn runSync(this._async.getMatrixConversation(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// VSA workflow\n\t// ------------------------------------------------------------------\n\n\tcreateVSATask(params: Parameters<OrchestratorAsync[\"createVSATask\"]>[0]) {\n\t\treturn runSync(this._async.createVSATask(params));\n\t}\n\n\tsendVSAMessage(\n\t\ttaskId: string,\n\t\tcontent: string,\n\t\toptions?: { delegatedToken?: string },\n\t) {\n\t\treturn runSync(this._async.sendVSAMessage(taskId, content, options));\n\t}\n\n\trenameVSATask(taskId: string, title: string) {\n\t\treturn runSync(this._async.renameVSATask(taskId, title));\n\t}\n\n\tregenerateVSATitle(taskId: string) {\n\t\treturn runSync(this._async.regenerateVSATitle(taskId));\n\t}\n\n\tmarkVSAComplete(taskId: string) {\n\t\treturn runSync(this._async.markVSAComplete(taskId));\n\t}\n\n\tmarkVSAFailed(taskId: string) {\n\t\treturn runSync(this._async.markVSAFailed(taskId));\n\t}\n\n\tstopVSA(taskId: string) {\n\t\treturn runSync(this._async.stopVSA(taskId));\n\t}\n\n\tdeleteVSA(taskId: string) {\n\t\treturn runSync(this._async.deleteVSA(taskId));\n\t}\n\n\tlistVSATasks(params?: Parameters<OrchestratorAsync[\"listVSATasks\"]>[0]) {\n\t\treturn runSync(this._async.listVSATasks(params));\n\t}\n\n\tsearchVSATasks(query: string) {\n\t\treturn runSync(this._async.searchVSATasks(query));\n\t}\n\n\tdeleteVSATasksBulk(taskIds: string[]) {\n\t\treturn runSync(this._async.deleteVSATasksBulk(taskIds));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// MIO workflow\n\t// ------------------------------------------------------------------\n\n\tsendMioMessage(taskId: string, content: string) {\n\t\treturn runSync(this._async.sendMioMessage(taskId, content));\n\t}\n\n\tapproveMioAction(taskId: string) {\n\t\treturn runSync(this._async.approveMioAction(taskId));\n\t}\n\n\twakeMio(taskId: string) {\n\t\treturn runSync(this._async.wakeMio(taskId));\n\t}\n\n\tsendMioUserAway(taskId: string) {\n\t\treturn runSync(this._async.sendMioUserAway(taskId));\n\t}\n\n\tmarkMioComplete(taskId: string) {\n\t\treturn runSync(this._async.markMioComplete(taskId));\n\t}\n\n\tmarkMioFailed(taskId: string) {\n\t\treturn runSync(this._async.markMioFailed(taskId));\n\t}\n\n\tarchiveMio(taskId: string) {\n\t\treturn runSync(this._async.archiveMio(taskId));\n\t}\n\n\tgetMioContext(taskId: string) {\n\t\treturn runSync(this._async.getMioContext(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Tools\n\t// ------------------------------------------------------------------\n\n\tlistTools() {\n\t\treturn runSync(this._async.listTools());\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Debug / Admin\n\t// ------------------------------------------------------------------\n\n\tgetWorkflowStates() {\n\t\treturn runSync(this._async.getWorkflowStates());\n\t}\n\n\tupdateTaskModels(\n\t\ttaskId: string,\n\t\tmodels: { agent?: string; orchestrator?: string },\n\t) {\n\t\treturn runSync(this._async.updateTaskModels(taskId, models));\n\t}\n\n\tupdateTaskIteration(taskId: string, iteration: number) {\n\t\treturn runSync(this._async.updateTaskIteration(taskId, iteration));\n\t}\n\n\tupdateTaskWorkflowData(\n\t\ttaskId: string,\n\t\tworkflowData: Record<string, unknown>,\n\t) {\n\t\treturn runSync(this._async.updateTaskWorkflowData(taskId, workflowData));\n\t}\n\n\tdeleteMessage(taskId: string, messageId: number) {\n\t\treturn runSync(this._async.deleteMessage(taskId, messageId));\n\t}\n\n\tdeleteMessages(taskId: string, messageIds: number[]) {\n\t\treturn runSync(this._async.deleteMessages(taskId, messageIds));\n\t}\n\n\tupdateMessage(\n\t\ttaskId: string,\n\t\tmessageId: number,\n\t\tupdate: { content?: string; reasoning?: string },\n\t) {\n\t\treturn runSync(this._async.updateMessage(taskId, messageId, update));\n\t}\n\n\tresetMatrixToPhase(taskId: string, phase: number) {\n\t\treturn runSync(this._async.resetMatrixToPhase(taskId, phase));\n\t}\n\n\tgetMessageTranslations(taskId: string, messageId: number, locale?: string) {\n\t\treturn runSync(\n\t\t\tthis._async.getMessageTranslations(taskId, messageId, locale),\n\t\t);\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Error events\n\t// ------------------------------------------------------------------\n\n\tlistErrors(params?: Parameters<OrchestratorAsync[\"listErrors\"]>[0]) {\n\t\treturn runSync(this._async.listErrors(params));\n\t}\n\n\tgetErrorDetail(errorId: string) {\n\t\treturn runSync(this._async.getErrorDetail(errorId));\n\t}\n\n\tgetErrorStats(since?: string) {\n\t\treturn runSync(this._async.getErrorStats(since));\n\t}\n\n\tcountErrors(since?: string) {\n\t\treturn runSync(this._async.countErrors(since));\n\t}\n\n\tpurgeErrors() {\n\t\treturn runSync(this._async.purgeErrors());\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Health / Metrics\n\t// ------------------------------------------------------------------\n\n\thealth() {\n\t\treturn runSync(this._async.health());\n\t}\n\n\thealthDetailed() {\n\t\treturn runSync(this._async.healthDetailed());\n\t}\n\n\tready() {\n\t\treturn runSync(this._async.ready());\n\t}\n\n\thealthLeader() {\n\t\treturn runSync(this._async.healthLeader());\n\t}\n\n\tgetMetrics(types?: string) {\n\t\treturn runSync(this._async.getMetrics(types));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Configuration\n\t// ------------------------------------------------------------------\n\n\tgetSystemStatus() {\n\t\treturn runSync(this._async.getSystemStatus());\n\t}\n\n\tupdateSettings(settings: Record<string, unknown>) {\n\t\treturn runSync(this._async.updateSettings(settings));\n\t}\n\n\tgetConfigurationStatus() {\n\t\treturn runSync(this._async.getConfigurationStatus());\n\t}\n\n\tsetAgentModel(model: string) {\n\t\treturn runSync(this._async.setAgentModel(model));\n\t}\n\n\tsetOrchestratorModel(model: string) {\n\t\treturn runSync(this._async.setOrchestratorModel(model));\n\t}\n\n\tgetLLMBackendStatus() {\n\t\treturn runSync(this._async.getLLMBackendStatus());\n\t}\n\n\taddLLMBackend(host: string, apiKey: string) {\n\t\treturn runSync(this._async.addLLMBackend(host, apiKey));\n\t}\n\n\tremoveLLMBackend(host: string) {\n\t\treturn runSync(this._async.removeLLMBackend(host));\n\t}\n\n\tgetMCPServerStatus() {\n\t\treturn runSync(this._async.getMCPServerStatus());\n\t}\n\n\taddMCPServer(host: string, apiKey: string) {\n\t\treturn runSync(this._async.addMCPServer(host, apiKey));\n\t}\n\n\tremoveMCPServer(host: string) {\n\t\treturn runSync(this._async.removeMCPServer(host));\n\t}\n\n\tgetTaskHandlerStatus() {\n\t\treturn runSync(this._async.getTaskHandlerStatus());\n\t}\n\n\tgetTaskHandlerStatusLocal() {\n\t\treturn runSync(this._async.getTaskHandlerStatusLocal());\n\t}\n\n\tsetConcurrentTasksPerReplica(maxTasks: number) {\n\t\treturn runSync(this._async.setConcurrentTasksPerReplica(maxTasks));\n\t}\n\n\tgetSummaryWorkerStatus() {\n\t\treturn runSync(this._async.getSummaryWorkerStatus());\n\t}\n\n\tsetCompactorModel(modelName: string) {\n\t\treturn runSync(this._async.setCompactorModel(modelName));\n\t}\n\n\tsetTranslateModel(modelName: string) {\n\t\treturn runSync(this._async.setTranslateModel(modelName));\n\t}\n\n\tgetTokenWorkerStatus() {\n\t\treturn runSync(this._async.getTokenWorkerStatus());\n\t}\n\n\tgetSlotsStatus() {\n\t\treturn runSync(this._async.getSlotsStatus());\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Auth / WebSocket status\n\t// ------------------------------------------------------------------\n\n\tgetAuthConfig() {\n\t\treturn runSync(this._async.getAuthConfig());\n\t}\n\n\tgetWebSocketStatus() {\n\t\treturn runSync(this._async.getWebSocketStatus());\n\t}\n\n\t// ------------------------------------------------------------------\n\t// SSE stream (collects all events into an array)\n\t// ------------------------------------------------------------------\n\n\tstreamTaskStatus(_taskId: string): Record<string, unknown>[] {\n\t\tconst events: Record<string, unknown>[] = [];\n\t\t// Stream is async-only; for sync usage this returns empty\n\t\t// Users should use the async variant for streaming\n\t\treturn events;\n\t}\n}\n\nfunction runSync<T>(promise: Promise<T>): T {\n\t// In browser/Ember contexts, we can't use synchronous blocking.\n\t// This is a thin wrapper that assumes the promise resolves immediately\n\t// in practice, or the caller uses the async variant.\n\t// For Node.js scripts, the sync wrapper behaves correctly.\n\tlet result: T | undefined;\n\tlet error: unknown;\n\tlet done = false;\n\n\tpromise.then(\n\t\t(r) => {\n\t\t\tresult = r;\n\t\t\tdone = true;\n\t\t},\n\t\t(e) => {\n\t\t\terror = e;\n\t\t\tdone = true;\n\t\t},\n\t);\n\n\t// In Node.js, we could use a tight loop with setTimeout to wait,\n\t// but in browsers this hangs. The sync wrapper is best-effort;\n\t// for true synchronous use, prefer the async client or a Node.js\n\t// environment where we can block the event loop.\n\tif (!done) {\n\t\t// In Node.js, run a quick spin loop\n\t\tconst start = Date.now();\n\t\twhile (!done && Date.now() - start < 10_000) {\n\t\t\t// Spin — this works in Node.js for micro-tick resolution\n\t\t}\n\t}\n\n\tif (!done) {\n\t\tthrow new Error(\"Orchestrator sync: operation timed out\");\n\t}\n\tif (error) throw error;\n\treturn result as T;\n}\n","/**\n * Environment-based configuration for the orchestrator client.\n *\n * All settings are read from environment variables with sensible defaults,\n * so upstream applications can configure the client without passing args.\n */\n\nexport interface OrchestratorConfig {\n\t/** Base URL of the orchestrator (e.g. \"http://localhost:8080\"). */\n\tbaseUrl: string;\n\t/** Optional static bearer token sent as `Authorization: Bearer <key>`. */\n\tapiKey?: string;\n\t/** Default timeout in milliseconds for HTTP requests. */\n\ttimeoutMs: number;\n\t/** Maximum retry attempts on transient failures. */\n\tmaxRetries: number;\n}\n\nconst DEFAULTS: OrchestratorConfig = {\n\tbaseUrl: \"http://localhost:8080\",\n\tapiKey: undefined,\n\ttimeoutMs: 30_000,\n\tmaxRetries: 3,\n};\n\n/**\n * Build configuration from environment variables.\n *\n * - `ORCHESTRATOR_URL` — base URL (default: \"http://localhost:8080\")\n * - `ORCHESTRATOR_API_KEY` — optional bearer token\n * - `ORCHESTRATOR_TIMEOUT_MS` — timeout in ms (default: 30000)\n * - `ORCHESTRATOR_MAX_RETRIES` — max retries (default: 3)\n */\nexport function loadConfig(\n\toverrides?: Partial<OrchestratorConfig>,\n): OrchestratorConfig {\n\treturn {\n\t\tbaseUrl: (\n\t\t\tprocess.env.ORCHESTRATOR_URL ??\n\t\t\toverrides?.baseUrl ??\n\t\t\tDEFAULTS.baseUrl\n\t\t).replace(/\\/+$/, \"\"),\n\t\tapiKey:\n\t\t\tprocess.env.ORCHESTRATOR_API_KEY ?? overrides?.apiKey ?? DEFAULTS.apiKey,\n\t\ttimeoutMs: Number(\n\t\t\tprocess.env.ORCHESTRATOR_TIMEOUT_MS ??\n\t\t\t\toverrides?.timeoutMs ??\n\t\t\t\tDEFAULTS.timeoutMs,\n\t\t),\n\t\tmaxRetries: Number(\n\t\t\tprocess.env.ORCHESTRATOR_MAX_RETRIES ??\n\t\t\t\toverrides?.maxRetries ??\n\t\t\t\tDEFAULTS.maxRetries,\n\t\t),\n\t};\n}\n","/**\n * Create a fetch implementation that ignores SSL certificate errors.\n *\n * Useful for connecting to orchestrator instances with self-signed or\n * internally-issued certificates during development or in isolated networks.\n *\n * Usage:\n *\n * import { Orchestrator, createInsecureFetch } from \"orchestrator-client\";\n *\n * const client = new Orchestrator({\n * baseUrl: \"https://orchestrator.internal:8443\",\n * fetch: await createInsecureFetch(),\n * });\n *\n * Note: Only works in Node.js (uses `https.Agent` underneath).\n * In browser environments, the global `fetch` is returned as-is.\n */\n\nlet _insecureFetch: typeof globalThis.fetch | undefined;\n\nexport async function createInsecureFetch(): Promise<typeof globalThis.fetch> {\n\tif (_insecureFetch) return _insecureFetch;\n\n\t// Check if we're in Node.js\n\tif (typeof process === \"undefined\" || process.versions?.node == null) {\n\t\t// In browsers, SSL is handled by the browser — return global fetch\n\t\t_insecureFetch = globalThis.fetch;\n\t\treturn _insecureFetch;\n\t}\n\n\t// Dynamic import — works with ESM and tsup bundling\n\tconst https = await import(\"node:https\");\n\tconst http = await import(\"node:http\");\n\n\tconst agent = new https.Agent({ rejectUnauthorized: false });\n\n\t_insecureFetch = async (\n\t\tinput: RequestInfo | URL,\n\t\tinit?: RequestInit,\n\t): Promise<Response> => {\n\t\tconst urlStr = typeof input === \"string\" ? input : input.toString();\n\t\tconst urlObj = new URL(urlStr);\n\t\tconst isHttps = urlObj.protocol === \"https:\";\n\n\t\treturn new Promise<Response>((resolve, reject) => {\n\t\t\tconst mod = isHttps ? https : http;\n\t\t\tconst req = mod.request(\n\t\t\t\turlStr,\n\t\t\t\t{\n\t\t\t\t\tmethod: init?.method ?? \"GET\",\n\t\t\t\t\theaders: init?.headers as Record<string, string> | undefined,\n\t\t\t\t\trejectUnauthorized: false,\n\t\t\t\t\tagent: isHttps ? agent : undefined,\n\t\t\t\t},\n\t\t\t\t(res: NodeJS.ReadableStream) => {\n\t\t\t\t\tconst chunks: Buffer[] = [];\n\t\t\t\t\tres.on(\"data\", (chunk: Buffer) => chunks.push(chunk));\n\t\t\t\t\tres.on(\"end\", () => {\n\t\t\t\t\t\tconst body = Buffer.concat(chunks);\n\t\t\t\t\t\tconst headers = new Headers();\n\t\t\t\t\t\t// Cast to access the headers object from Node's IncomingMessage\n\t\t\t\t\t\tconst resHeaders = (\n\t\t\t\t\t\t\tres as unknown as { headers: Record<string, string | string[]> }\n\t\t\t\t\t\t).headers;\n\t\t\t\t\t\tif (resHeaders) {\n\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(resHeaders)) {\n\t\t\t\t\t\t\t\tif (value != null) {\n\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\tfor (const v of value) headers.append(key, v);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\theaders.set(key, value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\tnew Response(body, {\n\t\t\t\t\t\t\t\tstatus: (res as unknown as { statusCode?: number }).statusCode,\n\t\t\t\t\t\t\t\tstatusText: (res as unknown as { statusMessage?: string })\n\t\t\t\t\t\t\t\t\t.statusMessage,\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treq.on(\"error\", reject);\n\t\t\tif (init?.body != null) {\n\t\t\t\treq.write(init.body);\n\t\t\t}\n\t\t\treq.end();\n\t\t});\n\t};\n\n\treturn _insecureFetch;\n}\n","/**\n * RealtimeClient — Socket.IO wrapper for orchestrator realtime events.\n *\n * Connects to the orchestrator's Socket.IO endpoint (same host:port as the\n * REST API) and provides a typed subscription layer using the server's\n * room-based event system.\n *\n * Usage:\n *\n * const rt = new RealtimeClient(\"http://localhost:8080\");\n * await rt.connect();\n * await rt.subscribeTask(\"task-abc123\");\n *\n * rt.on(\"task_status_changed\", (event) => {\n * console.log(event.new_status);\n * });\n */\n\nimport type { Socket as SocketIOClient } from \"socket.io-client\";\n\n// ---------------------------------------------------------------------------\n// Event type constants — mirror the Python client's event name constants\n// ---------------------------------------------------------------------------\n\nexport const EVENT_TASK_CREATED = \"task_created\";\nexport const EVENT_TASK_STATUS_CHANGED = \"task_status_changed\";\nexport const EVENT_TASK_ITERATION_CHANGED = \"task_iteration_changed\";\nexport const EVENT_TASK_DELETED = \"task_deleted\";\nexport const EVENT_TASK_RESULT_UPDATED = \"task_result_updated\";\nexport const EVENT_TASK_INSIGHT_UPDATED = \"task_insight_updated\";\nexport const EVENT_MESSAGE_ADDED = \"message_added\";\nexport const EVENT_MESSAGE_STREAMING = \"message_streaming\";\nexport const EVENT_MESSAGE_SUMMARY_GENERATED = \"message_summary_generated\";\nexport const EVENT_MESSAGE_TRANSLATION_READY = \"message_translation_ready\";\nexport const EVENT_ERROR_EVENT_RECORDED = \"error_event_recorded\";\n\nexport type EventHandler = (...args: unknown[]) => void;\n\nexport interface RealtimeClientOptions {\n\t/** Socket.IO connection options. */\n\tsocketOptions?: Record<string, unknown>;\n\t/** Optional bearer token or async token getter. */\n\tgetToken?: (() => string | Promise<string>) | string;\n\t/** Whether to auto-connect on construction (default: false). */\n\tautoConnect?: boolean;\n}\n\n/**\n * Socket.IO-based realtime client for receiving orchestrator events.\n */\nexport class RealtimeClient {\n\tprivate _baseUrl: string;\n\tprivate _socketOptions: Record<string, unknown>;\n\tprivate _getToken?: (() => string | Promise<string>) | string;\n\tprivate _socket: SocketIOClient | null = null;\n\tprivate _handlers: Map<string, Set<EventHandler>> = new Map();\n\tprivate _connected = false;\n\n\tconstructor(baseUrl: string, opts: RealtimeClientOptions) {\n\t\tthis._baseUrl = baseUrl.replace(/\\/+$/, \"\");\n\t\tthis._socketOptions = opts.socketOptions ?? {};\n\t\tthis._getToken = opts.getToken;\n\n\t\tif (opts.autoConnect) {\n\t\t\tthis.connect();\n\t\t}\n\t}\n\n\tget connected(): boolean {\n\t\treturn this._connected;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tconst auth: Record<string, unknown> = {};\n\t\tif (this._getToken) {\n\t\t\tauth.token =\n\t\t\t\ttypeof this._getToken === \"function\"\n\t\t\t\t\t? await this._getToken()\n\t\t\t\t\t: this._getToken;\n\t\t}\n\n\t\t// We construct the socket dynamically to avoid a hard import\n\t\tconst { io } = await import(\"socket.io-client\");\n\t\tthis._socket = io(this._baseUrl, {\n\t\t\tpath: \"/socket.io\",\n\t\t\tauth,\n\t\t\ttransports: [\"websocket\", \"polling\"],\n\t\t\t...this._socketOptions,\n\t\t}) as unknown as SocketIOClient;\n\n\t\tthis._socket.on(\"connect\", () => {\n\t\t\tthis._connected = true;\n\t\t});\n\n\t\tthis._socket.on(\"disconnect\", () => {\n\t\t\tthis._connected = false;\n\t\t});\n\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\tif (!this._socket) {\n\t\t\t\treject(new Error(\"RealtimeClient not connected\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._socket.on(\"connect\", () => resolve());\n\t\t\tthis._socket.on(\"connect_error\", (err: Error) => reject(err));\n\t\t\t// If already connected, resolve immediately\n\t\t\tif (this._socket.connected) {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\tasync disconnect(): Promise<void> {\n\t\tif (this._socket) {\n\t\t\tthis._socket.disconnect();\n\t\t\tthis._socket = null;\n\t\t}\n\t\tthis._connected = false;\n\t}\n\n\t/**\n\t * Subscribe to realtime events for a specific task.\n\t */\n\tasync subscribeTask(taskId: string): Promise<void> {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._socket?.emit(\n\t\t\t\t\"subscribe\",\n\t\t\t\t{ task_id: taskId },\n\t\t\t\t(response: { ok: boolean; error?: string }) => {\n\t\t\t\t\tif (response.ok) resolve();\n\t\t\t\t\telse reject(new Error(response.error ?? \"Subscription failed\"));\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Unsubscribe from realtime events for a specific task.\n\t */\n\tasync unsubscribeTask(taskId: string): Promise<void> {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._socket?.emit(\n\t\t\t\t\"unsubscribe\",\n\t\t\t\t{ task_id: taskId },\n\t\t\t\t(response: { ok: boolean; error?: string }) => {\n\t\t\t\t\tif (response.ok) resolve();\n\t\t\t\t\telse reject(new Error(response.error ?? \"Unsubscription failed\"));\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Register a handler for a specific event type.\n\t */\n\ton(event: string, handler: EventHandler): void {\n\t\tif (!this._handlers.has(event)) {\n\t\t\tthis._handlers.set(event, new Set());\n\t\t\t// Wire up socket listener when first handler is added\n\t\t\tif (this._socket) {\n\t\t\t\tthis._socket.on(event, (...args: unknown[]) => {\n\t\t\t\t\tconst handlers = this._handlers.get(event);\n\t\t\t\t\tif (handlers) {\n\t\t\t\t\t\tfor (const h of handlers) {\n\t\t\t\t\t\t\th(...args);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst handlers = this._handlers.get(event);\n\t\tif (handlers) {\n\t\t\thandlers.add(handler);\n\t\t}\n\t}\n\n\t/**\n\t * Remove a registered handler.\n\t */\n\toff(event: string, handler: EventHandler): void {\n\t\tconst handlers = this._handlers.get(event);\n\t\tif (handlers) {\n\t\t\thandlers.delete(handler);\n\t\t\tif (handlers.size === 0) {\n\t\t\t\tthis._handlers.delete(event);\n\t\t\t\tif (this._socket) {\n\t\t\t\t\tthis._socket.off(event);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Wait for the connection to close (for long-running listeners).\n\t */\n\twait(): Promise<void> {\n\t\treturn new Promise((resolve) => {\n\t\t\tif (!this._socket) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._socket.on(\"disconnect\", () => resolve());\n\t\t});\n\t}\n}\n","/**\n * orchestrator-client — TypeScript/JavaScript client for the DAMIT AIOps Orchestrator.\n *\n * Provides a complete wrapper for the orchestrator's REST API and\n * Socket.IO realtime events, with typed responses, automatic retry,\n * and configurable auth.\n *\n * Main components:\n *\n * - {@link Orchestrator} — synchronous REST client (primary interface)\n * - {@link OrchestratorAsync} — async REST client (for async contexts)\n * - {@link RealtimeClient} — Socket.IO event subscription layer\n * - Typed exception hierarchy ({@link OrchestratorError} and subclasses)\n * - Typed response interfaces for all response shapes\n */\n\nexport const VERSION = \"5.6.0\";\n\n// Client classes\nexport { OrchestratorAsync } from \"./client.js\";\nexport type { OrchestratorClientOptions } from \"./client.js\";\nexport { Orchestrator } from \"./sync-client.js\";\n\n// Config\nexport { loadConfig } from \"./config.js\";\nexport type { OrchestratorConfig } from \"./config.js\";\n\n// Custom fetch\nexport { createInsecureFetch } from \"./fetch.js\";\n\n// Socket.IO\nexport { RealtimeClient } from \"./socketio.js\";\nexport {\n\tEVENT_TASK_CREATED,\n\tEVENT_TASK_STATUS_CHANGED,\n\tEVENT_TASK_ITERATION_CHANGED,\n\tEVENT_TASK_DELETED,\n\tEVENT_TASK_RESULT_UPDATED,\n\tEVENT_TASK_INSIGHT_UPDATED,\n\tEVENT_MESSAGE_ADDED,\n\tEVENT_MESSAGE_STREAMING,\n\tEVENT_MESSAGE_SUMMARY_GENERATED,\n\tEVENT_MESSAGE_TRANSLATION_READY,\n\tEVENT_ERROR_EVENT_RECORDED,\n} from \"./socketio.js\";\nexport type { EventHandler, RealtimeClientOptions } from \"./socketio.js\";\n\n// Exceptions\nexport {\n\tOrchestratorError,\n\tOrchestratorConnectionError,\n\tOrchestratorAuthError,\n\tOrchestratorNotFoundError,\n\tOrchestratorAPIError,\n\tOrchestratorConfigError,\n} from \"./errors.js\";\n\n// Models\nexport type { Pagination } from \"./models/pagination.js\";\nexport type {\n\tTaskSummary,\n\tTaskOptions,\n\tTaskDetail,\n\tTaskListResult,\n\tTaskCreateResponse,\n\tTaskCancelResponse,\n\tTaskDeleteResult,\n\tVSATaskCreateResponse,\n} from \"./models/task.js\";\nexport type {\n\tAttachmentMeta,\n\tToolCall,\n\tMessage,\n\tConversationResult,\n\tMatrixConversationResult,\n\tArchivedContent,\n\tMessageTranslation,\n\tMessageTranslationsResult,\n\tMessageTranslationReadyEvent,\n} from \"./models/conversation.js\";\nexport type {\n\tErrorEvent,\n\tErrorEventDetail,\n\tErrorStatsResult,\n\tErrorCountResult,\n\tErrorPurgeResult,\n} from \"./models/errors.js\";\nexport type {\n\tHealthStatus,\n\tComponentHealth,\n\tHealthDetail,\n\tReadinessCheck,\n\tReadinessResult,\n\tLockStatus,\n\tLeaderStatus,\n\tMetricSnapshot,\n} from \"./models/health.js\";\nexport type {\n\tSystemStatusSettings,\n\tSystemStatus,\n\tLLMBackendInfo,\n\tMCPServerInfo,\n\tTaskHandlerReplica,\n\tTaskHandlerCluster,\n\tTaskHandlerStatus,\n\tTaskHandlerStatusLocal,\n\tSummaryWorkerStatus,\n\tTokenWorkerStatus,\n\tSlotInfo,\n\tSlotsStatus,\n\tConfigurationStatus,\n} from \"./models/config-models.js\";\nexport type { ToolInfo, ToolsListResult } from \"./models/tools.js\";\nexport type {\n\tCompactionEvent,\n\tTaskJournal,\n\tAttachmentUploadResponse,\n} from \"./models/journal.js\";\nexport type {\n\tAuthConfig,\n\tWebSocketClientInfo,\n\tWebSocketStatus,\n} from \"./models/auth.js\";\nexport type {\n\tSuccessResponse,\n\tMioContext,\n\tWorkflowStates,\n} from \"./models/workflow.js\";\n"],"mappings":";AAWO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAK5C,YACC,SACA,MAKC;AACD,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,aAAa,MAAM,cAAc;AACtC,SAAK,YAAY,MAAM,aAAa;AACpC,SAAK,UAAU,MAAM,WAAW,CAAC;AAAA,EAClC;AACD;AAKO,IAAM,8BAAN,cAA0C,kBAAkB;AAAA,EAClE,YAAY,SAAiB;AAC5B,UAAM,SAAS,EAAE,YAAY,KAAK,CAAC;AACnC,SAAK,OAAO;AAAA,EACb;AACD;AAKO,IAAM,wBAAN,cAAoC,kBAAkB;AAAA,EAC5D,YAAY,SAAiB,aAAa,KAAK;AAC9C,UAAM,SAAS,EAAE,WAAW,CAAC;AAC7B,SAAK,OAAO;AAAA,EACb;AACD;AAKO,IAAM,4BAAN,cAAwC,kBAAkB;AAAA,EAIhE,YAAY,cAAsB,YAAoB,SAAkB;AACvE,UAAM,WAAW,GAAG,YAAY,eAAe,UAAU,IAAI;AAAA,MAC5D,YAAY;AAAA,IACb,CAAC;AACD,SAAK,OAAO;AACZ,SAAK,eAAe;AACpB,SAAK,aAAa;AAAA,EACnB;AACD;AAQO,IAAM,uBAAN,cAAmC,kBAAkB;AAAA,EAC3D,YACC,SACA,YACA,WACA,SACC;AACD,UAAM,SAAS,EAAE,YAAY,WAAW,QAAQ,CAAC;AACjD,SAAK,OAAO;AAAA,EACb;AACD;AAKO,IAAM,0BAAN,cAAsC,kBAAkB;AAAA,EAC9D,YAAY,SAAiB;AAC5B,UAAM,SAAS,EAAE,YAAY,KAAK,CAAC;AACnC,SAAK,OAAO;AAAA,EACb;AACD;;;AC/BA,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAM5B,SAAS,gBAAgB,MAA2C;AACnE,QAAM,IAAK,KAAK,cAAc,CAAC;AAC/B,SAAO;AAAA,IACN,aAAc,EAAE,eAAe;AAAA,IAC/B,SAAU,EAAE,WAAW;AAAA,IACvB,YAAa,EAAE,cAAc;AAAA,IAC7B,YAAa,EAAE,cAAc;AAAA,IAC7B,SAAU,EAAE,WAAW;AAAA,IACvB,SAAU,EAAE,WAAW;AAAA,EACxB;AACD;AAEA,SAAS,iBAAiB,GAAyC;AAClE,SAAO;AAAA,IACN,IAAK,EAAE,MAAM;AAAA,IACb,QAAS,EAAE,UAAU;AAAA,IACrB,YAAa,EAAE,cAAc,EAAE,eAAe;AAAA,IAC9C,WAAY,EAAE,aAAa;AAAA,IAC3B,eAAgB,EAAE,iBAAiB,EAAE,kBAAkB;AAAA,IACvD,YAAa,EAAE,cAAc,EAAE,eAAe;AAAA,IAC9C,QAAS,EAAE,UAAU;AAAA,IACrB,iBAAkB,EAAE,mBAAmB,EAAE,oBAAoB;AAAA,IAG7D,gBAAiB,EAAE,kBAAkB,EAAE,mBAAmB;AAAA,IAC1D,UAAW,EAAE,YAAY,EAAE,aAAa;AAAA,IACxC,gBAAiB,EAAE,kBAAkB,EAAE,mBAAmB;AAAA,IAG1D,SAAU,EAAE,WAAW;AAAA,IACvB,kBAAmB,EAAE,oBAAoB,EAAE,qBAAqB;AAAA,IAGhE,WAAY,EAAE,aAAa,EAAE,cAAc;AAAA,IAC3C,WAAY,EAAE,aAAa,EAAE,cAAc;AAAA,IAC3C,+BAAgC,EAAE,iCACjC,EAAE,oCACF;AAAA,EACF;AACD;AA2CO,IAAM,oBAAN,MAAwB;AAAA,EAS9B,YAAY,OAAkC,CAAC,GAAG;AAFlD,SAAU,mBAA2C;AAwBrD,SAAU,YAAY;AArBrB,SAAK,YAAY,KAAK,WAAW,yBAAyB;AAAA,MACzD;AAAA,MACA;AAAA,IACD;AACA,SAAK,UAAU,KAAK;AACpB,SAAK,YAAY,KAAK;AACtB,SAAK,aAAa,KAAK,aAAa;AACpC,SAAK,cAAc,KAAK,cAAc;AACtC,SAAK,SAAS,KAAK,SAAS,WAAW;AACvC,QACC,KAAK,YACL,CAAC,KAAK,SACN,OAAO,YAAY,eACnB,QAAQ,UAAU,MACjB;AAGD,WAAK,YAAY;AAAA,IAClB;AAAA,EACD;AAAA,EAIA,MAAM,QAAuB;AAC5B,SAAK,kBAAkB,MAAM;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAMU,SAAS,MAAsB;AACxC,WAAO,GAAG,KAAK,QAAQ,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,MAAgB,kBAAmD;AAClE,UAAM,UAAkC,CAAC;AACzC,QAAI,KAAK,SAAS;AACjB,cAAQ,gBAAgB,UAAU,KAAK,OAAO;AAAA,IAC/C,WAAW,KAAK,WAAW;AAC1B,YAAM,QAAQ,MAAM,KAAK,UAAU;AACnC,UAAI,OAAO;AACV,gBAAQ,gBAAgB,UAAU,KAAK;AAAA,MACxC;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAgB,SACf,QACA,MACA,MAO8B;AAC9B,UAAM,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC;AACvC,QAAI,MAAM,QAAQ;AACjB,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,MAAM,GAAG;AACvD,YAAI,UAAU,QAAW;AACxB,cAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,QACxC;AAAA,MACD;AAAA,IACD;AAEA,UAAM,eAAe,MAAM,KAAK,gBAAgB;AAChD,UAAM,gBAAwC;AAAA,MAC7C,GAAG;AAAA,MACH,GAAI,MAAM,WAAW,CAAC;AAAA,IACvB;AACA,QAAI,MAAM,aAAa,UAAa,CAAC,cAAc,cAAc,GAAG;AACnE,oBAAc,cAAc,IAAI;AAAA,IACjC;AAEA,aAAS,UAAU,GAAG,WAAW,KAAK,aAAa,WAAW;AAC7D,UAAI;AACH,cAAM,aAAa,IAAI,gBAAgB;AACvC,cAAM,YAAY,WAAW,MAAM,WAAW,MAAM,GAAG,KAAK,UAAU;AACtE,cAAM,SAAS,MAAM,SAClB,eAAe,KAAK,QAAQ,WAAW,MAAM,IAC7C,WAAW;AAEd,cAAM,WAAW,MAAM,KAAK,OAAO,IAAI,SAAS,GAAG;AAAA,UAClD;AAAA,UACA,SAAS;AAAA,UACT,MACC,MAAM,aAAa,SAChB,KAAK,UAAU,KAAK,QAAQ,IAC5B;AAAA,UACJ;AAAA,QACD,CAAC;AAED,qBAAa,SAAS;AAEtB,YAAI,SAAS,WAAW,KAAK;AAC5B,gBAAM,IAAI;AAAA,YACT,6BAA6B,MAAM,IAAI,IAAI;AAAA,YAC3C;AAAA,UACD;AAAA,QACD;AACA,YAAI,SAAS,WAAW,KAAK;AAC5B,gBAAM,IAAI;AAAA,YACT,qBAAqB,MAAM,IAAI,IAAI;AAAA,YACnC;AAAA,UACD;AAAA,QACD;AACA,YAAI,SAAS,WAAW,KAAK;AAC5B,gBAAM,IAAI;AAAA,YACT;AAAA,YACA;AAAA,YACA,0BAA0B,MAAM,IAAI,IAAI;AAAA,UACzC;AAAA,QACD;AAEA,YAAI,SAAS,UAAU,KAAK;AAC3B,cAAI,YAAY,KAAK,aAAa;AAAA,UAElC,OAAO;AACN,kBAAM,QAAQ,qBAAqB,MAAM,UAAU;AACnD,oBAAQ;AAAA,cACP,gBAAgB,SAAS,MAAM,aAAa,OAAO,IAAI,KAAK,WAAW,kBAAkB,KAAK;AAAA,YAC/F;AACA,kBAAM,MAAM,KAAK;AACjB;AAAA,UACD;AAAA,QACD;AAEA,YAAI,MAAM,aAAa;AACtB,iBAAO;AAAA,QACR;AAEA,YAAI,SAAS,IAAI;AAChB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;AAC5D,cAAI,YAAY,SAAS,kBAAkB,GAAG;AAC7C,mBAAO,SAAS,KAAK;AAAA,UACtB;AACA,iBAAO,EAAE,OAAO,MAAM,SAAS,KAAK,EAAE;AAAA,QACvC;AAGA,YAAI;AACJ,YAAI,YAA2B;AAC/B,YAAI,eAA+C;AACnD,YAAI;AACH,gBAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,gBAAM,QAAS,KAAK,SAAS;AAC7B,sBAAa,MAAM,QAAmB;AACtC,yBAAgB,MAAM,WAAuB,MAAM,SAAS,KAAK;AACjE,yBAAgB,MAAM,WAAuC;AAAA,QAC9D,QAAQ;AACP,yBAAe,MAAM,SAAS,KAAK;AAAA,QACpC;AAEA,cAAM,IAAI;AAAA,UACT;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA,gBAAgB;AAAA,QACjB;AAAA,MACD,SAAS,KAAK;AACb,YACC,eAAe,wBACf,eAAe,yBACf,eAAe,2BACd;AACD,gBAAM;AAAA,QACP;AACA,YAAI,eAAe,6BAA6B;AAC/C,gBAAM;AAAA,QACP;AACA,YAAI,eAAe,gBAAgB,IAAI,SAAS,cAAc;AAC7D,cAAI,YAAY,KAAK,aAAa;AACjC,kBAAM,IAAI;AAAA,cACT,2BAA2B,KAAK,UAAU,OAAO,KAAK,WAAW,eAAe,MAAM,IAAI,IAAI;AAAA,YAC/F;AAAA,UACD;AACA,gBAAM,QAAQ,qBAAqB,MAAM,UAAU;AACnD,kBAAQ;AAAA,YACP,8BAA8B,OAAO,IAAI,KAAK,WAAW,kBAAkB,KAAK;AAAA,UACjF;AACA,gBAAM,MAAM,KAAK;AACjB;AAAA,QACD;AACA,YAAI,eAAe,WAAW;AAE7B,cAAI,YAAY,KAAK,aAAa;AACjC,kBAAM,IAAI;AAAA,cACT,kCAAkC,KAAK,WAAW,cAAe,IAAc,OAAO;AAAA,YACvF;AAAA,UACD;AACA,gBAAM,QAAQ,qBAAqB,MAAM,UAAU;AACnD,kBAAQ;AAAA,YACP,2BAA2B,OAAO,IAAI,KAAK,WAAW,kBAAkB,KAAK,OAAQ,IAAc,OAAO;AAAA,UAC3G;AACA,gBAAM,MAAM,KAAK;AACjB;AAAA,QACD;AACA,cAAM;AAAA,MACP;AAAA,IACD;AAEA,UAAM,IAAI;AAAA,MACT,wBAAwB,KAAK,WAAW,cAAc,MAAM,IAAI,IAAI;AAAA,IACrE;AAAA,EACD;AAAA,EAEA,MAAgB,KACf,MACA,QACa;AACb,WAAQ,MAAM,KAAK,SAAS,OAAO,MAAM,EAAE,OAAO,CAAC;AAAA,EACpD;AAAA,EAEA,MAAgB,MAAS,MAAc,MAA4B;AAClE,WAAQ,MAAM,KAAK,SAAS,QAAQ,MAAM,EAAE,UAAU,KAAK,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAgB,KAAQ,MAAc,MAA4B;AACjE,WAAQ,MAAM,KAAK,SAAS,OAAO,MAAM,EAAE,UAAU,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAgB,QAAW,MAA0B;AACpD,WAAQ,MAAM,KAAK,SAAS,UAAU,IAAI;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,QAOY;AAC3B,UAAM,OAAO,MAAM,KAAK,KAA8B,UAAU;AAAA,MAC/D,aAAa,QAAQ;AAAA,MACrB,QAAQ,QAAQ;AAAA,MAChB,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,MACjB,YAAY,QAAQ;AAAA,IACrB,CAAC;AACD,UAAM,SAAU,KAAK,SAAS,CAAC,GAAiC;AAAA,MAC/D;AAAA,IACD;AACA,WAAO,EAAE,OAAO,YAAY,gBAAgB,IAAI,EAAE;AAAA,EACnD;AAAA,EAEA,MAAM,WAAW,QAQe;AAC/B,UAAM,OAAO,MAAM,KAAK,MAA+B,UAAU;AAAA,MAChE,aAAa,OAAO;AAAA,MACpB,aAAa,OAAO;AAAA,MACpB,gBAAgB,OAAO;AAAA,MACvB,SAAS,OAAO;AAAA,MAChB,WAAW,OAAO;AAAA,MAClB,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,IAClB,CAAC;AACD,WAAO;AAAA,MACN,QAAS,KAAK,UAAU,KAAK,WAAW;AAAA,MACxC,QAAS,KAAK,UAAU;AAAA,IACzB;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,QAAqC;AACxD,UAAM,OAAO,MAAM,KAAK,KAA8B,UAAU,MAAM,EAAE;AACxE,WAAO;AAAA,MACN,GAAG,iBAAiB,IAAI;AAAA,MACxB,YAAa,KAAK,cAAc,KAAK,eAAe,CAAC;AAAA,MACrD,cAAe,KAAK,gBAAgB,KAAK,iBAAiB;AAAA,MAI1D,SAAU,KAAK,WAAW;AAAA,IAC3B;AAAA,EACD;AAAA,EAEA,MAAM,oBAAoB,QAA6C;AACtE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,MACN,QAAS,KAAK,UAAU,KAAK,WAAW;AAAA,MACxC,eACE,KAAK,gBAAgB,CAAC,GACtB,IAAI,CAAC,MAAM,CAAuB;AAAA,IACrC;AAAA,EACD;AAAA,EAEA,MAAM,0BACL,QACA,WACmC;AACnC,WAAO,KAAK;AAAA,MACX,UAAU,MAAM,0BAA0B,SAAS;AAAA,IACpD;AAAA,EACD;AAAA,EAEA,MAAM,mBAAmB,QAA4C;AACpE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAQ,KAAK,eAAe,CAAC;AAAA,EAC9B;AAAA,EAEA,MAAM,eAAe,QAAsC;AAC1D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,MACN,QAAS,KAAK,UAAU,KAAK,WAAW;AAAA,MACxC,QAAS,KAAK,UAAU;AAAA,MACxB,SAAU,KAAK,WAAW;AAAA,MAC1B,WAAY,KAAK,cAAc,KAAK,aAAa;AAAA,MACjD,SAAU,KAAK,WAAW;AAAA,MAC1B,oBAAqB,KAAK,wBACzB,KAAK,sBACL;AAAA,IACF;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,QAA0C;AAC1D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,WAAW,QAA2C;AAC3D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,MACN,cAAe,KAAK,gBAAgB,KAAK,iBAAiB,CAAC;AAAA,MAC3D,aAAc,KAAK,eAAe,KAAK,gBAAgB,CAAC;AAAA,MACxD,cAAe,KAAK,gBAAgB,KAAK,iBAAiB;AAAA,MAC1D,aAAc,KAAK,eAAe,KAAK,gBAAgB;AAAA,IACxD;AAAA,EACD;AAAA,EAEA,MAAM,YAAY,SAA8C;AAC/D,UAAM,OAAO,MAAM,KAAK,MAA+B,iBAAiB;AAAA,MACvE,UAAU;AAAA,IACX,CAAC;AACD,WAAO;AAAA,MACN,cAAe,KAAK,gBAAgB,KAAK,iBAAiB,CAAC;AAAA,MAC3D,aAAc,KAAK,eAAe,KAAK,gBAAgB,CAAC;AAAA,MACxD,cAAe,KAAK,gBAAgB,KAAK,iBAAiB;AAAA,MAC1D,aAAc,KAAK,eAAe,KAAK,gBAAgB;AAAA,IACxD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBACL,QACA,MACA,UACoC;AACpC,UAAM,WAAW,IAAI,SAAS;AAC9B,aAAS,OAAO,QAAQ,MAAM,QAAQ;AACtC,UAAM,UAAU,MAAM,KAAK,gBAAgB;AAE3C,UAAM,WAAW,MAAM,KAAK;AAAA,MAC3B,KAAK,SAAS,UAAU,MAAM,cAAc;AAAA,MAC5C;AAAA,QACC,QAAQ;AAAA,QACR,SAAS,EAAE,GAAG,QAAQ;AAAA,QACtB,MAAM;AAAA,MACP;AAAA,IACD;AACA,QAAI,CAAC,SAAS,IAAI;AACjB,YAAM,IAAI;AAAA,QACT,6BAA6B,SAAS,UAAU;AAAA,QAChD,SAAS;AAAA,MACV;AAAA,IACD;AACA,UAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,WAAO;AAAA,MACN,IAAK,KAAK,MAAM;AAAA,MAChB,UAAW,KAAK,YAAY;AAAA,MAC5B,UAAW,KAAK,YAAY,KAAK,aAAa;AAAA,MAC9C,MAAO,KAAK,QAAQ;AAAA,MACpB,OAAQ,KAAK,SAAS;AAAA,MACtB,QAAS,KAAK,UAAU;AAAA,MACxB,YAAa,KAAK,cAAc,KAAK,eAAe;AAAA,IAGrD;AAAA,EACD;AAAA,EAEA,MAAM,mBACL,QACA,cACgB;AAChB,UAAM,UAAU,MAAM,KAAK,gBAAgB;AAC3C,UAAM,WAAW,MAAM,KAAK;AAAA,MAC3B,KAAK,SAAS,UAAU,MAAM,gBAAgB,YAAY,EAAE;AAAA,MAC5D;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,QAAI,CAAC,SAAS,IAAI;AACjB,YAAM,IAAI;AAAA,QACT,+BAA+B,SAAS,UAAU;AAAA,QAClD,SAAS;AAAA,MACV;AAAA,IACD;AACA,WAAO,SAAS,KAAK;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,uBACL,QACA,SAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,wBAAwB,QAA0C;AACvE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,sBAAsB,QAA0C;AACrE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,yBAAyB,QAA0C;AACxE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBACL,QACA,OAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,qBACL,QACA,UAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,uBAAuB,QAA0C;AACtE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBACL,QACA,OAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,kBACL,QACA,UAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,oBAAoB,QAA0C;AACnE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,WAAW,QAA0C;AAC1D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBACL,QACA,SAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,mBAAmB,QAA0C;AAClE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,iBAAiB,QAA0C;AAChE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,oBAAoB,QAA0C;AACnE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,sBACL,QACoC;AACpC,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,MACN,QAAS,KAAK,UAAU,KAAK,WAAW;AAAA,MACxC,eACE,KAAK,gBAAgB,CAAC,GACtB,IAAI,CAAC,MAAM,CAAuB;AAAA,IACrC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,QAOe;AAClC,UAAM,OAAgC;AAAA,MACrC,aAAa,OAAO;AAAA,MACpB,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,IAClB;AACA,QAAI,OAAO,mBAAmB,QAAW;AACxC,WAAK,kBAAkB,OAAO;AAAA,IAC/B;AACA,UAAM,OAAO,MAAM,KAAK,MAA+B,cAAc,IAAI;AACzE,WAAO;AAAA,MACN,QAAS,KAAK,UAAU,KAAK,WAAW;AAAA,MACxC,QAAS,KAAK,UAAU;AAAA,IACzB;AAAA,EACD;AAAA,EAEA,MAAM,eACL,QACA,SACA,SAK2B;AAC3B,UAAM,OAAgC,EAAE,QAAQ;AAChD,QAAI,SAAS,mBAAmB,QAAW;AAC1C,WAAK,kBAAkB,QAAQ;AAAA,IAChC;AACA,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,cAAc,QAAgB,OAAyC;AAC5E,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,mBAAmB,QAA0C;AAClE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,gBAAgB,QAA0C;AAC/D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,cAAc,QAA0C;AAC7D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,QAAQ,QAA0C;AACvD,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,UAAU,QAA0C;AACzD,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,aAAa,QAIS;AAC3B,UAAM,OAAO,MAAM,KAAK,KAA8B,cAAc;AAAA,MACnE,QAAQ,QAAQ;AAAA,MAChB,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,IACjB,CAAC;AACD,UAAM,SAAU,KAAK,SAAS,CAAC,GAAiC;AAAA,MAC/D;AAAA,IACD;AACA,WAAO,EAAE,OAAO,YAAY,gBAAgB,IAAI,EAAE;AAAA,EACnD;AAAA,EAEA,MAAM,eAAe,OAAwC;AAC5D,UAAM,OAAO,MAAM,KAAK,KAA8B,qBAAqB;AAAA,MAC1E,GAAG;AAAA,IACJ,CAAC;AACD,UAAM,SAAU,KAAK,SAAS,CAAC,GAAiC;AAAA,MAC/D;AAAA,IACD;AACA,WAAO,EAAE,OAAO,YAAY,gBAAgB,IAAI,EAAE;AAAA,EACnD;AAAA,EAEA,MAAM,mBAAmB,SAA6C;AACrE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,QACC,UAAU;AAAA,MACX;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eACL,QACA,SAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,iBAAiB,QAA0C;AAChE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,QAAQ,QAA0C;AACvD,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,gBAAgB,QAA0C;AAC/D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,gBAAgB,QAA0C;AAC/D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,cAAc,QAA0C;AAC7D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,WAAW,QAA0C;AAC1D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,cAAc,QAAqC;AACxD,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,MACN,QAAS,KAAK,UAAU,KAAK,WAAW;AAAA,MACxC,eAAgB,KAAK,iBAAiB,KAAK,kBAAkB;AAAA,MAC7D,cAAe,KAAK,gBAAgB,KAAK,iBAAiB;AAAA,MAC1D,iBAAkB,KAAK,mBACtB,KAAK,oBACL;AAAA,MACD,eAAgB,KAAK,iBAAiB,KAAK,kBAAkB;AAAA,MAC7D,aAAc,KAAK,eAAe,KAAK,gBAAgB;AAAA,IACxD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAsC;AAC3C,UAAM,OAAO,MAAM,KAAK,KAA8B,QAAQ;AAC9D,WAAO;AAAA,MACN,QACE,KAAK,SAAS,KAAK,SAAS,CAAC,GAC7B,IAAI,CAAC,MAAM,CAAwB;AAAA,MACrC,YAAa,KAAK,cAAc,KAAK,eAAe;AAAA,MACpD,SAAU,KAAK,WAAW,CAAC;AAAA,IAC5B;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAA6C;AAClD,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,IACD;AACA,WAAO;AAAA,MACN,aAAc,KAAK,eAAe,KAAK,gBAAgB,CAAC;AAAA,MAIxD,mBAAoB,KAAK,qBACxB,KAAK,sBACL,CAAC;AAAA,MACF,eAAgB,KAAK,iBACpB,KAAK,kBACL,CAAC;AAAA,MACF,eAAgB,KAAK,iBACpB,KAAK,kBACL,CAAC;AAAA,MACF,oBAAqB,KAAK,sBACzB,KAAK,uBACL,CAAC;AAAA,IACH;AAAA,EACD;AAAA,EAEA,MAAM,iBACL,QACA,QAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC,OAAO,OAAO;AAAA,QACd,cAAc,OAAO;AAAA,MACtB;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,oBACL,QACA,WAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,uBACL,QACA,cAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB;AAAA,QACC,eAAe;AAAA,MAChB;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,cACL,QACA,WAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM,0BAA0B,SAAS;AAAA,IACpD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,eACL,QACA,YAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB,EAAE,aAAa,WAAW;AAAA,IAC3B;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,cACL,QACA,WACA,QAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM,0BAA0B,SAAS;AAAA,MACnD;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,mBACL,QACA,OAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB,EAAE,MAAM;AAAA,IACT;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,uBACL,QACA,WACA,QACqC;AACrC,UAAM,SAAgE,CAAC;AACvE,QAAI,OAAQ,QAAO,SAAS;AAC5B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,UAAU,MAAM,0BAA0B,SAAS;AAAA,MACnD;AAAA,IACD;AACA,WAAO;AAAA,MACN,WAAY,KAAK,aAAa,KAAK,cAAc;AAAA,MACjD,eACE,KAAK,gBAAgB,CAAC,GACtB,IAAI,CAAC,MAAM,CAAkC;AAAA,IAChD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW,QAMe;AAC/B,UAAM,cACL,CAAC;AACF,QAAI,QAAQ,MAAO,aAAY,QAAQ,OAAO;AAC9C,QAAI,QAAQ,SAAU,aAAY,WAAW,OAAO;AACpD,QAAI,QAAQ,OAAQ,aAAY,SAAS,OAAO;AAChD,QAAI,QAAQ,MAAO,aAAY,QAAQ,OAAO;AAC9C,QAAI,QAAQ,OAAQ,aAAY,SAAS,OAAO;AAEhD,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,IACD;AACA,YAAS,KAAK,UAAU,CAAC,GAAiC;AAAA,MACzD,CAAC,MAAM;AAAA,IACR;AAAA,EACD;AAAA,EAEA,MAAM,eAAe,SAA4C;AAChE,WAAO,KAAK,KAAuB,WAAW,OAAO,EAAE;AAAA,EACxD;AAAA,EAEA,MAAM,cAAc,OAA2C;AAC9D,UAAM,SAAgE,CAAC;AACvE,QAAI,MAAO,QAAO,QAAQ;AAC1B,WAAO,KAAK,KAAuB,iBAAiB,MAAM;AAAA,EAC3D;AAAA,EAEA,MAAM,YAAY,OAA2C;AAC5D,UAAM,SAAgE,CAAC;AACvE,QAAI,MAAO,QAAO,QAAQ;AAC1B,WAAO,KAAK,KAAuB,iBAAiB,MAAM;AAAA,EAC3D;AAAA,EAEA,MAAM,cAAyC;AAC9C,WAAO,KAAK,QAA0B,SAAS;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAgC;AACrC,WAAO,KAAK,KAAmB,SAAS;AAAA,EACzC;AAAA,EAEA,MAAM,iBAAwC;AAC7C,WAAO,KAAK,KAAmB,gBAAgB;AAAA,EAChD;AAAA,EAEA,MAAM,QAAkC;AACvC,WAAO,KAAK,KAAsB,QAAQ;AAAA,EAC3C;AAAA,EAEA,MAAM,eAAsC;AAC3C,WAAO,KAAK,KAAmB,SAAS;AAAA,EACzC;AAAA,EAEA,MAAM,WAAW,OAAyC;AACzD,UAAM,SAAgE,CAAC;AACvE,QAAI,MAAO,QAAO,QAAQ;AAC1B,WAAO,KAAK,KAAqB,YAAY,MAAM;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAyC;AAC9C,WAAO,KAAK,KAAmB,gBAAgB;AAAA,EAChD;AAAA,EAEA,MAAM,eACL,UACwB;AACxB,WAAO,KAAK,MAAoB,oBAAoB,QAAQ;AAAA,EAC7D;AAAA,EAEA,MAAM,yBAAuD;AAC5D,WAAO,KAAK,KAA0B,SAAS;AAAA,EAChD;AAAA,EAEA,MAAM,cAAc,OAAyC;AAC5D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA,EAAE,MAAM;AAAA,IACT;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,qBAAqB,OAAyC;AACnE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA,EAAE,MAAM;AAAA,IACT;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,sBAAwD;AAC7D,WAAO,KAAK,KAA8B,qBAAqB;AAAA,EAChE;AAAA,EAEA,MAAM,cAAc,MAAc,QAA0C;AAC3E,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,MACV;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,iBAAiB,MAAwC;AAC9D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,uBAAuB,mBAAmB,IAAI,CAAC;AAAA,IAChD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,qBAAuD;AAC5D,WAAO,KAAK,KAA8B,oBAAoB;AAAA,EAC/D;AAAA,EAEA,MAAM,aAAa,MAAc,QAA0C;AAC1E,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,MACV;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,gBAAgB,MAAwC;AAC7D,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB,sBAAsB,mBAAmB,IAAI,CAAC;AAAA,IAC/C;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,uBAAmD;AACxD,WAAO,KAAK,KAAwB,qBAAqB;AAAA,EAC1D;AAAA,EAEA,MAAM,4BAA6D;AAClE,WAAO,KAAK,KAA6B,2BAA2B;AAAA,EACrE;AAAA,EAEA,MAAM,6BACL,UAC2B;AAC3B,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,QACC,WAAW;AAAA,MACZ;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,yBAAuD;AAC5D,WAAO,KAAK,KAA0B,wBAAwB;AAAA,EAC/D;AAAA,EAEA,MAAM,kBAAkB,WAA6C;AACpE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,QACC,YAAY;AAAA,MACb;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,kBAAkB,WAA6C;AACpE,UAAM,OAAO,MAAM,KAAK;AAAA,MACvB;AAAA,MACA;AAAA,QACC,YAAY;AAAA,MACb;AAAA,IACD;AACA,WAAO,EAAE,SAAU,KAAK,WAAW,GAAc;AAAA,EAClD;AAAA,EAEA,MAAM,uBAAmD;AACxD,WAAO,KAAK,KAAwB,sBAAsB;AAAA,EAC3D;AAAA,EAEA,MAAM,iBAAuC;AAC5C,WAAO,KAAK,KAAkB,eAAe;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAqC;AAC1C,WAAO,KAAK,KAAiB,cAAc;AAAA,EAC5C;AAAA,EAEA,MAAM,qBAA+C;AACpD,WAAO,KAAK,KAAsB,mBAAmB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,iBACN,QAC0C;AAC1C,UAAM,UAAU,MAAM,KAAK,gBAAgB;AAC3C,YAAQ,SAAS;AACjB,UAAM,WAAW,MAAM,KAAK;AAAA,MAC3B,KAAK,SAAS,UAAU,MAAM,SAAS;AAAA,MACvC;AAAA,QACC;AAAA,MACD;AAAA,IACD;AACA,QAAI,CAAC,SAAS,IAAI;AACjB,YAAM,IAAI;AAAA,QACT,6BAA6B,SAAS,UAAU;AAAA,QAChD,SAAS;AAAA,MACV;AAAA,IACD;AACA,UAAM,SAAS,SAAS,MAAM,UAAU;AACxC,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,4BAA4B,6BAA6B;AAAA,IACpE;AACA,UAAM,UAAU,IAAI,YAAY;AAChC,QAAI,SAAS;AACb,WAAO,MAAM;AACZ,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AACV,gBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAChD,YAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,eAAS,MAAM,IAAI,KAAK;AACxB,iBAAW,QAAQ,OAAO;AACzB,YAAI,KAAK,WAAW,QAAQ,GAAG;AAC9B,cAAI;AACH,kBAAM,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC;AAAA,UAC/B,QAAQ;AAAA,UAER;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAMA,SAAS,MAAM,IAA2B;AACzC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACxD;AAEA,SAAS,kBAAkB,SAAqC;AAC/D,QAAM,aAAa,IAAI,gBAAgB;AACvC,aAAW,UAAU,SAAS;AAC7B,QAAI,OAAO,SAAS;AACnB,iBAAW,MAAM,OAAO,MAAM;AAC9B,aAAO,WAAW;AAAA,IACnB;AACA,WAAO,iBAAiB,SAAS,MAAM,WAAW,MAAM,OAAO,MAAM,GAAG;AAAA,MACvE,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AACA,SAAO,WAAW;AACnB;;;AC70CO,IAAM,eAAN,MAAmB;AAAA,EAGzB,YAAY,OAAkC,CAAC,GAAG;AACjD,SAAK,SAAS,IAAI,kBAAkB,IAAI;AAAA,EACzC;AAAA;AAAA,EAGA,QAAc;AACb,SAAK,OAAO,MAAM,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,QAAwD;AACjE,WAAO,QAAQ,KAAK,OAAO,UAAU,MAAM,CAAC;AAAA,EAC7C;AAAA,EAEA,WAAW,QAAwD;AAClE,WAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEA,cAAc,QAAgB;AAC7B,WAAO,QAAQ,KAAK,OAAO,cAAc,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,oBAAoB,QAAgB;AACnC,WAAO,QAAQ,KAAK,OAAO,oBAAoB,MAAM,CAAC;AAAA,EACvD;AAAA,EAEA,0BAA0B,QAAgB,WAAmB;AAC5D,WAAO,QAAQ,KAAK,OAAO,0BAA0B,QAAQ,SAAS,CAAC;AAAA,EACxE;AAAA,EAEA,mBAAmB,QAAgB;AAClC,WAAO,QAAQ,KAAK,OAAO,mBAAmB,MAAM,CAAC;AAAA,EACtD;AAAA,EAEA,eAAe,QAAgB;AAC9B,WAAO,QAAQ,KAAK,OAAO,eAAe,MAAM,CAAC;AAAA,EAClD;AAAA,EAEA,WAAW,QAAgB;AAC1B,WAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEA,WAAW,QAAgB;AAC1B,WAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEA,YAAY,SAAmB;AAC9B,WAAO,QAAQ,KAAK,OAAO,YAAY,OAAO,CAAC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,QAAgB,MAAmB,UAAmB;AACtE,WAAO,QAAQ,KAAK,OAAO,iBAAiB,QAAQ,MAAM,QAAQ,CAAC;AAAA,EACpE;AAAA,EAEA,mBAAmB,QAAgB,cAAsB;AACxD,WAAO,QAAQ,KAAK,OAAO,mBAAmB,QAAQ,YAAY,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,QAAgB,SAAiB;AACvD,WAAO,QAAQ,KAAK,OAAO,uBAAuB,QAAQ,OAAO,CAAC;AAAA,EACnE;AAAA,EAEA,wBAAwB,QAAgB;AACvC,WAAO,QAAQ,KAAK,OAAO,wBAAwB,MAAM,CAAC;AAAA,EAC3D;AAAA,EAEA,sBAAsB,QAAgB;AACrC,WAAO,QAAQ,KAAK,OAAO,sBAAsB,MAAM,CAAC;AAAA,EACzD;AAAA,EAEA,yBAAyB,QAAgB;AACxC,WAAO,QAAQ,KAAK,OAAO,yBAAyB,MAAM,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB,QAAgB,OAAe;AACjD,WAAO,QAAQ,KAAK,OAAO,mBAAmB,QAAQ,KAAK,CAAC;AAAA,EAC7D;AAAA,EAEA,qBAAqB,QAAgB,UAAkB;AACtD,WAAO,QAAQ,KAAK,OAAO,qBAAqB,QAAQ,QAAQ,CAAC;AAAA,EAClE;AAAA,EAEA,uBAAuB,QAAgB;AACtC,WAAO,QAAQ,KAAK,OAAO,uBAAuB,MAAM,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB,QAAgB,OAAe;AAC9C,WAAO,QAAQ,KAAK,OAAO,gBAAgB,QAAQ,KAAK,CAAC;AAAA,EAC1D;AAAA,EAEA,kBAAkB,QAAgB,UAAkB;AACnD,WAAO,QAAQ,KAAK,OAAO,kBAAkB,QAAQ,QAAQ,CAAC;AAAA,EAC/D;AAAA,EAEA,oBAAoB,QAAgB;AACnC,WAAO,QAAQ,KAAK,OAAO,oBAAoB,MAAM,CAAC;AAAA,EACvD;AAAA,EAEA,WAAW,QAAgB;AAC1B,WAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,CAAC;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB,QAAgB,SAAiB;AAClD,WAAO,QAAQ,KAAK,OAAO,kBAAkB,QAAQ,OAAO,CAAC;AAAA,EAC9D;AAAA,EAEA,mBAAmB,QAAgB;AAClC,WAAO,QAAQ,KAAK,OAAO,mBAAmB,MAAM,CAAC;AAAA,EACtD;AAAA,EAEA,iBAAiB,QAAgB;AAChC,WAAO,QAAQ,KAAK,OAAO,iBAAiB,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,oBAAoB,QAAgB;AACnC,WAAO,QAAQ,KAAK,OAAO,oBAAoB,MAAM,CAAC;AAAA,EACvD;AAAA,EAEA,sBAAsB,QAAgB;AACrC,WAAO,QAAQ,KAAK,OAAO,sBAAsB,MAAM,CAAC;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,QAA2D;AACxE,WAAO,QAAQ,KAAK,OAAO,cAAc,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,eACC,QACA,SACA,SACC;AACD,WAAO,QAAQ,KAAK,OAAO,eAAe,QAAQ,SAAS,OAAO,CAAC;AAAA,EACpE;AAAA,EAEA,cAAc,QAAgB,OAAe;AAC5C,WAAO,QAAQ,KAAK,OAAO,cAAc,QAAQ,KAAK,CAAC;AAAA,EACxD;AAAA,EAEA,mBAAmB,QAAgB;AAClC,WAAO,QAAQ,KAAK,OAAO,mBAAmB,MAAM,CAAC;AAAA,EACtD;AAAA,EAEA,gBAAgB,QAAgB;AAC/B,WAAO,QAAQ,KAAK,OAAO,gBAAgB,MAAM,CAAC;AAAA,EACnD;AAAA,EAEA,cAAc,QAAgB;AAC7B,WAAO,QAAQ,KAAK,OAAO,cAAc,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,QAAQ,QAAgB;AACvB,WAAO,QAAQ,KAAK,OAAO,QAAQ,MAAM,CAAC;AAAA,EAC3C;AAAA,EAEA,UAAU,QAAgB;AACzB,WAAO,QAAQ,KAAK,OAAO,UAAU,MAAM,CAAC;AAAA,EAC7C;AAAA,EAEA,aAAa,QAA2D;AACvE,WAAO,QAAQ,KAAK,OAAO,aAAa,MAAM,CAAC;AAAA,EAChD;AAAA,EAEA,eAAe,OAAe;AAC7B,WAAO,QAAQ,KAAK,OAAO,eAAe,KAAK,CAAC;AAAA,EACjD;AAAA,EAEA,mBAAmB,SAAmB;AACrC,WAAO,QAAQ,KAAK,OAAO,mBAAmB,OAAO,CAAC;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,QAAgB,SAAiB;AAC/C,WAAO,QAAQ,KAAK,OAAO,eAAe,QAAQ,OAAO,CAAC;AAAA,EAC3D;AAAA,EAEA,iBAAiB,QAAgB;AAChC,WAAO,QAAQ,KAAK,OAAO,iBAAiB,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,QAAQ,QAAgB;AACvB,WAAO,QAAQ,KAAK,OAAO,QAAQ,MAAM,CAAC;AAAA,EAC3C;AAAA,EAEA,gBAAgB,QAAgB;AAC/B,WAAO,QAAQ,KAAK,OAAO,gBAAgB,MAAM,CAAC;AAAA,EACnD;AAAA,EAEA,gBAAgB,QAAgB;AAC/B,WAAO,QAAQ,KAAK,OAAO,gBAAgB,MAAM,CAAC;AAAA,EACnD;AAAA,EAEA,cAAc,QAAgB;AAC7B,WAAO,QAAQ,KAAK,OAAO,cAAc,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,WAAW,QAAgB;AAC1B,WAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEA,cAAc,QAAgB;AAC7B,WAAO,QAAQ,KAAK,OAAO,cAAc,MAAM,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY;AACX,WAAO,QAAQ,KAAK,OAAO,UAAU,CAAC;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AACnB,WAAO,QAAQ,KAAK,OAAO,kBAAkB,CAAC;AAAA,EAC/C;AAAA,EAEA,iBACC,QACA,QACC;AACD,WAAO,QAAQ,KAAK,OAAO,iBAAiB,QAAQ,MAAM,CAAC;AAAA,EAC5D;AAAA,EAEA,oBAAoB,QAAgB,WAAmB;AACtD,WAAO,QAAQ,KAAK,OAAO,oBAAoB,QAAQ,SAAS,CAAC;AAAA,EAClE;AAAA,EAEA,uBACC,QACA,cACC;AACD,WAAO,QAAQ,KAAK,OAAO,uBAAuB,QAAQ,YAAY,CAAC;AAAA,EACxE;AAAA,EAEA,cAAc,QAAgB,WAAmB;AAChD,WAAO,QAAQ,KAAK,OAAO,cAAc,QAAQ,SAAS,CAAC;AAAA,EAC5D;AAAA,EAEA,eAAe,QAAgB,YAAsB;AACpD,WAAO,QAAQ,KAAK,OAAO,eAAe,QAAQ,UAAU,CAAC;AAAA,EAC9D;AAAA,EAEA,cACC,QACA,WACA,QACC;AACD,WAAO,QAAQ,KAAK,OAAO,cAAc,QAAQ,WAAW,MAAM,CAAC;AAAA,EACpE;AAAA,EAEA,mBAAmB,QAAgB,OAAe;AACjD,WAAO,QAAQ,KAAK,OAAO,mBAAmB,QAAQ,KAAK,CAAC;AAAA,EAC7D;AAAA,EAEA,uBAAuB,QAAgB,WAAmB,QAAiB;AAC1E,WAAO;AAAA,MACN,KAAK,OAAO,uBAAuB,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,QAAyD;AACnE,WAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEA,eAAe,SAAiB;AAC/B,WAAO,QAAQ,KAAK,OAAO,eAAe,OAAO,CAAC;AAAA,EACnD;AAAA,EAEA,cAAc,OAAgB;AAC7B,WAAO,QAAQ,KAAK,OAAO,cAAc,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,YAAY,OAAgB;AAC3B,WAAO,QAAQ,KAAK,OAAO,YAAY,KAAK,CAAC;AAAA,EAC9C;AAAA,EAEA,cAAc;AACb,WAAO,QAAQ,KAAK,OAAO,YAAY,CAAC;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS;AACR,WAAO,QAAQ,KAAK,OAAO,OAAO,CAAC;AAAA,EACpC;AAAA,EAEA,iBAAiB;AAChB,WAAO,QAAQ,KAAK,OAAO,eAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,QAAQ;AACP,WAAO,QAAQ,KAAK,OAAO,MAAM,CAAC;AAAA,EACnC;AAAA,EAEA,eAAe;AACd,WAAO,QAAQ,KAAK,OAAO,aAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,WAAW,OAAgB;AAC1B,WAAO,QAAQ,KAAK,OAAO,WAAW,KAAK,CAAC;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB;AACjB,WAAO,QAAQ,KAAK,OAAO,gBAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,eAAe,UAAmC;AACjD,WAAO,QAAQ,KAAK,OAAO,eAAe,QAAQ,CAAC;AAAA,EACpD;AAAA,EAEA,yBAAyB;AACxB,WAAO,QAAQ,KAAK,OAAO,uBAAuB,CAAC;AAAA,EACpD;AAAA,EAEA,cAAc,OAAe;AAC5B,WAAO,QAAQ,KAAK,OAAO,cAAc,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,qBAAqB,OAAe;AACnC,WAAO,QAAQ,KAAK,OAAO,qBAAqB,KAAK,CAAC;AAAA,EACvD;AAAA,EAEA,sBAAsB;AACrB,WAAO,QAAQ,KAAK,OAAO,oBAAoB,CAAC;AAAA,EACjD;AAAA,EAEA,cAAc,MAAc,QAAgB;AAC3C,WAAO,QAAQ,KAAK,OAAO,cAAc,MAAM,MAAM,CAAC;AAAA,EACvD;AAAA,EAEA,iBAAiB,MAAc;AAC9B,WAAO,QAAQ,KAAK,OAAO,iBAAiB,IAAI,CAAC;AAAA,EAClD;AAAA,EAEA,qBAAqB;AACpB,WAAO,QAAQ,KAAK,OAAO,mBAAmB,CAAC;AAAA,EAChD;AAAA,EAEA,aAAa,MAAc,QAAgB;AAC1C,WAAO,QAAQ,KAAK,OAAO,aAAa,MAAM,MAAM,CAAC;AAAA,EACtD;AAAA,EAEA,gBAAgB,MAAc;AAC7B,WAAO,QAAQ,KAAK,OAAO,gBAAgB,IAAI,CAAC;AAAA,EACjD;AAAA,EAEA,uBAAuB;AACtB,WAAO,QAAQ,KAAK,OAAO,qBAAqB,CAAC;AAAA,EAClD;AAAA,EAEA,4BAA4B;AAC3B,WAAO,QAAQ,KAAK,OAAO,0BAA0B,CAAC;AAAA,EACvD;AAAA,EAEA,6BAA6B,UAAkB;AAC9C,WAAO,QAAQ,KAAK,OAAO,6BAA6B,QAAQ,CAAC;AAAA,EAClE;AAAA,EAEA,yBAAyB;AACxB,WAAO,QAAQ,KAAK,OAAO,uBAAuB,CAAC;AAAA,EACpD;AAAA,EAEA,kBAAkB,WAAmB;AACpC,WAAO,QAAQ,KAAK,OAAO,kBAAkB,SAAS,CAAC;AAAA,EACxD;AAAA,EAEA,kBAAkB,WAAmB;AACpC,WAAO,QAAQ,KAAK,OAAO,kBAAkB,SAAS,CAAC;AAAA,EACxD;AAAA,EAEA,uBAAuB;AACtB,WAAO,QAAQ,KAAK,OAAO,qBAAqB,CAAC;AAAA,EAClD;AAAA,EAEA,iBAAiB;AAChB,WAAO,QAAQ,KAAK,OAAO,eAAe,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB;AACf,WAAO,QAAQ,KAAK,OAAO,cAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,qBAAqB;AACpB,WAAO,QAAQ,KAAK,OAAO,mBAAmB,CAAC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,SAA4C;AAC5D,UAAM,SAAoC,CAAC;AAG3C,WAAO;AAAA,EACR;AACD;AAEA,SAAS,QAAW,SAAwB;AAK3C,MAAI;AACJ,MAAI;AACJ,MAAI,OAAO;AAEX,UAAQ;AAAA,IACP,CAAC,MAAM;AACN,eAAS;AACT,aAAO;AAAA,IACR;AAAA,IACA,CAAC,MAAM;AACN,cAAQ;AACR,aAAO;AAAA,IACR;AAAA,EACD;AAMA,MAAI,CAAC,MAAM;AAEV,UAAM,QAAQ,KAAK,IAAI;AACvB,WAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAQ;AAAA,IAE7C;AAAA,EACD;AAEA,MAAI,CAAC,MAAM;AACV,UAAM,IAAI,MAAM,wCAAwC;AAAA,EACzD;AACA,MAAI,MAAO,OAAM;AACjB,SAAO;AACR;;;ACvfA,IAAM,WAA+B;AAAA,EACpC,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AACb;AAUO,SAAS,WACf,WACqB;AACrB,SAAO;AAAA,IACN,UACC,QAAQ,IAAI,oBACZ,WAAW,WACX,SAAS,SACR,QAAQ,QAAQ,EAAE;AAAA,IACpB,QACC,QAAQ,IAAI,wBAAwB,WAAW,UAAU,SAAS;AAAA,IACnE,WAAW;AAAA,MACV,QAAQ,IAAI,2BACX,WAAW,aACX,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACX,QAAQ,IAAI,4BACX,WAAW,cACX,SAAS;AAAA,IACX;AAAA,EACD;AACD;;;ACpCA,IAAI;AAEJ,eAAsB,sBAAwD;AAC7E,MAAI,eAAgB,QAAO;AAG3B,MAAI,OAAO,YAAY,eAAe,QAAQ,UAAU,QAAQ,MAAM;AAErE,qBAAiB,WAAW;AAC5B,WAAO;AAAA,EACR;AAGA,QAAM,QAAQ,MAAM,OAAO,OAAY;AACvC,QAAM,OAAO,MAAM,OAAO,MAAW;AAErC,QAAM,QAAQ,IAAI,MAAM,MAAM,EAAE,oBAAoB,MAAM,CAAC;AAE3D,mBAAiB,OAChB,OACA,SACuB;AACvB,UAAM,SAAS,OAAO,UAAU,WAAW,QAAQ,MAAM,SAAS;AAClE,UAAM,SAAS,IAAI,IAAI,MAAM;AAC7B,UAAM,UAAU,OAAO,aAAa;AAEpC,WAAO,IAAI,QAAkB,CAAC,SAAS,WAAW;AACjD,YAAM,MAAM,UAAU,QAAQ;AAC9B,YAAM,MAAM,IAAI;AAAA,QACf;AAAA,QACA;AAAA,UACC,QAAQ,MAAM,UAAU;AAAA,UACxB,SAAS,MAAM;AAAA,UACf,oBAAoB;AAAA,UACpB,OAAO,UAAU,QAAQ;AAAA,QAC1B;AAAA,QACA,CAAC,QAA+B;AAC/B,gBAAM,SAAmB,CAAC;AAC1B,cAAI,GAAG,QAAQ,CAAC,UAAkB,OAAO,KAAK,KAAK,CAAC;AACpD,cAAI,GAAG,OAAO,MAAM;AACnB,kBAAM,OAAO,OAAO,OAAO,MAAM;AACjC,kBAAM,UAAU,IAAI,QAAQ;AAE5B,kBAAM,aACL,IACC;AACF,gBAAI,YAAY;AACf,yBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACtD,oBAAI,SAAS,MAAM;AAClB,sBAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,+BAAW,KAAK,MAAO,SAAQ,OAAO,KAAK,CAAC;AAAA,kBAC7C,OAAO;AACN,4BAAQ,IAAI,KAAK,KAAK;AAAA,kBACvB;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AACA;AAAA,cACC,IAAI,SAAS,MAAM;AAAA,gBAClB,QAAS,IAA2C;AAAA,gBACpD,YAAa,IACX;AAAA,gBACF;AAAA,cACD,CAAC;AAAA,YACF;AAAA,UACD,CAAC;AAAA,QACF;AAAA,MACD;AAEA,UAAI,GAAG,SAAS,MAAM;AACtB,UAAI,MAAM,QAAQ,MAAM;AACvB,YAAI,MAAM,KAAK,IAAI;AAAA,MACpB;AACA,UAAI,IAAI;AAAA,IACT,CAAC;AAAA,EACF;AAEA,SAAO;AACR;;;ACzEO,IAAM,qBAAqB;AAC3B,IAAM,4BAA4B;AAClC,IAAM,+BAA+B;AACrC,IAAM,qBAAqB;AAC3B,IAAM,4BAA4B;AAClC,IAAM,6BAA6B;AACnC,IAAM,sBAAsB;AAC5B,IAAM,0BAA0B;AAChC,IAAM,kCAAkC;AACxC,IAAM,kCAAkC;AACxC,IAAM,6BAA6B;AAgBnC,IAAM,iBAAN,MAAqB;AAAA,EAQ3B,YAAY,SAAiB,MAA6B;AAJ1D,SAAQ,UAAiC;AACzC,SAAQ,YAA4C,oBAAI,IAAI;AAC5D,SAAQ,aAAa;AAGpB,SAAK,WAAW,QAAQ,QAAQ,QAAQ,EAAE;AAC1C,SAAK,iBAAiB,KAAK,iBAAiB,CAAC;AAC7C,SAAK,YAAY,KAAK;AAEtB,QAAI,KAAK,aAAa;AACrB,WAAK,QAAQ;AAAA,IACd;AAAA,EACD;AAAA,EAEA,IAAI,YAAqB;AACxB,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,MAAM,UAAyB;AAC9B,UAAM,OAAgC,CAAC;AACvC,QAAI,KAAK,WAAW;AACnB,WAAK,QACJ,OAAO,KAAK,cAAc,aACvB,MAAM,KAAK,UAAU,IACrB,KAAK;AAAA,IACV;AAGA,UAAM,EAAE,GAAG,IAAI,MAAM,OAAO,kBAAkB;AAC9C,SAAK,UAAU,GAAG,KAAK,UAAU;AAAA,MAChC,MAAM;AAAA,MACN;AAAA,MACA,YAAY,CAAC,aAAa,SAAS;AAAA,MACnC,GAAG,KAAK;AAAA,IACT,CAAC;AAED,SAAK,QAAQ,GAAG,WAAW,MAAM;AAChC,WAAK,aAAa;AAAA,IACnB,CAAC;AAED,SAAK,QAAQ,GAAG,cAAc,MAAM;AACnC,WAAK,aAAa;AAAA,IACnB,CAAC;AAED,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC7C,UAAI,CAAC,KAAK,SAAS;AAClB,eAAO,IAAI,MAAM,8BAA8B,CAAC;AAChD;AAAA,MACD;AACA,WAAK,QAAQ,GAAG,WAAW,MAAM,QAAQ,CAAC;AAC1C,WAAK,QAAQ,GAAG,iBAAiB,CAAC,QAAe,OAAO,GAAG,CAAC;AAE5D,UAAI,KAAK,QAAQ,WAAW;AAC3B,gBAAQ;AAAA,MACT;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,aAA4B;AACjC,QAAI,KAAK,SAAS;AACjB,WAAK,QAAQ,WAAW;AACxB,WAAK,UAAU;AAAA,IAChB;AACA,SAAK,aAAa;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,QAA+B;AAClD,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,MAAM,8BAA8B;AACjE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,WAAK,SAAS;AAAA,QACb;AAAA,QACA,EAAE,SAAS,OAAO;AAAA,QAClB,CAAC,aAA8C;AAC9C,cAAI,SAAS,GAAI,SAAQ;AAAA,cACpB,QAAO,IAAI,MAAM,SAAS,SAAS,qBAAqB,CAAC;AAAA,QAC/D;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAA+B;AACpD,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,MAAM,8BAA8B;AACjE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,WAAK,SAAS;AAAA,QACb;AAAA,QACA,EAAE,SAAS,OAAO;AAAA,QAClB,CAAC,aAA8C;AAC9C,cAAI,SAAS,GAAI,SAAQ;AAAA,cACpB,QAAO,IAAI,MAAM,SAAS,SAAS,uBAAuB,CAAC;AAAA,QACjE;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,GAAG,OAAe,SAA6B;AAC9C,QAAI,CAAC,KAAK,UAAU,IAAI,KAAK,GAAG;AAC/B,WAAK,UAAU,IAAI,OAAO,oBAAI,IAAI,CAAC;AAEnC,UAAI,KAAK,SAAS;AACjB,aAAK,QAAQ,GAAG,OAAO,IAAI,SAAoB;AAC9C,gBAAMA,YAAW,KAAK,UAAU,IAAI,KAAK;AACzC,cAAIA,WAAU;AACb,uBAAW,KAAKA,WAAU;AACzB,gBAAE,GAAG,IAAI;AAAA,YACV;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AACA,UAAM,WAAW,KAAK,UAAU,IAAI,KAAK;AACzC,QAAI,UAAU;AACb,eAAS,IAAI,OAAO;AAAA,IACrB;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAe,SAA6B;AAC/C,UAAM,WAAW,KAAK,UAAU,IAAI,KAAK;AACzC,QAAI,UAAU;AACb,eAAS,OAAO,OAAO;AACvB,UAAI,SAAS,SAAS,GAAG;AACxB,aAAK,UAAU,OAAO,KAAK;AAC3B,YAAI,KAAK,SAAS;AACjB,eAAK,QAAQ,IAAI,KAAK;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAsB;AACrB,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC/B,UAAI,CAAC,KAAK,SAAS;AAClB,gBAAQ;AACR;AAAA,MACD;AACA,WAAK,QAAQ,GAAG,cAAc,MAAM,QAAQ,CAAC;AAAA,IAC9C,CAAC;AAAA,EACF;AACD;;;AC9LO,IAAM,UAAU;","names":["handlers"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orchestrator-client",
3
- "version": "5.6.0",
3
+ "version": "5.7.0",
4
4
  "description": "TypeScript/JavaScript client for the DAMIT AIOps Orchestrator REST API and Socket.IO realtime events",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Damit Informatika",
@@ -46,7 +46,7 @@
46
46
  "test": "vitest run",
47
47
  "test:watch": "vitest",
48
48
  "lint": "biome check src/",
49
- "lint:fix": "biome check --write src/",
49
+ "lint:fix": "biome check --write --unsafe src/",
50
50
  "format": "biome format --write src/",
51
51
  "format:check": "biome format src/",
52
52
  "prepublishOnly": "pnpm build",