orchestrator-client 5.7.2 → 5.7.4

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\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\tCatalogValidationResult,\n\tCompactionEvent,\n\tConfigurationStatus,\n\tConversationResult,\n\tErrorCountResult,\n\tErrorEventDetail,\n\tErrorEventListResult,\n\tErrorPurgeResult,\n\tErrorStatsResult,\n\tHealthDetail,\n\tHealthStatus,\n\tLeaderStatus,\n\tMCPRefreshResult,\n\tMatrixConversationResult,\n\tMessage,\n\tMessageDeleteMultipleResult,\n\tMessageTranslation,\n\tMessageTranslationsResult,\n\tMetricSnapshot,\n\tMioContext,\n\tMioMemoriesResult,\n\tPagination,\n\tReadinessResult,\n\tReloadServicesResult,\n\tReloadStatus,\n\tSlotsStatus,\n\tSubagentsStatus,\n\tSuccessResponse,\n\tSummaryWorkerStatus,\n\tSystemStatus,\n\tTaskCancelResponse,\n\tTaskCreateResponse,\n\tTaskDeleteResult,\n\tTaskDetail,\n\tTaskHandlerStatus,\n\tTaskHandlerStatusLocal,\n\tTaskJournal,\n\tTaskListResult,\n\tTaskSummary,\n\tTokenWorkerStatus,\n\tToolCatalogResult,\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 * Locale tag sent as `X-Locale` on every request (e.g. `\"hu-hu\"`, `\"en-us\"`).\n\t *\n\t * When set the API returns translated content where available.\n\t * When not set the API returns its default (English) content.\n\t * Per-call locale overrides (on `listTasks`, `getTaskStatus`, etc.)\n\t * take precedence over this global setting.\n\t */\n\tlocale?: string;\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 _locale: string | undefined;\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._locale = opts.locale;\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\tif (this._locale) {\n\t\t\theaders[\"X-Locale\"] = this._locale;\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\tpage?: number;\n\t\tlimit?: number;\n\t\torderBy?: string;\n\t\torderDirection?: string;\n\t\tworkflowId?: string;\n\t\tlocale?: string;\n\t}): Promise<TaskListResult> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (params?.locale) headers[\"X-Locale\"] = params.locale;\n\t\tconst data = (await this._request(\"GET\", \"/tasks\", {\n\t\t\tparams: {\n\t\t\t\tpage: params?.page,\n\t\t\t\tlimit: params?.limit,\n\t\t\t\torder_by: params?.orderBy,\n\t\t\t\torder_direction: params?.orderDirection,\n\t\t\t\tworkflow_id: params?.workflowId,\n\t\t\t},\n\t\t\theaders,\n\t\t})) as Record<string, unknown>;\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\treasoningEffort?: string;\n\t\tsystemPrompt?: string;\n\t\tdeveloperPrompt?: string;\n\t\tticketId?: string;\n\t\tticketText?: string;\n\t\tsummary?: string;\n\t\tproblemSummary?: string;\n\t\tsolutionStrategy?: string;\n\t\tagentModelId?: string;\n\t\torchestratorModelId?: string;\n\t\tavailableTools?: string[];\n\t\tattachmentIds?: string[];\n\t\toptions?: Record<string, boolean>;\n\t}): Promise<TaskCreateResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/create\", {\n\t\t\tworkflow_id: params.workflowId,\n\t\t\tgoal_prompt: params.goalPrompt,\n\t\t\tmax_iterations: params.maxIterations,\n\t\t\treasoning_effort: params.reasoningEffort,\n\t\t\tsystem_prompt: params.systemPrompt,\n\t\t\tdeveloper_prompt: params.developerPrompt,\n\t\t\tticket_id: params.ticketId,\n\t\t\tticket_text: params.ticketText,\n\t\t\tsummary: params.summary,\n\t\t\tproblem_summary: params.problemSummary,\n\t\t\tsolution_strategy: params.solutionStrategy,\n\t\t\tagent_model_id: params.agentModelId,\n\t\t\torchestrator_model_id: params.orchestratorModelId,\n\t\t\tavailable_tools: params.availableTools,\n\t\t\tattachment_ids: params.attachmentIds,\n\t\t\toptions: params.options,\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, locale?: string): Promise<TaskDetail> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (locale) headers[\"X-Locale\"] = locale;\n\t\tconst data = (await this._request(\"GET\", \"/task/status\", {\n\t\t\tparams: { task_id: taskId },\n\t\t\theaders,\n\t\t})) as Record<string, unknown>;\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 setTaskStatus(\n\t\ttaskId: string,\n\t\tstatus: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/set_status\", {\n\t\t\ttask_id: taskId,\n\t\t\tstatus,\n\t\t});\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getTaskConversation(\n\t\ttaskId: string,\n\t\tparams?: {\n\t\t\tincludeSummaries?: boolean;\n\t\t\texcludeArchived?: boolean;\n\t\t\tlocale?: string;\n\t\t},\n\t): Promise<ConversationResult> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (params?.locale) headers[\"X-Locale\"] = params.locale;\n\t\tconst data = (await this._request(\"GET\", \"/task/conversation\", {\n\t\t\tparams: {\n\t\t\t\ttask_id: taskId,\n\t\t\t\tinclude_summaries: params?.includeSummaries,\n\t\t\t\texclude_archived: params?.excludeArchived,\n\t\t\t},\n\t\t\theaders,\n\t\t})) as Record<string, unknown>;\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\"/task/message/archived-content\",\n\t\t\t{ task_id: taskId, message_id: messageId },\n\t\t);\n\t}\n\n\tasync getTaskCompactions(taskId: string): Promise<CompactionEvent[]> {\n\t\treturn this._get<CompactionEvent[]>(\"/task/compactions\", {\n\t\t\ttask_id: taskId,\n\t\t});\n\t}\n\n\tasync getTaskJournal(taskId: string): Promise<TaskJournal> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/task/journal\", {\n\t\t\ttask_id: taskId,\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<TaskCancelResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/cancel\", {\n\t\t\ttask_id: taskId,\n\t\t});\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tkilled: (data.killed ?? false) as boolean,\n\t\t\tvia: (data.via ?? \"none\") as \"local\" | \"remote\" | \"none\" | \"fallback\",\n\t\t\tholderId: (data.holderId ?? data.holder_id ?? undefined) as\n\t\t\t\t| string\n\t\t\t\t| undefined,\n\t\t\treason: (data.reason ?? undefined) as string | undefined,\n\t\t\tmessage: (data.message ?? \"\") as string,\n\t\t};\n\t}\n\n\tasync deleteTask(taskId: string): Promise<TaskDeleteResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/delete\", {\n\t\t\ttask_id: 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>>(\n\t\t\t\"/task/delete/multiple\",\n\t\t\t{ task_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\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(this._makeUrl(\"/attachment\"), {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { ...headers },\n\t\t\tbody: formData,\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(attachmentId: string): Promise<Blob> {\n\t\tconst headers = await this._resolveHeaders();\n\t\tconst response = await this._fetch(\n\t\t\tthis._makeUrl(`/attachment/${attachmentId}`),\n\t\t\t{ headers },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/interactive/message\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/interactive/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/interactive/mark_failed\",\n\t\t\t{ task_id: taskId },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveInteractiveAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/interactive/action\",\n\t\t\t{ task_id: taskId, approved },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync stopInteractive(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/interactive/stop\",\n\t\t\t{ task_id: taskId },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/proactive/guide\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/proactive/help\",\n\t\t\t{ task_id: taskId, response },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveProactiveAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/proactive/action\",\n\t\t\t{ task_id: taskId, approved },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/ticket/guide\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/ticket/help\",\n\t\t\t{ task_id: taskId, response },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveTicketAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/ticket/action\",\n\t\t\t{ task_id: taskId, approved },\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\"/task/ticket/wake\",\n\t\t\t{ task_id: taskId },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/matrix/message\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/matrix/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/matrix/mark_failed\",\n\t\t\t{ task_id: taskId },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveMatrixAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/matrix/action\",\n\t\t\t{ task_id: taskId, approved },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMatrixConversation(\n\t\ttaskId: string,\n\t\tphase?: number,\n\t\tincludeSummaries?: boolean,\n\t): Promise<MatrixConversationResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t\"/task/matrix/conversation\",\n\t\t\t{\n\t\t\t\ttask_id: taskId,\n\t\t\t\tphase,\n\t\t\t\tinclude_summaries: includeSummaries,\n\t\t\t},\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\tuserId: string;\n\t\tgoalPrompt: string;\n\t\ttitle?: string;\n\t\tagentModelId?: string;\n\t\torchestratorModelId?: string;\n\t\tattachmentIds?: string[];\n\t\toptions?: Record<string, boolean>;\n\t\tdelegatedToken?: string;\n\t}): Promise<VSATaskCreateResponse> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\tuser_id: params.userId,\n\t\t\tgoal_prompt: params.goalPrompt,\n\t\t\ttitle: params.title,\n\t\t\tagent_model_id: params.agentModelId,\n\t\t\torchestrator_model_id: params.orchestratorModelId,\n\t\t\tattachment_ids: params.attachmentIds,\n\t\t\toptions: params.options,\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>>(\n\t\t\t\"/task/vsa/create\",\n\t\t\tbody,\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 sendVSAMessage(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\toptions?: {\n\t\t\tattachmentIds?: string[];\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> = {\n\t\t\ttask_id: taskId,\n\t\t\tmessage,\n\t\t\tattachment_ids: options?.attachmentIds,\n\t\t};\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\"/task/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>>(\"/task/vsa/rename\", {\n\t\t\ttask_id: taskId,\n\t\t\ttitle,\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\"/task/vsa/regenerate_title\",\n\t\t\t{ task_id: taskId },\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\"/task/vsa/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/vsa/mark_failed\",\n\t\t\t{ task_id: taskId },\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>>(\"/task/vsa/stop\", {\n\t\t\ttask_id: taskId,\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._post<Record<string, unknown>>(\"/task/vsa/delete\", {\n\t\t\ttask_id: taskId,\n\t\t});\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync listVSATasks(\n\t\tuserId: string,\n\t\tparams?: { limit?: number; offset?: number },\n\t): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/task/vsa/list\", {\n\t\t\tuser_id: userId,\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(\n\t\tuserId: string,\n\t\tquery: string,\n\t\tlimit?: number,\n\t): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/task/vsa/search\", {\n\t\t\tuser_id: userId,\n\t\t\tquery,\n\t\t\tlimit,\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<TaskDeleteResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/vsa/delete_bulk\",\n\t\t\t{ task_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// MIO (self_managed) workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendMioMessage(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/self_managed/message\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveMioAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t\tfeedback?: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/self_managed/action\",\n\t\t\t{ task_id: taskId, approved, feedback },\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\"/task/self_managed/wake\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/user_away\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/mark_failed\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/archive\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/context\",\n\t\t\t{ task_id: taskId },\n\t\t);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tmodelId: (data.modelId ?? data.model_id ?? \"\") 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\ttotalMessages: (data.totalMessages ?? data.total_messages ?? 0) as number,\n\t\t\tactiveMessages: (data.activeMessages ??\n\t\t\t\tdata.active_messages ??\n\t\t\t\t0) as number,\n\t\t\tarchivedMessages: (data.archivedMessages ??\n\t\t\t\tdata.archived_messages ??\n\t\t\t\t0) as number,\n\t\t\tmessagesWithoutTokenCount: (data.messagesWithoutTokenCount ??\n\t\t\t\tdata.messages_without_token_count ??\n\t\t\t\t0) as number,\n\t\t};\n\t}\n\n\tasync getMioMemories(\n\t\ttaskId: string,\n\t\tincludeCommon?: boolean,\n\t): Promise<MioMemoriesResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t\"/task/self_managed/memories\",\n\t\t\t{ task_id: taskId, include_common: includeCommon },\n\t\t);\n\t\treturn {\n\t\t\tmemories: (data.memories ?? []) as MioMemoriesResult[\"memories\"],\n\t\t\ttotal: (data.total ?? 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/all\");\n\t\treturn {\n\t\t\ttools: ((data.tools ?? []) as Record<string, unknown>[]).map(\n\t\t\t\t(t) => t as unknown as ToolInfo,\n\t\t\t),\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\tasync getToolCatalog(): Promise<ToolCatalogResult> {\n\t\treturn this._get<ToolCatalogResult>(\"/tools/catalog\");\n\t}\n\n\tasync refreshMCPTools(): Promise<MCPRefreshResult> {\n\t\treturn this._post<MCPRefreshResult>(\"/tools/mcp/refresh\");\n\t}\n\n\tasync validateToolCatalog(): Promise<CatalogValidationResult> {\n\t\treturn this._get<CatalogValidationResult>(\"/tools/validate\");\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: { agentModelId?: string; orchestratorModelId?: string },\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/models\",\n\t\t\t{\n\t\t\t\ttask_id: taskId,\n\t\t\t\tagent_model_id: models.agentModelId,\n\t\t\t\torchestrator_model_id: models.orchestratorModelId,\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\tmaxIterations?: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/iteration\",\n\t\t\t{ task_id: taskId, iteration, max_iterations: maxIterations },\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\"/debug/task/workflow_data\",\n\t\t\t{ task_id: taskId, workflow_data: workflowData },\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._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/message/delete\",\n\t\t\t{ task_id: taskId, message_id: 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<MessageDeleteMultipleResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/message/delete/multiple\",\n\t\t\t{ task_id: taskId, message_ids: messageIds },\n\t\t);\n\t\treturn {\n\t\t\tdeletedIds: (data.deletedIds ?? data.deleted_ids ?? []) as number[],\n\t\t\tfailedIds: (data.failedIds ?? data.failed_ids ?? []) as number[],\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 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._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/message/update\",\n\t\t\t{ task_id: taskId, message_id: messageId, ...update },\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\"/debug/task/matrix/reset_to_phase\",\n\t\t\t{ task_id: taskId, 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): Promise<MessageTranslationsResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/debug/task/${taskId}/message/${messageId}/translations`,\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\tpage?: number;\n\t\tlimit?: number;\n\t\ttaskId?: string;\n\t\tseverity?: string[];\n\t\tsource?: string[];\n\t\tworkflowId?: string;\n\t\terrorCode?: string;\n\t\texceptionType?: string;\n\t\tholderId?: string;\n\t\trequestId?: string;\n\t\tsearch?: string;\n\t\tsince?: string;\n\t\tuntil?: string;\n\t\torderDirection?: string;\n\t}): Promise<ErrorEventListResult> {\n\t\tconst authHeaders = await this._resolveHeaders();\n\t\tconst url = new URL(this._makeUrl(\"/errors\"));\n\t\tif (params?.page !== undefined)\n\t\t\turl.searchParams.set(\"page\", String(params.page));\n\t\tif (params?.limit !== undefined)\n\t\t\turl.searchParams.set(\"limit\", String(params.limit));\n\t\tif (params?.taskId) url.searchParams.set(\"task_id\", params.taskId);\n\t\tif (params?.workflowId)\n\t\t\turl.searchParams.set(\"workflow_id\", params.workflowId);\n\t\tif (params?.errorCode) url.searchParams.set(\"error_code\", params.errorCode);\n\t\tif (params?.exceptionType)\n\t\t\turl.searchParams.set(\"exception_type\", params.exceptionType);\n\t\tif (params?.holderId) url.searchParams.set(\"holder_id\", params.holderId);\n\t\tif (params?.requestId) url.searchParams.set(\"request_id\", params.requestId);\n\t\tif (params?.search) url.searchParams.set(\"search\", params.search);\n\t\tif (params?.since) url.searchParams.set(\"since\", params.since);\n\t\tif (params?.until) url.searchParams.set(\"until\", params.until);\n\t\tif (params?.orderDirection)\n\t\t\turl.searchParams.set(\"order_direction\", params.orderDirection);\n\t\t// Multi-value params: repeat for each value\n\t\tfor (const s of params?.severity ?? []) {\n\t\t\turl.searchParams.append(\"severity\", s);\n\t\t}\n\t\tfor (const s of params?.source ?? []) {\n\t\t\turl.searchParams.append(\"source\", s);\n\t\t}\n\n\t\tconst response = await this._fetch(url.toString(), {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: { ...authHeaders },\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t`listErrors 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\titems: (\n\t\t\t\t(data.items ?? data.errors ?? []) as Record<string, unknown>[]\n\t\t\t).map((e) => e as unknown as ErrorEventDetail),\n\t\t\tpagination: buildPagination(data),\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, topN = 10): Promise<ErrorStatsResult> {\n\t\tconst params: Record<string, string | number | boolean | undefined> = {\n\t\t\ttop_n: topN,\n\t\t};\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/detailed\");\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>(\"/health/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>(\"/configuration/system/status\");\n\t}\n\n\tasync updateSettings(\n\t\tsettings: Record<string, unknown>,\n\t): Promise<SystemStatus> {\n\t\treturn this._post<SystemStatus>(\"/configuration/system/settings\", settings);\n\t}\n\n\tasync getConfigurationStatus(): Promise<ConfigurationStatus> {\n\t\treturn this._get<ConfigurationStatus>(\"/configuration/status\");\n\t}\n\n\tasync setAgentModel(model: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/configuration/agent\",\n\t\t\t{ model_name: 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\"/configuration/orchestrator\",\n\t\t\t{ model_name: 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>>(\n\t\t\t\"/configuration/llmbackend/status\",\n\t\t);\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\"/configuration/llmbackend/add\",\n\t\t\t{ backends: [{ url: host, api_key: apiKey }] },\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._post<Record<string, unknown>>(\n\t\t\t\"/configuration/llmbackend/remove\",\n\t\t\t{ 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>>(\n\t\t\t\"/configuration/mcpserver/status\",\n\t\t);\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\"/configuration/mcpserver/add\",\n\t\t\t{ servers: [{ url: host, api_key: apiKey }] },\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._post<Record<string, unknown>>(\n\t\t\t\"/configuration/mcpserver/remove\",\n\t\t\t{ 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>(\"/configuration/taskhandler/status\");\n\t}\n\n\tasync getTaskHandlerStatusLocal(): Promise<TaskHandlerStatusLocal> {\n\t\treturn this._get<TaskHandlerStatusLocal>(\n\t\t\t\"/configuration/taskhandler/status/local\",\n\t\t);\n\t}\n\n\tasync setConcurrentTasksPerReplica(\n\t\tmaxTasks: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = (await this._request(\n\t\t\t\"POST\",\n\t\t\t\"/configuration/taskhandler/concurrent-per-replica\",\n\t\t\t{ params: { max_tasks: maxTasks } },\n\t\t)) as Record<string, unknown>;\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getSummaryWorkerStatus(): Promise<SummaryWorkerStatus> {\n\t\treturn this._get<SummaryWorkerStatus>(\n\t\t\t\"/configuration/summary-worker/status\",\n\t\t);\n\t}\n\n\tasync setCompactorModel(modelName: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/configuration/summary-worker/model\",\n\t\t\t{ model_name: modelName },\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\"/configuration/summary-worker/translate-model\",\n\t\t\t{ model_name: modelName },\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>(\"/configuration/token-worker/status\");\n\t}\n\n\tasync getSlotsStatus(): Promise<SlotsStatus> {\n\t\treturn this._get<SlotsStatus>(\"/configuration/slots/status\");\n\t}\n\n\tasync getSubagentsStatus(): Promise<SubagentsStatus> {\n\t\treturn this._get<SubagentsStatus>(\"/configuration/subagents/status\");\n\t}\n\n\tasync setSubagentsEnabled(enabled: boolean): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/configuration/subagents\",\n\t\t\t{ enabled },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync reloadServices(): Promise<ReloadServicesResult> {\n\t\treturn this._post<ReloadServicesResult>(\"/configuration/reload\");\n\t}\n\n\tasync getReloadStatus(): Promise<ReloadStatus> {\n\t\treturn this._get<ReloadStatus>(\"/configuration/reload/status\");\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(\n\t\t\t\t`/task/stream_status?task_id=${encodeURIComponent(taskId)}`,\n\t\t\t),\n\t\t\t{ headers },\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, locale?: string) {\n\t\treturn runSync(this._async.getTaskStatus(taskId, locale));\n\t}\n\n\tsetTaskStatus(taskId: string, status: string) {\n\t\treturn runSync(this._async.setTaskStatus(taskId, status));\n\t}\n\n\tgetTaskConversation(\n\t\ttaskId: string,\n\t\tparams?: Parameters<OrchestratorAsync[\"getTaskConversation\"]>[1],\n\t) {\n\t\treturn runSync(this._async.getTaskConversation(taskId, params));\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(file: File | Blob, filename?: string) {\n\t\treturn runSync(this._async.uploadAttachment(file, filename));\n\t}\n\n\tdownloadAttachment(attachmentId: string) {\n\t\treturn runSync(this._async.downloadAttachment(attachmentId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Interactive workflow\n\t// ------------------------------------------------------------------\n\n\tsendInteractiveMessage(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\tattachmentIds?: string[],\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.sendInteractiveMessage(taskId, message, attachmentIds),\n\t\t);\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, approved = true) {\n\t\treturn runSync(this._async.approveInteractiveAction(taskId, approved));\n\t}\n\n\tstopInteractive(taskId: string) {\n\t\treturn runSync(this._async.stopInteractive(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Proactive workflow\n\t// ------------------------------------------------------------------\n\n\tsendProactiveGuide(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\tattachmentIds?: string[],\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.sendProactiveGuide(taskId, message, attachmentIds),\n\t\t);\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, approved = true) {\n\t\treturn runSync(this._async.approveProactiveAction(taskId, approved));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Ticket workflow\n\t// ------------------------------------------------------------------\n\n\tsendTicketGuide(taskId: string, message: string, attachmentIds?: string[]) {\n\t\treturn runSync(this._async.sendTicketGuide(taskId, message, attachmentIds));\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, approved = true) {\n\t\treturn runSync(this._async.approveTicketAction(taskId, approved));\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, message: string, attachmentIds?: string[]) {\n\t\treturn runSync(\n\t\t\tthis._async.sendMatrixMessage(taskId, message, attachmentIds),\n\t\t);\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, approved = true) {\n\t\treturn runSync(this._async.approveMatrixAction(taskId, approved));\n\t}\n\n\tgetMatrixConversation(\n\t\ttaskId: string,\n\t\tphase?: number,\n\t\tincludeSummaries?: boolean,\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.getMatrixConversation(taskId, phase, includeSummaries),\n\t\t);\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\tmessage: string,\n\t\toptions?: { attachmentIds?: string[]; delegatedToken?: string },\n\t) {\n\t\treturn runSync(this._async.sendVSAMessage(taskId, message, 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(\n\t\tuserId: string,\n\t\tparams?: Parameters<OrchestratorAsync[\"listVSATasks\"]>[1],\n\t) {\n\t\treturn runSync(this._async.listVSATasks(userId, params));\n\t}\n\n\tsearchVSATasks(userId: string, query: string, limit?: number) {\n\t\treturn runSync(this._async.searchVSATasks(userId, query, limit));\n\t}\n\n\tdeleteVSATasksBulk(taskIds: string[]) {\n\t\treturn runSync(this._async.deleteVSATasksBulk(taskIds));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// MIO (self_managed) workflow\n\t// ------------------------------------------------------------------\n\n\tsendMioMessage(taskId: string, message: string, attachmentIds?: string[]) {\n\t\treturn runSync(this._async.sendMioMessage(taskId, message, attachmentIds));\n\t}\n\n\tapproveMioAction(taskId: string, approved = true, feedback?: string) {\n\t\treturn runSync(this._async.approveMioAction(taskId, approved, feedback));\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\tgetMioMemories(taskId: string, includeCommon?: boolean) {\n\t\treturn runSync(this._async.getMioMemories(taskId, includeCommon));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Tools\n\t// ------------------------------------------------------------------\n\n\tlistTools() {\n\t\treturn runSync(this._async.listTools());\n\t}\n\n\tgetToolCatalog() {\n\t\treturn runSync(this._async.getToolCatalog());\n\t}\n\n\trefreshMCPTools() {\n\t\treturn runSync(this._async.refreshMCPTools());\n\t}\n\n\tvalidateToolCatalog() {\n\t\treturn runSync(this._async.validateToolCatalog());\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: { agentModelId?: string; orchestratorModelId?: string },\n\t) {\n\t\treturn runSync(this._async.updateTaskModels(taskId, models));\n\t}\n\n\tupdateTaskIteration(\n\t\ttaskId: string,\n\t\titeration?: number,\n\t\tmaxIterations?: number,\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.updateTaskIteration(taskId, iteration, maxIterations),\n\t\t);\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) {\n\t\treturn runSync(this._async.getMessageTranslations(taskId, messageId));\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\tgetSubagentsStatus() {\n\t\treturn runSync(this._async.getSubagentsStatus());\n\t}\n\n\tsetSubagentsEnabled(enabled: boolean) {\n\t\treturn runSync(this._async.setSubagentsEnabled(enabled));\n\t}\n\n\treloadServices() {\n\t\treturn runSync(this._async.reloadServices());\n\t}\n\n\tgetReloadStatus() {\n\t\treturn runSync(this._async.getReloadStatus());\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\";\nexport const EVENT_TASK_BULK_DELETED = \"task_bulk_deleted\";\nexport const EVENT_TASK_WORKFLOW_DATA_CHANGED = \"task_workflow_data_changed\";\nexport const EVENT_ITERATION_REMINDER_ADDED = \"iteration_reminder_added\";\nexport const EVENT_MESSAGE_DELETED = \"message_deleted\";\nexport const EVENT_MESSAGE_UPDATED = \"message_updated\";\nexport const EVENT_APPROVAL_REQUESTED = \"approval_requested\";\nexport const EVENT_APPROVAL_PROVIDED = \"approval_provided\";\nexport const EVENT_HELP_REQUESTED = \"help_requested\";\nexport const EVENT_HELP_PROVIDED = \"help_provided\";\nexport const EVENT_USER_MESSAGE_ADDED = \"user_message_added\";\nexport const EVENT_MIO_MEMORY_CREATED = \"mio_memory_created\";\nexport const EVENT_MIO_MEMORY_UPDATED = \"mio_memory_updated\";\nexport const EVENT_MIO_MEMORY_DELETED = \"mio_memory_deleted\";\nexport const EVENT_LLM_BACKEND_CHANGED = \"llm_backend_changed\";\nexport const EVENT_MCP_SERVER_CHANGED = \"mcp_server_changed\";\nexport const EVENT_MODEL_CONFIG_CHANGED = \"model_config_changed\";\nexport const EVENT_TASK_HANDLER_STATUS_CHANGED = \"task_handler_status_changed\";\nexport const EVENT_SUMMARY_WORKER_STATUS = \"summary_worker_status\";\nexport const EVENT_TOKEN_WORKER_STATUS = \"token_worker_status\";\nexport const EVENT_TOKEN_COUNT_UPDATED = \"token_count_updated\";\nexport const EVENT_MESSAGES_ARCHIVED = \"messages_archived\";\nexport const EVENT_SUBPROCESS_STARTED = \"subprocess_started\";\nexport const EVENT_SUBPROCESS_COMPLETED = \"subprocess_completed\";\nexport const EVENT_SUBPROCESS_FAILED = \"subprocess_failed\";\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\t/**\n\t * Client identifier sent as the `client_id` query parameter at connection\n\t * time. The server uses this for logging/diagnostics.\n\t * Defaults to `\"orchestrator-client\"`.\n\t */\n\tclientId?: string;\n\t/**\n\t * Locale tag sent as the `locale` query parameter at connection time\n\t * (e.g. `\"hu-hu\"`, `\"en-us\"`). When set the server automatically joins\n\t * the client into the matching `locale:<tag>` room so translation-ready\n\t * events are delivered without a separate `subscribeLocale()` call.\n\t */\n\tlocale?: string;\n}\n\n/**\n * Socket.IO-based realtime client for receiving orchestrator events.\n *\n * The server wraps all domain events in a `message` Socket.IO event with an\n * inner `event_type` field. This client unwraps the envelope and dispatches\n * to registered handlers by event_type.\n *\n * ## Two subscription APIs — choose one or mix them:\n *\n * ### 1. Event-type handlers via `on(event, handler)`\n * Registers a callback for a specific event type string (e.g.\n * `\"task_status_changed\"`). You still need to join the relevant rooms\n * manually via `subscribeTask()`, `subscribeEvents()`, etc.\n *\n * ### 2. Room-scoped subscribers via `subscribe(handler, rooms)`\n * Mirrors the WebSocketProvider pattern used in the webui. Each call\n * returns an opaque subscription id. Calling `unsubscribe(id)` removes it.\n * Room membership is kept in sync automatically: the client joins the union\n * of all subscribers' rooms and leaves rooms that are no longer needed.\n * The handler receives the unwrapped event dict for every event from those\n * rooms, regardless of type.\n */\nexport class RealtimeClient {\n\tprivate _baseUrl: string;\n\tprivate _socketOptions: Record<string, unknown>;\n\tprivate _getToken?: (() => string | Promise<string>) | string;\n\tprivate _clientId: string;\n\tprivate _locale?: string;\n\tprivate _socket: SocketIOClient | null = null;\n\tprivate _handlers: Map<string, Set<EventHandler>> = new Map();\n\tprivate _connected = false;\n\n\t// Multi-subscriber room-diffing state (mirrors WebSocketProvider)\n\tprivate _subscriptions: Map<\n\t\tstring,\n\t\t{ handler: EventHandler; rooms: string[] }\n\t> = new Map();\n\tprivate _currentRooms: Set<string> = new Set();\n\tprivate _subIdCounter = 0;\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\t\tthis._clientId = opts.clientId ?? \"orchestrator-client\";\n\t\tthis._locale = opts.locale;\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\tconst query: Record<string, string> = { client_id: this._clientId };\n\t\tif (this._locale) {\n\t\t\tquery.locale = this._locale;\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\tquery,\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\t// Re-sync rooms after reconnect (server-side room membership is lost)\n\t\t\tthis._currentRooms = new Set();\n\t\t\tthis._syncRooms();\n\t\t});\n\n\t\tthis._socket.on(\"disconnect\", () => {\n\t\t\tthis._connected = false;\n\t\t\tthis._currentRooms = new Set();\n\t\t});\n\n\t\t// All domain events come wrapped in a `message` socket event with\n\t\t// an inner `event_type` field. Dispatch them to registered handlers.\n\t\tthis._socket.on(\"message\", (payload: unknown) => this._dispatch(payload));\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 * Dispatch a message envelope to registered handlers and subscribers.\n\t * The server sends: socket.emit(\"message\", {type: \"message\", event: {..., event_type: \"...\", ...}})\n\t */\n\tprivate _dispatch(payload: unknown): void {\n\t\tconst envelope = payload as Record<string, unknown>;\n\t\tconst event = (envelope.event ?? envelope) as Record<string, unknown>;\n\t\tconst eventType = event.event_type as string | undefined;\n\t\tif (!eventType) return;\n\n\t\t// Dispatch to event-type handlers registered via on()\n\t\tconst handlers = this._handlers.get(eventType);\n\t\tif (handlers) {\n\t\t\tfor (const h of handlers) {\n\t\t\t\th(event);\n\t\t\t}\n\t\t}\n\n\t\t// Fan out to all room-scoped subscribers registered via subscribe()\n\t\tfor (const sub of this._subscriptions.values()) {\n\t\t\tsub.handler(event);\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe to realtime events for a specific task.\n\t * Emits a `join` event with `{rooms: [\"task:{taskId}\"]}`.\n\t */\n\tsubscribeTask(taskId: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms: [`task:${taskId}`] });\n\t}\n\n\t/**\n\t * Unsubscribe from realtime events for a specific task.\n\t * Emits a `leave` event with `{rooms: [\"task:{taskId}\"]}`.\n\t */\n\tunsubscribeTask(taskId: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"leave\", { rooms: [`task:${taskId}`] });\n\t}\n\n\t/**\n\t * Subscribe to event-type-scoped rooms.\n\t * e.g. subscribeEvents(\"task_created\", \"task_deleted\")\n\t */\n\tsubscribeEvents(...eventTypes: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tconst rooms = eventTypes.map((t) => `event:${t}`);\n\t\tthis._socket.emit(\"join\", { rooms });\n\t}\n\n\t/**\n\t * Unsubscribe from event-type-scoped rooms.\n\t */\n\tunsubscribeEvents(...eventTypes: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tconst rooms = eventTypes.map((t) => `event:${t}`);\n\t\tthis._socket.emit(\"leave\", { rooms });\n\t}\n\n\t/**\n\t * Subscribe to the `all` broadcast room (receives all events).\n\t */\n\tsubscribeAll(): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms: [\"all\"] });\n\t}\n\n\t/**\n\t * Subscribe to a locale-specific room.\n\t */\n\tsubscribeLocale(locale: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms: [`locale:${locale}`] });\n\t}\n\n\t/**\n\t * Unsubscribe from a locale-specific room.\n\t */\n\tunsubscribeLocale(locale: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"leave\", { rooms: [`locale:${locale}`] });\n\t}\n\n\t/**\n\t * Join arbitrary rooms by name.\n\t */\n\tjoinRooms(rooms: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms });\n\t}\n\n\t/**\n\t * Leave arbitrary rooms by name.\n\t */\n\tleaveRooms(rooms: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"leave\", { rooms });\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Multi-subscriber API (mirrors WebSocketProvider room-diffing)\n\t// ------------------------------------------------------------------\n\n\t/**\n\t * Register a subscriber that receives all events from the given rooms.\n\t *\n\t * Room membership is managed automatically: the client joins the union\n\t * of all active subscribers' rooms and leaves rooms that are no longer\n\t * needed when the last subscriber referencing them is removed.\n\t *\n\t * The `handler` receives the unwrapped event dict (same object that\n\t * `on()` handlers receive).\n\t *\n\t * Returns an opaque subscription id that must be passed to\n\t * `unsubscribe()` to remove the subscription.\n\t *\n\t * Example — mirror the webui's per-component subscription pattern:\n\t *\n\t * const id = rt.subscribe((event) => {\n\t * if (event.event_type === \"task_status_changed\") { ... }\n\t * }, [`task:${taskId}`]);\n\t *\n\t * // later, on cleanup:\n\t * rt.unsubscribe(id);\n\t */\n\tsubscribe(handler: EventHandler, rooms: string[]): string {\n\t\tconst id = `sub_${++this._subIdCounter}`;\n\t\tthis._subscriptions.set(id, { handler, rooms });\n\t\tthis._syncRooms();\n\t\treturn id;\n\t}\n\n\t/**\n\t * Remove a subscription registered via `subscribe()`.\n\t *\n\t * Rooms that are no longer referenced by any remaining subscriber are\n\t * left automatically.\n\t */\n\tunsubscribe(id: string): void {\n\t\tthis._subscriptions.delete(id);\n\t\tthis._syncRooms();\n\t}\n\n\t/**\n\t * Diff the union of all subscribers' rooms against the currently joined\n\t * rooms and emit `join`/`leave` for the delta. No-ops when not connected.\n\t */\n\tprivate _syncRooms(): void {\n\t\tconst socket = this._socket;\n\t\tif (!socket?.connected) return;\n\n\t\tconst needed = new Set<string>();\n\t\tfor (const sub of this._subscriptions.values()) {\n\t\t\tfor (const r of sub.rooms) needed.add(r);\n\t\t}\n\n\t\tconst toJoin = [...needed].filter((r) => !this._currentRooms.has(r));\n\t\tconst toLeave = [...this._currentRooms].filter((r) => !needed.has(r));\n\n\t\tif (toJoin.length) socket.emit(\"join\", { rooms: toJoin });\n\t\tif (toLeave.length) socket.emit(\"leave\", { rooms: toLeave });\n\n\t\tthis._currentRooms = needed;\n\t}\n\n\t/**\n\t * Send a ping to the server.\n\t */\n\tping(): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"ping\");\n\t}\n\n\t/**\n\t * Register a handler for a specific event type.\n\t *\n\t * Domain events (task_created, task_status_changed, etc.) are dispatched\n\t * via the message envelope. Raw socket events (connect, disconnect,\n\t * connection_established, rooms_updated, pong) are wired directly.\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// For raw socket events that arrive outside the message envelope,\n\t\t\t// also wire up a direct socket listener so they still fire.\n\t\t\tif (this._socket) {\n\t\t\t\tconst rawSocketEvents = new Set([\n\t\t\t\t\t\"connect\",\n\t\t\t\t\t\"disconnect\",\n\t\t\t\t\t\"connect_error\",\n\t\t\t\t\t\"connection_established\",\n\t\t\t\t\t\"rooms_updated\",\n\t\t\t\t\t\"pong\",\n\t\t\t\t]);\n\t\t\t\tif (rawSocketEvents.has(event)) {\n\t\t\t\t\tthis._socket.on(event, (...args: unknown[]) => {\n\t\t\t\t\t\tconst handlers = this._handlers.get(event);\n\t\t\t\t\t\tif (handlers) {\n\t\t\t\t\t\t\tfor (const h of handlers) {\n\t\t\t\t\t\t\t\th(...args);\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\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":"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","names":["handlers"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/utils.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, errorCode?: string | null) {\n\t\tsuper(message, { statusCode, errorCode });\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 * Convert a snake_case string to camelCase.\n * Only converts single-underscore sequences followed by a lowercase letter.\n * Leading/double underscores and all-caps segments are preserved.\n */\nexport function snakeToCamel(str: string): string {\n\treturn str.replace(/_([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * Convert a camelCase string to snake_case.\n * Inserts an underscore before each uppercase letter and lowercases it.\n */\nexport function camelToSnake(str: string): string {\n\treturn str.replace(/[A-Z]/g, (c) => `_${c.toLowerCase()}`);\n}\n\n/**\n * Recursively convert all object keys from snake_case to camelCase.\n * Arrays are mapped element-by-element.\n * Primitive values (strings, numbers, booleans, null) are returned unchanged —\n * only the *keys* of plain objects are converted, never the *values*.\n */\nexport function deepCamelCase<T>(obj: T): T {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map(deepCamelCase) as unknown as T;\n\t}\n\tif (typeof obj === \"object\" && obj !== null) {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(obj as Record<string, unknown>).map(([key, value]) => [\n\t\t\t\tsnakeToCamel(key),\n\t\t\t\tdeepCamelCase(value),\n\t\t\t]),\n\t\t) as unknown as T;\n\t}\n\treturn obj;\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\tArchivedContent,\n\tAttachmentUploadResponse,\n\tAuthConfig,\n\tCatalogValidationResult,\n\tCompactionEvent,\n\tConfigurationStatus,\n\tConversationResult,\n\tErrorCountResult,\n\tErrorEventDetail,\n\tErrorEventListResult,\n\tErrorPurgeResult,\n\tErrorStatsResult,\n\tHealthDetail,\n\tHealthStatus,\n\tLLMBackendStatus,\n\tLeaderStatus,\n\tMCPRefreshResult,\n\tMCPServerStatus,\n\tMatrixConversationResult,\n\tMessage,\n\tMessageDeleteMultipleResult,\n\tMessageTranslation,\n\tMessageTranslationsResult,\n\tMetricSnapshot,\n\tMioContext,\n\tMioMemoriesResult,\n\tPagination,\n\tReadinessResult,\n\tReloadServicesResult,\n\tReloadStatus,\n\tSlotsStatus,\n\tSubagentsStatus,\n\tSuccessResponse,\n\tSummaryWorkerStatus,\n\tSystemStatus,\n\tSystemStatusSettings,\n\tTaskCancelResponse,\n\tTaskCreateResponse,\n\tTaskDeleteResult,\n\tTaskDetail,\n\tTaskHandlerStatus,\n\tTaskHandlerStatusLocal,\n\tTaskJournal,\n\tTaskListResult,\n\tTaskSummary,\n\tTokenWorkerStatus,\n\tToolCatalogResult,\n\tToolInfo,\n\tToolsListResult,\n\tVSATaskCreateResponse,\n\tWebSocketStatus,\n\tWorkflowStates,\n} from \"./models/index.js\";\nimport { camelToSnake, deepCamelCase } from \"./utils.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 ?? \"\") as string,\n\t\titeration: (t.iteration ?? 0) as number,\n\t\tmaxIterations: (t.maxIterations ?? 0) as number,\n\t\tgoalPrompt: (t.goalPrompt ?? \"\") as string,\n\t\tresult: (t.result ?? \"\") as string,\n\t\tresultLocalized: (t.resultLocalized ?? null) as string | null,\n\t\tapprovalReason: (t.approvalReason ?? \"\") as string,\n\t\tticketId: (t.ticketId ?? null) as string | null,\n\t\tavailableTools: (t.availableTools ?? null) as string[] | null,\n\t\tinsight: (t.insight ?? null) as string | null,\n\t\tinsightLocalized: (t.insightLocalized ?? null) as string | null,\n\t\tcreatedAt: (t.createdAt ?? \"\") as string,\n\t\tupdatedAt: (t.updatedAt ?? \"\") as string,\n\t\tpendingTranslationsForLocales: (t.pendingTranslationsForLocales ?? null) as\n\t\t\t| string[]\n\t\t\t| null\n\t\t\t| undefined,\n\t};\n}\n\ninterface ParsedApiErrorBody {\n\tmessage: string;\n\terrorCode: string | null;\n\tdetails: Record<string, unknown> | null;\n}\n\n/** Parse orchestrator / FastAPI error JSON into message, code, and details. */\nfunction parseApiErrorBody(\n\tbody: Record<string, unknown>,\n\tfallbackMessage: string,\n): ParsedApiErrorBody {\n\tlet errorCode = (body.error_code as string) ?? null;\n\tif (!errorCode && body.error && typeof body.error === \"object\") {\n\t\tconst nested = body.error as Record<string, unknown>;\n\t\terrorCode = (nested.code as string) ?? null;\n\t}\n\n\tlet message: string | null = null;\n\tif (typeof body.error === \"string\") {\n\t\tmessage = body.error;\n\t} else if (typeof body.message === \"string\") {\n\t\tmessage = body.message;\n\t}\n\n\tlet details: Record<string, unknown> | null =\n\t\t(body.details as Record<string, unknown>) ?? null;\n\n\tconst detail = body.detail;\n\tif (typeof detail === \"string\") {\n\t\tmessage = detail;\n\t} else if (detail && typeof detail === \"object\" && !Array.isArray(detail)) {\n\t\tconst detailObj = detail as Record<string, unknown>;\n\t\tif (!errorCode) {\n\t\t\terrorCode = (detailObj.error_code as string) ?? null;\n\t\t}\n\t\tif (typeof detailObj.error === \"string\") {\n\t\t\tmessage = detailObj.error;\n\t\t} else if (typeof detailObj.message === \"string\") {\n\t\t\tmessage = detailObj.message;\n\t\t}\n\t\tif (!details) {\n\t\t\tdetails = detailObj;\n\t\t}\n\t}\n\n\tif (!message) {\n\t\tmessage = fallbackMessage;\n\t}\n\n\tconst missingFields = body.missing_fields;\n\tif (Array.isArray(missingFields) && missingFields.length > 0) {\n\t\tconst fields = missingFields.filter(\n\t\t\t(f): f is string => typeof f === \"string\",\n\t\t);\n\t\tif (fields.length > 0) {\n\t\t\tmessage = `${message} (missing: ${fields.join(\", \")})`;\n\t\t}\n\t}\n\n\treturn { message, errorCode, details };\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 * Locale tag sent as `X-Locale` on every request (e.g. `\"hu-hu\"`, `\"en-us\"`).\n\t *\n\t * When set the API returns translated content where available.\n\t * When not set the API returns its default (English) content.\n\t * Per-call locale overrides (on `listTasks`, `getTaskStatus`, etc.)\n\t * take precedence over this global setting.\n\t */\n\tlocale?: string;\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 _locale: string | undefined;\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._locale = opts.locale;\n\t\tthis._fetch = opts.fetch ?? globalThis.fetch.bind(globalThis);\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\tif (this._locale) {\n\t\t\theaders[\"X-Locale\"] = this._locale;\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 || response.status === 403) {\n\t\t\t\t\tconst defaultAuthMsg =\n\t\t\t\t\t\tresponse.status === 401\n\t\t\t\t\t\t\t? `Authentication failed for ${method} ${path}`\n\t\t\t\t\t\t\t: `Access denied for ${method} ${path}`;\n\t\t\t\t\tlet authErrorCode: string | null = null;\n\t\t\t\t\tlet authErrorMsg = defaultAuthMsg;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst body = (await response.clone().json()) as Record<\n\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\tunknown\n\t\t\t\t\t\t>;\n\t\t\t\t\t\tconst parsed = parseApiErrorBody(body, defaultAuthMsg);\n\t\t\t\t\t\tauthErrorMsg = parsed.message;\n\t\t\t\t\t\tauthErrorCode = parsed.errorCode;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// body unreadable — fall back to generic message\n\t\t\t\t\t}\n\t\t\t\t\tthrow new OrchestratorAuthError(\n\t\t\t\t\t\tauthErrorMsg,\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\tauthErrorCode,\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 deepCamelCase(await response.json());\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\tconst defaultMessage = `API Error with status ${response.status}`;\n\t\t\t\tlet errorMessage = defaultMessage;\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 clonedResponse = response.clone();\n\t\t\t\t\tconst body = (await clonedResponse.json()) as Record<string, unknown>;\n\t\t\t\t\tconst parsed = parseApiErrorBody(body, JSON.stringify(body));\n\t\t\t\t\terrorMessage = parsed.message;\n\t\t\t\t\terrorCode = parsed.errorCode;\n\t\t\t\t\terrorDetails = parsed.details;\n\t\t\t\t} catch {\n\t\t\t\t\ttry {\n\t\t\t\t\t\terrorMessage = await response.text();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\terrorMessage = defaultMessage;\n\t\t\t\t\t}\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\tpage?: number;\n\t\tlimit?: number;\n\t\torderBy?: string;\n\t\torderDirection?: string;\n\t\tworkflowId?: string;\n\t\tlocale?: string;\n\t}): Promise<TaskListResult> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (params?.locale) headers[\"X-Locale\"] = params.locale;\n\t\tconst data = (await this._request(\"GET\", \"/tasks\", {\n\t\t\tparams: {\n\t\t\t\tpage: params?.page,\n\t\t\t\tlimit: params?.limit,\n\t\t\t\torder_by: params?.orderBy ? camelToSnake(params.orderBy) : undefined,\n\t\t\t\torder_direction: params?.orderDirection,\n\t\t\t\tworkflow_id: params?.workflowId,\n\t\t\t},\n\t\t\theaders,\n\t\t})) as Record<string, unknown>;\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\treasoningEffort?: string;\n\t\tsystemPrompt?: string;\n\t\tdeveloperPrompt?: string;\n\t\tticketId?: string;\n\t\tticketText?: string;\n\t\tsummary?: string;\n\t\tproblemSummary?: string;\n\t\tsolutionStrategy?: string;\n\t\tagentModelId?: string;\n\t\torchestratorModelId?: string;\n\t\tavailableTools?: string[];\n\t\tattachmentIds?: string[];\n\t\toptions?: Record<string, boolean>;\n\t}): Promise<TaskCreateResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/create\", {\n\t\t\tworkflow_id: params.workflowId,\n\t\t\tgoal_prompt: params.goalPrompt,\n\t\t\tmax_iterations: params.maxIterations,\n\t\t\treasoning_effort: params.reasoningEffort,\n\t\t\tsystem_prompt: params.systemPrompt,\n\t\t\tdeveloper_prompt: params.developerPrompt,\n\t\t\tticket_id: params.ticketId,\n\t\t\tticket_text: params.ticketText,\n\t\t\tsummary: params.summary,\n\t\t\tproblem_summary: params.problemSummary,\n\t\t\tsolution_strategy: params.solutionStrategy,\n\t\t\tagent_model_id: params.agentModelId,\n\t\t\torchestrator_model_id: params.orchestratorModelId,\n\t\t\tavailable_tools: params.availableTools,\n\t\t\tattachment_ids: params.attachmentIds,\n\t\t\toptions: params.options,\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, locale?: string): Promise<TaskDetail> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (locale) headers[\"X-Locale\"] = locale;\n\t\tconst data = (await this._request(\"GET\", \"/task/status\", {\n\t\t\tparams: { task_id: taskId },\n\t\t\theaders,\n\t\t})) as Record<string, unknown>;\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 setTaskStatus(\n\t\ttaskId: string,\n\t\tstatus: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/set_status\", {\n\t\t\ttask_id: taskId,\n\t\t\tstatus,\n\t\t});\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getTaskConversation(\n\t\ttaskId: string,\n\t\tparams?: {\n\t\t\tincludeSummaries?: boolean;\n\t\t\texcludeArchived?: boolean;\n\t\t\tlocale?: string;\n\t\t},\n\t): Promise<ConversationResult> {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (params?.locale) headers[\"X-Locale\"] = params.locale;\n\t\tconst data = (await this._request(\"GET\", \"/task/conversation\", {\n\t\t\tparams: {\n\t\t\t\ttask_id: taskId,\n\t\t\t\tinclude_summaries: params?.includeSummaries,\n\t\t\t\texclude_archived: params?.excludeArchived,\n\t\t\t},\n\t\t\theaders,\n\t\t})) as Record<string, unknown>;\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<ArchivedContent> {\n\t\treturn this._get<ArchivedContent>(\"/task/message/archived-content\", {\n\t\t\ttask_id: taskId,\n\t\t\tmessage_id: messageId,\n\t\t});\n\t}\n\n\tasync getTaskCompactions(taskId: string): Promise<CompactionEvent[]> {\n\t\treturn this._get<CompactionEvent[]>(\"/task/compactions\", {\n\t\t\ttask_id: taskId,\n\t\t});\n\t}\n\n\tasync getTaskJournal(taskId: string): Promise<TaskJournal> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/task/journal\", {\n\t\t\ttask_id: taskId,\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<TaskCancelResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/cancel\", {\n\t\t\ttask_id: taskId,\n\t\t});\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tkilled: (data.killed ?? false) as boolean,\n\t\t\tvia: (data.via ?? \"none\") as \"local\" | \"remote\" | \"none\" | \"fallback\",\n\t\t\tholderId: (data.holderId ?? data.holder_id ?? undefined) as\n\t\t\t\t| string\n\t\t\t\t| undefined,\n\t\t\treason: (data.reason ?? undefined) as string | undefined,\n\t\t\tmessage: (data.message ?? \"\") as string,\n\t\t};\n\t}\n\n\tasync deleteTask(taskId: string): Promise<TaskDeleteResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\"/task/delete\", {\n\t\t\ttask_id: 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>>(\n\t\t\t\"/task/delete/multiple\",\n\t\t\t{ task_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\tfile: File | Blob,\n\t\tfilename?: string,\n\t\toptions?: { signal?: AbortSignal },\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(this._makeUrl(\"/attachment\"), {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { ...headers },\n\t\t\tbody: formData,\n\t\t\tsignal: options?.signal,\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tconst defaultMessage = `Attachment upload failed: ${response.statusText}`;\n\t\t\tlet errorMessage = defaultMessage;\n\t\t\tlet errorCode: string | null = null;\n\t\t\tlet errorDetails: Record<string, unknown> | null = null;\n\t\t\ttry {\n\t\t\t\tconst body = (await response.clone().json()) as Record<string, unknown>;\n\t\t\t\tconst parsed = parseApiErrorBody(body, defaultMessage);\n\t\t\t\terrorMessage = parsed.message;\n\t\t\t\terrorCode = parsed.errorCode;\n\t\t\t\terrorDetails = parsed.details;\n\t\t\t} catch {\n\t\t\t\ttry {\n\t\t\t\t\terrorMessage = (await response.text()) || defaultMessage;\n\t\t\t\t} catch {\n\t\t\t\t\terrorMessage = defaultMessage;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\terrorMessage,\n\t\t\t\tresponse.status,\n\t\t\t\terrorCode,\n\t\t\t\terrorDetails ?? undefined,\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(attachmentId: string): Promise<Blob> {\n\t\tconst headers = await this._resolveHeaders();\n\t\tconst response = await this._fetch(\n\t\t\tthis._makeUrl(`/attachment/${attachmentId}`),\n\t\t\t{ headers },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/interactive/message\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/interactive/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/interactive/mark_failed\",\n\t\t\t{ task_id: taskId },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveInteractiveAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/interactive/action\",\n\t\t\t{ task_id: taskId, approved },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync stopInteractive(taskId: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/interactive/stop\",\n\t\t\t{ task_id: taskId },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/proactive/guide\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/proactive/help\",\n\t\t\t{ task_id: taskId, response },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveProactiveAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/proactive/action\",\n\t\t\t{ task_id: taskId, approved },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/ticket/guide\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/ticket/help\",\n\t\t\t{ task_id: taskId, response },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveTicketAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/ticket/action\",\n\t\t\t{ task_id: taskId, approved },\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\"/task/ticket/wake\",\n\t\t\t{ task_id: taskId },\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\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/matrix/message\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\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\"/task/matrix/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/matrix/mark_failed\",\n\t\t\t{ task_id: taskId },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveMatrixAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/matrix/action\",\n\t\t\t{ task_id: taskId, approved },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMatrixConversation(\n\t\ttaskId: string,\n\t\tphase?: number,\n\t\tincludeSummaries?: boolean,\n\t): Promise<MatrixConversationResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t\"/task/matrix/conversation\",\n\t\t\t{\n\t\t\t\ttask_id: taskId,\n\t\t\t\tphase,\n\t\t\t\tinclude_summaries: includeSummaries,\n\t\t\t},\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\tuserId: string;\n\t\tgoalPrompt: string;\n\t\ttitle?: string;\n\t\tagentModelId?: string;\n\t\torchestratorModelId?: string;\n\t\tattachmentIds?: string[];\n\t\toptions?: Record<string, boolean>;\n\t\tdelegatedToken?: string;\n\t}): Promise<VSATaskCreateResponse> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\tuser_id: params.userId,\n\t\t\tgoal_prompt: params.goalPrompt,\n\t\t\ttitle: params.title,\n\t\t\tagent_model_id: params.agentModelId,\n\t\t\torchestrator_model_id: params.orchestratorModelId,\n\t\t\tattachment_ids: params.attachmentIds,\n\t\t\toptions: params.options,\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>>(\n\t\t\t\"/task/vsa/create\",\n\t\t\tbody,\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 sendVSAMessage(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\toptions?: {\n\t\t\tattachmentIds?: string[];\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> = {\n\t\t\ttask_id: taskId,\n\t\t\tmessage,\n\t\t\tattachment_ids: options?.attachmentIds,\n\t\t};\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\"/task/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>>(\"/task/vsa/rename\", {\n\t\t\ttask_id: taskId,\n\t\t\ttitle,\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\"/task/vsa/regenerate_title\",\n\t\t\t{ task_id: taskId },\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\"/task/vsa/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/vsa/mark_failed\",\n\t\t\t{ task_id: taskId },\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>>(\"/task/vsa/stop\", {\n\t\t\ttask_id: taskId,\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._post<Record<string, unknown>>(\"/task/vsa/delete\", {\n\t\t\ttask_id: taskId,\n\t\t});\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync listVSATasks(\n\t\tuserId: string,\n\t\tparams?: { limit?: number; offset?: number },\n\t): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/task/vsa/list\", {\n\t\t\tuser_id: userId,\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(\n\t\tuserId: string,\n\t\tquery: string,\n\t\tlimit?: number,\n\t): Promise<TaskListResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\"/task/vsa/search\", {\n\t\t\tuser_id: userId,\n\t\t\tquery,\n\t\t\tlimit,\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<TaskDeleteResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/vsa/delete_bulk\",\n\t\t\t{ task_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// MIO (self_managed) workflow\n\t// ------------------------------------------------------------------\n\n\tasync sendMioMessage(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\tattachmentIds?: string[],\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/self_managed/message\",\n\t\t\t{ task_id: taskId, message, attachment_ids: attachmentIds },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync approveMioAction(\n\t\ttaskId: string,\n\t\tapproved = true,\n\t\tfeedback?: string,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/task/self_managed/action\",\n\t\t\t{ task_id: taskId, approved, feedback },\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\"/task/self_managed/wake\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/user_away\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/mark_complete\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/mark_failed\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/archive\",\n\t\t\t{ task_id: taskId },\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\"/task/self_managed/context\",\n\t\t\t{ task_id: taskId },\n\t\t);\n\t\treturn {\n\t\t\ttaskId: (data.taskId ?? data.task_id ?? taskId) as string,\n\t\t\tmodelId: (data.modelId ?? data.model_id ?? \"\") 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\ttotalMessages: (data.totalMessages ?? data.total_messages ?? 0) as number,\n\t\t\tactiveMessages: (data.activeMessages ??\n\t\t\t\tdata.active_messages ??\n\t\t\t\t0) as number,\n\t\t\tarchivedMessages: (data.archivedMessages ??\n\t\t\t\tdata.archived_messages ??\n\t\t\t\t0) as number,\n\t\t\tmessagesWithoutTokenCount: (data.messagesWithoutTokenCount ??\n\t\t\t\tdata.messages_without_token_count ??\n\t\t\t\t0) as number,\n\t\t};\n\t}\n\n\tasync getMioMemories(\n\t\ttaskId: string,\n\t\tincludeCommon?: boolean,\n\t): Promise<MioMemoriesResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t\"/task/self_managed/memories\",\n\t\t\t{ task_id: taskId, include_common: includeCommon },\n\t\t);\n\t\treturn {\n\t\t\tmemories: (data.memories ?? []) as MioMemoriesResult[\"memories\"],\n\t\t\ttotal: (data.total ?? 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/all\");\n\t\treturn {\n\t\t\ttools: ((data.tools ?? []) as Record<string, unknown>[]).map(\n\t\t\t\t(t) => t as unknown as ToolInfo,\n\t\t\t),\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\tasync getToolCatalog(): Promise<ToolCatalogResult> {\n\t\treturn this._get<ToolCatalogResult>(\"/tools/catalog\");\n\t}\n\n\tasync refreshMCPTools(): Promise<MCPRefreshResult> {\n\t\treturn this._post<MCPRefreshResult>(\"/tools/mcp/refresh\");\n\t}\n\n\tasync validateToolCatalog(): Promise<CatalogValidationResult> {\n\t\treturn this._get<CatalogValidationResult>(\"/tools/validate\");\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: { agentModelId?: string; orchestratorModelId?: string },\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/models\",\n\t\t\t{\n\t\t\t\ttask_id: taskId,\n\t\t\t\tagent_model_id: models.agentModelId,\n\t\t\t\torchestrator_model_id: models.orchestratorModelId,\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\tmaxIterations?: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/iteration\",\n\t\t\t{ task_id: taskId, iteration, max_iterations: maxIterations },\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\"/debug/task/workflow_data\",\n\t\t\t{ task_id: taskId, workflow_data: workflowData },\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._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/message/delete\",\n\t\t\t{ task_id: taskId, message_id: 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<MessageDeleteMultipleResult> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/message/delete/multiple\",\n\t\t\t{ task_id: taskId, message_ids: messageIds },\n\t\t);\n\t\treturn {\n\t\t\tdeletedIds: (data.deletedIds ?? data.deleted_ids ?? []) as number[],\n\t\t\tfailedIds: (data.failedIds ?? data.failed_ids ?? []) as number[],\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 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._post<Record<string, unknown>>(\n\t\t\t\"/debug/task/message/update\",\n\t\t\t{ task_id: taskId, message_id: messageId, ...update },\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\"/debug/task/matrix/reset_to_phase\",\n\t\t\t{ task_id: taskId, 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): Promise<MessageTranslationsResult> {\n\t\tconst data = await this._get<Record<string, unknown>>(\n\t\t\t`/debug/task/${taskId}/message/${messageId}/translations`,\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\tpage?: number;\n\t\tlimit?: number;\n\t\ttaskId?: string;\n\t\tseverity?: string[];\n\t\tsource?: string[];\n\t\tworkflowId?: string;\n\t\terrorCode?: string;\n\t\texceptionType?: string;\n\t\tholderId?: string;\n\t\trequestId?: string;\n\t\tsearch?: string;\n\t\tsince?: string;\n\t\tuntil?: string;\n\t\torderDirection?: string;\n\t}): Promise<ErrorEventListResult> {\n\t\tconst authHeaders = await this._resolveHeaders();\n\t\tconst url = new URL(this._makeUrl(\"/errors\"));\n\t\tif (params?.page !== undefined)\n\t\t\turl.searchParams.set(\"page\", String(params.page));\n\t\tif (params?.limit !== undefined)\n\t\t\turl.searchParams.set(\"limit\", String(params.limit));\n\t\tif (params?.taskId) url.searchParams.set(\"task_id\", params.taskId);\n\t\tif (params?.workflowId)\n\t\t\turl.searchParams.set(\"workflow_id\", params.workflowId);\n\t\tif (params?.errorCode) url.searchParams.set(\"error_code\", params.errorCode);\n\t\tif (params?.exceptionType)\n\t\t\turl.searchParams.set(\"exception_type\", params.exceptionType);\n\t\tif (params?.holderId) url.searchParams.set(\"holder_id\", params.holderId);\n\t\tif (params?.requestId) url.searchParams.set(\"request_id\", params.requestId);\n\t\tif (params?.search) url.searchParams.set(\"search\", params.search);\n\t\tif (params?.since) url.searchParams.set(\"since\", params.since);\n\t\tif (params?.until) url.searchParams.set(\"until\", params.until);\n\t\tif (params?.orderDirection)\n\t\t\turl.searchParams.set(\"order_direction\", params.orderDirection);\n\t\t// Multi-value params: repeat for each value\n\t\tfor (const s of params?.severity ?? []) {\n\t\t\turl.searchParams.append(\"severity\", s);\n\t\t}\n\t\tfor (const s of params?.source ?? []) {\n\t\t\turl.searchParams.append(\"source\", s);\n\t\t}\n\n\t\tconst response = await this._fetch(url.toString(), {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: { ...authHeaders },\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t`listErrors 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\titems: (\n\t\t\t\t(data.items ?? data.errors ?? []) as Record<string, unknown>[]\n\t\t\t).map((e) => e as unknown as ErrorEventDetail),\n\t\t\tpagination: buildPagination(data),\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, topN = 10): Promise<ErrorStatsResult> {\n\t\tconst params: Record<string, string | number | boolean | undefined> = {\n\t\t\ttop_n: topN,\n\t\t};\n\t\tif (since) params.since = since;\n\t\treturn this._get<ErrorStatsResult>(\"/errors/stats\", params);\n\t}\n\n\tasync countErrors(\n\t\tsince?: string,\n\t\tseverity?: string[],\n\t): Promise<ErrorCountResult> {\n\t\tconst authHeaders = await this._resolveHeaders();\n\t\tconst url = new URL(this._makeUrl(\"/errors/count\"));\n\t\tif (since) url.searchParams.set(\"since\", since);\n\t\tfor (const s of severity ?? []) {\n\t\t\turl.searchParams.append(\"severity\", s);\n\t\t}\n\t\tconst response = await this._fetch(url.toString(), {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: { ...authHeaders },\n\t\t});\n\t\tif (!response.ok) {\n\t\t\tthrow new OrchestratorAPIError(\n\t\t\t\t`countErrors failed: ${response.statusText}`,\n\t\t\t\tresponse.status,\n\t\t\t);\n\t\t}\n\t\treturn deepCamelCase(await response.json()) as ErrorCountResult;\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/detailed\");\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>(\"/health/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>(\"/configuration/system/status\");\n\t}\n\n\tasync updateSettings(\n\t\tsettings: Partial<SystemStatusSettings>,\n\t): Promise<SystemStatus> {\n\t\t// Outgoing payload must be snake_case — the backend does not accept camelCase.\n\t\tconst body: Record<string, unknown> = {};\n\t\tif (settings.agentModelId !== undefined) {\n\t\t\tbody.agent_model_id = settings.agentModelId;\n\t\t}\n\t\tif (settings.orchestratorModelId !== undefined) {\n\t\t\tbody.orchestrator_model_id = settings.orchestratorModelId;\n\t\t}\n\t\tif (settings.compactorModelId !== undefined) {\n\t\t\tbody.compactor_model_id = settings.compactorModelId;\n\t\t}\n\t\tif (settings.journalModelId !== undefined) {\n\t\t\tbody.journal_model_id = settings.journalModelId;\n\t\t}\n\t\tif (settings.summaryModelId !== undefined) {\n\t\t\tbody.summary_model_id = settings.summaryModelId;\n\t\t}\n\t\tif (settings.translateModelId !== undefined) {\n\t\t\tbody.translate_model_id = settings.translateModelId;\n\t\t}\n\t\tif (settings.maxConcurrentTasksPerReplica !== undefined) {\n\t\t\tbody.max_concurrent_tasks_per_replica =\n\t\t\t\tsettings.maxConcurrentTasksPerReplica;\n\t\t}\n\t\tif (settings.subagentsEnabled !== undefined) {\n\t\t\tbody.subagents_enabled = settings.subagentsEnabled;\n\t\t}\n\t\tif (settings.localizationTargets !== undefined) {\n\t\t\tbody.localization_targets = settings.localizationTargets;\n\t\t}\n\t\treturn this._post<SystemStatus>(\"/configuration/system/settings\", body);\n\t}\n\n\tasync getConfigurationStatus(): Promise<ConfigurationStatus> {\n\t\treturn this._get<ConfigurationStatus>(\"/configuration/status\");\n\t}\n\n\tasync setAgentModel(model: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/configuration/agent\",\n\t\t\t{ model_name: 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\"/configuration/orchestrator\",\n\t\t\t{ model_name: model },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getLLMBackendStatus(): Promise<LLMBackendStatus> {\n\t\treturn this._get<LLMBackendStatus>(\"/configuration/llmbackend/status\");\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\"/configuration/llmbackend/add\",\n\t\t\t{ backends: [{ url: host, api_key: apiKey }] },\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._post<Record<string, unknown>>(\n\t\t\t\"/configuration/llmbackend/remove\",\n\t\t\t{ host },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getMCPServerStatus(): Promise<MCPServerStatus> {\n\t\treturn this._get<MCPServerStatus>(\"/configuration/mcpserver/status\");\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\"/configuration/mcpserver/add\",\n\t\t\t{ servers: [{ url: host, api_key: apiKey }] },\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._post<Record<string, unknown>>(\n\t\t\t\"/configuration/mcpserver/remove\",\n\t\t\t{ 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>(\"/configuration/taskhandler/status\");\n\t}\n\n\tasync getTaskHandlerStatusLocal(): Promise<TaskHandlerStatusLocal> {\n\t\treturn this._get<TaskHandlerStatusLocal>(\n\t\t\t\"/configuration/taskhandler/status/local\",\n\t\t);\n\t}\n\n\tasync setConcurrentTasksPerReplica(\n\t\tmaxTasks: number,\n\t): Promise<SuccessResponse> {\n\t\tconst data = (await this._request(\n\t\t\t\"POST\",\n\t\t\t\"/configuration/taskhandler/concurrent-per-replica\",\n\t\t\t{ params: { max_tasks: maxTasks } },\n\t\t)) as Record<string, unknown>;\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync getSummaryWorkerStatus(): Promise<SummaryWorkerStatus> {\n\t\treturn this._get<SummaryWorkerStatus>(\n\t\t\t\"/configuration/summary-worker/status\",\n\t\t);\n\t}\n\n\tasync setCompactorModel(modelName: string): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/configuration/summary-worker/model\",\n\t\t\t{ model_name: modelName },\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\"/configuration/summary-worker/translate-model\",\n\t\t\t{ model_name: modelName },\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>(\"/configuration/token-worker/status\");\n\t}\n\n\tasync getSlotsStatus(): Promise<SlotsStatus> {\n\t\treturn this._get<SlotsStatus>(\"/configuration/slots/status\");\n\t}\n\n\tasync getSubagentsStatus(): Promise<SubagentsStatus> {\n\t\treturn this._get<SubagentsStatus>(\"/configuration/subagents/status\");\n\t}\n\n\tasync setSubagentsEnabled(enabled: boolean): Promise<SuccessResponse> {\n\t\tconst data = await this._post<Record<string, unknown>>(\n\t\t\t\"/configuration/subagents\",\n\t\t\t{ enabled },\n\t\t);\n\t\treturn { message: (data.message ?? \"\") as string };\n\t}\n\n\tasync reloadServices(): Promise<ReloadServicesResult> {\n\t\treturn this._post<ReloadServicesResult>(\"/configuration/reload\");\n\t}\n\n\tasync getReloadStatus(): Promise<ReloadStatus> {\n\t\treturn this._get<ReloadStatus>(\"/configuration/reload/status\");\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(\n\t\t\t\t`/task/stream_status?task_id=${encodeURIComponent(taskId)}`,\n\t\t\t),\n\t\t\t{ headers },\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, locale?: string) {\n\t\treturn runSync(this._async.getTaskStatus(taskId, locale));\n\t}\n\n\tsetTaskStatus(taskId: string, status: string) {\n\t\treturn runSync(this._async.setTaskStatus(taskId, status));\n\t}\n\n\tgetTaskConversation(\n\t\ttaskId: string,\n\t\tparams?: Parameters<OrchestratorAsync[\"getTaskConversation\"]>[1],\n\t) {\n\t\treturn runSync(this._async.getTaskConversation(taskId, params));\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(\n\t\tfile: File | Blob,\n\t\tfilename?: string,\n\t\toptions?: { signal?: AbortSignal },\n\t) {\n\t\treturn runSync(this._async.uploadAttachment(file, filename, options));\n\t}\n\n\tdownloadAttachment(attachmentId: string) {\n\t\treturn runSync(this._async.downloadAttachment(attachmentId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Interactive workflow\n\t// ------------------------------------------------------------------\n\n\tsendInteractiveMessage(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\tattachmentIds?: string[],\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.sendInteractiveMessage(taskId, message, attachmentIds),\n\t\t);\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, approved = true) {\n\t\treturn runSync(this._async.approveInteractiveAction(taskId, approved));\n\t}\n\n\tstopInteractive(taskId: string) {\n\t\treturn runSync(this._async.stopInteractive(taskId));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Proactive workflow\n\t// ------------------------------------------------------------------\n\n\tsendProactiveGuide(\n\t\ttaskId: string,\n\t\tmessage: string,\n\t\tattachmentIds?: string[],\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.sendProactiveGuide(taskId, message, attachmentIds),\n\t\t);\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, approved = true) {\n\t\treturn runSync(this._async.approveProactiveAction(taskId, approved));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Ticket workflow\n\t// ------------------------------------------------------------------\n\n\tsendTicketGuide(taskId: string, message: string, attachmentIds?: string[]) {\n\t\treturn runSync(this._async.sendTicketGuide(taskId, message, attachmentIds));\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, approved = true) {\n\t\treturn runSync(this._async.approveTicketAction(taskId, approved));\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, message: string, attachmentIds?: string[]) {\n\t\treturn runSync(\n\t\t\tthis._async.sendMatrixMessage(taskId, message, attachmentIds),\n\t\t);\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, approved = true) {\n\t\treturn runSync(this._async.approveMatrixAction(taskId, approved));\n\t}\n\n\tgetMatrixConversation(\n\t\ttaskId: string,\n\t\tphase?: number,\n\t\tincludeSummaries?: boolean,\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.getMatrixConversation(taskId, phase, includeSummaries),\n\t\t);\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\tmessage: string,\n\t\toptions?: { attachmentIds?: string[]; delegatedToken?: string },\n\t) {\n\t\treturn runSync(this._async.sendVSAMessage(taskId, message, 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(\n\t\tuserId: string,\n\t\tparams?: Parameters<OrchestratorAsync[\"listVSATasks\"]>[1],\n\t) {\n\t\treturn runSync(this._async.listVSATasks(userId, params));\n\t}\n\n\tsearchVSATasks(userId: string, query: string, limit?: number) {\n\t\treturn runSync(this._async.searchVSATasks(userId, query, limit));\n\t}\n\n\tdeleteVSATasksBulk(taskIds: string[]) {\n\t\treturn runSync(this._async.deleteVSATasksBulk(taskIds));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// MIO (self_managed) workflow\n\t// ------------------------------------------------------------------\n\n\tsendMioMessage(taskId: string, message: string, attachmentIds?: string[]) {\n\t\treturn runSync(this._async.sendMioMessage(taskId, message, attachmentIds));\n\t}\n\n\tapproveMioAction(taskId: string, approved = true, feedback?: string) {\n\t\treturn runSync(this._async.approveMioAction(taskId, approved, feedback));\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\tgetMioMemories(taskId: string, includeCommon?: boolean) {\n\t\treturn runSync(this._async.getMioMemories(taskId, includeCommon));\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Tools\n\t// ------------------------------------------------------------------\n\n\tlistTools() {\n\t\treturn runSync(this._async.listTools());\n\t}\n\n\tgetToolCatalog() {\n\t\treturn runSync(this._async.getToolCatalog());\n\t}\n\n\trefreshMCPTools() {\n\t\treturn runSync(this._async.refreshMCPTools());\n\t}\n\n\tvalidateToolCatalog() {\n\t\treturn runSync(this._async.validateToolCatalog());\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: { agentModelId?: string; orchestratorModelId?: string },\n\t) {\n\t\treturn runSync(this._async.updateTaskModels(taskId, models));\n\t}\n\n\tupdateTaskIteration(\n\t\ttaskId: string,\n\t\titeration?: number,\n\t\tmaxIterations?: number,\n\t) {\n\t\treturn runSync(\n\t\t\tthis._async.updateTaskIteration(taskId, iteration, maxIterations),\n\t\t);\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) {\n\t\treturn runSync(this._async.getMessageTranslations(taskId, messageId));\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, severity?: string[]) {\n\t\treturn runSync(this._async.countErrors(since, severity));\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\tgetSubagentsStatus() {\n\t\treturn runSync(this._async.getSubagentsStatus());\n\t}\n\n\tsetSubagentsEnabled(enabled: boolean) {\n\t\treturn runSync(this._async.setSubagentsEnabled(enabled));\n\t}\n\n\treloadServices() {\n\t\treturn runSync(this._async.reloadServices());\n\t}\n\n\tgetReloadStatus() {\n\t\treturn runSync(this._async.getReloadStatus());\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\";\nimport { deepCamelCase } from \"./utils.js\";\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\";\nexport const EVENT_TASK_BULK_DELETED = \"task_bulk_deleted\";\nexport const EVENT_TASK_WORKFLOW_DATA_CHANGED = \"task_workflow_data_changed\";\nexport const EVENT_ITERATION_REMINDER_ADDED = \"iteration_reminder_added\";\nexport const EVENT_MESSAGE_DELETED = \"message_deleted\";\nexport const EVENT_MESSAGE_UPDATED = \"message_updated\";\nexport const EVENT_APPROVAL_REQUESTED = \"approval_requested\";\nexport const EVENT_APPROVAL_PROVIDED = \"approval_provided\";\nexport const EVENT_HELP_REQUESTED = \"help_requested\";\nexport const EVENT_HELP_PROVIDED = \"help_provided\";\nexport const EVENT_USER_MESSAGE_ADDED = \"user_message_added\";\nexport const EVENT_MIO_MEMORY_CREATED = \"mio_memory_created\";\nexport const EVENT_MIO_MEMORY_UPDATED = \"mio_memory_updated\";\nexport const EVENT_MIO_MEMORY_DELETED = \"mio_memory_deleted\";\nexport const EVENT_LLM_BACKEND_CHANGED = \"llm_backend_changed\";\nexport const EVENT_MCP_SERVER_CHANGED = \"mcp_server_changed\";\nexport const EVENT_MODEL_CONFIG_CHANGED = \"model_config_changed\";\nexport const EVENT_TASK_HANDLER_STATUS_CHANGED = \"task_handler_status_changed\";\nexport const EVENT_SUMMARY_WORKER_STATUS = \"summary_worker_status\";\nexport const EVENT_TOKEN_WORKER_STATUS = \"token_worker_status\";\nexport const EVENT_TOKEN_COUNT_UPDATED = \"token_count_updated\";\nexport const EVENT_MESSAGES_ARCHIVED = \"messages_archived\";\nexport const EVENT_SUBPROCESS_STARTED = \"subprocess_started\";\nexport const EVENT_SUBPROCESS_COMPLETED = \"subprocess_completed\";\nexport const EVENT_SUBPROCESS_FAILED = \"subprocess_failed\";\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\t/**\n\t * Client identifier sent as the `client_id` query parameter at connection\n\t * time. The server uses this for logging/diagnostics.\n\t * Defaults to `\"orchestrator-client\"`.\n\t */\n\tclientId?: string;\n\t/**\n\t * Locale tag sent as the `locale` query parameter at connection time\n\t * (e.g. `\"hu-hu\"`, `\"en-us\"`). When set the server automatically joins\n\t * the client into the matching `locale:<tag>` room so translation-ready\n\t * events are delivered without a separate `subscribeLocale()` call.\n\t */\n\tlocale?: string;\n}\n\n/**\n * Socket.IO-based realtime client for receiving orchestrator events.\n *\n * The server wraps all domain events in a `message` Socket.IO event with an\n * inner `event_type` field. This client unwraps the envelope and dispatches\n * to registered handlers by event_type.\n *\n * ## Two subscription APIs — choose one or mix them:\n *\n * ### 1. Event-type handlers via `on(event, handler)`\n * Registers a callback for a specific event type string (e.g.\n * `\"task_status_changed\"`). You still need to join the relevant rooms\n * manually via `subscribeTask()`, `subscribeEvents()`, etc.\n *\n * ### 2. Room-scoped subscribers via `subscribe(handler, rooms)`\n * Mirrors the WebSocketProvider pattern used in the webui. Each call\n * returns an opaque subscription id. Calling `unsubscribe(id)` removes it.\n * Room membership is kept in sync automatically: the client joins the union\n * of all subscribers' rooms and leaves rooms that are no longer needed.\n * The handler receives the unwrapped event dict for every event from those\n * rooms, regardless of type.\n */\nexport class RealtimeClient {\n\tprivate _baseUrl: string;\n\tprivate _socketOptions: Record<string, unknown>;\n\tprivate _getToken?: (() => string | Promise<string>) | string;\n\tprivate _clientId: string;\n\tprivate _locale?: string;\n\tprivate _socket: SocketIOClient | null = null;\n\tprivate _handlers: Map<string, Set<EventHandler>> = new Map();\n\tprivate _connected = false;\n\n\t// Multi-subscriber room-diffing state (mirrors WebSocketProvider)\n\tprivate _subscriptions: Map<\n\t\tstring,\n\t\t{ handler: EventHandler; rooms: string[] }\n\t> = new Map();\n\tprivate _currentRooms: Set<string> = new Set();\n\tprivate _subIdCounter = 0;\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\t\tthis._clientId = opts.clientId ?? \"orchestrator-client\";\n\t\tthis._locale = opts.locale;\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\tconst query: Record<string, string> = { client_id: this._clientId };\n\t\tif (this._locale) {\n\t\t\tquery.locale = this._locale;\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\tquery,\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\t// Re-sync rooms after reconnect (server-side room membership is lost)\n\t\t\tthis._currentRooms = new Set();\n\t\t\tthis._syncRooms();\n\t\t});\n\n\t\tthis._socket.on(\"disconnect\", () => {\n\t\t\tthis._connected = false;\n\t\t\tthis._currentRooms = new Set();\n\t\t});\n\n\t\t// All domain events come wrapped in a `message` socket event with\n\t\t// an inner `event_type` field. Dispatch them to registered handlers.\n\t\tthis._socket.on(\"message\", (payload: unknown) => this._dispatch(payload));\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 * Dispatch a message envelope to registered handlers and subscribers.\n\t * The server sends: socket.emit(\"message\", {type: \"message\", event: {..., event_type: \"...\", ...}})\n\t *\n\t * All event payloads are deep-converted from snake_case to camelCase so\n\t * consumers receive consistent camelCase objects (same convention as the\n\t * REST responses from _request). The raw event_type string is extracted\n\t * before conversion so the handler-map lookup still works.\n\t */\n\tprivate _dispatch(payload: unknown): void {\n\t\tconst envelope = payload as Record<string, unknown>;\n\t\tconst rawEvent = (envelope.event ?? envelope) as Record<string, unknown>;\n\t\tconst eventType = rawEvent.event_type as string | undefined;\n\t\tif (!eventType) return;\n\n\t\tconst event = deepCamelCase(rawEvent) as Record<string, unknown>;\n\n\t\t// Dispatch to event-type handlers registered via on()\n\t\tconst handlers = this._handlers.get(eventType);\n\t\tif (handlers) {\n\t\t\tfor (const h of handlers) {\n\t\t\t\th(event);\n\t\t\t}\n\t\t}\n\n\t\t// Fan out to all room-scoped subscribers registered via subscribe()\n\t\tfor (const sub of this._subscriptions.values()) {\n\t\t\tsub.handler(event);\n\t\t}\n\t}\n\n\t/**\n\t * Subscribe to realtime events for a specific task.\n\t * Emits a `join` event with `{rooms: [\"task:{taskId}\"]}`.\n\t */\n\tsubscribeTask(taskId: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms: [`task:${taskId}`] });\n\t}\n\n\t/**\n\t * Unsubscribe from realtime events for a specific task.\n\t * Emits a `leave` event with `{rooms: [\"task:{taskId}\"]}`.\n\t */\n\tunsubscribeTask(taskId: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"leave\", { rooms: [`task:${taskId}`] });\n\t}\n\n\t/**\n\t * Subscribe to event-type-scoped rooms.\n\t * e.g. subscribeEvents(\"task_created\", \"task_deleted\")\n\t */\n\tsubscribeEvents(...eventTypes: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tconst rooms = eventTypes.map((t) => `event:${t}`);\n\t\tthis._socket.emit(\"join\", { rooms });\n\t}\n\n\t/**\n\t * Unsubscribe from event-type-scoped rooms.\n\t */\n\tunsubscribeEvents(...eventTypes: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tconst rooms = eventTypes.map((t) => `event:${t}`);\n\t\tthis._socket.emit(\"leave\", { rooms });\n\t}\n\n\t/**\n\t * Subscribe to the `all` broadcast room (receives all events).\n\t */\n\tsubscribeAll(): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms: [\"all\"] });\n\t}\n\n\t/**\n\t * Subscribe to a locale-specific room.\n\t */\n\tsubscribeLocale(locale: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms: [`locale:${locale}`] });\n\t}\n\n\t/**\n\t * Unsubscribe from a locale-specific room.\n\t */\n\tunsubscribeLocale(locale: string): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"leave\", { rooms: [`locale:${locale}`] });\n\t}\n\n\t/**\n\t * Join arbitrary rooms by name.\n\t */\n\tjoinRooms(rooms: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"join\", { rooms });\n\t}\n\n\t/**\n\t * Leave arbitrary rooms by name.\n\t */\n\tleaveRooms(rooms: string[]): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"leave\", { rooms });\n\t}\n\n\t// ------------------------------------------------------------------\n\t// Multi-subscriber API (mirrors WebSocketProvider room-diffing)\n\t// ------------------------------------------------------------------\n\n\t/**\n\t * Register a subscriber that receives all events from the given rooms.\n\t *\n\t * Room membership is managed automatically: the client joins the union\n\t * of all active subscribers' rooms and leaves rooms that are no longer\n\t * needed when the last subscriber referencing them is removed.\n\t *\n\t * The `handler` receives the unwrapped event dict (same object that\n\t * `on()` handlers receive).\n\t *\n\t * Returns an opaque subscription id that must be passed to\n\t * `unsubscribe()` to remove the subscription.\n\t *\n\t * Example — mirror the webui's per-component subscription pattern:\n\t *\n\t * const id = rt.subscribe((event) => {\n\t * if (event.event_type === \"task_status_changed\") { ... }\n\t * }, [`task:${taskId}`]);\n\t *\n\t * // later, on cleanup:\n\t * rt.unsubscribe(id);\n\t */\n\tsubscribe(handler: EventHandler, rooms: string[]): string {\n\t\tconst id = `sub_${++this._subIdCounter}`;\n\t\tthis._subscriptions.set(id, { handler, rooms });\n\t\tthis._syncRooms();\n\t\treturn id;\n\t}\n\n\t/**\n\t * Remove a subscription registered via `subscribe()`.\n\t *\n\t * Rooms that are no longer referenced by any remaining subscriber are\n\t * left automatically.\n\t */\n\tunsubscribe(id: string): void {\n\t\tthis._subscriptions.delete(id);\n\t\tthis._syncRooms();\n\t}\n\n\t/**\n\t * Diff the union of all subscribers' rooms against the currently joined\n\t * rooms and emit `join`/`leave` for the delta. No-ops when not connected.\n\t */\n\tprivate _syncRooms(): void {\n\t\tconst socket = this._socket;\n\t\tif (!socket?.connected) return;\n\n\t\tconst needed = new Set<string>();\n\t\tfor (const sub of this._subscriptions.values()) {\n\t\t\tfor (const r of sub.rooms) needed.add(r);\n\t\t}\n\n\t\tconst toJoin = [...needed].filter((r) => !this._currentRooms.has(r));\n\t\tconst toLeave = [...this._currentRooms].filter((r) => !needed.has(r));\n\n\t\tif (toJoin.length) socket.emit(\"join\", { rooms: toJoin });\n\t\tif (toLeave.length) socket.emit(\"leave\", { rooms: toLeave });\n\n\t\tthis._currentRooms = needed;\n\t}\n\n\t/**\n\t * Send a ping to the server.\n\t */\n\tping(): void {\n\t\tif (!this._socket) throw new Error(\"RealtimeClient not connected\");\n\t\tthis._socket.emit(\"ping\");\n\t}\n\n\t/**\n\t * Register a handler for a specific event type.\n\t *\n\t * Domain events (task_created, task_status_changed, etc.) are dispatched\n\t * via the message envelope. Raw socket events (connect, disconnect,\n\t * connection_established, rooms_updated, pong) are wired directly.\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// For raw socket events that arrive outside the message envelope,\n\t\t\t// also wire up a direct socket listener so they still fire.\n\t\t\tif (this._socket) {\n\t\t\t\tconst rawSocketEvents = new Set([\n\t\t\t\t\t\"connect\",\n\t\t\t\t\t\"disconnect\",\n\t\t\t\t\t\"connect_error\",\n\t\t\t\t\t\"connection_established\",\n\t\t\t\t\t\"rooms_updated\",\n\t\t\t\t\t\"pong\",\n\t\t\t\t]);\n\t\t\t\tif (rawSocketEvents.has(event)) {\n\t\t\t\t\tthis._socket.on(event, (...args: unknown[]) => {\n\t\t\t\t\t\tconst handlers = this._handlers.get(event);\n\t\t\t\t\t\tif (handlers) {\n\t\t\t\t\t\t\tfor (const h of handlers) {\n\t\t\t\t\t\t\t\th(...args);\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\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\tErrorEventListResult,\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\tLLMModelVisionInfo,\n\tLLMModelContextInfo,\n\tLLMBackendStatus,\n\tMCPServerInfo,\n\tMCPServerStatus,\n\tTaskHandlerReplica,\n\tTaskHandlerCluster,\n\tTaskHandlerStatus,\n\tTaskHandlerStatusLocal,\n\tSummaryWorkerStatus,\n\tTokenWorkerStatus,\n\tSlotInfo,\n\tSlotsStatus,\n\tConfigurationStatus,\n\tReloadServicesResult,\n\tReloadStatus,\n\tSubagentsStatus,\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\tMioMemoryItem,\n\tMioMemoriesResult,\n\tMessageDeleteMultipleResult,\n\tWorkflowStates,\n} from \"./models/workflow.js\";\nexport { snakeToCamel, camelToSnake, deepCamelCase } from \"./utils.js\";\n"],"mappings":"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","names":["handlers"]}