@miosa/sdk 1.2.26 → 1.2.28

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/http.ts","../src/resources/admin.ts","../src/resources/agent-run-groups.ts","../src/resources/agent-runtime-profiles.ts","../src/resources/agent-runs.ts","../src/resources/analytics.ts","../src/resources/api-keys.ts","../src/resources/audit-log.ts","../src/resources/benchmarks.ts","../src/resources/builder-sessions.ts","../src/resources/channels.ts","../src/resources/cloud.ts","../src/resources/command-center.ts","../src/resources/community.ts","../src/resources/completions.ts","../src/resources/checkpoints.ts","../src/resources/computer-auto-stop.ts","../src/resources/computer-env.ts","../src/resources/computer-logs.ts","../src/resources/computer-osa.ts","../src/resources/computer-ports.ts","../src/resources/computer-terminal.ts","../src/resources/computer-volumes.ts","../src/resources/connectors.ts","../src/resources/custom_domains.ts","../src/resources/desktop.ts","../src/resources/egressAudit.ts","../src/resources/egressNetwork.ts","../src/resources/egressSecrets.ts","../src/resources/events.ts","../src/resources/exec.ts","../src/resources/files.ts","../src/resources/network_policy.ts","../src/resources/computer.ts","../src/resources/computers.ts","../src/resources/credits.ts","../src/resources/cron-jobs.ts","../src/resources/dashboard.ts","../src/resources/databases.ts","../src/resources/deployments.ts","../src/resources/devices.ts","../src/resources/docker-deploy.ts","../src/resources/email.ts","../src/resources/embeddings.ts","../src/resources/external-keys.ts","../src/resources/flat-custom-domains.ts","../src/resources/functions.ts","../src/resources/health-checks.ts","../src/resources/integrations.ts","../src/resources/mcp.ts","../src/resources/models.ts","../src/resources/open-computers/agents.ts","../src/resources/open-computers/apps.ts","../src/resources/open-computers/clusters.ts","../src/resources/open-computers/desktop.ts","../src/resources/open-computers/files.ts","../src/resources/open-computers/hosts.ts","../src/resources/open-computers/jobs.ts","../src/resources/open-computers/secrets.ts","../src/resources/open-computers/terminal.ts","../src/resources/open-computers/tunnels.ts","../src/resources/open-computers/workspaces.ts","../src/resources/open-computers/index.ts","../src/resources/project-auth.ts","../src/resources/project-integrations.ts","../src/resources/provider-defaults.ts","../src/resources/regions.ts","../src/resources/runtime-env.ts","../src/resources/runtime-capabilities.ts","../src/resources/sandboxes.ts","../src/resources/sandbox-templates.ts","../src/resources/settings.ts","../src/resources/snapshots-standalone.ts","../src/resources/storage.ts","../src/resources/org-invites.ts","../src/resources/tenant.ts","../src/resources/templates.ts","../src/resources/usage.ts","../src/resources/volumes.ts","../src/resources/webhooks.ts","../src/resources/workspace-invites.ts","../src/resources/workspace-members.ts","../src/client.ts","../src/agent-builds.ts","../src/resources/app-auth.ts"],"names":["body","query","sleep","unwrap","workspaceId","stripUndefined","isTerminalStatus","unwrapList","pickFirst","listQuery","createWebSocket","window","listItems","idempotencyKey","randomUUID","queryFromListParams","Desktop","stripUndefObj","normalize","normalized","toBase64","DEFAULT_TIMEOUT","DEFAULT_MAX_RETRIES","spec"],"mappings":"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","file":"index.js","sourcesContent":["export interface MiosaErrorBody {\n error?: {\n code?: string;\n message?: string;\n details?: unknown;\n };\n message?: string;\n code?: string;\n}\n\nexport class MiosaError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details: unknown;\n readonly requestId: string | undefined;\n\n constructor(\n message: string,\n status: number,\n code: string,\n details?: unknown,\n requestId?: string,\n ) {\n super(message);\n this.name = \"MiosaError\";\n this.status = status;\n this.code = code;\n this.details = details;\n this.requestId = requestId;\n }\n\n static fromResponse(\n status: number,\n body: MiosaErrorBody,\n requestId?: string,\n ): MiosaError {\n const message = body.error?.message ?? body.message ?? `HTTP ${status}`;\n const code = body.error?.code ?? body.code ?? \"UNKNOWN_ERROR\";\n const details = body.error?.details;\n\n const connectError = connectErrorFromCode(code, message, status, details, requestId);\n if (connectError) return connectError;\n\n if (status === 401 || status === 403) {\n return new AuthError(message, status, code, details, requestId);\n }\n if (status === 404) {\n return new NotFoundError(message, code, details, requestId);\n }\n if (status === 429) {\n return new RateLimitError(message, details, requestId);\n }\n if (status === 402) {\n return new InsufficientCreditsError(message, details, requestId);\n }\n if (status >= 400 && status < 500) {\n return new ValidationError(message, status, code, details, requestId);\n }\n\n return new MiosaError(message, status, code, details, requestId);\n }\n}\n\nfunction connectErrorFromCode(\n code: string,\n message: string,\n status: number,\n details?: unknown,\n requestId?: string,\n): MiosaError | undefined {\n switch (code) {\n case \"PROJECT_NOT_LINKED\":\n return new ProjectNotLinkedError(message, status, details, requestId);\n case \"SUBJECT_NOT_ALLOWED\":\n return new SubjectNotAllowedError(message, status, details, requestId);\n case \"SCOPE_NOT_ALLOWED\":\n return new ScopeNotAllowedError(message, status, details, requestId);\n case \"MANAGED_PROVIDER_BINDING_ONLY\":\n return new ManagedProviderBindingOnlyError(message, status, details, requestId);\n case \"INSTALLATION_REQUIRED\":\n return new InstallationRequiredError(message, status, details, requestId);\n case \"USER_AUTHORIZATION_REQUIRED\":\n return new UserAuthorizationRequiredError(message, status, details, requestId);\n case \"EGRESS_HOST_NOT_ALLOWED\":\n return new EgressHostNotAllowedError(message, status, details, requestId);\n case \"TOKEN_REFRESH_FAILED\":\n return new TokenRefreshFailedError(message, status, details, requestId);\n default:\n return undefined;\n }\n}\n\nexport class AuthError extends MiosaError {\n constructor(\n message: string,\n status: number = 401,\n code: string = \"UNAUTHORIZED\",\n details?: unknown,\n requestId?: string,\n ) {\n super(message, status, code, details, requestId);\n this.name = \"AuthError\";\n }\n}\n\nexport class NotFoundError extends MiosaError {\n constructor(\n message: string,\n code: string = \"NOT_FOUND\",\n details?: unknown,\n requestId?: string,\n ) {\n super(message, 404, code, details, requestId);\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends MiosaError {\n readonly retryAfter: number | undefined;\n\n constructor(\n message: string,\n details?: unknown,\n requestId?: string,\n retryAfter?: number,\n ) {\n super(message, 429, \"RATE_LIMITED\", details, requestId);\n this.name = \"RateLimitError\";\n this.retryAfter = retryAfter;\n }\n}\n\nexport class InsufficientCreditsError extends MiosaError {\n constructor(message: string, details?: unknown, requestId?: string) {\n super(message, 402, \"INSUFFICIENT_CREDITS\", details, requestId);\n this.name = \"InsufficientCreditsError\";\n }\n}\n\nexport class ValidationError extends MiosaError {\n constructor(\n message: string,\n status: number,\n code: string = \"VALIDATION_ERROR\",\n details?: unknown,\n requestId?: string,\n ) {\n super(message, status, code, details, requestId);\n this.name = \"ValidationError\";\n }\n}\n\nexport class TimeoutError extends MiosaError {\n constructor(message: string = \"Request timed out\") {\n super(message, 408, \"TIMEOUT\");\n this.name = \"TimeoutError\";\n }\n}\n\nexport class NetworkError extends MiosaError {\n readonly cause: Error;\n\n constructor(message: string, cause: Error) {\n super(message, 0, \"NETWORK_ERROR\");\n this.name = \"NetworkError\";\n this.cause = cause;\n }\n}\n\nexport class ProjectNotLinkedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"PROJECT_NOT_LINKED\", details, requestId);\n this.name = \"ProjectNotLinkedError\";\n }\n}\n\nexport class SubjectNotAllowedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"SUBJECT_NOT_ALLOWED\", details, requestId);\n this.name = \"SubjectNotAllowedError\";\n }\n}\n\nexport class ScopeNotAllowedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"SCOPE_NOT_ALLOWED\", details, requestId);\n this.name = \"ScopeNotAllowedError\";\n }\n}\n\nexport class ManagedProviderBindingOnlyError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"MANAGED_PROVIDER_BINDING_ONLY\", details, requestId);\n this.name = \"ManagedProviderBindingOnlyError\";\n }\n}\n\nexport class InstallationRequiredError extends MiosaError {\n constructor(message: string, status = 409, details?: unknown, requestId?: string) {\n super(message, status, \"INSTALLATION_REQUIRED\", details, requestId);\n this.name = \"InstallationRequiredError\";\n }\n}\n\nexport class UserAuthorizationRequiredError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"USER_AUTHORIZATION_REQUIRED\", details, requestId);\n this.name = \"UserAuthorizationRequiredError\";\n }\n}\n\nexport class EgressHostNotAllowedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"EGRESS_HOST_NOT_ALLOWED\", details, requestId);\n this.name = \"EgressHostNotAllowedError\";\n }\n}\n\nexport class TokenRefreshFailedError extends MiosaError {\n constructor(message: string, status = 502, details?: unknown, requestId?: string) {\n super(message, status, \"TOKEN_REFRESH_FAILED\", details, requestId);\n this.name = \"TokenRefreshFailedError\";\n }\n}\n","import { MiosaError, NetworkError, TimeoutError } from \"./errors.js\";\nimport type { MiosaErrorBody } from \"./errors.js\";\n\n// ─── Transport tuning ─────────────────────────────────────────────────────────\n//\n// Node's built-in ``fetch`` is backed by undici and already reuses connections\n// via HTTP/1.1 keep-alive. We additionally try to install a custom undici\n// ``Agent`` with HTTP/2 enabled so sequential calls can multiplex on a single\n// TLS session and skip the per-call handshake tax (~80-150 ms cold,\n// ~20-40 ms warm).\n//\n// undici is an optional dependency: when not installed, we fall back to the\n// default fetch dispatcher (still pooled, just HTTP/1.1).\n\ninterface UndiciAgentOptions {\n keepAliveTimeout?: number;\n keepAliveMaxTimeout?: number;\n allowH2?: boolean;\n connections?: number;\n}\n\ninterface UndiciModule {\n Agent: new (opts: UndiciAgentOptions) => unknown;\n setGlobalDispatcher: (dispatcher: unknown) => void;\n}\n\nlet _h2Configured = false;\nlet _h2Available = false;\nlet _agentSingleton: unknown = null;\n\nasync function ensureHttp2Agent(): Promise<void> {\n if (_h2Configured) return;\n _h2Configured = true;\n try {\n // Indirection through a variable specifier prevents TypeScript from\n // trying to resolve the optional ``undici`` module at compile time.\n const undiciSpecifier = \"undici\";\n const undici = (await import(\n /* @vite-ignore */ undiciSpecifier\n )) as unknown as UndiciModule;\n const agent = new undici.Agent({\n keepAliveTimeout: 60_000,\n keepAliveMaxTimeout: 600_000,\n allowH2: true,\n connections: 20,\n });\n undici.setGlobalDispatcher(agent);\n _agentSingleton = agent;\n _h2Available = true;\n } catch {\n // undici not installed (e.g. browser bundle, or user opted out).\n // Fall back to native fetch's default keep-alive pool.\n _h2Available = false;\n }\n}\n\n// Fire-and-forget at module load. Subsequent fetch() calls will pick up the\n// configured dispatcher. Tests can re-import and observe ``isHttp2Configured``.\nconst _h2Bootstrap = ensureHttp2Agent();\n\n/** Exposed for tests — resolves after the HTTP/2 agent setup completes. */\nexport function whenTransportReady(): Promise<void> {\n return _h2Bootstrap;\n}\n\n/** Exposed for tests — true iff undici with allowH2 was installed. */\nexport function isHttp2Available(): boolean {\n return _h2Available;\n}\n\n/** Exposed for tests — the cached undici Agent (or null). */\nexport function getDispatcher(): unknown {\n return _agentSingleton;\n}\n\nexport interface RequestOptions {\n method?: string;\n headers?: Record<string, string>;\n body?: unknown;\n timeout?: number;\n /** Return raw Response instead of parsing JSON */\n rawResponse?: boolean;\n /** Send body as multipart/form-data */\n formData?: FormData;\n /** Expected response is binary */\n binary?: boolean;\n}\n\nexport interface HttpClientConfig {\n baseUrl: string;\n apiKey: string;\n timeout: number;\n maxRetries: number;\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst RETRY_STATUS = new Set([429, 500, 502, 503, 504]);\nconst BASE_DELAY_MS = 500;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction retryDelay(attempt: number, retryAfterHeader: string | null): number {\n if (retryAfterHeader !== null) {\n const seconds = parseInt(retryAfterHeader, 10);\n if (!isNaN(seconds)) return seconds * 1000;\n }\n return BASE_DELAY_MS * 2 ** attempt + Math.random() * 100;\n}\n\nexport class HttpClient {\n /** Public for WebSocket clients that need to derive their own URL. */\n readonly baseUrl: string;\n /** Public for WebSocket clients that need to send the same auth. */\n readonly apiKey: string;\n private readonly timeout: number;\n private readonly maxRetries: number;\n\n constructor(config: HttpClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n this.apiKey = config.apiKey;\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n\n private baseHeaders(extra?: Record<string, string>): Record<string, string> {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: \"application/json\",\n \"User-Agent\": \"@miosa/sdk/1.0.0\",\n ...extra,\n };\n }\n\n async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const {\n method = \"GET\",\n body,\n formData,\n binary = false,\n timeout = this.timeout,\n } = options;\n\n let headers = this.baseHeaders(options.headers);\n\n let fetchBody: BodyInit | undefined;\n if (formData) {\n fetchBody = formData;\n // Let fetch set Content-Type with boundary for multipart\n } else if (body !== undefined) {\n headers = { ...headers, \"Content-Type\": \"application/json\" };\n fetchBody = JSON.stringify(body);\n }\n\n let lastError: MiosaError | undefined;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(this.buildUrl(path), {\n method,\n headers,\n // exactOptionalPropertyTypes requires null, not undefined, for body\n body: fetchBody ?? null,\n signal: controller.signal,\n });\n\n clearTimeout(timer);\n\n if (!response.ok) {\n const requestId = response.headers.get(\"x-request-id\") ?? undefined;\n const retryAfter = response.headers.get(\"retry-after\");\n\n let errorBody: MiosaErrorBody = {};\n try {\n errorBody = (await response.json()) as MiosaErrorBody;\n } catch {\n // body may not be JSON on 5xx errors\n }\n\n const error = MiosaError.fromResponse(\n response.status,\n errorBody,\n requestId,\n );\n\n if (RETRY_STATUS.has(response.status) && attempt < this.maxRetries) {\n lastError = error;\n await sleep(retryDelay(attempt, retryAfter));\n continue;\n }\n\n throw error;\n }\n\n if (binary) {\n const buffer = await response.arrayBuffer();\n return new Uint8Array(buffer) as unknown as T;\n }\n\n // 204 No Content\n if (response.status === 204) {\n return undefined as unknown as T;\n }\n\n return (await response.json()) as T;\n } catch (err) {\n clearTimeout(timer);\n\n if (err instanceof MiosaError) {\n throw err;\n }\n\n if (err instanceof DOMException && err.name === \"AbortError\") {\n throw new TimeoutError(\n `Request to ${path} timed out after ${timeout}ms`,\n );\n }\n\n if (err instanceof TypeError) {\n const networkErr = new NetworkError(\n `Network error reaching ${path}: ${err.message}`,\n err,\n );\n if (attempt < this.maxRetries) {\n lastError = networkErr;\n await sleep(retryDelay(attempt, null));\n continue;\n }\n throw networkErr;\n }\n\n throw err;\n }\n }\n\n // Exhausted retries\n throw (\n lastError ??\n new MiosaError(\"Max retries exceeded\", 0, \"MAX_RETRIES_EXCEEDED\")\n );\n }\n\n async get<T>(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n let fullPath = path;\n if (query) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined && v !== null) params.set(k, String(v));\n }\n const qs = params.toString();\n if (qs) fullPath = `${path}${path.includes(\"?\") ? \"&\" : \"?\"}${qs}`;\n }\n return this.request<T>(fullPath, { method: \"GET\" });\n }\n\n async post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"POST\", body });\n }\n\n async patch<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PATCH\", body });\n }\n\n async put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PUT\", body });\n }\n\n async delete<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"DELETE\", body });\n }\n\n async getBinary(path: string): Promise<Uint8Array> {\n return this.request<Uint8Array>(path, { method: \"GET\", binary: true });\n }\n\n async postFormData<T>(path: string, formData: FormData): Promise<T> {\n return this.request<T>(path, { method: \"POST\", formData });\n }\n\n /**\n * Open a Server-Sent Events stream. Returns an AsyncIterableIterator of\n * parsed event data objects. The caller is responsible for breaking the loop.\n */\n async *stream<T>(\n path: string,\n options: RequestOptions = {},\n ): AsyncIterableIterator<T> {\n const method = options.method ?? \"GET\";\n let headers = this.baseHeaders({\n Accept: \"text/event-stream\",\n ...options.headers,\n });\n let body: BodyInit | null = null;\n if (options.body !== undefined) {\n headers = { ...headers, \"Content-Type\": \"application/json\" };\n body = JSON.stringify(options.body);\n }\n\n const controller = new AbortController();\n\n let response: Response;\n try {\n response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n } catch (err) {\n if (err instanceof TypeError) {\n throw new NetworkError(\n `Network error opening SSE stream: ${err.message}`,\n err,\n );\n }\n throw err;\n }\n\n if (!response.ok) {\n let errorBody: MiosaErrorBody = {};\n try {\n errorBody = (await response.json()) as MiosaErrorBody;\n } catch {\n // ignore\n }\n throw MiosaError.fromResponse(\n response.status,\n errorBody,\n response.headers.get(\"x-request-id\") ?? undefined,\n );\n }\n\n if (!response.body) {\n throw new MiosaError(\"SSE stream has no body\", 0, \"NO_STREAM_BODY\");\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n const raw = line.slice(5).trim();\n if (raw === \"[DONE]\" || raw === \"\") continue;\n try {\n yield JSON.parse(raw) as T;\n } catch {\n // skip malformed SSE data lines\n }\n }\n }\n }\n } finally {\n controller.abort();\n reader.releaseLock();\n }\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype Json = Record<string, unknown>;\ntype Query = Record<string, string | number | boolean | undefined>;\n\nfunction withDefined<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v !== undefined && v !== null) out[k] = v;\n }\n return out as Partial<T>;\n}\n\nexport interface ListAdminUsersParams {\n limit?: number;\n cursor?: string;\n q?: string;\n status?: \"active\" | \"suspended\" | \"deleted\";\n}\n\nexport interface ListAdminTenantsParams {\n limit?: number;\n cursor?: string;\n q?: string;\n}\n\nexport interface ListAdminComputersParams {\n limit?: number;\n cursor?: string;\n status?:\n | \"creating\"\n | \"provisioning\"\n | \"running\"\n | \"stopped\"\n | \"paused\"\n | \"error\";\n tenantId?: string;\n}\n\nexport interface ListAdminApiKeysParams {\n limit?: number;\n cursor?: string;\n tenantId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n}\n\nexport interface CreateAdminApiKeyParams {\n name: string;\n tenantId: string;\n userId: string;\n keyType?: \"user\" | \"admin\" | \"platform\";\n purpose?: \"api\" | \"optimal\";\n rateLimitRpm?: number;\n expiresAt?: string;\n allowedIps?: string[];\n}\n\nexport interface BulkUserActionParams {\n userIds: string[];\n action: \"suspend\" | \"unsuspend\" | \"delete\" | \"tag\" | \"notify\";\n params?: Json;\n}\n\n/**\n * Admin surface — `/api/v1/admin/*` endpoints.\n *\n * Requires a `msk_a_*` or `msk_p_*` API key, or an admin JWT. Calls from\n * a user-role credential return 403 Forbidden.\n */\nexport class Admin {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** Escape hatch — call any admin endpoint by method + path. */\n async request<T = Json>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n path: string,\n body?: unknown,\n query?: Query,\n ): Promise<T> {\n const fullPath = query\n ? (() => {\n const qs = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined) qs.set(k, String(v));\n }\n const s = qs.toString();\n return s ? `${path}?${s}` : path;\n })()\n : path;\n // Route via the low-level method helpers so retries/backoff still apply.\n switch (method) {\n case \"GET\":\n return this.http.get<T>(fullPath);\n case \"POST\":\n return this.http.post<T>(fullPath, body);\n case \"PUT\":\n return this.http.put<T>(fullPath, body);\n case \"PATCH\":\n return this.http.patch<T>(fullPath, body);\n case \"DELETE\":\n return this.http.delete<T>(fullPath, body);\n }\n }\n\n // ── Overview ────────────────────────────────────────────────\n\n dashboard(): Promise<Json> {\n return this.http.get(\"/admin/dashboard\");\n }\n stats(): Promise<Json> {\n return this.http.get(\"/admin/stats\");\n }\n auditLog(params?: { limit?: number; cursor?: string }): Promise<Json> {\n return this.http.get(\"/admin/audit-log\", {\n limit: params?.limit,\n cursor: params?.cursor,\n });\n }\n detailedHealth(): Promise<Json> {\n return this.http.get(\"/admin/health/detailed\");\n }\n\n // ── Credits ─────────────────────────────────────────────────\n\n grantCredits(params: {\n tenantId: string;\n amount: number;\n description: string;\n expiresAt?: string;\n }): Promise<Json> {\n return this.http.post(\n \"/admin/credits/grant\",\n withDefined({\n tenant_id: params.tenantId,\n amount: params.amount,\n description: params.description,\n expires_at: params.expiresAt,\n }),\n );\n }\n deductCredits(params: {\n tenantId: string;\n amount: number;\n description: string;\n }): Promise<Json> {\n return this.http.post(\"/admin/credits/deduct\", {\n tenant_id: params.tenantId,\n amount: params.amount,\n description: params.description,\n });\n }\n refundCredits(params: {\n tenantId: string;\n amount: number;\n description: string;\n transactionId?: string;\n }): Promise<Json> {\n return this.http.post(\n \"/admin/credits/refund\",\n withDefined({\n tenant_id: params.tenantId,\n amount: params.amount,\n description: params.description,\n transaction_id: params.transactionId,\n }),\n );\n }\n tenantBalance(tenantId: string): Promise<Json> {\n return this.http.get(`/admin/credits/${tenantId}/balance`);\n }\n tenantCreditHistory(\n tenantId: string,\n params?: { limit?: number; cursor?: string },\n ): Promise<Json> {\n return this.http.get(`/admin/credits/${tenantId}/history`, {\n limit: params?.limit,\n cursor: params?.cursor,\n });\n }\n\n // ── Users ───────────────────────────────────────────────────\n\n listUsers(params?: ListAdminUsersParams): Promise<Json> {\n return this.http.get(\"/admin/users\", {\n limit: params?.limit,\n cursor: params?.cursor,\n q: params?.q,\n status: params?.status,\n });\n }\n getUser(userId: string): Promise<Json> {\n return this.http.get(`/admin/users/${userId}`);\n }\n updateUser(userId: string, attrs: Json): Promise<Json> {\n return this.http.put(`/admin/users/${userId}`, attrs);\n }\n deleteUser(userId: string): Promise<Json> {\n return this.http.delete(`/admin/users/${userId}`);\n }\n changeUserRole(\n userId: string,\n role: \"user\" | \"admin\" | \"owner\" | \"super_admin\",\n ): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/role`, { role });\n }\n forceLogout(userId: string): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/force-logout`);\n }\n suspendUser(userId: string, reason?: string): Promise<Json> {\n return this.http.post(\n `/admin/users/${userId}/suspend`,\n reason ? { reason } : undefined,\n );\n }\n unsuspendUser(userId: string): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/unsuspend`);\n }\n banUser(userId: string, reason: string, expiresAt?: string): Promise<Json> {\n return this.http.post(\n `/admin/users/${userId}/ban`,\n withDefined({ reason, expires_at: expiresAt }),\n );\n }\n unbanUser(userId: string): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/unban`);\n }\n bulkUserAction(params: BulkUserActionParams): Promise<Json> {\n return this.http.post(\n \"/admin/users/bulk\",\n withDefined({\n user_ids: params.userIds,\n action: params.action,\n params: params.params,\n }),\n );\n }\n\n // ── Tenants ─────────────────────────────────────────────────\n\n listTenants(params?: ListAdminTenantsParams): Promise<Json> {\n return this.http.get(\"/admin/tenants\", {\n limit: params?.limit,\n cursor: params?.cursor,\n q: params?.q,\n });\n }\n tenantDetail(tenantId: string): Promise<Json> {\n return this.http.get(`/admin/tenants/${tenantId}/detail`);\n }\n suspendTenant(tenantId: string, reason?: string): Promise<Json> {\n return this.http.post(\n `/admin/tenants/${tenantId}/suspend`,\n reason ? { reason } : undefined,\n );\n }\n unsuspendTenant(tenantId: string): Promise<Json> {\n return this.http.post(`/admin/tenants/${tenantId}/unsuspend`);\n }\n changeTenantPlan(\n tenantId: string,\n plan: \"free\" | \"starter\" | \"pro\" | \"scale\",\n prorate = true,\n ): Promise<Json> {\n return this.http.post(`/admin/tenants/${tenantId}/plan`, { plan, prorate });\n }\n deleteTenant(tenantId: string): Promise<Json> {\n return this.http.delete(`/admin/tenants/${tenantId}`);\n }\n\n // ── Computers ───────────────────────────────────────────────\n\n listComputers(params?: ListAdminComputersParams): Promise<Json> {\n return this.http.get(\"/admin/computers\", {\n limit: params?.limit,\n cursor: params?.cursor,\n status: params?.status,\n tenant_id: params?.tenantId,\n });\n }\n deleteComputer(computerId: string): Promise<Json> {\n return this.http.delete(`/admin/computers/${computerId}`);\n }\n suspendComputer(computerId: string): Promise<Json> {\n return this.http.post(`/admin/computers/${computerId}/suspend`);\n }\n resumeComputer(computerId: string): Promise<Json> {\n return this.http.post(`/admin/computers/${computerId}/resume`);\n }\n restartComputer(computerId: string): Promise<Json> {\n return this.http.post(`/admin/computers/${computerId}/restart`);\n }\n purgeStaleComputers(): Promise<Json> {\n return this.http.post(\"/admin/computers/purge-stale\");\n }\n\n // ── API Keys ────────────────────────────────────────────────\n\n listApiKeys(params?: ListAdminApiKeysParams): Promise<Json> {\n return this.http.get(\"/admin/api-keys\", {\n limit: params?.limit,\n cursor: params?.cursor,\n tenant_id: params?.tenantId,\n status: params?.status,\n });\n }\n createApiKey(params: CreateAdminApiKeyParams): Promise<Json> {\n return this.http.post(\n \"/admin/api-keys\",\n withDefined({\n name: params.name,\n tenant_id: params.tenantId,\n user_id: params.userId,\n key_type: params.keyType ?? \"user\",\n purpose: params.purpose ?? \"api\",\n rate_limit_rpm: params.rateLimitRpm,\n expires_at: params.expiresAt,\n allowed_ips: params.allowedIps,\n }),\n );\n }\n apiKeyStats(): Promise<Json> {\n return this.http.get(\"/admin/api-keys/stats\");\n }\n bulkRevokeApiKeys(keyIds: string[]): Promise<Json> {\n return this.http.post(\"/admin/api-keys/bulk-revoke\", { key_ids: keyIds });\n }\n revokeApiKey(keyId: string): Promise<Json> {\n return this.http.delete(`/admin/api-keys/${keyId}`);\n }\n\n // ── Optimal ─────────────────────────────────────────────────\n\n optimalStatus(): Promise<Json> {\n return this.http.get(\"/admin/optimal/status\");\n }\n listOptimalModels(): Promise<Json> {\n return this.http.get(\"/admin/optimal/models\");\n }\n switchOptimalModel(modelId: string): Promise<Json> {\n return this.http.post(\"/admin/optimal/models/switch\", {\n model_id: modelId,\n });\n }\n\n /** POST /api/v1/admin/impersonate — returns {token, expires_at}. */\n impersonate(\n externalUserId: string,\n options: { ttlSec?: number } = {},\n ): Promise<{ token: string; expires_at: string }> {\n return this.http.post(\"/admin/impersonate\", {\n external_user_id: externalUserId,\n ttl_sec: options.ttlSec ?? 3600,\n });\n }\n}\n","import type { AgentRun, AgentRunArtifact, AgentRunCreateParams } from \"./agent-runs.js\";\nimport type { HttpClient } from \"../http.js\";\n\nexport type AgentRunGroupStatus = \"running\" | \"succeeded\" | \"failed\" | \"canceled\";\n\nexport interface AgentRunGroupCounts {\n total: number;\n running: number;\n succeeded: number;\n failed: number;\n canceled: number;\n}\n\nexport interface AgentRunGroupEntryCounts extends AgentRunGroupCounts {\n queued: number;\n}\n\nexport type AgentRunGroupEntryStatus =\n | \"queued\"\n | \"running\"\n | \"succeeded\"\n | \"failed\"\n | \"canceled\";\n\nexport interface AgentRunGroupEntry {\n id: string;\n agent_run_group_id: string;\n agent_run_id?: string;\n index: number;\n status: AgentRunGroupEntryStatus;\n attempts?: number;\n error?: Record<string, unknown>;\n queued_at?: string;\n claimed_at?: string;\n finished_at?: string;\n updated_at?: string;\n}\n\nexport interface AgentRunGroup {\n id: string;\n tenant_id?: string;\n user_id?: string;\n workspace_id?: string;\n project_id?: string;\n name: string;\n description?: string;\n status: AgentRunGroupStatus;\n concurrency_limit?: number;\n expected_runs?: number;\n counts?: AgentRunGroupCounts;\n entry_counts?: AgentRunGroupEntryCounts;\n metadata?: Record<string, unknown>;\n started_at?: string;\n finished_at?: string;\n created_at?: string;\n updated_at?: string;\n runs?: AgentRun[];\n [key: string]: unknown;\n}\n\nexport interface AgentRunGroupCreateParams {\n name: string;\n description?: string;\n workspaceId?: string;\n projectId?: string;\n concurrencyLimit?: number;\n expectedRuns?: number;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRunGroupListParams {\n workspaceId?: string;\n projectId?: string;\n status?: AgentRunGroupStatus | string;\n limit?: number;\n}\n\nexport type AgentRunGroupDispatchEntry = AgentRunCreateParams & {\n targetId?: string;\n sandboxId?: string;\n computerId?: string;\n};\n\nexport interface AgentRunGroupDispatchResult {\n group: AgentRunGroup;\n results?: Array<\n | { index: number; ok: true; run: AgentRun }\n | { index: number; ok: false; error: Record<string, unknown> }\n >;\n entries?: AgentRunGroupEntry[];\n}\n\nexport interface AgentRunGroupDispatchOptions {\n async?: boolean;\n}\n\nexport interface AgentRunGroupWaitOptions {\n timeoutMs?: number;\n pollIntervalMs?: number;\n terminalStatuses?: string[];\n includeRuns?: boolean;\n}\n\nexport interface AgentRunGroupEvent {\n id: string;\n agent_run_group_id?: string;\n agent_run_id?: string;\n sequence?: number;\n type: string;\n message?: string | null;\n payload?: Record<string, unknown>;\n created_at?: string | null;\n [key: string]: unknown;\n}\n\nexport type AgentRunGroupArtifact = AgentRunArtifact & {\n agent_run_id: string;\n};\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction artifactRows(raw: unknown): AgentRunArtifact[] {\n const data = unwrap<\n AgentRunArtifact[] | { artifacts?: AgentRunArtifact[]; items?: AgentRunArtifact[] }\n >(raw);\n if (Array.isArray(data)) return data;\n return data.artifacts ?? data.items ?? [];\n}\n\nfunction stripUndefined(input: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction body(params: AgentRunGroupCreateParams): Record<string, unknown> {\n return stripUndefined({\n name: params.name,\n description: params.description,\n workspace_id: params.workspaceId,\n project_id: params.projectId,\n concurrency_limit: params.concurrencyLimit,\n expected_runs: params.expectedRuns,\n metadata: params.metadata,\n });\n}\n\nfunction runBody(entry: AgentRunGroupDispatchEntry): Record<string, unknown> {\n return stripUndefined({\n prompt: entry.prompt,\n target_kind: entry.targetKind,\n target_id: entry.targetId,\n sandbox_id: entry.sandboxId,\n computer_id: entry.computerId,\n provider: entry.provider,\n model: entry.model,\n command: entry.command,\n runtime_command: entry.runtimeCommand,\n cwd: entry.cwd,\n timeout: entry.timeout,\n env: entry.env,\n agent_runtime_profile_id: entry.agentRuntimeProfileId,\n agent_profile_id: entry.agentProfileId,\n parent_agent_run_id: entry.parentAgentRunId,\n orchestration_role: entry.orchestrationRole,\n skip_agent_runtime_profile: entry.skipAgentRuntimeProfile,\n execution_packet: entry.executionPacket,\n output_contract: entry.outputContract,\n approval_policy: entry.approvalPolicy,\n capability_requirements: entry.capabilityRequirements,\n metadata: entry.metadata,\n });\n}\n\nfunction isTerminalStatus(status: unknown, terminalStatuses: string[]): boolean {\n return typeof status === \"string\" && terminalStatuses.includes(status.toLowerCase());\n}\n\nfunction sleep(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport class AgentRunGroups {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: AgentRunGroupListParams = {}): Promise<AgentRunGroup[]> {\n const response = await this.http.get<unknown>(\n \"/agent-run-groups\",\n stripUndefined({\n workspace_id: params.workspaceId,\n project_id: params.projectId,\n status: params.status,\n limit: params.limit,\n }) as Record<string, string | number | boolean | undefined>,\n );\n const data = unwrap<AgentRunGroup[] | { groups?: AgentRunGroup[]; items?: AgentRunGroup[] }>(\n response,\n );\n if (Array.isArray(data)) return data;\n return data.groups ?? data.items ?? [];\n }\n\n async create(params: AgentRunGroupCreateParams): Promise<AgentRunGroup> {\n return unwrap<AgentRunGroup>(\n await this.http.post<unknown>(\"/agent-run-groups\", body(params)),\n );\n }\n\n async get(id: string, options: { includeRuns?: boolean } = {}): Promise<AgentRunGroup> {\n const query = options.includeRuns ? \"?include=runs\" : \"\";\n return unwrap<AgentRunGroup>(\n await this.http.get<unknown>(`/agent-run-groups/${encodeURIComponent(id)}${query}`),\n );\n }\n\n async dispatch(\n id: string,\n runs: AgentRunGroupDispatchEntry[],\n options: AgentRunGroupDispatchOptions = {},\n ): Promise<AgentRunGroupDispatchResult> {\n return unwrap<AgentRunGroupDispatchResult>(\n await this.http.post<unknown>(\n `/agent-run-groups/${encodeURIComponent(id)}/dispatch`,\n stripUndefined({ runs: runs.map(runBody), async: options.async }),\n ),\n );\n }\n\n async cancel(id: string): Promise<AgentRunGroup> {\n return unwrap<AgentRunGroup>(\n await this.http.post<unknown>(\n `/agent-run-groups/${encodeURIComponent(id)}/cancel`,\n {},\n ),\n );\n }\n\n async events(id: string): Promise<AgentRunGroupEvent[]> {\n const data = unwrap<\n AgentRunGroupEvent[] | { events?: AgentRunGroupEvent[]; items?: AgentRunGroupEvent[] }\n >(\n await this.http.get<unknown>(\n `/agent-run-groups/${encodeURIComponent(id)}/events`,\n ),\n );\n if (Array.isArray(data)) return data;\n return data.events ?? data.items ?? [];\n }\n\n streamEvents(id: string): AsyncIterableIterator<AgentRunGroupEvent> {\n return this.http.stream<AgentRunGroupEvent>(\n `/agent-run-groups/${encodeURIComponent(id)}/events`,\n );\n }\n\n async artifacts(id: string): Promise<AgentRunGroupArtifact[]> {\n const group = await this.get(id, { includeRuns: true });\n const runs = (group.runs ?? []).filter((run) => Boolean(run.id));\n const nested = await Promise.all(\n runs.map(async (run) => {\n const artifacts = artifactRows(\n await this.http.get<unknown>(\n `/agent-runs/${encodeURIComponent(run.id)}/artifacts`,\n ),\n );\n return artifacts.map((artifact) => ({\n ...artifact,\n agent_run_id: artifact.agent_run_id ?? run.id,\n }));\n }),\n );\n return nested.flat() as AgentRunGroupArtifact[];\n }\n\n async waitForCompletion(\n id: string,\n options: AgentRunGroupWaitOptions = {},\n ): Promise<AgentRunGroup> {\n const timeoutMs = options.timeoutMs ?? 15 * 60 * 1000;\n const pollIntervalMs = options.pollIntervalMs ?? 2000;\n const terminalStatuses = options.terminalStatuses ?? [\n \"succeeded\",\n \"failed\",\n \"canceled\",\n \"cancelled\",\n ];\n const deadline = Date.now() + timeoutMs;\n\n while (true) {\n const group = await this.get(\n id,\n options.includeRuns === undefined ? {} : { includeRuns: options.includeRuns },\n );\n if (isTerminalStatus(group.status, terminalStatuses)) return group;\n if (Date.now() >= deadline) {\n throw new Error(`Timed out waiting for agent run group ${id}`);\n }\n await sleep(Math.min(pollIntervalMs, Math.max(0, deadline - Date.now())));\n }\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nexport type AgentRuntime =\n | \"osa\"\n | \"codex\"\n | \"claude\"\n | \"claude-code\"\n | \"pi\"\n | \"hermes\"\n | \"custom\";\n\nexport type AgentRuntimeConnector =\n | string\n | {\n uid?: string;\n name?: string;\n type?: \"mcp\" | \"api-key\" | \"api_key\" | \"oauth\" | \"custom\" | string;\n provider?: string;\n managed?: boolean;\n server_url?: string;\n serverUrl?: string;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n };\n\nexport interface AgentRuntimeProfile {\n id: string;\n tenant_id?: string;\n tenantId?: string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n name: string;\n runtime: AgentRuntime | string;\n description?: string | null;\n applies_to?: Record<string, unknown>;\n appliesTo?: Record<string, unknown>;\n tools?: string[];\n connectors?: AgentRuntimeConnector[];\n env?: Record<string, string>;\n policy?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n is_default?: boolean;\n isDefault?: boolean;\n created_at?: string;\n createdAt?: string;\n updated_at?: string;\n updatedAt?: string;\n}\n\nexport interface AgentRuntimeProfileParams {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n name: string;\n runtime: AgentRuntime | string;\n description?: string;\n appliesTo?: Record<string, unknown>;\n applies_to?: Record<string, unknown>;\n tools?: string[];\n connectors?: AgentRuntimeConnector[];\n env?: Record<string, string>;\n policy?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n isDefault?: boolean;\n is_default?: boolean;\n}\n\nexport type AgentRuntimeProfileUpdateParams =\n Partial<AgentRuntimeProfileParams>;\n\nfunction body(\n params: AgentRuntimeProfileParams | AgentRuntimeProfileUpdateParams,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries({\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n name: params.name,\n runtime: params.runtime,\n description: params.description,\n applies_to: params.appliesTo ?? params.applies_to,\n tools: params.tools,\n connectors: params.connectors,\n env: params.env,\n policy: params.policy,\n metadata: params.metadata,\n is_default: params.isDefault ?? params.is_default,\n }).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction normalize(profile: AgentRuntimeProfile): AgentRuntimeProfile {\n const normalized: AgentRuntimeProfile = {\n ...profile,\n };\n const tenantId = profile.tenantId ?? profile.tenant_id;\n const workspaceId = profile.workspaceId ?? profile.workspace_id;\n const projectId = profile.projectId ?? profile.project_id;\n const appliesTo = profile.appliesTo ?? profile.applies_to;\n const isDefault = profile.isDefault ?? profile.is_default;\n const createdAt = profile.createdAt ?? profile.created_at;\n const updatedAt = profile.updatedAt ?? profile.updated_at;\n if (tenantId !== undefined) normalized.tenantId = tenantId;\n if (workspaceId !== undefined) normalized.workspaceId = workspaceId;\n if (projectId !== undefined) normalized.projectId = projectId;\n if (appliesTo !== undefined) normalized.appliesTo = appliesTo;\n if (isDefault !== undefined) normalized.isDefault = isDefault;\n if (createdAt !== undefined) normalized.createdAt = createdAt;\n if (updatedAt !== undefined) normalized.updatedAt = updatedAt;\n return normalized;\n}\n\nexport class AgentRuntimeProfiles {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n params: {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n } = {},\n ) {\n const response = await this.http.get<WireEnvelope<AgentRuntimeProfile[]>>(\n \"/agent-runtime-profiles\",\n {\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n },\n );\n return unwrap(response).map(normalize);\n }\n\n async get(id: string): Promise<AgentRuntimeProfile> {\n return normalize(\n unwrap(\n await this.http.get<WireEnvelope<AgentRuntimeProfile>>(\n `/agent-runtime-profiles/${encodeURIComponent(id)}`,\n ),\n ),\n );\n }\n\n async create(\n params: AgentRuntimeProfileParams,\n ): Promise<AgentRuntimeProfile> {\n return normalize(\n unwrap(\n await this.http.post<WireEnvelope<AgentRuntimeProfile>>(\n \"/agent-runtime-profiles\",\n body(params),\n ),\n ),\n );\n }\n\n async update(\n id: string,\n params: AgentRuntimeProfileUpdateParams,\n ): Promise<AgentRuntimeProfile> {\n return normalize(\n unwrap(\n await this.http.put<WireEnvelope<AgentRuntimeProfile>>(\n `/agent-runtime-profiles/${encodeURIComponent(id)}`,\n body(params),\n ),\n ),\n );\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete<void>(\n `/agent-runtime-profiles/${encodeURIComponent(id)}`,\n );\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport type AgentRunTargetKind = \"sandbox\" | \"computer\";\nexport type AgentRunStatus = \"running\" | \"succeeded\" | \"failed\" | \"canceled\";\n\nexport interface AgentRun {\n id: string;\n agent_run_group_id?: string;\n parent_agent_run_id?: string;\n orchestration_role?: string;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n target_kind: AgentRunTargetKind;\n target_id: string;\n provider: string;\n prompt: string;\n status: AgentRunStatus;\n output?: string;\n stderr?: string;\n exit_code?: number;\n metadata?: Record<string, unknown>;\n started_at?: string;\n finished_at?: string;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface AgentRunArtifact {\n id: string;\n agent_run_id?: string;\n target_kind?: AgentRunTargetKind;\n target_id?: string;\n path: string;\n kind?: string;\n mime_type?: string;\n size_bytes?: number;\n sha256?: string;\n status?: string;\n persisted?: boolean;\n storage_backend?: string | null;\n persisted_at?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface AgentRunEvent {\n id: string;\n agent_run_id?: string;\n sequence?: number;\n type: string;\n message?: string | null;\n payload?: Record<string, unknown>;\n created_at?: string | null;\n [key: string]: unknown;\n}\n\nexport interface AgentRunExecutionPacket {\n goal?: string;\n context?: Record<string, unknown>;\n plan?: unknown;\n constraints?: unknown;\n acceptance_criteria?: unknown;\n [key: string]: unknown;\n}\n\nexport interface AgentRunOutputContract {\n artifacts?: Array<string | Partial<AgentRunArtifact>>;\n artifact_paths?: string[];\n preview_port?: number;\n required_files?: string[];\n [key: string]: unknown;\n}\n\nexport interface AgentRunApprovalPolicy {\n publish?: \"manual\" | \"automatic\" | string;\n external_write?: \"manual\" | \"automatic\" | string;\n destructive_actions?: \"forbidden\" | \"manual\" | \"automatic\" | string;\n [key: string]: unknown;\n}\n\nexport interface AgentRunCreateParams {\n prompt: string;\n targetKind?: AgentRunTargetKind;\n targetId?: string;\n sandboxId?: string;\n /** Shortcut for a computer-backed Agent Run. */\n computerId?: string;\n provider?: string;\n model?: string;\n command?: string;\n runtimeCommand?: string;\n cwd?: string;\n timeout?: number;\n wait?: boolean;\n env?: Record<string, string>;\n /** Claude Code: `--output-format`, e.g. \"json\" or \"stream-json\". */\n outputFormat?: \"text\" | \"json\" | \"stream-json\" | string;\n output_format?: \"text\" | \"json\" | \"stream-json\" | string;\n /** Claude Code: `--resume <session_id>`. */\n resumeSessionId?: string;\n resume_session_id?: string;\n /** Codex: pass `--json` for JSONL event output. */\n json?: boolean;\n /** Codex: path to a JSON Schema file inside the runtime. */\n outputSchema?: string;\n output_schema?: string;\n /** Codex: path to an image file inside the runtime. */\n image?: string;\n agentRuntimeProfileId?: string;\n agentProfileId?: string;\n agentRunGroupId?: string;\n parentAgentRunId?: string;\n orchestrationRole?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n skipAgentRuntimeProfile?: boolean;\n executionPacket?: AgentRunExecutionPacket;\n outputContract?: AgentRunOutputContract;\n approvalPolicy?: AgentRunApprovalPolicy;\n capabilityRequirements?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRunListParams {\n targetKind?: AgentRunTargetKind;\n targetId?: string;\n sandboxId?: string;\n computerId?: string;\n agentRunGroupId?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n status?: AgentRunStatus | string;\n}\n\nexport interface AgentRunWaitOptions {\n timeoutMs?: number;\n pollIntervalMs?: number;\n terminalStatuses?: string[];\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction isTerminalStatus(status: unknown, terminalStatuses: string[]): boolean {\n return typeof status === \"string\" && terminalStatuses.includes(status.toLowerCase());\n}\n\nfunction sleep(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport class AgentRuns {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: AgentRunListParams = {}): Promise<AgentRun[]> {\n const response = await this.http.get<unknown>(\n \"/agent-runs\",\n stripUndefined({\n target_kind: params.targetKind,\n target_id: params.targetId,\n sandbox_id: params.sandboxId,\n computer_id: params.computerId,\n agent_run_group_id: params.agentRunGroupId,\n external_workspace_id: params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id: params.externalProjectId ?? params.external_project_id,\n status: params.status,\n }) as Record<string, string | number | boolean | undefined>,\n );\n const data = unwrap<AgentRun[] | { runs?: AgentRun[]; items?: AgentRun[] }>(\n response,\n );\n if (Array.isArray(data)) return data;\n return data.runs ?? data.items ?? [];\n }\n\n async get(id: string): Promise<AgentRun> {\n return unwrap<AgentRun>(\n await this.http.get<unknown>(`/agent-runs/${encodeURIComponent(id)}`),\n );\n }\n\n async artifacts(id: string): Promise<AgentRunArtifact[]> {\n const data = unwrap<\n AgentRunArtifact[] | { artifacts?: AgentRunArtifact[]; items?: AgentRunArtifact[] }\n >(\n await this.http.get<unknown>(\n `/agent-runs/${encodeURIComponent(id)}/artifacts`,\n ),\n );\n if (Array.isArray(data)) return data;\n return data.artifacts ?? data.items ?? [];\n }\n\n async downloadArtifact(\n id: string,\n artifactId: string,\n options: { inline?: boolean } = {},\n ): Promise<Uint8Array> {\n const query = options.inline ? \"?disposition=inline\" : \"\";\n return this.http.getBinary(\n `/agent-runs/${encodeURIComponent(id)}/artifacts/${encodeURIComponent(\n artifactId,\n )}/download${query}`,\n );\n }\n\n async events(id: string): Promise<AgentRunEvent[]> {\n const data = unwrap<AgentRunEvent[] | { events?: AgentRunEvent[]; items?: AgentRunEvent[] }>(\n await this.http.get<unknown>(`/agent-runs/${encodeURIComponent(id)}/events`),\n );\n if (Array.isArray(data)) return data;\n return data.events ?? data.items ?? [];\n }\n\n streamEvents(id: string): AsyncIterableIterator<AgentRunEvent> {\n return this.http.stream<AgentRunEvent>(\n `/agent-runs/${encodeURIComponent(id)}/events`,\n );\n }\n\n async waitForCompletion(\n id: string,\n options: AgentRunWaitOptions = {},\n ): Promise<AgentRun> {\n const timeoutMs = options.timeoutMs ?? 15 * 60 * 1000;\n const pollIntervalMs = options.pollIntervalMs ?? 2000;\n const terminalStatuses = options.terminalStatuses ?? [\n \"succeeded\",\n \"failed\",\n \"canceled\",\n \"cancelled\",\n ];\n const deadline = Date.now() + timeoutMs;\n\n while (true) {\n const run = await this.get(id);\n if (isTerminalStatus(run.status, terminalStatuses)) return run;\n if (Date.now() >= deadline) {\n throw new Error(`Timed out waiting for agent run ${id}`);\n }\n await sleep(Math.min(pollIntervalMs, Math.max(0, deadline - Date.now())));\n }\n }\n\n async run(params: AgentRunCreateParams): Promise<AgentRun> {\n const body = stripUndefined({\n prompt: params.prompt,\n target_kind: params.targetKind,\n target_id: params.targetId,\n sandbox_id: params.sandboxId,\n computer_id: params.computerId,\n provider: params.provider,\n model: params.model,\n command: params.command,\n runtime_command: params.runtimeCommand,\n cwd: params.cwd,\n timeout: params.timeout,\n wait: params.wait,\n env: params.env,\n output_format: params.outputFormat ?? params.output_format,\n resume_session_id: params.resumeSessionId ?? params.resume_session_id,\n json: params.json,\n output_schema: params.outputSchema ?? params.output_schema,\n image: params.image,\n agent_runtime_profile_id: params.agentRuntimeProfileId,\n agent_profile_id: params.agentProfileId,\n agent_run_group_id: params.agentRunGroupId,\n parent_agent_run_id: params.parentAgentRunId,\n orchestration_role: params.orchestrationRole,\n external_workspace_id: params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id: params.externalProjectId ?? params.external_project_id,\n skip_agent_runtime_profile: params.skipAgentRuntimeProfile,\n execution_packet: params.executionPacket,\n output_contract: params.outputContract,\n approval_policy: params.approvalPolicy,\n capability_requirements: params.capabilityRequirements,\n metadata: params.metadata,\n });\n\n return unwrap<AgentRun>(await this.http.post<unknown>(\"/agent-runs\", body));\n }\n\n async cancel(id: string): Promise<AgentRun> {\n return unwrap<AgentRun>(\n await this.http.post<unknown>(\n `/agent-runs/${encodeURIComponent(id)}/cancel`,\n {},\n ),\n );\n }\n}\n","/**\n * Analytics — overview + timeseries (admin scope).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AnalyticsFilters {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface TimeseriesParams extends AnalyticsFilters {\n metric?: string;\n period?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"analytics\", \"series\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Analytics {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the platform analytics overview. */\n async overview(\n filters: AnalyticsFilters = {},\n ): Promise<Record<string, unknown>> {\n const query = stripUndefined(filters as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/analytics/overview\", query);\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Get a timeseries for a metric over a period. */\n async timeseries(\n params: TimeseriesParams = {},\n ): Promise<Record<string, unknown>> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/analytics/timeseries\", query);\n return unwrap<Record<string, unknown>>(data);\n }\n}\n","/**\n * ApiKeys resource — programmatic API key management.\n *\n * The plaintext key is returned ONLY at create time. Store it immediately;\n * the server only keeps a hash.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type ApiKeyId = string & { readonly __brand: \"ApiKeyId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ApiKeyData {\n id: ApiKeyId;\n tenant_id: string;\n name: string;\n prefix?: string;\n scopes?: string[];\n expires_at?: string | null;\n last_used_at?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\nexport interface ApiKeyCreateResult extends ApiKeyData {\n /** One-time plaintext key. Store immediately. */\n token?: string;\n key?: string;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ApiKeyListParams {\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface ApiKeyCreateParams {\n name: string;\n scopes?: string[];\n expires_at?: string;\n expiresAt?: string;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"keys\", \"api_keys\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ApiKeys {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: ApiKeyListParams = {}): Promise<ApiKeyData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/api-keys\", query);\n return listItems<ApiKeyData>(data);\n }\n\n async create(params: ApiKeyCreateParams): Promise<ApiKeyCreateResult> {\n const { idempotencyKey: ikey, expiresAt, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n expires_at: expiresAt ?? rest.expires_at,\n });\n const data = await this.http.request<unknown>(\"/api-keys\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<ApiKeyCreateResult>(data);\n }\n\n /** POST /api/v1/api-keys/scoped — L2 delegation token bound to one external user. */\n async createScoped(params: {\n externalUserId: string;\n scopes: string[];\n expiresAt?: string;\n }): Promise<ApiKeyCreateResult> {\n const body = stripUndefined({\n external_user_id: params.externalUserId,\n scopes: params.scopes,\n expires_at: params.expiresAt,\n });\n return unwrap<ApiKeyCreateResult>(\n await this.http.post<unknown>(\"/api-keys/scoped\", body),\n );\n }\n\n async delete(keyId: string): Promise<void> {\n await this.http.delete<unknown>(`/api-keys/${keyId}`);\n }\n}\n","/**\n * Audit log — admin-scoped event history.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface AuditLogEvent {\n id?: string;\n action?: string;\n actor_id?: string;\n resource_type?: string;\n resource_id?: string;\n metadata?: Record<string, unknown>;\n inserted_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AuditLogListParams {\n action?: string;\n actor_id?: string;\n resource_type?: string;\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"audit_log\", \"events\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class AuditLog {\n constructor(private readonly http: HttpClient) {}\n\n /** List audit-log events with optional filters. */\n async list(params: AuditLogListParams = {}): Promise<AuditLogEvent[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/audit-log\", query);\n const result = unwrap<AuditLogEvent[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n}\n","/**\n * Benchmarks — admin-triggered platform benchmark runs.\n *\n * Routes: /admin/benchmarks/*\n * Requires admin credential (msk_a_* / msk_p_* or admin JWT).\n * Available kinds: cold_boot, fleet_routing, concurrent_create, full_e2e.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface BenchmarkCreateParams {\n kind: string;\n [key: string]: unknown;\n}\n\nexport interface BenchmarkCompareParams {\n left_id: string;\n right_id: string;\n [key: string]: unknown;\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"benchmarks\", \"samples\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"benchmarks\", \"samples\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class Benchmarks {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/admin/benchmarks\", query);\n return unwrapList(data);\n }\n\n async get(benchmarkId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/admin/benchmarks/${benchmarkId}`),\n );\n }\n\n /** Start a new benchmark run — pass kind and run-specific options. */\n async create(\n params: BenchmarkCreateParams,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n return unwrap(await this.http.post<unknown>(\"/admin/benchmarks\", body));\n }\n\n async cancel(benchmarkId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/benchmarks/${benchmarkId}/cancel`),\n );\n }\n\n /** Return per-iteration timing samples for a benchmark run. */\n async samples(\n benchmarkId: string,\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n `/admin/benchmarks/${benchmarkId}/samples`,\n query,\n );\n return unwrapList(data);\n }\n\n /** Compare two benchmark runs. */\n async compare(\n params: BenchmarkCompareParams,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.post<unknown>(\"/admin/benchmarks/compare\", body),\n );\n }\n}\n","/**\n * BuilderSessions — durable, cross-device Builder UI state.\n *\n * Routes: /builder/sessions/*\n * Accepts msk_* API keys or JWT.\n * Sessions are optimal_sessions with resource_type=\"sandbox\".\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"sessions\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"sessions\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport interface BuilderSessionListParams {\n limit?: number;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport class BuilderSessions {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n params: BuilderSessionListParams = {},\n ): Promise<Record<string, unknown>[]> {\n const query = { limit: 50, ...params } as Record<\n string,\n string | number | boolean | undefined\n >;\n return unwrapList(await this.http.get<unknown>(\"/builder/sessions\", query));\n }\n\n /**\n * Get a single session. The platform router only exposes index +\n * title-update + delete, so this filters list() client-side.\n */\n async get(sessionId: string): Promise<Record<string, unknown>> {\n const all = await this.list();\n return (\n all.find((s) => (s as Record<string, unknown>).id === sessionId) ?? {}\n );\n }\n\n async updateTitle(\n sessionId: string,\n title: string,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.patch<unknown>(`/builder/sessions/${sessionId}/title`, {\n title,\n }),\n );\n }\n\n async delete(sessionId: string): Promise<void> {\n await this.http.delete(`/builder/sessions/${sessionId}`);\n }\n}\n","/**\n * Channels — notification preferences + per-channel enable/disable.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ChannelData {\n id?: string;\n type?: string;\n name?: string;\n enabled?: boolean;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ChannelListParams {\n type?: string;\n enabled?: boolean;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface ChannelCreateParams {\n type: string;\n name?: string;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ChannelUpdateParams {\n name?: string;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface NotificationPrefsUpdateParams {\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"channels\", \"notifications\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction stripUndefObj(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Channels {\n constructor(private readonly http: HttpClient) {}\n\n /** List all channels for the tenant. */\n async list(params: ChannelListParams = {}): Promise<ChannelData[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/channels\", query);\n const result = unwrap<ChannelData[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n\n /** Get a single channel. */\n async get(channelId: string): Promise<ChannelData> {\n const data = await this.http.get<unknown>(`/channels/${channelId}`);\n return unwrap<ChannelData>(data);\n }\n\n /** Create a new channel. */\n async create(params: ChannelCreateParams): Promise<ChannelData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\"/channels\", body);\n return unwrap<ChannelData>(data);\n }\n\n /** Update a channel. */\n async update(\n channelId: string,\n params: ChannelUpdateParams,\n ): Promise<ChannelData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(`/channels/${channelId}`, body);\n return unwrap<ChannelData>(data);\n }\n\n /** Delete a channel. */\n async delete(channelId: string): Promise<void> {\n await this.http.delete<unknown>(`/channels/${channelId}`);\n }\n\n // ── Notification preferences ───────────────────────────────────────────────\n\n /** Get notification preferences across all channels. */\n async listNotifications(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/channels/notifications\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Update notification preferences. */\n async updateNotifications(\n params: NotificationPrefsUpdateParams,\n ): Promise<Record<string, unknown>> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\"/channels/notifications\", body);\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Enable a channel. */\n async enable(channelId: string): Promise<ChannelData> {\n const data = await this.http.post<unknown>(`/channels/${channelId}/enable`);\n return unwrap<ChannelData>(data);\n }\n\n /** Disable a channel. */\n async disable(channelId: string): Promise<ChannelData> {\n const data = await this.http.post<unknown>(\n `/channels/${channelId}/disable`,\n );\n return unwrap<ChannelData>(data);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction stripUndefined(input: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nexport type CloudProvider = \"aws\" | \"gcp\" | string;\nexport type CloudAccountMode = \"miosa_managed\" | \"customer_byoc\" | string;\nexport type CloudCredentialType =\n | \"miosa_owned\"\n | \"assume_role\"\n | \"access_key_smoke\"\n | \"service_account\"\n | string;\nexport type CloudAccountStatus =\n | \"draft\"\n | \"preflight_required\"\n | \"preflight_failed\"\n | \"ready\"\n | \"disabled\"\n | \"error\"\n | string;\nexport type CloudPoolKind = \"cloudburst\" | \"standing_byoc\" | string;\nexport type CloudPlacementScope = \"sandbox\" | \"computer\" | \"deployment\" | \"mixed\" | string;\nexport type CloudPreflightStatus = \"pass\" | \"warn\" | \"fail\" | string;\n\nexport interface CloudAccount {\n id: string;\n tenant_id?: string;\n tenantId?: string;\n provider: CloudProvider;\n mode: CloudAccountMode;\n display_name?: string;\n displayName?: string;\n external_account_id?: string | null;\n externalAccountId?: string | null;\n credential_type?: CloudCredentialType;\n credentialType?: CloudCredentialType;\n role_arn?: string | null;\n roleArn?: string | null;\n external_id?: string | null;\n externalId?: string | null;\n default_region?: string | null;\n defaultRegion?: string | null;\n status?: CloudAccountStatus;\n last_preflight_run_id?: string | null;\n lastPreflightRunId?: string | null;\n created_by_user_id?: string | null;\n createdByUserId?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n createdAt?: string;\n updated_at?: string;\n updatedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface CloudRegion {\n id: string;\n cloud_account_id?: string;\n cloudAccountId?: string;\n provider: CloudProvider;\n provider_region?: string;\n providerRegion?: string;\n provider_zone?: string | null;\n providerZone?: string | null;\n display_name?: string;\n displayName?: string;\n guest_supernet?: string | null;\n guestSupernet?: string | null;\n artifact_manifest_uri?: string | null;\n artifactManifestUri?: string | null;\n network_ref?: string | null;\n networkRef?: string | null;\n subnet_ref?: string | null;\n subnetRef?: string | null;\n security_group_refs?: string[];\n securityGroupRefs?: string[];\n instance_profile_ref?: string | null;\n instanceProfileRef?: string | null;\n status?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CloudPool {\n id: string;\n cloud_region_id?: string;\n cloudRegionId?: string;\n pool_kind?: CloudPoolKind;\n poolKind?: CloudPoolKind;\n node_type?: string;\n nodeType?: string;\n instance_type?: string;\n instanceType?: string;\n target_nodes?: number;\n targetNodes?: number;\n max_nodes?: number;\n maxNodes?: number;\n ttl_seconds?: number | null;\n ttlSeconds?: number | null;\n max_hourly_cents?: number | null;\n maxHourlyCents?: number | null;\n placement_scope?: CloudPlacementScope;\n placementScope?: CloudPlacementScope;\n status?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CloudPreflightRun {\n id: string;\n cloud_account_id?: string | null;\n cloudAccountId?: string | null;\n cloud_region_id?: string | null;\n cloudRegionId?: string | null;\n provider: CloudProvider;\n status: CloudPreflightStatus;\n checks?: Record<string, unknown>;\n raw_report?: Record<string, unknown>;\n rawReport?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n created_at?: string;\n createdAt?: string;\n [key: string]: unknown;\n}\n\nexport interface CloudAccountCreateParams {\n provider: CloudProvider;\n mode: CloudAccountMode;\n displayName?: string;\n display_name?: string;\n externalAccountId?: string;\n external_account_id?: string;\n credentialType?: CloudCredentialType;\n credential_type?: CloudCredentialType;\n defaultRegion?: string;\n default_region?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AttachAwsRoleParams {\n roleArn?: string;\n role_arn?: string;\n defaultRegion?: string;\n default_region?: string;\n}\n\nexport interface CloudRegionCreateParams {\n cloudAccountId?: string;\n cloud_account_id?: string;\n providerRegion?: string;\n provider_region?: string;\n providerZone?: string;\n provider_zone?: string;\n displayName?: string;\n display_name?: string;\n guestSupernet?: string;\n guest_supernet?: string;\n artifactManifestUri?: string;\n artifact_manifest_uri?: string;\n networkRef?: string;\n network_ref?: string;\n subnetRef?: string;\n subnet_ref?: string;\n securityGroupRefs?: string[];\n security_group_refs?: string[];\n instanceProfileRef?: string;\n instance_profile_ref?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CloudPoolCreateParams {\n cloudRegionId?: string;\n cloud_region_id?: string;\n poolKind?: CloudPoolKind;\n pool_kind?: CloudPoolKind;\n nodeType?: string;\n node_type?: string;\n instanceType?: string;\n instance_type?: string;\n targetNodes?: number;\n target_nodes?: number;\n maxNodes?: number;\n max_nodes?: number;\n ttlSeconds?: number;\n ttl_seconds?: number;\n maxHourlyCents?: number;\n max_hourly_cents?: number;\n placementScope?: CloudPlacementScope;\n placement_scope?: CloudPlacementScope;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CloudPreflightRecordParams {\n cloudAccountId?: string;\n cloud_account_id?: string;\n cloudRegionId?: string;\n cloud_region_id?: string;\n provider: CloudProvider;\n status: CloudPreflightStatus;\n checks?: Record<string, unknown>;\n rawReport?: Record<string, unknown>;\n raw_report?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CloudListParams {\n cloudAccountId?: string;\n cloud_account_id?: string;\n cloudRegionId?: string;\n cloud_region_id?: string;\n limit?: number;\n}\n\nfunction accountBody(params: CloudAccountCreateParams): Record<string, unknown> {\n return stripUndefined({\n provider: params.provider,\n mode: params.mode,\n display_name: params.displayName ?? params.display_name,\n external_account_id: params.externalAccountId ?? params.external_account_id,\n credential_type: params.credentialType ?? params.credential_type,\n default_region: params.defaultRegion ?? params.default_region,\n metadata: params.metadata,\n });\n}\n\nfunction regionBody(params: CloudRegionCreateParams): Record<string, unknown> {\n return stripUndefined({\n cloud_account_id: params.cloudAccountId ?? params.cloud_account_id,\n provider_region: params.providerRegion ?? params.provider_region,\n provider_zone: params.providerZone ?? params.provider_zone,\n display_name: params.displayName ?? params.display_name,\n guest_supernet: params.guestSupernet ?? params.guest_supernet,\n artifact_manifest_uri:\n params.artifactManifestUri ?? params.artifact_manifest_uri,\n network_ref: params.networkRef ?? params.network_ref,\n subnet_ref: params.subnetRef ?? params.subnet_ref,\n security_group_refs: params.securityGroupRefs ?? params.security_group_refs,\n instance_profile_ref: params.instanceProfileRef ?? params.instance_profile_ref,\n metadata: params.metadata,\n });\n}\n\nfunction poolBody(params: CloudPoolCreateParams): Record<string, unknown> {\n return stripUndefined({\n cloud_region_id: params.cloudRegionId ?? params.cloud_region_id,\n pool_kind: params.poolKind ?? params.pool_kind,\n node_type: params.nodeType ?? params.node_type,\n instance_type: params.instanceType ?? params.instance_type,\n target_nodes: params.targetNodes ?? params.target_nodes,\n max_nodes: params.maxNodes ?? params.max_nodes,\n ttl_seconds: params.ttlSeconds ?? params.ttl_seconds,\n max_hourly_cents: params.maxHourlyCents ?? params.max_hourly_cents,\n placement_scope: params.placementScope ?? params.placement_scope,\n metadata: params.metadata,\n });\n}\n\nfunction preflightBody(params: CloudPreflightRecordParams): Record<string, unknown> {\n return stripUndefined({\n cloud_account_id: params.cloudAccountId ?? params.cloud_account_id,\n cloud_region_id: params.cloudRegionId ?? params.cloud_region_id,\n provider: params.provider,\n status: params.status,\n checks: params.checks,\n raw_report: params.rawReport ?? params.raw_report,\n metadata: params.metadata,\n });\n}\n\nfunction query(params: CloudListParams = {}): Record<string, string | number | undefined> {\n return stripUndefined({\n cloud_account_id: params.cloudAccountId ?? params.cloud_account_id,\n cloud_region_id: params.cloudRegionId ?? params.cloud_region_id,\n limit: params.limit,\n }) as Record<string, string | number | undefined>;\n}\n\nexport class Cloud {\n constructor(private readonly http: HttpClient) {}\n\n async listAccounts(): Promise<CloudAccount[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudAccount[]>>(\"/cloud/accounts\"),\n );\n }\n\n async createAccount(params: CloudAccountCreateParams): Promise<CloudAccount> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudAccount>>(\n \"/cloud/accounts\",\n accountBody(params),\n ),\n );\n }\n\n async attachAwsRole(id: string, params: AttachAwsRoleParams): Promise<CloudAccount> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudAccount>>(\n `/cloud/accounts/${encodeURIComponent(id)}/aws/role`,\n stripUndefined({\n role_arn: params.roleArn ?? params.role_arn,\n default_region: params.defaultRegion ?? params.default_region,\n }),\n ),\n );\n }\n\n async listRegions(params: CloudListParams = {}): Promise<CloudRegion[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudRegion[]>>(\n \"/cloud/regions\",\n query(params),\n ),\n );\n }\n\n async createRegion(params: CloudRegionCreateParams): Promise<CloudRegion> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudRegion>>(\n \"/cloud/regions\",\n regionBody(params),\n ),\n );\n }\n\n async listPools(params: CloudListParams = {}): Promise<CloudPool[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudPool[]>>(\"/cloud/pools\", query(params)),\n );\n }\n\n async createPool(params: CloudPoolCreateParams): Promise<CloudPool> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudPool>>(\n \"/cloud/pools\",\n poolBody(params),\n ),\n );\n }\n\n async listPreflights(params: CloudListParams = {}): Promise<CloudPreflightRun[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudPreflightRun[]>>(\n \"/cloud/preflights\",\n query(params),\n ),\n );\n }\n\n async recordPreflight(params: CloudPreflightRecordParams): Promise<CloudPreflightRun> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudPreflightRun>>(\n \"/cloud/preflights\",\n preflightBody(params),\n ),\n );\n }\n}\n","/**\n * CommandCenter — agent fleet, orchestrations, metrics.\n *\n * Routes: /command-center/*\n * Requires JWT or msk_u_* API key.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"agents\",\n \"running\",\n \"metrics\",\n \"presets\",\n \"tiers\",\n \"items\",\n ]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"agents\", \"running\", \"presets\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class CommandCenter {\n constructor(private readonly http: HttpClient) {}\n\n /** Top-level snapshot (GET /command-center). */\n async overview(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/command-center\"));\n }\n\n async agents(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(\"/command-center/agents\"));\n }\n\n async runningAgents(): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\"/command-center/agents/running\"),\n );\n }\n\n async metrics(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/command-center/metrics\"));\n }\n\n async presets(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(\"/command-center/presets\"));\n }\n\n async tiers(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/command-center/tiers\"));\n }\n\n /** Stream live command-center events via SSE. */\n events(): AsyncIterableIterator<Record<string, unknown>> {\n return this.http.stream<Record<string, unknown>>(\"/command-center/events\");\n }\n}\n","/**\n * Community — public template + agent catalog with install + rate.\n *\n * Routes: /community/*\n * Requires JWT.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"templates\", \"agents\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"templates\", \"agents\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class Community {\n constructor(private readonly http: HttpClient) {}\n\n // ── Agents ────────────────────────────────────────────────────────────\n\n async listAgents(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrapList(await this.http.get<unknown>(\"/community/agents\", query));\n }\n\n async getAgent(agentId: string): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(`/community/agents/${agentId}`));\n }\n\n // ── Templates ─────────────────────────────────────────────────────────\n\n async listTemplates(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrapList(\n await this.http.get<unknown>(\"/community/templates\", query),\n );\n }\n\n async getTemplate(templateId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/community/templates/${templateId}`),\n );\n }\n\n /** Install a community template into the caller's tenant. */\n async installTemplate(\n templateId: string,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.post<unknown>(\n `/community/templates/${templateId}/install`,\n body,\n ),\n );\n }\n\n /** Rate a community template (1–5). */\n async rateTemplate(\n templateId: string,\n rating: number,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n rating,\n ...Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(\n await this.http.post<unknown>(\n `/community/templates/${templateId}/rate`,\n body,\n ),\n );\n }\n}\n","/**\n * Completions — OpenAI-compatible chat / text completion endpoints.\n *\n * Routes: POST /intelligence/completions, POST /intelligence/chat/completions\n * Requires an mki_* intelligence key. Supports stream=true via SSE.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\ninterface CompletionBase {\n model: string;\n prompt?: string | string[];\n [key: string]: unknown;\n}\n\nexport interface CompletionCreateParams extends CompletionBase {\n stream?: false;\n}\n\nexport interface CompletionCreateStreamParams extends CompletionBase {\n stream: true;\n}\n\ninterface ChatBase {\n model: string;\n messages: Record<string, unknown>[];\n [key: string]: unknown;\n}\n\nexport interface ChatCompletionCreateParams extends ChatBase {\n stream?: false;\n}\n\nexport interface ChatCompletionCreateStreamParams extends ChatBase {\n stream: true;\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n // Preserve OpenAI envelope (choices array present)\n if (Array.isArray(d.choices)) return d;\n if (\"data\" in d) return d.data as Record<string, unknown>;\n }\n return data as Record<string, unknown>;\n}\n\nfunction buildBody(params: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n}\n\nexport class Completions {\n constructor(private readonly http: HttpClient) {}\n\n /** Create a text completion (POST /intelligence/completions). */\n async create(\n params: CompletionCreateParams,\n ): Promise<Record<string, unknown>>;\n create(\n params: CompletionCreateStreamParams,\n ): AsyncIterableIterator<Record<string, unknown>>;\n create(\n params: CompletionCreateParams | CompletionCreateStreamParams,\n ):\n | Promise<Record<string, unknown>>\n | AsyncIterableIterator<Record<string, unknown>> {\n const body = buildBody(params);\n if (params.stream === true) {\n return this.http.stream<Record<string, unknown>>(\n \"/intelligence/completions\",\n { method: \"POST\", body },\n );\n }\n return this.http\n .post<unknown>(\"/intelligence/completions\", body)\n .then(unwrap);\n }\n\n /** Create a chat completion (POST /intelligence/chat/completions). */\n async chat(\n params: ChatCompletionCreateParams,\n ): Promise<Record<string, unknown>>;\n chat(\n params: ChatCompletionCreateStreamParams,\n ): AsyncIterableIterator<Record<string, unknown>>;\n chat(\n params: ChatCompletionCreateParams | ChatCompletionCreateStreamParams,\n ):\n | Promise<Record<string, unknown>>\n | AsyncIterableIterator<Record<string, unknown>> {\n const body = buildBody(params);\n if (params.stream === true) {\n return this.http.stream<Record<string, unknown>>(\n \"/intelligence/chat/completions\",\n { method: \"POST\", body },\n );\n }\n return this.http\n .post<unknown>(\"/intelligence/chat/completions\", body)\n .then(unwrap);\n }\n}\n","import type { HttpClient } from \"../http.js\";\nimport type { ComputerData } from \"../types.js\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type SnapshotStatus =\n | \"creating\"\n | \"uploading\"\n | \"ready\"\n | \"restoring\"\n | \"failed\"\n | \"deleted\";\n\nexport interface SnapshotData {\n id: string;\n computer_id: string;\n tenant_id: string;\n comment: string | null;\n status: SnapshotStatus;\n state_size_bytes: number | null;\n memory_size_bytes: number | null;\n rootfs_size_bytes: number | null;\n compressed_size_bytes: number | null;\n s3_bucket: string | null;\n s3_prefix: string | null;\n parent_snapshot_id: string | null;\n error: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface SnapshotCreateParams {\n /** Optional human-readable label for this checkpoint. */\n comment?: string;\n}\n\nexport interface SnapshotRestoreResult {\n /** The newly provisioned Computer booted from this snapshot. */\n data: ComputerData;\n /** The source snapshot used for the restore. */\n snapshot: SnapshotData;\n}\n\nexport interface SnapshotListResponse {\n data: SnapshotData[];\n}\n\nexport type SnapshotProgressEvent = {\n type: \"snapshot_progress\";\n snapshot_id: string;\n status: SnapshotStatus | string;\n step?: string;\n progress?: number;\n error?: string;\n};\n\n// ─── Checkpoints ─────────────────────────────────────────────────────────────\n\n/**\n * Firecracker microVM checkpoint management for a Computer.\n *\n * Accessed via `computer.checkpoints`.\n *\n * @example\n * ```ts\n * const snap = await computer.checkpoints.create({ comment: \"before upgrade\" });\n * // ... do risky work ...\n * const fresh = await computer.checkpoints.restore(snap.id);\n * ```\n */\nexport class Checkpoints {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/snapshots`;\n }\n\n /**\n * Create a checkpoint of the running computer.\n *\n * The returned snapshot starts in `creating` status and progresses\n * through `uploading` → `ready` asynchronously. Poll `get()` or subscribe\n * to progress events via `onProgress` to know when it's ready.\n *\n * @param params - Optional `comment` label.\n * @param onProgress - Optional callback fired for each SSE progress event.\n * Only called if a SSE ticket is available (the `events` endpoint requires\n * a prior `POST /api/v1/auth/sse-ticket` call).\n */\n async create(\n params: SnapshotCreateParams = {},\n onProgress?: (event: SnapshotProgressEvent) => void,\n ): Promise<SnapshotData> {\n const resp = await this.http.post<{ data: SnapshotData }>(\n this.base(),\n params,\n );\n const snap = resp.data;\n\n if (onProgress) {\n // Fire-and-forget progress subscription — caller decides how to await.\n void this.subscribeProgress(snap.id, onProgress).catch(() => {\n // Ignore SSE errors — the snapshot still proceeds on the server.\n });\n }\n\n return snap;\n }\n\n /**\n * List all non-deleted checkpoints for this computer.\n */\n async list(): Promise<SnapshotData[]> {\n const resp = await this.http.get<SnapshotListResponse>(this.base());\n return resp.data;\n }\n\n /**\n * Fetch a single checkpoint by id.\n */\n async get(id: string): Promise<SnapshotData> {\n const resp = await this.http.get<{ data: SnapshotData }>(\n `${this.base()}/${id}`,\n );\n return resp.data;\n }\n\n /**\n * Delete a checkpoint.\n *\n * Transitions the snapshot to `deleted` and schedules S3 cleanup on the\n * server. After deletion the snapshot object is returned with\n * `status: \"deleted\"`.\n */\n async delete(id: string): Promise<SnapshotData> {\n const resp = await this.http.delete<{ data: SnapshotData }>(\n `${this.base()}/${id}`,\n );\n return resp.data;\n }\n\n /**\n * Restore a checkpoint onto a fresh Computer.\n *\n * The returned Computer starts in `provisioning` status. Use\n * `computer.checkpoints.restore(id, onProgress)` to subscribe to restore\n * progress events.\n *\n * @param id - Snapshot id to restore (must be in `ready` status).\n * @param onProgress - Optional callback for SSE progress events during restore.\n * @returns A `SnapshotRestoreResult` containing the new Computer and the\n * source snapshot.\n */\n async restore(\n id: string,\n onProgress?: (event: SnapshotProgressEvent) => void,\n ): Promise<SnapshotRestoreResult> {\n const resp = await this.http.post<SnapshotRestoreResult>(\n `/computers/${this.computerId}/restore/${id}`,\n );\n\n if (onProgress) {\n void this.subscribeProgress(id, onProgress).catch(() => {});\n }\n\n return resp;\n }\n\n /**\n * Subscribe to Server-Sent Events for a snapshot's progress.\n *\n * Yields `SnapshotProgressEvent` objects until the stream closes or\n * `status` reaches a terminal state (`ready`, `failed`, `deleted`).\n *\n * Requires a valid SSE ticket obtained via\n * `POST /api/v1/auth/sse-ticket` and passed as `?ticket=<token>`.\n *\n * @param id - Snapshot id to watch.\n * @param ticket - Short-lived SSE ticket from the auth endpoint.\n */\n async *events(\n id: string,\n ticket: string,\n ): AsyncIterableIterator<SnapshotProgressEvent> {\n const path = `${this.base()}/${id}/events?ticket=${encodeURIComponent(ticket)}`;\n\n for await (const event of this.http.stream<SnapshotProgressEvent>(path)) {\n yield event;\n\n if (\n event.status === \"ready\" ||\n event.status === \"failed\" ||\n event.status === \"deleted\"\n ) {\n return;\n }\n }\n }\n\n // ── Private ──────────────────────────────────────────────────────────\n\n /**\n * Internal: subscribe to SSE progress events and call `cb` for each.\n *\n * Resolves when the stream closes. Any auth/network errors are silently\n * swallowed so the caller isn't blocked on progress-tracking failures.\n */\n private async subscribeProgress(\n id: string,\n cb: (event: SnapshotProgressEvent) => void,\n ): Promise<void> {\n // We don't have a ticket here (the SDK caller would need to obtain one\n // separately). This internal helper is a no-op placeholder — the public\n // `events()` iterator is the proper SSE interface.\n // Left here for future wiring once ticket issuance is unified.\n void id;\n void cb;\n }\n}\n","/**\n * ComputerAutoStop — read/update idle-timeout config.\n *\n * Routes:\n * GET /computers/:id/auto-stop\n * PATCH /computers/:id/auto-stop\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport class ComputerAutoStop {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Return the current auto-stop configuration. */\n async get(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/computers/${this.computerId}/auto-stop`),\n );\n }\n\n /** Set the idle timeout in seconds (0 disables auto-stop). */\n async update(seconds: number): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.patch<unknown>(\n `/computers/${this.computerId}/auto-stop`,\n { seconds },\n ),\n );\n }\n}\n","/**\n * ComputerEnv — encrypted env var CRUD scoped to one Computer.\n *\n * Routes:\n * GET /computers/:id/env → list\n * POST /computers/:id/env → create (single)\n * PATCH /computers/:id/env/:name → update value\n * DELETE /computers/:id/env/:name → remove\n *\n * bulkSet falls back to N individual POSTs (no bulk endpoint yet).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"env\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class ComputerEnv {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n private base(): string {\n return `/computers/${this.computerId}/env`;\n }\n\n /** List all env vars (values may be masked depending on server policy). */\n async list(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(this.base()));\n }\n\n /** Create a new env var. Use update() to change an existing one. */\n async set(name: string, value: string): Promise<Record<string, unknown>> {\n return unwrap(await this.http.post<unknown>(this.base(), { name, value }));\n }\n\n /** Patch the value of an existing env var by name. */\n async update(name: string, value: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.patch<unknown>(`${this.base()}/${name}`, { value }),\n );\n }\n\n /** Remove an env var by name. */\n async delete(name: string): Promise<void> {\n await this.http.delete(`${this.base()}/${name}`);\n }\n\n /** Convenience: create one env var per entry. */\n async bulkSet(\n env: Record<string, string>,\n ): Promise<Record<string, unknown>[]> {\n return Promise.all(\n Object.entries(env).map(([name, value]) => this.set(name, value)),\n );\n }\n}\n","/**\n * ComputerLogs — read + stream VM logs.\n *\n * Routes:\n * GET /computers/:id/logs — JSON snapshot (last N lines)\n * GET /computers/:id/logs/stream — text/event-stream of new lines (SSE)\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface ComputerLogsGetParams {\n lines?: number;\n since?: string;\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport class ComputerLogs {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Fetch the most recent log snapshot. */\n async get(\n params: ComputerLogsGetParams = {},\n ): Promise<Record<string, unknown>> {\n const query = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrap(\n await this.http.get<unknown>(`/computers/${this.computerId}/logs`, query),\n );\n }\n\n /** Stream live log events as SSE dicts `{type, data, id}`. */\n stream(): AsyncIterableIterator<Record<string, unknown>> {\n return this.http.stream<Record<string, unknown>>(\n `/computers/${this.computerId}/logs/stream`,\n );\n }\n}\n","/**\n * ComputerOsa — task dispatch to the in-VM OSA agent.\n *\n * Routes:\n * POST /computers/:id/osa/task\n * DELETE /computers/:id/osa/task\n * GET /computers/:id/osa/status\n * POST /computers/:id/osa/configure\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport class ComputerOsa {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Submit a free-form task to the in-VM OSA agent. */\n async submitTask(\n task: string,\n params: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n task,\n ...Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(\n await this.http.post<unknown>(\n `/computers/${this.computerId}/osa/task`,\n body,\n ),\n );\n }\n\n /** Cancel the currently-running OSA task, if any. */\n async cancelTask(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.delete<unknown>(`/computers/${this.computerId}/osa/task`),\n );\n }\n\n /** Return OSA's current task / configuration / health snapshot. */\n async status(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/computers/${this.computerId}/osa/status`),\n );\n }\n\n /** Update OSA runtime configuration (model, tools, secrets, etc.). */\n async configure(\n config: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(config).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.post<unknown>(\n `/computers/${this.computerId}/osa/configure`,\n body,\n ),\n );\n }\n}\n","/**\n * ComputerPorts — per-port visibility control.\n *\n * Routes:\n * GET /computers/:id/ports — list\n * POST /computers/:id/ports — create\n * PATCH /computers/:id/ports/:port — update\n * DELETE /computers/:id/ports/:port — delete\n *\n * The backend does not expose a single-port GET; get() filters the list\n * response client-side for ergonomics.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"ports\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class ComputerPorts {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n private base(): string {\n return `/computers/${this.computerId}/ports`;\n }\n\n async list(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(this.base()));\n }\n\n /** Return the port record for port, or null if not exposed. */\n async get(port: number): Promise<Record<string, unknown> | null> {\n const all = await this.list();\n return (\n all.find((r) => Number((r as Record<string, unknown>).port) === port) ??\n null\n );\n }\n\n /** Expose port with the given visibility options. */\n async create(\n port: number,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n port,\n ...Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(await this.http.post<unknown>(this.base(), body));\n }\n\n /** Patch visibility / auth options for port. */\n async update(\n port: number,\n opts: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.patch<unknown>(`${this.base()}/${port}`, body),\n );\n }\n\n /** Stop exposing port. */\n async delete(port: number): Promise<void> {\n await this.http.delete(`${this.base()}/${port}`);\n }\n}\n","/**\n * ComputerTerminal — PTY session management for a Computer.\n *\n * Routes:\n * POST /computers/:id/terminal\n * POST /computers/:id/pty/:sessionId/resize\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface TerminalCreateParams {\n cols?: number;\n rows?: number;\n shell?: string;\n cwd?: string;\n env?: Record<string, string>;\n}\n\nexport class ComputerTerminal {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Open a new PTY session. Returns the server payload (session id, etc.). */\n async create(\n params: TerminalCreateParams = {},\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n const raw = await this.http.post<unknown>(\n `/computers/${this.computerId}/terminal`,\n body,\n );\n return unwrap(raw);\n }\n\n /** Resize an existing PTY session. */\n async resize(\n sessionId: string,\n cols: number,\n rows: number,\n ): Promise<Record<string, unknown>> {\n const raw = await this.http.post<unknown>(\n `/computers/${this.computerId}/pty/${sessionId}/resize`,\n { cols, rows },\n );\n return unwrap(raw);\n }\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n","/**\n * ComputerVolumes — per-computer volume attachment.\n *\n * Routes:\n * GET /computers/:id/volumes — list attachments\n * POST /computers/:id/volumes — attach a volume\n * DELETE /computers/:id/volumes/:aid — detach an attachment\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"attachments\", \"volumes\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class ComputerVolumes {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n private base(): string {\n return `/computers/${this.computerId}/volumes`;\n }\n\n async list(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(this.base()));\n }\n\n /** Attach volumeId at mountPath inside the VM. */\n async attach(\n volumeId: string,\n mountPath: string,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(this.base(), {\n volume_id: volumeId,\n mount_path: mountPath,\n }),\n );\n }\n\n /** Detach an existing attachment by attachment id. */\n async detach(attachmentId: string): Promise<void> {\n await this.http.delete(`${this.base()}/${attachmentId}`);\n }\n}\n","/**\n * MIOSA Connect — provider connectors and runtime tokens.\n *\n * Connect is the product-facing credential layer. Egress remains the runtime\n * enforcement layer underneath it.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport type ConnectorSubject =\n | { type: \"app\" }\n | { type: \"user\"; id: string; issuer?: string }\n | {\n type: \"jwt-bearer\";\n sub: string;\n iss?: string;\n aud?: string;\n additionalClaims?: Record<string, unknown>;\n };\n\nexport interface ConnectorData {\n id?: string;\n uid?: string;\n name?: string;\n provider?: string;\n type?: string;\n scope?: string;\n status?: string;\n managed?: boolean;\n display_name?: string;\n displayName?: string;\n masked_value?: string | null;\n expires_at?: string | null;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ExternalAttributionParams {\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface ConnectorListParams extends ExternalAttributionParams {\n scope?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n}\n\nexport interface ConnectorCreateParams extends ExternalAttributionParams {\n provider: string;\n name?: string;\n uid?: string;\n type?: string;\n scope?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n value?: string;\n token?: string;\n apiKey?: string;\n api_key?: string;\n credential?: {\n field?: string;\n value: string;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\nexport interface ConnectorTokenParams extends ExternalAttributionParams {\n subject?: ConnectorSubject;\n installationId?: string;\n installation_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n resourceType?: string;\n resource_type?: string;\n resourceId?: string;\n resource_id?: string;\n scopes?: string[];\n scope?: string[];\n audience?: string[];\n validityBufferMs?: number;\n validity_buffer_ms?: number;\n}\n\nexport interface ConnectorTokenResponse {\n token: string;\n expires_at?: string | number | null;\n expiresAt?: string | number | null;\n connector?: {\n id?: string;\n uid?: string;\n type?: string;\n [key: string]: unknown;\n };\n name?: string;\n installation_id?: string;\n installationId?: string;\n subject?: ConnectorSubject | Record<string, unknown>;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorInstallation {\n id?: string;\n connector_id?: string;\n connectorId?: string;\n installation_id?: string;\n installationId?: string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n subject_type?: string;\n subjectType?: string;\n scope?: string;\n status?: string;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorOauthProvider {\n id?: string;\n provider?: string;\n display_name?: string;\n displayName?: string;\n scopes?: string[];\n branding?: Record<string, unknown>;\n enabled?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ConnectorOauthStartParams extends ExternalAttributionParams {\n provider: string;\n scope?: string;\n exposeAsEnv?: boolean;\n expose_as_env?: boolean;\n ownerUserId?: string;\n owner_user_id?: string;\n}\n\nexport interface ConnectorOauthStartResponse {\n authorize_url?: string;\n authorizeUrl?: string;\n state?: string;\n [key: string]: unknown;\n}\n\nexport interface ConnectorProjectLink {\n id?: string;\n connector_id?: string;\n connectorId?: string;\n installation_id?: string | null;\n installationId?: string | null;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n environment?: string;\n resource_type?: string | null;\n resourceType?: string | null;\n resource_id?: string | null;\n resourceId?: string | null;\n allowed_subjects?: string[];\n allowedSubjects?: string[];\n allowed_scopes?: string[];\n allowedScopes?: string[];\n mode?: string;\n effect?: string;\n external_workspace_id?: string | null;\n externalWorkspaceId?: string | null;\n external_user_id?: string | null;\n externalUserId?: string | null;\n external_project_id?: string | null;\n externalProjectId?: string | null;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorProjectLinkParams extends ExternalAttributionParams {\n connector?: string;\n connectorId?: string;\n connector_id?: string;\n installationId?: string;\n installation_id?: string;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n resourceType?: string;\n resource_type?: string;\n resourceId?: string;\n resource_id?: string;\n allowedSubjects?: string[];\n allowed_subjects?: string[];\n allowedScopes?: string[];\n allowed_scopes?: string[];\n mode?: \"token-api\" | \"token_api\" | \"brokered-env\" | \"brokered_env\" | \"plain-env\" | \"plain_env\" | string;\n effect?: \"allow\" | \"deny\" | string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ConnectorLinkListParams extends ExternalAttributionParams {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n connectorId?: string;\n connector_id?: string;\n environment?: string;\n status?: string;\n}\n\nexport interface ConnectorDefault extends ConnectorProjectLink {\n default_scope?: string;\n defaultScope?: string;\n target?: string;\n}\n\nexport interface ConnectorDefaultParams extends ConnectorProjectLinkParams {\n defaultScope?: string;\n default_scope?: string;\n target?: \"all\" | \"sandbox\" | \"computer\" | \"agent\" | \"deployment\" | string;\n}\n\nexport interface ConnectorDefaultListParams extends ConnectorLinkListParams {\n defaultScope?: string;\n default_scope?: string;\n target?: string;\n}\n\nexport interface ConnectorTrigger {\n id?: string;\n connector_id?: string;\n connectorId?: string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n environment?: string;\n destination_path?: string | null;\n destinationPath?: string | null;\n destination_url?: string | null;\n destinationUrl?: string | null;\n event_types?: string[];\n eventTypes?: string[];\n status?: string;\n provider_adapter?: \"generic\" | \"github\" | \"slack\" | string;\n providerAdapter?: \"generic\" | \"github\" | \"slack\" | string;\n signing_secret_preview?: string | null;\n signingSecretPreview?: string | null;\n webhook_signing_secret?: string;\n webhookSigningSecret?: string;\n metadata?: Record<string, unknown>;\n webhook_token?: string;\n webhookToken?: string;\n [key: string]: unknown;\n}\n\nexport interface ConnectorTriggerParams extends ExternalAttributionParams {\n connector?: string;\n connectorId?: string;\n connector_id?: string;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n destinationPath?: string;\n destination_path?: string;\n destinationUrl?: string;\n destination_url?: string;\n eventTypes?: string[];\n event_types?: string[];\n status?: string;\n providerAdapter?: \"generic\" | \"github\" | \"slack\" | string;\n provider_adapter?: \"generic\" | \"github\" | \"slack\" | string;\n webhookSigningSecret?: string;\n webhook_signing_secret?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ConnectorTriggerListParams extends ConnectorLinkListParams {}\n\nexport interface ConnectorTriggerDelivery {\n id?: string;\n trigger_id?: string;\n triggerId?: string;\n connector_id?: string;\n connectorId?: string;\n event_type?: string;\n eventType?: string;\n provider_delivery_id?: string | null;\n providerDeliveryId?: string | null;\n state?: string;\n attempts?: number;\n destination_url?: string | null;\n destinationUrl?: string | null;\n status_code?: number | null;\n statusCode?: number | null;\n error?: string | null;\n latency_ms?: number | null;\n latencyMs?: number | null;\n delivered_at?: string | null;\n deliveredAt?: string | null;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorTriggerDeliveryListParams extends ConnectorLinkListParams {\n triggerId?: string;\n trigger_id?: string;\n eventType?: string;\n event_type?: string;\n}\n\nexport interface ConnectorApplicableDefaultParams extends ExternalAttributionParams {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n target?: \"all\" | \"sandbox\" | \"computer\" | \"agent\" | \"deployment\" | string;\n resourceType?: string;\n resource_type?: string;\n resourceId?: string;\n resource_id?: string;\n}\n\nexport interface ConnectorMaterializeDefaultsParams extends ConnectorApplicableDefaultParams {\n envName?: string;\n env_name?: string;\n}\n\nexport interface ConnectorMaterializeDefaultsResult {\n applied?: number;\n results?: Array<Record<string, unknown>>;\n [key: string]: unknown;\n}\n\nexport interface SandboxConnectorBinding {\n id?: string;\n secret_id?: string;\n connector?: string;\n resource_id?: string;\n resource_type?: string;\n exposure?: string;\n expose_as_env?: string;\n env?: string;\n sync?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface SandboxConnectorAttachParams {\n connector: string;\n env: string;\n mode?: \"brokered-env\" | \"brokered_env\" | \"plain-env\" | \"plain_env\" | string;\n installationId?: string;\n installation_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface SandboxConnectorPreflightParams {\n connector?: string;\n provider?: string;\n}\n\nexport interface SandboxConnectorPreflightResult {\n sandbox_id?: string;\n sandboxId?: string;\n provider?: string;\n connector?: string;\n status?: Record<string, unknown>;\n sync?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of [\"data\", \"binding\"]) {\n if (key in p) return p[key] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of [\"data\", \"connectors\", \"items\"]) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const value of values) if (value !== undefined) return value;\n return undefined;\n}\n\nfunction externalAttributionParams(\n params: ExternalAttributionParams = {},\n): Record<string, unknown> {\n return {\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n external_project_id: pickFirst(\n params.externalProjectId,\n params.external_project_id,\n ),\n };\n}\n\nfunction queryFromListParams(\n params: ConnectorListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n scope: params.scope,\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n ...externalAttributionParams(params),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction bodyFromCreateParams(\n provider: string,\n params: Omit<ConnectorCreateParams, \"provider\">,\n): Record<string, unknown> {\n const credential =\n params.credential &&\n typeof params.credential === \"object\" &&\n !Array.isArray(params.credential)\n ? (params.credential as {\n field?: string;\n value?: string;\n [key: string]: unknown;\n })\n : undefined;\n const value = pickFirst(\n params.value,\n params.token,\n params.apiKey,\n params.api_key,\n credential?.value,\n );\n return stripUndefined({\n provider,\n type: String(params.type ?? \"api_key\").replaceAll(\"-\", \"_\"),\n name: params.name,\n uid: params.uid ?? `${provider}/${params.name ?? \"default\"}`,\n scope: params.scope,\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n ...externalAttributionParams(params),\n credential: value\n ? {\n field: credential?.field ?? \"api_key\",\n value,\n ...Object.fromEntries(\n Object.entries(credential ?? {}).filter(\n ([key]) => key !== \"value\" && key !== \"field\",\n ),\n ),\n }\n : credential,\n });\n}\n\nfunction tokenBody(params: ConnectorTokenParams = {}): Record<string, unknown> {\n return stripUndefined({\n subject: params.subject ?? { type: \"app\" },\n installation_id: pickFirst(params.installationId, params.installation_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n scopes: pickFirst(params.scopes, params.scope),\n audience: params.audience,\n ...externalAttributionParams(params),\n validity_buffer_ms: pickFirst(\n params.validityBufferMs,\n params.validity_buffer_ms,\n ),\n });\n}\n\nfunction queryFromLinkParams(\n params: ConnectorLinkListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n connector_id: pickFirst(params.connectorId, params.connector_id),\n environment: params.environment,\n status: params.status,\n ...externalAttributionParams(params),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction queryFromDefaultParams(\n params: ConnectorDefaultListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n ...queryFromLinkParams(params),\n default_scope: pickFirst(params.defaultScope, params.default_scope),\n target: params.target,\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction queryFromApplicableDefaultParams(\n params: ConnectorApplicableDefaultParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n target: params.target,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n ...externalAttributionParams(params),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction materializeDefaultsBody(\n params: ConnectorMaterializeDefaultsParams = {},\n): Record<string, unknown> {\n return stripUndefined({\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n target: params.target,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n env_name: pickFirst(params.envName, params.env_name),\n ...externalAttributionParams(params),\n });\n}\n\n\nfunction projectLinkBody(\n params: ConnectorProjectLinkParams,\n): Record<string, unknown> {\n return stripUndefined({\n connector: params.connector,\n connector_id: pickFirst(params.connectorId, params.connector_id),\n installation_id: pickFirst(params.installationId, params.installation_id),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n allowed_subjects: pickFirst(\n params.allowedSubjects,\n params.allowed_subjects,\n ),\n allowed_scopes: pickFirst(params.allowedScopes, params.allowed_scopes),\n mode: params.mode?.replaceAll(\"-\", \"_\"),\n effect: params.effect,\n ...externalAttributionParams(params),\n metadata: params.metadata,\n });\n}\n\nfunction defaultBody(params: ConnectorDefaultParams): Record<string, unknown> {\n return stripUndefined({\n ...projectLinkBody(params),\n default_scope: pickFirst(params.defaultScope, params.default_scope),\n target: params.target,\n });\n}\n\nfunction triggerBody(params: ConnectorTriggerParams): Record<string, unknown> {\n return stripUndefined({\n connector: params.connector,\n connector_id: pickFirst(params.connectorId, params.connector_id),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n destination_path: pickFirst(params.destinationPath, params.destination_path),\n destination_url: pickFirst(params.destinationUrl, params.destination_url),\n event_types: pickFirst(params.eventTypes, params.event_types),\n status: params.status,\n provider_adapter: pickFirst(params.providerAdapter, params.provider_adapter),\n webhook_signing_secret: pickFirst(\n params.webhookSigningSecret,\n params.webhook_signing_secret,\n ),\n ...externalAttributionParams(params),\n metadata: params.metadata,\n });\n}\n\nfunction queryFromTriggerDeliveryParams(\n params: ConnectorTriggerDeliveryListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n ...queryFromLinkParams(params),\n trigger_id: pickFirst(params.triggerId, params.trigger_id),\n event_type: pickFirst(params.eventType, params.event_type),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction connectorPath(connector: string): string {\n return encodeURIComponent(connector);\n}\n\nexport class Connectors {\n constructor(private readonly http: HttpClient) {}\n\n /** List Connect provider connectors visible to the current tenant/workspace. */\n async list(params: ConnectorListParams = {}): Promise<ConnectorData[]> {\n const data = await this.http.get<unknown>(\n \"/connect/connectors\",\n queryFromListParams(params),\n );\n return unwrapList<ConnectorData>(data);\n }\n\n /** Show one connector by UID or id. */\n async get(connector: string): Promise<ConnectorData> {\n const data = await this.http.get<unknown>(\n `/connect/connectors/${connectorPath(connector)}`,\n );\n return unwrap<ConnectorData>(data);\n }\n\n show(connector: string): Promise<ConnectorData> {\n return this.get(connector);\n }\n\n /** Create an API-key backed connector. Raw values are never returned later. */\n async create(\n provider: string,\n params: Omit<ConnectorCreateParams, \"provider\">,\n ): Promise<ConnectorData> {\n const data = await this.http.post<unknown>(\n \"/connect/connectors\",\n bodyFromCreateParams(provider, params),\n );\n return unwrap<ConnectorData>(data);\n }\n\n /** Request a runtime provider token for a connector. */\n async getToken(\n connector: string,\n params: ConnectorTokenParams = {},\n ): Promise<ConnectorTokenResponse> {\n const data = await this.http.post<unknown>(\n `/connect/token/${connectorPath(connector)}`,\n tokenBody(params),\n );\n return unwrap<ConnectorTokenResponse>(data);\n }\n\n token(\n connector: string,\n params: ConnectorTokenParams = {},\n ): Promise<ConnectorTokenResponse> {\n return this.getToken(connector, params);\n }\n\n /** List OAuth app providers available for end-user authorization. */\n async oauthProviders(): Promise<ConnectorOauthProvider[]> {\n const data = await this.http.get<unknown>(\"/connect/oauth/providers\");\n return unwrapList<ConnectorOauthProvider>(data);\n }\n\n /** Start an OAuth authorization flow for a provider-backed connector. */\n async startOauth(\n params: ConnectorOauthStartParams,\n ): Promise<ConnectorOauthStartResponse> {\n const data = await this.http.post<unknown>(\n \"/connect/oauth/start\",\n stripUndefined({\n provider: params.provider,\n scope: params.scope,\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n ...externalAttributionParams(params),\n }),\n );\n return unwrap<ConnectorOauthStartResponse>(data);\n }\n\n /** List connector installations/grants. */\n async installations(\n params: ConnectorLinkListParams = {},\n ): Promise<ConnectorInstallation[]> {\n const data = await this.http.get<unknown>(\n \"/connect/installations\",\n queryFromLinkParams(params),\n );\n return unwrapList<ConnectorInstallation>(data);\n }\n\n /** List project/environment connector links. */\n async projectLinks(\n params: ConnectorLinkListParams = {},\n ): Promise<ConnectorProjectLink[]> {\n const data = await this.http.get<unknown>(\n \"/connect/project-links\",\n queryFromLinkParams(params),\n );\n return unwrapList<ConnectorProjectLink>(data);\n }\n\n /** List inherited connector defaults for tenant/workspace/project runtimes. */\n async defaults(\n params: ConnectorDefaultListParams = {},\n ): Promise<ConnectorDefault[]> {\n const data = await this.http.get<unknown>(\n \"/connect/defaults\",\n queryFromDefaultParams(params),\n );\n return unwrapList<ConnectorDefault>(data);\n }\n\n /** Resolve inherited connector defaults that apply to a runtime target. */\n async applicableDefaults(\n params: ConnectorApplicableDefaultParams = {},\n ): Promise<ConnectorDefault[]> {\n const data = await this.http.get<unknown>(\n \"/connect/defaults/applicable\",\n queryFromApplicableDefaultParams(params),\n );\n return unwrapList<ConnectorDefault>(data);\n }\n\n /** Materialize inherited connector defaults onto one runtime resource. */\n async materializeDefaults(\n params: ConnectorMaterializeDefaultsParams,\n ): Promise<ConnectorMaterializeDefaultsResult> {\n const data = await this.http.post<unknown>(\n \"/connect/defaults/materialize\",\n materializeDefaultsBody(params),\n );\n return unwrap<ConnectorMaterializeDefaultsResult>(data);\n }\n\n /** Create an inherited connector default for future runtime resources. */\n async createDefault(\n params: ConnectorDefaultParams,\n ): Promise<ConnectorDefault> {\n const data = await this.http.post<unknown>(\n \"/connect/defaults\",\n defaultBody(params),\n );\n return unwrap<ConnectorDefault>(data);\n }\n\n /** Delete an inherited connector default. */\n async deleteDefault(id: string): Promise<void> {\n await this.http.delete<unknown>(`/connect/defaults/${connectorPath(id)}`);\n }\n\n /** List inbound provider trigger forwarding definitions. */\n async triggers(\n params: ConnectorTriggerListParams = {},\n ): Promise<ConnectorTrigger[]> {\n const data = await this.http.get<unknown>(\n \"/connect/triggers\",\n queryFromLinkParams(params),\n );\n return unwrapList<ConnectorTrigger>(data);\n }\n\n /** Create an inbound provider trigger forwarding definition. */\n async createTrigger(params: ConnectorTriggerParams): Promise<ConnectorTrigger> {\n const data = await this.http.post<unknown>(\n \"/connect/triggers\",\n triggerBody(params),\n );\n return unwrap<ConnectorTrigger>(data);\n }\n\n /** List inbound provider trigger delivery attempts. */\n async triggerDeliveries(\n params: ConnectorTriggerDeliveryListParams = {},\n ): Promise<ConnectorTriggerDelivery[]> {\n const data = await this.http.get<unknown>(\n \"/connect/trigger-deliveries\",\n queryFromTriggerDeliveryParams(params),\n );\n return unwrapList<ConnectorTriggerDelivery>(data);\n }\n\n /** List delivery attempts for one trigger. */\n async triggerDeliveryHistory(triggerId: string): Promise<ConnectorTriggerDelivery[]> {\n const data = await this.http.get<unknown>(\n `/connect/triggers/${connectorPath(triggerId)}/deliveries`,\n );\n return unwrapList<ConnectorTriggerDelivery>(data);\n }\n\n /** Delete an inbound provider trigger forwarding definition. */\n async deleteTrigger(id: string): Promise<void> {\n await this.http.delete<unknown>(`/connect/triggers/${connectorPath(id)}`);\n }\n\n /** Link a connector to a project/environment/resource. */\n async createProjectLink(\n params: ConnectorProjectLinkParams,\n ): Promise<ConnectorProjectLink> {\n const data = await this.http.post<unknown>(\n \"/connect/project-links\",\n projectLinkBody(params),\n );\n return unwrap<ConnectorProjectLink>(data);\n }\n\n /** Delete a project connector link. */\n async deleteProjectLink(id: string): Promise<void> {\n await this.http.delete<unknown>(`/connect/project-links/${connectorPath(id)}`);\n }\n}\n\nclass RuntimeConnectors {\n constructor(\n private readonly http: HttpClient,\n private readonly basePath: string,\n ) {}\n\n /** List provider connector bindings for this runtime resource. */\n async list(): Promise<SandboxConnectorBinding[]> {\n const data = await this.http.get<unknown>(this.basePath);\n return unwrapList<SandboxConnectorBinding>(data);\n }\n\n /** Attach a connector to this runtime resource as a brokered env var. */\n async attach(\n params: SandboxConnectorAttachParams,\n ): Promise<SandboxConnectorBinding> {\n const data = await this.http.post<unknown>(\n this.basePath,\n stripUndefined({\n connector: params.connector,\n env_name: params.env,\n mode: params.mode?.replaceAll(\"-\", \"_\"),\n installation_id: pickFirst(\n params.installationId,\n params.installation_id,\n ),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n ...externalAttributionParams(params),\n }),\n );\n return unwrap<SandboxConnectorBinding>(data);\n }\n\n /** Detach a connector binding by binding id or connector UID. */\n async detach(bindingOrConnector: string): Promise<void> {\n await this.http.delete<unknown>(`${this.basePath}/${connectorPath(bindingOrConnector)}`);\n }\n\n /** Sync or materialize connector placeholder env vars for this runtime resource. */\n async sync(): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(`${this.basePath}/sync`, {});\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Verify a required connector is attached before agent work begins. */\n async preflight(\n params: SandboxConnectorPreflightParams = {},\n ): Promise<SandboxConnectorPreflightResult> {\n const data = await this.http.post<unknown>(\n `${this.basePath}/preflight`,\n stripUndefined(params as Record<string, unknown>),\n );\n return unwrap<SandboxConnectorPreflightResult>(data);\n }\n}\n\nexport class SandboxConnectors extends RuntimeConnectors {\n constructor(http: HttpClient, sandboxId: string) {\n super(http, `/sandboxes/${sandboxId}/connectors`);\n }\n}\n\nexport class ComputerConnectors extends RuntimeConnectors {\n constructor(http: HttpClient, computerId: string) {\n super(http, `/computers/${computerId}/connectors`);\n }\n}\n\nexport class DeploymentConnectors extends RuntimeConnectors {\n constructor(http: HttpClient, deploymentId: string) {\n super(http, `/deployments/${deploymentId}/connectors`);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\n// ─── Custom Domains ───────────────────────────────────────────────────────────\n\nexport type CustomDomainStatus =\n | \"pending\"\n | \"verified\"\n | \"active\"\n | \"failed\"\n | \"removed\";\n\nexport interface CustomDomainData {\n id: string;\n computer_id: string;\n tenant_id: string;\n fqdn: string;\n status: CustomDomainStatus;\n /** The CNAME target the user must point their DNS record at. */\n verification_target: string;\n /** Human-readable DNS setup instructions. */\n instructions: string;\n verified_at: string | null;\n tls_issued_at: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CustomDomainRegisterParams {\n fqdn: string;\n}\n\n// ─── CustomDomains resource ──────────────────────────────────────────────────\n\n/**\n * Custom domain management for a Computer.\n *\n * Accessed via `computer.domains`.\n *\n * ## Workflow\n * ```ts\n * // 1. Register the domain\n * const domain = await computer.domains.register(\"app.example.com\");\n * console.log(domain.instructions);\n * // => \"Add a CNAME record: app.example.com → <slug>.sandbox.miosa.ai\"\n *\n * // 2. Add the CNAME in your DNS registrar, then...\n *\n * // 3. Verify ownership\n * const verified = await computer.domains.verify(domain.id);\n * // Caddy auto-issues a TLS certificate after this point.\n * ```\n */\nexport class CustomDomains {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/domains`;\n }\n\n /**\n * Register a custom FQDN for this computer.\n *\n * Returns the domain record with `verification_target` and `instructions`\n * showing which CNAME record to add. The domain starts in `pending` status.\n *\n * @param fqdn - The fully-qualified domain name to register\n * (e.g. `\"app.example.com\"`). Must be lowercase RFC 1123, ≤ 253 chars,\n * and must NOT end with `miosa.ai`.\n */\n async register(fqdn: string): Promise<CustomDomainData> {\n const resp = await this.http.post<{ data: CustomDomainData }>(this.base(), {\n fqdn,\n });\n return resp.data;\n }\n\n /**\n * List all custom domains registered for this computer.\n */\n async list(): Promise<CustomDomainData[]> {\n const resp = await this.http.get<{ data: CustomDomainData[] }>(this.base());\n return resp.data;\n }\n\n /**\n * Verify DNS ownership of a registered domain.\n *\n * The control plane resolves the domain's CNAME and confirms it points to\n * the expected `verification_target`. On success the domain transitions to\n * `verified` status and Caddy will auto-issue a TLS certificate on the next\n * inbound request.\n *\n * @param id - The custom domain record id (from `register()` or `list()`).\n * @throws `ApiError` with code `CNAME_MISMATCH` if the CNAME doesn't match.\n * @throws `ApiError` with code `DNS_LOOKUP_FAILED` if DNS is unreachable.\n */\n async verify(id: string): Promise<CustomDomainData> {\n const resp = await this.http.post<{ data: CustomDomainData }>(\n `${this.base()}/${id}/verify`,\n );\n return resp.data;\n }\n\n /**\n * Delete a custom domain mapping.\n *\n * The domain is immediately removed from the routing cache and Caddy will\n * stop serving it on the next cert renewal cycle.\n *\n * @param id - The custom domain record id.\n */\n async delete(id: string): Promise<void> {\n await this.http.delete<{ id: string; deleted: boolean }>(\n `${this.base()}/${id}`,\n );\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n ClickParams,\n CursorInfo,\n DesktopActionResult,\n DoubleClickParams,\n DragParams,\n KeyParams,\n LaunchParams,\n ScrollParams,\n TypeParams,\n WaitParams,\n WindowFocusParams,\n WindowInfo,\n} from \"../types.js\";\n\nexport class Desktop {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/desktop`;\n }\n\n /** Capture a screenshot of the desktop. Returns raw PNG bytes. */\n async screenshot(): Promise<Uint8Array> {\n return this.http.getBinary(`${this.base()}/screenshot`);\n }\n\n /** Click at the given coordinates. */\n async click(\n x: number,\n y: number,\n button: ClickParams[\"button\"] = \"left\",\n ): Promise<DesktopActionResult> {\n return this.http.post<DesktopActionResult>(`${this.base()}/click`, {\n x,\n y,\n button,\n });\n }\n\n /** Explicit left-button click. Alias for click(x, y, \"left\"). */\n async leftClick(x: number, y: number): Promise<DesktopActionResult> {\n return this.click(x, y, \"left\");\n }\n\n /** Right-button click. Alias for click(x, y, \"right\"). */\n async rightClick(x: number, y: number): Promise<DesktopActionResult> {\n return this.click(x, y, \"right\");\n }\n\n /** Middle-button click. Alias for click(x, y, \"middle\"). */\n async middleClick(x: number, y: number): Promise<DesktopActionResult> {\n return this.click(x, y, \"middle\");\n }\n\n /** Double-click at the given coordinates. */\n async doubleClick(x: number, y: number): Promise<DesktopActionResult> {\n const params: DoubleClickParams = { x, y };\n return this.http.post<DesktopActionResult>(\n `${this.base()}/double-click`,\n params,\n );\n }\n\n /** Move the mouse pointer without clicking. */\n async moveMouse(x: number, y: number): Promise<DesktopActionResult> {\n return this.http.post<DesktopActionResult>(`${this.base()}/move`, { x, y });\n }\n\n /** Type text into the currently focused element. */\n async type(text: string, delay?: number): Promise<DesktopActionResult> {\n const params: TypeParams = { text, ...(delay !== undefined && { delay }) };\n return this.http.post<DesktopActionResult>(`${this.base()}/type`, params);\n }\n\n /** Alias for `type(text)` used by simple computer-control loops. */\n async write(text: string, delay?: number): Promise<DesktopActionResult> {\n return this.type(text, delay);\n }\n\n /** Send a key or key combination (e.g. \"Enter\", \"ctrl+c\"). */\n async key(key: string): Promise<DesktopActionResult> {\n const params: KeyParams = { key };\n return this.http.post<DesktopActionResult>(`${this.base()}/key`, params);\n }\n\n /** Alias for `key(key)` used by simple computer-control loops. */\n async press(key: string): Promise<DesktopActionResult> {\n return this.key(key);\n }\n\n /** Scroll in a direction at an optional position. */\n async scroll(\n direction: ScrollParams[\"direction\"],\n clicks: number = 3,\n x?: number,\n y?: number,\n ): Promise<DesktopActionResult> {\n const params: ScrollParams = {\n direction,\n clicks,\n ...(x !== undefined && { x }),\n ...(y !== undefined && { y }),\n };\n return this.http.post<DesktopActionResult>(`${this.base()}/scroll`, params);\n }\n\n /** Click and drag from one coordinate to another. */\n async drag(\n fromX: number,\n fromY: number,\n toX: number,\n toY: number,\n ): Promise<DesktopActionResult> {\n const params: DragParams = {\n from_x: fromX,\n from_y: fromY,\n to_x: toX,\n to_y: toY,\n };\n return this.http.post<DesktopActionResult>(`${this.base()}/drag`, params);\n }\n\n /** Wait for the given number of seconds. */\n async wait(seconds: number): Promise<DesktopActionResult> {\n const params: WaitParams = { seconds };\n return this.http.post<DesktopActionResult>(`${this.base()}/wait`, params);\n }\n\n /** List all open windows on the desktop. */\n async windows(): Promise<WindowInfo[]> {\n const result = await this.http.get<{ windows: WindowInfo[] }>(\n `${this.base()}/windows`,\n );\n return result.windows;\n }\n\n /** Get the current cursor position. */\n async cursor(): Promise<CursorInfo> {\n return this.http.get<CursorInfo>(`${this.base()}/cursor`);\n }\n\n /** Bring the given window into focus. */\n async focusWindow(windowId: string): Promise<DesktopActionResult> {\n const params: WindowFocusParams = { window_id: windowId };\n return this.http.post<DesktopActionResult>(\n `${this.base()}/window/focus`,\n params,\n );\n }\n\n /** Launch an application by name. */\n async launch(appName: string): Promise<DesktopActionResult> {\n const params: LaunchParams = { app_name: appName };\n return this.http.post<DesktopActionResult>(`${this.base()}/launch`, params);\n }\n}\n","/**\n * Egress audit log — paginated query + live tail.\n *\n * Backed by:\n * GET /api/v1/egress/audit\n * GET /api/v1/egress/audit/:id\n *\n * `client.audit.tail()` long-polls the REST endpoint and yields new\n * events as they arrive. The sandbox-scoped variant\n * (`sandbox.audit.tail()`) upgrades to a live SSE connection backed by\n * `GET /sandboxes/:id/audit/stream` so the tail latency is\n * sub-second.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface EgressAuditEvent {\n id: string;\n action?: string;\n effect?: string;\n host?: string;\n method?: string;\n path?: string;\n status_code?: number;\n actor_id?: string;\n resource_id?: string;\n resource_type?: string;\n policy_id?: string;\n rule_id?: string;\n external_user_id?: string;\n external_workspace_id?: string;\n metadata?: Record<string, unknown>;\n inserted_at?: string;\n timestamp?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AuditListParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n host?: string;\n action?: string;\n since?: string;\n until?: string;\n limit?: number;\n cursor?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n}\n\nexport interface AuditTailParams extends AuditListParams {\n pollIntervalMs?: number;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\ninterface WireEnvelope<T> {\n data?: T;\n event?: T;\n items?: T;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"event\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"events\", \"audit\", \"items\"]) {\n if (Array.isArray(p[k])) return p[k] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const v of values) if (v !== undefined) return v;\n return undefined;\n}\n\nfunction listQuery(\n params: AuditListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n host: params.host,\n action: params.action,\n since: params.since,\n until: params.until,\n limit: params.limit,\n cursor: params.cursor,\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class EgressAudit {\n constructor(protected readonly http: HttpClient) {}\n\n /** List audit events with optional filters. */\n async list(params: AuditListParams = {}): Promise<EgressAuditEvent[]> {\n const data = await this.http.get<unknown>(\n \"/egress/audit\",\n listQuery(params),\n );\n return unwrapList<EgressAuditEvent>(data);\n }\n\n /** Get a single audit event by id. */\n async get(id: string): Promise<EgressAuditEvent> {\n const data = await this.http.get<WireEnvelope<EgressAuditEvent>>(\n `/egress/audit/${id}`,\n );\n return unwrap<EgressAuditEvent>(data);\n }\n\n /**\n * Long-poll the audit endpoint and yield new events as they appear.\n *\n * Tenant-wide `client.audit.tail()` is REST-based long polling. A\n * live WebSocket / SSE tail is only available for the sandbox-scoped\n * variant — see {@link SandboxAudit.tail}.\n */\n async *tail(\n params: AuditTailParams = {},\n ): AsyncIterableIterator<EgressAuditEvent> {\n const pollMs = params.pollIntervalMs ?? 2000;\n let since: string | undefined = params.since;\n const seen = new Set<string>();\n while (true) {\n const queryParams: AuditListParams = { ...params };\n if (since !== undefined) queryParams.since = since;\n const data = await this.http.get<unknown>(\n \"/egress/audit\",\n listQuery(queryParams),\n );\n const events = unwrapList<EgressAuditEvent>(data);\n for (const event of events) {\n if (event.id && seen.has(event.id)) continue;\n if (event.id) seen.add(event.id);\n yield event;\n const ts = event.inserted_at ?? event.timestamp;\n if (typeof ts === \"string\") since = ts;\n }\n await sleep(pollMs);\n }\n }\n}\n\n// ── Resource-scoped wrappers ─────────────────────────────────────────────────\n\n/**\n * Sandbox-bound view of {@link EgressAudit}. `list()` pre-scopes\n * `resource_id` + `resource_type=\"sandbox\"`. `tail()` upgrades to the\n * per-sandbox SSE stream for sub-second tail latency.\n */\nexport class SandboxAudit {\n protected readonly resourceType: string = \"sandbox\";\n private readonly delegate: EgressAudit;\n\n constructor(\n protected readonly http: HttpClient,\n protected readonly resourceId: string,\n ) {\n this.delegate = new EgressAudit(http);\n }\n\n list(params: AuditListParams = {}): Promise<EgressAuditEvent[]> {\n return this.delegate.list({\n ...params,\n resource_id: params.resourceId ?? params.resource_id ?? this.resourceId,\n resource_type:\n params.resourceType ?? params.resource_type ?? this.resourceType,\n });\n }\n\n get(id: string): Promise<EgressAuditEvent> {\n return this.delegate.get(id);\n }\n\n /** SSE tail of the sandbox-scoped audit stream. */\n async *tail(\n params: AuditTailParams = {},\n ): AsyncIterableIterator<EgressAuditEvent> {\n const streamPath =\n this.resourceType === \"sandbox\"\n ? `/sandboxes/${this.resourceId}/audit/stream`\n : `/computers/${this.resourceId}/audit/stream`;\n try {\n const stream = this.http.stream<EgressAuditEvent>(streamPath, {\n method: \"GET\",\n });\n for await (const event of stream) {\n yield event;\n }\n } catch {\n // SSE endpoint unavailable — fall back to long-poll on the\n // tenant-wide endpoint with this resource pre-filtered.\n yield* this.delegate.tail({\n ...params,\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n });\n }\n }\n}\n\n/** Computer-bound audit — same surface, `resource_type=\"computer\"`. */\nexport class ComputerAudit extends SandboxAudit {\n protected readonly resourceType: string = \"computer\";\n}\n","/**\n * Egress network — policies, allowlist, suggestions.\n *\n * Backed by:\n * GET /api/v1/egress/policies\n * POST /api/v1/egress/policies\n * PATCH /api/v1/egress/policies/:id (or no id for tenant default)\n *\n * GET /api/v1/egress/allowlist\n * POST /api/v1/egress/allowlist\n * DELETE /api/v1/egress/allowlist/:id\n *\n * GET /api/v1/egress/audit/suggestions\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport type EgressPolicyMode = \"enforce\" | \"audit_only\";\nexport type EgressRuleEffect = \"allow\" | \"deny\";\n\nexport interface EgressAllowlistRule {\n id: string;\n host: string;\n effect: EgressRuleEffect | string;\n methods?: string[];\n path_glob?: string | null;\n policy_id?: string | null;\n resource_id?: string | null;\n resource_type?: string | null;\n note?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\nexport interface EgressPolicyData {\n id: string;\n name?: string;\n mode: EgressPolicyMode | string;\n default_effect: EgressRuleEffect | string;\n description?: string | null;\n resource_id?: string | null;\n resource_type?: string | null;\n rules?: EgressAllowlistRule[];\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface EgressSuggestion {\n host: string;\n methods?: string[];\n path_glob?: string | null;\n count?: number;\n first_seen?: string;\n last_seen?: string;\n resource_id?: string | null;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AllowParams {\n methods?: string[];\n pathGlob?: string;\n path_glob?: string;\n policyId?: string;\n policy_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n note?: string;\n}\n\nexport interface PolicyCreateParams {\n name: string;\n mode?: EgressPolicyMode | string;\n defaultEffect?: EgressRuleEffect | string;\n default_effect?: EgressRuleEffect | string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n description?: string;\n}\n\nexport interface PolicyUpdateParams {\n mode?: EgressPolicyMode | string;\n defaultEffect?: EgressRuleEffect | string;\n default_effect?: EgressRuleEffect | string;\n name?: string;\n description?: string;\n}\n\nexport interface ModeParams {\n policyId?: string;\n policy_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\nexport interface SuggestionsParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n since?: string;\n}\n\nexport interface PolicyListParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\nexport interface RulesListParams {\n policyId?: string;\n policy_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\ninterface WireEnvelope<T> {\n data?: T;\n policy?: T;\n rule?: T;\n items?: T;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"policy\", \"rule\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"policies\",\n \"rules\",\n \"allowlist\",\n \"suggestions\",\n \"items\",\n ]) {\n if (Array.isArray(p[k])) return p[k] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const v of values) if (v !== undefined) return v;\n return undefined;\n}\n\nfunction ruleBody(\n host: string,\n params: AllowParams,\n effect: EgressRuleEffect,\n): Record<string, unknown> {\n return stripUndefined({\n host,\n effect,\n methods: params.methods,\n path_glob: pickFirst(params.pathGlob, params.path_glob),\n policy_id: pickFirst(params.policyId, params.policy_id),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n note: params.note,\n });\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class EgressNetwork {\n constructor(protected readonly http: HttpClient) {}\n\n // ── allowlist ─────────────────────────────────────────────────────────────\n\n /** Add an `allow` rule for `host` to the allowlist. */\n async allow(\n host: string,\n params: AllowParams = {},\n ): Promise<EgressAllowlistRule> {\n const data = await this.http.post<WireEnvelope<EgressAllowlistRule>>(\n \"/egress/allowlist\",\n ruleBody(host, params, \"allow\"),\n );\n return unwrap<EgressAllowlistRule>(data);\n }\n\n /** Add a `deny` rule for `host` to the allowlist. */\n async deny(\n host: string,\n params: AllowParams = {},\n ): Promise<EgressAllowlistRule> {\n const data = await this.http.post<WireEnvelope<EgressAllowlistRule>>(\n \"/egress/allowlist\",\n ruleBody(host, params, \"deny\"),\n );\n return unwrap<EgressAllowlistRule>(data);\n }\n\n /** List allowlist rules. */\n async rules(params: RulesListParams = {}): Promise<EgressAllowlistRule[]> {\n const query = stripUndefined({\n policy_id: pickFirst(params.policyId, params.policy_id),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/egress/allowlist\", query);\n return unwrapList<EgressAllowlistRule>(data);\n }\n\n /** Delete an allowlist rule by id. */\n async removeRule(ruleId: string): Promise<void> {\n await this.http.delete<unknown>(`/egress/allowlist/${ruleId}`);\n }\n\n // ── policies ──────────────────────────────────────────────────────────────\n\n /** List egress policies. */\n async policies(params: PolicyListParams = {}): Promise<EgressPolicyData[]> {\n const query = stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/egress/policies\", query);\n return unwrapList<EgressPolicyData>(data);\n }\n\n /** Create an egress policy. */\n async createPolicy(params: PolicyCreateParams): Promise<EgressPolicyData> {\n const body = stripUndefined({\n name: params.name,\n mode: params.mode ?? \"enforce\",\n default_effect: pickFirst(\n params.defaultEffect,\n params.default_effect,\n \"deny\" as EgressRuleEffect,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n description: params.description,\n });\n const data = await this.http.post<WireEnvelope<EgressPolicyData>>(\n \"/egress/policies\",\n body,\n );\n return unwrap<EgressPolicyData>(data);\n }\n\n /** Update an egress policy by id. */\n async updatePolicy(\n policyId: string,\n params: PolicyUpdateParams,\n ): Promise<EgressPolicyData> {\n const body = stripUndefined({\n mode: params.mode,\n default_effect: pickFirst(params.defaultEffect, params.default_effect),\n name: params.name,\n description: params.description,\n });\n const data = await this.http.patch<WireEnvelope<EgressPolicyData>>(\n `/egress/policies/${policyId}`,\n body,\n );\n return unwrap<EgressPolicyData>(data);\n }\n\n // ── mode helpers ──────────────────────────────────────────────────────────\n\n /** Set the policy to `mode=\"enforce\"` — denied egress is blocked. */\n async lockdown(params: ModeParams = {}): Promise<EgressPolicyData> {\n return this.setMode(\"enforce\", params);\n }\n\n /** Set the policy to `mode=\"audit_only\"` — log but do not block. */\n async observe(params: ModeParams = {}): Promise<EgressPolicyData> {\n return this.setMode(\"audit_only\", params);\n }\n\n private async setMode(\n mode: EgressPolicyMode,\n params: ModeParams,\n ): Promise<EgressPolicyData> {\n const policyId = pickFirst(params.policyId, params.policy_id);\n const resourceId = pickFirst(params.resourceId, params.resource_id);\n const resourceType = pickFirst(params.resourceType, params.resource_type);\n\n if (policyId) {\n return this.updatePolicy(policyId, { mode });\n }\n\n const body =\n resourceId !== undefined && resourceType !== undefined\n ? stripUndefined({\n mode,\n resource_id: resourceId,\n resource_type: resourceType,\n })\n : { mode };\n const data = await this.http.patch<WireEnvelope<EgressPolicyData>>(\n \"/egress/policies\",\n body,\n );\n return unwrap<EgressPolicyData>(data);\n }\n\n // ── suggestions ───────────────────────────────────────────────────────────\n\n /** AI-generated allowlist suggestions from recent denied egress. */\n async suggestions(\n params: SuggestionsParams = {},\n ): Promise<EgressSuggestion[]> {\n const query = stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n since: params.since ?? \"7d\",\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n \"/egress/audit/suggestions\",\n query,\n );\n return unwrapList<EgressSuggestion>(data);\n }\n}\n\n// ── Resource-scoped wrappers ─────────────────────────────────────────────────\n\n/**\n * Sandbox-bound view of {@link EgressNetwork}. Pre-scopes\n * `resource_id` + `resource_type=\"sandbox\"` on every call.\n */\nexport class SandboxNetwork {\n protected readonly resourceType: string = \"sandbox\";\n private readonly delegate: EgressNetwork;\n\n constructor(\n http: HttpClient,\n protected readonly resourceId: string,\n ) {\n this.delegate = new EgressNetwork(http);\n }\n\n private resolvedResourceId(params: {\n resourceId?: string;\n resource_id?: string;\n }): string {\n return params.resourceId ?? params.resource_id ?? this.resourceId;\n }\n\n private resolvedResourceType(params: {\n resourceType?: string;\n resource_type?: string;\n }): string {\n return params.resourceType ?? params.resource_type ?? this.resourceType;\n }\n\n allow(host: string, params: AllowParams = {}): Promise<EgressAllowlistRule> {\n return this.delegate.allow(host, {\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n deny(host: string, params: AllowParams = {}): Promise<EgressAllowlistRule> {\n return this.delegate.deny(host, {\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n rules(params: RulesListParams = {}): Promise<EgressAllowlistRule[]> {\n return this.delegate.rules({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n removeRule(ruleId: string): Promise<void> {\n return this.delegate.removeRule(ruleId);\n }\n\n lockdown(params: { policyId?: string } = {}): Promise<EgressPolicyData> {\n const body: ModeParams = {\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n };\n if (params.policyId !== undefined) body.policyId = params.policyId;\n return this.delegate.lockdown(body);\n }\n\n observe(params: { policyId?: string } = {}): Promise<EgressPolicyData> {\n const body: ModeParams = {\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n };\n if (params.policyId !== undefined) body.policyId = params.policyId;\n return this.delegate.observe(body);\n }\n\n suggestions(params: { since?: string } = {}): Promise<EgressSuggestion[]> {\n const body: SuggestionsParams = {\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n };\n if (params.since !== undefined) body.since = params.since;\n return this.delegate.suggestions(body);\n }\n\n policies(): Promise<EgressPolicyData[]> {\n return this.delegate.policies({\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n });\n }\n}\n\n/** Computer-bound network — same surface, `resource_type=\"computer\"`. */\nexport class ComputerNetwork extends SandboxNetwork {\n protected readonly resourceType: string = \"computer\";\n}\n","/**\n * Egress secrets — encrypted API key + OAuth credential vault.\n *\n * Backed by:\n * POST /api/v1/egress/secrets\n * GET /api/v1/egress/secrets\n * GET /api/v1/egress/secrets/:id\n * PATCH /api/v1/egress/secrets/:id (rotate)\n * DELETE /api/v1/egress/secrets/:id\n *\n * POST /api/v1/egress/bindings\n * GET /api/v1/egress/bindings\n * DELETE /api/v1/egress/bindings/:id\n *\n * GET /api/v1/egress/oauth/providers\n * POST /api/v1/egress/oauth/start\n * GET /api/v1/egress/oauth/status?state=...\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport type EgressSecretType =\n | \"api_key\"\n | \"oauth_token\"\n | \"bearer\"\n | \"basic\"\n | \"generic\";\n\nexport type EgressSecretScope =\n | \"user\"\n | \"workspace\"\n | \"tenant\"\n | \"external_user\"\n | \"external_workspace\";\n\nexport interface EgressSecretData {\n id: string;\n name?: string;\n type?: EgressSecretType | string;\n scope?: EgressSecretScope | string;\n workspace_id?: string | null;\n owner_user_id?: string | null;\n external_user_id?: string | null;\n external_workspace_id?: string | null;\n resource_id?: string | null;\n resource_type?: string | null;\n masked_value?: string | null;\n expires_at?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface EgressBindingData {\n id: string;\n secret_id: string;\n resource_id: string;\n resource_type: string;\n expose_as_env: string;\n created_at?: string;\n [key: string]: unknown;\n}\n\nexport interface OauthProvider {\n name: string;\n display_name?: string;\n scopes?: string[];\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SecretSetParams {\n name: string;\n value: string;\n type?: EgressSecretType | string;\n scope?: EgressSecretScope | string;\n exposeAsEnv?: string;\n expose_as_env?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n refreshToken?: string;\n refresh_token?: string;\n expiresAt?: string;\n expires_at?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SecretListParams {\n scope?: string;\n type?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\nexport interface SecretRotateParams {\n newValue?: string;\n new_value?: string;\n value?: string;\n refreshToken?: string;\n refresh_token?: string;\n expiresAt?: string;\n expires_at?: string;\n}\n\nexport interface BindingCreateParams {\n secretId?: string;\n secret_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n exposeAsEnv?: string;\n expose_as_env?: string;\n}\n\nexport interface BindingListParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n secretId?: string;\n secret_id?: string;\n}\n\nexport interface OauthConnectParams {\n provider: string;\n exposeAsEnv?: string;\n expose_as_env?: string;\n scope?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n redirectUri?: string;\n redirect_uri?: string;\n}\n\nexport interface OauthStartResult {\n authorize_url: string;\n authorizeUrl?: string;\n state: string;\n provider?: string;\n expires_at?: string;\n [key: string]: unknown;\n}\n\nexport interface OauthStatusResult {\n status: string;\n state?: string;\n secret_id?: string;\n error?: string;\n message?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\ninterface WireEnvelope<T> {\n data?: T;\n secret?: T;\n binding?: T;\n items?: T;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"secret\", \"binding\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"secrets\", \"bindings\", \"providers\", \"items\"]) {\n if (Array.isArray(p[k])) return p[k] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const v of values) if (v !== undefined) return v;\n return undefined;\n}\n\nfunction setBody(params: SecretSetParams): Record<string, unknown> {\n return stripUndefined({\n name: params.name,\n value: params.value,\n type: params.type ?? \"api_key\",\n scope: params.scope ?? \"user\",\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n refresh_token: pickFirst(params.refreshToken, params.refresh_token),\n expires_at: pickFirst(params.expiresAt, params.expires_at),\n metadata: params.metadata,\n });\n}\n\nfunction listQuery(\n params: SecretListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n scope: params.scope,\n type: params.type,\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction rotateBody(params: SecretRotateParams): Record<string, unknown> {\n return stripUndefined({\n value: pickFirst(params.newValue, params.new_value, params.value),\n refresh_token: pickFirst(params.refreshToken, params.refresh_token),\n expires_at: pickFirst(params.expiresAt, params.expires_at),\n });\n}\n\nfunction bindingBody(params: BindingCreateParams): Record<string, unknown> {\n return stripUndefined({\n secret_id: pickFirst(params.secretId, params.secret_id),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n });\n}\n\nfunction bindingQuery(\n params: BindingListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n secret_id: pickFirst(params.secretId, params.secret_id),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction oauthBody(params: OauthConnectParams): Record<string, unknown> {\n return stripUndefined({\n provider: params.provider,\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n scope: params.scope,\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n redirect_uri: pickFirst(params.redirectUri, params.redirect_uri),\n });\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// ── OAuth flow handle ────────────────────────────────────────────────────────\n\n/**\n * A pending OAuth flow.\n *\n * The SDK does NOT auto-open a browser — the caller is responsible for\n * surfacing `authorizeUrl` to the end user. Once the user grants\n * consent, call `waitForCompletion()` to poll the upstream provider\n * status.\n */\nexport class OAuthFlow {\n readonly authorizeUrl: string;\n readonly state: string;\n readonly provider?: string;\n readonly data: OauthStartResult;\n private readonly http: HttpClient;\n\n constructor(http: HttpClient, payload: OauthStartResult, provider?: string) {\n this.http = http;\n this.authorizeUrl = payload.authorize_url ?? payload.authorizeUrl ?? \"\";\n this.state = payload.state ?? \"\";\n if (provider !== undefined) {\n this.provider = provider;\n }\n this.data = payload;\n }\n\n /**\n * Poll `GET /egress/oauth/status?state=...` until the flow completes.\n *\n * Returns the status payload once the upstream provider issues\n * tokens. Rejects with a `TimeoutError`-style Error if the flow does\n * not complete within `timeoutSec` seconds, or if the upstream\n * returns a failed status.\n */\n async waitForCompletion(\n options: { timeoutSec?: number; pollIntervalMs?: number } = {},\n ): Promise<OauthStatusResult> {\n const timeoutSec = options.timeoutSec ?? 300;\n const pollMs = options.pollIntervalMs ?? 2000;\n const deadline = Date.now() + timeoutSec * 1000;\n while (Date.now() < deadline) {\n const data = await this.http.get<unknown>(\"/egress/oauth/status\", {\n state: this.state,\n });\n const payload = unwrap<OauthStatusResult>(data) ?? {};\n const status = (payload as OauthStatusResult).status;\n if (\n status === \"completed\" ||\n status === \"ready\" ||\n status === \"succeeded\"\n ) {\n return payload as OauthStatusResult;\n }\n if (status === \"failed\" || status === \"error\" || status === \"denied\") {\n throw new Error(\n `OAuth flow ${this.state} ended in status=${status}: ${\n payload.error ?? payload.message ?? \"no detail\"\n }`,\n );\n }\n await sleep(pollMs);\n }\n throw new Error(\n `OAuth flow ${this.state} did not complete within ${timeoutSec}s`,\n );\n }\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class EgressSecrets {\n constructor(protected readonly http: HttpClient) {}\n\n /**\n * Create a secret. When `exposeAsEnv` is provided together with\n * `resourceId` the backend also creates a binding so the value is\n * injected as an env-var on that resource.\n */\n async set(params: SecretSetParams): Promise<EgressSecretData> {\n const data = await this.http.post<WireEnvelope<EgressSecretData>>(\n \"/egress/secrets\",\n setBody(params),\n );\n return unwrap<EgressSecretData>(data);\n }\n\n /** List secrets. */\n async list(params: SecretListParams = {}): Promise<EgressSecretData[]> {\n const data = await this.http.get<unknown>(\n \"/egress/secrets\",\n listQuery(params),\n );\n return unwrapList<EgressSecretData>(data);\n }\n\n /** Get a single secret by id. */\n async get(id: string): Promise<EgressSecretData> {\n const data = await this.http.get<WireEnvelope<EgressSecretData>>(\n `/egress/secrets/${id}`,\n );\n return unwrap<EgressSecretData>(data);\n }\n\n /** Rotate the secret's value. */\n async rotate(\n id: string,\n params: SecretRotateParams | string,\n ): Promise<EgressSecretData> {\n const body =\n typeof params === \"string\"\n ? rotateBody({ newValue: params })\n : rotateBody(params);\n const data = await this.http.patch<WireEnvelope<EgressSecretData>>(\n `/egress/secrets/${id}`,\n body,\n );\n return unwrap<EgressSecretData>(data);\n }\n\n /** Delete a secret. */\n async delete(id: string): Promise<void> {\n await this.http.delete<unknown>(`/egress/secrets/${id}`);\n }\n\n // ── bindings ───────────────────────────────────────────────────────────────\n\n /** Bind a secret to a resource as an env var. */\n async createBinding(params: BindingCreateParams): Promise<EgressBindingData> {\n const data = await this.http.post<WireEnvelope<EgressBindingData>>(\n \"/egress/bindings\",\n bindingBody(params),\n );\n return unwrap<EgressBindingData>(data);\n }\n\n /** List secret bindings. */\n async listBindings(\n params: BindingListParams = {},\n ): Promise<EgressBindingData[]> {\n const data = await this.http.get<unknown>(\n \"/egress/bindings\",\n bindingQuery(params),\n );\n return unwrapList<EgressBindingData>(data);\n }\n\n /** Delete a binding. */\n async deleteBinding(id: string): Promise<void> {\n await this.http.delete<unknown>(`/egress/bindings/${id}`);\n }\n\n // ── OAuth Connect ──────────────────────────────────────────────────────────\n\n /** List OAuth providers visible to the current tenant. */\n async providers(): Promise<OauthProvider[]> {\n const data = await this.http.get<unknown>(\"/egress/oauth/providers\");\n return unwrapList<OauthProvider>(data);\n }\n\n /**\n * Start an OAuth Connect flow.\n *\n * Returns an {@link OAuthFlow} — the caller must surface\n * `flow.authorizeUrl` to the end user (the SDK does NOT open the\n * browser) and then call `flow.waitForCompletion()` to receive the\n * resulting secret id.\n */\n async connect(params: OauthConnectParams): Promise<OAuthFlow> {\n const data = await this.http.post<WireEnvelope<OauthStartResult>>(\n \"/egress/oauth/start\",\n oauthBody(params),\n );\n const payload = unwrap<OauthStartResult>(data) ?? ({} as OauthStartResult);\n return new OAuthFlow(this.http, payload, params.provider);\n }\n}\n\n// ── Resource-scoped wrappers ─────────────────────────────────────────────────\n\n/**\n * Sandbox-bound view of {@link EgressSecrets}. Pre-scopes\n * `resource_id` + `resource_type=\"sandbox\"` on every call.\n */\nexport class SandboxSecrets {\n protected readonly resourceType: string = \"sandbox\";\n private readonly delegate: EgressSecrets;\n\n constructor(\n http: HttpClient,\n protected readonly resourceId: string,\n ) {\n this.delegate = new EgressSecrets(http);\n }\n\n private resolvedResourceId(params: {\n resourceId?: string;\n resource_id?: string;\n }): string {\n return params.resourceId ?? params.resource_id ?? this.resourceId;\n }\n\n private resolvedResourceType(params: {\n resourceType?: string;\n resource_type?: string;\n }): string {\n return params.resourceType ?? params.resource_type ?? this.resourceType;\n }\n\n set(params: SecretSetParams): Promise<EgressSecretData> {\n return this.delegate.set({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n list(params: SecretListParams = {}): Promise<EgressSecretData[]> {\n return this.delegate.list({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n get(id: string): Promise<EgressSecretData> {\n return this.delegate.get(id);\n }\n\n rotate(\n id: string,\n params: SecretRotateParams | string,\n ): Promise<EgressSecretData> {\n return this.delegate.rotate(id, params);\n }\n\n delete(id: string): Promise<void> {\n return this.delegate.delete(id);\n }\n\n connect(params: OauthConnectParams): Promise<OAuthFlow> {\n return this.delegate.connect({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n listBindings(params: BindingListParams = {}): Promise<EgressBindingData[]> {\n return this.delegate.listBindings({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n}\n\n/** Computer-bound secrets — same shape, `resource_type=\"computer\"`. */\nexport class ComputerSecrets extends SandboxSecrets {\n protected readonly resourceType: string = \"computer\";\n}\n","import EventEmitter from \"node:events\";\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\n/** Producer names that can be subscribed to. */\nexport type EventProducer =\n | \"window\"\n | \"clipboard\"\n | \"file\"\n | \"process\"\n | \"idle\";\n\n/** Options for `Events.subscribe()`. */\nexport interface EventSubscribeOptions {\n /** At least one producer is required. */\n subscribe: EventProducer[];\n /** Paths to watch for the `file` producer. Defaults to `[\"/home/user\"]`. */\n paths?: string[];\n /** Idle threshold in seconds for the `idle` producer. Defaults to 30. */\n idleThresholdSec?: number;\n}\n\n// ── Emitted event payload types (indexed by event type string) ────────────────\n\nexport interface WindowFocusChangedPayload {\n window_id: string;\n pid: string;\n title: string;\n}\n\nexport interface WindowOpenedPayload {\n window_id: string;\n pid: string;\n title: string;\n}\n\nexport interface WindowClosedPayload {\n window_id: string;\n pid: string;\n title: string;\n}\n\nexport interface ClipboardChangedPayload {\n size_bytes: number;\n}\n\nexport interface FileCreatedPayload {\n path: string;\n}\n\nexport interface FileModifiedPayload {\n path: string;\n}\n\nexport interface FileDeletedPayload {\n path: string;\n}\n\nexport interface ProcessStartedPayload {\n pid: number;\n cmd: string;\n ppid: string;\n}\n\nexport interface ProcessStoppedPayload {\n pid: number;\n cmd: string;\n}\n\nexport interface IdleInactivePayload {\n idle_ms: number;\n}\n\nexport interface IdleActivePayload {\n idle_ms: number;\n}\n\nexport interface ProducerUnavailablePayload {\n producer: EventProducer;\n reason: string;\n}\n\n/** Union of all typed event envelopes. */\nexport type ComputerEvent =\n | {\n type: \"window.focus_changed\";\n timestamp: string;\n payload: WindowFocusChangedPayload;\n }\n | { type: \"window.opened\"; timestamp: string; payload: WindowOpenedPayload }\n | { type: \"window.closed\"; timestamp: string; payload: WindowClosedPayload }\n | {\n type: \"clipboard.changed\";\n timestamp: string;\n payload: ClipboardChangedPayload;\n }\n | { type: \"file.created\"; timestamp: string; payload: FileCreatedPayload }\n | { type: \"file.modified\"; timestamp: string; payload: FileModifiedPayload }\n | { type: \"file.deleted\"; timestamp: string; payload: FileDeletedPayload }\n | {\n type: \"process.started\";\n timestamp: string;\n payload: ProcessStartedPayload;\n }\n | {\n type: \"process.stopped\";\n timestamp: string;\n payload: ProcessStoppedPayload;\n }\n | { type: \"idle.inactive\"; timestamp: string; payload: IdleInactivePayload }\n | { type: \"idle.active\"; timestamp: string; payload: IdleActivePayload }\n | {\n type: \"producer.unavailable\";\n timestamp: string;\n payload: ProducerUnavailablePayload;\n };\n\n// ── EventStream ───────────────────────────────────────────────────────────────\n\ntype EventMap = {\n [K in ComputerEvent[\"type\"]]: [\n Extract<ComputerEvent, { type: K }>[\"payload\"],\n ];\n} & {\n error: [Error];\n close: [{ code: number; reason: string }];\n};\n\n/**\n * Typed event stream returned by `computer.events.subscribe()`.\n *\n * ```ts\n * const stream = computer.events.subscribe({ subscribe: [\"file\", \"process\"] });\n * stream.on(\"file.created\", e => console.log(\"created:\", e.path));\n * stream.on(\"process.started\", e => console.log(\"pid:\", e.pid));\n * stream.on(\"error\", err => console.error(err));\n * await stream.close();\n * ```\n */\nexport class EventStream extends EventEmitter<EventMap> {\n private ws: WebSocket | import(\"ws\").WebSocket | null = null;\n private closed = false;\n\n /** @internal — use `Events.subscribe()` instead. */\n constructor(ws: WebSocket | import(\"ws\").WebSocket) {\n super();\n this.ws = ws;\n this.attachHandlers();\n }\n\n private attachHandlers() {\n if (!this.ws) return;\n const ws = this.ws;\n\n ws.onmessage = (ev: MessageEvent) => {\n try {\n const raw = typeof ev.data === \"string\" ? ev.data : String(ev.data);\n const event = JSON.parse(raw) as ComputerEvent;\n // EventEmitter.emit requires (event, ...args) — payload as first arg.\n this.emit(event.type as keyof EventMap, event.payload as never);\n } catch {\n // Ignore malformed frames.\n }\n };\n\n ws.onerror = (ev: Event) => {\n const err =\n ev instanceof ErrorEvent ? ev.error : new Error(\"WebSocket error\");\n this.emit(\"error\", err instanceof Error ? err : new Error(String(err)));\n };\n\n ws.onclose = (ev: CloseEvent) => {\n this.closed = true;\n this.emit(\"close\", { code: ev.code, reason: ev.reason });\n };\n }\n\n /** Close the event stream. Idempotent. */\n async close(): Promise<void> {\n if (this.closed || !this.ws) return;\n this.closed = true;\n this.ws.close(1000, \"client closed\");\n this.ws = null;\n }\n\n /** Whether the stream has been closed (by client or server). */\n get isClosed(): boolean {\n return this.closed;\n }\n}\n\n// ── Events resource ───────────────────────────────────────────────────────────\n\n/**\n * Events resource attached to every `Computer` instance.\n * Exposes `subscribe()` for real-time in-VM event streaming.\n */\nexport class Events {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly computerId: string;\n\n constructor(baseUrl: string, apiKey: string, computerId: string) {\n this.baseUrl = baseUrl;\n this.apiKey = apiKey;\n this.computerId = computerId;\n }\n\n /**\n * Open a WebSocket subscription for the specified producers.\n *\n * ```ts\n * const stream = computer.events.subscribe({\n * subscribe: [\"window\", \"clipboard\", \"file\"],\n * paths: [\"/home/user\", \"/workspace\"],\n * });\n * stream.on(\"window.focus_changed\", e => ...);\n * stream.on(\"file.created\", e => ...);\n * stream.on(\"error\", err => ...);\n * await stream.close();\n * ```\n */\n subscribe(options: EventSubscribeOptions): EventStream {\n const wsUrl = this.buildWsUrl(options);\n const ws = createWebSocket(wsUrl, this.apiKey);\n return new EventStream(ws);\n }\n\n private buildWsUrl(options: EventSubscribeOptions): string {\n // Convert the HTTP base URL to a WS URL.\n // baseUrl is something like \"https://api.miosa.ai/api/v1\"\n const wsBase = this.baseUrl\n .replace(/^https:\\/\\//, \"wss://\")\n .replace(/^http:\\/\\//, \"ws://\")\n .replace(/\\/$/, \"\");\n\n const params = new URLSearchParams();\n params.set(\"subscribe\", options.subscribe.join(\",\"));\n\n if (options.paths && options.paths.length > 0) {\n params.set(\"paths\", options.paths.join(\",\"));\n }\n if (options.idleThresholdSec !== undefined) {\n params.set(\"idle_threshold_sec\", String(options.idleThresholdSec));\n }\n\n return `${wsBase}/computers/${this.computerId}/events?${params.toString()}`;\n }\n}\n\n// ── WebSocket factory (Node vs browser) ──────────────────────────────────────\n\n/**\n * Creates a WebSocket connection. Uses the native browser `WebSocket` when\n * running in a browser context, or the `ws` npm package in Node.js.\n *\n * The `Authorization: Bearer <key>` header is attached via a subprotocol\n * trick in the browser (WS spec doesn't allow custom headers) — the server\n * accepts the key in the `Sec-WebSocket-Protocol` header as a fallback.\n * In Node.js the `Authorization` header is set directly.\n */\n/**\n * Creates a WebSocket connection with `Sec-WebSocket-Protocol: miosa-events-v1`.\n *\n * The subprotocol must be negotiated for the server to accept the connection.\n * Future protocol versions (miosa-events-v2, etc.) can be added server-side\n * without breaking v1 clients.\n *\n * In the browser the `Authorization` header cannot be set directly — the API\n * key is passed as a secondary subprotocol entry (`bearer.<key>`). The server\n * echoes only `miosa-events-v1` back.\n *\n * In Node.js the `Authorization` header is set directly.\n */\nfunction createWebSocket(\n url: string,\n apiKey: string,\n): WebSocket | import(\"ws\").WebSocket {\n const protocol = \"miosa-events-v1\";\n\n if (\n typeof window !== \"undefined\" &&\n typeof window.WebSocket !== \"undefined\"\n ) {\n // Browser: real protocol first, then auth fallback subprotocol.\n return new window.WebSocket(url, [protocol, `bearer.${apiKey}`]);\n }\n\n // Node.js: use the `ws` package with a proper Authorization header.\n // Dynamic require so bundlers targeting browsers don't break.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const WS = require(\"ws\") as typeof import(\"ws\").WebSocket;\n return new WS(url, [protocol], {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n}\n","import { HttpClient } from \"../http.js\";\nimport type { ExecParams, ExecPythonParams, ExecResult } from \"../types.js\";\n\n// ── Exec stream types ────────────────────────────────────────────────────────\n\n/** Options for `Exec.stream()`. */\nexport interface ExecStreamOptions {\n /** Command to execute. */\n command: string;\n /** Optional arguments. */\n args?: string[];\n /** Optional environment variables as KEY=VALUE strings. */\n env?: string[];\n /** Working directory inside the VM. */\n cwd?: string;\n /** Allocate a PTY. Defaults to false. */\n tty?: boolean;\n /** Terminal rows (when tty=true). */\n rows?: number;\n /** Terminal columns (when tty=true). */\n cols?: number;\n}\n\ntype ExecStreamEventMap = {\n stdout: [data: Uint8Array];\n stderr: [data: Uint8Array];\n exit: [code: number];\n error: [err: Error];\n close: [code: number, reason: string];\n};\n\n/**\n * Live bidirectional exec stream backed by a `miosa-exec-v1` WebSocket.\n *\n * The binary wire protocol (1-byte frame ID) is handled by the server-side\n * proxy and envd. The SDK exposes typed events on the received frames:\n *\n * - `stdout` — chunk of stdout bytes\n * - `stderr` — chunk of stderr bytes\n * - `exit` — process exit code (stream ends after this)\n * - `error` — WebSocket error\n * - `close` — WebSocket closed\n *\n * Obtain via `computer.exec.stream({ command: \"bash\", tty: true })`.\n *\n * ```ts\n * const s = computer.exec.stream({ command: \"python3\", args: [\"script.py\"] });\n * s.on(\"stdout\", chunk => process.stdout.write(chunk));\n * s.on(\"exit\", code => console.log(\"exit:\", code));\n * s.sendStdin(new TextEncoder().encode(\"hello\\n\"));\n * await s.close();\n * ```\n */\nexport class ExecStreamHandle {\n private ws: WebSocket | import(\"ws\").WebSocket | null = null;\n private closed = false;\n private readonly listeners = new Map<\n keyof ExecStreamEventMap,\n Array<(...args: unknown[]) => void>\n >();\n\n // Frame IDs — must match the envd binary protocol.\n private static readonly FRAME_STDIN = 0x00;\n private static readonly FRAME_STDOUT = 0x01;\n private static readonly FRAME_STDERR = 0x02;\n private static readonly FRAME_EXIT = 0x03;\n\n /** @internal — use `Exec.stream()` instead. */\n constructor(ws: WebSocket | import(\"ws\").WebSocket) {\n this.ws = ws;\n this.attachHandlers();\n }\n\n // ── EventEmitter-style API ──────────────────────────────────────────────────\n\n on<K extends keyof ExecStreamEventMap>(\n event: K,\n handler: (...args: ExecStreamEventMap[K]) => void,\n ): this {\n const list = this.listeners.get(event) ?? [];\n list.push(handler as (...args: unknown[]) => void);\n this.listeners.set(event, list);\n return this;\n }\n\n off<K extends keyof ExecStreamEventMap>(\n event: K,\n handler: (...args: ExecStreamEventMap[K]) => void,\n ): this {\n const list = this.listeners.get(event) ?? [];\n const idx = list.indexOf(handler as (...args: unknown[]) => void);\n if (idx !== -1) list.splice(idx, 1);\n return this;\n }\n\n private emit<K extends keyof ExecStreamEventMap>(\n event: K,\n ...args: ExecStreamEventMap[K]\n ): void {\n for (const fn of this.listeners.get(event) ?? []) {\n fn(...(args as unknown[]));\n }\n }\n\n // ── Write API ───────────────────────────────────────────────────────────────\n\n /**\n * Send stdin bytes to the running process.\n * Prepends the 0x00 frame ID byte automatically.\n */\n sendStdin(data: Uint8Array): void {\n if (this.closed || !this.ws) return;\n const frame = new Uint8Array(1 + data.length);\n frame[0] = ExecStreamHandle.FRAME_STDIN;\n frame.set(data, 1);\n (this.ws as WebSocket).send(frame);\n }\n\n /**\n * Send a terminal resize event.\n * Encodes as 0x05 + rows (u16 BE) + cols (u16 BE).\n */\n sendResize(rows: number, cols: number): void {\n if (this.closed || !this.ws) return;\n const frame = new Uint8Array(5);\n const view = new DataView(frame.buffer);\n frame[0] = 0x05;\n view.setUint16(1, rows, false);\n view.setUint16(3, cols, false);\n (this.ws as WebSocket).send(frame);\n }\n\n /** Close the stream. Idempotent. */\n async close(): Promise<void> {\n if (this.closed || !this.ws) return;\n this.closed = true;\n (this.ws as WebSocket).close(1000, \"client closed\");\n this.ws = null;\n }\n\n /** Whether the stream has ended (by client or server). */\n get isClosed(): boolean {\n return this.closed;\n }\n\n // ── Internal ────────────────────────────────────────────────────────────────\n\n private attachHandlers() {\n if (!this.ws) return;\n const ws = this.ws;\n\n ws.onmessage = (ev: MessageEvent) => {\n let bytes: Uint8Array;\n if (ev.data instanceof ArrayBuffer) {\n bytes = new Uint8Array(ev.data);\n } else if (ev.data instanceof Uint8Array) {\n bytes = ev.data;\n } else {\n // Unexpected type (e.g. string on a text frame) — ignore.\n return;\n }\n if (bytes.length === 0) return;\n\n const frameId = bytes[0];\n const payload = bytes.slice(1);\n\n switch (frameId) {\n case ExecStreamHandle.FRAME_STDOUT:\n this.emit(\"stdout\", payload);\n break;\n case ExecStreamHandle.FRAME_STDERR:\n this.emit(\"stderr\", payload);\n break;\n case ExecStreamHandle.FRAME_EXIT: {\n const view = new DataView(payload.buffer, payload.byteOffset);\n const code = view.getUint32(0, false);\n this.emit(\"exit\", code);\n break;\n }\n default:\n // Unknown frame IDs — ignore, per protocol spec.\n break;\n }\n };\n\n ws.onerror = (ev: Event) => {\n const err =\n ev instanceof ErrorEvent ? ev.error : new Error(\"WebSocket error\");\n this.emit(\"error\", err instanceof Error ? err : new Error(String(err)));\n };\n\n ws.onclose = (ev: CloseEvent) => {\n this.closed = true;\n this.emit(\"close\", ev.code, ev.reason);\n };\n }\n}\n\n// ── Exec resource ─────────────────────────────────────────────────────────────\n\n/**\n * Exec resource attached to every `Computer` instance.\n * Exposes `bash()`, `python()`, and `stream()` for command execution.\n */\nexport class Exec {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/exec`;\n }\n\n /**\n * Run a shell command inside the computer.\n * @param command - Shell command string to execute.\n * @param timeout - Optional timeout in seconds.\n */\n async bash(command: string, timeout?: number): Promise<ExecResult> {\n const params: ExecParams = {\n command,\n ...(timeout !== undefined && { timeout }),\n };\n return this.http.post<ExecResult>(this.base(), params);\n }\n\n /**\n * Execute Python code inside the computer.\n * @param code - Python source code string.\n * @param timeout - Optional timeout in seconds.\n */\n async python(code: string, timeout?: number): Promise<ExecResult> {\n const params: ExecPythonParams = {\n code,\n ...(timeout !== undefined && { timeout }),\n };\n return this.http.post<ExecResult>(`${this.base()}/python`, params);\n }\n\n /**\n * Open a live binary exec stream using the `miosa-exec-v1` subprotocol.\n *\n * The WebSocket negotiates `Sec-WebSocket-Protocol: miosa-exec-v1` to\n * ensure version compatibility. Future protocol versions can be added\n * server-side without breaking v1 clients.\n *\n * ```ts\n * const stream = computer.exec.stream({ command: \"bash\", tty: true, rows: 24, cols: 80 });\n * stream.on(\"stdout\", data => process.stdout.write(data));\n * stream.on(\"exit\", code => console.log(\"done:\", code));\n * stream.sendStdin(new TextEncoder().encode(\"echo hello\\n\"));\n * ```\n */\n stream(options: ExecStreamOptions): ExecStreamHandle {\n const wsUrl = this.buildWsUrl(options);\n const ws = createWebSocket(wsUrl, this.http.apiKey, \"miosa-exec-v1\");\n return new ExecStreamHandle(ws);\n }\n\n private buildWsUrl(options: ExecStreamOptions): string {\n const wsBase = this.http.baseUrl\n .replace(/^https:\\/\\//, \"wss://\")\n .replace(/^http:\\/\\//, \"ws://\")\n .replace(/\\/$/, \"\");\n\n const params = new URLSearchParams();\n params.set(\"command\", options.command);\n\n if (options.args && options.args.length > 0) {\n for (const arg of options.args) params.append(\"args\", arg);\n }\n if (options.env && options.env.length > 0) {\n for (const e of options.env) params.append(\"env\", e);\n }\n if (options.cwd) params.set(\"cwd\", options.cwd);\n if (options.tty) params.set(\"tty\", \"true\");\n if (options.rows !== undefined) params.set(\"rows\", String(options.rows));\n if (options.cols !== undefined) params.set(\"cols\", String(options.cols));\n\n return `${wsBase}/computers/${this.computerId}/exec/stream?${params.toString()}`;\n }\n}\n\n// ── WebSocket factory (Node vs browser) ──────────────────────────────────────\n\n/**\n * Creates a WebSocket connection with the given subprotocol.\n *\n * In the browser the `Authorization` header cannot be set directly — the API\n * key is passed via a `bearer.<key>` subprotocol as a fallback; the real\n * protocol is the first entry in the list and is what the server echoes back.\n *\n * In Node.js the `Authorization` header is set directly and only the protocol\n * string is offered.\n */\nfunction createWebSocket(\n url: string,\n apiKey: string,\n protocol: string,\n): WebSocket | import(\"ws\").WebSocket {\n if (\n typeof window !== \"undefined\" &&\n typeof window.WebSocket !== \"undefined\"\n ) {\n // Browser: protocol first, then the auth fallback.\n return new window.WebSocket(url, [protocol, `bearer.${apiKey}`]);\n }\n\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const WS = require(\"ws\") as typeof import(\"ws\").WebSocket;\n return new WS(url, [protocol], {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n CopyParams,\n DirEntry,\n DirListResult,\n FileDeleteParams,\n FileEntry,\n FileExportParams,\n FileExportResult,\n FileListResult,\n FileStat,\n MkdirParams,\n} from \"../types.js\";\n\nfunction toBase64(bytes: Uint8Array): string {\n // Works on both Node (Buffer available) and browsers/Deno/Bun (btoa).\n const maybeBuffer = (\n globalThis as {\n Buffer?: { from(b: Uint8Array): { toString(e: string): string } };\n }\n ).Buffer;\n if (maybeBuffer) return maybeBuffer.from(bytes).toString(\"base64\");\n let bin = \"\";\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]!);\n return btoa(bin);\n}\n\nexport class Files {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/files`;\n }\n\n /**\n * Upload a local file to the computer.\n *\n * In a Node.js environment pass a Buffer or Blob; in a browser pass a File\n * or Blob. The remote path is where the file will be written inside the VM.\n *\n * @param content - File content as Blob, Buffer, Uint8Array, or string.\n * @param remotePath - Absolute path inside the VM (e.g. /home/user/file.txt).\n * @param filename - Optional filename hint (defaults to basename of remotePath).\n */\n async upload(\n content: Blob | Uint8Array | string,\n remotePath: string,\n _filename?: string,\n ): Promise<FileEntry> {\n // The hosted API is JSON-only — it doesn't accept multipart uploads.\n // We send {path, content_base64} so binary payloads round-trip cleanly.\n let bytes: Uint8Array;\n if (typeof content === \"string\") {\n bytes = new TextEncoder().encode(content);\n } else if (content instanceof Uint8Array) {\n bytes = content;\n } else {\n // Blob → bytes\n const buf = await content.arrayBuffer();\n bytes = new Uint8Array(buf);\n }\n\n const contentBase64 = toBase64(bytes);\n\n return this.http.post<FileEntry>(`${this.base()}/write`, {\n path: remotePath,\n content_base64: contentBase64,\n });\n }\n\n /**\n * List files and directories at the given path inside the VM.\n */\n async list(path: string): Promise<FileListResult> {\n return this.http.get<FileListResult>(this.base(), { path });\n }\n\n /**\n * Download a file from the computer. Returns raw bytes.\n */\n async download(path: string): Promise<Uint8Array> {\n const url = `${this.base()}/download`;\n // Build query manually so getBinary can still use the helper\n return this.http.getBinary(`${url}?path=${encodeURIComponent(path)}`);\n }\n\n /**\n * Export a file from the computer and receive a temporary signed URL.\n */\n async export(path: string): Promise<FileExportResult> {\n const params: FileExportParams = { path };\n return this.http.post<FileExportResult>(`${this.base()}/export`, params);\n }\n\n /**\n * Delete a file or directory inside the computer.\n */\n async delete(path: string): Promise<void> {\n const params: FileDeleteParams = { path };\n return this.http.delete<void>(this.base(), params);\n }\n\n // ── Phase-7 stdlib-parity methods ──────────────────────────────────────────\n\n /**\n * Stat a path inside the computer. Does not follow symlinks (lstat semantics).\n *\n * Returns `{path, size, mode, is_dir, is_symlink, symlink_target?, modified_at}`.\n */\n async stat(path: string): Promise<FileStat> {\n const result = await this.http.post<{ data: FileStat }>(\n `${this.base()}/stat`,\n { path },\n );\n return result.data;\n }\n\n /**\n * Create a directory inside the computer.\n *\n * @param path - Absolute path to create (e.g. `/home/user/project`).\n * @param options - `{ recursive?: boolean, mode?: number }`. Defaults: recursive=true, mode=0o755.\n */\n async mkdir(path: string, options: MkdirParams = {}): Promise<void> {\n const modeStr =\n options.mode !== undefined\n ? options.mode.toString(8).padStart(4, \"0\")\n : \"0755\";\n\n await this.http.post<unknown>(`${this.base()}/mkdir`, {\n path,\n recursive: options.recursive ?? true,\n mode: modeStr,\n });\n }\n\n /**\n * Rename (move) a path inside the computer.\n *\n * Creates the destination parent directory if it does not exist.\n */\n async rename(from: string, to: string): Promise<void> {\n await this.http.post<unknown>(`${this.base()}/rename`, { from, to });\n }\n\n /**\n * Copy a file or directory inside the computer.\n *\n * @param from - Source absolute path.\n * @param to - Destination absolute path.\n * @param options - `{ recursive?: boolean }`. Required when source is a directory.\n */\n async copy(\n from: string,\n to: string,\n options: CopyParams = {},\n ): Promise<void> {\n await this.http.post<unknown>(`${this.base()}/copy`, {\n from,\n to,\n recursive: options.recursive ?? false,\n });\n }\n\n /**\n * Change permissions on a path inside the computer.\n *\n * @param path - Absolute path inside the VM.\n * @param mode - Unix mode bits as an octal integer (e.g. `0o755`) or string (`\"0755\"`).\n */\n async chmod(path: string, mode: number | string): Promise<void> {\n const modeStr =\n typeof mode === \"number\" ? mode.toString(8).padStart(4, \"0\") : mode;\n await this.http.post<unknown>(`${this.base()}/chmod`, {\n path,\n mode: modeStr,\n });\n }\n\n /**\n * Return a rich directory listing for the given path.\n *\n * Each entry includes `{name, is_dir, is_symlink, size, modified_at}`.\n * Richer than `list()` which uses `find` under the hood.\n *\n * @param path - Absolute path to list.\n * @param _withTypes - Kept for API symmetry; types are always returned.\n */\n async readdir(path: string, _withTypes = true): Promise<DirEntry[]> {\n const result = await this.http.get<DirListResult>(\n `${this.base()}/readdir`,\n { path },\n );\n return result.data.entries;\n }\n\n // ── Read/write text helpers ─────────────────────────────────────────────────\n\n /**\n * Write a UTF-8 string to a file inside the computer.\n * Convenience wrapper around `upload()`.\n */\n async writeFile(path: string, content: string): Promise<void> {\n await this.upload(content, path);\n }\n\n /**\n * Read a file from the computer and return its contents as a UTF-8 string.\n */\n async readFile(path: string): Promise<string> {\n const bytes = await this.download(path);\n return new TextDecoder().decode(bytes);\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type { NetworkPolicyData, NetworkPolicySetParams } from \"../types.js\";\n\n/**\n * Manage egress network policy for a computer.\n *\n * A policy is a list of rules evaluated top-to-bottom, with a `default_effect`\n * applied when no rule matches.\n *\n * Example — block IMDS and allow everything else:\n * ```ts\n * await computer.networkPolicy.set({\n * default_effect: \"allow\",\n * rules: [\n * { effect: \"deny\", destination: \"169.254.169.254/32\" },\n * { effect: \"deny\", destination: \"metadata.google.internal\" },\n * ],\n * });\n * ```\n *\n * Example — allowlist mode (deny all by default, allow only example.com):\n * ```ts\n * await computer.networkPolicy.set({\n * default_effect: \"deny\",\n * rules: [\n * { effect: \"allow\", destination: \"example.com\", ports: \"443\", protocol: \"tcp\" },\n * ],\n * });\n * ```\n */\nexport class NetworkPolicy {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n /**\n * Get the current network policy.\n * Returns an empty allow-all policy if none is set.\n */\n async get(): Promise<NetworkPolicyData> {\n const response = await this.http.get<{ data: NetworkPolicyData }>(\n `/computers/${this.computerId}/network-policy`,\n );\n return response.data;\n }\n\n /**\n * Set (create or replace) the network policy.\n * Triggers immediate nftables update on the host — running VMs pick up\n * the new rules without a restart.\n */\n async set(params: NetworkPolicySetParams): Promise<NetworkPolicyData> {\n const response = await this.http.put<{ data: NetworkPolicyData }>(\n `/computers/${this.computerId}/network-policy`,\n params,\n );\n return response.data;\n }\n\n /**\n * Reset to the default policy (allow all egress).\n * Idempotent — safe to call even if no policy was set.\n */\n async reset(): Promise<void> {\n await this.http.delete<unknown>(\n `/computers/${this.computerId}/network-policy`,\n );\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n ComputerData,\n ComputerId,\n ComputerViewerPasswordRotation,\n ComputerViewerPasswordStatus,\n} from \"../types.js\";\nimport { Checkpoints } from \"./checkpoints.js\";\nimport { ComputerAutoStop } from \"./computer-auto-stop.js\";\nimport { ComputerEnv } from \"./computer-env.js\";\nimport { ComputerLogs } from \"./computer-logs.js\";\nimport { ComputerOsa } from \"./computer-osa.js\";\nimport { ComputerPorts } from \"./computer-ports.js\";\nimport { ComputerTerminal } from \"./computer-terminal.js\";\nimport { ComputerVolumes } from \"./computer-volumes.js\";\nimport { ComputerConnectors } from \"./connectors.js\";\nimport { CustomDomains } from \"./custom_domains.js\";\nimport { Desktop } from \"./desktop.js\";\nimport { ComputerAudit } from \"./egressAudit.js\";\nimport { ComputerNetwork } from \"./egressNetwork.js\";\nimport { ComputerSecrets } from \"./egressSecrets.js\";\nimport { Events } from \"./events.js\";\nimport { Exec } from \"./exec.js\";\nimport { Files } from \"./files.js\";\nimport { NetworkPolicy } from \"./network_policy.js\";\nimport {\n AgentRuns,\n type AgentRun,\n type AgentRunCreateParams,\n} from \"./agent-runs.js\";\n\n/**\n * Per-computer inbox config (GET/PATCH /computers/:id/inbox).\n * Defined inline because it has no separate file (small surface).\n */\nexport class ComputerInbox {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n async get(): Promise<Record<string, unknown>> {\n const raw = await this.http.get<unknown>(\n `/computers/${this.computerId}/inbox`,\n );\n return unwrapData(raw);\n }\n\n async update(\n fields: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(fields).filter(([, v]) => v !== undefined),\n );\n const raw = await this.http.patch<unknown>(\n `/computers/${this.computerId}/inbox`,\n body,\n );\n return unwrapData(raw);\n }\n}\n\nfunction unwrapData(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport type ComputerPromptOptions = Omit<\n AgentRunCreateParams,\n \"prompt\" | \"targetKind\" | \"targetId\" | \"sandboxId\" | \"computerId\"\n>;\n\n/**\n * A Computer instance bound to a specific computer ID.\n *\n * Returned by `miosa.computers.create()`, `miosa.computers.get()`, and\n * `miosa.computers.list()`. Exposes all per-computer actions as methods and\n * sub-resources as properties.\n */\nexport class Computer {\n /** Raw data from the API. Refresh with `await computer.reload()`. */\n data: ComputerData;\n\n /** Desktop control — screenshot, click, type, drag, etc. */\n readonly desktop: Desktop;\n\n /** Execute shell and Python commands. */\n readonly exec: Exec;\n\n /** File operations — upload, download, list, delete. */\n readonly files: Files;\n\n /** Firecracker checkpoint (snapshot) management. */\n readonly checkpoints: Checkpoints;\n\n /** Egress network policy — allow/deny rules applied at the host TAP level. */\n readonly networkPolicy: NetworkPolicy;\n\n /** Real-time event subscription (window, clipboard, file, process, idle). */\n readonly events: Events;\n\n /** Custom domain management — map your own FQDNs to this sandbox. */\n readonly domains: CustomDomains;\n\n /** PTY session management — create/resize. */\n readonly terminal: ComputerTerminal;\n\n /** In-VM OSA agent dispatch — submitTask, cancelTask, status, configure. */\n readonly osa: ComputerOsa;\n\n /** Idle auto-stop config — get/update. */\n readonly autoStop: ComputerAutoStop;\n\n /** Per-computer inbox config — get/update. */\n readonly inbox: ComputerInbox;\n\n /** Encrypted env var CRUD — list, set, update, delete, bulkSet. */\n readonly env: ComputerEnv;\n\n /** VM log read + SSE stream. */\n readonly logs: ComputerLogs;\n\n /** Per-port visibility control — list, get, create, update, delete. */\n readonly ports: ComputerPorts;\n\n /** Volume attachment — list, attach, detach. */\n readonly volumes: ComputerVolumes;\n\n /** MIOSA Connect provider bindings scoped to this computer. */\n readonly connectors: ComputerConnectors;\n\n /** Encrypted secrets + OAuth credentials scoped to this computer. */\n readonly secrets: ComputerSecrets;\n\n /** Egress allowlist + policies scoped to this computer. */\n readonly network: ComputerNetwork;\n\n /** Egress audit log + live tail scoped to this computer. */\n readonly audit: ComputerAudit;\n\n private readonly http: HttpClient;\n\n constructor(http: HttpClient, data: ComputerData) {\n this.http = http;\n this.data = data;\n\n const id = data.id as string;\n this.desktop = new Desktop(http, id);\n this.exec = new Exec(http, id);\n this.files = new Files(http, id);\n this.checkpoints = new Checkpoints(http, id);\n this.networkPolicy = new NetworkPolicy(http, id);\n this.events = new Events(http.baseUrl, http.apiKey, id);\n this.domains = new CustomDomains(http, id);\n this.terminal = new ComputerTerminal(http, id);\n this.osa = new ComputerOsa(http, id);\n this.autoStop = new ComputerAutoStop(http, id);\n this.inbox = new ComputerInbox(http, id);\n this.env = new ComputerEnv(http, id);\n this.logs = new ComputerLogs(http, id);\n this.ports = new ComputerPorts(http, id);\n this.volumes = new ComputerVolumes(http, id);\n this.connectors = new ComputerConnectors(http, id);\n // Egress (security) namespaces — pre-scoped to this computer id.\n this.secrets = new ComputerSecrets(http, id);\n this.network = new ComputerNetwork(http, id);\n this.audit = new ComputerAudit(http, id);\n }\n\n get id(): ComputerId {\n return this.data.id;\n }\n\n get name(): string {\n return this.data.name;\n }\n\n get status(): ComputerData[\"status\"] {\n return this.data.status;\n }\n\n /** URL-safe slug; falls back to the raw id when unset. */\n get slug(): string {\n return this.data.slug || (this.data.id as string);\n }\n\n /**\n * Public HTTPS URL that forwards to a given port inside the VM.\n *\n * Example — expose a dev server running on port 3000:\n * ```ts\n * await computer.exec.bash(\"npm run dev &\");\n * const url = computer.previewUrl(3000);\n * // => https://3000-<slug>.sandbox.<tenant-domain>\n * ```\n *\n * Works for any TCP HTTP listener. Public (no auth required); anyone with\n * the URL can see it. Served over the ingress proxy so it inherits the\n * tenant's white-label preview domain — no per-sandbox certs to manage.\n */\n previewUrl(port: number, path: string = \"/\"): string {\n const p = path.startsWith(\"/\") ? path : `/${path}`;\n return `https://${port}-${this.slug}.sandbox.${this.previewDomain}${p}`;\n }\n\n /** Root preview URL — serves whatever is on the default app port. */\n get publicUrl(): string {\n return `https://${this.slug}.sandbox.${this.previewDomain}`;\n }\n\n /** Tenant's preview/base domain, white-label aware. */\n get previewDomain(): string {\n return this.data.preview_domain || \"miosa.ai\";\n }\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n /** Start the computer. */\n async start(): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/start`,\n );\n this.data = updated;\n return this;\n }\n\n /** Stop the computer. */\n async stop(): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/stop`,\n );\n this.data = updated;\n return this;\n }\n\n /** Restart the computer. */\n async restart(): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/restart`,\n );\n this.data = updated;\n return this;\n }\n\n /** Permanently destroy the computer. After this call the instance is invalid. */\n async destroy(): Promise<void> {\n return this.http.delete<void>(`/computers/${this.id}`);\n }\n\n /** Reload metadata from the API and update `this.data`. */\n async reload(): Promise<Computer> {\n this.data = await this.http.get<ComputerData>(`/computers/${this.id}`);\n return this;\n }\n\n /**\n * Run an AI agent inside this Computer.\n *\n * The Computer is the graphical desktop VM product. This dispatches the\n * same Agent Runs API as `miosa agent run --computer`, scoped to this VM.\n */\n async prompt(\n instruction: string,\n options: ComputerPromptOptions = {},\n ): Promise<AgentRun> {\n return new AgentRuns(this.http).run({\n ...options,\n prompt: instruction,\n targetKind: \"computer\",\n targetId: this.id,\n computerId: this.id,\n provider: options.provider ?? \"claude\",\n cwd: options.cwd ?? \"/workspace\",\n wait: options.wait ?? true,\n });\n }\n\n // ─── Desktop shortcuts ─────────────────────────────────────────────────────\n\n /**\n * Capture a desktop screenshot as PNG bytes.\n * Shortcut for `computer.desktop.screenshot()`.\n */\n async screenshot(): Promise<Uint8Array> {\n return this.desktop.screenshot();\n }\n\n /**\n * Capture a desktop screenshot encoded as a base64 string.\n * Convenience for AI agents that pass screenshots to LLMs.\n */\n async screenshotBase64(): Promise<string> {\n const bytes = await this.desktop.screenshot();\n // Browser-safe base64 — Buffer isn't always available.\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]!);\n }\n return typeof btoa === \"function\"\n ? btoa(binary)\n : Buffer.from(bytes).toString(\"base64\");\n }\n\n /**\n * Click at the given coordinates (default left button).\n * Shortcut for `computer.desktop.click(x, y)`.\n */\n async click(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y);\n }\n\n /** Explicit left-button click. Alias for `click(x, y)`. */\n async leftClick(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y, \"left\");\n }\n\n /** Right-button click. */\n async rightClick(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y, \"right\");\n }\n\n /** Double-click at the given coordinates. */\n async doubleClick(x: number, y: number): Promise<void> {\n await this.desktop.doubleClick(x, y);\n }\n\n /** Middle-button click. */\n async middleClick(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y, \"middle\");\n }\n\n /** Move the pointer without clicking. */\n async moveMouse(x: number, y: number): Promise<void> {\n await this.desktop.moveMouse(x, y);\n }\n\n /**\n * Type text into the focused element.\n * Shortcut for `computer.desktop.type(text)`.\n */\n async type(text: string): Promise<void> {\n await this.desktop.type(text);\n }\n\n /** Alias for `type(text)`. */\n async write(text: string): Promise<void> {\n await this.desktop.write(text);\n }\n\n /**\n * Send a key or key combo.\n * Shortcut for `computer.desktop.key(key)`.\n */\n async key(key: string): Promise<void> {\n await this.desktop.key(key);\n }\n\n /** Alias for `key(key)`. */\n async press(key: string): Promise<void> {\n await this.desktop.press(key);\n }\n\n /**\n * Scroll in a direction.\n * Shortcut for `computer.desktop.scroll(direction, clicks)`.\n */\n async scroll(\n direction: Parameters<Desktop[\"scroll\"]>[0],\n clicks = 3,\n ): Promise<void> {\n await this.desktop.scroll(direction, clicks);\n }\n\n /**\n * Click and drag between two points.\n * Shortcut for `computer.desktop.drag(fromX, fromY, toX, toY)`.\n */\n async drag(\n fromX: number,\n fromY: number,\n toX: number,\n toY: number,\n ): Promise<void> {\n await this.desktop.drag(fromX, fromY, toX, toY);\n }\n\n /**\n * Wait for N seconds inside the desktop environment.\n * Shortcut for `computer.desktop.wait(seconds)`.\n */\n async wait(seconds: number): Promise<void> {\n await this.desktop.wait(seconds);\n }\n\n // ─── Exec shortcuts ────────────────────────────────────────────────────────\n\n /**\n * Run a shell command.\n * Shortcut for `computer.exec.bash(command)`.\n */\n async bash(command: string, timeout?: number) {\n return this.exec.bash(command, timeout);\n }\n\n /**\n * Run Python code.\n * Shortcut for `computer.exec.python(code)`.\n */\n async python(code: string, timeout?: number) {\n return this.exec.python(code, timeout);\n }\n\n // ─── Window / cursor / app shortcuts ───────────────────────────────────────\n\n /** List open windows on the desktop. */\n async windows(): Promise<Awaited<ReturnType<Desktop[\"windows\"]>>> {\n return this.desktop.windows();\n }\n\n /** Get the current cursor position. */\n async cursor(): Promise<Awaited<ReturnType<Desktop[\"cursor\"]>>> {\n return this.desktop.cursor();\n }\n\n /** Focus a specific window by ID. */\n async focusWindow(windowId: string): Promise<void> {\n await this.desktop.focusWindow(windowId);\n }\n\n /** Launch an installed app inside the VM. */\n async launch(appName: string): Promise<void> {\n await this.desktop.launch(appName);\n }\n\n // ─── Scoped filesystem helper ──────────────────────────────────────────────\n\n /**\n * Return a `ScopedFs` bound to `workingDir`. All path arguments to\n * `readFile`, `writeFile`, and `readdir` are resolved relative to that\n * directory — no need to repeat the prefix on every call.\n *\n * ```ts\n * const fs = computer.fs(\"/workspace\");\n * await fs.writeFile(\"main.py\", \"print(1)\");\n * const src = await fs.readFile(\"main.py\");\n * const entries = await fs.readdir(\".\");\n * ```\n */\n fs(workingDir: string): ScopedFs {\n return new ScopedFs(this.files, workingDir);\n }\n\n // ─── Direct methods ────────────────────────────────────────────────────────\n\n /** Get VNC credentials for this computer. */\n async vncCredentials(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/vnc-credentials`),\n );\n }\n\n /**\n * Return whether the external/raw desktop viewer password is set.\n *\n * Authenticated MIOSA platform users should use the platform desktop entry\n * URL and do not need this password. This is only for raw external viewer\n * links such as `*.computer.miosa.ai/desktop/index.html`.\n */\n async viewerPassword(): Promise<ComputerViewerPasswordStatus> {\n return this.http.get<ComputerViewerPasswordStatus>(\n `/computers/${this.id}/viewer-password`,\n );\n }\n\n /**\n * Rotate the external/raw desktop viewer password and return the plaintext\n * one time. Store it if you need to share the raw viewer URL.\n */\n async rotateViewerPassword(): Promise<ComputerViewerPasswordRotation> {\n return this.http.post<ComputerViewerPasswordRotation>(\n `/computers/${this.id}/viewer-password/rotate`,\n );\n }\n\n /** List installed apps inside the VM. */\n async apps(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/apps`),\n );\n }\n\n /** Get URL map for this computer (VNC, preview, etc.). */\n async urls(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/urls`),\n );\n }\n\n /** Mint a short-lived stream token for this computer. */\n async streamToken(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.post<unknown>(`/computers/${this.id}/stream-token`),\n );\n }\n\n /**\n * Mint a passwordless browser embed URL for authenticated platform sessions.\n *\n * Use this inside MIOSA or tenant apps. Raw shared desktop URLs can still use\n * the viewer password flow when opened outside an authenticated platform.\n */\n async embed(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/embed`),\n );\n }\n\n /** Clone this computer into a new one. */\n async clone(opts: Record<string, unknown> = {}): Promise<Computer> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n const raw = await this.http.post<unknown>(\n `/computers/${this.id}/clone`,\n body,\n );\n const data = unwrapData(raw) as unknown as ComputerData;\n return new Computer(this.http, data);\n }\n\n /** Resize the computer (change CPU/memory/disk). */\n async resize(size: string): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/resize`,\n { size },\n );\n this.data = updated;\n return this;\n }\n\n /** Move the computer to a different region or host. */\n async move(opts: Record<string, unknown>): Promise<Computer> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/move`,\n body,\n );\n this.data = updated;\n return this;\n }\n\n /** Capture a region of the desktop as PNG bytes. */\n async screenshotRegion(\n x: number,\n y: number,\n width: number,\n height: number,\n ): Promise<Uint8Array> {\n return this.http.request<Uint8Array>(\n `/computers/${this.id}/screenshot-region`,\n {\n method: \"POST\",\n body: { x, y, width, height },\n binary: true,\n },\n );\n }\n\n /** Get time-series metrics (window: \"1h\" | \"24h\" | \"7d\"). */\n async metrics(window = \"1h\"): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/metrics`, {\n window,\n }),\n );\n }\n\n // ─── Serialisation ─────────────────────────────────────────────────────────\n\n toJSON(): ComputerData {\n return this.data;\n }\n\n toString(): string {\n return `Computer(${this.id}, ${this.status})`;\n }\n}\n\n/**\n * A thin filesystem wrapper that prepends a fixed working directory to all\n * path arguments, mirroring the Node.js `fs/promises` surface.\n *\n * Obtain via `computer.fs(\"/workspace\")`.\n */\nexport class ScopedFs {\n private readonly files: Files;\n private readonly workingDir: string;\n\n constructor(files: Files, workingDir: string) {\n this.files = files;\n // Normalise: strip trailing slash unless it's the root.\n this.workingDir =\n workingDir !== \"/\" ? workingDir.replace(/\\/$/, \"\") : workingDir;\n }\n\n /** Resolve a relative or absolute path against `workingDir`. */\n private resolve(path: string): string {\n if (path.startsWith(\"/\")) return path;\n const joined = `${this.workingDir}/${path}`;\n // Collapse double slashes and simple `.` segments.\n return joined.replace(/\\/\\.\\//g, \"/\").replace(/\\/+/g, \"/\");\n }\n\n /** Write a UTF-8 string to a file (relative or absolute path). */\n async writeFile(path: string, content: string): Promise<void> {\n return this.files.writeFile(this.resolve(path), content);\n }\n\n /** Read a file and return its UTF-8 contents (relative or absolute path). */\n async readFile(path: string): Promise<string> {\n return this.files.readFile(this.resolve(path));\n }\n\n /** List a directory (relative or absolute path). */\n async readdir(path: string): Promise<import(\"../types.js\").DirEntry[]> {\n return this.files.readdir(this.resolve(path));\n }\n\n /** Stat a path (relative or absolute). */\n async stat(path: string): Promise<import(\"../types.js\").FileStat> {\n return this.files.stat(this.resolve(path));\n }\n\n /** Create a directory (relative or absolute). */\n async mkdir(\n path: string,\n options?: import(\"../types.js\").MkdirParams,\n ): Promise<void> {\n return this.files.mkdir(this.resolve(path), options);\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n ComputerCreateParams,\n ComputerData,\n ComputerId,\n ComputerListParams,\n ComputerUpdateParams,\n ComputerViewerPasswordRotation,\n ComputerViewerPasswordStatus,\n} from \"../types.js\";\nimport { Computer } from \"./computer.js\";\n\nexport class Computers {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new computer. The computer starts in `creating` state — call\n * `computer.start()` once it reaches `stopped` to boot it.\n */\n async create(params: ComputerCreateParams): Promise<Computer> {\n const {\n agentRuntimeProfileId,\n agentProfileId,\n skipAgentRuntimeProfile,\n ...body\n } = params;\n\n const data = await this.http.post<ComputerData>(\"/computers\", {\n template_type: \"miosa-desktop\",\n ...body,\n size: normalizeComputerSize(body.size ?? \"small\"),\n agent_runtime_profile_id:\n agentRuntimeProfileId ??\n params.agent_runtime_profile_id ??\n agentProfileId ??\n params.agent_profile_id,\n skip_agent_runtime_profile: skipAgentRuntimeProfile ?? params.skip_agent_runtime_profile,\n });\n return new Computer(this.http, data);\n }\n\n /**\n * List all computers for the authenticated tenant.\n */\n async list(params?: ComputerListParams): Promise<Computer[]> {\n const query: Record<string, string | number | boolean | undefined> = {\n page: params?.page,\n per_page: params?.per_page,\n status: params?.status,\n };\n const response = await this.http.get<{ data: ComputerData[] }>(\n \"/computers\",\n query,\n );\n return response.data.map((d) => new Computer(this.http, d));\n }\n\n /**\n * Fetch a single computer by ID.\n */\n async get(id: ComputerId | string): Promise<Computer> {\n const data = await this.http.get<ComputerData>(`/computers/${id}`);\n return new Computer(this.http, data);\n }\n\n /**\n * Update computer metadata or name.\n */\n async update(\n id: ComputerId | string,\n params: ComputerUpdateParams,\n ): Promise<Computer> {\n const data = await this.http.patch<ComputerData>(\n `/computers/${id}`,\n params,\n );\n return new Computer(this.http, data);\n }\n\n /**\n * Permanently delete a computer.\n */\n async delete(id: ComputerId | string): Promise<void> {\n return this.http.delete<void>(`/computers/${id}`);\n }\n\n /**\n * Return whether the external/raw desktop viewer password is set.\n *\n * Authenticated MIOSA platform users should use the platform desktop entry\n * URL and do not need this password. This is only for raw external viewer\n * links such as `*.computer.miosa.ai/desktop/index.html`.\n */\n async viewerPassword(\n id: ComputerId | string,\n ): Promise<ComputerViewerPasswordStatus> {\n return this.http.get<ComputerViewerPasswordStatus>(\n `/computers/${id}/viewer-password`,\n );\n }\n\n /**\n * Rotate the external/raw desktop viewer password and return the plaintext\n * one time. Store it if you need to share the raw viewer URL.\n */\n async rotateViewerPassword(\n id: ComputerId | string,\n ): Promise<ComputerViewerPasswordRotation> {\n return this.http.post<ComputerViewerPasswordRotation>(\n `/computers/${id}/viewer-password/rotate`,\n );\n }\n}\n\nfunction normalizeComputerSize(size: ComputerCreateParams[\"size\"]) {\n return size === \"xlarge\" ? \"xl\" : size;\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n CreditBalance,\n CreditTransactionListResponse,\n CreditUsage,\n} from \"../types.js\";\n\nexport interface CreditTransactionListParams {\n page?: number;\n per_page?: number;\n}\n\nexport class Credits {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** Get the current credit balance for the authenticated tenant. */\n async balance(): Promise<CreditBalance> {\n return this.http.get<CreditBalance>(\"/credits/balance\");\n }\n\n /** List credit transactions (purchases, deductions). */\n async transactions(\n params?: CreditTransactionListParams,\n ): Promise<CreditTransactionListResponse> {\n const query: Record<string, number | undefined> = {\n page: params?.page,\n per_page: params?.per_page,\n };\n return this.http.get<CreditTransactionListResponse>(\n \"/credits/transactions\",\n query,\n );\n }\n\n /** Get aggregated credit usage for the current billing period. */\n async usage(): Promise<CreditUsage> {\n return this.http.get<CreditUsage>(\"/credits/usage\");\n }\n}\n","/**\n * CronJobs resource — scheduled work.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type CronJobId = string & { readonly __brand: \"CronJobId\" };\nexport type CronJobExecutionId = string & {\n readonly __brand: \"CronJobExecutionId\";\n};\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface CronJobData {\n id: CronJobId;\n tenant_id: string;\n name: string;\n schedule: string;\n state?: string;\n paused?: boolean;\n last_run_at?: string | null;\n next_run_at?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface CronJobExecutionData {\n id: CronJobExecutionId;\n cron_job_id: CronJobId;\n state?: string;\n started_at?: string | null;\n finished_at?: string | null;\n duration_ms?: number | null;\n exit_code?: number | null;\n error?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CronJobListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CronJobCreateParams {\n name: string;\n schedule: string;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface CronJobUpdateParams {\n name?: string;\n schedule?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"cron_jobs\", \"executions\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class CronJobs {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: CronJobListParams = {}): Promise<CronJobData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/cron-jobs\", query);\n return listItems<CronJobData>(data);\n }\n\n async get(jobId: string): Promise<CronJobData> {\n const data = await this.http.get<unknown>(`/cron-jobs/${jobId}`);\n return unwrap<CronJobData>(data);\n }\n\n async create(params: CronJobCreateParams): Promise<CronJobData> {\n const { idempotencyKey: ikey, ...rest } = params;\n const body = stripUndefined(rest as Record<string, unknown>);\n const data = await this.http.request<unknown>(\"/cron-jobs\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<CronJobData>(data);\n }\n\n async update(\n jobId: string,\n params: CronJobUpdateParams,\n ): Promise<CronJobData> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(`/cron-jobs/${jobId}`, body);\n return unwrap<CronJobData>(data);\n }\n\n async delete(jobId: string): Promise<void> {\n await this.http.delete<unknown>(`/cron-jobs/${jobId}`);\n }\n\n // ── Control ────────────────────────────────────────────────────────────────\n\n async pause(jobId: string): Promise<CronJobData> {\n const data = await this.http.post<unknown>(`/cron-jobs/${jobId}/pause`);\n return unwrap<CronJobData>(data);\n }\n\n async resume(jobId: string): Promise<CronJobData> {\n const data = await this.http.post<unknown>(`/cron-jobs/${jobId}/resume`);\n return unwrap<CronJobData>(data);\n }\n\n async runNow(\n jobId: string,\n opts: { idempotencyKey?: string } = {},\n ): Promise<CronJobData> {\n const data = await this.http.request<unknown>(\n `/cron-jobs/${jobId}/run-now`,\n {\n method: \"POST\",\n headers: { \"Idempotency-Key\": idempotencyKey(opts.idempotencyKey) },\n },\n );\n return unwrap<CronJobData>(data);\n }\n\n // ── Execution history ──────────────────────────────────────────────────────\n\n async listExecutions(jobId: string): Promise<CronJobExecutionData[]> {\n const data = await this.http.get<unknown>(`/cron-jobs/${jobId}/executions`);\n return listItems<CronJobExecutionData>(data, [\n \"data\",\n \"executions\",\n \"items\",\n ]);\n }\n\n async getExecution(\n jobId: string,\n executionId: string,\n ): Promise<CronJobExecutionData> {\n const data = await this.http.get<unknown>(\n `/cron-jobs/${jobId}/executions/${executionId}`,\n );\n return unwrap<CronJobExecutionData>(data);\n }\n}\n","/**\n * Dashboard — aggregated platform overview.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface DashboardSummary {\n computers?: unknown;\n sandboxes?: unknown;\n credits?: unknown;\n [key: string]: unknown;\n}\n\nexport interface OverviewData {\n status?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"dashboard\", \"overview\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Dashboard {\n constructor(private readonly http: HttpClient) {}\n\n /** Aggregated user dashboard payload. */\n async summary(): Promise<DashboardSummary> {\n const data = await this.http.get<unknown>(\"/dashboard\");\n return unwrap<DashboardSummary>(data);\n }\n\n /** Status / health overview (public endpoint). */\n async overview(): Promise<OverviewData> {\n const data = await this.http.get<unknown>(\"/overview\");\n return unwrap<OverviewData>(data);\n }\n}\n","/**\n * Databases resource — managed Postgres / databases.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type DatabaseId = string & { readonly __brand: \"DatabaseId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface DatabaseData {\n id: DatabaseId;\n tenant_id: string;\n name: string;\n state?: string;\n engine?: string;\n engine_version?: string;\n version?: string;\n cpu_count?: number;\n memory_mb?: number;\n storage_mb?: number;\n host?: string | null;\n port?: number | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface DatabaseCredentials {\n url?: string;\n host?: string;\n port?: number;\n user?: string;\n username?: string;\n password?: string;\n database?: string;\n [key: string]: unknown;\n}\n\nexport interface DatabaseLogsResult {\n lines?: string[];\n logs?: string[];\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface DatabaseListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface DatabaseCreateParams {\n name: string;\n engine?: string;\n engine_version?: string;\n cpu_count?: number;\n memory_mb?: number;\n storage_mb?: number;\n external_workspace_id?: string;\n external_user_id?: string;\n external_project_id?: string;\n metadata?: Record<string, unknown>;\n /** @deprecated use engine_version. */\n version?: string;\n /** @deprecated use cpu_count/memory_mb/storage_mb. */\n size?: string;\n region?: string;\n idempotencyKey?: string;\n idempotency_key?: string;\n [key: string]: unknown;\n}\n\nexport interface DatabaseLogsParams {\n lines?: number;\n since?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"databases\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Databases {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: DatabaseListParams = {}): Promise<DatabaseData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/databases\", query);\n return listItems<DatabaseData>(data);\n }\n\n async get(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.get<unknown>(`/databases/${databaseId}`);\n return unwrap<DatabaseData>(data);\n }\n\n async create(params: DatabaseCreateParams): Promise<DatabaseData> {\n const {\n idempotencyKey: camelIdempotencyKey,\n idempotency_key: snakeIdempotencyKey,\n version,\n engine_version,\n size: _deprecatedSize,\n ...rest\n } = params;\n\n const body = stripUndefined({\n ...rest,\n engine_version: engine_version ?? version,\n } as Record<string, unknown>);\n\n const data = await this.http.request<unknown>(\"/databases\", {\n method: \"POST\",\n body,\n headers: {\n \"Idempotency-Key\": idempotencyKey(\n camelIdempotencyKey ?? snakeIdempotencyKey,\n ),\n },\n });\n return unwrap<DatabaseData>(data);\n }\n\n async delete(databaseId: string): Promise<void> {\n await this.http.delete<unknown>(`/databases/${databaseId}`);\n }\n\n // ── Lifecycle ──────────────────────────────────────────────────────────────\n\n async start(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.post<unknown>(\n `/databases/${databaseId}/start`,\n );\n return unwrap<DatabaseData>(data);\n }\n\n async stop(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.post<unknown>(`/databases/${databaseId}/stop`);\n return unwrap<DatabaseData>(data);\n }\n\n async restart(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.post<unknown>(\n `/databases/${databaseId}/restart`,\n );\n return unwrap<DatabaseData>(data);\n }\n\n // ── Credentials + logs ────────────────────────────────────────────────────\n\n async credentials(databaseId: string): Promise<DatabaseCredentials> {\n const data = await this.http.get<unknown>(\n `/databases/${databaseId}/credentials`,\n );\n return unwrap<DatabaseCredentials>(data);\n }\n\n async logs(\n databaseId: string,\n params: DatabaseLogsParams = {},\n ): Promise<DatabaseLogsResult> {\n const query = stripUndefined({\n lines: params.lines,\n since: params.since,\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n `/databases/${databaseId}/logs`,\n query,\n );\n return data as DatabaseLogsResult;\n }\n\n streamLogs(databaseId: string): AsyncIterableIterator<unknown> {\n return this.http.stream<unknown>(`/databases/${databaseId}/logs/stream`);\n }\n}\n","/**\n * Deployments resource — sandbox→production publishing surface.\n *\n * Backend phase status:\n * - list / get / create / update / delete / env: repo deployment surface.\n * - publish / versions.* / releases.* / rollback / domains.*: live release surface.\n * - runtimeInstances.*: dynamic runtime status/log inspection.\n * - publishFromSandbox: direct sandbox -> deployment bridge.\n *\n * See docs/deploy/* for the conceptual model.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\nimport { DeploymentConnectors } from \"./connectors.js\";\nimport type { DockerDeployHostData } from \"./docker-deploy.js\";\n\n// ── Branded IDs ─────────────────────────────────────────────────────────────\n\nexport type DeploymentId = string & { readonly __brand: \"DeploymentId\" };\nexport type DeploymentVersionId = string & {\n readonly __brand: \"DeploymentVersionId\";\n};\nexport type DeploymentReleaseId = string & {\n readonly __brand: \"DeploymentReleaseId\";\n};\nexport type DeploymentServiceId = string & {\n readonly __brand: \"DeploymentServiceId\";\n};\nexport type RuntimeInstanceId = string & {\n readonly __brand: \"RuntimeInstanceId\";\n};\n\n// ── States / enums ──────────────────────────────────────────────────────────\n\nexport type DeploymentState =\n | \"pending\"\n | \"building\"\n | \"running\"\n | \"stopped\"\n | \"failed\";\n\nexport type DeploymentVersionKind = \"static\" | \"dynamic\" | \"sandbox_backed\";\n\nexport type DeploymentVersionState =\n | \"created\"\n | \"building\"\n | \"ready\"\n | \"failed\"\n | \"archived\";\n\nexport type DeploymentSourceType = \"repo\" | \"sandbox\" | \"upload\";\n\nexport type DeploymentProduct = \"miosa_deploy\" | \"docker_deploy\";\n\nexport type DeploymentServiceType =\n | \"static_web\"\n | \"web\"\n | \"api\"\n | \"function\"\n | \"worker\"\n | \"cron\"\n | \"postgres\"\n | \"redis\"\n | \"bucket\"\n | \"volume\";\n\nexport type RuntimeInstanceState =\n | \"provisioning\"\n | \"starting\"\n | \"healthy\"\n | \"unhealthy\"\n | \"error\"\n | \"stopped\"\n | \"destroyed\";\n\n// ── Shared attribution ──────────────────────────────────────────────────────\n\nexport interface ExternalAttribution {\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\n// ── Resource shapes ─────────────────────────────────────────────────────────\n\nexport interface DeploymentData {\n id: DeploymentId;\n tenant_id: string;\n owner_id?: string;\n name: string;\n slug: string;\n /**\n * @deprecated — repo-based model. New deployments use source_type: \"sandbox\"\n * with `source_sandbox_id` on the version row. Will become nullable.\n */\n repo_url?: string;\n repo_provider?: \"github\";\n branch?: string;\n build_command?: string | null;\n run_command?: string | null;\n runtime_image?: string | null;\n current_build_id?: string | null;\n active_version_id?: string | null;\n source_type?: DeploymentSourceType;\n state: DeploymentState;\n auto_deploy?: boolean;\n custom_domain_id?: string | null;\n linked_database_id?: string | null;\n deployment_product?: DeploymentProduct | string | null;\n docker_deploy_host_id?: string | null;\n metadata?: Record<string, unknown>;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n public_url?: string | null;\n created_at?: string;\n updated_at?: string;\n}\n\nexport type DeploymentDatabaseRequest =\n | boolean\n | {\n engine?: \"postgresql\" | \"mysql\" | \"redis\" | \"qdrant\";\n size?: \"xs\" | \"small\" | \"medium\" | \"large\";\n storage_mb?: number;\n region?: string;\n };\n\nexport interface DeploymentVersionData {\n id: DeploymentVersionId;\n deployment_id: DeploymentId;\n tenant_id: string;\n created_by?: string | null;\n source_sandbox_id?: string | null;\n build_id?: string | null;\n version_number: number;\n kind: DeploymentVersionKind;\n state: DeploymentVersionState;\n artifact_uri?: string | null;\n artifact_manifest?: Record<string, unknown>;\n artifact_sha256?: string | null;\n runtime_image?: string | null;\n runtime_command?: string | null;\n runtime_port?: number | null;\n health_check_path?: string | null;\n build_log_uri?: string | null;\n metadata?: Record<string, unknown>;\n promoted_at?: string | null;\n archived_at?: string | null;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DeploymentReleaseData {\n id: DeploymentReleaseId;\n deployment_id?: DeploymentId;\n environment_id?: string | null;\n deployment_version_id: DeploymentVersionId;\n service_id?: DeploymentServiceId | null;\n tenant_id: string;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n source_sandbox_id?: string | null;\n build_id?: string | null;\n kind: \"static\" | \"oci\" | \"rootfs\" | string;\n state?: string;\n artifact_uri?: string | null;\n artifact_sha256?: string | null;\n artifact_manifest?: Record<string, unknown>;\n storage_backend?: string | null;\n storage_uri?: string;\n sha256?: string;\n size_bytes?: number;\n start_command?: string | null;\n port?: number | null;\n health_check_path?: string | null;\n build_log_uri?: string | null;\n metadata?: Record<string, unknown>;\n ready_at?: string | null;\n archived_at?: string | null;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DeploymentServiceData {\n id: DeploymentServiceId;\n deployment_id: DeploymentId;\n environment_id?: string | null;\n tenant_id: string;\n type: DeploymentServiceType;\n name?: string | null;\n desired_replicas?: number;\n state: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface RuntimeInstanceData {\n id: RuntimeInstanceId;\n deployment_id?: DeploymentId;\n environment_id?: string | null;\n service_id?: DeploymentServiceId | null;\n release_id?: DeploymentReleaseId;\n tenant_id: string;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n host_id?: string | null;\n node_id?: string | null;\n vm_id?: string | null;\n desired_state?: string | null;\n state: RuntimeInstanceState;\n ip_address?: string | null;\n port?: number | null;\n health_check_path?: string | null;\n last_health_check_at?: string | null;\n last_heartbeat_at?: string | null;\n started_at?: string | null;\n stopped_at?: string | null;\n error_message?: string | null;\n restart_count?: number;\n cpu_limit_millicores?: number | null;\n memory_limit_mb?: number | null;\n runtime_log_path?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DeploymentBuildData {\n id: string;\n deployment_id: DeploymentId;\n commit_sha?: string | null;\n commit_message?: string | null;\n triggered_by?: string;\n state: string;\n started_at?: string | null;\n finished_at?: string | null;\n duration_ms?: number | null;\n log_url?: string | null;\n image_digest?: string | null;\n error_message?: string | null;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n created_at?: string;\n}\n\n// ── Request / response payloads ─────────────────────────────────────────────\n\nexport interface DeploymentListParams extends ExternalAttribution {\n project_id?: string;\n projectId?: string;\n state?: DeploymentState | string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface DeploymentCreateParams extends ExternalAttribution {\n name: string;\n /** Current backend create route is repo-backed; project IDs are attribution, not route ownership. */\n project_id?: string;\n projectId?: string;\n /** @deprecated Ignored by the backend create route. Use sandbox.deploy() for sandbox-backed deployments. */\n source_type?: DeploymentSourceType;\n /** @deprecated Ignored by the backend create route. Use sandbox.deploy() for sandbox-backed deployments. */\n sourceType?: DeploymentSourceType;\n repo_url?: string;\n repoUrl?: string;\n branch?: string;\n build_command?: string;\n buildCommand?: string;\n run_command?: string;\n runCommand?: string;\n auto_deploy?: boolean;\n autoDeploy?: boolean;\n database?: DeploymentDatabaseRequest;\n metadata?: Record<string, unknown>;\n idempotencyKey?: string;\n}\n\nexport interface DockerDeployCreateParams extends DeploymentCreateParams {}\n\nexport interface DockerDeployDoctorCheck {\n name: string;\n ok: boolean;\n message: string;\n details?: Record<string, unknown>;\n}\n\nexport interface DockerDeployDoctorProbe {\n url: string;\n ok: boolean;\n status?: number;\n error?: string;\n}\n\nexport interface DockerDeployDoctorResult {\n ok: boolean;\n deployment: DeploymentData;\n host?: DockerDeployHostData;\n checks: DockerDeployDoctorCheck[];\n probe?: DockerDeployDoctorProbe;\n}\n\nexport interface DockerDeployDoctorParams {\n probePath?: string;\n probe_path?: string;\n timeoutMs?: number;\n timeout_ms?: number;\n}\n\nexport interface DeploymentUpdateParams {\n name?: string;\n branch?: string;\n build_command?: string;\n buildCommand?: string;\n run_command?: string;\n runCommand?: string;\n auto_deploy?: boolean;\n autoDeploy?: boolean;\n}\n\nexport interface PublishParams extends ExternalAttribution {\n sourceSandboxId: string;\n source_sandbox_id?: string;\n name?: string;\n deploymentId?: string;\n deployment_id?: string;\n /** @deprecated Reserved for dynamic runtime publish; ignored by current static publish route. */\n kind?: \"auto\" | \"static\" | \"dynamic\";\n /** @deprecated Reserved for deployment environments; ignored by current static publish route. */\n environment?: \"production\" | \"staging\" | string;\n outputPath?: string;\n output_path?: string;\n /** @deprecated Current /deployments/:id/publish snapshots /workspace internally. */\n sourceSnapshotPath?: string;\n /** @deprecated Current /deployments/:id/publish snapshots /workspace internally. */\n source_snapshot_path?: string;\n entrypoint?: string;\n promote?: boolean;\n domain?: string;\n customDomain?: string;\n custom_domain?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n buildCommand?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n build_command?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n runCommand?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n run_command?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n port?: number;\n /** @deprecated Reserved for dynamic runtime publish. */\n healthCheckPath?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n health_check_path?: string;\n /** @deprecated Reserved for managed data-service binding. */\n dataServices?: string[];\n /** @deprecated Reserved for managed data-service binding. */\n data_services?: string[];\n idempotencyKey?: string;\n}\n\nexport interface PublishResult {\n deployment: DeploymentData;\n version: DeploymentVersionData;\n release?: DeploymentReleaseData;\n services?: DeploymentServiceData[];\n promoted: boolean;\n}\n\nexport type PublishFromSandboxParams = Omit<\n PublishParams,\n \"sourceSandboxId\" | \"source_sandbox_id\"\n> & {\n sourceSandboxId?: string;\n source_sandbox_id?: string;\n};\n\nexport interface RollbackParams {\n versionId?: string;\n version_id?: string;\n idempotencyKey?: string;\n}\n\nexport interface VersionListParams extends ExternalAttribution {\n state?: DeploymentVersionState | string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface RuntimeLogsResult {\n runtime_instance_id?: string;\n deployment_id?: string;\n log_path?: string;\n logs: string;\n}\n\nexport interface AddDomainParams extends ExternalAttribution {\n redirectPolicy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n redirect_policy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n idempotencyKey?: string;\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────\n\nfunction attributionBody(p: ExternalAttribution): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n const ws = p.externalWorkspaceId ?? p.external_workspace_id;\n const usr = p.externalUserId ?? p.external_user_id;\n const proj = p.externalProjectId ?? p.external_project_id;\n if (ws !== undefined) out.external_workspace_id = ws;\n if (usr !== undefined) out.external_user_id = usr;\n if (proj !== undefined) out.external_project_id = proj;\n return out;\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\nfunction unwrap<T>(payload: { data?: T } | T): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: { data?: T[] } | { items?: T[] } | T[] | unknown,\n candidateKeys: string[] = [\"items\", \"deployments\", \"versions\", \"domains\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction dockerDeployMetadata(\n metadata: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n return {\n ...(metadata ?? {}),\n deployment_product: \"docker_deploy\",\n };\n}\n\nfunction dockerDeployProduct(deployment: DeploymentData): unknown {\n return deployment.deployment_product ?? deployment.metadata?.deployment_product;\n}\n\nfunction dockerDeployHostId(deployment: DeploymentData): string | null {\n const metadataHost = deployment.metadata?.docker_deploy_host_id;\n return deployment.docker_deploy_host_id ?? (typeof metadataHost === \"string\" ? metadataHost : null);\n}\n\nfunction dockerDeployApp(\n deployment: DeploymentData,\n): Record<string, unknown> | null {\n const app = deployment.metadata?.docker_deploy;\n if (!app || typeof app !== \"object\" || Array.isArray(app)) return null;\n return app as Record<string, unknown>;\n}\n\nfunction dockerDeployAppPort(app: Record<string, unknown> | null): number | null {\n const url = app?.url;\n if (typeof url !== \"string\") return null;\n try {\n const parsed = new URL(url);\n const port = Number.parseInt(parsed.port, 10);\n return Number.isInteger(port) ? port : null;\n } catch {\n return null;\n }\n}\n\nfunction addDoctorCheck(\n checks: DockerDeployDoctorCheck[],\n name: string,\n ok: boolean,\n message: string,\n details?: Record<string, unknown>,\n): void {\n checks.push({ name, ok, message, ...(details ? { details } : {}) });\n}\n\nfunction hostHealthy(host: DockerDeployHostData | undefined): boolean {\n return Boolean(\n host && host.status === \"active\" && host.appliance_status === \"healthy\",\n );\n}\n\nfunction probeUrl(publicUrl: string, probePath: string): string {\n const url = new URL(publicUrl);\n url.pathname = probePath.startsWith(\"/\") ? probePath : `/${probePath}`;\n return url.toString();\n}\n\n// ── Sub-resources ──────────────────────────────────────────────────────────\n\nexport class DeploymentVersions {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async list(params: VersionListParams = {}): Promise<DeploymentVersionData[]> {\n const query = stripUndefined({\n state: params.state,\n limit: params.limit,\n cursor: params.cursor,\n ...attributionBody(params),\n });\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/versions`,\n query as Record<string, string | number | boolean | undefined>,\n );\n return listItems<DeploymentVersionData>(data);\n }\n\n async get(versionId: string): Promise<DeploymentVersionData> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/versions/${versionId}`,\n );\n return unwrap(data) as DeploymentVersionData;\n }\n\n async promote(\n versionId: string,\n opts: { environment?: string; idempotencyKey?: string } = {},\n ): Promise<DeploymentData> {\n const body = stripUndefined({ environment: opts.environment });\n const data = await this.http.request<unknown>(\n `/deployments/${this.deploymentId}/versions/${versionId}/promote`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(opts.idempotencyKey) },\n },\n );\n return unwrap(data) as DeploymentData;\n }\n}\n\nexport class DeploymentReleases {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async list(): Promise<DeploymentReleaseData[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/releases`,\n );\n return listItems<DeploymentReleaseData>(data, [\"releases\"]);\n }\n\n async get(releaseId: string): Promise<DeploymentReleaseData> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/releases/${releaseId}`,\n );\n return unwrap(data) as DeploymentReleaseData;\n }\n}\n\nexport class DeploymentRuntimeInstances {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async list(): Promise<RuntimeInstanceData[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/runtime-instances`,\n );\n return listItems<RuntimeInstanceData>(data, [\"runtime_instances\"]);\n }\n\n async get(instanceId: string): Promise<RuntimeInstanceData> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/runtime-instances/${instanceId}`,\n );\n return unwrap(data) as RuntimeInstanceData;\n }\n\n async logs(instanceId: string, lines = 100): Promise<RuntimeLogsResult> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/runtime-instances/${instanceId}/logs`,\n { lines },\n );\n const unwrapped = unwrap(data) as Record<string, unknown>;\n const result: RuntimeLogsResult = { logs: String(unwrapped.logs ?? \"\") };\n if (typeof unwrapped.runtime_instance_id === \"string\") {\n result.runtime_instance_id = unwrapped.runtime_instance_id;\n }\n if (typeof unwrapped.deployment_id === \"string\") {\n result.deployment_id = unwrapped.deployment_id;\n }\n if (typeof unwrapped.log_path === \"string\") {\n result.log_path = unwrapped.log_path;\n }\n return result;\n }\n}\n\nexport class DeploymentDomains {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async add(\n domain: string,\n params: AddDomainParams = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n domain,\n redirect_policy: params.redirectPolicy ?? params.redirect_policy,\n ...attributionBody(params),\n };\n const data = await this.http.request<unknown>(\n `/deployments/${this.deploymentId}/domains`,\n {\n method: \"POST\",\n body: stripUndefined(body),\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as Record<string, unknown>;\n }\n\n async list(\n filters: ExternalAttribution = {},\n ): Promise<Record<string, unknown>[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/domains`,\n attributionBody(filters) as Record<\n string,\n string | number | boolean | undefined\n >,\n );\n return listItems<Record<string, unknown>>(data);\n }\n\n async verify(domainId: string): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(\n `/deployments/${this.deploymentId}/domains/${domainId}/verify`,\n );\n return unwrap(data) as Record<string, unknown>;\n }\n\n async delete(domainId: string): Promise<void> {\n await this.http.delete<unknown>(\n `/deployments/${this.deploymentId}/domains/${domainId}`,\n );\n }\n}\n\n// ── Main resource ──────────────────────────────────────────────────────────\n\nexport class Deployments {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: DeploymentListParams = {}): Promise<DeploymentData[]> {\n const projectId = params.projectId ?? params.project_id;\n const query = stripUndefined({\n project_id: projectId,\n state: params.state,\n limit: params.limit,\n cursor: params.cursor,\n ...attributionBody(params),\n });\n const data = await this.http.get<unknown>(\n \"/deployments\",\n query as Record<string, string | number | boolean | undefined>,\n );\n return listItems<DeploymentData>(data);\n }\n\n async get(deploymentId: string): Promise<DeploymentData> {\n const data = await this.http.get<unknown>(`/deployments/${deploymentId}`);\n return unwrap(data) as DeploymentData;\n }\n\n async create(params: DeploymentCreateParams): Promise<DeploymentData> {\n const body = stripUndefined({\n name: params.name,\n repo_url: params.repoUrl ?? params.repo_url,\n branch: params.branch,\n build_command: params.buildCommand ?? params.build_command,\n run_command: params.runCommand ?? params.run_command,\n auto_deploy: params.autoDeploy ?? params.auto_deploy,\n database: params.database,\n metadata: params.metadata,\n ...attributionBody(params),\n });\n const data = await this.http.request<unknown>(\"/deployments\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n });\n return unwrap(data) as DeploymentData;\n }\n\n /**\n * Create a deployment that runs on the workspace's dedicated Docker Deploy\n * runtime. It uses the same /deployments API as MIOSA Deploy, but marks the\n * deployment so the control plane attaches it to the workspace Docker host.\n */\n async createDockerDeploy(\n params: DockerDeployCreateParams,\n ): Promise<DeploymentData> {\n return this.create({\n ...params,\n metadata: dockerDeployMetadata(params.metadata),\n });\n }\n\n /**\n * Verify a Docker Deploy deployment before telling a user or agent it is\n * live. Checks product markers, appliance host health, route metadata, and\n * optionally probes the public URL.\n */\n async doctorDockerDeploy(\n deploymentId: string,\n params: DockerDeployDoctorParams = {},\n ): Promise<DockerDeployDoctorResult> {\n const checks: DockerDeployDoctorCheck[] = [];\n const deployment = await this.get(deploymentId);\n const metadata = deployment.metadata ?? {};\n const product = dockerDeployProduct(deployment);\n const hostId = dockerDeployHostId(deployment);\n\n addDoctorCheck(\n checks,\n \"deployment_product\",\n product === \"docker_deploy\",\n product === \"docker_deploy\"\n ? \"Deployment is marked for Docker Deploy.\"\n : `Expected deployment_product=docker_deploy, got ${String(product ?? \"missing\")}.`,\n { deployment_product: product ?? null },\n );\n\n addDoctorCheck(\n checks,\n \"docker_deploy_host_id\",\n Boolean(hostId),\n hostId\n ? \"Deployment has a Docker Deploy host id.\"\n : \"Deployment has no docker_deploy_host_id.\",\n { docker_deploy_host_id: hostId },\n );\n\n let host: DockerDeployHostData | undefined;\n if (hostId) {\n try {\n const rawHost = await this.http.get<unknown>(\n `/docker-deploy/hosts/${hostId}`,\n );\n host = unwrap<DockerDeployHostData>(\n rawHost as DockerDeployHostData | { data?: DockerDeployHostData },\n );\n addDoctorCheck(\n checks,\n \"docker_deploy_host_health\",\n hostHealthy(host),\n hostHealthy(host)\n ? \"Docker Deploy host is active and healthy.\"\n : `Docker Deploy host status=${host.status} appliance=${host.appliance_status}.`,\n {\n status: host.status,\n appliance_status: host.appliance_status,\n },\n );\n } catch (error) {\n addDoctorCheck(\n checks,\n \"docker_deploy_host_health\",\n false,\n error instanceof Error ? error.message : String(error),\n );\n }\n }\n\n const app = dockerDeployApp(deployment);\n const appPort = dockerDeployAppPort(app);\n const appRunning = app?.status === \"running\" && appPort !== null;\n addDoctorCheck(\n checks,\n \"docker_deploy_app\",\n appRunning,\n appRunning\n ? \"Docker Deploy app metadata points at a running container.\"\n : \"Deployment is missing running Docker Deploy app metadata.\",\n app\n ? {\n app_id: app.app_id,\n container_id: app.container_id,\n status: app.status,\n url: app.url,\n expected_port: appPort,\n }\n : undefined,\n );\n\n const runtime = metadata.runtime;\n const runtimeCandidate =\n typeof runtime === \"object\" && runtime !== null\n ? (runtime as Record<string, unknown>)\n : undefined;\n const hasRuntimeRoute =\n typeof runtimeCandidate?.ip === \"string\" &&\n typeof runtimeCandidate.port === \"number\";\n const runtimeRecord = hasRuntimeRoute\n ? runtimeCandidate\n : undefined;\n const routeMatchesContainerPort =\n hasRuntimeRoute && (appPort === null || runtimeRecord?.port === appPort);\n addDoctorCheck(\n checks,\n \"runtime_route\",\n hasRuntimeRoute && routeMatchesContainerPort,\n hasRuntimeRoute && routeMatchesContainerPort\n ? \"Deployment route points at the Docker container host port.\"\n : hasRuntimeRoute && appPort !== null\n ? `Deployment route port ${String(runtimeRecord?.port)} does not match Docker container host port ${appPort}.`\n : \"Deployment is missing appliance runtime route metadata.\",\n runtimeRecord\n ? {\n ...runtimeRecord,\n expected_port: appPort,\n docker_deploy_url: app?.url,\n }\n : undefined,\n );\n\n let probe: DockerDeployDoctorProbe | undefined;\n const publicUrl = deployment.public_url;\n const path = params.probePath ?? params.probe_path ?? \"/\";\n if (publicUrl && typeof fetch === \"function\") {\n const url = probeUrl(publicUrl, path);\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n params.timeoutMs ?? params.timeout_ms ?? 10_000,\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n signal: controller.signal,\n });\n probe = { url, ok: response.ok, status: response.status };\n addDoctorCheck(\n checks,\n \"public_url_probe\",\n response.ok,\n `Public URL returned HTTP ${response.status}.`,\n { url, status: response.status },\n );\n } catch (error) {\n probe = {\n url,\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n };\n addDoctorCheck(\n checks,\n \"public_url_probe\",\n false,\n probe.error ?? \"Public URL probe failed.\",\n { url },\n );\n } finally {\n clearTimeout(timeout);\n }\n }\n\n return {\n ok: checks.every((check) => check.ok),\n deployment,\n ...(host ? { host } : {}),\n checks,\n ...(probe ? { probe } : {}),\n };\n }\n\n async update(\n deploymentId: string,\n params: DeploymentUpdateParams,\n ): Promise<DeploymentData> {\n const body = stripUndefined({\n name: params.name,\n branch: params.branch,\n build_command: params.buildCommand ?? params.build_command,\n run_command: params.runCommand ?? params.run_command,\n auto_deploy: params.autoDeploy ?? params.auto_deploy,\n });\n const data = await this.http.patch<unknown>(\n `/deployments/${deploymentId}`,\n body,\n );\n return unwrap(data) as DeploymentData;\n }\n\n async delete(deploymentId: string): Promise<void> {\n await this.http.delete<unknown>(`/deployments/${deploymentId}`);\n }\n\n async publish(\n deploymentId: string,\n params: PublishParams,\n ): Promise<PublishResult> {\n const body = stripUndefined({\n source_sandbox_id: params.sourceSandboxId ?? params.source_sandbox_id,\n output_path: params.outputPath ?? params.output_path,\n entrypoint: params.entrypoint,\n promote: params.promote,\n });\n const data = await this.http.request<unknown>(\n `/deployments/${deploymentId}/publish`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as PublishResult;\n }\n\n /**\n * Backward-compatible bridge: POST /sandboxes/:id/deploy. Works today;\n * returns either release-backed or sandbox-backed depending on backend\n * phase. Prefer `publish()` once Phase 2B/3 lands.\n */\n async publishFromSandbox(\n sandboxId: string,\n params: PublishFromSandboxParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined({\n name: params.name,\n deployment_id: params.deploymentId ?? params.deployment_id,\n output_path: params.outputPath ?? params.output_path,\n source_snapshot_path:\n params.sourceSnapshotPath ?? params.source_snapshot_path,\n entrypoint: params.entrypoint,\n domain: params.domain,\n custom_domain: params.customDomain ?? params.custom_domain,\n });\n const data = await this.http.request<unknown>(\n `/sandboxes/${sandboxId}/deploy`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as Record<string, unknown>;\n }\n\n async rollback(\n deploymentId: string,\n params: RollbackParams = {},\n ): Promise<DeploymentData> {\n const body = stripUndefined({\n version_id: params.versionId ?? params.version_id,\n });\n const data = await this.http.request<unknown>(\n `/deployments/${deploymentId}/rollback`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as DeploymentData;\n }\n\n async listBuilds(deploymentId: string): Promise<DeploymentBuildData[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${deploymentId}/builds`,\n );\n return listItems<DeploymentBuildData>(data);\n }\n\n async getBuild(\n deploymentId: string,\n buildId: string,\n ): Promise<DeploymentBuildData> {\n const data = await this.http.get<unknown>(\n `/deployments/${deploymentId}/builds/${buildId}`,\n );\n return unwrap(data) as DeploymentBuildData;\n }\n\n async listEnv(deploymentId: string): Promise<Record<string, unknown>[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${deploymentId}/env`,\n );\n return listItems<Record<string, unknown>>(data);\n }\n\n async setEnv(\n deploymentId: string,\n vars: Record<string, string>,\n opts: { environment?: string } = {},\n ): Promise<Record<string, unknown>[]> {\n const body = stripUndefined({ env: vars, environment: opts.environment });\n const data = await this.http.post<unknown>(\n `/deployments/${deploymentId}/env`,\n body,\n );\n return listItems<Record<string, unknown>>(data);\n }\n\n versions(deploymentId: string): DeploymentVersions {\n return new DeploymentVersions(this.http, deploymentId);\n }\n\n releases(deploymentId: string): DeploymentReleases {\n return new DeploymentReleases(this.http, deploymentId);\n }\n\n runtimeInstances(deploymentId: string): DeploymentRuntimeInstances {\n return new DeploymentRuntimeInstances(this.http, deploymentId);\n }\n\n runtime_instances(deploymentId: string): DeploymentRuntimeInstances {\n return this.runtimeInstances(deploymentId);\n }\n\n domains(deploymentId: string): DeploymentDomains {\n return new DeploymentDomains(this.http, deploymentId);\n }\n\n connectors(deploymentId: string): DeploymentConnectors {\n return new DeploymentConnectors(this.http, deploymentId);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport type DeviceKind = \"sandbox\" | \"computer\" | \"sandbox_worker\" | string;\n\nexport interface DeviceData {\n id?: string;\n kind?: DeviceKind;\n type?: DeviceKind;\n name?: string | null;\n state?: string | null;\n status?: string | null;\n ready?: boolean | null;\n persistent?: boolean | null;\n always_on?: boolean | null;\n preview_url?: string | null;\n metadata?: Record<string, unknown> | null;\n [key: string]: unknown;\n}\n\nexport interface DeviceListParams {\n kind?: DeviceKind;\n type?: DeviceKind;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n}\n\nexport interface DeviceCapabilities {\n id?: string;\n kind?: DeviceKind;\n capabilities?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface DeviceExecParams {\n command: string | string[];\n timeoutMs?: number;\n timeout_ms?: number;\n cwd?: string;\n env?: Record<string, string>;\n}\n\nexport interface DeviceExecResult {\n exit_code?: number | null;\n exitCode?: number | null;\n stdout?: string;\n stderr?: string;\n status?: string;\n [key: string]: unknown;\n}\n\nexport interface DeviceFileListParams {\n path?: string;\n}\n\nexport interface DeviceFileEntry {\n name?: string;\n path?: string;\n type?: \"file\" | \"dir\" | string;\n size?: number | null;\n modified?: string | null;\n [key: string]: unknown;\n}\n\nexport interface DeviceReadFileParams {\n path: string;\n}\n\nexport interface DeviceReadFileResult {\n path: string;\n size?: number | null;\n encoding?: \"base64\" | string;\n content: string;\n [key: string]: unknown;\n}\n\nexport interface DeviceWriteFileParams {\n path: string;\n content?: string;\n contentBase64?: string;\n content_base64?: string;\n}\n\nexport interface DeviceWriteFileResult {\n path?: string;\n size?: number | null;\n [key: string]: unknown;\n}\n\nexport interface DeviceExposeParams {\n port: number;\n}\n\nexport interface DeviceExposeResult {\n port?: number;\n url?: string;\n ready?: boolean;\n [key: string]: unknown;\n}\n\nexport interface DeviceLifecycleResult {\n id?: string;\n state?: string;\n [key: string]: unknown;\n}\n\nexport interface DeviceExtendParams {\n timeoutSec?: number;\n timeout_sec?: number;\n}\n\nexport type DeviceConnectorBinding =\n | string\n | {\n uid?: string;\n name?: string;\n type?: \"mcp\" | \"api-key\" | \"api_key\" | \"oauth\" | \"custom\" | string;\n provider?: string;\n managed?: boolean;\n server_url?: string;\n serverUrl?: string;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n };\n\nexport interface DeviceBootstrapParams {\n runtime: \"osa\" | \"claude-code\" | \"claude\" | \"codex\" | \"hermes\" | \"pi\" | \"custom\" | string;\n cwd?: string;\n connectors?: DeviceConnectorBinding[];\n env?: Record<string, string>;\n mcp?: Array<{ name: string; url: string }>;\n installCommand?: string;\n install_command?: string;\n skipProbe?: boolean;\n skip_probe?: boolean;\n}\n\nexport interface DeviceBootstrapResult {\n device_id: string;\n ok: boolean;\n runtime: string;\n manifest_path: string;\n steps: Array<{\n name: string;\n ok: boolean;\n detail?: unknown;\n error?: string;\n }>;\n}\n\nexport interface DeviceBrowserResult {\n kind?: string;\n desktop_url?: string;\n desktopEntryUrl?: string;\n desktop_entry_url?: string;\n ws_url?: string;\n wsUrl?: string;\n token?: string;\n expires_at?: number;\n expiresAt?: number;\n computer_id?: string;\n computerId?: string;\n slug?: string;\n [key: string]: unknown;\n}\n\nconst RUNTIME_BINARIES: Record<string, string[]> = {\n \"claude-code\": [\"claude-code\", \"claude\"],\n claude: [\"claude\"],\n codex: [\"codex\"],\n hermes: [\"hermes\"],\n osa: [\"osa\"],\n pi: [\"pi\"],\n custom: [],\n};\n\nfunction unwrap<T>(payload: unknown, keys: string[] = [\"data\"]): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of keys) {\n if (key in p) return p[key] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of [\"data\", \"devices\", \"items\", \"entries\"]) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const value of values) if (value !== undefined) return value;\n return undefined;\n}\n\nfunction queryFromListParams(\n params: DeviceListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n kind: pickFirst(params.kind, params.type),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction queryFromFileParams(\n params: DeviceFileListParams | DeviceReadFileParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n path: params.path,\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction devicePath(id: string): string {\n return encodeURIComponent(id);\n}\n\nexport class Devices {\n constructor(private readonly http: HttpClient) {}\n\n /** List unified MIOSA devices: sandbox workers and desktop computers. */\n async list(params: DeviceListParams = {}): Promise<DeviceData[]> {\n const data = await this.http.get<unknown>(\n \"/devices\",\n queryFromListParams(params),\n );\n return unwrapList<DeviceData>(data);\n }\n\n /** Show one unified device by id. */\n async get(id: string): Promise<DeviceData> {\n const data = await this.http.get<unknown>(`/devices/${devicePath(id)}`);\n return unwrap<DeviceData>(data);\n }\n\n show(id: string): Promise<DeviceData> {\n return this.get(id);\n }\n\n /** Discover the operations this device supports. */\n async capabilities(id: string): Promise<DeviceCapabilities> {\n const data = await this.http.get<unknown>(\n `/devices/${devicePath(id)}/capabilities`,\n );\n return unwrap<DeviceCapabilities>(data);\n }\n\n /** Execute a command inside the device. */\n async exec(id: string, params: DeviceExecParams): Promise<DeviceExecResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/exec`,\n stripUndefined({\n command: params.command,\n timeout_ms: pickFirst(params.timeoutMs, params.timeout_ms),\n cwd: params.cwd,\n env: params.env,\n }),\n );\n return unwrap<DeviceExecResult>(data);\n }\n\n /** List files inside the device filesystem. */\n async listFiles(\n id: string,\n params: DeviceFileListParams = {},\n ): Promise<DeviceFileEntry[]> {\n const data = await this.http.get<unknown>(\n `/devices/${devicePath(id)}/files`,\n queryFromFileParams(params),\n );\n return unwrapList<DeviceFileEntry>(data);\n }\n\n /** Read a file. Content is returned base64-encoded by the API. */\n async readFile(\n id: string,\n params: DeviceReadFileParams,\n ): Promise<DeviceReadFileResult> {\n const data = await this.http.get<unknown>(\n `/devices/${devicePath(id)}/files/read`,\n queryFromFileParams(params),\n );\n return unwrap<DeviceReadFileResult>(data);\n }\n\n /** Write a text or base64 payload into the device filesystem. */\n async writeFile(\n id: string,\n params: DeviceWriteFileParams,\n ): Promise<DeviceWriteFileResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/files/write`,\n stripUndefined({\n path: params.path,\n content: params.content,\n content_base64: pickFirst(params.contentBase64, params.content_base64),\n }),\n );\n return unwrap<DeviceWriteFileResult>(data);\n }\n\n /** Expose a device port through MIOSA routing. */\n async expose(\n id: string,\n params: DeviceExposeParams,\n ): Promise<DeviceExposeResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/expose`,\n { port: params.port },\n );\n return unwrap<DeviceExposeResult>(data);\n }\n\n /** Return browser/desktop connection details for a computer-backed device. */\n async browser(id: string): Promise<DeviceBrowserResult> {\n const data = await this.http.get<unknown>(`/devices/${devicePath(id)}/browser`);\n return unwrap<DeviceBrowserResult>(data);\n }\n\n async pause(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/pause`,\n {},\n );\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n async stop(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/stop`,\n {},\n );\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n async resume(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/resume`,\n {},\n );\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n async extend(\n id: string,\n params: DeviceExtendParams,\n ): Promise<DeviceData> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/extend`,\n { timeout_sec: pickFirst(params.timeoutSec, params.timeout_sec) },\n );\n return unwrap<DeviceData>(data);\n }\n\n async destroy(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.delete<unknown>(`/devices/${devicePath(id)}`);\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n /**\n * Write a MIOSA runtime bootstrap manifest and optionally install/probe\n * an agent runtime inside the device.\n */\n async bootstrap(\n id: string,\n params: DeviceBootstrapParams,\n ): Promise<DeviceBootstrapResult> {\n const runtime = params.runtime.trim().toLowerCase();\n const cwd = params.cwd ?? \"/workspace\";\n const manifestPath = `${cwd.replace(/\\/$/, \"\")}/.miosa/runtime-bootstrap.json`;\n const steps: DeviceBootstrapResult[\"steps\"] = [];\n\n const manifest = {\n version: 1,\n runtime,\n cwd,\n expected_binaries: RUNTIME_BINARIES[runtime] ?? [],\n connectors: params.connectors ?? [],\n env: params.env ?? {},\n mcp: params.mcp ?? [],\n created_by: \"@miosa/sdk\",\n };\n\n await this.recordStep(steps, \"write_manifest\", () =>\n this.writeFile(id, {\n path: manifestPath,\n content: `${JSON.stringify(manifest, null, 2)}\\n`,\n }),\n );\n\n const installCommand = pickFirst(params.installCommand, params.install_command);\n if (installCommand) {\n await this.recordStep(steps, \"install\", () =>\n this.exec(id, {\n command: installCommand,\n cwd,\n timeoutMs: 600_000,\n }),\n );\n }\n\n if (!(params.skipProbe ?? params.skip_probe)) {\n await this.recordStep(steps, \"probe\", () =>\n this.exec(id, {\n command: runtimeProbeCommand(runtime),\n cwd,\n timeoutMs: 60_000,\n }),\n );\n }\n\n return {\n device_id: id,\n ok: steps.every((step) => step.ok),\n runtime,\n manifest_path: manifestPath,\n steps,\n };\n }\n\n private async recordStep(\n steps: DeviceBootstrapResult[\"steps\"],\n name: string,\n fn: () => Promise<unknown>,\n ): Promise<void> {\n try {\n steps.push({ name, ok: true, detail: await fn() });\n } catch (error) {\n steps.push({\n name,\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n}\n\nfunction runtimeProbeCommand(runtime: string): string {\n const binaries = RUNTIME_BINARIES[runtime] ?? [];\n if (binaries.length === 0) return \"printf 'custom runtime manifest written\\\\n'\";\n const checks = binaries\n .map((binary) => `command -v ${shellWord(binary)} >/dev/null 2>&1`)\n .join(\" || \");\n const display = binaries.join(\" or \");\n return `${checks} && printf 'runtime available: ${display}\\\\n' || { printf 'runtime missing: ${display}\\\\n' >&2; exit 127; }`;\n}\n\nfunction shellWord(value: string): string {\n if (/^[A-Za-z0-9_./:-]+$/.test(value)) return value;\n return `'${value.replaceAll(\"'\", \"'\\\"'\\\"'\")}'`;\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport type DockerDeployHostId = string & {\n readonly __brand: \"DockerDeployHostId\";\n};\n\nexport type DockerDeployHostStatus =\n | \"pending\"\n | \"provisioning\"\n | \"bootstrapping\"\n | \"active\"\n | \"degraded\"\n | \"suspended\"\n | \"retired\"\n | \"error\";\n\nexport type DockerDeployApplianceStatus =\n | \"not_installed\"\n | \"installing\"\n | \"starting\"\n | \"healthy\"\n | \"unhealthy\"\n | \"unknown\";\n\nexport interface DockerDeployHostData {\n id: DockerDeployHostId;\n tenant_id: string;\n workspace_id: string;\n external_workspace_id?: string | null;\n computer_id?: string | null;\n fleet_node_id?: string | null;\n status: DockerDeployHostStatus;\n size: string;\n region: string;\n portal_domain?: string | null;\n runtime_base_url?: string | null;\n agent_base_url?: string | null;\n appliance_image?: string | null;\n appliance_version?: string | null;\n appliance_status: DockerDeployApplianceStatus;\n agent_last_seen_at?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DockerDeployHostListParams {\n workspace_id?: string;\n workspaceId?: string;\n}\n\nexport interface DockerDeployHostEnsureParams {\n workspace_id?: string;\n workspaceId?: string;\n external_workspace_id?: string;\n externalWorkspaceId?: string;\n}\n\nexport interface DockerDeployHostListResponse {\n data?: DockerDeployHostData[];\n hosts?: DockerDeployHostData[];\n}\n\nexport interface DockerDeployHostResponse {\n data?: DockerDeployHostData;\n host?: DockerDeployHostData;\n queued?: boolean;\n}\n\nexport interface DockerDeployTemplate {\n id: string;\n name: string;\n description?: string;\n category?: string;\n runtime?: string;\n tags?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface DockerDeployTemplateListResponse {\n data?: DockerDeployTemplate[];\n templates?: DockerDeployTemplate[];\n}\n\nexport interface DockerDeployTemplateResponse {\n data?: DockerDeployTemplate;\n template?: DockerDeployTemplate;\n}\n\nfunction workspaceId(params?: DockerDeployHostListParams): string | undefined {\n return params?.workspace_id ?? params?.workspaceId;\n}\n\nfunction ensureBody(params: DockerDeployHostEnsureParams): Record<string, string> {\n const body: Record<string, string> = {};\n const id = params.workspace_id ?? params.workspaceId;\n const externalId = params.external_workspace_id ?? params.externalWorkspaceId;\n if (id) body.workspace_id = id;\n if (externalId) body.external_workspace_id = externalId;\n return body;\n}\n\nfunction unwrapHost(response: DockerDeployHostResponse): DockerDeployHostData {\n const host = response.data ?? response.host;\n if (!host) {\n throw new Error(\"Docker Deploy host response was empty.\");\n }\n return host;\n}\n\nfunction unwrapTemplates(response: DockerDeployTemplateListResponse): DockerDeployTemplate[] {\n return response.data ?? response.templates ?? [];\n}\n\nfunction unwrapTemplate(response: DockerDeployTemplateResponse): DockerDeployTemplate {\n const template = response.data ?? response.template;\n if (!template) {\n throw new Error(\"Docker Deploy template response was empty.\");\n }\n return template;\n}\n\nexport class DockerDeploy {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List Docker Deploy appliance hosts scoped to the current tenant.\n *\n * Pass a workspace ID to inspect the dedicated always-on appliance machine\n * for one white-label workspace.\n */\n async listHosts(\n params: DockerDeployHostListParams = {},\n ): Promise<DockerDeployHostData[]> {\n const res = await this.http.get<DockerDeployHostListResponse>(\n \"/docker-deploy/hosts\",\n { workspace_id: workspaceId(params) },\n );\n return res.data ?? res.hosts ?? [];\n }\n\n /**\n * Ensure a workspace has its dedicated Docker Deploy appliance host.\n *\n * The host may still be `pending`, `provisioning`, or `bootstrapping` after\n * this call. Treat `status === \"active\"` and `appliance_status === \"healthy\"`\n * as the ready condition before sending app/container traffic to it.\n */\n async ensureHost(\n params: DockerDeployHostEnsureParams = {},\n ): Promise<{ host: DockerDeployHostData; queued: boolean }> {\n const res = await this.http.post<DockerDeployHostResponse>(\n \"/docker-deploy/hosts/ensure\",\n ensureBody(params),\n );\n return { host: unwrapHost(res), queued: res.queued ?? false };\n }\n\n /** Fetch one Docker Deploy host by ID. */\n async getHost(hostId: string): Promise<DockerDeployHostData> {\n const res = await this.http.get<DockerDeployHostResponse>(\n `/docker-deploy/hosts/${hostId}`,\n );\n return unwrapHost(res);\n }\n\n /** List Docker Deploy starter templates. */\n async listTemplates(): Promise<DockerDeployTemplate[]> {\n const res = await this.http.get<DockerDeployTemplateListResponse>(\n \"/docker-deploy/templates\",\n );\n return unwrapTemplates(res);\n }\n\n /** Fetch one Docker Deploy starter template by ID. */\n async getTemplate(templateId: string): Promise<DockerDeployTemplate> {\n const res = await this.http.get<DockerDeployTemplateResponse>(\n `/docker-deploy/templates/${encodeURIComponent(templateId)}`,\n );\n return unwrapTemplate(res);\n }\n}\n","/**\n * Email — admin email campaigns, templates, and inbox surfaces.\n *\n * Sub-namespaces:\n * client.email.campaigns — bulk email send-out lifecycle\n * client.email.templates — reusable templates (keyed by name)\n * client.email.inbox — inbound + outbound direct messages\n *\n * Routes: /admin/email-{campaigns,templates,inbox}/*\n * Requires admin credential (msk_a_* / msk_p_* or admin JWT).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"campaigns\",\n \"templates\",\n \"inbox\",\n \"deliveries\",\n \"items\",\n ]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"campaigns\",\n \"templates\",\n \"inbox\",\n \"deliveries\",\n \"items\",\n ]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nfunction strip(obj: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Campaigns ──────────────────────────────────────────────────────────────\n\nexport class EmailCampaigns {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\n \"/admin/email-campaigns\",\n filters as Record<string, string | number | boolean | undefined>,\n ),\n );\n }\n\n async create(\n attrs: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\"/admin/email-campaigns\", strip(attrs)),\n );\n }\n\n async recipientCount(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(\n \"/admin/email-campaigns/recipient-count\",\n filters,\n ),\n );\n }\n\n async send(\n campaignId: string,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\n `/admin/email-campaigns/${campaignId}/send`,\n strip(opts),\n ),\n );\n }\n\n async cancel(campaignId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\n `/admin/email-campaigns/${campaignId}/cancel`,\n ),\n );\n }\n\n async deliveries(\n campaignId: string,\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\n `/admin/email-campaigns/${campaignId}/deliveries`,\n filters,\n ),\n );\n }\n}\n\n// ── Templates ──────────────────────────────────────────────────────────────\n\nexport class EmailTemplates {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\"/admin/email-templates\", filters),\n );\n }\n\n async create(\n key: string,\n attrs: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\"/admin/email-templates\", {\n key,\n ...strip(attrs),\n }),\n );\n }\n\n async update(\n key: string,\n attrs: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.put<unknown>(\n `/admin/email-templates/${key}`,\n strip(attrs),\n ),\n );\n }\n\n async reset(key: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/email-templates/${key}/reset`),\n );\n }\n}\n\n// ── Inbox ──────────────────────────────────────────────────────────────────\n\nexport class EmailInbox {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\"/admin/email-inbox\", filters),\n );\n }\n\n async send(attrs: Record<string, unknown>): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\"/admin/email-inbox/send\", strip(attrs)),\n );\n }\n\n async markRead(messageId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/email-inbox/${messageId}/read`),\n );\n }\n\n async archive(messageId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/email-inbox/${messageId}/archive`),\n );\n }\n}\n\n// ── Top-level facade ────────────────────────────────────────────────────────\n\nexport class Email {\n readonly campaigns: EmailCampaigns;\n readonly templates: EmailTemplates;\n readonly inbox: EmailInbox;\n\n constructor(http: HttpClient) {\n this.campaigns = new EmailCampaigns(http);\n this.templates = new EmailTemplates(http);\n this.inbox = new EmailInbox(http);\n }\n}\n","/**\n * Embeddings — OpenAI-compatible embedding vectors.\n *\n * Route: POST /intelligence/embeddings\n * Requires an mki_* intelligence key.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface EmbeddingCreateParams {\n input: string | string[];\n model: string;\n [key: string]: unknown;\n}\n\nexport class Embeddings {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create one or more embedding vectors.\n *\n * Returns the full OpenAI-compatible envelope\n * `{ object: \"list\", data: [...], model, usage }`.\n */\n async create(\n params: EmbeddingCreateParams,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n return this.http.post<Record<string, unknown>>(\n \"/intelligence/embeddings\",\n body,\n );\n }\n}\n","/**\n * External keys — BYOK encrypted per-user provider keys.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ExternalKeyData {\n provider?: string;\n masked_key?: string;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ExternalKeyCreateParams {\n provider: string;\n key: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"external_keys\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ExternalKeys {\n constructor(private readonly http: HttpClient) {}\n\n /** List configured external keys. */\n async list(): Promise<ExternalKeyData[]> {\n const data = await this.http.get<unknown>(\"/external-keys\");\n const result = unwrap<ExternalKeyData[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n\n /** Create / register an external provider key. */\n async create(params: ExternalKeyCreateParams): Promise<ExternalKeyData> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\"/external-keys\", body);\n return unwrap<ExternalKeyData>(data);\n }\n\n /** Resolve (preview) the stored key for a provider. */\n async resolve(provider: string): Promise<ExternalKeyData> {\n const data = await this.http.get<unknown>(\n `/external-keys/${provider}/resolve`,\n );\n return unwrap<ExternalKeyData>(data);\n }\n\n /**\n * Delete the stored key for a provider.\n * Keys are addressed by provider name, not by id.\n */\n async delete(provider: string): Promise<void> {\n await this.http.delete<unknown>(`/external-keys/${provider}`);\n }\n}\n","/**\n * FlatCustomDomains resource — tenant-scoped custom domains at /custom-domains.\n *\n * The per-computer and per-deployment domain APIs live on those resources;\n * this is the flat tenant-level list view for white-label platforms managing\n * many domains across all resources.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type CustomDomainId = string & { readonly __brand: \"CustomDomainId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface CustomDomainData {\n id: CustomDomainId;\n tenant_id: string;\n domain: string;\n state?: string;\n resource_type?: string | null;\n resource_id?: string | null;\n verified?: boolean;\n verification_token?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CustomDomainListParams {\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CustomDomainCreateParams {\n domain: string;\n resource_type?: string;\n resourceType?: string;\n resource_id?: string;\n resourceId?: string;\n redirect_policy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n redirectPolicy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"domains\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class FlatCustomDomains {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: CustomDomainListParams = {}): Promise<CustomDomainData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/custom-domains\", query);\n return listItems<CustomDomainData>(data);\n }\n\n async create(params: CustomDomainCreateParams): Promise<CustomDomainData> {\n const {\n idempotencyKey: ikey,\n resourceType,\n resourceId,\n redirectPolicy,\n ...rest\n } = params;\n const body = stripUndefined({\n ...rest,\n resource_type: resourceType ?? rest.resource_type,\n resource_id: resourceId ?? rest.resource_id,\n redirect_policy: redirectPolicy ?? rest.redirect_policy,\n });\n const data = await this.http.request<unknown>(\"/custom-domains\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<CustomDomainData>(data);\n }\n\n async delete(domainId: string): Promise<void> {\n await this.http.delete<unknown>(`/custom-domains/${domainId}`);\n }\n}\n","/**\n * Functions resource — serverless edge functions.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type FunctionId = string & { readonly __brand: \"FunctionId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface FunctionData {\n id: FunctionId;\n tenant_id: string;\n name: string;\n state?: string;\n runtime?: string | null;\n handler?: string | null;\n memory_mb?: number | null;\n timeout_sec?: number | null;\n env?: Record<string, string>;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface FunctionListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface FunctionCreateParams {\n name: string;\n runtime?: string;\n handler?: string;\n memory_mb?: number;\n memoryMb?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n env?: Record<string, string>;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface FunctionUpdateParams {\n name?: string;\n runtime?: string;\n handler?: string;\n memory_mb?: number;\n memoryMb?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n env?: Record<string, string>;\n [key: string]: unknown;\n}\n\nexport interface FunctionInvokeParams {\n payload?: Record<string, unknown>;\n headers?: Record<string, string>;\n idempotencyKey?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"functions\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Functions {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: FunctionListParams = {}): Promise<FunctionData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/functions\", query);\n return listItems<FunctionData>(data);\n }\n\n async get(functionId: string): Promise<FunctionData> {\n const data = await this.http.get<unknown>(`/functions/${functionId}`);\n return unwrap<FunctionData>(data);\n }\n\n async create(params: FunctionCreateParams): Promise<FunctionData> {\n const { idempotencyKey: ikey, memoryMb, timeoutSec, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n memory_mb: memoryMb ?? rest.memory_mb,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n });\n const data = await this.http.request<unknown>(\"/functions\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<FunctionData>(data);\n }\n\n async update(\n functionId: string,\n params: FunctionUpdateParams,\n ): Promise<FunctionData> {\n const { memoryMb, timeoutSec, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n memory_mb: memoryMb ?? rest.memory_mb,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n });\n const data = await this.http.patch<unknown>(\n `/functions/${functionId}`,\n body,\n );\n return unwrap<FunctionData>(data);\n }\n\n async delete(functionId: string): Promise<void> {\n await this.http.delete<unknown>(`/functions/${functionId}`);\n }\n\n async invoke(\n functionId: string,\n params: FunctionInvokeParams = {},\n ): Promise<Record<string, unknown>> {\n const { payload = {}, headers, idempotencyKey: ikey } = params;\n const data = await this.http.request<unknown>(\n `/functions/${functionId}/invoke`,\n {\n method: \"POST\",\n body: payload,\n headers: {\n \"Idempotency-Key\": idempotencyKey(ikey),\n ...headers,\n },\n },\n );\n return (data ?? {}) as Record<string, unknown>;\n }\n}\n","/**\n * HealthChecks resource — uptime monitoring.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type HealthCheckId = string & { readonly __brand: \"HealthCheckId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface HealthCheckData {\n id: HealthCheckId;\n tenant_id: string;\n name: string;\n url: string;\n state?: string;\n interval_sec?: number;\n timeout_sec?: number;\n method?: string;\n expected_status?: number | null;\n last_checked_at?: string | null;\n last_status?: \"up\" | \"down\" | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface HealthCheckListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface HealthCheckCreateParams {\n name: string;\n url: string;\n interval_sec?: number;\n intervalSec?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n method?: string;\n expected_status?: number;\n expectedStatus?: number;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface HealthCheckUpdateParams {\n name?: string;\n url?: string;\n interval_sec?: number;\n intervalSec?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n method?: string;\n expected_status?: number;\n expectedStatus?: number;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"health_checks\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class HealthChecks {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: HealthCheckListParams = {}): Promise<HealthCheckData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/health-checks\", query);\n return listItems<HealthCheckData>(data);\n }\n\n async get(checkId: string): Promise<HealthCheckData> {\n const data = await this.http.get<unknown>(`/health-checks/${checkId}`);\n return unwrap<HealthCheckData>(data);\n }\n\n async create(params: HealthCheckCreateParams): Promise<HealthCheckData> {\n const {\n idempotencyKey: ikey,\n intervalSec,\n timeoutSec,\n expectedStatus,\n ...rest\n } = params;\n const body = stripUndefined({\n ...rest,\n interval_sec: intervalSec ?? rest.interval_sec,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n expected_status: expectedStatus ?? rest.expected_status,\n });\n const data = await this.http.request<unknown>(\"/health-checks\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<HealthCheckData>(data);\n }\n\n async update(\n checkId: string,\n params: HealthCheckUpdateParams,\n ): Promise<HealthCheckData> {\n const { intervalSec, timeoutSec, expectedStatus, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n interval_sec: intervalSec ?? rest.interval_sec,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n expected_status: expectedStatus ?? rest.expected_status,\n });\n const data = await this.http.patch<unknown>(\n `/health-checks/${checkId}`,\n body,\n );\n return unwrap<HealthCheckData>(data);\n }\n\n async delete(checkId: string): Promise<void> {\n await this.http.delete<unknown>(`/health-checks/${checkId}`);\n }\n}\n","/**\n * Integrations — OAuth account-level connections (GitHub, Slack, Linear, Discord).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface IntegrationData {\n id?: string;\n provider?: string;\n status?: string;\n connected_at?: string;\n [key: string]: unknown;\n}\n\nexport interface IntegrationCatalogEntry {\n provider?: string;\n name?: string;\n description?: string;\n [key: string]: unknown;\n}\n\nexport interface GithubRepo {\n id?: number;\n name?: string;\n full_name?: string;\n private?: boolean;\n [key: string]: unknown;\n}\n\nexport interface GithubSshKey {\n id?: number;\n title?: string;\n key?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SlackSendTestParams {\n message?: string;\n channel?: string;\n [key: string]: unknown;\n}\n\nexport interface DiscordSendTestParams {\n message?: string;\n channel_id?: string;\n [key: string]: unknown;\n}\n\nexport interface LinearCreateIssueParams {\n title?: string;\n description?: string;\n team_id?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"integrations\", \"catalog\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Integrations {\n constructor(private readonly http: HttpClient) {}\n\n /** List active OAuth integrations for the tenant. */\n async list(): Promise<IntegrationData[]> {\n const data = await this.http.get<unknown>(\"/integrations\");\n return listItems<IntegrationData>(data);\n }\n\n /** List available providers in the integration catalog. */\n async catalog(): Promise<IntegrationCatalogEntry[]> {\n const data = await this.http.get<unknown>(\"/integrations/catalog\");\n return listItems<IntegrationCatalogEntry>(data);\n }\n\n /** Begin the OAuth flow for a provider — returns an authorize URL. */\n async start(provider: string): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\n `/integrations/${provider}/start`,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Force-refresh the access token for a provider. */\n async refresh(provider: string): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(\n `/integrations/${provider}/refresh`,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Disconnect (revoke) an integration. */\n async disconnect(provider: string): Promise<void> {\n await this.http.delete<unknown>(`/integrations/${provider}`);\n }\n\n // ── GitHub-specific capabilities ───────────────────────────────────────────\n\n /** List GitHub repositories accessible to this integration. */\n async githubRepos(): Promise<GithubRepo[]> {\n const data = await this.http.get<unknown>(\"/integrations/github/repos\");\n return listItems<GithubRepo>(data);\n }\n\n /** List configured GitHub deploy keys. */\n async githubSshKeys(): Promise<GithubSshKey[]> {\n const data = await this.http.get<unknown>(\"/integrations/github/ssh-keys\");\n return listItems<GithubSshKey>(data);\n }\n\n // ── Test hooks ─────────────────────────────────────────────────────────────\n\n /** Send a test message to the connected Slack channel. */\n async slackSendTest(\n params: SlackSendTestParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/integrations/slack/send-test\",\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Send a test message to the connected Discord channel. */\n async discordSendTest(\n params: DiscordSendTestParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/integrations/discord/send-test\",\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n // ── Linear dedicated controller ────────────────────────────────────────────\n\n /** Begin Linear OAuth — Linear has provider-specific error shapes. */\n async linearStart(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/integrations/linear/start\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Create a Linear issue via the connected workspace. */\n async linearCreateIssue(\n params: LinearCreateIssueParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/integrations/linear/create-issue\",\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n}\n","/**\n * Mcp — Model Context Protocol streamable-HTTP transport.\n *\n * Clients (Claude Code, Cursor, Gemini CLI, Copilot) point at /api/v1/mcp\n * with a msk_* Bearer token and discover the MIOSA tool-belt.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface McpDispatchParams {\n method?: string;\n params?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"mcp\", \"result\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Mcp {\n constructor(private readonly http: HttpClient) {}\n\n /** Send a JSON-RPC request to the MCP endpoint. */\n async dispatch(\n params: McpDispatchParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/mcp\",\n Object.keys(body).length > 0 ? body : undefined,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /**\n * Open the MCP listen channel (GET).\n *\n * Returns whatever the server returns. For true SSE streaming, use\n * `http.stream(\"/mcp\")` directly.\n */\n async listen(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/mcp\");\n return unwrap(data);\n }\n\n /** Close (terminate) the MCP session. */\n async close(): Promise<void> {\n await this.http.delete<unknown>(\"/mcp\");\n }\n}\n","/**\n * Models — list available LLMs across providers.\n *\n * Routes: GET /intelligence/models\n * Requires an mki_* intelligence key or JWT.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): unknown[] {\n if (Array.isArray(data)) return data;\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"models\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as unknown[];\n }\n }\n return [];\n}\n\nexport class Models {\n constructor(private readonly http: HttpClient) {}\n\n /** List all models available to the calling tenant (OpenAI-compatible shape). */\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/intelligence/models\", query);\n return unwrap(data) as Record<string, unknown>[];\n }\n\n /**\n * Get a single model by id.\n *\n * The platform router does not expose a per-model GET; this filters\n * the list payload client-side.\n */\n async get(modelId: string): Promise<Record<string, unknown>> {\n const all = await this.list();\n return all.find((m) => (m as Record<string, unknown>).id === modelId) ?? {};\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n AgentDispatchParams,\n AgentEvent,\n AgentSessionListResponse,\n HostId,\n OcAgentSessionData,\n} from \"./types.js\";\n\n/**\n * Agents resource — dispatch Optimal AI agent sessions that execute on a\n * remote OpenComputers host via the OSA/WS tunnel.\n *\n * ```ts\n * const session = await client.openComputers.agents.dispatch(hostId, {\n * task: \"Run the test suite and report failures\",\n * });\n *\n * for await (const event of client.openComputers.agents.events(hostId, session.id)) {\n * console.log(event.type, event.data);\n * if (event.type === \"session_completed\" || event.type === \"done\") break;\n * }\n * ```\n */\nexport class Agents {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/agent`;\n }\n\n private unwrapSession(payload: unknown): OcAgentSessionData {\n const value =\n payload && typeof payload === \"object\" && \"session\" in payload\n ? (payload as { session: unknown }).session\n : payload && typeof payload === \"object\" && \"data\" in payload\n ? (payload as { data: unknown }).data\n : payload;\n\n const session = value as OcAgentSessionData;\n if (!session.id && session.session_id) {\n return { ...session, id: session.session_id };\n }\n return session;\n }\n\n private unwrapList(payload: unknown): AgentSessionListResponse {\n if (payload && typeof payload === \"object\" && \"sessions\" in payload) {\n return { data: (payload as { sessions: OcAgentSessionData[] }).sessions };\n }\n if (Array.isArray(payload)) {\n return { data: payload as OcAgentSessionData[] };\n }\n return payload as AgentSessionListResponse;\n }\n\n /**\n * Dispatch a new agent session on the host.\n */\n async dispatch(\n hostId: HostId | string,\n params: AgentDispatchParams,\n ): Promise<OcAgentSessionData> {\n const payload = await this.http.post<unknown>(`${this.base(hostId)}/dispatch`, params);\n return this.unwrapSession(payload);\n }\n\n /**\n * List all agent sessions for a host.\n */\n async list(hostId: HostId | string): Promise<AgentSessionListResponse> {\n const payload = await this.http.get<unknown>(`${this.base(hostId)}/sessions`);\n return this.unwrapList(payload);\n }\n\n /**\n * Fetch the current state of a specific agent session.\n */\n async get(\n hostId: HostId | string,\n sessionId: string,\n ): Promise<OcAgentSessionData> {\n const payload = await this.http.get<unknown>(`${this.base(hostId)}/sessions/${sessionId}`);\n return this.unwrapSession(payload);\n }\n\n /**\n * Stream live events from an agent session.\n *\n * Yields `AgentEvent` objects. Break on `type === \"done\"` or\n * `type === \"session_completed\"`.\n */\n events(\n hostId: HostId | string,\n sessionId: string,\n ): AsyncIterableIterator<AgentEvent> {\n return this.http.stream<AgentEvent>(\n `${this.base(hostId)}/sessions/${sessionId}/events`,\n );\n }\n\n /**\n * Cancel a running or pending agent session.\n */\n async cancel(hostId: HostId | string, sessionId: string): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/sessions/${sessionId}`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n AppCatalogEntry,\n AppInstallData,\n AppInstallEvent,\n HostId,\n} from \"./types.js\";\n\n/**\n * Apps resource — one-click install of common dev services on a remote host.\n *\n * ```ts\n * const catalog = await client.openComputers.apps.catalog();\n * const install = await client.openComputers.apps.install(hostId, \"postgres\");\n *\n * for await (const evt of client.openComputers.apps.installEvents(hostId, install.id)) {\n * console.log(evt.type, evt.data);\n * if (evt.type === \"installed\" || evt.type === \"failed\") break;\n * }\n * ```\n */\nexport class Apps {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * List all available apps in the MIOSA app library.\n */\n async catalog(): Promise<AppCatalogEntry[]> {\n const result = await this.http.get<{ data: AppCatalogEntry[] }>(\n \"/opencomputers/apps\",\n );\n return result.data;\n }\n\n /**\n * List apps installed on a specific host.\n */\n async listInstalled(hostId: HostId | string): Promise<AppInstallData[]> {\n const result = await this.http.get<{ data: AppInstallData[] }>(\n `/opencomputers/hosts/${hostId}/apps`,\n );\n return result.data;\n }\n\n /**\n * Install an app on a host by app catalog ID.\n */\n async install(\n hostId: HostId | string,\n appId: string,\n ): Promise<AppInstallData> {\n return this.http.post<AppInstallData>(\n `/opencomputers/hosts/${hostId}/apps/${appId}/install`,\n );\n }\n\n /**\n * Get the current state of an install operation.\n */\n async getInstall(\n hostId: HostId | string,\n installId: string,\n ): Promise<AppInstallData> {\n return this.http.get<AppInstallData>(\n `/opencomputers/hosts/${hostId}/apps/installs/${installId}`,\n );\n }\n\n /**\n * Stream install progress events.\n */\n installEvents(\n hostId: HostId | string,\n installId: string,\n ): AsyncIterableIterator<AppInstallEvent> {\n return this.http.stream<AppInstallEvent>(\n `/opencomputers/hosts/${hostId}/apps/installs/${installId}/events`,\n );\n }\n\n /**\n * Uninstall an app from a host.\n */\n async uninstall(hostId: HostId | string, appId: string): Promise<void> {\n return this.http.delete<void>(\n `/opencomputers/hosts/${hostId}/apps/${appId}`,\n );\n }\n\n /**\n * Start a previously installed app (e.g. start the postgres service).\n */\n async startApp(hostId: HostId | string, appId: string): Promise<void> {\n return this.http.post<void>(\n `/opencomputers/hosts/${hostId}/apps/${appId}/start`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n ClusterCreateParams,\n ClusterData,\n ClusterEvent,\n ClusterId,\n ClusterListResponse,\n} from \"./types.js\";\n\n/**\n * Clusters resource — manage multi-host LLM inference clusters (exo / MLX\n * Distributed). Hosts must be Apple Silicon.\n *\n * Once a cluster is active it exposes an OpenAI-compatible endpoint at:\n * `POST /inference/{slug}/v1/chat/completions`\n *\n * Point any OpenAI client at `https://api.miosa.ai/inference/{slug}/v1` with\n * your `msk_*` Bearer token.\n *\n * ```ts\n * const cluster = await client.openComputers.clusters.create({\n * name: \"llama-cluster\",\n * model: \"llama3:70b\",\n * host_ids: [hostA.id, hostB.id],\n * });\n * console.log(cluster.inference_url); // OpenAI-compatible base URL\n * ```\n */\nexport class Clusters {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(): string {\n return \"/opencomputers/clusters\";\n }\n\n /**\n * List all inference clusters for the tenant.\n */\n async list(): Promise<ClusterListResponse> {\n return this.http.get<ClusterListResponse>(this.base());\n }\n\n /**\n * Create and provision a new inference cluster.\n */\n async create(params: ClusterCreateParams): Promise<ClusterData> {\n return this.http.post<ClusterData>(this.base(), params);\n }\n\n /**\n * Fetch a single cluster.\n */\n async get(id: ClusterId | string): Promise<ClusterData> {\n return this.http.get<ClusterData>(`${this.base()}/${id}`);\n }\n\n /**\n * Start a stopped cluster.\n */\n async start(id: ClusterId | string): Promise<ClusterData> {\n return this.http.post<ClusterData>(`${this.base()}/${id}/start`);\n }\n\n /**\n * Stop a running cluster (preserves configuration).\n */\n async stop(id: ClusterId | string): Promise<ClusterData> {\n return this.http.post<ClusterData>(`${this.base()}/${id}/stop`);\n }\n\n /**\n * Permanently delete a cluster.\n */\n async delete(id: ClusterId | string): Promise<void> {\n return this.http.delete<void>(`${this.base()}/${id}`);\n }\n\n /**\n * Stream cluster provisioning / health events.\n */\n events(id: ClusterId | string): AsyncIterableIterator<ClusterEvent> {\n return this.http.stream<ClusterEvent>(`${this.base()}/${id}/events`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type { HostId, WsTicket } from \"./types.js\";\n\n/**\n * Desktop resource — issue WebSocket tickets for KasmVNC desktop streaming on\n * a remote OpenComputers host.\n *\n * The ticket is consumed by a WebSocket upgrade at the URL in `ws_url`. Connect\n * a KasmVNC-compatible client (or an iframe pointing at the VNC web client) to\n * drive the desktop.\n *\n * ```ts\n * const { ws_url } = await client.openComputers.desktop.ticket(hostId);\n * // Open ws_url in an iframe or VNC client\n * ```\n */\nexport class Desktop {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Issue a short-lived WebSocket ticket for a desktop streaming session.\n *\n * The ticket expires quickly — open the WebSocket immediately after receiving it.\n */\n async ticket(hostId: HostId | string): Promise<WsTicket> {\n return this.http.post<WsTicket>(\n `/opencomputers/hosts/${hostId}/desktop/ticket`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type { FsEntry, FsListResponse, FsStat, HostId } from \"./types.js\";\n\n/**\n * Files resource — direct file-system access on a remote OpenComputers host.\n *\n * Operations are proxied through the OSA daemon running on the host.\n *\n * ```ts\n * const entries = await client.openComputers.files.list(hostId, \"/home/user\");\n * const bytes = await client.openComputers.files.download(hostId, \"/home/user/report.pdf\");\n * await client.openComputers.files.upload(hostId, \"/tmp/data.json\", new TextEncoder().encode(\"{}\"));\n * ```\n */\nexport class OcFiles {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/fs`;\n }\n\n /**\n * List directory entries at `path`.\n */\n async list(hostId: HostId | string, path: string): Promise<FsListResponse> {\n return this.http.get<FsListResponse>(this.base(hostId), { path });\n }\n\n /**\n * Stat a path (does not follow symlinks).\n */\n async stat(hostId: HostId | string, path: string): Promise<FsStat> {\n return this.http.get<FsStat>(`${this.base(hostId)}/stat`, { path });\n }\n\n /**\n * Download a file from the host. Returns raw bytes.\n */\n async download(hostId: HostId | string, path: string): Promise<Uint8Array> {\n const url = `${this.base(hostId)}/download?path=${encodeURIComponent(path)}`;\n return this.http.getBinary(url);\n }\n\n /**\n * Upload content to `remotePath` on the host.\n *\n * @param content - `Blob`, `Uint8Array`, or UTF-8 string.\n * @param remotePath - Absolute destination path on the host.\n * @param filename - Optional filename hint; defaults to `remotePath` basename.\n */\n async upload(\n hostId: HostId | string,\n remotePath: string,\n content: Blob | Uint8Array | string,\n filename?: string,\n ): Promise<FsEntry> {\n const fd = new FormData();\n const name = filename ?? remotePath.split(\"/\").pop() ?? \"file\";\n\n if (typeof content === \"string\") {\n fd.append(\"file\", new Blob([content]), name);\n } else if (content instanceof Uint8Array) {\n fd.append(\"file\", new Blob([content.buffer as ArrayBuffer]), name);\n } else {\n fd.append(\"file\", content, name);\n }\n fd.append(\"path\", remotePath);\n\n return this.http.postFormData<FsEntry>(`${this.base(hostId)}/upload`, fd);\n }\n\n /**\n * Delete a file or directory.\n *\n * @param recursive - When `true`, delete non-empty directories recursively.\n */\n async delete(\n hostId: HostId | string,\n path: string,\n recursive = false,\n ): Promise<void> {\n return this.http.delete<void>(\n `${this.base(hostId)}?path=${encodeURIComponent(path)}&recursive=${recursive}`,\n );\n }\n\n /**\n * Create a directory (and any missing parents).\n */\n async mkdir(hostId: HostId | string, path: string): Promise<void> {\n return this.http.post<void>(`${this.base(hostId)}/mkdir`, { path });\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostCreateParams,\n HostData,\n HostEvent,\n HostId,\n HostListResponse,\n HostUpdateParams,\n} from \"./types.js\";\n\n/**\n * Hosts resource — manage BYOC (Bring Your Own Computer) hosts registered\n * under your tenant.\n *\n * ```ts\n * const host = await client.openComputers.hosts.create({ name: \"my-mac\" });\n * console.log(host.host_key); // store this — shown only once\n * ```\n */\nexport class Hosts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(): string {\n return \"/opencomputers/hosts\";\n }\n\n /**\n * List all hosts registered for the tenant.\n */\n async list(): Promise<HostListResponse> {\n return this.http.get<HostListResponse>(this.base());\n }\n\n /**\n * Register a new host. The returned `host_key` is shown **once** — store it\n * immediately and install it on the target machine.\n */\n async create(params: HostCreateParams): Promise<HostData> {\n return this.http.post<HostData>(this.base(), params);\n }\n\n /**\n * Fetch a single host by ID.\n */\n async get(id: HostId | string): Promise<HostData> {\n return this.http.get<HostData>(`${this.base()}/${id}`);\n }\n\n /**\n * Update host metadata (name / labels).\n */\n async update(\n id: HostId | string,\n params: HostUpdateParams,\n ): Promise<HostData> {\n return this.http.patch<HostData>(`${this.base()}/${id}`, params);\n }\n\n /**\n * Revoke a host. Permanently removes the registration; the host key is\n * invalidated and the host will disconnect on next heartbeat.\n */\n async revoke(id: HostId | string): Promise<void> {\n return this.http.delete<void>(`${this.base()}/${id}`);\n }\n\n /**\n * Stream host state-change events (connect / disconnect / error) as an\n * `AsyncIterable`.\n *\n * ```ts\n * for await (const event of client.openComputers.hosts.events()) {\n * console.log(event.type, event.host_id);\n * if (shouldStop) break;\n * }\n * ```\n */\n events(): AsyncIterableIterator<HostEvent> {\n return this.http.stream<HostEvent>(\"/opencomputers/hosts/events\");\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n JobData,\n JobEvent,\n JobId,\n JobListResponse,\n JobRunParams,\n} from \"./types.js\";\n\n/**\n * Jobs resource — run commands on a remote OpenComputers host and stream output.\n *\n * ```ts\n * const job = await client.openComputers.jobs.run(hostId, { command: \"npm test\" });\n * for await (const event of client.openComputers.jobs.stream(hostId, job.id)) {\n * process.stdout.write(String(event.data ?? \"\"));\n * if (event.type === \"done\") break;\n * }\n * ```\n */\nexport class Jobs {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}`;\n }\n\n /**\n * Dispatch a command to run on the remote host.\n */\n async run(hostId: HostId | string, params: JobRunParams): Promise<JobData> {\n return this.http.post<JobData>(`${this.base(hostId)}/exec`, params);\n }\n\n /**\n * List all jobs for a host.\n */\n async list(hostId: HostId | string): Promise<JobListResponse> {\n return this.http.get<JobListResponse>(`${this.base(hostId)}/exec`);\n }\n\n /**\n * Fetch the current state of a job.\n */\n async get(hostId: HostId | string, jobId: JobId | string): Promise<JobData> {\n return this.http.get<JobData>(`${this.base(hostId)}/exec/${jobId}`);\n }\n\n /**\n * Stream live output from a running job.\n *\n * Yields `JobEvent` objects with `type` of `stdout`, `stderr`, `exit`, or\n * `done`. Break the loop when you receive `done` or `exit`.\n */\n stream(\n hostId: HostId | string,\n jobId: JobId | string,\n ): AsyncIterableIterator<JobEvent> {\n return this.http.stream<JobEvent>(\n `${this.base(hostId)}/exec/${jobId}/stream`,\n );\n }\n\n /**\n * Cancel a running or queued job.\n */\n async cancel(hostId: HostId | string, jobId: JobId | string): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/exec/${jobId}`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n SecretCreateParams,\n SecretData,\n SecretId,\n SecretUpdateParams,\n} from \"./types.js\";\n\n/**\n * Secrets resource — manage encrypted per-host (and per-tenant) env vars.\n *\n * Secrets are injected into exec sessions and PTY sessions on the host.\n * The value is encrypted at rest; `reveal()` decrypts it for one-time display.\n *\n * ```ts\n * // Tenant-wide secret (shared across all hosts)\n * await client.openComputers.secrets.createForTenant({ name: \"OPENAI_KEY\", value: \"sk-...\" });\n *\n * // Host-specific secret\n * const secret = await client.openComputers.secrets.createForHost(hostId, {\n * name: \"DB_PASSWORD\", value: \"hunter2\",\n * });\n * ```\n */\nexport class Secrets {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n // ── Tenant-scoped secrets ────────────────────────────────────────────────────\n\n /**\n * List all tenant-scoped secrets.\n */\n async listForTenant(): Promise<SecretData[]> {\n const result = await this.http.get<{ data: SecretData[] }>(\n \"/opencomputers/secrets\",\n );\n return result.data;\n }\n\n /**\n * Create a tenant-scoped secret (available to all hosts).\n */\n async createForTenant(params: SecretCreateParams): Promise<SecretData> {\n return this.http.post<SecretData>(\"/opencomputers/secrets\", params);\n }\n\n // ── Host-scoped secrets ──────────────────────────────────────────────────────\n\n /**\n * List secrets scoped to a specific host.\n */\n async listForHost(hostId: HostId | string): Promise<SecretData[]> {\n const result = await this.http.get<{ data: SecretData[] }>(\n `/opencomputers/hosts/${hostId}/secrets`,\n );\n return result.data;\n }\n\n /**\n * Create a secret scoped to a specific host.\n */\n async createForHost(\n hostId: HostId | string,\n params: SecretCreateParams,\n ): Promise<SecretData> {\n return this.http.post<SecretData>(\n `/opencomputers/hosts/${hostId}/secrets`,\n params,\n );\n }\n\n /**\n * Update a host-scoped secret (rotate value or update description).\n */\n async updateForHost(\n hostId: HostId | string,\n secretId: SecretId | string,\n params: SecretUpdateParams,\n ): Promise<SecretData> {\n return this.http.patch<SecretData>(\n `/opencomputers/hosts/${hostId}/secrets/${secretId}`,\n params,\n );\n }\n\n /**\n * Delete a host-scoped secret.\n */\n async deleteForHost(\n hostId: HostId | string,\n secretId: SecretId | string,\n ): Promise<void> {\n return this.http.delete<void>(\n `/opencomputers/hosts/${hostId}/secrets/${secretId}`,\n );\n }\n\n /**\n * Reveal (decrypt and return) the plaintext value of a secret.\n * Use sparingly — each call is audit-logged.\n */\n async reveal(\n hostId: HostId | string,\n secretId: SecretId | string,\n ): Promise<{ value: string }> {\n return this.http.post<{ value: string }>(\n `/opencomputers/hosts/${hostId}/secrets/${secretId}/reveal`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type { HostId, WsTicket } from \"./types.js\";\n\n/**\n * Terminal resource — issue WebSocket tickets for interactive PTY sessions on\n * a remote OpenComputers host.\n *\n * The ticket is consumed by a WebSocket upgrade at the URL in `ws_url`. Use\n * xterm.js or any raw WebSocket client to drive the terminal.\n *\n * ```ts\n * const { ws_url } = await client.openComputers.terminal.ticket(hostId);\n * const ws = new WebSocket(ws_url);\n * ```\n */\nexport class Terminal {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Issue a short-lived WebSocket ticket for a terminal session.\n *\n * The ticket expires quickly — open the WebSocket immediately after receiving it.\n */\n async ticket(hostId: HostId | string): Promise<WsTicket> {\n return this.http.post<WsTicket>(\n `/opencomputers/hosts/${hostId}/terminal/ticket`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n TunnelCreateParams,\n TunnelData,\n TunnelId,\n TunnelListResponse,\n TunnelUpdateParams,\n} from \"./types.js\";\n\n/**\n * Tunnels resource — expose ports on a remote host as publicly reachable URLs.\n *\n * The public proxy is served at `/t/:slug/*path`. The `auth_mode` field on each\n * tunnel controls whether the URL is open to the internet or requires\n * tenant credentials / a password.\n *\n * ```ts\n * const tunnel = await client.openComputers.tunnels.create(hostId, {\n * target_port: 8080,\n * auth_mode: \"public\",\n * });\n * console.log(tunnel.public_url); // https://api.miosa.ai/t/<slug>\n * ```\n */\nexport class Tunnels {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/tunnels`;\n }\n\n /**\n * List all tunnels for a host.\n */\n async list(hostId: HostId | string): Promise<TunnelListResponse> {\n return this.http.get<TunnelListResponse>(this.base(hostId));\n }\n\n /**\n * Create a new tunnel that forwards traffic to `target_port` on the host.\n */\n async create(\n hostId: HostId | string,\n params: TunnelCreateParams,\n ): Promise<TunnelData> {\n return this.http.post<TunnelData>(this.base(hostId), params);\n }\n\n /**\n * Fetch a single tunnel.\n */\n async get(\n hostId: HostId | string,\n tunnelId: TunnelId | string,\n ): Promise<TunnelData> {\n return this.http.get<TunnelData>(`${this.base(hostId)}/${tunnelId}`);\n }\n\n /**\n * Update a tunnel (target port, auth mode, or enabled state).\n */\n async update(\n hostId: HostId | string,\n tunnelId: TunnelId | string,\n params: TunnelUpdateParams,\n ): Promise<TunnelData> {\n return this.http.patch<TunnelData>(\n `${this.base(hostId)}/${tunnelId}`,\n params,\n );\n }\n\n /**\n * Delete a tunnel. The public URL immediately becomes unreachable.\n */\n async delete(\n hostId: HostId | string,\n tunnelId: TunnelId | string,\n ): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/${tunnelId}`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n OcWorkspaceCreateParams,\n OcWorkspaceData,\n OcWorkspaceEvent,\n OcWorkspaceListResponse,\n OcWorkspaceUpdateParams,\n WorkspaceId,\n WsTicket,\n} from \"./types.js\";\n\n/**\n * Workspaces resource — git-backed development environments on a remote host.\n *\n * A workspace clones a repository, installs dependencies, and gives you a\n * ready-to-use terminal scoped to the project root.\n *\n * ```ts\n * const ws = await client.openComputers.workspaces.create(hostId, {\n * name: \"my-project\",\n * repo_url: \"https://github.com/acme/backend\",\n * branch: \"main\",\n * });\n * const { ws_url } = await client.openComputers.workspaces.openTerminal(hostId, ws.id);\n * ```\n */\nexport class OcWorkspaces {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/workspaces`;\n }\n\n /**\n * List all workspaces across all hosts for the tenant.\n */\n async listAll(): Promise<OcWorkspaceListResponse> {\n return this.http.get<OcWorkspaceListResponse>(\"/opencomputers/workspaces\");\n }\n\n /**\n * List workspaces on a specific host.\n */\n async list(hostId: HostId | string): Promise<OcWorkspaceListResponse> {\n return this.http.get<OcWorkspaceListResponse>(this.base(hostId));\n }\n\n /**\n * Create a new workspace on a host.\n */\n async create(\n hostId: HostId | string,\n params: OcWorkspaceCreateParams,\n ): Promise<OcWorkspaceData> {\n return this.http.post<OcWorkspaceData>(this.base(hostId), params);\n }\n\n /**\n * Fetch a single workspace.\n */\n async get(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<OcWorkspaceData> {\n return this.http.get<OcWorkspaceData>(\n `${this.base(hostId)}/${workspaceId}`,\n );\n }\n\n /**\n * Update workspace metadata (name, branch).\n */\n async update(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n params: OcWorkspaceUpdateParams,\n ): Promise<OcWorkspaceData> {\n return this.http.patch<OcWorkspaceData>(\n `${this.base(hostId)}/${workspaceId}`,\n params,\n );\n }\n\n /**\n * Delete a workspace.\n */\n async delete(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/${workspaceId}`);\n }\n\n /**\n * Pull the latest changes from the remote repository.\n */\n async pull(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<OcWorkspaceData> {\n return this.http.post<OcWorkspaceData>(\n `${this.base(hostId)}/${workspaceId}/pull`,\n );\n }\n\n /**\n * Open a terminal session scoped to the workspace root directory.\n * Returns a short-lived WebSocket ticket.\n */\n async openTerminal(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<WsTicket> {\n return this.http.post<WsTicket>(\n `${this.base(hostId)}/${workspaceId}/open-terminal`,\n );\n }\n\n /**\n * Stream workspace setup / clone / install events.\n */\n events(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): AsyncIterableIterator<OcWorkspaceEvent> {\n return this.http.stream<OcWorkspaceEvent>(\n `${this.base(hostId)}/${workspaceId}/events`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport { Agents } from \"./agents.js\";\nimport { Apps } from \"./apps.js\";\nimport { Clusters } from \"./clusters.js\";\nimport { Desktop } from \"./desktop.js\";\nimport { OcFiles } from \"./files.js\";\nimport { Hosts } from \"./hosts.js\";\nimport { Jobs } from \"./jobs.js\";\nimport { Secrets } from \"./secrets.js\";\nimport { Terminal } from \"./terminal.js\";\nimport { Tunnels } from \"./tunnels.js\";\nimport { OcWorkspaces } from \"./workspaces.js\";\n\nexport * from \"./types.js\";\nexport { Agents } from \"./agents.js\";\nexport { Apps } from \"./apps.js\";\nexport { Clusters } from \"./clusters.js\";\nexport { Desktop } from \"./desktop.js\";\nexport { OcFiles } from \"./files.js\";\nexport { Hosts } from \"./hosts.js\";\nexport { Jobs } from \"./jobs.js\";\nexport { Secrets } from \"./secrets.js\";\nexport { Terminal } from \"./terminal.js\";\nexport { Tunnels } from \"./tunnels.js\";\nexport { OcWorkspaces } from \"./workspaces.js\";\n\n/**\n * OpenComputers namespace — BYOC (Bring Your Own Computer) host management.\n *\n * Register your own machines (Mac, Linux, Windows) with MIOSA and use them\n * just like cloud computers: run jobs, manage files, open terminals, expose\n * ports, dispatch AI agents, and run LLM inference clusters.\n *\n * Access via `client.openComputers`:\n *\n * ```ts\n * const miosa = new Miosa({ apiKey: \"msk_u_...\" });\n *\n * // Register a host — save host_key immediately, shown only once\n * const host = await miosa.openComputers.hosts.create({ name: \"my-mac\" });\n *\n * // Run a command\n * const job = await miosa.openComputers.jobs.run(host.id, { command: \"npm test\" });\n *\n * // Stream output\n * for await (const event of miosa.openComputers.jobs.stream(host.id, job.id)) {\n * process.stdout.write(String(event.data ?? \"\"));\n * if (event.type === \"done\") break;\n * }\n *\n * // Expose a port\n * const tunnel = await miosa.openComputers.tunnels.create(host.id, { target_port: 3000 });\n * console.log(tunnel.public_url);\n *\n * // Dispatch an AI agent\n * const session = await miosa.openComputers.agents.dispatch(host.id, {\n * task: \"Run tests and fix failing ones\",\n * });\n * ```\n */\nexport class OpenComputers {\n /** Host registration and lifecycle. */\n readonly hosts: Hosts;\n /** Command execution on remote hosts. */\n readonly jobs: Jobs;\n /** File system access on remote hosts. */\n readonly files: OcFiles;\n /** Interactive terminal session tickets. */\n readonly terminal: Terminal;\n /** Desktop streaming session tickets. */\n readonly desktop: Desktop;\n /** HTTP tunnel management (expose host ports publicly). */\n readonly tunnels: Tunnels;\n /** AI agent dispatch and session management. */\n readonly agents: Agents;\n /** Multi-host LLM inference clusters. */\n readonly clusters: Clusters;\n /** App library — one-click installs on hosts. */\n readonly apps: Apps;\n /** Git-backed workspace environments. */\n readonly workspaces: OcWorkspaces;\n /** Encrypted per-host / per-tenant secrets. */\n readonly secrets: Secrets;\n\n constructor(http: HttpClient) {\n this.hosts = new Hosts(http);\n this.jobs = new Jobs(http);\n this.files = new OcFiles(http);\n this.terminal = new Terminal(http);\n this.desktop = new Desktop(http);\n this.tunnels = new Tunnels(http);\n this.agents = new Agents(http);\n this.clusters = new Clusters(http);\n this.apps = new Apps(http);\n this.workspaces = new OcWorkspaces(http);\n this.secrets = new Secrets(http);\n }\n}\n","/**\n * Project auth — built-in auth for sandboxes and deployments.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ProjectAuthStatus {\n enabled?: boolean;\n state?: string;\n database_id?: string | null;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport type ProjectAuthResourceType = \"sandbox\" | \"deployment\";\n\nexport interface ProjectAuthResourceParams {\n resourceType?: ProjectAuthResourceType;\n resource_type?: ProjectAuthResourceType;\n resourceId?: string;\n resource_id?: string;\n}\n\nexport interface ProjectAuthEnableParams extends ProjectAuthResourceParams {\n signupEnabled?: boolean;\n signup_enabled?: boolean;\n emailConfirmRequired?: boolean;\n email_confirm_required?: boolean;\n tokenExpirySec?: number;\n token_expiry_sec?: number;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ProjectAuthUpdateParams extends ProjectAuthEnableParams {}\n\nexport interface ProjectAuthDisableParams extends ProjectAuthResourceParams {\n [key: string]: unknown;\n}\n\nexport interface ProjectAuthStatusParams extends ProjectAuthResourceParams {\n [key: string]: unknown;\n}\n\nfunction resourcePayload(params: ProjectAuthResourceParams): {\n resource_type: ProjectAuthResourceType;\n resource_id: string;\n} {\n const resource_type = params.resource_type ?? params.resourceType;\n const resource_id = params.resource_id ?? params.resourceId;\n\n if (!resource_type || !resource_id) {\n throw new Error(\"project auth requires resourceType/resourceId\");\n }\n\n return { resource_type, resource_id };\n}\n\nfunction authConfig(params: ProjectAuthEnableParams): Record<string, unknown> {\n return stripUndefined({\n ...(params.config ?? {}),\n signup_enabled: params.signup_enabled ?? params.signupEnabled,\n email_confirm_required:\n params.email_confirm_required ?? params.emailConfirmRequired,\n token_expiry_sec: params.token_expiry_sec ?? params.tokenExpirySec,\n });\n}\n\nfunction requestBody(params: ProjectAuthEnableParams): Record<string, unknown> {\n return stripUndefined({\n ...resourcePayload(params),\n config: authConfig(params),\n });\n}\n\nexport interface ProjectAuthLegacyParams {\n provider?: string;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"project_auth\", \"config\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ProjectAuth {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current project-auth status and config. */\n async status(params: ProjectAuthStatusParams): Promise<ProjectAuthStatus> {\n const data = await this.http.get<unknown>(\n \"/project-auth/status\",\n resourcePayload(params),\n );\n return unwrap<ProjectAuthStatus>(data);\n }\n\n /** Enable project auth. */\n async enable(params: ProjectAuthEnableParams): Promise<ProjectAuthStatus> {\n const body = requestBody(params);\n const data = await this.http.post<unknown>(\"/project-auth/enable\", body);\n return unwrap<ProjectAuthStatus>(data);\n }\n\n /** Disable project auth. */\n async disable(params: ProjectAuthDisableParams): Promise<ProjectAuthStatus> {\n const data = await this.http.post<unknown>(\n \"/project-auth/disable\",\n resourcePayload(params),\n );\n return unwrap<ProjectAuthStatus>(data);\n }\n\n /** Update project-auth configuration. */\n async update(params: ProjectAuthUpdateParams): Promise<ProjectAuthStatus> {\n const body = requestBody(params);\n const data = await this.http.patch<unknown>(\"/project-auth/config\", body);\n return unwrap<ProjectAuthStatus>(data);\n }\n}\n","/**\n * Project integrations — third-party API key connections injected into VMs.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ProjectIntegrationData {\n id?: string;\n project_id?: string;\n provider?: string;\n status?: string;\n [key: string]: unknown;\n}\n\nexport interface ProjectIntegrationCatalogEntry {\n provider?: string;\n name?: string;\n description?: string;\n schema?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ProjectIntegrationListParams {\n project_id?: string;\n provider?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface ProjectIntegrationCreateParams {\n project_id?: string;\n provider?: string;\n credentials?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ProjectIntegrationUpdateParams {\n credentials?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"project_integrations\", \"catalog\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction stripUndefObj(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ProjectIntegrations {\n constructor(private readonly http: HttpClient) {}\n\n /** List project integrations. */\n async list(\n params: ProjectIntegrationListParams = {},\n ): Promise<ProjectIntegrationData[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/project-integrations\", query);\n return listItems<ProjectIntegrationData>(data);\n }\n\n /** List supported providers and their schemas. */\n async catalog(): Promise<ProjectIntegrationCatalogEntry[]> {\n const data = await this.http.get<unknown>(\"/project-integrations/catalog\");\n return listItems<ProjectIntegrationCatalogEntry>(data);\n }\n\n /** Get a project integration by id. */\n async get(integrationId: string): Promise<ProjectIntegrationData> {\n const data = await this.http.get<unknown>(\n `/project-integrations/${integrationId}`,\n );\n return unwrap<ProjectIntegrationData>(data);\n }\n\n /** Create a project integration. */\n async create(\n params: ProjectIntegrationCreateParams,\n ): Promise<ProjectIntegrationData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\"/project-integrations\", body);\n return unwrap<ProjectIntegrationData>(data);\n }\n\n /** Update a project integration. */\n async update(\n integrationId: string,\n params: ProjectIntegrationUpdateParams,\n ): Promise<ProjectIntegrationData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(\n `/project-integrations/${integrationId}`,\n body,\n );\n return unwrap<ProjectIntegrationData>(data);\n }\n\n /** Delete a project integration. */\n async delete(integrationId: string): Promise<void> {\n await this.http.delete<unknown>(`/project-integrations/${integrationId}`);\n }\n}\n","/**\n * ProviderDefaults — admin LLM provider routing config.\n *\n * Routes:\n * GET /admin/provider-defaults\n * PUT /admin/provider-defaults\n * GET /admin/tenants/:id/provider-config\n * PUT /admin/tenants/:id/provider-config\n * DELETE /admin/tenants/:id/provider-config\n *\n * Requires admin credential (msk_a_* / msk_p_* or admin JWT).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"defaults\", \"provider_defaults\", \"config\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nexport class ProviderDefaults {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current fleet-wide provider defaults. */\n async list(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/admin/provider-defaults\"));\n }\n\n /** Return the defaults entry for a single provider, or {} if missing. */\n async get(provider: string): Promise<Record<string, unknown>> {\n const data = await this.list();\n const providers =\n (data.providers as Record<string, unknown> | undefined) ?? data;\n if (\n typeof providers === \"object\" &&\n providers !== null &&\n provider in providers\n ) {\n return providers[provider] as Record<string, unknown>;\n }\n return {};\n }\n\n /** Replace the fleet-wide defaults (PUT /admin/provider-defaults). */\n async update(\n opts: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.put<unknown>(\"/admin/provider-defaults\", body),\n );\n }\n\n // ── Per-tenant overrides ────────────────────────────────────────────────\n\n async getTenant(tenantId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(\n `/admin/tenants/${tenantId}/provider-config`,\n ),\n );\n }\n\n async setTenant(\n tenantId: string,\n opts: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.put<unknown>(\n `/admin/tenants/${tenantId}/provider-config`,\n body,\n ),\n );\n }\n\n async resetTenant(tenantId: string): Promise<void> {\n await this.http.delete(`/admin/tenants/${tenantId}/provider-config`);\n }\n}\n","/**\n * Regions — datacenter availability, sizes, pricing, templates.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface RegionData {\n id?: string;\n name?: string;\n slug?: string;\n available?: boolean;\n [key: string]: unknown;\n}\n\nexport interface SizeData {\n id?: string;\n name?: string;\n slug?: string;\n cpu?: number;\n memory_mb?: number;\n [key: string]: unknown;\n}\n\nexport interface TemplateData {\n id?: string;\n name?: string;\n slug?: string;\n [key: string]: unknown;\n}\n\nexport interface ComputeCatalogData {\n products?: Array<Record<string, unknown>>;\n regions?: Array<Record<string, unknown>>;\n sizes?: Array<Record<string, unknown>>;\n templates?: Array<Record<string, unknown>>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"regions\",\n \"sizes\",\n \"pricing\",\n \"templates\",\n \"items\",\n ]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Regions {\n constructor(private readonly http: HttpClient) {}\n\n /** List datacenter regions. */\n async listRegions(): Promise<RegionData[]> {\n const data = await this.http.get<unknown>(\"/compute/regions\");\n return listItems<RegionData>(data);\n }\n\n /** Get canonical compute catalog, including product templates and readiness. */\n async catalog(): Promise<ComputeCatalogData> {\n const data = await this.http.get<unknown>(\"/compute/catalog\");\n return unwrap<ComputeCatalogData>(data);\n }\n\n /** List available compute sizes. */\n async listSizes(): Promise<SizeData[]> {\n const data = await this.http.get<unknown>(\"/compute/sizes\");\n return listItems<SizeData>(data);\n }\n\n /** Get static compute pricing data. */\n async pricing(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/compute/pricing\");\n return unwrap(data);\n }\n\n /** List community computer templates. */\n async listTemplates(): Promise<TemplateData[]> {\n const data = await this.http.get<unknown>(\"/compute/templates\");\n return listItems<TemplateData>(data);\n }\n\n /** Get a single community template by id. */\n async getTemplate(templateId: string): Promise<TemplateData> {\n const data = await this.http.get<unknown>(\n `/compute/templates/${templateId}`,\n );\n return unwrap<TemplateData>(data);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nexport type RuntimeEnvScope = \"tenant\" | \"workspace\" | \"project\";\nexport type RuntimeEnvTarget = \"all\" | \"sandbox\" | \"computer\" | \"agent\" | \"deployment\";\n\nexport interface RuntimeEnvVar {\n id: string;\n tenant_id?: string;\n tenantId?: string;\n scope: RuntimeEnvScope | string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n target: RuntimeEnvTarget | string;\n name: string;\n preview?: string;\n enabled?: boolean;\n metadata?: Record<string, unknown>;\n created_at?: string;\n createdAt?: string;\n updated_at?: string;\n updatedAt?: string;\n}\n\nexport interface RuntimeEnvListParams {\n scope?: RuntimeEnvScope | string;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n target?: RuntimeEnvTarget | string;\n}\n\nexport interface RuntimeEnvSetParams extends RuntimeEnvListParams {\n name: string;\n value: string;\n enabled?: boolean;\n metadata?: Record<string, unknown>;\n}\n\nfunction body(params: RuntimeEnvSetParams): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries({\n scope: params.scope,\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n target: params.target,\n name: params.name,\n value: params.value,\n enabled: params.enabled,\n metadata: params.metadata,\n }).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction query(params: RuntimeEnvListParams): Record<string, string | undefined> {\n return {\n scope: params.scope,\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n target: params.target,\n };\n}\n\nfunction normalize(row: RuntimeEnvVar): RuntimeEnvVar {\n const tenantId = row.tenantId ?? row.tenant_id;\n const workspaceId = row.workspaceId ?? row.workspace_id;\n const projectId = row.projectId ?? row.project_id;\n const createdAt = row.createdAt ?? row.created_at;\n const updatedAt = row.updatedAt ?? row.updated_at;\n return {\n ...row,\n ...(tenantId !== undefined ? { tenantId } : {}),\n ...(workspaceId !== undefined ? { workspaceId } : {}),\n ...(projectId !== undefined ? { projectId } : {}),\n ...(createdAt !== undefined ? { createdAt } : {}),\n ...(updatedAt !== undefined ? { updatedAt } : {}),\n };\n}\n\nexport class RuntimeEnv {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: RuntimeEnvListParams = {}): Promise<RuntimeEnvVar[]> {\n const response = await this.http.get<WireEnvelope<RuntimeEnvVar[]>>(\n \"/runtime-env\",\n query(params),\n );\n return unwrap(response).map(normalize);\n }\n\n async get(id: string): Promise<RuntimeEnvVar> {\n return normalize(\n unwrap(\n await this.http.get<WireEnvelope<RuntimeEnvVar>>(\n `/runtime-env/${encodeURIComponent(id)}`,\n ),\n ),\n );\n }\n\n async set(params: RuntimeEnvSetParams): Promise<RuntimeEnvVar> {\n return normalize(\n unwrap(\n await this.http.post<WireEnvelope<RuntimeEnvVar>>(\n \"/runtime-env\",\n body(params),\n ),\n ),\n );\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete<void>(`/runtime-env/${encodeURIComponent(id)}`);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport interface RuntimeCapabilities {\n version: number;\n targets?: Record<string, unknown>;\n agent_runs?: Record<string, unknown>;\n agent_run_groups?: Record<string, unknown>;\n runtime_env?: Record<string, unknown>;\n files?: Record<string, unknown>;\n orchestration?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nexport class RuntimeCapabilitiesResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<RuntimeCapabilities> {\n return unwrap<RuntimeCapabilities>(\n await this.http.get<unknown>(\"/runtime-capabilities\"),\n );\n }\n}\n","import { MiosaError, NotFoundError } from \"../errors.js\";\nimport { HttpClient } from \"../http.js\";\nimport { SandboxAudit } from \"./egressAudit.js\";\nimport { SandboxNetwork } from \"./egressNetwork.js\";\nimport { SandboxSecrets } from \"./egressSecrets.js\";\nimport { SandboxConnectors } from \"./connectors.js\";\nimport {\n AgentRuns,\n type AgentRun,\n type AgentRunCreateParams,\n} from \"./agent-runs.js\";\n\nfunction encodeContent(content: string | Uint8Array): string {\n const bytes =\n typeof content === \"string\" ? new TextEncoder().encode(content) : content;\n const maybeBuffer = (\n globalThis as {\n Buffer?: { from(b: Uint8Array): { toString(e: string): string } };\n }\n ).Buffer;\n if (maybeBuffer) return maybeBuffer.from(bytes).toString(\"base64\");\n let bin = \"\";\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]!);\n return btoa(bin);\n}\n\nexport const SANDBOX_TEMPLATE = \"miosa-sandbox\";\n\nexport type SandboxId = string & { readonly __brand: \"SandboxId\" };\nexport type SandboxState =\n | \"provisioning\"\n | \"running\"\n | \"paused\"\n | \"destroyed\"\n | \"error\";\n\nexport interface SandboxCreateParams {\n templateId?: string;\n template_id?: string;\n image?: string;\n cpuCount?: number;\n cpu_count?: number;\n memoryMb?: number;\n memory_mb?: number;\n diskMb?: number;\n disk_mb?: number;\n diskSizeMb?: number;\n disk_size_mb?: number;\n timeoutSec?: number;\n timeout_sec?: number;\n idleTimeoutSec?: number;\n idle_timeout_sec?: number;\n /**\n * Persistence policy for builder/agent sandboxes.\n *\n * MIOSA persistence means the sandbox should snapshot/pause when idle and\n * resume from that checkpoint later. It does not mean \"keep CPU running\".\n * Use alwaysOn for a sandbox that must keep executing without idle pause.\n */\n persistent?: boolean;\n snapshotExpirationSec?: number;\n snapshot_expiration_sec?: number;\n snapshotExpirationDays?: number;\n snapshot_expiration_days?: number;\n keepLastSnapshots?: number | { count: number; expirationSec?: number; deleteEvicted?: boolean };\n keep_last_snapshots?: number | { count: number; expiration_sec?: number; delete_evicted?: boolean };\n alwaysOn?: boolean;\n always_on?: boolean;\n env?: Record<string, string>;\n metadata?: Record<string, unknown>;\n services?: Array<Record<string, unknown>>;\n readinessProbe?: Record<string, unknown>;\n readiness_probe?: Record<string, unknown>;\n database?: Record<string, unknown> | boolean;\n githubRepoUrl?: string;\n github_repo_url?: string;\n githubBranch?: string;\n github_branch?: string;\n githubClonePath?: string;\n github_clone_path?: string;\n name?: string;\n region?: string;\n entrypoint?: string;\n tags?: string[];\n idempotencyKey?: string;\n idempotency_key?: string;\n slug?: string;\n agentRuntimeProfileId?: string;\n agent_runtime_profile_id?: string;\n agentProfileId?: string;\n agent_profile_id?: string;\n skipAgentRuntimeProfile?: boolean;\n skip_agent_runtime_profile?: boolean;\n // White-label attribution. See platform/attribution docs.\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface SandboxGetOrCreateParams extends SandboxCreateParams {\n name: string;\n /** Resume an existing paused sandbox before returning it. Defaults to true. */\n resume?: boolean;\n /** Wait for readiness before returning a created/resumed sandbox. Defaults to false. */\n waitUntilReady?: boolean;\n /** Readiness wait timeout in seconds. Defaults to 60 when waitUntilReady is true. */\n waitTimeoutSec?: number;\n}\n\nconst AGENT_WORKSPACE_TIMEOUT_SEC = 86_400;\nconst AGENT_WORKSPACE_IDLE_TIMEOUT_SEC = 1_800;\nconst AGENT_WORKSPACE_SNAPSHOT_EXPIRATION_DAYS = 30;\nconst AGENT_WORKSPACE_KEEP_LAST_SNAPSHOTS = 1;\n\nexport interface SandboxListParams {\n state?: SandboxState | string;\n tags?: string[];\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface SandboxExecOptions {\n cwd?: string;\n workingDir?: string;\n working_dir?: string;\n env?: Record<string, string>;\n timeout?: number;\n timeoutSec?: number;\n timeout_sec?: number;\n}\n\nexport interface SandboxExecResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n exit_code: number;\n durationMs?: number;\n duration_ms?: number;\n}\n\nexport interface SandboxExportFile {\n path: string;\n filename?: string;\n download_url?: string;\n downloadUrl?: string;\n}\n\nexport interface SandboxExport {\n id: string;\n sandbox_id?: string;\n sandboxId?: string;\n label?: string | null;\n status: string;\n files: SandboxExportFile[];\n archive_download_url?: string;\n archiveDownloadUrl?: string;\n created_at?: string;\n createdAt?: string;\n}\n\nexport interface SandboxExportParams {\n path?: string;\n paths?: string[];\n label?: string;\n filename?: string;\n}\n\nexport type SandboxExecEvent =\n | { type?: \"stdout\"; line: string }\n | { type?: \"stderr\"; line: string }\n | { type?: \"exit\"; exit_code: number; exitCode?: number }\n | Record<string, unknown>;\n\nexport interface SandboxExecRunner {\n (command: string, options?: SandboxExecOptions): Promise<SandboxExecResult>;\n run(\n command: string,\n options?: SandboxExecOptions,\n ): Promise<SandboxExecResult>;\n stream(\n command: string,\n options?: SandboxExecOptions,\n ): AsyncIterableIterator<SandboxExecEvent>;\n}\n\nexport interface SandboxData {\n id: SandboxId;\n state: SandboxState;\n ready?: boolean;\n template_id?: string;\n image_id?: string | null;\n cpu_count?: number | null;\n memory_mb?: number | null;\n disk_mb?: number | null;\n disk_size_mb?: number | null;\n timeout_sec?: number | null;\n persistent?: boolean;\n boot_path?: string | null;\n boot_ms?: number | null;\n ready_at?: string | null;\n preview_url?: string | null;\n url_info?: PreviewUrlInfo | null;\n url_class?: PreviewUrlClass | null;\n stable_for_embedding?: boolean | null;\n recommended_next_action?: PreviewUrlAction | null;\n metadata?: Record<string, unknown>;\n inserted_at?: string;\n created_at?: string;\n started_at?: string | null;\n destroyed_at?: string | null;\n total_runtime_sec?: number | null;\n}\n\nexport type PreviewUrlClass =\n | \"temporary_preview\"\n | \"always_on_preview\"\n | \"stable_sandbox_embed\"\n | \"durable_deployment\"\n | (string & {});\n\nexport type PreviewUrlAction =\n | \"create_alias_or_publish\"\n | \"publish_when_ready\"\n | \"attach_custom_domain\"\n | (string & {});\n\nexport interface PreviewUrlInfo {\n url: string;\n class: PreviewUrlClass;\n url_class: PreviewUrlClass;\n stable_for_embedding: boolean;\n recommended_next_action: PreviewUrlAction;\n alias_slug?: string | null;\n port?: number | null;\n [key: string]: unknown;\n}\n\nexport interface SandboxTemplate {\n id: string;\n name?: string;\n slug?: string;\n description?: string;\n image_id?: string;\n built_in?: boolean;\n status?: string;\n preview_port?: number | null;\n workdir?: string;\n install_command?: string | null;\n start_command?: string | null;\n readiness_probe?: Record<string, unknown> | null;\n artifact_paths?: string[];\n runtimes?: string[];\n tags?: string[];\n build_spec?: Record<string, unknown>;\n current_build_id?: string | null;\n}\n\nexport interface SandboxTemplateList {\n data: SandboxTemplate[];\n default_template_id?: string;\n}\n\nexport interface SandboxBuildSpec {\n from: string;\n vcpu?: number;\n memoryMib?: number;\n diskMib?: number;\n steps?: Array<Record<string, unknown>>;\n env?: Record<string, string>;\n workdir?: string;\n user?: string;\n startCmd?: string;\n readyCmd?: string;\n previewPort?: number;\n artifactPaths?: string[];\n}\n\nexport interface SandboxBuildSpecError {\n code: string;\n field: string;\n message: string;\n}\n\nexport interface SandboxBuildSpecValidation {\n valid: boolean;\n build_spec?: Record<string, unknown>;\n errors?: SandboxBuildSpecError[];\n}\n\nexport interface SandboxTemplateCreateParams {\n name: string;\n buildSpec?: SandboxBuildSpec;\n build_spec?: SandboxBuildSpec;\n slug?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SandboxTemplateBuildCreateParams {\n buildSpec?: SandboxBuildSpec;\n build_spec?: SandboxBuildSpec;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SandboxTemplateBuild {\n id: string;\n sandbox_template_id: string;\n source_type: \"build_spec\" | string;\n state:\n | \"queued\"\n | \"building\"\n | \"certifying\"\n | \"snapshotting\"\n | \"ready\"\n | \"failed\"\n | \"cancelled\";\n image_id?: string | null;\n rootfs_path?: string | null;\n snapshot_manifest?: Record<string, unknown>;\n log_url?: string | null;\n error_code?: string | null;\n error_message?: string | null;\n started_at?: string | null;\n finished_at?: string | null;\n duration_ms?: number | null;\n build_spec?: Record<string, unknown>;\n inserted_at?: string;\n updated_at?: string;\n}\n\nexport interface SandboxFileEntry {\n name: string;\n path: string;\n size?: number;\n is_dir?: boolean;\n isDir?: boolean;\n modified_at?: string;\n modifiedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxFileTreeNode {\n path: string;\n name: string;\n type: \"file\" | \"dir\";\n size?: number;\n modified_at?: string;\n children?: SandboxFileTreeNode[];\n}\n\nexport interface SandboxWriteManyEntry {\n path: string;\n content: string | Uint8Array;\n}\n\nexport interface SandboxWriteManyResult {\n written: Array<{ path: string; size_bytes: number }>;\n failed: Array<{ path: string; error: string }>;\n}\n\nexport interface SandboxFileChange {\n type: \"created\" | \"modified\" | \"deleted\";\n path: string;\n size_bytes?: number;\n}\n\nexport interface SandboxEnvVar {\n key: string;\n encrypted: boolean;\n value?: string;\n}\n\nexport interface SandboxFileList {\n path?: string;\n entries: SandboxFileEntry[];\n}\n\nexport interface SandboxFileStat {\n path: string;\n size?: number;\n is_dir?: boolean;\n isDir?: boolean;\n mode?: string;\n modified_at?: string;\n modifiedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxSnapshot {\n id: string;\n sandbox_id?: string;\n status?: string;\n comment?: string;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxDeployParams {\n name?: string;\n deploymentId?: string;\n deployment_id?: string;\n path?: string;\n sourcePath?: string;\n source_path?: string;\n outputPath?: string;\n output_path?: string;\n sourceSnapshotPath?: string;\n source_snapshot_path?: string;\n entrypoint?: string;\n buildCommand?: string;\n build_command?: string;\n runCommand?: string;\n run_command?: string;\n startCommand?: string;\n start_command?: string;\n port?: number;\n healthCheckPath?: string;\n health_check_path?: string;\n deploymentType?: \"miosa_deploy\" | \"docker_deploy\" | \"docker-deploy\" | string;\n deployment_type?: \"miosa_deploy\" | \"docker_deploy\" | \"docker-deploy\" | string;\n type?: \"static\" | \"dynamic\" | \"server\" | string;\n mode?: \"static\" | \"dynamic\" | \"server\" | string;\n database?: boolean | Record<string, unknown>;\n resources?: Record<string, unknown>;\n domain?: string;\n customDomain?: string;\n custom_domain?: string;\n idempotencyKey?: string;\n idempotency_key?: string;\n}\n\nexport type SandboxPromptOptions = Omit<\n AgentRunCreateParams,\n \"prompt\" | \"targetKind\" | \"targetId\" | \"sandboxId\" | \"computerId\"\n>;\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction normalizeExport(value: SandboxExport): SandboxExport {\n const normalized: SandboxExport = {\n ...value,\n files: (value.files ?? []).map((file) => {\n const normalized: SandboxExportFile = { ...file };\n const downloadUrl = file.downloadUrl ?? file.download_url;\n if (downloadUrl !== undefined) normalized.downloadUrl = downloadUrl;\n return normalized;\n }),\n };\n const sandboxId = value.sandboxId ?? value.sandbox_id;\n const archiveDownloadUrl =\n value.archiveDownloadUrl ?? value.archive_download_url;\n const createdAt = value.createdAt ?? value.created_at;\n if (sandboxId !== undefined) normalized.sandboxId = sandboxId;\n if (archiveDownloadUrl !== undefined) {\n normalized.archiveDownloadUrl = archiveDownloadUrl;\n }\n if (createdAt !== undefined) normalized.createdAt = createdAt;\n return normalized;\n}\n\nfunction listItems(\n payload:\n | WireEnvelope<SandboxData[]>\n | { sandboxes: SandboxData[] }\n | { items: SandboxData[] },\n): SandboxData[] {\n if (Array.isArray(payload)) return payload;\n if (\"data\" in payload && Array.isArray(payload.data)) return payload.data;\n if (\"sandboxes\" in payload && Array.isArray(payload.sandboxes))\n return payload.sandboxes;\n if (\"items\" in payload && Array.isArray(payload.items)) return payload.items;\n return [];\n}\n\nfunction createBody(params: SandboxCreateParams = {}): Record<string, unknown> {\n const templateId =\n params.templateId ?? params.template_id ?? params.image ?? SANDBOX_TEMPLATE;\n const persistent = params.persistent;\n const snapshotExpirationSec = snapshotExpirationSeconds(params);\n const keepLastSnapshots =\n params.keepLastSnapshots ?? params.keep_last_snapshots;\n const metadata = { ...(params.metadata ?? {}) };\n\n if (persistent !== undefined) metadata.miosa_persistent = persistent;\n if (snapshotExpirationSec !== undefined) {\n metadata.snapshot_expiration_sec = snapshotExpirationSec;\n }\n if (keepLastSnapshots !== undefined) {\n metadata.keep_last_snapshots = keepLastSnapshots;\n }\n\n return stripUndefined({\n template_id: templateId,\n cpu_count: params.cpuCount ?? params.cpu_count,\n memory_mb: params.memoryMb ?? params.memory_mb,\n disk_mb: params.diskMb ?? params.disk_mb,\n disk_size_mb: params.diskSizeMb ?? params.disk_size_mb,\n timeout_sec:\n params.timeoutSec ??\n params.timeout_sec ??\n (persistent === true ? 86_400 : undefined),\n idle_timeout_sec:\n params.idleTimeoutSec ??\n params.idle_timeout_sec ??\n (persistent === true ? 1_800 : undefined),\n always_on: params.alwaysOn ?? params.always_on,\n env: params.env,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n services: params.services,\n readiness_probe: params.readinessProbe ?? params.readiness_probe,\n database: params.database,\n github_repo_url: params.githubRepoUrl ?? params.github_repo_url,\n github_branch: params.githubBranch ?? params.github_branch,\n github_clone_path: params.githubClonePath ?? params.github_clone_path,\n name: params.name,\n region: params.region,\n entrypoint: params.entrypoint,\n tags: params.tags,\n slug: params.slug,\n agent_runtime_profile_id:\n params.agentRuntimeProfileId ??\n params.agent_runtime_profile_id ??\n params.agentProfileId ??\n params.agent_profile_id,\n skip_agent_runtime_profile:\n params.skipAgentRuntimeProfile ?? params.skip_agent_runtime_profile,\n external_workspace_id:\n params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id: params.externalProjectId ?? params.external_project_id,\n });\n}\n\nfunction execBody(\n command: string,\n options: SandboxExecOptions = {},\n): Record<string, unknown> {\n return stripUndefined({\n command,\n cwd: options.cwd ?? options.workingDir ?? options.working_dir,\n env: options.env,\n timeout: options.timeout ?? options.timeoutSec ?? options.timeout_sec,\n });\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction snapshotExpirationSeconds(params: {\n snapshotExpirationSec?: number;\n snapshot_expiration_sec?: number;\n snapshotExpirationDays?: number;\n snapshot_expiration_days?: number;\n}): number | undefined {\n const seconds = params.snapshotExpirationSec ?? params.snapshot_expiration_sec;\n if (seconds !== undefined) return seconds;\n\n const days = params.snapshotExpirationDays ?? params.snapshot_expiration_days;\n return days === undefined ? undefined : days * 86_400;\n}\n\nexport class SandboxCommands {\n constructor(private readonly sandbox: Sandbox) {}\n\n run(\n command: string,\n options?: SandboxExecOptions,\n ): Promise<SandboxExecResult> {\n return this.sandbox.exec.run(command, options);\n }\n\n stream(\n command: string,\n options?: SandboxExecOptions,\n ): AsyncIterableIterator<SandboxExecEvent> {\n return this.sandbox.exec.stream(command, options);\n }\n}\n\nexport class SandboxFiles {\n constructor(private readonly sandbox: Sandbox) {}\n\n async write(path: string, content: string | Uint8Array): Promise<void> {\n await this.sandbox.writeFile(path, content);\n }\n\n async read(path: string): Promise<Uint8Array> {\n return this.sandbox.download(path);\n }\n\n async readText(path: string): Promise<string> {\n return new TextDecoder().decode(await this.read(path));\n }\n\n list(path = \"/workspace\"): Promise<SandboxFileList> {\n return this.sandbox.listFiles(path);\n }\n\n stat(path: string): Promise<SandboxFileStat> {\n return this.sandbox.statFile(path);\n }\n\n upload(path: string, content: string | Uint8Array): Promise<void> {\n return this.write(path, content);\n }\n\n download(path: string): Promise<Uint8Array> {\n return this.read(path);\n }\n\n /** GET /api/v1/sandboxes/{id}/files/tree — recursive directory tree. */\n async tree(path = \"/workspace\", depth = 3): Promise<SandboxFileTreeNode> {\n const http = (this.sandbox as unknown as { http: HttpClient }).http;\n const response = await http.get<unknown>(\n `/sandboxes/${this.sandbox.id}/files/tree`,\n { path, depth },\n );\n if (\n response &&\n typeof response === \"object\" &&\n \"data\" in (response as object)\n ) {\n return (response as { data: SandboxFileTreeNode }).data;\n }\n return response as SandboxFileTreeNode;\n }\n\n /** POST /api/v1/sandboxes/{id}/files/write-many — write multiple files atomically. */\n async writeMany(\n files: SandboxWriteManyEntry[],\n ): Promise<SandboxWriteManyResult> {\n const http = (this.sandbox as unknown as { http: HttpClient }).http;\n const payload = files.map((f) => ({\n path: f.path,\n content_base64: encodeContent(f.content),\n }));\n const response = await http.post<unknown>(\n `/sandboxes/${this.sandbox.id}/files/write-many`,\n { files: payload },\n );\n if (\n response &&\n typeof response === \"object\" &&\n \"data\" in (response as object)\n ) {\n return (response as { data: SandboxWriteManyResult }).data;\n }\n return response as SandboxWriteManyResult;\n }\n\n /** GET /api/v1/sandboxes/{id}/files/watch (SSE) — live file change events. */\n watch(): AsyncIterableIterator<SandboxFileChange> {\n const http = (this.sandbox as unknown as { http: HttpClient }).http;\n return http.stream<SandboxFileChange>(\n `/sandboxes/${this.sandbox.id}/files/watch`,\n );\n }\n}\n\nexport class SandboxPreview {\n constructor(private readonly sandbox: Sandbox) {}\n\n expose(port?: number): Promise<string> {\n return this.sandbox.expose(port);\n }\n\n exposeInfo(port?: number): Promise<PreviewUrlInfo> {\n return this.sandbox.exposeInfo(port);\n }\n}\n\nexport class SandboxArtifacts {\n constructor(private readonly sandbox: Sandbox) {}\n\n list(): Promise<Record<string, unknown>> {\n return this.sandbox.getArtifacts();\n }\n}\n\nexport class SandboxLogs {\n constructor(private readonly sandbox: Sandbox) {}\n\n get(lines?: number): Promise<string | Record<string, unknown>> {\n return this.sandbox.getLogs(lines);\n }\n\n stream(): AsyncIterableIterator<Record<string, unknown>> {\n return this.sandbox.streamLogs();\n }\n}\n\nexport class SandboxSnapshots {\n constructor(private readonly sandbox: Sandbox) {}\n\n create(comment?: string): Promise<SandboxSnapshot> {\n return this.sandbox.createSnapshot(comment);\n }\n\n list(): Promise<SandboxSnapshot[]> {\n return this.sandbox.listSnapshots();\n }\n\n restore(snapshotId: string): Promise<Sandbox> {\n return this.sandbox.restoreSnapshot(snapshotId);\n }\n\n delete(snapshotId: string): Promise<void> {\n return this.sandbox.deleteSnapshot(snapshotId);\n }\n}\n\nexport class SandboxTerminal {\n constructor(private readonly sandbox: Sandbox) {}\n\n async create(\n params: {\n cols?: number;\n rows?: number;\n shell?: string;\n cwd?: string;\n env?: Record<string, string>;\n } = {},\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n const response = unwrap(\n await (this.sandbox as unknown as { http: HttpClient }).http.post<\n WireEnvelope<Record<string, unknown>>\n >(`/sandboxes/${this.sandbox.id}/terminal`, body),\n );\n return response as Record<string, unknown>;\n }\n\n async delete(sessionId: string): Promise<void> {\n await (this.sandbox as unknown as { http: HttpClient }).http.delete(\n `/sandboxes/${this.sandbox.id}/terminal/${sessionId}`,\n );\n }\n}\n\nexport class SandboxEvents {\n constructor(private readonly sandbox: Sandbox) {}\n\n /** Stream live sandbox events via SSE. */\n stream(): AsyncIterableIterator<Record<string, unknown>> {\n return (this.sandbox as unknown as { http: HttpClient }).http.stream<\n Record<string, unknown>\n >(`/sandboxes/${this.sandbox.id}/events`);\n }\n}\n\nexport class SandboxMetrics {\n constructor(private readonly sandbox: Sandbox) {}\n\n get(window = \"1h\"): Promise<Record<string, unknown>> {\n return this.sandbox.metrics(window);\n }\n}\n\nexport class SandboxPreviews {\n constructor(private readonly sandbox: Sandbox) {}\n\n private get http(): HttpClient {\n return (this.sandbox as unknown as { http: HttpClient }).http;\n }\n\n async list(): Promise<Record<string, unknown>[]> {\n const response = await this.http.get<unknown>(\n `/sandboxes/${this.sandbox.id}/previews`,\n );\n if (Array.isArray(response)) return response as Record<string, unknown>[];\n if (response && typeof response === \"object\") {\n const r = response as Record<string, unknown>;\n for (const k of [\"data\", \"previews\", \"items\"]) {\n if (Array.isArray(r[k])) return r[k] as Record<string, unknown>[];\n }\n }\n return [];\n }\n\n async create(\n port: number,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n port,\n ...Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.sandbox.id}/previews`,\n body,\n ),\n ) as Record<string, unknown>;\n }\n\n async get(previewId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}`,\n ),\n ) as Record<string, unknown>;\n }\n\n async delete(previewId: string): Promise<void> {\n await this.http.delete(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}`,\n );\n }\n\n /** Mint a share token for previewId. */\n async share(\n previewId: string,\n opts: { ttl_seconds?: number; expires_in_sec?: number } = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}/share`,\n { ttl_seconds: opts.ttl_seconds ?? opts.expires_in_sec ?? 3600 },\n ),\n ) as Record<string, unknown>;\n }\n\n /** Invalidate every share token associated with previewId. */\n async revokeShare(previewId: string): Promise<void> {\n await this.http.delete(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}/share`,\n );\n }\n}\n\nexport class SandboxEnv {\n constructor(private readonly sandbox: Sandbox) {}\n\n private get http(): HttpClient {\n return (this.sandbox as unknown as { http: HttpClient }).http;\n }\n\n /** GET /api/v1/sandboxes/{id}/env → list of env vars. */\n async get(): Promise<SandboxEnvVar[]> {\n const response = await this.http.get<unknown>(\n `/sandboxes/${this.sandbox.id}/env`,\n );\n if (Array.isArray(response)) return response as SandboxEnvVar[];\n if (response && typeof response === \"object\") {\n const r = response as Record<string, unknown>;\n for (const k of [\"data\", \"vars\", \"env\", \"items\"]) {\n if (Array.isArray(r[k])) return r[k] as SandboxEnvVar[];\n }\n }\n return [];\n }\n\n /** @deprecated Use get() */\n async list(): Promise<SandboxEnvVar[]> {\n return this.get();\n }\n\n /** PUT /api/v1/sandboxes/{id}/env — set (replace) env vars. */\n async set(\n vars: Array<{ key: string; value: string; encrypted?: boolean }>,\n ): Promise<SandboxEnvVar[]> {\n const response = await this.http.put<unknown>(\n `/sandboxes/${this.sandbox.id}/env`,\n { vars },\n );\n if (Array.isArray(response)) return response as SandboxEnvVar[];\n if (response && typeof response === \"object\") {\n const r = response as Record<string, unknown>;\n for (const k of [\"data\", \"vars\", \"env\", \"items\"]) {\n if (Array.isArray(r[k])) return r[k] as SandboxEnvVar[];\n }\n }\n return [];\n }\n\n /** DELETE /api/v1/sandboxes/{id}/env/{key} — remove a single env var. */\n async delete(key: string): Promise<void> {\n await this.http.delete<unknown>(\n `/sandboxes/${this.sandbox.id}/env/${encodeURIComponent(key)}`,\n );\n }\n}\n\nexport class SandboxTags {\n constructor(private readonly sandbox: Sandbox) {}\n\n /** Replace the full tag list with tags. */\n async set(tags: string[]): Promise<Record<string, unknown>> {\n return unwrap(\n await (this.sandbox as unknown as { http: HttpClient }).http.patch<\n WireEnvelope<Record<string, unknown>>\n >(`/sandboxes/${this.sandbox.id}/tags`, { tags }),\n ) as Record<string, unknown>;\n }\n}\n\nexport class Sandbox {\n data: SandboxData;\n readonly commands: SandboxCommands;\n readonly exec: SandboxExecRunner;\n readonly files: SandboxFiles;\n readonly preview: SandboxPreview;\n readonly artifacts: SandboxArtifacts;\n readonly logs: SandboxLogs;\n readonly snapshots: SandboxSnapshots;\n /** PTY session control — create/delete. */\n readonly terminal: SandboxTerminal;\n /** SSE event stream. */\n readonly events: SandboxEvents;\n /** Operational metrics and current resource state. */\n readonly metricsResource: SandboxMetrics;\n /** Preview CRUD + share/revokeShare. */\n readonly previews: SandboxPreviews;\n /** Read-only env var listing. */\n readonly env: SandboxEnv;\n /** Tag replacement. */\n readonly tags: SandboxTags;\n /** MIOSA Connect provider bindings scoped to this sandbox. */\n readonly connectors: SandboxConnectors;\n /** Encrypted secrets + OAuth credentials scoped to this sandbox. */\n readonly secrets: SandboxSecrets;\n /** Egress allowlist + policies scoped to this sandbox. */\n readonly network: SandboxNetwork;\n /** Egress audit log + live tail scoped to this sandbox. */\n readonly audit: SandboxAudit;\n\n constructor(\n private readonly http: HttpClient,\n data: SandboxData,\n ) {\n this.data = data;\n const runExec = (command: string, options?: SandboxExecOptions) =>\n this.runExec(command, options);\n this.exec = Object.assign(runExec, {\n run: runExec,\n stream: (command: string, options?: SandboxExecOptions) =>\n this.execStream(command, options),\n });\n this.commands = new SandboxCommands(this);\n this.files = new SandboxFiles(this);\n this.preview = new SandboxPreview(this);\n this.artifacts = new SandboxArtifacts(this);\n this.logs = new SandboxLogs(this);\n this.snapshots = new SandboxSnapshots(this);\n this.terminal = new SandboxTerminal(this);\n this.events = new SandboxEvents(this);\n this.metricsResource = new SandboxMetrics(this);\n this.previews = new SandboxPreviews(this);\n this.env = new SandboxEnv(this);\n this.tags = new SandboxTags(this);\n // Egress (security) namespaces — pre-scoped to this sandbox id.\n const sandboxId = data.id as string;\n this.connectors = new SandboxConnectors(http, sandboxId);\n this.secrets = new SandboxSecrets(http, sandboxId);\n this.network = new SandboxNetwork(http, sandboxId);\n this.audit = new SandboxAudit(http, sandboxId);\n }\n\n get id(): SandboxId {\n return this.data.id;\n }\n\n get state(): SandboxState {\n return this.data.state;\n }\n\n get ready(): boolean {\n return this.data.ready ?? this.data.state === \"running\";\n }\n\n get templateId(): string {\n return this.data.template_id ?? this.data.image_id ?? \"\";\n }\n\n async refresh(): Promise<Sandbox> {\n this.data = unwrap(\n await this.http.get<WireEnvelope<SandboxData>>(`/sandboxes/${this.id}`),\n );\n return this;\n }\n\n /**\n * Run an AI coding agent inside this Sandbox.\n *\n * Defaults to Claude Code, waits for completion, and runs from `/workspace`.\n * Pass `{ provider: \"codex\", env: { CODEX_API_KEY } }` to run Codex.\n */\n async prompt(\n instruction: string,\n options: SandboxPromptOptions = {},\n ): Promise<AgentRun> {\n return new AgentRuns(this.http).run({\n ...options,\n prompt: instruction,\n targetKind: \"sandbox\",\n targetId: this.id,\n sandboxId: this.id,\n provider: options.provider ?? \"claude\",\n cwd: options.cwd ?? \"/workspace\",\n wait: options.wait ?? true,\n });\n }\n\n private async runExec(\n command: string,\n options?: SandboxExecOptions,\n ): Promise<SandboxExecResult> {\n this.assertRunning(\"exec\");\n const response = unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/exec`,\n execBody(command, options),\n ),\n );\n const exitCode = Number(response.exit_code ?? response.exitCode ?? 0);\n const result: SandboxExecResult = {\n stdout: String(response.stdout ?? \"\"),\n stderr: String(response.stderr ?? \"\"),\n exitCode,\n exit_code: exitCode,\n };\n if (typeof response.duration_ms === \"number\") {\n result.durationMs = response.duration_ms;\n result.duration_ms = response.duration_ms;\n }\n return result;\n }\n\n private execStream(\n command: string,\n options?: SandboxExecOptions,\n ): AsyncIterableIterator<SandboxExecEvent> {\n this.assertRunning(\"exec.stream\");\n return this.http.stream<SandboxExecEvent>(\n `/sandboxes/${this.id}/exec/stream`,\n {\n method: \"POST\",\n body: execBody(command, options),\n },\n );\n }\n\n async writeFile(path: string, content: string | Uint8Array): Promise<void> {\n this.assertRunning(\"writeFile\");\n const bytes =\n typeof content === \"string\" ? new TextEncoder().encode(content) : content;\n await this.http.post(`/sandboxes/${this.id}/files`, {\n path,\n content: toBase64(bytes),\n });\n }\n\n async download(path: string): Promise<Uint8Array> {\n this.assertRunning(\"download\");\n return this.http.getBinary(\n `/sandboxes/${this.id}/files/${path.replace(/^\\/+/, \"\")}`,\n );\n }\n\n async createExport(\n params: string | string[] | SandboxExportParams,\n ): Promise<SandboxExport> {\n const body =\n typeof params === \"string\"\n ? { path: params }\n : Array.isArray(params)\n ? { paths: params }\n : params;\n const response = unwrap(\n await this.http.post<WireEnvelope<SandboxExport>>(\n `/sandboxes/${this.id}/exports`,\n body,\n ),\n );\n return normalizeExport(response);\n }\n\n async downloadExport(\n paths: string | string[],\n options: { filename?: string } = {},\n ): Promise<Uint8Array> {\n const query = new URLSearchParams();\n if (Array.isArray(paths)) {\n for (const path of paths) query.append(\"paths[]\", path);\n } else {\n query.set(\"path\", paths);\n }\n if (options.filename) query.set(\"filename\", options.filename);\n return this.http.getBinary(\n `/sandboxes/${this.id}/exports/download?${query.toString()}`,\n );\n }\n\n async readFile(path: string): Promise<string> {\n return new TextDecoder().decode(await this.download(path));\n }\n\n async listFiles(path = \"/workspace\"): Promise<SandboxFileList> {\n this.assertRunning(\"files.list\");\n const response = unwrap(\n await this.http.get<WireEnvelope<SandboxFileList>>(\n `/sandboxes/${this.id}/files`,\n { path },\n ),\n );\n return response;\n }\n\n async statFile(path: string): Promise<SandboxFileStat> {\n this.assertRunning(\"files.stat\");\n return unwrap(\n await this.http.post<WireEnvelope<SandboxFileStat>>(\n `/sandboxes/${this.id}/files/stat`,\n { path },\n ),\n );\n }\n\n async expose(port?: number): Promise<string> {\n return (await this.exposeInfo(port)).url;\n }\n\n async getUrl(port?: number, path = \"/\"): Promise<string> {\n const url = new URL((await this.exposeInfo(port)).url);\n url.pathname = path.startsWith(\"/\") ? path : `/${path}`;\n return url.toString();\n }\n\n async getHost(port?: number): Promise<string> {\n return new URL((await this.exposeInfo(port)).url).host;\n }\n\n async exposeInfo(port?: number): Promise<PreviewUrlInfo> {\n this.assertRunning(\"expose\");\n const response = unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/expose`,\n port === undefined ? {} : { port },\n ),\n );\n return previewInfoFromResponse(response);\n }\n\n async startTemplate(\n options: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n this.assertRunning(\"startTemplate\");\n return unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/template/start`,\n options,\n ),\n );\n }\n\n async getArtifacts(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/artifacts`,\n ),\n );\n }\n\n async getLogs(lines?: number): Promise<string | Record<string, unknown>> {\n const response = await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/logs`,\n { lines },\n );\n return unwrap(response);\n }\n\n streamLogs(): AsyncIterableIterator<Record<string, unknown>> {\n return this.http.stream<Record<string, unknown>>(\n `/sandboxes/${this.id}/logs/stream`,\n );\n }\n\n async metrics(window = \"1h\"): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/metrics`,\n { window },\n ),\n );\n }\n\n async getMetrics(window = \"1h\"): Promise<Record<string, unknown>> {\n return this.metrics(window);\n }\n\n async createSnapshot(comment?: string): Promise<SandboxSnapshot> {\n this.assertRunning(\"snapshots.create\");\n return unwrap(\n await this.http.post<WireEnvelope<SandboxSnapshot>>(\n `/sandboxes/${this.id}/snapshots`,\n comment ? { comment } : {},\n ),\n );\n }\n\n async listSnapshots(): Promise<SandboxSnapshot[]> {\n return unwrap(\n await this.http.get<WireEnvelope<SandboxSnapshot[]>>(\n `/sandboxes/${this.id}/snapshots`,\n ),\n );\n }\n\n async restoreSnapshot(snapshotId: string): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/restore/${snapshotId}`,\n {},\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n async deleteSnapshot(snapshotId: string): Promise<void> {\n await this.http.delete(`/sandboxes/${this.id}/snapshots/${snapshotId}`);\n }\n\n /**\n * Fork (clone) this sandbox into a new sandbox via copy-on-write snapshot.\n * The original sandbox continues running unchanged.\n */\n async fork(\n opts: { name?: string; metadata?: Record<string, unknown> } = {},\n ): Promise<Sandbox> {\n this.assertRunning(\"fork\");\n const body: Record<string, unknown> = {};\n if (opts.name !== undefined) body.name = opts.name;\n if (opts.metadata !== undefined) body.metadata = opts.metadata;\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/fork`,\n body,\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n /**\n * PATCH /api/v1/sandboxes/{id} — update mutable sandbox fields.\n */\n async update(params: {\n name?: string;\n slug?: string;\n tags?: string[];\n metadata?: Record<string, unknown>;\n always_on?: boolean;\n alwaysOn?: boolean;\n timeout_sec?: number;\n timeoutSec?: number;\n idle_timeout_sec?: number;\n idleTimeoutSec?: number;\n persistent?: boolean;\n snapshotExpirationSec?: number;\n snapshot_expiration_sec?: number;\n snapshotExpirationDays?: number;\n snapshot_expiration_days?: number;\n keepLastSnapshots?: number | { count: number; expirationSec?: number; deleteEvicted?: boolean };\n keep_last_snapshots?: number | { count: number; expiration_sec?: number; delete_evicted?: boolean };\n }): Promise<Sandbox> {\n const snapshotExpirationSec = snapshotExpirationSeconds(params);\n const metadata = { ...(params.metadata ?? {}) };\n if (params.persistent !== undefined) metadata.miosa_persistent = params.persistent;\n if (snapshotExpirationSec !== undefined) {\n metadata.snapshot_expiration_sec = snapshotExpirationSec;\n }\n const keepLastSnapshots = params.keepLastSnapshots ?? params.keep_last_snapshots;\n if (keepLastSnapshots !== undefined) {\n metadata.keep_last_snapshots = keepLastSnapshots;\n }\n const body = stripUndefined({\n name: params.name,\n slug: params.slug,\n tags: params.tags,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n always_on: params.always_on ?? params.alwaysOn,\n timeout_sec: params.timeout_sec ?? params.timeoutSec,\n idle_timeout_sec: params.idle_timeout_sec ?? params.idleTimeoutSec,\n });\n const data = unwrap(\n await this.http.patch<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}`,\n body,\n ),\n );\n this.data = data;\n return this;\n }\n\n async extend(timeoutSec: number): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/extend`,\n { timeout_sec: timeoutSec },\n ),\n );\n this.data = data;\n return this;\n }\n\n /**\n * POST /api/v1/sandboxes/{id}/preview-token → {token, url, expires_at, scope}\n */\n async previewToken(\n expiresIn = 3600,\n scope = \"read\",\n ): Promise<{\n token: string;\n url: string;\n expires_at: string;\n scope: string;\n [key: string]: unknown;\n }> {\n const raw = await this.http.post<unknown>(\n `/sandboxes/${this.id}/preview-token`,\n { expires_in: expiresIn, scope },\n );\n if (raw && typeof raw === \"object\" && \"data\" in (raw as object)) {\n return (\n raw as {\n data: {\n token: string;\n url: string;\n expires_at: string;\n scope: string;\n };\n }\n ).data;\n }\n return raw as {\n token: string;\n url: string;\n expires_at: string;\n scope: string;\n };\n }\n\n async pause(): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/pause`,\n {},\n ),\n );\n this.data = data;\n return this;\n }\n\n async resume(): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/resume`,\n {},\n ),\n );\n this.data = data;\n return this;\n }\n\n async deploy(\n params: SandboxDeployParams = {},\n ): Promise<Record<string, unknown>> {\n const idempotencyKey = params.idempotencyKey ?? params.idempotency_key;\n const requestOptions: Parameters<HttpClient[\"request\"]>[1] = {\n method: \"POST\",\n body: stripUndefined({\n name: params.name,\n deployment_id: params.deploymentId ?? params.deployment_id,\n output_path:\n params.outputPath ??\n params.output_path ??\n params.path ??\n params.sourcePath ??\n params.source_path,\n source_snapshot_path:\n params.sourceSnapshotPath ?? params.source_snapshot_path,\n entrypoint: params.entrypoint,\n build_command: params.buildCommand ?? params.build_command,\n run_command: params.runCommand ?? params.run_command,\n start_command: params.startCommand ?? params.start_command,\n port: params.port,\n health_check_path: params.healthCheckPath ?? params.health_check_path,\n deployment_type: params.deploymentType ?? params.deployment_type,\n type: params.type,\n mode: params.mode,\n database: params.database,\n resources: params.resources,\n domain: params.domain,\n custom_domain: params.customDomain ?? params.custom_domain,\n }),\n };\n if (idempotencyKey) {\n requestOptions.headers = { \"Idempotency-Key\": idempotencyKey };\n }\n\n return unwrap(\n await this.http.request<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/deploy`,\n requestOptions,\n ),\n );\n }\n\n async deployDocker(\n params: SandboxDeployParams = {},\n ): Promise<Record<string, unknown>> {\n return this.deploy({ ...params, deploymentType: \"docker_deploy\" });\n }\n\n /** Check readiness of the sandbox (GET /sandboxes/:id/readiness). */\n async readiness(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/readiness`,\n ),\n ) as Record<string, unknown>;\n }\n\n /**\n * Block until the sandbox reports ready, or *timeout* seconds elapse.\n *\n * When `stream` is `true` (the default) this opens an SSE connection\n * to `GET /sandboxes/:id/readiness/stream` and waits for an\n * `event: ready` frame. The server emits `ready` immediately if the\n * sandbox is already ready, otherwise as soon as the readiness PubSub\n * message fires.\n *\n * Returns `true` once the sandbox is ready, `false` on `event: timeout`\n * or when the local timeout elapses before ready.\n *\n * If the SSE endpoint returns 404 (server pre-dates the streaming\n * endpoint) this transparently falls back to polling\n * {@link readiness} every 10 ms until ready or timeout.\n */\n async waitUntilReady(\n options: { timeout?: number; stream?: boolean } = {},\n ): Promise<boolean> {\n const timeout = options.timeout ?? 30;\n const stream = options.stream ?? true;\n\n if (stream) {\n const sseResult = await this.tryReadinessStream(timeout);\n if (sseResult !== null) return sseResult;\n // null === fall through to polling fallback (404 or transport error)\n }\n\n // Polling fallback — fixed 10 ms tick, no exponential backoff.\n const deadlineMs = Date.now() + timeout * 1000;\n while (Date.now() < deadlineMs) {\n try {\n const data = await this.readiness();\n if (data.ready === true || data.status === \"ready\") return true;\n } catch {\n // swallow transient errors and keep polling\n }\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n return false;\n }\n\n /**\n * Returns `true` / `false` for terminal SSE events, or `null` if the\n * stream endpoint is unavailable (404 or transport error) so callers\n * can fall back to polling.\n */\n private async tryReadinessStream(\n timeoutSec: number,\n ): Promise<boolean | null> {\n const abort = new AbortController();\n const timer = setTimeout(() => abort.abort(), (timeoutSec + 5) * 1000);\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.http.apiKey}`,\n Accept: \"text/event-stream\",\n \"User-Agent\": \"@miosa/sdk/1.0.0\",\n };\n const response = await fetch(\n `${this.http.baseUrl}/sandboxes/${this.id}/readiness/stream`,\n { method: \"GET\", headers, signal: abort.signal },\n );\n if (response.status === 404) return null;\n if (!response.ok || !response.body) return null;\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n let newlineIdx: number;\n while ((newlineIdx = buffer.indexOf(\"\\n\")) !== -1) {\n const line = buffer.slice(0, newlineIdx).replace(/\\r$/, \"\");\n buffer = buffer.slice(newlineIdx + 1);\n if (line.startsWith(\"event:\")) {\n const evt = line.slice(6).trim();\n if (evt === \"ready\") return true;\n if (evt === \"timeout\") return false;\n }\n }\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // already released\n }\n }\n // stream closed without a terminal event — let caller decide\n return null;\n } catch {\n return null;\n } finally {\n clearTimeout(timer);\n try {\n abort.abort();\n } catch {\n // signal already aborted\n }\n }\n }\n\n async destroy(): Promise<void> {\n if (this.data.state === \"destroyed\") return;\n await this.http.delete(`/sandboxes/${this.id}`);\n this.data = {\n ...this.data,\n state: \"destroyed\",\n destroyed_at: new Date().toISOString(),\n };\n }\n\n delete(): Promise<void> {\n return this.destroy();\n }\n\n private assertRunning(operation: string): void {\n if (this.data.state === \"destroyed\") {\n throw new MiosaError(\n `Sandbox ${this.id} has been destroyed`,\n 400,\n \"SANDBOX_DESTROYED\",\n );\n }\n if (this.data.state === \"paused\" && this.data.persistent === true) {\n return;\n }\n if (this.data.state !== \"running\") {\n throw new MiosaError(\n `Cannot ${operation} on sandbox ${this.id}: state is ${this.data.state}, expected running or paused persistent`,\n 409,\n \"SANDBOX_NOT_RUNNING\",\n );\n }\n }\n}\n\nexport class Sandboxes {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a persistent agent workspace.\n *\n * This is the preferred entry point for AI builders, coding agents, and\n * product workspaces. It gives the sandbox a stable name, a longer interactive\n * timeout, and metadata that makes the workspace easy to identify later. The\n * agent should create/edit files in `/workspace`, run installs/tests/builds\n * inside the sandbox, expose previews from the sandbox, and publish from the\n * sandbox when ready.\n */\n async createAgentWorkspace(\n params: SandboxGetOrCreateParams,\n ): Promise<Sandbox> {\n const metadata = {\n ...(params.metadata ?? {}),\n miosa_workspace_kind: \"agent_workspace\",\n };\n return this.getOrCreate({\n persistent: true,\n timeoutSec: AGENT_WORKSPACE_TIMEOUT_SEC,\n idleTimeoutSec: AGENT_WORKSPACE_IDLE_TIMEOUT_SEC,\n snapshotExpirationDays: AGENT_WORKSPACE_SNAPSHOT_EXPIRATION_DAYS,\n keepLastSnapshots: AGENT_WORKSPACE_KEEP_LAST_SNAPSHOTS,\n waitUntilReady: true,\n ...params,\n metadata,\n });\n }\n\n async create(params: SandboxCreateParams = {}): Promise<Sandbox> {\n const idempotencyKey = params.idempotencyKey ?? params.idempotency_key;\n const requestOptions: Parameters<HttpClient[\"request\"]>[1] = {\n method: \"POST\",\n body: createBody(params),\n };\n if (idempotencyKey) {\n requestOptions.headers = { \"Idempotency-Key\": idempotencyKey };\n }\n\n const data = unwrap(\n await this.http.request<WireEnvelope<SandboxData>>(\n \"/sandboxes\",\n requestOptions,\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n async list(params: SandboxListParams = {}): Promise<Sandbox[]> {\n const data = await this.http.get<\n | WireEnvelope<SandboxData[]>\n | { sandboxes: SandboxData[] }\n | { items: SandboxData[] }\n >(\"/sandboxes\", {\n state: params.state,\n tags: params.tags?.join(\",\"),\n external_workspace_id:\n params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id:\n params.externalProjectId ?? params.external_project_id,\n });\n return listItems(data).map((item) => new Sandbox(this.http, item));\n }\n\n async get(id: SandboxId | string): Promise<Sandbox> {\n const data = unwrap(\n await this.http.get<WireEnvelope<SandboxData>>(`/sandboxes/${id}`),\n );\n return new Sandbox(this.http, data);\n }\n\n connect(id: SandboxId | string): Promise<Sandbox> {\n return this.get(id);\n }\n\n async getByName(name: string): Promise<Sandbox> {\n const data = unwrap(\n await this.http.get<WireEnvelope<SandboxData>>(\n `/sandboxes/by-name/${encodeURIComponent(name)}`,\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n /**\n * Idempotently obtain a persistent sandbox by stable name.\n *\n * If the sandbox exists, it is returned. If it is paused and `resume !== false`,\n * it is resumed first. If it does not exist, it is created with the supplied\n * params. Destroyed sandboxes are permanent and are not resumed by this helper.\n */\n async getOrCreate(params: SandboxGetOrCreateParams): Promise<Sandbox> {\n let sandbox: Sandbox;\n try {\n sandbox = await this.getByName(params.name);\n } catch (error) {\n if (!(error instanceof NotFoundError)) throw error;\n sandbox = await this.create(params);\n }\n\n if (sandbox.state === \"paused\" && params.resume !== false) {\n await sandbox.resume();\n }\n\n if (params.waitUntilReady === true) {\n await sandbox.waitUntilReady({ timeout: params.waitTimeoutSec ?? 60 });\n }\n\n return sandbox;\n }\n\n async delete(id: SandboxId | string): Promise<void> {\n await this.http.delete(`/sandboxes/${id}`);\n }\n\n async listTemplates(\n options: { includeAliases?: boolean } = {},\n ): Promise<SandboxTemplateList> {\n return this.http.get<SandboxTemplateList>(\"/sandbox-templates\", {\n include_aliases: options.includeAliases,\n });\n }\n\n async getTemplate(id: string): Promise<SandboxTemplate> {\n return this.http.get<SandboxTemplate>(`/sandbox-templates/${id}`);\n }\n\n async getBuildSpecSchema(): Promise<Record<string, unknown>> {\n return this.http.get<Record<string, unknown>>(\n \"/sandbox-templates/build-spec\",\n );\n }\n\n async validateBuildSpec(\n buildSpec: SandboxBuildSpec,\n ): Promise<SandboxBuildSpecValidation> {\n return this.http.post<SandboxBuildSpecValidation>(\n \"/sandbox-templates/validate\",\n {\n build_spec: buildSpec,\n },\n );\n }\n\n async createTemplate(\n params: SandboxTemplateCreateParams,\n ): Promise<SandboxTemplate> {\n const response = await this.http.post<WireEnvelope<SandboxTemplate>>(\n \"/sandbox-templates\",\n stripUndefined({\n name: params.name,\n slug: params.slug,\n description: params.description,\n build_spec: params.buildSpec ?? params.build_spec,\n metadata: params.metadata,\n }),\n );\n return unwrap(response);\n }\n\n async createTemplateBuild(\n templateId: string,\n params: SandboxTemplateBuildCreateParams = {},\n ): Promise<SandboxTemplateBuild> {\n const response = await this.http.post<WireEnvelope<SandboxTemplateBuild>>(\n `/sandbox-templates/${templateId}/builds`,\n stripUndefined({\n build_spec: params.buildSpec ?? params.build_spec,\n metadata: params.metadata,\n }),\n );\n return unwrap(response);\n }\n\n async listTemplateBuilds(\n templateId: string,\n ): Promise<SandboxTemplateBuild[]> {\n const response = await this.http.get<WireEnvelope<SandboxTemplateBuild[]>>(\n `/sandbox-templates/${templateId}/builds`,\n );\n return unwrap(response);\n }\n\n async getTemplateBuild(buildId: string): Promise<SandboxTemplateBuild> {\n const response = await this.http.get<WireEnvelope<SandboxTemplateBuild>>(\n `/sandbox-template-builds/${buildId}`,\n );\n return unwrap(response);\n }\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n const maybeBuffer = (\n globalThis as {\n Buffer?: {\n from(data: Uint8Array): { toString(encoding: string): string };\n };\n }\n ).Buffer;\n if (maybeBuffer) return maybeBuffer.from(bytes).toString(\"base64\");\n\n let binary = \"\";\n for (let index = 0; index < bytes.length; index += 1) {\n binary += String.fromCharCode(bytes[index]!);\n }\n return btoa(binary);\n}\n\nfunction previewInfoFromResponse(\n response: Record<string, unknown>,\n): PreviewUrlInfo {\n const url = String(response.url ?? response.preview_url ?? \"\");\n const embeddedInfo =\n response.url_info && typeof response.url_info === \"object\"\n ? (response.url_info as Record<string, unknown>)\n : {};\n\n return {\n ...embeddedInfo,\n url: String(embeddedInfo.url ?? url),\n class: String(\n response.class ??\n response.url_class ??\n embeddedInfo.class ??\n embeddedInfo.url_class ??\n \"temporary_preview\",\n ) as PreviewUrlClass,\n url_class: String(\n response.url_class ??\n response.class ??\n embeddedInfo.url_class ??\n embeddedInfo.class ??\n \"temporary_preview\",\n ) as PreviewUrlClass,\n stable_for_embedding: Boolean(\n response.stable_for_embedding ??\n embeddedInfo.stable_for_embedding ??\n false,\n ),\n recommended_next_action: String(\n response.recommended_next_action ??\n embeddedInfo.recommended_next_action ??\n \"create_alias_or_publish\",\n ) as PreviewUrlAction,\n };\n}\n","/**\n * SandboxTemplates resource — tenant sandbox template management.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type SandboxTemplateResourceId = string & {\n readonly __brand: \"SandboxTemplateResourceId\";\n};\nexport type SandboxTemplateBuildResourceId = string & {\n readonly __brand: \"SandboxTemplateBuildResourceId\";\n};\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface SandboxTemplateResourceData {\n id: SandboxTemplateResourceId;\n tenant_id: string;\n name: string;\n state?: string;\n build_spec?: Record<string, unknown>;\n aliases?: string[];\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxTemplateBuildResourceData {\n id: SandboxTemplateBuildResourceId;\n template_id: SandboxTemplateResourceId;\n state?: string;\n started_at?: string | null;\n finished_at?: string | null;\n error?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SandboxTemplateListParams {\n include_aliases?: boolean;\n includeAliases?: boolean;\n}\n\nexport interface TemplateCreateParams {\n name: string;\n build_spec: Record<string, unknown>;\n buildSpec?: Record<string, unknown>;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface TemplateBuildCreateParams {\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"templates\", \"builds\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class SandboxTemplates {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n params: SandboxTemplateListParams = {},\n ): Promise<SandboxTemplateResourceData[]> {\n const includeAliases =\n params.includeAliases ?? params.include_aliases ?? false;\n const query = includeAliases\n ? ({ include_aliases: true } as Record<\n string,\n string | number | boolean | undefined\n >)\n : undefined;\n const data = await this.http.get<unknown>(\"/sandbox-templates\", query);\n return listItems<SandboxTemplateResourceData>(data, [\n \"data\",\n \"templates\",\n \"items\",\n ]);\n }\n\n async get(templateId: string): Promise<SandboxTemplateResourceData> {\n const data = await this.http.get<unknown>(\n `/sandbox-templates/${templateId}`,\n );\n return unwrap<SandboxTemplateResourceData>(data);\n }\n\n async create(\n params: TemplateCreateParams,\n ): Promise<SandboxTemplateResourceData> {\n const {\n idempotencyKey: ikey,\n buildSpec,\n build_spec,\n name,\n ...rest\n } = params;\n const body = stripUndefined({\n name,\n build_spec: buildSpec ?? build_spec,\n ...rest,\n });\n const data = await this.http.request<unknown>(\"/sandbox-templates\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<SandboxTemplateResourceData>(data);\n }\n\n async buildSpecSchema(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/sandbox-templates/build-spec\");\n return (data ?? {}) as Record<string, unknown>;\n }\n\n async validate(\n buildSpec: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(\"/sandbox-templates/validate\", {\n build_spec: buildSpec,\n });\n return (data ?? {}) as Record<string, unknown>;\n }\n\n async listBuilds(\n templateId: string,\n ): Promise<SandboxTemplateBuildResourceData[]> {\n const data = await this.http.get<unknown>(\n `/sandbox-templates/${templateId}/builds`,\n );\n return listItems<SandboxTemplateBuildResourceData>(data, [\n \"data\",\n \"builds\",\n \"items\",\n ]);\n }\n\n async createBuild(\n templateId: string,\n params: TemplateBuildCreateParams = {},\n ): Promise<SandboxTemplateBuildResourceData> {\n const { idempotencyKey: ikey, ...rest } = params;\n const body = stripUndefined(rest as Record<string, unknown>);\n const data = await this.http.request<unknown>(\n `/sandbox-templates/${templateId}/builds`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n },\n );\n return unwrap<SandboxTemplateBuildResourceData>(data);\n }\n}\n","/**\n * Settings — tenant config, branding, BYOK provider keys.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SettingsUpdateParams {\n [key: string]: unknown;\n}\n\nexport interface BrandingUpdateParams {\n logo_url?: string;\n primary_color?: string;\n wordmark?: string;\n [key: string]: unknown;\n}\n\nexport interface ProviderKeyUpsertParams {\n key: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"settings\",\n \"branding\",\n \"provider_keys\",\n \"items\",\n ]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Settings {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current tenant settings. */\n async get(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/settings\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Update tenant settings. */\n async update(params: SettingsUpdateParams): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\"/settings\", body);\n return unwrap<Record<string, unknown>>(data);\n }\n\n // ── Branding ──────────────────────────────────────────────────────────────\n\n /** Get tenant branding (logo, colors, custom wordmark). */\n async getBranding(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/settings/branding\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Update tenant branding. */\n async updateBranding(\n params: BrandingUpdateParams,\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\"/settings/branding\", body);\n return unwrap<Record<string, unknown>>(data);\n }\n\n // ── Read-only reference data ───────────────────────────────────────────────\n\n /** Get tenant-scoped compute pricing. */\n async computePricing(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/compute-pricing\");\n return unwrap(data);\n }\n\n /** Get tenant-scoped GPU pricing. */\n async gpuPricing(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/gpu-pricing\");\n return unwrap(data);\n }\n\n /** List models available to this tenant. */\n async availableModels(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/available-models\");\n return unwrap(data);\n }\n\n /** List regions enabled for this tenant. */\n async regions(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/regions\");\n return unwrap(data);\n }\n\n // ── BYOK provider keys ────────────────────────────────────────────────────\n\n /** List tenant-level BYOK provider keys (Anthropic, OpenAI, etc.). */\n async listProviderKeys(): Promise<Record<string, unknown>[]> {\n const data = await this.http.get<unknown>(\"/settings/provider-keys\");\n return listItems<Record<string, unknown>>(data);\n }\n\n /** Create or update a BYOK provider key. */\n async upsertProviderKey(\n provider: string,\n params: ProviderKeyUpsertParams,\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\n `/settings/provider-keys/${provider}`,\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Delete a BYOK provider key. */\n async deleteProviderKey(provider: string): Promise<void> {\n await this.http.delete<unknown>(`/settings/provider-keys/${provider}`);\n }\n}\n","/**\n * SnapshotsStandalone — fleet-wide snapshot index for admin callers.\n *\n * Routes: /admin/snapshots/*\n * Requires admin credential.\n *\n * Per-computer snapshots remain nested under client.computers.get(id).checkpoints.\n * This resource exposes the fleet-wide read-only index used by the admin dashboard.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"snapshots\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"snapshots\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class SnapshotsStandalone {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrapList(await this.http.get<unknown>(\"/admin/snapshots\", query));\n }\n\n async get(snapshotId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/admin/snapshots/${snapshotId}`),\n );\n }\n}\n","/**\n * Storage resource — managed S3-compatible buckets, objects, and presigned URLs.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type BucketId = string & { readonly __brand: \"BucketId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface BucketData {\n id: BucketId;\n tenant_id: string;\n name: string;\n region?: string | null;\n visibility?: \"private\" | \"public\" | string;\n quota_bytes?: number | null;\n used_bytes?: number | null;\n public?: boolean;\n object_count?: number | null;\n size_bytes?: number | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface StorageObjectData {\n key: string;\n size_bytes?: number;\n content_type?: string;\n etag?: string | null;\n last_modified?: string | null;\n [key: string]: unknown;\n}\n\nexport interface PresignResult {\n url: string;\n expires_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface BucketCreateParams {\n name: string;\n region?: string;\n visibility?: \"private\" | \"public\";\n quota_bytes?: number;\n public?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ObjectListParams {\n prefix?: string;\n maxKeys?: number;\n max_keys?: number;\n marker?: string;\n /** @deprecated use maxKeys/max_keys; kept as a convenience alias. */\n limit?: number;\n /** @deprecated use marker; kept as a convenience alias. */\n cursor?: string;\n}\n\nexport interface PresignParams {\n key: string;\n method?: \"GET\" | \"PUT\";\n expiresIn?: number;\n expires_in?: number;\n /** @deprecated use method; kept as a convenience alias. */\n operation?: \"get\" | \"put\";\n /** @deprecated use expiresIn/expires_in; kept as a convenience alias. */\n expiresInSec?: number;\n /** @deprecated use expiresIn/expires_in; kept as a convenience alias. */\n expires_in_sec?: number;\n contentType?: string;\n content_type?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"buckets\", \"objects\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Storage {\n constructor(private readonly http: HttpClient) {}\n\n // ── Buckets ────────────────────────────────────────────────────────────────\n\n async listBuckets(): Promise<BucketData[]> {\n const data = await this.http.get<unknown>(\"/storage/buckets\");\n return listItems<BucketData>(data);\n }\n\n async createBucket(params: BucketCreateParams): Promise<BucketData> {\n const { name, public: isPublic, visibility, ...rest } = params;\n const body = stripUndefined({\n name,\n visibility:\n visibility ??\n (isPublic === undefined ? undefined : isPublic ? \"public\" : \"private\"),\n ...rest,\n });\n const data = await this.http.post<unknown>(\"/storage/buckets\", body);\n return unwrap<BucketData>(data);\n }\n\n async getBucket(bucketId: string): Promise<BucketData> {\n const data = await this.http.get<unknown>(`/storage/buckets/${bucketId}`);\n return unwrap<BucketData>(data);\n }\n\n async deleteBucket(bucketId: string): Promise<void> {\n await this.http.delete<unknown>(`/storage/buckets/${bucketId}`);\n }\n\n // ── Objects ────────────────────────────────────────────────────────────────\n\n async listObjects(\n bucketId: string,\n params: ObjectListParams = {},\n ): Promise<StorageObjectData[]> {\n const query = stripUndefined({\n prefix: params.prefix,\n max_keys: params.max_keys ?? params.maxKeys ?? params.limit,\n marker: params.marker ?? params.cursor,\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n `/storage/buckets/${bucketId}/objects`,\n query,\n );\n return listItems<StorageObjectData>(data, [\"data\", \"objects\", \"items\"]);\n }\n\n async putObject(\n bucketId: string,\n key: string,\n content: Uint8Array | ArrayBuffer,\n opts: { contentType?: string } = {},\n ): Promise<Record<string, unknown>> {\n const contentType = opts.contentType ?? \"application/octet-stream\";\n const data = await this.http.request<unknown>(\n `/storage/buckets/${bucketId}/objects/${key}`,\n {\n method: \"PUT\",\n body: content,\n headers: { \"Content-Type\": contentType },\n },\n );\n return (data ?? {}) as Record<string, unknown>;\n }\n\n async getObject(bucketId: string, key: string): Promise<Uint8Array> {\n return this.http.getBinary(`/storage/buckets/${bucketId}/objects/${key}`);\n }\n\n async deleteObject(bucketId: string, key: string): Promise<void> {\n await this.http.delete<unknown>(\n `/storage/buckets/${bucketId}/objects/${key}`,\n );\n }\n\n // ── Presigned URLs ─────────────────────────────────────────────────────────\n\n async presign(\n bucketId: string,\n params: PresignParams,\n ): Promise<PresignResult> {\n const operationMethod =\n params.operation === \"put\"\n ? \"PUT\"\n : params.operation === \"get\"\n ? \"GET\"\n : undefined;\n\n const body = stripUndefined({\n key: params.key,\n method: params.method ?? operationMethod ?? \"GET\",\n expires_in:\n params.expiresIn ??\n params.expires_in ??\n params.expiresInSec ??\n params.expires_in_sec ??\n 3600,\n });\n const data = await this.http.post<unknown>(\n `/storage/buckets/${bucketId}/presign`,\n body,\n );\n return unwrap<PresignResult>(data);\n }\n}\n","/**\n * Org Invites — email invite flow for org (tenant) membership.\n *\n * Public endpoints (no auth):\n * GET /invites/:token\n *\n * Authenticated endpoints (admin/owner role required for create/list/revoke):\n * POST /tenants/:id/invites\n * GET /tenants/:id/invites\n * DELETE /tenants/:id/invites/:invite_id\n * POST /invites/:token/accept\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport type OrgRole = \"owner\" | \"admin\" | \"member\";\n\nexport interface OrgInvite {\n id: string;\n tenant_id: string;\n email: string;\n role: OrgRole;\n invited_by: string | null;\n expires_at: string;\n accepted_at: string | null;\n created_at: string;\n}\n\nexport interface OrgInviteCreated {\n invite_id: string;\n email: string;\n role: OrgRole;\n expires_at: string;\n /**\n * Full URL for the invite landing page. On white-label tenants this uses\n * the tenant's custom domain.\n */\n invite_url: string;\n}\n\nexport interface OrgInvitePreview {\n email: string;\n tenant_name: string;\n role: OrgRole;\n expires_at: string;\n expired: boolean;\n accepted: boolean;\n}\n\nexport interface TenantSummary {\n id: string;\n name: string;\n slug: string;\n owner_user_id: string | null;\n plan_id: string | null;\n plan_name: string | null;\n settings: Record<string, unknown>;\n inserted_at: string;\n updated_at: string;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CreateOrgInviteParams {\n email: string;\n role?: OrgRole;\n}\n\n// ── Response shapes ───────────────────────────────────────────────────────────\n\nexport interface OrgInviteCreatedResponse {\n data: OrgInviteCreated;\n}\n\nexport interface OrgInviteListResponse {\n data: OrgInvite[];\n total: number;\n}\n\nexport interface OrgInviteRevokeResponse {\n invite_id: string;\n revoked: boolean;\n}\n\nexport interface OrgInvitePreviewResponse {\n data: OrgInvitePreview;\n}\n\nexport interface AcceptOrgInviteResponse {\n accepted: boolean;\n tenant_id: string;\n tenant: TenantSummary | null;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class OrgInvites {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create an org invite and dispatch the invite email.\n *\n * The invite URL in the response is host-aware: on white-label tenants it\n * uses the custom domain so the recipient lands on the branded experience.\n * Requires `admin` or `owner` role in the tenant.\n *\n * `POST /tenants/:id/invites`\n */\n async create(\n tenantId: string,\n params: CreateOrgInviteParams,\n ): Promise<OrgInviteCreated> {\n const res = await this.http.post<OrgInviteCreatedResponse>(\n `/tenants/${tenantId}/invites`,\n params,\n );\n return res.data;\n }\n\n /**\n * List all pending (non-expired, non-accepted, non-revoked) org invites.\n *\n * Requires `admin` or `owner` role.\n *\n * `GET /tenants/:id/invites`\n */\n async list(tenantId: string): Promise<OrgInvite[]> {\n const res = await this.http.get<OrgInviteListResponse>(\n `/tenants/${tenantId}/invites`,\n );\n return res.data ?? [];\n }\n\n /**\n * Revoke a pending org invite.\n *\n * Returns `409` when the invite was already legitimately accepted.\n * Requires `admin` or `owner` role.\n *\n * `DELETE /tenants/:id/invites/:invite_id`\n */\n async revoke(\n tenantId: string,\n inviteId: string,\n ): Promise<OrgInviteRevokeResponse> {\n return this.http.delete<OrgInviteRevokeResponse>(\n `/tenants/${tenantId}/invites/${inviteId}`,\n );\n }\n\n /**\n * Preview an org invite by token (no auth required).\n *\n * Returns `null` when the token is unknown or has been revoked.\n *\n * `GET /invites/:token`\n */\n async preview(token: string): Promise<OrgInvitePreview | null> {\n try {\n const res = await this.http.get<OrgInvitePreviewResponse>(\n `/invites/${token}`,\n );\n return res.data ?? null;\n } catch {\n return null;\n }\n }\n\n /**\n * Accept an org invite on behalf of the authenticated user.\n *\n * The caller's JWT email must match the invite email (case-insensitive).\n * On success inserts a `tenant_members` row.\n *\n * Error responses:\n * - `400` — invalid or expired token.\n * - `422 EMAIL_MISMATCH` — JWT email does not match the invite email.\n *\n * `POST /invites/:token/accept`\n */\n async accept(token: string): Promise<AcceptOrgInviteResponse> {\n return this.http.post<AcceptOrgInviteResponse>(\n `/invites/${token}/accept`,\n {},\n );\n }\n}\n","/**\n * Tenant — current tenant info and plan/usage.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface TenantPlan {\n id?: string;\n name?: string;\n limits?: Record<string, unknown>;\n usage?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface PreviewDomainData {\n preview_domain?: string | null;\n default_domain?: string;\n status?: string;\n dns_status?: string;\n cname_target?: string | null;\n dns_instructions?: unknown;\n [key: string]: unknown;\n}\n\nexport interface TenantBrandingUpdateParams {\n product_name?: string;\n logo_url?: string;\n support_url?: string;\n support_email?: string;\n primary_color?: string;\n background_color?: string;\n [key: string]: unknown;\n}\n\nexport type BrandingData = TenantBrandingUpdateParams;\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"tenant\", \"branding\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nexport class PreviewDomain {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the tenant's white-label preview domain settings. */\n async get(): Promise<PreviewDomainData> {\n const data = await this.http.get<unknown>(\"/tenant/preview-domain\");\n return unwrap<PreviewDomainData>(data);\n }\n\n /** Set the tenant's white-label preview domain. */\n async set(domain: string): Promise<PreviewDomainData> {\n const data = await this.http.put<unknown>(\"/tenant/preview-domain\", {\n preview_domain: domain,\n });\n return unwrap<PreviewDomainData>(data);\n }\n\n /** Re-run DNS verification for the configured preview domain. */\n async verify(): Promise<PreviewDomainData> {\n const data = await this.http.post<unknown>(\n \"/tenant/preview-domain/verify\",\n {},\n );\n return unwrap<PreviewDomainData>(data);\n }\n\n /** Remove the tenant's custom preview domain. */\n async delete(): Promise<void> {\n await this.http.delete<unknown>(\"/tenant/preview-domain\");\n }\n}\n\nexport class Branding {\n constructor(private readonly http: HttpClient) {}\n\n /** Get tenant branding used by white-label hosted surfaces. */\n async get(): Promise<BrandingData> {\n const data = await this.http.get<unknown>(\"/tenant/branding\");\n return unwrap<BrandingData>(data);\n }\n\n /** Update tenant branding used by white-label hosted surfaces. */\n async set(params: TenantBrandingUpdateParams): Promise<BrandingData> {\n const data = await this.http.put<unknown>(\"/tenant/branding\", {\n branding: stripUndefined(params),\n });\n return unwrap<BrandingData>(data);\n }\n\n /** Reset tenant branding to platform defaults. */\n async delete(): Promise<void> {\n await this.http.delete<unknown>(\"/tenant/branding\");\n }\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Tenant {\n readonly preview_domain: PreviewDomain;\n readonly branding: Branding;\n /** camelCase alias for SDK consumers that avoid snake_case properties. */\n readonly previewDomain: PreviewDomain;\n\n constructor(private readonly http: HttpClient) {\n this.preview_domain = new PreviewDomain(http);\n this.previewDomain = this.preview_domain;\n this.branding = new Branding(http);\n }\n\n /** Get the current tenant's plan, limits, and live usage counters. */\n async current(): Promise<TenantPlan> {\n const data = await this.http.get<unknown>(\"/tenant/plan\");\n return unwrap<TenantPlan>(data);\n }\n\n /** Convenience alias for `tenant.branding.get()`. */\n async getBranding(): Promise<BrandingData> {\n return this.branding.get();\n }\n\n /** Convenience alias for `tenant.branding.set(...)`. */\n async setBranding(\n params: TenantBrandingUpdateParams,\n ): Promise<BrandingData> {\n return this.branding.set(params);\n }\n\n /** Convenience alias for `tenant.branding.delete()`. */\n async deleteBranding(): Promise<void> {\n await this.branding.delete();\n }\n}\n","/**\n * Product-aware template catalog.\n *\n * This is different from `sandboxTemplates`, which manages tenant-owned\n * sandbox template build records. `templates` is the canonical discovery\n * surface for product/template/size/readiness primitives across sandboxes,\n * computers, and appliances.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport type ComputeProduct =\n | \"sandbox\"\n | \"computer\"\n | \"docker_deploy_host\"\n | \"managed_database\"\n | \"deployment\";\n\nexport type TemplateReadinessState =\n | \"fast_ready\"\n | \"cold_boot_only\"\n | \"missing\"\n | \"partial_fast_ready\"\n | \"unavailable\";\n\nexport interface TemplateSizeReadiness {\n size: string;\n state: TemplateReadinessState | string;\n fast_ready?: boolean;\n cold_boot_only?: boolean;\n readiness_scope?: string;\n checked_nodes?: number;\n ready_nodes?: number;\n cold_boot_nodes?: number;\n missing_nodes?: number;\n unavailable_nodes?: number;\n [key: string]: unknown;\n}\n\nexport interface TemplateBenchmarkLane {\n id: string;\n name?: string;\n command?: string;\n purpose?: string;\n [key: string]: unknown;\n}\n\nexport interface TemplateReadinessContract {\n exec_ready?: boolean;\n preview_ready?: boolean;\n desktop_ready?: boolean;\n app_ready?: boolean;\n benchmark_command?: string;\n start_command?: string | null;\n readiness_probe?: Record<string, unknown> | null;\n [key: string]: unknown;\n}\n\nexport interface ProductTemplate {\n id: string;\n name: string;\n product: ComputeProduct | string;\n primitive?: \"template\" | string;\n default_size?: string;\n image_id?: string;\n description?: string | null;\n sdk_name?: string;\n cli_name?: string;\n installed_tools?: string[];\n install_command?: string | null;\n start_command?: string | null;\n readiness_probe?: Record<string, unknown> | null;\n readiness_contract?: TemplateReadinessContract;\n benchmark_lane?: TemplateBenchmarkLane;\n aliases?: string[];\n sizes?: TemplateSizeReadiness[];\n readiness?: TemplateReadinessState | string;\n [key: string]: unknown;\n}\n\nexport interface ProductCatalogEntry {\n id: ComputeProduct | string;\n name: string;\n primitive?: \"product\" | string;\n description?: string;\n default_template?: string;\n default_size?: string;\n templates?: ProductTemplate[];\n size_ids?: string[];\n [key: string]: unknown;\n}\n\nexport interface TemplatesListParams {\n product?: ComputeProduct | string;\n}\n\nexport interface ProductTemplateCatalog {\n templates: ProductTemplate[];\n products?: ProductCatalogEntry[];\n sizes?: Array<Record<string, unknown>>;\n readiness_states?: string[];\n rules?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nfunction unwrapCatalog(payload: unknown): ProductTemplateCatalog {\n if (!payload || typeof payload !== \"object\") return { templates: [] };\n const data =\n \"data\" in payload && typeof (payload as { data?: unknown }).data === \"object\"\n ? (payload as { data: Record<string, unknown> }).data\n : (payload as Record<string, unknown>);\n\n const templates = Array.isArray(data.templates)\n ? (data.templates as ProductTemplate[])\n : [];\n\n return {\n ...data,\n templates,\n } as ProductTemplateCatalog;\n}\n\nexport class Templates {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List product-aware templates across sandbox, computer, and appliance.\n *\n * Use `sandboxTemplates` for tenant-owned sandbox template CRUD/builds.\n */\n async list(params: TemplatesListParams = {}): Promise<ProductTemplate[]> {\n const data = await this.http.get<unknown>(\"/templates\");\n const catalog = unwrapCatalog(data);\n\n if (!params.product) return catalog.templates;\n\n return catalog.templates.filter((template) => template.product === params.product);\n }\n\n async catalog(): Promise<ProductTemplateCatalog> {\n const data = await this.http.get<unknown>(\"/templates\");\n return unwrapCatalog(data);\n }\n\n async get(templateId: string, params: TemplatesListParams = {}): Promise<ProductTemplate> {\n const templates = await this.list(params);\n const match = templates.find((template) => template.id === templateId);\n\n if (!match) {\n throw new Error(`Template not found: ${templateId}`);\n }\n\n return match;\n }\n\n async readiness(\n templateId: string,\n params: TemplatesListParams = {},\n ): Promise<TemplateSizeReadiness[]> {\n const template = await this.get(templateId, params);\n return template.sizes ?? [];\n }\n}\n","/**\n * Usage — per-session metering, summary, and reports.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface UsageSummary {\n period_start?: string;\n period_end?: string;\n total_credits?: number;\n [key: string]: unknown;\n}\n\nexport interface UsageSession {\n id?: string;\n computer_id?: string;\n started_at?: string;\n ended_at?: string;\n credits_used?: number;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface UsageSessionsParams {\n computer_id?: string;\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface UsageReportParams extends UsageSessionsParams {\n period_start?: string;\n period_end?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"usage\", \"sessions\", \"summary\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Usage {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current period usage summary. */\n async current(): Promise<UsageSummary> {\n const data = await this.http.get<unknown>(\"/usage/summary\");\n return unwrap<UsageSummary>(data);\n }\n\n /** List per-session metering events. */\n async sessions(params: UsageSessionsParams = {}): Promise<UsageSession[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/usage/sessions\", query);\n const result = unwrap<UsageSession[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n\n /** Get a usage report for a period. */\n async report(params: UsageReportParams = {}): Promise<UsageSummary> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/usage/summary\", query);\n return unwrap<UsageSummary>(data);\n }\n}\n","/**\n * Volumes resource — persistent block storage.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type VolumeId = string & { readonly __brand: \"VolumeId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface VolumeData {\n id: VolumeId;\n tenant_id: string;\n name: string;\n size_gb: number;\n state?: string;\n region?: string | null;\n attached_to?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface VolumeListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface VolumeCreateParams {\n name: string;\n size_gb: number;\n sizeGb?: number;\n region?: string;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface VolumeAttachmentData {\n id: string;\n volume_id: string;\n computer_id: string;\n mount_path: string;\n read_only?: boolean;\n state?: string;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface VolumeAttachParams {\n volumeId?: string;\n volume_id?: string;\n mountPath?: string;\n mount_path?: string;\n readOnly?: boolean;\n read_only?: boolean;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"volumes\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Volumes {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: VolumeListParams = {}): Promise<VolumeData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/volumes\", query);\n return listItems<VolumeData>(data);\n }\n\n async get(volumeId: string): Promise<VolumeData> {\n const data = await this.http.get<unknown>(`/volumes/${volumeId}`);\n return unwrap<VolumeData>(data);\n }\n\n async create(params: VolumeCreateParams): Promise<VolumeData> {\n const { idempotencyKey: ikey, sizeGb, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n size_gb: sizeGb ?? rest.size_gb,\n });\n const data = await this.http.request<unknown>(\"/volumes\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<VolumeData>(data);\n }\n\n async delete(volumeId: string): Promise<void> {\n await this.http.delete<unknown>(`/volumes/${volumeId}`);\n }\n\n async listAttachments(computerId: string): Promise<VolumeAttachmentData[]> {\n const data = await this.http.get<unknown>(`/computers/${computerId}/volumes`);\n return listItems<VolumeAttachmentData>(data, [\n \"data\",\n \"attachments\",\n \"volumes\",\n \"items\",\n ]);\n }\n\n async attach(\n computerId: string,\n params: VolumeAttachParams,\n ): Promise<VolumeAttachmentData> {\n const volumeId = params.volumeId ?? params.volume_id;\n const mountPath = params.mountPath ?? params.mount_path;\n const readOnly = params.readOnly ?? params.read_only;\n const body = stripUndefined({\n ...params,\n volumeId: undefined,\n mountPath: undefined,\n readOnly: undefined,\n volume_id: volumeId,\n mount_path: mountPath,\n read_only: readOnly,\n });\n const data = await this.http.post<unknown>(\n `/computers/${computerId}/volumes`,\n body,\n );\n return unwrap<VolumeAttachmentData>(data);\n }\n\n async detach(computerId: string, attachmentId: string): Promise<void> {\n await this.http.delete<unknown>(\n `/computers/${computerId}/volumes/${attachmentId}`,\n );\n }\n}\n","/**\n * Webhooks resource — tenant outgoing event delivery.\n */\n\nimport { createHmac, randomUUID, timingSafeEqual } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type WebhookId = string & { readonly __brand: \"WebhookId\" };\nexport type WebhookDeliveryId = string & {\n readonly __brand: \"WebhookDeliveryId\";\n};\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface WebhookData {\n id: WebhookId;\n tenant_id: string;\n url: string;\n events: string[];\n state?: string;\n secret?: string | null;\n enabled?: boolean;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface WebhookDeliveryData {\n id: WebhookDeliveryId;\n webhook_id: WebhookId;\n event?: string;\n state?: string;\n response_status?: number | null;\n attempt_count?: number;\n next_retry_at?: string | null;\n delivered_at?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface WebhookListParams {\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface WebhookCreateParams {\n url: string;\n events: string[];\n secret?: string;\n enabled?: boolean;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface WebhookUpdateParams {\n url?: string;\n events?: string[];\n secret?: string;\n enabled?: boolean;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"webhooks\", \"deliveries\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\nfunction bodyBuffer(body: Buffer | Uint8Array | string): Buffer {\n if (Buffer.isBuffer(body)) return body;\n if (typeof body === \"string\") return Buffer.from(body, \"utf8\");\n return Buffer.from(body);\n}\n\n/**\n * Verify the `Miosa-Signature` webhook header.\n *\n * Header format: `t=<unix_seconds>,v1=<hex_hmac>`.\n * Signed payload: `<timestamp>.<raw_body>`.\n */\nexport function verifySignature(\n body: Buffer | Uint8Array | string,\n header: string,\n secret: string,\n toleranceSec = 300,\n): boolean {\n const parts = Object.fromEntries(\n header\n .split(\",\")\n .map((chunk) => chunk.split(\"=\", 2))\n .filter(([key, value]) => key && value),\n );\n const timestamp = parts.t;\n const received = parts.v1;\n if (!timestamp || !received || !secret) return false;\n\n const unixSeconds = Number(timestamp);\n if (!Number.isFinite(unixSeconds)) return false;\n\n const ageSec = Math.abs(Date.now() / 1000 - unixSeconds);\n if (ageSec > toleranceSec) {\n throw new Error(\"webhook timestamp too old\");\n }\n\n const rawBody = bodyBuffer(body);\n const signed = Buffer.concat([Buffer.from(`${timestamp}.`), rawBody]);\n const expected = createHmac(\"sha256\", secret).update(signed).digest(\"hex\");\n\n try {\n return timingSafeEqual(\n Buffer.from(expected, \"utf8\"),\n Buffer.from(received, \"utf8\"),\n );\n } catch {\n return false;\n }\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Webhooks {\n static verifySignature = verifySignature;\n\n constructor(private readonly http: HttpClient) {}\n\n async list(params: WebhookListParams = {}): Promise<WebhookData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/webhooks\", query);\n return listItems<WebhookData>(data);\n }\n\n async get(webhookId: string): Promise<WebhookData> {\n const data = await this.http.get<unknown>(`/webhooks/${webhookId}`);\n return unwrap<WebhookData>(data);\n }\n\n async create(params: WebhookCreateParams): Promise<WebhookData> {\n const { idempotencyKey: ikey, ...rest } = params;\n const body = stripUndefined(rest as Record<string, unknown>);\n const data = await this.http.request<unknown>(\"/webhooks\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<WebhookData>(data);\n }\n\n async update(\n webhookId: string,\n params: WebhookUpdateParams,\n ): Promise<WebhookData> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(`/webhooks/${webhookId}`, body);\n return unwrap<WebhookData>(data);\n }\n\n async delete(webhookId: string): Promise<void> {\n await this.http.delete<unknown>(`/webhooks/${webhookId}`);\n }\n\n async test(\n webhookId: string,\n opts: { idempotencyKey?: string } = {},\n ): Promise<Record<string, unknown>> {\n const data = await this.http.request<unknown>(\n `/webhooks/${webhookId}/test`,\n {\n method: \"POST\",\n headers: { \"Idempotency-Key\": idempotencyKey(opts.idempotencyKey) },\n },\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n async deliveries(webhookId: string): Promise<WebhookDeliveryData[]> {\n const data = await this.http.get<unknown>(\n `/webhooks/${webhookId}/deliveries`,\n );\n return listItems<WebhookDeliveryData>(data, [\n \"data\",\n \"deliveries\",\n \"items\",\n ]);\n }\n}\n","/**\n * Workspace Invites — email invite flow for workspace access.\n *\n * Sending an invite to an email that already belongs to a tenant member\n * short-circuits to directly adding that user (returns `type: \"added\"`).\n * Accepting a workspace invite for an unknown email auto-creates both a\n * `tenant_members` and a `workspace_members` row atomically.\n *\n * Public endpoints (no auth):\n * GET /workspace-invites/:token\n *\n * Authenticated endpoints:\n * POST /workspaces/:id/invites\n * GET /workspaces/:id/invites\n * DELETE /workspaces/:id/invites/:invite_id\n * POST /workspace-invites/:token/accept\n */\n\nimport type { HttpClient } from \"../http.js\";\nimport type {\n WorkspaceMemberRecord,\n WorkspaceRole,\n} from \"./workspace-members.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface WorkspaceInvite {\n id: string;\n workspace_id: string;\n tenant_id: string;\n email: string;\n role: WorkspaceRole;\n invited_by: string | null;\n expires_at: string;\n accepted_at: string | null;\n inserted_at: string;\n}\n\nexport interface WorkspaceInvitePreview {\n workspace_name: string;\n tenant_name: string;\n role: WorkspaceRole;\n email: string;\n expires_at: string;\n expired: boolean;\n revoked: boolean;\n accepted: boolean;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CreateWorkspaceInviteParams {\n email: string;\n role?: WorkspaceRole;\n}\n\n// ── Response shapes ───────────────────────────────────────────────────────────\n\n/** Returned when the email was unknown — an invite was created. */\nexport interface WorkspaceInviteCreatedResponse {\n data: WorkspaceInvite;\n type: \"invited\";\n}\n\n/** Returned when the email already had a tenant_members row — added directly. */\nexport interface WorkspaceMemberAddedResponse {\n data: WorkspaceMemberRecord;\n type: \"added\";\n}\n\nexport type CreateWorkspaceInviteResponse =\n | WorkspaceInviteCreatedResponse\n | WorkspaceMemberAddedResponse;\n\nexport interface WorkspaceInviteListResponse {\n data: WorkspaceInvite[];\n total: number;\n}\n\nexport interface WorkspaceInviteRevokeResponse {\n invite_id: string;\n revoked: boolean;\n}\n\nexport interface WorkspaceInvitePreviewResponse {\n data: WorkspaceInvitePreview;\n}\n\nexport interface AcceptWorkspaceInviteResponse {\n accepted: boolean;\n workspace_id: string;\n tenant_id: string;\n role: WorkspaceRole;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class WorkspaceInvites {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a workspace invite or add a member directly.\n *\n * If `email` already maps to a tenant member the user is added directly and\n * `type === \"added\"` is returned with a `WorkspaceMemberRecord`. Otherwise\n * an invite row is created and `type === \"invited\"` is returned.\n *\n * `POST /workspaces/:id/invites`\n */\n async create(\n workspaceId: string,\n params: CreateWorkspaceInviteParams,\n ): Promise<CreateWorkspaceInviteResponse> {\n return this.http.post<CreateWorkspaceInviteResponse>(\n `/workspaces/${workspaceId}/invites`,\n params,\n );\n }\n\n /**\n * List all pending (non-expired, non-accepted, non-revoked) workspace invites.\n *\n * `GET /workspaces/:id/invites`\n */\n async list(workspaceId: string): Promise<WorkspaceInvite[]> {\n const res = await this.http.get<WorkspaceInviteListResponse>(\n `/workspaces/${workspaceId}/invites`,\n );\n return res.data ?? [];\n }\n\n /**\n * Revoke a pending workspace invite.\n *\n * Already-revoked invites are idempotent (returns `revoked: true`). An invite\n * that was legitimately accepted throws `409 ALREADY_ACCEPTED`.\n *\n * `DELETE /workspaces/:id/invites/:invite_id`\n */\n async revoke(\n workspaceId: string,\n inviteId: string,\n ): Promise<WorkspaceInviteRevokeResponse> {\n return this.http.delete<WorkspaceInviteRevokeResponse>(\n `/workspaces/${workspaceId}/invites/${inviteId}`,\n );\n }\n\n /**\n * Preview a workspace invite by token (no auth required).\n *\n * Use this to render the invite landing page before prompting the user to\n * log in or sign up. Returns `null` when the token is unknown or revoked.\n *\n * `GET /workspace-invites/:token`\n */\n async preview(token: string): Promise<WorkspaceInvitePreview | null> {\n try {\n const res = await this.http.get<WorkspaceInvitePreviewResponse>(\n `/workspace-invites/${token}`,\n );\n return res.data ?? null;\n } catch {\n return null;\n }\n }\n\n /**\n * Accept a workspace invite on behalf of the authenticated user.\n *\n * The caller's JWT email must match the invite email (case-insensitive).\n *\n * Error codes:\n * - `INVALID_TOKEN` (404) — token not found.\n * - `EXPIRED` (410) — invite TTL elapsed.\n * - `REVOKED` (409) — invite was revoked.\n * - `ALREADY_ACCEPTED` (409) — already used.\n * - `EMAIL_MISMATCH` (422) — JWT email differs from invite email.\n *\n * `POST /workspace-invites/:token/accept`\n */\n async accept(token: string): Promise<AcceptWorkspaceInviteResponse> {\n return this.http.post<AcceptWorkspaceInviteResponse>(\n `/workspace-invites/${token}/accept`,\n {},\n );\n }\n}\n","/**\n * Workspace Members — per-workspace user roster.\n *\n * Endpoints:\n * GET /workspaces/:id/members\n * POST /workspaces/:id/members\n * PATCH /workspaces/:id/members/:user_id\n * DELETE /workspaces/:id/members/:user_id\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\n/** Role a user can hold within a workspace. */\nexport type WorkspaceRole = \"owner\" | \"admin\" | \"member\" | \"viewer\";\n\n/**\n * Workspace member as returned by `list` — includes denormalised user fields\n * for display.\n */\nexport interface WorkspaceMember {\n user_id: string;\n email: string | null;\n name: string | null;\n avatar_url: string | null;\n role: WorkspaceRole;\n joined_at: string | null;\n added_by: string | null;\n}\n\n/** Raw workspace_members row returned after add/update operations. */\nexport interface WorkspaceMemberRecord {\n user_id: string;\n workspace_id: string;\n role: WorkspaceRole;\n joined_at: string | null;\n added_by: string | null;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AddWorkspaceMemberParams {\n /** UUID of the tenant user to add. Must already be an org member. */\n user_id: string;\n /** Role to assign; defaults to `\"member\"`. */\n role?: WorkspaceRole;\n}\n\nexport interface UpdateWorkspaceMemberRoleParams {\n role: WorkspaceRole;\n}\n\n// ── Response envelopes ───────────────────────────────────────────────────────\n\nexport interface WorkspaceMemberListResponse {\n data: WorkspaceMember[];\n}\n\nexport interface WorkspaceMemberRecordResponse {\n data: WorkspaceMemberRecord;\n}\n\nexport interface WorkspaceMemberDeleteResponse {\n deleted: boolean;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class WorkspaceMembers {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List all members of a workspace.\n *\n * `GET /workspaces/:id/members`\n */\n async list(workspaceId: string): Promise<WorkspaceMember[]> {\n const res = await this.http.get<WorkspaceMemberListResponse>(\n `/workspaces/${workspaceId}/members`,\n );\n return res.data ?? (res as unknown as WorkspaceMember[]);\n }\n\n /**\n * Add an existing tenant user to a workspace.\n *\n * The `user_id` must already hold a `tenant_members` row for the parent org.\n * Use {@link WorkspaceInvites.create} to invite someone who is not yet an org\n * member.\n *\n * `POST /workspaces/:id/members`\n *\n * @throws `MiosaError` with code `NOT_TENANT_MEMBER` if the user is not an\n * org member.\n */\n async add(\n workspaceId: string,\n params: AddWorkspaceMemberParams,\n ): Promise<WorkspaceMemberRecord> {\n const res = await this.http.post<WorkspaceMemberRecordResponse>(\n `/workspaces/${workspaceId}/members`,\n params,\n );\n return res.data ?? (res as unknown as WorkspaceMemberRecord);\n }\n\n /**\n * Change a workspace member's role.\n *\n * `PATCH /workspaces/:id/members/:user_id`\n */\n async updateRole(\n workspaceId: string,\n userId: string,\n params: UpdateWorkspaceMemberRoleParams,\n ): Promise<WorkspaceMemberRecord> {\n const res = await this.http.patch<WorkspaceMemberRecordResponse>(\n `/workspaces/${workspaceId}/members/${userId}`,\n params,\n );\n return res.data ?? (res as unknown as WorkspaceMemberRecord);\n }\n\n /**\n * Remove a user from a workspace.\n *\n * The last `owner` of a workspace cannot be removed. Promote another member\n * to `owner` first using {@link updateRole}.\n *\n * `DELETE /workspaces/:id/members/:user_id`\n *\n * @throws `MiosaError` with code `LAST_OWNER` if the target is the sole owner.\n */\n async remove(\n workspaceId: string,\n userId: string,\n ): Promise<WorkspaceMemberDeleteResponse> {\n return this.http.delete<WorkspaceMemberDeleteResponse>(\n `/workspaces/${workspaceId}/members/${userId}`,\n );\n }\n}\n","import { HttpClient } from \"./http.js\";\nimport { Admin } from \"./resources/admin.js\";\nimport { AgentRunGroups } from \"./resources/agent-run-groups.js\";\nimport { AgentRuntimeProfiles } from \"./resources/agent-runtime-profiles.js\";\nimport { AgentRuns } from \"./resources/agent-runs.js\";\nimport { Analytics } from \"./resources/analytics.js\";\nimport { ApiKeys } from \"./resources/api-keys.js\";\nimport { AuditLog } from \"./resources/audit-log.js\";\nimport { Benchmarks } from \"./resources/benchmarks.js\";\nimport { BuilderSessions } from \"./resources/builder-sessions.js\";\nimport { Channels } from \"./resources/channels.js\";\nimport { Cloud } from \"./resources/cloud.js\";\nimport { CommandCenter } from \"./resources/command-center.js\";\nimport { Community } from \"./resources/community.js\";\nimport { Completions } from \"./resources/completions.js\";\nimport { Computers } from \"./resources/computers.js\";\nimport { Connectors } from \"./resources/connectors.js\";\nimport { Credits } from \"./resources/credits.js\";\nimport { CronJobs } from \"./resources/cron-jobs.js\";\nimport { Dashboard } from \"./resources/dashboard.js\";\nimport { Databases } from \"./resources/databases.js\";\nimport { Deployments } from \"./resources/deployments.js\";\nimport { Devices } from \"./resources/devices.js\";\nimport { DockerDeploy } from \"./resources/docker-deploy.js\";\nimport { EgressAudit } from \"./resources/egressAudit.js\";\nimport { EgressNetwork } from \"./resources/egressNetwork.js\";\nimport { EgressSecrets } from \"./resources/egressSecrets.js\";\nimport { Email } from \"./resources/email.js\";\nimport { Embeddings } from \"./resources/embeddings.js\";\nimport { ExternalKeys } from \"./resources/external-keys.js\";\nimport { FlatCustomDomains } from \"./resources/flat-custom-domains.js\";\nimport { Functions } from \"./resources/functions.js\";\nimport { HealthChecks } from \"./resources/health-checks.js\";\nimport { Integrations } from \"./resources/integrations.js\";\nimport { Mcp } from \"./resources/mcp.js\";\nimport { Models } from \"./resources/models.js\";\nimport { OpenComputers } from \"./resources/open-computers/index.js\";\nimport { ProjectAuth } from \"./resources/project-auth.js\";\nimport { ProjectIntegrations } from \"./resources/project-integrations.js\";\nimport { ProviderDefaults } from \"./resources/provider-defaults.js\";\nimport { Regions } from \"./resources/regions.js\";\nimport { RuntimeEnv } from \"./resources/runtime-env.js\";\nimport { RuntimeCapabilitiesResource } from \"./resources/runtime-capabilities.js\";\nimport { Sandboxes } from \"./resources/sandboxes.js\";\nimport { SandboxTemplates } from \"./resources/sandbox-templates.js\";\nimport { Settings } from \"./resources/settings.js\";\nimport { SnapshotsStandalone } from \"./resources/snapshots-standalone.js\";\nimport { Storage } from \"./resources/storage.js\";\nimport { OrgInvites } from \"./resources/org-invites.js\";\nimport { Tenant } from \"./resources/tenant.js\";\nimport { Templates } from \"./resources/templates.js\";\nimport { Usage } from \"./resources/usage.js\";\nimport { Volumes } from \"./resources/volumes.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport { WorkspaceInvites } from \"./resources/workspace-invites.js\";\nimport { WorkspaceMembers } from \"./resources/workspace-members.js\";\nimport type { MiosaClientConfig } from \"./types.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.miosa.ai/api/v1\";\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * The top-level MIOSA client.\n *\n * @example\n * ```ts\n * import { Miosa } from '@miosa/sdk';\n *\n * const miosa = new Miosa({ apiKey: 'msk_u_...' });\n *\n * const computer = await miosa.computers.create({ name: 'my-agent' });\n * await computer.start();\n * ```\n */\nexport class Miosa {\n /** Per-workspace user roster — list, add, update role, remove. */\n readonly workspaceMembers: WorkspaceMembers;\n\n /**\n * Workspace invite flow — create invite, list, revoke, preview, accept.\n * Sending to an email already in the org adds the user directly.\n */\n readonly workspaceInvites: WorkspaceInvites;\n\n /**\n * Org invite flow — create invite, list, revoke, preview, accept.\n * Requires admin/owner role for write operations.\n */\n readonly orgInvites: OrgInvites;\n\n /** Current tenant plan, limits, and live usage counters. */\n readonly tenant: Tenant;\n\n /** Datacenter regions, compute sizes, pricing, community templates. */\n readonly regions: Regions;\n\n /** Tenant settings — workspace config, branding, BYOK provider keys. */\n readonly settings: Settings;\n\n /** Aggregated platform dashboard and health overview. */\n readonly dashboard: Dashboard;\n\n /** Admin-scoped analytics overview and timeseries metrics. */\n readonly analytics: Analytics;\n\n /** Admin-scoped audit log event stream. */\n readonly auditLog: AuditLog;\n\n /** Current-period usage summary, sessions, and report queries. */\n readonly usage: Usage;\n\n /** Notification channels — Slack, Discord, email, etc. */\n readonly channels: Channels;\n\n /** Cloud accounts / BYOC / cloudburst control-plane state. */\n readonly cloud: Cloud;\n\n /** OAuth integrations — GitHub, Slack, Linear, Discord. */\n readonly integrations: Integrations;\n\n /** Per-project integrations (Stripe, Resend, Twilio, etc.). */\n readonly projectIntegrations: ProjectIntegrations;\n\n /** Built-in auth for generated apps inside sandboxes/deployments. */\n readonly projectAuth: ProjectAuth;\n\n /** BYOK encrypted per-user provider keys. */\n readonly externalKeys: ExternalKeys;\n\n /** Model Context Protocol — JSON-RPC dispatch + streaming channel. */\n readonly mcp: Mcp;\n\n /** Agent Runs — prompt dispatch into sandbox targets. */\n readonly agentRuns: AgentRuns;\n\n /** Agent Run Groups — durable multi-agent orchestration groups. */\n readonly agentRunGroups: AgentRunGroups;\n\n /** Agent runtime profiles — tenant/workspace defaults for sandbox/computer agents. */\n readonly agentRuntimeProfiles: AgentRuntimeProfiles;\n\n /** MIOSA Connect — provider connectors and runtime tokens. */\n readonly connectors: Connectors;\n\n /** Inherited runtime env — tenant/workspace/project defaults for agent runtimes. */\n readonly runtimeEnv: RuntimeEnv;\n\n /** Runtime capabilities — live backend feature and contract discovery. */\n readonly runtimeCapabilities: RuntimeCapabilitiesResource;\n\n /** Unified devices — sandbox workers and desktop computers behind one API. */\n readonly devices: Devices;\n\n /** Computer management — create, list, get, delete. */\n readonly computers: Computers;\n\n /** Sandboxes — native code-execution environments under `/sandboxes`. */\n readonly sandboxes: Sandboxes;\n\n /**\n * Deployments — publish from a sandbox to a stable production URL.\n * Versions, releases, rollback, custom domains.\n */\n readonly deployments: Deployments;\n\n /** Docker Deploy appliance hosts — one always-on workspace host, many apps. */\n readonly dockerDeploy: DockerDeploy;\n\n /** Credit balance and usage. */\n readonly credits: Credits;\n\n /** Admin surface (`/api/v1/admin/*`) — requires an admin credential. */\n readonly admin: Admin;\n\n /**\n * OpenComputers — BYOC host management: register your own machines and use\n * them like cloud computers (jobs, files, tunnels, AI agents, clusters).\n */\n readonly openComputers: OpenComputers;\n\n /** Managed Postgres databases — lifecycle, credentials, logs. */\n readonly databases: Databases;\n\n /** Managed object storage — buckets, objects, presigned URLs. */\n readonly storage: Storage;\n\n /** Persistent block storage volumes. */\n readonly volumes: Volumes;\n\n /** Tenant-scoped custom domains across all resources. */\n readonly customDomains: FlatCustomDomains;\n\n /** Serverless edge functions — CRUD and invoke. */\n readonly functions: Functions;\n\n /** Scheduled cron jobs — CRUD, pause/resume, execution history. */\n readonly cronJobs: CronJobs;\n\n /** Uptime health checks. */\n readonly healthChecks: HealthChecks;\n\n /** Outgoing tenant webhooks — CRUD, test, delivery history. */\n readonly webhooks: Webhooks;\n\n /** Sandbox templates — CRUD, build-spec schema, builds. */\n readonly sandboxTemplates: SandboxTemplates;\n\n /** Product-aware templates — catalog/readiness for sandbox, computer, appliance. */\n readonly templates: Templates;\n\n /** API key management — list, create, delete. */\n readonly apiKeys: ApiKeys;\n\n // ── P3 / P4 resources ──────────────────────────────────────────────────────\n\n /** Available LLM models via the intelligence gateway. */\n readonly models: Models;\n\n /** OpenAI-compatible text + chat completions (supports SSE streaming). */\n readonly completions: Completions;\n\n /** OpenAI-compatible embedding vectors. */\n readonly embeddings: Embeddings;\n\n /** Admin: fleet-wide + per-tenant LLM provider routing defaults. */\n readonly providerDefaults: ProviderDefaults;\n\n /** Admin: trigger + inspect platform benchmark runs. */\n readonly benchmarks: Benchmarks;\n\n /** Read-only views of the Optimal AI agent fleet. */\n readonly commandCenter: CommandCenter;\n\n /** Community template + agent catalog. */\n readonly community: Community;\n\n /** Admin email campaigns, templates, and inbox. */\n readonly email: Email;\n\n /** Builder UI session metadata. */\n readonly builderSessions: BuilderSessions;\n\n /** Admin: fleet-wide snapshot index. */\n readonly snapshotsStandalone: SnapshotsStandalone;\n\n // ── Egress (security) namespaces ───────────────────────────────────────────\n\n /** Encrypted secret + OAuth credential vault (`/egress/secrets`). */\n readonly secrets: EgressSecrets;\n\n /** Egress allowlist + policies — host-level firewall (`/egress/policies`). */\n readonly network: EgressNetwork;\n\n /** Egress audit log — every outbound request, paginated query + tail. */\n readonly audit: EgressAudit;\n\n private readonly http: HttpClient;\n\n constructor(config: MiosaClientConfig) {\n if (!config.apiKey) {\n throw new Error(\n 'Miosa: apiKey is required. Pass { apiKey: \"msk_u_...\" } or set MIOSA_API_KEY.',\n );\n }\n\n if (!config.apiKey.startsWith(\"msk_\")) {\n // Soft warning — allow non-standard keys in tests / self-hosted\n console.warn(\n '[miosa] Warning: API key does not start with \"msk_\". Double-check your key.',\n );\n }\n\n this.http = new HttpClient({\n baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,\n apiKey: config.apiKey,\n timeout: config.timeout ?? DEFAULT_TIMEOUT,\n maxRetries: config.maxRetries ?? DEFAULT_MAX_RETRIES,\n });\n\n this.workspaceMembers = new WorkspaceMembers(this.http);\n this.workspaceInvites = new WorkspaceInvites(this.http);\n this.orgInvites = new OrgInvites(this.http);\n this.tenant = new Tenant(this.http);\n this.regions = new Regions(this.http);\n this.settings = new Settings(this.http);\n this.dashboard = new Dashboard(this.http);\n this.analytics = new Analytics(this.http);\n this.auditLog = new AuditLog(this.http);\n this.usage = new Usage(this.http);\n this.channels = new Channels(this.http);\n this.cloud = new Cloud(this.http);\n this.integrations = new Integrations(this.http);\n this.projectIntegrations = new ProjectIntegrations(this.http);\n this.projectAuth = new ProjectAuth(this.http);\n this.externalKeys = new ExternalKeys(this.http);\n this.mcp = new Mcp(this.http);\n this.agentRuns = new AgentRuns(this.http);\n this.agentRunGroups = new AgentRunGroups(this.http);\n this.agentRuntimeProfiles = new AgentRuntimeProfiles(this.http);\n this.connectors = new Connectors(this.http);\n this.runtimeEnv = new RuntimeEnv(this.http);\n this.runtimeCapabilities = new RuntimeCapabilitiesResource(this.http);\n this.devices = new Devices(this.http);\n this.computers = new Computers(this.http);\n this.sandboxes = new Sandboxes(this.http);\n this.deployments = new Deployments(this.http);\n this.dockerDeploy = new DockerDeploy(this.http);\n this.credits = new Credits(this.http);\n this.admin = new Admin(this.http);\n this.openComputers = new OpenComputers(this.http);\n this.databases = new Databases(this.http);\n this.storage = new Storage(this.http);\n this.volumes = new Volumes(this.http);\n this.customDomains = new FlatCustomDomains(this.http);\n this.functions = new Functions(this.http);\n this.cronJobs = new CronJobs(this.http);\n this.healthChecks = new HealthChecks(this.http);\n this.webhooks = new Webhooks(this.http);\n this.sandboxTemplates = new SandboxTemplates(this.http);\n this.templates = new Templates(this.http);\n this.apiKeys = new ApiKeys(this.http);\n this.models = new Models(this.http);\n this.completions = new Completions(this.http);\n this.embeddings = new Embeddings(this.http);\n this.providerDefaults = new ProviderDefaults(this.http);\n this.benchmarks = new Benchmarks(this.http);\n this.commandCenter = new CommandCenter(this.http);\n this.community = new Community(this.http);\n this.email = new Email(this.http);\n this.builderSessions = new BuilderSessions(this.http);\n this.snapshotsStandalone = new SnapshotsStandalone(this.http);\n // Egress (security) namespaces\n this.secrets = new EgressSecrets(this.http);\n this.network = new EgressNetwork(this.http);\n this.audit = new EgressAudit(this.http);\n }\n}\n","import type {\n AgentRunCreateParams,\n AgentRunOutputContract,\n AgentRunTargetKind,\n} from \"./resources/agent-runs.js\";\n\nexport type AgentBuildKind =\n | \"landing_page\"\n | \"website\"\n | \"lead_magnet\"\n | \"webinar\"\n | \"slides_deck\"\n | \"email_sequence\"\n | \"social_content\"\n | \"ad_creative\"\n | \"booking_page\"\n | \"brand_identity\"\n | \"offer\"\n | \"program\"\n | \"podcast\"\n | \"sales_script\"\n | \"campaign\"\n | \"challenge\"\n | \"character\"\n | \"custom\";\n\nexport interface AgentBuildArtifactSpec {\n kind: string;\n path: string;\n mime_type?: string;\n name?: string;\n downloadable?: boolean;\n previewable?: boolean;\n required?: boolean;\n}\n\nexport interface AgentBuildInputRef {\n kind?: string;\n title?: string;\n ref?: string;\n file_ref?: string;\n drive_asset_id?: string;\n filename?: string;\n content_type?: string;\n size_bytes?: number;\n public_url?: string;\n text?: string;\n path?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface AgentBuildKindSpec {\n kind: AgentBuildKind;\n label: string;\n artifactType: string;\n runtimeTemplate: Record<string, unknown>;\n requestedOutputs: string[];\n plannerDocumentKinds: string[];\n artifacts: AgentBuildArtifactSpec[];\n designResearchRequired: boolean;\n previewPort?: number;\n}\n\nexport interface AgentBuildPlannerDocument {\n kind: string;\n title: string;\n content_markdown?: string;\n contentMarkdown?: string;\n path?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AgentBuildExecutionPacket {\n version: string;\n run_type: AgentBuildKind;\n build_kind: AgentBuildKind;\n artifact_type: string;\n title: string;\n goal: string;\n source_refs: unknown[];\n input_refs: AgentBuildInputRef[];\n context_markdown: string;\n planner_documents: AgentBuildPlannerDocument[];\n requested_outputs: string[];\n quality_rules: string[];\n runtime_profile_id?: string;\n output_contract: AgentRunOutputContract;\n runtime_instructions: Record<string, unknown>;\n metadata: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CreateAgentBuildPacketParams {\n runType?: string;\n buildKind?: string;\n artifactType?: string;\n title: string;\n goal: string;\n contextMarkdown?: string;\n plannerDocuments?: AgentBuildPlannerDocument[];\n requestedOutputs?: string[];\n qualityRules?: string[];\n sourceRefs?: unknown[];\n inputRefs?: AgentBuildInputRef[];\n runtimeProfileId?: string;\n runtimeTemplate?: Record<string, unknown>;\n outputContract?: AgentRunOutputContract;\n artifacts?: AgentBuildArtifactSpec[];\n outputRoot?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CreateBuildAgentRunParams extends CreateAgentBuildPacketParams {\n targetKind?: AgentRunTargetKind;\n targetId?: string;\n sandboxId?: string;\n computerId?: string;\n provider?: string;\n model?: string;\n prompt?: string;\n cwd?: string;\n timeout?: number;\n wait?: boolean;\n env?: Record<string, string>;\n agentRuntimeProfileId?: string;\n externalWorkspaceId?: string;\n externalUserId?: string;\n externalProjectId?: string;\n approvalPolicy?: AgentRunCreateParams[\"approvalPolicy\"];\n capabilityRequirements?: string[];\n}\n\nexport const DEFAULT_AGENT_BUILD_PACKET_VERSION = \"2026-06-19\";\nexport const DEFAULT_AGENT_BUILD_OUTPUT_ROOT = \"/workspace/output\";\nexport const DEFAULT_AGENT_BUILD_INPUT_ROOT = \"/workspace/inputs\";\n\nconst NEXTJS_RUNTIME_TEMPLATE = {\n kind: \"nextjs_app\",\n template_id: \"nextjs\",\n workspace_root: \"/workspace\",\n app_dir: \"/workspace/app\",\n output_dir: DEFAULT_AGENT_BUILD_OUTPUT_ROOT,\n expected_preview_port: 3000,\n start_command: \"npm run dev -- --hostname 0.0.0.0 --port 3000\",\n build_command: \"npm run build\",\n} as const;\n\nfunction artifactBundle(kind: string): Record<string, unknown> {\n return {\n kind,\n workspace_root: \"/workspace\",\n output_dir: DEFAULT_AGENT_BUILD_OUTPUT_ROOT,\n };\n}\n\nconst COMMON_PLANNER_DOCUMENT_KINDS = [\n \"input_bundle\",\n \"client_grounding\",\n \"brand_identity\",\n \"strategy_context\",\n \"quality_rules\",\n];\n\nconst BUILD_KIND_ALIASES: Record<string, AgentBuildKind> = {\n ad: \"ad_creative\",\n ads: \"ad_creative\",\n adcreative: \"ad_creative\",\n ad_creative: \"ad_creative\",\n booking: \"booking_page\",\n booking_form: \"booking_page\",\n booking_page: \"booking_page\",\n brand: \"brand_identity\",\n brand_character: \"character\",\n brand_identity: \"brand_identity\",\n campaign: \"campaign\",\n campaign_plan: \"campaign\",\n carousel: \"social_content\",\n challenge: \"challenge\",\n character: \"character\",\n character_pack: \"character\",\n content: \"social_content\",\n content_batch: \"social_content\",\n course: \"program\",\n email: \"email_sequence\",\n email_sequence: \"email_sequence\",\n email_sms_sequence: \"email_sequence\",\n funnel: \"landing_page\",\n landing: \"landing_page\",\n landing_page: \"landing_page\",\n lead_magnet: \"lead_magnet\",\n leadmagnet: \"lead_magnet\",\n offer: \"offer\",\n offer_stack: \"offer\",\n online_course: \"program\",\n page: \"landing_page\",\n podcast: \"podcast\",\n podcast_audio: \"podcast\",\n program: \"program\",\n sales_page: \"landing_page\",\n sales_script: \"sales_script\",\n sales_script_builder: \"sales_script\",\n salesscript: \"sales_script\",\n site: \"website\",\n slides: \"slides_deck\",\n slides_deck: \"slides_deck\",\n social: \"social_content\",\n social_content: \"social_content\",\n social_media: \"social_content\",\n social_media_post: \"social_content\",\n text_card: \"social_content\",\n webinar: \"webinar\",\n website: \"website\",\n};\n\nfunction spec(\n kind: AgentBuildKind,\n label: string,\n artifactType: string,\n runtimeTemplate: Record<string, unknown>,\n artifacts: AgentBuildArtifactSpec[],\n options: Partial<\n Pick<\n AgentBuildKindSpec,\n \"requestedOutputs\" | \"plannerDocumentKinds\" | \"designResearchRequired\" | \"previewPort\"\n >\n > = {},\n): AgentBuildKindSpec {\n const resolved: AgentBuildKindSpec = {\n kind,\n label,\n artifactType,\n runtimeTemplate,\n requestedOutputs: options.requestedOutputs ?? [\"requested deliverables\", \"manifest\"],\n plannerDocumentKinds: options.plannerDocumentKinds ?? COMMON_PLANNER_DOCUMENT_KINDS,\n artifacts,\n designResearchRequired: options.designResearchRequired ?? false,\n };\n if (options.previewPort !== undefined) resolved.previewPort = options.previewPort;\n return resolved;\n}\n\nexport const AGENT_BUILD_KIND_SPECS: Record<AgentBuildKind, AgentBuildKindSpec> = {\n landing_page: spec(\n \"landing_page\",\n \"Landing page\",\n \"landing_page\",\n NEXTJS_RUNTIME_TEMPLATE,\n [\n { kind: \"html\", path: \"landing-page.html\", mime_type: \"text/html\", name: \"Landing page\", previewable: true },\n { kind: \"source\", path: \"source.zip\", mime_type: \"application/zip\", name: \"Source files\" },\n ],\n { requestedOutputs: [\"Next.js landing page\", \"preview URL\", \"source files\"], designResearchRequired: true, previewPort: 3000 },\n ),\n website: spec(\"website\", \"Website\", \"website\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"html\", path: \"website.html\", mime_type: \"text/html\", name: \"Website\", previewable: true },\n { kind: \"source\", path: \"source.zip\", mime_type: \"application/zip\", name: \"Source files\" },\n ], { requestedOutputs: [\"Next.js website\", \"preview URL\", \"source files\"], designResearchRequired: true, previewPort: 3000 }),\n lead_magnet: spec(\"lead_magnet\", \"Lead magnet\", \"lead_magnet\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"pdf\", path: \"lead-magnet.pdf\", mime_type: \"application/pdf\", name: \"Lead magnet PDF\", previewable: true },\n { kind: \"html\", path: \"opt-in-page.html\", mime_type: \"text/html\", name: \"Opt-in page\", previewable: true },\n ], { requestedOutputs: [\"PDF lead magnet\", \"opt-in page\", \"source files\"], designResearchRequired: true, previewPort: 3000 }),\n webinar: spec(\"webinar\", \"Webinar\", \"webinar\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"html\", path: \"webinar-page.html\", mime_type: \"text/html\", name: \"Webinar page\", previewable: true },\n { kind: \"markdown\", path: \"webinar-script.md\", mime_type: \"text/markdown\", name: \"Webinar script\" },\n ], { requestedOutputs: [\"webinar registration page\", \"script\", \"slides\"], designResearchRequired: true, previewPort: 3000 }),\n slides_deck: spec(\"slides_deck\", \"Slides deck\", \"slides_deck\", artifactBundle(\"html_deck\"), [\n { kind: \"html\", path: \"deck.html\", mime_type: \"text/html\", name: \"Slide deck\", previewable: true },\n ], { designResearchRequired: true }),\n email_sequence: spec(\"email_sequence\", \"Email sequence\", \"email_sms_sequence\", artifactBundle(\"email_bundle\"), [\n { kind: \"markdown\", path: \"email-sequence.md\", mime_type: \"text/markdown\", name: \"Email sequence\", previewable: true },\n ]),\n social_content: spec(\"social_content\", \"Social content\", \"social_media_post\", artifactBundle(\"html_image_bundle\"), [\n { kind: \"html\", path: \"social-carousel.html\", mime_type: \"text/html\", name: \"Social carousel\", previewable: true },\n { kind: \"markdown\", path: \"captions.md\", mime_type: \"text/markdown\", name: \"Caption bank\" },\n ], { designResearchRequired: true }),\n ad_creative: spec(\"ad_creative\", \"Ad creative\", \"ad_creative\", artifactBundle(\"html_image_bundle\"), [\n { kind: \"html\", path: \"ad-creative.html\", mime_type: \"text/html\", name: \"Ad creative previews\", previewable: true },\n ], { designResearchRequired: true }),\n booking_page: spec(\"booking_page\", \"Booking page\", \"booking_page\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"html\", path: \"booking-page.html\", mime_type: \"text/html\", name: \"Booking page\", previewable: true },\n ], { requestedOutputs: [\"booking page\", \"confirmation copy\", \"source files\"], designResearchRequired: true, previewPort: 3000 }),\n brand_identity: spec(\"brand_identity\", \"Brand identity\", \"brand_identity\", artifactBundle(\"brand_bundle\"), [\n { kind: \"markdown\", path: \"brand-guide.md\", mime_type: \"text/markdown\", name: \"Brand guide\", previewable: true },\n ], { designResearchRequired: true }),\n offer: spec(\"offer\", \"Offer\", \"offer\", artifactBundle(\"offer_bundle\"), [\n { kind: \"markdown\", path: \"offer-stack.md\", mime_type: \"text/markdown\", name: \"Offer stack\", previewable: true },\n ]),\n program: spec(\"program\", \"Program\", \"program_lms\", artifactBundle(\"program_lms\"), [\n { kind: \"html\", path: \"program.html\", mime_type: \"text/html\", name: \"Program preview\", previewable: true },\n { kind: \"markdown\", path: \"program.md\", mime_type: \"text/markdown\", name: \"Program outline\" },\n ], { designResearchRequired: true }),\n podcast: spec(\"podcast\", \"Podcast\", \"podcast_audio\", artifactBundle(\"podcast_audio\"), [\n { kind: \"html\", path: \"podcast.html\", mime_type: \"text/html\", name: \"Podcast preview\", previewable: true },\n { kind: \"markdown\", path: \"show-notes.md\", mime_type: \"text/markdown\", name: \"Show notes\" },\n ]),\n sales_script: spec(\"sales_script\", \"Sales script\", \"sales_script\", artifactBundle(\"script_bundle\"), [\n { kind: \"markdown\", path: \"sales-script.md\", mime_type: \"text/markdown\", name: \"Sales script\", previewable: true },\n ]),\n campaign: spec(\"campaign\", \"Campaign\", \"campaign\", artifactBundle(\"campaign_bundle\"), [\n { kind: \"markdown\", path: \"campaign-plan.md\", mime_type: \"text/markdown\", name: \"Campaign plan\", previewable: true },\n { kind: \"html\", path: \"campaign-assets.html\", mime_type: \"text/html\", name: \"Campaign assets\", previewable: true },\n ], { designResearchRequired: true }),\n challenge: spec(\"challenge\", \"Challenge\", \"challenge\", artifactBundle(\"challenge_bundle\"), [\n { kind: \"markdown\", path: \"challenge-plan.md\", mime_type: \"text/markdown\", name: \"Challenge plan\", previewable: true },\n ]),\n character: spec(\"character\", \"Character pack\", \"brand_character\", artifactBundle(\"character_bundle\"), [\n { kind: \"markdown\", path: \"character-pack.md\", mime_type: \"text/markdown\", name: \"Character pack\", previewable: true },\n ], { designResearchRequired: true }),\n custom: spec(\"custom\", \"Custom build\", \"artifact\", artifactBundle(\"artifact_bundle\"), []),\n};\n\nfunction normalizeBuildKind(value: string | undefined): string {\n return (value ?? \"\")\n .trim()\n .toLowerCase()\n .replace(/[\\s-]+/g, \"_\")\n .replace(/[^a-z0-9_]/g, \"\");\n}\n\nexport function resolveAgentBuildKind(\n value: string | undefined,\n fallback: AgentBuildKind = \"custom\",\n): AgentBuildKind {\n const normalized = normalizeBuildKind(value);\n if (!normalized) return fallback;\n return BUILD_KIND_ALIASES[normalized] ?? fallback;\n}\n\nexport function getAgentBuildKindSpec(value: string | undefined): AgentBuildKindSpec {\n return AGENT_BUILD_KIND_SPECS[resolveAgentBuildKind(value)];\n}\n\nfunction normalizeArtifactPath(path: string, outputRoot: string): string {\n return path.startsWith(\"/\") ? path : `${outputRoot}/${path}`;\n}\n\nexport function createAgentBuildOutputContract(\n buildKind: string | undefined,\n options: {\n artifactType?: string;\n artifacts?: AgentBuildArtifactSpec[];\n outputContract?: AgentRunOutputContract;\n outputRoot?: string;\n } = {},\n): AgentRunOutputContract {\n if (options.outputContract) return options.outputContract;\n const spec = getAgentBuildKindSpec(buildKind);\n const outputRoot = options.outputRoot ?? DEFAULT_AGENT_BUILD_OUTPUT_ROOT;\n const artifacts = [\n {\n path: `${outputRoot}/manifest.json`,\n kind: \"json\",\n mime_type: \"application/json\",\n name: \"Manifest\",\n downloadable: true,\n },\n ...(options.artifacts ?? spec.artifacts).map((artifact) => ({\n ...artifact,\n path: normalizeArtifactPath(artifact.path, outputRoot),\n downloadable: artifact.downloadable ?? true,\n })),\n ];\n const contract = withoutUndefined({\n write_files_under: outputRoot,\n manifest: `${outputRoot}/manifest.json`,\n planner_documents_under: \"/workspace/planner\",\n inputs_under: DEFAULT_AGENT_BUILD_INPUT_ROOT,\n artifact_type: options.artifactType ?? spec.artifactType,\n required_files: [`${outputRoot}/manifest.json`],\n artifacts,\n preview_port: spec.previewPort,\n include_downloadable_artifacts: true,\n });\n return contract as AgentRunOutputContract;\n}\n\nfunction normalizePlannerDocuments(\n documents: AgentBuildPlannerDocument[] | undefined,\n): AgentBuildPlannerDocument[] {\n return (documents ?? []).map((document) => ({\n ...document,\n content_markdown: document.content_markdown ?? document.contentMarkdown ?? \"\",\n }));\n}\n\nfunction withoutUndefined<T extends Record<string, unknown>>(input: T): T {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n ) as T;\n}\n\nexport function createAgentBuildExecutionPacket(\n params: CreateAgentBuildPacketParams,\n): AgentBuildExecutionPacket {\n const buildKind = resolveAgentBuildKind(params.buildKind ?? params.runType);\n const spec = AGENT_BUILD_KIND_SPECS[buildKind];\n const artifactType = params.artifactType ?? spec.artifactType;\n const runtimeTemplate = params.runtimeTemplate ?? spec.runtimeTemplate;\n const outputOptions: {\n artifactType?: string;\n artifacts?: AgentBuildArtifactSpec[];\n outputContract?: AgentRunOutputContract;\n outputRoot?: string;\n } = { artifactType };\n if (params.artifacts !== undefined) outputOptions.artifacts = params.artifacts;\n if (params.outputContract !== undefined) {\n outputOptions.outputContract = params.outputContract;\n }\n if (params.outputRoot !== undefined) outputOptions.outputRoot = params.outputRoot;\n const outputContract = createAgentBuildOutputContract(buildKind, outputOptions);\n const inputRefs = params.inputRefs ?? [];\n\n const packet: AgentBuildExecutionPacket = {\n version: DEFAULT_AGENT_BUILD_PACKET_VERSION,\n run_type: buildKind,\n build_kind: buildKind,\n artifact_type: artifactType,\n title: params.title,\n goal: params.goal,\n source_refs: params.sourceRefs ?? [],\n input_refs: inputRefs,\n context_markdown: params.contextMarkdown ?? \"\",\n planner_documents: normalizePlannerDocuments(params.plannerDocuments),\n requested_outputs: params.requestedOutputs ?? spec.requestedOutputs,\n quality_rules: params.qualityRules ?? [],\n output_contract: outputContract,\n runtime_instructions: {\n agent: \"claude\",\n template: runtimeTemplate,\n input_materialization: {\n directory: DEFAULT_AGENT_BUILD_INPUT_ROOT,\n manifest: `${DEFAULT_AGENT_BUILD_INPUT_ROOT}/inputs.json`,\n },\n design_research: {\n provider: \"refero\",\n required: spec.designResearchRequired,\n },\n },\n metadata: {\n ...(params.metadata ?? {}),\n build_kind: buildKind,\n artifact_type: artifactType,\n build_target: runtimeTemplate,\n runtime_template: runtimeTemplate,\n output_contract: outputContract,\n input_refs: inputRefs,\n design_research_required: spec.designResearchRequired,\n planner_document_kinds: spec.plannerDocumentKinds,\n },\n };\n if (params.runtimeProfileId) packet.runtime_profile_id = params.runtimeProfileId;\n return packet;\n}\n\nexport function createAgentBuildPrompt(packet: AgentBuildExecutionPacket): string {\n return [\n `Build: ${packet.title}`,\n \"\",\n packet.goal,\n \"\",\n `Materialize input_refs under ${DEFAULT_AGENT_BUILD_INPUT_ROOT}.`,\n \"Use the execution packet, input bundle, planner documents, brand/context notes, and quality rules.\",\n `Write every deliverable under ${packet.output_contract.write_files_under}.`,\n `Write a JSON manifest to ${packet.output_contract.manifest}.`,\n \"Do not expose secrets. Do not publish externally unless the approval policy allows it.\",\n ].join(\"\\n\");\n}\n\nexport function createBuildAgentRunParams(\n params: CreateBuildAgentRunParams,\n): AgentRunCreateParams {\n const runtimeProfileId = params.agentRuntimeProfileId ?? params.runtimeProfileId;\n const packetParams: CreateAgentBuildPacketParams = { ...params };\n if (runtimeProfileId !== undefined) packetParams.runtimeProfileId = runtimeProfileId;\n const packet = createAgentBuildExecutionPacket(packetParams);\n\n return withoutUndefined({\n prompt: params.prompt ?? createAgentBuildPrompt(packet),\n targetKind: params.targetKind ?? (params.computerId ? \"computer\" : \"sandbox\"),\n targetId: params.targetId,\n sandboxId: params.sandboxId,\n computerId: params.computerId,\n provider: params.provider ?? \"claude\",\n model: params.model,\n cwd: params.cwd ?? \"/workspace\",\n timeout: params.timeout ?? 1800,\n wait: params.wait ?? false,\n env: params.env,\n agentRuntimeProfileId: runtimeProfileId,\n externalWorkspaceId: params.externalWorkspaceId,\n externalUserId: params.externalUserId,\n externalProjectId: params.externalProjectId,\n executionPacket: packet,\n outputContract: packet.output_contract,\n approvalPolicy: params.approvalPolicy ?? {\n publish: \"manual\",\n external_write: \"manual\",\n destructive_actions: \"forbidden\",\n },\n capabilityRequirements: params.capabilityRequirements ?? [\n \"filesystem\",\n \"shell\",\n \"artifact_downloads\",\n ],\n metadata: {\n ...(params.metadata ?? {}),\n build_kind: packet.build_kind,\n artifact_type: packet.artifact_type,\n },\n } as Record<string, unknown>) as unknown as AgentRunCreateParams;\n}\n","/**\n * AppAuth — end-user authentication client for apps deployed on MIOSA.\n *\n * Reads AUTH_URL and AUTH_JWT_SECRET from the process environment at\n * construction time. Both are injected automatically when a sandbox or\n * deployment boots.\n *\n * @example\n * ```ts\n * import { AppAuth } from '@miosa/sdk';\n *\n * const auth = new AppAuth({ resourceType: 'deployment', resourceId: 'dep_abc' });\n *\n * const session = await auth.signup('alice@example.com', 'hunter2');\n * console.log(session.userId, session.token);\n *\n * const verified = await auth.verifyToken(session.token);\n * console.log(verified.sub);\n * ```\n */\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\n/** Branded string types for domain safety. */\nexport type UserId = string & { readonly __brand: \"UserId\" };\nexport type AuthToken = string & { readonly __brand: \"AuthToken\" };\n\n/** Response returned by signup, login, verify, and me. */\nexport interface AppAuthSession {\n userId: UserId;\n token: AuthToken;\n expiresAt: string;\n}\n\n/** Decoded JWT payload returned by verifyToken. */\nexport interface AppAuthTokenPayload {\n sub: string;\n exp: number;\n iat: number;\n [key: string]: unknown;\n}\n\nexport type AppAuthResourceType = \"sandbox\" | \"deployment\";\n\nexport interface AppAuthConfig {\n /** Resource type — \"sandbox\" or \"deployment\". */\n resourceType: AppAuthResourceType;\n /** Resource ID (sandbox ID or deployment ID). */\n resourceId: string;\n /**\n * Base URL of the app-auth service. Defaults to the AUTH_URL environment\n * variable, which is injected at boot inside every MIOSA sandbox/deployment.\n */\n authUrl?: string;\n /**\n * HS256 secret for verifyToken(). Defaults to AUTH_JWT_SECRET from env.\n * Only needed if you call verifyToken() server-side.\n */\n jwtSecret?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrapSession(data: unknown): AppAuthSession {\n const d = (\n data && typeof data === \"object\" && \"data\" in (data as object)\n ? (data as Record<string, unknown>).data\n : data\n ) as Record<string, unknown>;\n\n const userId =\n (d.user_id as string | undefined) ?? (d.userId as string | undefined);\n const token =\n (d.token as string | undefined) ?? (d.access_token as string | undefined);\n const expiresAt =\n (d.expires_at as string | undefined) ??\n (d.expiresAt as string | undefined) ??\n \"\";\n\n if (!userId || !token) {\n throw new Error(\n `AppAuth: unexpected response shape — got: ${JSON.stringify(d)}`,\n );\n }\n\n return {\n userId: userId as UserId,\n token: token as AuthToken,\n expiresAt,\n };\n}\n\nfunction base64UrlDecode(s: string): Uint8Array {\n const padded = s.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const bin = atob(padded);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) {\n bytes[i] = bin.charCodeAt(i);\n }\n return bytes;\n}\n\n// ── AppAuth client ─────────────────────────────────────────────────────────────\n\nexport class AppAuth {\n private readonly baseUrl: string;\n private readonly resourceType: AppAuthResourceType;\n private readonly resourceId: string;\n private readonly jwtSecret: string | undefined;\n\n constructor(config: AppAuthConfig) {\n const authUrl =\n config.authUrl ??\n (typeof process !== \"undefined\" ? process.env[\"AUTH_URL\"] : undefined);\n if (!authUrl) {\n throw new Error(\n \"AppAuth: authUrl is required. Pass authUrl in config or set AUTH_URL env var.\",\n );\n }\n if (!config.resourceType || !config.resourceId) {\n throw new Error(\"AppAuth: resourceType and resourceId are required.\");\n }\n this.baseUrl = authUrl.replace(/\\/$/, \"\");\n this.resourceType = config.resourceType;\n this.resourceId = config.resourceId;\n this.jwtSecret =\n config.jwtSecret ??\n (typeof process !== \"undefined\"\n ? process.env[\"AUTH_JWT_SECRET\"]\n : undefined);\n }\n\n /** POST /app-auth/:resourceType/:resourceId/signup */\n async signup(email: string, password: string): Promise<AppAuthSession> {\n return unwrapSession(await this._post(\"signup\", { email, password }));\n }\n\n /** POST /app-auth/:resourceType/:resourceId/login */\n async login(email: string, password: string): Promise<AppAuthSession> {\n return unwrapSession(await this._post(\"login\", { email, password }));\n }\n\n /**\n * POST /app-auth/:resourceType/:resourceId/verify\n * Verifies an email confirmation or magic-link token issued by the backend.\n */\n async verify(token: string): Promise<AppAuthSession> {\n return unwrapSession(await this._post(\"verify\", { token }));\n }\n\n /** POST /app-auth/:resourceType/:resourceId/password-reset */\n async passwordReset(email: string): Promise<{ ok: boolean }> {\n const data = await this._post(\"password-reset\", { email });\n return { ok: true, ...(data as object) };\n }\n\n /**\n * POST /app-auth/:resourceType/:resourceId/logout\n * Invalidates the given bearer token server-side.\n */\n async logout(token: AuthToken): Promise<{ ok: boolean }> {\n const data = await this._post(\"logout\", { token });\n return { ok: true, ...(data as object) };\n }\n\n /**\n * GET /app-auth/:resourceType/:resourceId/me\n * Returns the session for the bearer token.\n */\n async me(token: AuthToken): Promise<AppAuthSession> {\n const url = `${this.baseUrl}/app-auth/${this.resourceType}/${this.resourceId}/me`;\n const resp = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n });\n if (!resp.ok) {\n const body = await resp.text();\n throw new Error(`AppAuth me failed (${resp.status}): ${body}`);\n }\n return unwrapSession(await resp.json());\n }\n\n /**\n * Verifies a JWT token locally using HS256 + AUTH_JWT_SECRET.\n *\n * Does NOT make a network call. Throws if the signature is invalid or the\n * token is expired. Returns the decoded payload on success.\n */\n async verifyToken(token: string): Promise<AppAuthTokenPayload> {\n if (!this.jwtSecret) {\n throw new Error(\n \"AppAuth.verifyToken: jwtSecret is required. Pass jwtSecret in config or set AUTH_JWT_SECRET env var.\",\n );\n }\n\n const parts = token.split(\".\");\n if (parts.length !== 3) {\n throw new Error(\"AppAuth.verifyToken: malformed JWT — expected 3 parts\");\n }\n\n const [headerB64, payloadB64, signatureB64] = parts as [\n string,\n string,\n string,\n ];\n\n // Decode payload first to check expiry before expensive crypto.\n const payloadJson = new TextDecoder().decode(base64UrlDecode(payloadB64));\n const payload = JSON.parse(payloadJson) as AppAuthTokenPayload;\n\n const now = Math.floor(Date.now() / 1000);\n if (typeof payload.exp === \"number\" && payload.exp < now) {\n throw new Error(\n `AppAuth.verifyToken: token expired at ${new Date(payload.exp * 1000).toISOString()}`,\n );\n }\n\n // Verify HS256 signature using WebCrypto (available in Node >=18 and all modern browsers).\n const encoder = new TextEncoder();\n const signingInput = `${headerB64}.${payloadB64}`;\n const secretBytes = encoder.encode(this.jwtSecret);\n\n const key = await crypto.subtle.importKey(\n \"raw\",\n secretBytes,\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"verify\"],\n );\n\n const signatureBytes = base64UrlDecode(signatureB64).buffer as ArrayBuffer;\n const valid = await crypto.subtle.verify(\n \"HMAC\",\n key,\n signatureBytes,\n encoder.encode(signingInput),\n );\n\n if (!valid) {\n throw new Error(\"AppAuth.verifyToken: invalid JWT signature\");\n }\n\n return payload;\n }\n\n // ── Private ──────────────────────────────────────────────────────────────────\n\n private async _post(\n action: string,\n body: Record<string, unknown>,\n ): Promise<unknown> {\n const url = `${this.baseUrl}/app-auth/${this.resourceType}/${this.resourceId}/${action}`;\n const resp = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!resp.ok) {\n const text = await resp.text();\n throw new Error(`AppAuth ${action} failed (${resp.status}): ${text}`);\n }\n return resp.json();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/admin.ts","../src/resources/run-groups.ts","../src/resources/agent-runtime-profiles.ts","../src/resources/runs.ts","../src/resources/analytics.ts","../src/resources/api-keys.ts","../src/resources/audit-log.ts","../src/resources/benchmarks.ts","../src/resources/builder-sessions.ts","../src/resources/channels.ts","../src/resources/cloud.ts","../src/resources/command-center.ts","../src/resources/community.ts","../src/resources/completions.ts","../src/resources/checkpoints.ts","../src/resources/computer-auto-stop.ts","../src/resources/computer-env.ts","../src/resources/computer-logs.ts","../src/resources/computer-osa.ts","../src/resources/computer-ports.ts","../src/resources/computer-terminal.ts","../src/resources/computer-volumes.ts","../src/resources/connectors.ts","../src/resources/custom_domains.ts","../src/resources/desktop.ts","../src/resources/egressAudit.ts","../src/resources/egressNetwork.ts","../src/resources/egressSecrets.ts","../src/resources/events.ts","../src/resources/exec.ts","../src/resources/files.ts","../src/resources/network_policy.ts","../src/resources/computer.ts","../src/resources/computers.ts","../src/resources/credits.ts","../src/resources/cron-jobs.ts","../src/resources/dashboard.ts","../src/resources/databases.ts","../src/resources/deployments.ts","../src/resources/devices.ts","../src/resources/docker-deploy.ts","../src/resources/email.ts","../src/resources/embeddings.ts","../src/resources/external-keys.ts","../src/resources/flat-custom-domains.ts","../src/resources/functions.ts","../src/resources/health-checks.ts","../src/resources/integrations.ts","../src/resources/mcp.ts","../src/resources/models.ts","../src/resources/open-computers/agents.ts","../src/resources/open-computers/apps.ts","../src/resources/open-computers/clusters.ts","../src/resources/open-computers/desktop.ts","../src/resources/open-computers/files.ts","../src/resources/open-computers/hosts.ts","../src/resources/open-computers/jobs.ts","../src/resources/open-computers/secrets.ts","../src/resources/open-computers/terminal.ts","../src/resources/open-computers/tunnels.ts","../src/resources/open-computers/workspaces.ts","../src/resources/open-computers/index.ts","../src/resources/project-auth.ts","../src/resources/project-integrations.ts","../src/resources/provider-defaults.ts","../src/resources/regions.ts","../src/resources/runtime-env.ts","../src/resources/runtime-capabilities.ts","../src/resources/sandboxes.ts","../src/resources/sandbox-templates.ts","../src/resources/settings.ts","../src/resources/snapshots-standalone.ts","../src/resources/storage.ts","../src/resources/org-invites.ts","../src/resources/tenant.ts","../src/resources/templates.ts","../src/resources/usage.ts","../src/resources/volumes.ts","../src/resources/webhooks.ts","../src/resources/workspace-invites.ts","../src/resources/workspace-members.ts","../src/client.ts","../src/agent-builds.ts","../src/resources/app-auth.ts"],"names":["body","query","sleep","unwrap","workspaceId","stripUndefined","isTerminalStatus","unwrapList","pickFirst","listQuery","createWebSocket","window","listItems","idempotencyKey","randomUUID","queryFromListParams","Desktop","stripUndefObj","normalize","normalized","toBase64","DEFAULT_TIMEOUT","DEFAULT_MAX_RETRIES","spec"],"mappings":"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","file":"index.js","sourcesContent":["export interface MiosaErrorBody {\n error?: {\n code?: string;\n message?: string;\n details?: unknown;\n };\n message?: string;\n code?: string;\n}\n\nexport class MiosaError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details: unknown;\n readonly requestId: string | undefined;\n\n constructor(\n message: string,\n status: number,\n code: string,\n details?: unknown,\n requestId?: string,\n ) {\n super(message);\n this.name = \"MiosaError\";\n this.status = status;\n this.code = code;\n this.details = details;\n this.requestId = requestId;\n }\n\n static fromResponse(\n status: number,\n body: MiosaErrorBody,\n requestId?: string,\n ): MiosaError {\n const message = body.error?.message ?? body.message ?? `HTTP ${status}`;\n const code = body.error?.code ?? body.code ?? \"UNKNOWN_ERROR\";\n const details = body.error?.details;\n\n const connectError = connectErrorFromCode(code, message, status, details, requestId);\n if (connectError) return connectError;\n\n if (status === 401 || status === 403) {\n return new AuthError(message, status, code, details, requestId);\n }\n if (status === 404) {\n return new NotFoundError(message, code, details, requestId);\n }\n if (status === 429) {\n return new RateLimitError(message, details, requestId);\n }\n if (status === 402) {\n return new InsufficientCreditsError(message, details, requestId);\n }\n if (status >= 400 && status < 500) {\n return new ValidationError(message, status, code, details, requestId);\n }\n\n return new MiosaError(message, status, code, details, requestId);\n }\n}\n\nfunction connectErrorFromCode(\n code: string,\n message: string,\n status: number,\n details?: unknown,\n requestId?: string,\n): MiosaError | undefined {\n switch (code) {\n case \"PROJECT_NOT_LINKED\":\n return new ProjectNotLinkedError(message, status, details, requestId);\n case \"SUBJECT_NOT_ALLOWED\":\n return new SubjectNotAllowedError(message, status, details, requestId);\n case \"SCOPE_NOT_ALLOWED\":\n return new ScopeNotAllowedError(message, status, details, requestId);\n case \"MANAGED_PROVIDER_BINDING_ONLY\":\n return new ManagedProviderBindingOnlyError(message, status, details, requestId);\n case \"INSTALLATION_REQUIRED\":\n return new InstallationRequiredError(message, status, details, requestId);\n case \"USER_AUTHORIZATION_REQUIRED\":\n return new UserAuthorizationRequiredError(message, status, details, requestId);\n case \"EGRESS_HOST_NOT_ALLOWED\":\n return new EgressHostNotAllowedError(message, status, details, requestId);\n case \"TOKEN_REFRESH_FAILED\":\n return new TokenRefreshFailedError(message, status, details, requestId);\n default:\n return undefined;\n }\n}\n\nexport class AuthError extends MiosaError {\n constructor(\n message: string,\n status: number = 401,\n code: string = \"UNAUTHORIZED\",\n details?: unknown,\n requestId?: string,\n ) {\n super(message, status, code, details, requestId);\n this.name = \"AuthError\";\n }\n}\n\nexport class NotFoundError extends MiosaError {\n constructor(\n message: string,\n code: string = \"NOT_FOUND\",\n details?: unknown,\n requestId?: string,\n ) {\n super(message, 404, code, details, requestId);\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends MiosaError {\n readonly retryAfter: number | undefined;\n\n constructor(\n message: string,\n details?: unknown,\n requestId?: string,\n retryAfter?: number,\n ) {\n super(message, 429, \"RATE_LIMITED\", details, requestId);\n this.name = \"RateLimitError\";\n this.retryAfter = retryAfter;\n }\n}\n\nexport class InsufficientCreditsError extends MiosaError {\n constructor(message: string, details?: unknown, requestId?: string) {\n super(message, 402, \"INSUFFICIENT_CREDITS\", details, requestId);\n this.name = \"InsufficientCreditsError\";\n }\n}\n\nexport class ValidationError extends MiosaError {\n constructor(\n message: string,\n status: number,\n code: string = \"VALIDATION_ERROR\",\n details?: unknown,\n requestId?: string,\n ) {\n super(message, status, code, details, requestId);\n this.name = \"ValidationError\";\n }\n}\n\nexport class TimeoutError extends MiosaError {\n constructor(message: string = \"Request timed out\") {\n super(message, 408, \"TIMEOUT\");\n this.name = \"TimeoutError\";\n }\n}\n\nexport class NetworkError extends MiosaError {\n readonly cause: Error;\n\n constructor(message: string, cause: Error) {\n super(message, 0, \"NETWORK_ERROR\");\n this.name = \"NetworkError\";\n this.cause = cause;\n }\n}\n\nexport class ProjectNotLinkedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"PROJECT_NOT_LINKED\", details, requestId);\n this.name = \"ProjectNotLinkedError\";\n }\n}\n\nexport class SubjectNotAllowedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"SUBJECT_NOT_ALLOWED\", details, requestId);\n this.name = \"SubjectNotAllowedError\";\n }\n}\n\nexport class ScopeNotAllowedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"SCOPE_NOT_ALLOWED\", details, requestId);\n this.name = \"ScopeNotAllowedError\";\n }\n}\n\nexport class ManagedProviderBindingOnlyError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"MANAGED_PROVIDER_BINDING_ONLY\", details, requestId);\n this.name = \"ManagedProviderBindingOnlyError\";\n }\n}\n\nexport class InstallationRequiredError extends MiosaError {\n constructor(message: string, status = 409, details?: unknown, requestId?: string) {\n super(message, status, \"INSTALLATION_REQUIRED\", details, requestId);\n this.name = \"InstallationRequiredError\";\n }\n}\n\nexport class UserAuthorizationRequiredError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"USER_AUTHORIZATION_REQUIRED\", details, requestId);\n this.name = \"UserAuthorizationRequiredError\";\n }\n}\n\nexport class EgressHostNotAllowedError extends MiosaError {\n constructor(message: string, status = 403, details?: unknown, requestId?: string) {\n super(message, status, \"EGRESS_HOST_NOT_ALLOWED\", details, requestId);\n this.name = \"EgressHostNotAllowedError\";\n }\n}\n\nexport class TokenRefreshFailedError extends MiosaError {\n constructor(message: string, status = 502, details?: unknown, requestId?: string) {\n super(message, status, \"TOKEN_REFRESH_FAILED\", details, requestId);\n this.name = \"TokenRefreshFailedError\";\n }\n}\n","import { MiosaError, NetworkError, TimeoutError } from \"./errors.js\";\nimport type { MiosaErrorBody } from \"./errors.js\";\n\n// ─── Transport tuning ─────────────────────────────────────────────────────────\n//\n// Node's built-in ``fetch`` is backed by undici and already reuses connections\n// via HTTP/1.1 keep-alive. We additionally try to install a custom undici\n// ``Agent`` with HTTP/2 enabled so sequential calls can multiplex on a single\n// TLS session and skip the per-call handshake tax (~80-150 ms cold,\n// ~20-40 ms warm).\n//\n// undici is an optional dependency: when not installed, we fall back to the\n// default fetch dispatcher (still pooled, just HTTP/1.1).\n\ninterface UndiciAgentOptions {\n keepAliveTimeout?: number;\n keepAliveMaxTimeout?: number;\n allowH2?: boolean;\n connections?: number;\n}\n\ninterface UndiciModule {\n Agent: new (opts: UndiciAgentOptions) => unknown;\n setGlobalDispatcher: (dispatcher: unknown) => void;\n}\n\nlet _h2Configured = false;\nlet _h2Available = false;\nlet _agentSingleton: unknown = null;\n\nasync function ensureHttp2Agent(): Promise<void> {\n if (_h2Configured) return;\n _h2Configured = true;\n try {\n // Indirection through a variable specifier prevents TypeScript from\n // trying to resolve the optional ``undici`` module at compile time.\n const undiciSpecifier = \"undici\";\n const undici = (await import(\n /* @vite-ignore */ undiciSpecifier\n )) as unknown as UndiciModule;\n const agent = new undici.Agent({\n keepAliveTimeout: 60_000,\n keepAliveMaxTimeout: 600_000,\n allowH2: true,\n connections: 20,\n });\n undici.setGlobalDispatcher(agent);\n _agentSingleton = agent;\n _h2Available = true;\n } catch {\n // undici not installed (e.g. browser bundle, or user opted out).\n // Fall back to native fetch's default keep-alive pool.\n _h2Available = false;\n }\n}\n\n// Fire-and-forget at module load. Subsequent fetch() calls will pick up the\n// configured dispatcher. Tests can re-import and observe ``isHttp2Configured``.\nconst _h2Bootstrap = ensureHttp2Agent();\n\n/** Exposed for tests — resolves after the HTTP/2 agent setup completes. */\nexport function whenTransportReady(): Promise<void> {\n return _h2Bootstrap;\n}\n\n/** Exposed for tests — true iff undici with allowH2 was installed. */\nexport function isHttp2Available(): boolean {\n return _h2Available;\n}\n\n/** Exposed for tests — the cached undici Agent (or null). */\nexport function getDispatcher(): unknown {\n return _agentSingleton;\n}\n\nexport interface RequestOptions {\n method?: string;\n headers?: Record<string, string>;\n body?: unknown;\n timeout?: number;\n /** Return raw Response instead of parsing JSON */\n rawResponse?: boolean;\n /** Send body as multipart/form-data */\n formData?: FormData;\n /** Expected response is binary */\n binary?: boolean;\n}\n\nexport interface HttpClientConfig {\n baseUrl: string;\n apiKey: string;\n timeout: number;\n maxRetries: number;\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst RETRY_STATUS = new Set([429, 500, 502, 503, 504]);\nconst BASE_DELAY_MS = 500;\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction retryDelay(attempt: number, retryAfterHeader: string | null): number {\n if (retryAfterHeader !== null) {\n const seconds = parseInt(retryAfterHeader, 10);\n if (!isNaN(seconds)) return seconds * 1000;\n }\n return BASE_DELAY_MS * 2 ** attempt + Math.random() * 100;\n}\n\nexport class HttpClient {\n /** Public for WebSocket clients that need to derive their own URL. */\n readonly baseUrl: string;\n /** Public for WebSocket clients that need to send the same auth. */\n readonly apiKey: string;\n private readonly timeout: number;\n private readonly maxRetries: number;\n\n constructor(config: HttpClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n this.apiKey = config.apiKey;\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n\n private baseHeaders(extra?: Record<string, string>): Record<string, string> {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: \"application/json\",\n \"User-Agent\": \"@miosa/sdk/1.0.0\",\n ...extra,\n };\n }\n\n async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const {\n method = \"GET\",\n body,\n formData,\n binary = false,\n timeout = this.timeout,\n } = options;\n\n let headers = this.baseHeaders(options.headers);\n\n let fetchBody: BodyInit | undefined;\n if (formData) {\n fetchBody = formData;\n // Let fetch set Content-Type with boundary for multipart\n } else if (body !== undefined) {\n headers = { ...headers, \"Content-Type\": \"application/json\" };\n fetchBody = JSON.stringify(body);\n }\n\n let lastError: MiosaError | undefined;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(this.buildUrl(path), {\n method,\n headers,\n // exactOptionalPropertyTypes requires null, not undefined, for body\n body: fetchBody ?? null,\n signal: controller.signal,\n });\n\n clearTimeout(timer);\n\n if (!response.ok) {\n const requestId = response.headers.get(\"x-request-id\") ?? undefined;\n const retryAfter = response.headers.get(\"retry-after\");\n\n let errorBody: MiosaErrorBody = {};\n try {\n errorBody = (await response.json()) as MiosaErrorBody;\n } catch {\n // body may not be JSON on 5xx errors\n }\n\n const error = MiosaError.fromResponse(\n response.status,\n errorBody,\n requestId,\n );\n\n if (RETRY_STATUS.has(response.status) && attempt < this.maxRetries) {\n lastError = error;\n await sleep(retryDelay(attempt, retryAfter));\n continue;\n }\n\n throw error;\n }\n\n if (binary) {\n const buffer = await response.arrayBuffer();\n return new Uint8Array(buffer) as unknown as T;\n }\n\n // 204 No Content\n if (response.status === 204) {\n return undefined as unknown as T;\n }\n\n return (await response.json()) as T;\n } catch (err) {\n clearTimeout(timer);\n\n if (err instanceof MiosaError) {\n throw err;\n }\n\n if (err instanceof DOMException && err.name === \"AbortError\") {\n throw new TimeoutError(\n `Request to ${path} timed out after ${timeout}ms`,\n );\n }\n\n if (err instanceof TypeError) {\n const networkErr = new NetworkError(\n `Network error reaching ${path}: ${err.message}`,\n err,\n );\n if (attempt < this.maxRetries) {\n lastError = networkErr;\n await sleep(retryDelay(attempt, null));\n continue;\n }\n throw networkErr;\n }\n\n throw err;\n }\n }\n\n // Exhausted retries\n throw (\n lastError ??\n new MiosaError(\"Max retries exceeded\", 0, \"MAX_RETRIES_EXCEEDED\")\n );\n }\n\n async get<T>(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): Promise<T> {\n let fullPath = path;\n if (query) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined && v !== null) params.set(k, String(v));\n }\n const qs = params.toString();\n if (qs) fullPath = `${path}${path.includes(\"?\") ? \"&\" : \"?\"}${qs}`;\n }\n return this.request<T>(fullPath, { method: \"GET\" });\n }\n\n async post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"POST\", body });\n }\n\n async patch<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PATCH\", body });\n }\n\n async put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PUT\", body });\n }\n\n async delete<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>(path, { method: \"DELETE\", body });\n }\n\n async getBinary(path: string): Promise<Uint8Array> {\n return this.request<Uint8Array>(path, { method: \"GET\", binary: true });\n }\n\n async postFormData<T>(path: string, formData: FormData): Promise<T> {\n return this.request<T>(path, { method: \"POST\", formData });\n }\n\n /**\n * Open a Server-Sent Events stream. Returns an AsyncIterableIterator of\n * parsed event data objects. The caller is responsible for breaking the loop.\n */\n async *stream<T>(\n path: string,\n options: RequestOptions = {},\n ): AsyncIterableIterator<T> {\n const method = options.method ?? \"GET\";\n let headers = this.baseHeaders({\n Accept: \"text/event-stream\",\n ...options.headers,\n });\n let body: BodyInit | null = null;\n if (options.body !== undefined) {\n headers = { ...headers, \"Content-Type\": \"application/json\" };\n body = JSON.stringify(options.body);\n }\n\n const controller = new AbortController();\n\n let response: Response;\n try {\n response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body,\n signal: controller.signal,\n });\n } catch (err) {\n if (err instanceof TypeError) {\n throw new NetworkError(\n `Network error opening SSE stream: ${err.message}`,\n err,\n );\n }\n throw err;\n }\n\n if (!response.ok) {\n let errorBody: MiosaErrorBody = {};\n try {\n errorBody = (await response.json()) as MiosaErrorBody;\n } catch {\n // ignore\n }\n throw MiosaError.fromResponse(\n response.status,\n errorBody,\n response.headers.get(\"x-request-id\") ?? undefined,\n );\n }\n\n if (!response.body) {\n throw new MiosaError(\"SSE stream has no body\", 0, \"NO_STREAM_BODY\");\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n const raw = line.slice(5).trim();\n if (raw === \"[DONE]\" || raw === \"\") continue;\n try {\n yield JSON.parse(raw) as T;\n } catch {\n // skip malformed SSE data lines\n }\n }\n }\n }\n } finally {\n controller.abort();\n reader.releaseLock();\n }\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype Json = Record<string, unknown>;\ntype Query = Record<string, string | number | boolean | undefined>;\n\nfunction withDefined<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v !== undefined && v !== null) out[k] = v;\n }\n return out as Partial<T>;\n}\n\nexport interface ListAdminUsersParams {\n limit?: number;\n cursor?: string;\n q?: string;\n status?: \"active\" | \"suspended\" | \"deleted\";\n}\n\nexport interface ListAdminTenantsParams {\n limit?: number;\n cursor?: string;\n q?: string;\n}\n\nexport interface ListAdminComputersParams {\n limit?: number;\n cursor?: string;\n status?:\n | \"creating\"\n | \"provisioning\"\n | \"running\"\n | \"stopped\"\n | \"paused\"\n | \"error\";\n tenantId?: string;\n}\n\nexport interface ListAdminApiKeysParams {\n limit?: number;\n cursor?: string;\n tenantId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n}\n\nexport interface CreateAdminApiKeyParams {\n name: string;\n tenantId: string;\n userId: string;\n keyType?: \"user\" | \"admin\" | \"platform\";\n purpose?: \"api\" | \"optimal\";\n rateLimitRpm?: number;\n expiresAt?: string;\n allowedIps?: string[];\n}\n\nexport interface BulkUserActionParams {\n userIds: string[];\n action: \"suspend\" | \"unsuspend\" | \"delete\" | \"tag\" | \"notify\";\n params?: Json;\n}\n\n/**\n * Admin surface — `/api/v1/admin/*` endpoints.\n *\n * Requires a `msk_a_*` or `msk_p_*` API key, or an admin JWT. Calls from\n * a user-role credential return 403 Forbidden.\n */\nexport class Admin {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** Escape hatch — call any admin endpoint by method + path. */\n async request<T = Json>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n path: string,\n body?: unknown,\n query?: Query,\n ): Promise<T> {\n const fullPath = query\n ? (() => {\n const qs = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined) qs.set(k, String(v));\n }\n const s = qs.toString();\n return s ? `${path}?${s}` : path;\n })()\n : path;\n // Route via the low-level method helpers so retries/backoff still apply.\n switch (method) {\n case \"GET\":\n return this.http.get<T>(fullPath);\n case \"POST\":\n return this.http.post<T>(fullPath, body);\n case \"PUT\":\n return this.http.put<T>(fullPath, body);\n case \"PATCH\":\n return this.http.patch<T>(fullPath, body);\n case \"DELETE\":\n return this.http.delete<T>(fullPath, body);\n }\n }\n\n // ── Overview ────────────────────────────────────────────────\n\n dashboard(): Promise<Json> {\n return this.http.get(\"/admin/dashboard\");\n }\n stats(): Promise<Json> {\n return this.http.get(\"/admin/stats\");\n }\n auditLog(params?: { limit?: number; cursor?: string }): Promise<Json> {\n return this.http.get(\"/admin/audit-log\", {\n limit: params?.limit,\n cursor: params?.cursor,\n });\n }\n detailedHealth(): Promise<Json> {\n return this.http.get(\"/admin/health/detailed\");\n }\n\n // ── Credits ─────────────────────────────────────────────────\n\n grantCredits(params: {\n tenantId: string;\n amount: number;\n description: string;\n expiresAt?: string;\n }): Promise<Json> {\n return this.http.post(\n \"/admin/credits/grant\",\n withDefined({\n tenant_id: params.tenantId,\n amount: params.amount,\n description: params.description,\n expires_at: params.expiresAt,\n }),\n );\n }\n deductCredits(params: {\n tenantId: string;\n amount: number;\n description: string;\n }): Promise<Json> {\n return this.http.post(\"/admin/credits/deduct\", {\n tenant_id: params.tenantId,\n amount: params.amount,\n description: params.description,\n });\n }\n refundCredits(params: {\n tenantId: string;\n amount: number;\n description: string;\n transactionId?: string;\n }): Promise<Json> {\n return this.http.post(\n \"/admin/credits/refund\",\n withDefined({\n tenant_id: params.tenantId,\n amount: params.amount,\n description: params.description,\n transaction_id: params.transactionId,\n }),\n );\n }\n tenantBalance(tenantId: string): Promise<Json> {\n return this.http.get(`/admin/credits/${tenantId}/balance`);\n }\n tenantCreditHistory(\n tenantId: string,\n params?: { limit?: number; cursor?: string },\n ): Promise<Json> {\n return this.http.get(`/admin/credits/${tenantId}/history`, {\n limit: params?.limit,\n cursor: params?.cursor,\n });\n }\n\n // ── Users ───────────────────────────────────────────────────\n\n listUsers(params?: ListAdminUsersParams): Promise<Json> {\n return this.http.get(\"/admin/users\", {\n limit: params?.limit,\n cursor: params?.cursor,\n q: params?.q,\n status: params?.status,\n });\n }\n getUser(userId: string): Promise<Json> {\n return this.http.get(`/admin/users/${userId}`);\n }\n updateUser(userId: string, attrs: Json): Promise<Json> {\n return this.http.put(`/admin/users/${userId}`, attrs);\n }\n deleteUser(userId: string): Promise<Json> {\n return this.http.delete(`/admin/users/${userId}`);\n }\n changeUserRole(\n userId: string,\n role: \"user\" | \"admin\" | \"owner\" | \"super_admin\",\n ): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/role`, { role });\n }\n forceLogout(userId: string): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/force-logout`);\n }\n suspendUser(userId: string, reason?: string): Promise<Json> {\n return this.http.post(\n `/admin/users/${userId}/suspend`,\n reason ? { reason } : undefined,\n );\n }\n unsuspendUser(userId: string): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/unsuspend`);\n }\n banUser(userId: string, reason: string, expiresAt?: string): Promise<Json> {\n return this.http.post(\n `/admin/users/${userId}/ban`,\n withDefined({ reason, expires_at: expiresAt }),\n );\n }\n unbanUser(userId: string): Promise<Json> {\n return this.http.post(`/admin/users/${userId}/unban`);\n }\n bulkUserAction(params: BulkUserActionParams): Promise<Json> {\n return this.http.post(\n \"/admin/users/bulk\",\n withDefined({\n user_ids: params.userIds,\n action: params.action,\n params: params.params,\n }),\n );\n }\n\n // ── Tenants ─────────────────────────────────────────────────\n\n listTenants(params?: ListAdminTenantsParams): Promise<Json> {\n return this.http.get(\"/admin/tenants\", {\n limit: params?.limit,\n cursor: params?.cursor,\n q: params?.q,\n });\n }\n tenantDetail(tenantId: string): Promise<Json> {\n return this.http.get(`/admin/tenants/${tenantId}/detail`);\n }\n suspendTenant(tenantId: string, reason?: string): Promise<Json> {\n return this.http.post(\n `/admin/tenants/${tenantId}/suspend`,\n reason ? { reason } : undefined,\n );\n }\n unsuspendTenant(tenantId: string): Promise<Json> {\n return this.http.post(`/admin/tenants/${tenantId}/unsuspend`);\n }\n changeTenantPlan(\n tenantId: string,\n plan: \"free\" | \"starter\" | \"pro\" | \"scale\",\n prorate = true,\n ): Promise<Json> {\n return this.http.post(`/admin/tenants/${tenantId}/plan`, { plan, prorate });\n }\n deleteTenant(tenantId: string): Promise<Json> {\n return this.http.delete(`/admin/tenants/${tenantId}`);\n }\n\n // ── Computers ───────────────────────────────────────────────\n\n listComputers(params?: ListAdminComputersParams): Promise<Json> {\n return this.http.get(\"/admin/computers\", {\n limit: params?.limit,\n cursor: params?.cursor,\n status: params?.status,\n tenant_id: params?.tenantId,\n });\n }\n deleteComputer(computerId: string): Promise<Json> {\n return this.http.delete(`/admin/computers/${computerId}`);\n }\n suspendComputer(computerId: string): Promise<Json> {\n return this.http.post(`/admin/computers/${computerId}/suspend`);\n }\n resumeComputer(computerId: string): Promise<Json> {\n return this.http.post(`/admin/computers/${computerId}/resume`);\n }\n restartComputer(computerId: string): Promise<Json> {\n return this.http.post(`/admin/computers/${computerId}/restart`);\n }\n purgeStaleComputers(): Promise<Json> {\n return this.http.post(\"/admin/computers/purge-stale\");\n }\n\n // ── API Keys ────────────────────────────────────────────────\n\n listApiKeys(params?: ListAdminApiKeysParams): Promise<Json> {\n return this.http.get(\"/admin/api-keys\", {\n limit: params?.limit,\n cursor: params?.cursor,\n tenant_id: params?.tenantId,\n status: params?.status,\n });\n }\n createApiKey(params: CreateAdminApiKeyParams): Promise<Json> {\n return this.http.post(\n \"/admin/api-keys\",\n withDefined({\n name: params.name,\n tenant_id: params.tenantId,\n user_id: params.userId,\n key_type: params.keyType ?? \"user\",\n purpose: params.purpose ?? \"api\",\n rate_limit_rpm: params.rateLimitRpm,\n expires_at: params.expiresAt,\n allowed_ips: params.allowedIps,\n }),\n );\n }\n apiKeyStats(): Promise<Json> {\n return this.http.get(\"/admin/api-keys/stats\");\n }\n bulkRevokeApiKeys(keyIds: string[]): Promise<Json> {\n return this.http.post(\"/admin/api-keys/bulk-revoke\", { key_ids: keyIds });\n }\n revokeApiKey(keyId: string): Promise<Json> {\n return this.http.delete(`/admin/api-keys/${keyId}`);\n }\n\n // ── Optimal ─────────────────────────────────────────────────\n\n optimalStatus(): Promise<Json> {\n return this.http.get(\"/admin/optimal/status\");\n }\n listOptimalModels(): Promise<Json> {\n return this.http.get(\"/admin/optimal/models\");\n }\n switchOptimalModel(modelId: string): Promise<Json> {\n return this.http.post(\"/admin/optimal/models/switch\", {\n model_id: modelId,\n });\n }\n\n /** POST /api/v1/admin/impersonate — returns {token, expires_at}. */\n impersonate(\n externalUserId: string,\n options: { ttlSec?: number } = {},\n ): Promise<{ token: string; expires_at: string }> {\n return this.http.post(\"/admin/impersonate\", {\n external_user_id: externalUserId,\n ttl_sec: options.ttlSec ?? 3600,\n });\n }\n}\n","import type { Run, RunCreateParams, RunFile } from \"./runs.js\";\nimport type { HttpClient } from \"../http.js\";\n\nexport type RunGroupStatus = \"running\" | \"succeeded\" | \"failed\" | \"canceled\";\n\nexport interface RunGroupCounts {\n total: number;\n running: number;\n succeeded: number;\n failed: number;\n canceled: number;\n}\n\nexport interface RunGroupEntryCounts extends RunGroupCounts {\n queued: number;\n}\n\nexport type RunGroupEntryStatus =\n | \"queued\"\n | \"running\"\n | \"succeeded\"\n | \"failed\"\n | \"canceled\";\n\nexport interface RunGroupEntry {\n id: string;\n run_group_id: string;\n run_id?: string;\n index: number;\n status: RunGroupEntryStatus;\n attempts?: number;\n error?: Record<string, unknown>;\n queued_at?: string;\n claimed_at?: string;\n finished_at?: string;\n updated_at?: string;\n}\n\nexport interface RunGroup {\n id: string;\n tenant_id?: string;\n user_id?: string;\n workspace_id?: string;\n project_id?: string;\n name: string;\n description?: string;\n status: RunGroupStatus;\n concurrency_limit?: number;\n expected_runs?: number;\n counts?: RunGroupCounts;\n entry_counts?: RunGroupEntryCounts;\n metadata?: Record<string, unknown>;\n started_at?: string;\n finished_at?: string;\n created_at?: string;\n updated_at?: string;\n runs?: Run[];\n [key: string]: unknown;\n}\n\nexport interface RunGroupCreateParams {\n name: string;\n description?: string;\n workspaceId?: string;\n projectId?: string;\n concurrencyLimit?: number;\n expectedRuns?: number;\n metadata?: Record<string, unknown>;\n}\n\nexport interface RunGroupListParams {\n workspaceId?: string;\n projectId?: string;\n status?: RunGroupStatus | string;\n limit?: number;\n}\n\nexport type RunGroupDispatchEntry = RunCreateParams & {\n targetId?: string;\n sandboxId?: string;\n computerId?: string;\n};\n\nexport interface RunGroupDispatchResult {\n group: RunGroup;\n results?: Array<\n | { index: number; ok: true; run: Run }\n | { index: number; ok: false; error: Record<string, unknown> }\n >;\n entries?: RunGroupEntry[];\n}\n\nexport interface RunGroupDispatchOptions {\n async?: boolean;\n}\n\nexport interface RunGroupWaitOptions {\n timeoutMs?: number;\n pollIntervalMs?: number;\n terminalStatuses?: string[];\n includeRuns?: boolean;\n}\n\nexport interface RunGroupActivity {\n id: string;\n run_group_id?: string;\n run_id?: string;\n sequence?: number;\n type: string;\n message?: string | null;\n payload?: Record<string, unknown>;\n created_at?: string | null;\n [key: string]: unknown;\n}\n\nexport type RunGroupFile = RunFile & {\n run_id: string;\n};\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction fileRows(raw: unknown): RunFile[] {\n const data = unwrap<RunFile[] | { files?: RunFile[]; items?: RunFile[] }>(raw);\n if (Array.isArray(data)) return data;\n return data.files ?? data.items ?? [];\n}\n\nfunction stripUndefined(input: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction body(params: RunGroupCreateParams): Record<string, unknown> {\n return stripUndefined({\n name: params.name,\n description: params.description,\n workspace_id: params.workspaceId,\n project_id: params.projectId,\n concurrency_limit: params.concurrencyLimit,\n expected_runs: params.expectedRuns,\n metadata: params.metadata,\n });\n}\n\nfunction runBody(entry: RunGroupDispatchEntry): Record<string, unknown> {\n return stripUndefined({\n instruction: entry.instruction,\n target_kind: entry.targetKind,\n target_id: entry.targetId,\n runtime_id: entry.runtimeId,\n sandbox_id: entry.sandboxId,\n computer_id: entry.computerId,\n provider: entry.provider,\n runner: entry.runner,\n model: entry.model,\n command: entry.command,\n runtime_command: entry.runtimeCommand,\n cwd: entry.cwd,\n timeout: entry.timeout,\n env: entry.env,\n agent_runtime_profile_id: entry.agentRuntimeProfileId,\n agent_profile_id: entry.agentProfileId,\n parent_run_id: entry.parentRunId,\n orchestration_role: entry.orchestrationRole,\n skip_agent_runtime_profile: entry.skipRuntimeProfile,\n execution_packet: entry.executionPacket,\n expected_outputs: entry.expectedOutputs,\n approval_policy: entry.approvalPolicy,\n capability_requirements: entry.capabilityRequirements,\n metadata: entry.metadata,\n });\n}\n\nfunction isTerminalStatus(status: unknown, terminalStatuses: string[]): boolean {\n return typeof status === \"string\" && terminalStatuses.includes(status.toLowerCase());\n}\n\nfunction sleep(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport class RunGroups {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: RunGroupListParams = {}): Promise<RunGroup[]> {\n const response = await this.http.get<unknown>(\n \"/run-groups\",\n stripUndefined({\n workspace_id: params.workspaceId,\n project_id: params.projectId,\n status: params.status,\n limit: params.limit,\n }) as Record<string, string | number | boolean | undefined>,\n );\n const data = unwrap<RunGroup[] | { groups?: RunGroup[]; items?: RunGroup[] }>(\n response,\n );\n if (Array.isArray(data)) return data;\n return data.groups ?? data.items ?? [];\n }\n\n async create(params: RunGroupCreateParams): Promise<RunGroup> {\n return unwrap<RunGroup>(\n await this.http.post<unknown>(\"/run-groups\", body(params)),\n );\n }\n\n async get(id: string, options: { includeRuns?: boolean } = {}): Promise<RunGroup> {\n const query = options.includeRuns ? \"?include=runs\" : \"\";\n return unwrap<RunGroup>(\n await this.http.get<unknown>(`/run-groups/${encodeURIComponent(id)}${query}`),\n );\n }\n\n async dispatch(\n id: string,\n runs: RunGroupDispatchEntry[],\n options: RunGroupDispatchOptions = {},\n ): Promise<RunGroupDispatchResult> {\n return unwrap<RunGroupDispatchResult>(\n await this.http.post<unknown>(\n `/run-groups/${encodeURIComponent(id)}/dispatch`,\n stripUndefined({ runs: runs.map(runBody), async: options.async }),\n ),\n );\n }\n\n async cancel(id: string): Promise<RunGroup> {\n return unwrap<RunGroup>(\n await this.http.post<unknown>(\n `/run-groups/${encodeURIComponent(id)}/cancel`,\n {},\n ),\n );\n }\n\n async activity(id: string): Promise<RunGroupActivity[]> {\n const data = unwrap<\n RunGroupActivity[] | { activity?: RunGroupActivity[]; items?: RunGroupActivity[] }\n >(\n await this.http.get<unknown>(\n `/run-groups/${encodeURIComponent(id)}/activity`,\n ),\n );\n if (Array.isArray(data)) return data;\n return data.activity ?? data.items ?? [];\n }\n\n streamActivity(id: string): AsyncIterableIterator<RunGroupActivity> {\n return this.http.stream<RunGroupActivity>(\n `/run-groups/${encodeURIComponent(id)}/activity`,\n );\n }\n\n async files(id: string): Promise<RunGroupFile[]> {\n const group = await this.get(id, { includeRuns: true });\n const runs = (group.runs ?? []).filter((run) => Boolean(run.id));\n const nested = await Promise.all(\n runs.map(async (run) => {\n const files = fileRows(\n await this.http.get<unknown>(\n `/runs/${encodeURIComponent(run.id)}/files`,\n ),\n );\n return files.map((file) => ({\n ...file,\n run_id: file.run_id ?? run.id,\n }));\n }),\n );\n return nested.flat() as RunGroupFile[];\n }\n\n async waitForCompletion(\n id: string,\n options: RunGroupWaitOptions = {},\n ): Promise<RunGroup> {\n const timeoutMs = options.timeoutMs ?? 15 * 60 * 1000;\n const pollIntervalMs = options.pollIntervalMs ?? 2000;\n const terminalStatuses = options.terminalStatuses ?? [\n \"succeeded\",\n \"failed\",\n \"canceled\",\n \"cancelled\",\n ];\n const deadline = Date.now() + timeoutMs;\n\n while (true) {\n const group = await this.get(\n id,\n options.includeRuns === undefined ? {} : { includeRuns: options.includeRuns },\n );\n if (isTerminalStatus(group.status, terminalStatuses)) return group;\n if (Date.now() >= deadline) {\n throw new Error(`Timed out waiting for run group ${id}`);\n }\n await sleep(Math.min(pollIntervalMs, Math.max(0, deadline - Date.now())));\n }\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nexport type AgentRuntime =\n | \"osa\"\n | \"codex\"\n | \"claude\"\n | \"claude-code\"\n | \"pi\"\n | \"hermes\"\n | \"custom\";\n\nexport type AgentRuntimeConnector =\n | string\n | {\n uid?: string;\n name?: string;\n type?: \"mcp\" | \"api-key\" | \"api_key\" | \"oauth\" | \"custom\" | string;\n provider?: string;\n managed?: boolean;\n server_url?: string;\n serverUrl?: string;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n };\n\nexport interface AgentRuntimeProfile {\n id: string;\n tenant_id?: string;\n tenantId?: string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n name: string;\n runtime: AgentRuntime | string;\n description?: string | null;\n applies_to?: Record<string, unknown>;\n appliesTo?: Record<string, unknown>;\n tools?: string[];\n connectors?: AgentRuntimeConnector[];\n env?: Record<string, string>;\n policy?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n is_default?: boolean;\n isDefault?: boolean;\n created_at?: string;\n createdAt?: string;\n updated_at?: string;\n updatedAt?: string;\n}\n\nexport interface AgentRuntimeProfileParams {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n name: string;\n runtime: AgentRuntime | string;\n description?: string;\n appliesTo?: Record<string, unknown>;\n applies_to?: Record<string, unknown>;\n tools?: string[];\n connectors?: AgentRuntimeConnector[];\n env?: Record<string, string>;\n policy?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n isDefault?: boolean;\n is_default?: boolean;\n}\n\nexport type AgentRuntimeProfileUpdateParams =\n Partial<AgentRuntimeProfileParams>;\n\nfunction body(\n params: AgentRuntimeProfileParams | AgentRuntimeProfileUpdateParams,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries({\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n name: params.name,\n runtime: params.runtime,\n description: params.description,\n applies_to: params.appliesTo ?? params.applies_to,\n tools: params.tools,\n connectors: params.connectors,\n env: params.env,\n policy: params.policy,\n metadata: params.metadata,\n is_default: params.isDefault ?? params.is_default,\n }).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction normalize(profile: AgentRuntimeProfile): AgentRuntimeProfile {\n const normalized: AgentRuntimeProfile = {\n ...profile,\n };\n const tenantId = profile.tenantId ?? profile.tenant_id;\n const workspaceId = profile.workspaceId ?? profile.workspace_id;\n const projectId = profile.projectId ?? profile.project_id;\n const appliesTo = profile.appliesTo ?? profile.applies_to;\n const isDefault = profile.isDefault ?? profile.is_default;\n const createdAt = profile.createdAt ?? profile.created_at;\n const updatedAt = profile.updatedAt ?? profile.updated_at;\n if (tenantId !== undefined) normalized.tenantId = tenantId;\n if (workspaceId !== undefined) normalized.workspaceId = workspaceId;\n if (projectId !== undefined) normalized.projectId = projectId;\n if (appliesTo !== undefined) normalized.appliesTo = appliesTo;\n if (isDefault !== undefined) normalized.isDefault = isDefault;\n if (createdAt !== undefined) normalized.createdAt = createdAt;\n if (updatedAt !== undefined) normalized.updatedAt = updatedAt;\n return normalized;\n}\n\nexport class AgentRuntimeProfiles {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n params: {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n } = {},\n ) {\n const response = await this.http.get<WireEnvelope<AgentRuntimeProfile[]>>(\n \"/agent-runtime-profiles\",\n {\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n },\n );\n return unwrap(response).map(normalize);\n }\n\n async get(id: string): Promise<AgentRuntimeProfile> {\n return normalize(\n unwrap(\n await this.http.get<WireEnvelope<AgentRuntimeProfile>>(\n `/agent-runtime-profiles/${encodeURIComponent(id)}`,\n ),\n ),\n );\n }\n\n async create(\n params: AgentRuntimeProfileParams,\n ): Promise<AgentRuntimeProfile> {\n return normalize(\n unwrap(\n await this.http.post<WireEnvelope<AgentRuntimeProfile>>(\n \"/agent-runtime-profiles\",\n body(params),\n ),\n ),\n );\n }\n\n async update(\n id: string,\n params: AgentRuntimeProfileUpdateParams,\n ): Promise<AgentRuntimeProfile> {\n return normalize(\n unwrap(\n await this.http.put<WireEnvelope<AgentRuntimeProfile>>(\n `/agent-runtime-profiles/${encodeURIComponent(id)}`,\n body(params),\n ),\n ),\n );\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete<void>(\n `/agent-runtime-profiles/${encodeURIComponent(id)}`,\n );\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport type RunTargetKind = \"sandbox\" | \"computer\";\nexport type RunStatus = \"running\" | \"succeeded\" | \"failed\" | \"canceled\";\n\nexport interface Run {\n id: string;\n run_group_id?: string;\n parent_run_id?: string;\n orchestration_role?: string;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n target_kind: RunTargetKind;\n target_id: string;\n runner: string;\n provider?: string | null;\n model?: string | null;\n instruction: string;\n status: RunStatus;\n metadata?: Record<string, unknown>;\n started_at?: string;\n finished_at?: string;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface RunFile {\n id: string;\n run_id?: string;\n target_kind?: RunTargetKind;\n target_id?: string;\n path: string;\n kind?: string;\n mime_type?: string;\n size_bytes?: number;\n sha256?: string;\n status?: string;\n persisted?: boolean;\n storage_backend?: string | null;\n persisted_at?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n name?: string | null;\n download_url?: string | null;\n signed_download_url?: string | null;\n}\n\nexport interface RunMessage {\n id?: string;\n role?: string;\n type?: string;\n text?: string;\n content?: string;\n created_at?: string | null;\n [key: string]: unknown;\n}\n\nexport interface RunCommandOutput {\n stdout?: string | null;\n stderr?: string | null;\n exit_code?: number | null;\n}\n\nexport interface RunDownload {\n id?: string;\n file_id: string;\n name?: string | null;\n path?: string;\n url: string;\n mime_type?: string | null;\n size_bytes?: number | null;\n status?: string;\n [key: string]: unknown;\n}\n\nexport interface RunPreview {\n id: string;\n run_id?: string;\n file_id?: string;\n type: string;\n title?: string | null;\n path?: string | null;\n url?: string | null;\n mime_type?: string | null;\n status?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface RunDiagnostic {\n id: string;\n run_id?: string;\n code: string;\n message?: string | null;\n retryable?: boolean;\n [key: string]: unknown;\n}\n\nexport interface RunOutputs {\n run_id: string;\n task_run_id?: string;\n status: RunStatus;\n result?: Record<string, unknown> | null;\n message?: string | null;\n messages: RunMessage[];\n command_output: RunCommandOutput;\n activity: RunActivity[];\n files: RunFile[];\n downloads: RunDownload[];\n previews: RunPreview[];\n diagnostics: RunDiagnostic[];\n [key: string]: unknown;\n}\n\nexport interface RunActivity {\n id: string;\n run_id?: string;\n sequence?: number;\n type: string;\n message?: string | null;\n payload?: Record<string, unknown>;\n created_at?: string | null;\n [key: string]: unknown;\n}\n\nexport interface RunExecutionPacket {\n goal?: string;\n context?: Record<string, unknown>;\n plan?: unknown;\n constraints?: unknown;\n acceptance_criteria?: unknown;\n [key: string]: unknown;\n}\n\nexport interface RunExpectedFile {\n path: string;\n name?: string;\n kind?: string;\n mime_type?: string;\n preview?: boolean;\n [key: string]: unknown;\n}\n\nexport interface RunExpectedOutputs {\n messages?: boolean;\n files?: Array<string | RunExpectedFile>;\n previews?: boolean | unknown[];\n [key: string]: unknown;\n}\n\nexport interface RunApprovalPolicy {\n publish?: \"manual\" | \"automatic\" | string;\n external_write?: \"manual\" | \"automatic\" | string;\n destructive_actions?: \"forbidden\" | \"manual\" | \"automatic\" | string;\n [key: string]: unknown;\n}\n\nexport interface RunCreateParams {\n instruction?: string;\n targetKind?: RunTargetKind;\n targetId?: string;\n runtimeId?: string;\n sandboxId?: string;\n /** Shortcut for a computer-backed run. */\n computerId?: string;\n /** Optional model/vendor configuration, not the runner selector. */\n provider?: string;\n runner?: string;\n model?: string;\n command?: string;\n runtimeCommand?: string;\n cwd?: string;\n timeout?: number;\n wait?: boolean;\n env?: Record<string, string>;\n agentRuntimeProfileId?: string;\n agentProfileId?: string;\n runGroupId?: string;\n parentRunId?: string;\n orchestrationRole?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n skipRuntimeProfile?: boolean;\n executionPacket?: RunExecutionPacket;\n expectedOutputs?: RunExpectedOutputs;\n approvalPolicy?: RunApprovalPolicy;\n capabilityRequirements?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface RunListParams {\n targetKind?: RunTargetKind;\n targetId?: string;\n runtimeId?: string;\n sandboxId?: string;\n computerId?: string;\n runGroupId?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n status?: RunStatus | string;\n}\n\nexport interface RunWaitOptions {\n timeoutMs?: number;\n pollIntervalMs?: number;\n terminalStatuses?: string[];\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction isTerminalStatus(status: unknown, terminalStatuses: string[]): boolean {\n return typeof status === \"string\" && terminalStatuses.includes(status.toLowerCase());\n}\n\nfunction sleep(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport class Runs {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: RunListParams = {}): Promise<Run[]> {\n const response = await this.http.get<unknown>(\n \"/runs\",\n stripUndefined({\n target_kind: params.targetKind,\n target_id: params.targetId,\n runtime_id: params.runtimeId,\n sandbox_id: params.sandboxId,\n computer_id: params.computerId,\n run_group_id: params.runGroupId,\n external_workspace_id: params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id: params.externalProjectId ?? params.external_project_id,\n status: params.status,\n }) as Record<string, string | number | boolean | undefined>,\n );\n const data = unwrap<Run[] | { runs?: Run[]; items?: Run[] }>(\n response,\n );\n if (Array.isArray(data)) return data;\n return data.runs ?? data.items ?? [];\n }\n\n async get(id: string): Promise<Run> {\n return unwrap<Run>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}`),\n );\n }\n\n async outputs(id: string): Promise<RunOutputs> {\n return unwrap<RunOutputs>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/outputs`),\n );\n }\n\n async files(id: string): Promise<RunFile[]> {\n const data = unwrap<RunFile[] | { files?: RunFile[]; items?: RunFile[] }>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/files`),\n );\n if (Array.isArray(data)) return data;\n return data.files ?? data.items ?? [];\n }\n\n async downloadFile(\n id: string,\n fileId: string,\n options: { inline?: boolean } = {},\n ): Promise<Uint8Array> {\n const query = options.inline ? \"?disposition=inline\" : \"\";\n return this.http.getBinary(\n `/runs/${encodeURIComponent(id)}/files/${encodeURIComponent(\n fileId,\n )}/download${query}`,\n );\n }\n\n async messages(id: string): Promise<RunMessage[]> {\n const data = unwrap<RunMessage[] | { messages?: RunMessage[]; items?: RunMessage[] }>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/messages`),\n );\n if (Array.isArray(data)) return data;\n return data.messages ?? data.items ?? [];\n }\n\n async commandOutput(id: string): Promise<RunCommandOutput> {\n return unwrap<RunCommandOutput>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/command-output`),\n );\n }\n\n async activity(id: string): Promise<RunActivity[]> {\n const data = unwrap<RunActivity[] | { activity?: RunActivity[]; items?: RunActivity[] }>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/activity`),\n );\n if (Array.isArray(data)) return data;\n return data.activity ?? data.items ?? [];\n }\n\n async previews(id: string): Promise<RunPreview[]> {\n const data = unwrap<RunPreview[] | { previews?: RunPreview[]; items?: RunPreview[] }>(\n await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/previews`),\n );\n if (Array.isArray(data)) return data;\n return data.previews ?? data.items ?? [];\n }\n\n async diagnostics(id: string): Promise<RunDiagnostic[]> {\n const data = unwrap<\n RunDiagnostic[] | { diagnostics?: RunDiagnostic[]; items?: RunDiagnostic[] }\n >(await this.http.get<unknown>(`/runs/${encodeURIComponent(id)}/diagnostics`));\n if (Array.isArray(data)) return data;\n return data.diagnostics ?? data.items ?? [];\n }\n\n streamActivity(id: string): AsyncIterableIterator<RunActivity> {\n return this.http.stream<RunActivity>(\n `/runs/${encodeURIComponent(id)}/activity`,\n );\n }\n\n async waitForCompletion(\n id: string,\n options: RunWaitOptions = {},\n ): Promise<Run> {\n const timeoutMs = options.timeoutMs ?? 15 * 60 * 1000;\n const pollIntervalMs = options.pollIntervalMs ?? 2000;\n const terminalStatuses = options.terminalStatuses ?? [\n \"succeeded\",\n \"failed\",\n \"canceled\",\n \"cancelled\",\n ];\n const deadline = Date.now() + timeoutMs;\n\n while (true) {\n const run = await this.get(id);\n if (isTerminalStatus(run.status, terminalStatuses)) return run;\n if (Date.now() >= deadline) {\n throw new Error(`Timed out waiting for run ${id}`);\n }\n await sleep(Math.min(pollIntervalMs, Math.max(0, deadline - Date.now())));\n }\n }\n\n async run(params: RunCreateParams): Promise<Run> {\n const body = stripUndefined({\n instruction: params.instruction,\n target_kind: params.targetKind,\n target_id: params.targetId,\n runtime_id: params.runtimeId,\n sandbox_id: params.sandboxId,\n computer_id: params.computerId,\n provider: params.provider,\n runner: params.runner,\n model: params.model,\n command: params.command,\n runtime_command: params.runtimeCommand,\n cwd: params.cwd,\n timeout: params.timeout,\n wait: params.wait,\n env: params.env,\n agent_runtime_profile_id: params.agentRuntimeProfileId,\n agent_profile_id: params.agentProfileId,\n run_group_id: params.runGroupId,\n parent_run_id: params.parentRunId,\n orchestration_role: params.orchestrationRole,\n external_workspace_id: params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id: params.externalProjectId ?? params.external_project_id,\n skip_agent_runtime_profile: params.skipRuntimeProfile,\n execution_packet: params.executionPacket,\n expected_outputs: params.expectedOutputs,\n approval_policy: params.approvalPolicy,\n capability_requirements: params.capabilityRequirements,\n metadata: params.metadata,\n });\n\n return unwrap<Run>(await this.http.post<unknown>(\"/runs\", body));\n }\n\n async cancel(id: string): Promise<Run> {\n return unwrap<Run>(\n await this.http.post<unknown>(\n `/runs/${encodeURIComponent(id)}/cancel`,\n {},\n ),\n );\n }\n}\n","/**\n * Analytics — overview + timeseries (admin scope).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AnalyticsFilters {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface TimeseriesParams extends AnalyticsFilters {\n metric?: string;\n period?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"analytics\", \"series\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Analytics {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the platform analytics overview. */\n async overview(\n filters: AnalyticsFilters = {},\n ): Promise<Record<string, unknown>> {\n const query = stripUndefined(filters as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/analytics/overview\", query);\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Get a timeseries for a metric over a period. */\n async timeseries(\n params: TimeseriesParams = {},\n ): Promise<Record<string, unknown>> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/analytics/timeseries\", query);\n return unwrap<Record<string, unknown>>(data);\n }\n}\n","/**\n * ApiKeys resource — programmatic API key management.\n *\n * The plaintext key is returned ONLY at create time. Store it immediately;\n * the server only keeps a hash.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type ApiKeyId = string & { readonly __brand: \"ApiKeyId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ApiKeyData {\n id: ApiKeyId;\n tenant_id: string;\n name: string;\n prefix?: string;\n scopes?: string[];\n expires_at?: string | null;\n last_used_at?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\nexport interface ApiKeyCreateResult extends ApiKeyData {\n /** One-time plaintext key. Store immediately. */\n token?: string;\n key?: string;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ApiKeyListParams {\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface ApiKeyCreateParams {\n name: string;\n scopes?: string[];\n expires_at?: string;\n expiresAt?: string;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"keys\", \"api_keys\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ApiKeys {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: ApiKeyListParams = {}): Promise<ApiKeyData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/api-keys\", query);\n return listItems<ApiKeyData>(data);\n }\n\n async create(params: ApiKeyCreateParams): Promise<ApiKeyCreateResult> {\n const { idempotencyKey: ikey, expiresAt, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n expires_at: expiresAt ?? rest.expires_at,\n });\n const data = await this.http.request<unknown>(\"/api-keys\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<ApiKeyCreateResult>(data);\n }\n\n /** POST /api/v1/api-keys/scoped — L2 delegation token bound to one external user. */\n async createScoped(params: {\n externalUserId: string;\n scopes: string[];\n expiresAt?: string;\n }): Promise<ApiKeyCreateResult> {\n const body = stripUndefined({\n external_user_id: params.externalUserId,\n scopes: params.scopes,\n expires_at: params.expiresAt,\n });\n return unwrap<ApiKeyCreateResult>(\n await this.http.post<unknown>(\"/api-keys/scoped\", body),\n );\n }\n\n async delete(keyId: string): Promise<void> {\n await this.http.delete<unknown>(`/api-keys/${keyId}`);\n }\n}\n","/**\n * Audit log — admin-scoped event history.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface AuditLogEvent {\n id?: string;\n action?: string;\n actor_id?: string;\n resource_type?: string;\n resource_id?: string;\n metadata?: Record<string, unknown>;\n inserted_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AuditLogListParams {\n action?: string;\n actor_id?: string;\n resource_type?: string;\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"audit_log\", \"events\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class AuditLog {\n constructor(private readonly http: HttpClient) {}\n\n /** List audit-log events with optional filters. */\n async list(params: AuditLogListParams = {}): Promise<AuditLogEvent[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/audit-log\", query);\n const result = unwrap<AuditLogEvent[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n}\n","/**\n * Benchmarks — admin-triggered platform benchmark runs.\n *\n * Routes: /admin/benchmarks/*\n * Requires admin credential (msk_a_* / msk_p_* or admin JWT).\n * Available kinds: cold_boot, fleet_routing, concurrent_create, full_e2e.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface BenchmarkCreateParams {\n kind: string;\n [key: string]: unknown;\n}\n\nexport interface BenchmarkCompareParams {\n left_id: string;\n right_id: string;\n [key: string]: unknown;\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"benchmarks\", \"samples\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"benchmarks\", \"samples\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class Benchmarks {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/admin/benchmarks\", query);\n return unwrapList(data);\n }\n\n async get(benchmarkId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/admin/benchmarks/${benchmarkId}`),\n );\n }\n\n /** Start a new benchmark run — pass kind and run-specific options. */\n async create(\n params: BenchmarkCreateParams,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n return unwrap(await this.http.post<unknown>(\"/admin/benchmarks\", body));\n }\n\n async cancel(benchmarkId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/benchmarks/${benchmarkId}/cancel`),\n );\n }\n\n /** Return per-iteration timing samples for a benchmark run. */\n async samples(\n benchmarkId: string,\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n `/admin/benchmarks/${benchmarkId}/samples`,\n query,\n );\n return unwrapList(data);\n }\n\n /** Compare two benchmark runs. */\n async compare(\n params: BenchmarkCompareParams,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.post<unknown>(\"/admin/benchmarks/compare\", body),\n );\n }\n}\n","/**\n * BuilderSessions — durable, cross-device Builder UI state.\n *\n * Routes: /builder/sessions/*\n * Accepts msk_* API keys or JWT.\n * Sessions are optimal_sessions with resource_type=\"sandbox\".\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"sessions\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"sessions\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport interface BuilderSessionListParams {\n limit?: number;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport class BuilderSessions {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n params: BuilderSessionListParams = {},\n ): Promise<Record<string, unknown>[]> {\n const query = { limit: 50, ...params } as Record<\n string,\n string | number | boolean | undefined\n >;\n return unwrapList(await this.http.get<unknown>(\"/builder/sessions\", query));\n }\n\n /**\n * Get a single session. The platform router only exposes index +\n * title-update + delete, so this filters list() client-side.\n */\n async get(sessionId: string): Promise<Record<string, unknown>> {\n const all = await this.list();\n return (\n all.find((s) => (s as Record<string, unknown>).id === sessionId) ?? {}\n );\n }\n\n async updateTitle(\n sessionId: string,\n title: string,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.patch<unknown>(`/builder/sessions/${sessionId}/title`, {\n title,\n }),\n );\n }\n\n async delete(sessionId: string): Promise<void> {\n await this.http.delete(`/builder/sessions/${sessionId}`);\n }\n}\n","/**\n * Channels — notification preferences + per-channel enable/disable.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ChannelData {\n id?: string;\n type?: string;\n name?: string;\n enabled?: boolean;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ChannelListParams {\n type?: string;\n enabled?: boolean;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface ChannelCreateParams {\n type: string;\n name?: string;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ChannelUpdateParams {\n name?: string;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface NotificationPrefsUpdateParams {\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"channels\", \"notifications\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction stripUndefObj(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Channels {\n constructor(private readonly http: HttpClient) {}\n\n /** List all channels for the tenant. */\n async list(params: ChannelListParams = {}): Promise<ChannelData[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/channels\", query);\n const result = unwrap<ChannelData[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n\n /** Get a single channel. */\n async get(channelId: string): Promise<ChannelData> {\n const data = await this.http.get<unknown>(`/channels/${channelId}`);\n return unwrap<ChannelData>(data);\n }\n\n /** Create a new channel. */\n async create(params: ChannelCreateParams): Promise<ChannelData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\"/channels\", body);\n return unwrap<ChannelData>(data);\n }\n\n /** Update a channel. */\n async update(\n channelId: string,\n params: ChannelUpdateParams,\n ): Promise<ChannelData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(`/channels/${channelId}`, body);\n return unwrap<ChannelData>(data);\n }\n\n /** Delete a channel. */\n async delete(channelId: string): Promise<void> {\n await this.http.delete<unknown>(`/channels/${channelId}`);\n }\n\n // ── Notification preferences ───────────────────────────────────────────────\n\n /** Get notification preferences across all channels. */\n async listNotifications(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/channels/notifications\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Update notification preferences. */\n async updateNotifications(\n params: NotificationPrefsUpdateParams,\n ): Promise<Record<string, unknown>> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\"/channels/notifications\", body);\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Enable a channel. */\n async enable(channelId: string): Promise<ChannelData> {\n const data = await this.http.post<unknown>(`/channels/${channelId}/enable`);\n return unwrap<ChannelData>(data);\n }\n\n /** Disable a channel. */\n async disable(channelId: string): Promise<ChannelData> {\n const data = await this.http.post<unknown>(\n `/channels/${channelId}/disable`,\n );\n return unwrap<ChannelData>(data);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction stripUndefined(input: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nexport type CloudProvider = \"aws\" | \"gcp\" | string;\nexport type CloudAccountMode = \"miosa_managed\" | \"customer_byoc\" | string;\nexport type CloudCredentialType =\n | \"miosa_owned\"\n | \"assume_role\"\n | \"access_key_smoke\"\n | \"service_account\"\n | string;\nexport type CloudAccountStatus =\n | \"draft\"\n | \"preflight_required\"\n | \"preflight_failed\"\n | \"ready\"\n | \"disabled\"\n | \"error\"\n | string;\nexport type CloudPoolKind = \"cloudburst\" | \"standing_byoc\" | string;\nexport type CloudPlacementScope = \"sandbox\" | \"computer\" | \"deployment\" | \"mixed\" | string;\nexport type CloudPreflightStatus = \"pass\" | \"warn\" | \"fail\" | string;\n\nexport interface CloudAccount {\n id: string;\n tenant_id?: string;\n tenantId?: string;\n provider: CloudProvider;\n mode: CloudAccountMode;\n display_name?: string;\n displayName?: string;\n external_account_id?: string | null;\n externalAccountId?: string | null;\n credential_type?: CloudCredentialType;\n credentialType?: CloudCredentialType;\n role_arn?: string | null;\n roleArn?: string | null;\n external_id?: string | null;\n externalId?: string | null;\n default_region?: string | null;\n defaultRegion?: string | null;\n status?: CloudAccountStatus;\n last_preflight_run_id?: string | null;\n lastPreflightRunId?: string | null;\n created_by_user_id?: string | null;\n createdByUserId?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n createdAt?: string;\n updated_at?: string;\n updatedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface CloudRegion {\n id: string;\n cloud_account_id?: string;\n cloudAccountId?: string;\n provider: CloudProvider;\n provider_region?: string;\n providerRegion?: string;\n provider_zone?: string | null;\n providerZone?: string | null;\n display_name?: string;\n displayName?: string;\n guest_supernet?: string | null;\n guestSupernet?: string | null;\n artifact_manifest_uri?: string | null;\n artifactManifestUri?: string | null;\n network_ref?: string | null;\n networkRef?: string | null;\n subnet_ref?: string | null;\n subnetRef?: string | null;\n security_group_refs?: string[];\n securityGroupRefs?: string[];\n instance_profile_ref?: string | null;\n instanceProfileRef?: string | null;\n status?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CloudPool {\n id: string;\n cloud_region_id?: string;\n cloudRegionId?: string;\n pool_kind?: CloudPoolKind;\n poolKind?: CloudPoolKind;\n node_type?: string;\n nodeType?: string;\n instance_type?: string;\n instanceType?: string;\n target_nodes?: number;\n targetNodes?: number;\n max_nodes?: number;\n maxNodes?: number;\n ttl_seconds?: number | null;\n ttlSeconds?: number | null;\n max_hourly_cents?: number | null;\n maxHourlyCents?: number | null;\n placement_scope?: CloudPlacementScope;\n placementScope?: CloudPlacementScope;\n status?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CloudPreflightRun {\n id: string;\n cloud_account_id?: string | null;\n cloudAccountId?: string | null;\n cloud_region_id?: string | null;\n cloudRegionId?: string | null;\n provider: CloudProvider;\n status: CloudPreflightStatus;\n checks?: Record<string, unknown>;\n raw_report?: Record<string, unknown>;\n rawReport?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n created_at?: string;\n createdAt?: string;\n [key: string]: unknown;\n}\n\nexport interface CloudAccountCreateParams {\n provider: CloudProvider;\n mode: CloudAccountMode;\n displayName?: string;\n display_name?: string;\n externalAccountId?: string;\n external_account_id?: string;\n credentialType?: CloudCredentialType;\n credential_type?: CloudCredentialType;\n defaultRegion?: string;\n default_region?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AttachAwsRoleParams {\n roleArn?: string;\n role_arn?: string;\n defaultRegion?: string;\n default_region?: string;\n}\n\nexport interface CloudRegionCreateParams {\n cloudAccountId?: string;\n cloud_account_id?: string;\n providerRegion?: string;\n provider_region?: string;\n providerZone?: string;\n provider_zone?: string;\n displayName?: string;\n display_name?: string;\n guestSupernet?: string;\n guest_supernet?: string;\n artifactManifestUri?: string;\n artifact_manifest_uri?: string;\n networkRef?: string;\n network_ref?: string;\n subnetRef?: string;\n subnet_ref?: string;\n securityGroupRefs?: string[];\n security_group_refs?: string[];\n instanceProfileRef?: string;\n instance_profile_ref?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CloudPoolCreateParams {\n cloudRegionId?: string;\n cloud_region_id?: string;\n poolKind?: CloudPoolKind;\n pool_kind?: CloudPoolKind;\n nodeType?: string;\n node_type?: string;\n instanceType?: string;\n instance_type?: string;\n targetNodes?: number;\n target_nodes?: number;\n maxNodes?: number;\n max_nodes?: number;\n ttlSeconds?: number;\n ttl_seconds?: number;\n maxHourlyCents?: number;\n max_hourly_cents?: number;\n placementScope?: CloudPlacementScope;\n placement_scope?: CloudPlacementScope;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CloudPreflightRecordParams {\n cloudAccountId?: string;\n cloud_account_id?: string;\n cloudRegionId?: string;\n cloud_region_id?: string;\n provider: CloudProvider;\n status: CloudPreflightStatus;\n checks?: Record<string, unknown>;\n rawReport?: Record<string, unknown>;\n raw_report?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CloudListParams {\n cloudAccountId?: string;\n cloud_account_id?: string;\n cloudRegionId?: string;\n cloud_region_id?: string;\n limit?: number;\n}\n\nfunction accountBody(params: CloudAccountCreateParams): Record<string, unknown> {\n return stripUndefined({\n provider: params.provider,\n mode: params.mode,\n display_name: params.displayName ?? params.display_name,\n external_account_id: params.externalAccountId ?? params.external_account_id,\n credential_type: params.credentialType ?? params.credential_type,\n default_region: params.defaultRegion ?? params.default_region,\n metadata: params.metadata,\n });\n}\n\nfunction regionBody(params: CloudRegionCreateParams): Record<string, unknown> {\n return stripUndefined({\n cloud_account_id: params.cloudAccountId ?? params.cloud_account_id,\n provider_region: params.providerRegion ?? params.provider_region,\n provider_zone: params.providerZone ?? params.provider_zone,\n display_name: params.displayName ?? params.display_name,\n guest_supernet: params.guestSupernet ?? params.guest_supernet,\n artifact_manifest_uri:\n params.artifactManifestUri ?? params.artifact_manifest_uri,\n network_ref: params.networkRef ?? params.network_ref,\n subnet_ref: params.subnetRef ?? params.subnet_ref,\n security_group_refs: params.securityGroupRefs ?? params.security_group_refs,\n instance_profile_ref: params.instanceProfileRef ?? params.instance_profile_ref,\n metadata: params.metadata,\n });\n}\n\nfunction poolBody(params: CloudPoolCreateParams): Record<string, unknown> {\n return stripUndefined({\n cloud_region_id: params.cloudRegionId ?? params.cloud_region_id,\n pool_kind: params.poolKind ?? params.pool_kind,\n node_type: params.nodeType ?? params.node_type,\n instance_type: params.instanceType ?? params.instance_type,\n target_nodes: params.targetNodes ?? params.target_nodes,\n max_nodes: params.maxNodes ?? params.max_nodes,\n ttl_seconds: params.ttlSeconds ?? params.ttl_seconds,\n max_hourly_cents: params.maxHourlyCents ?? params.max_hourly_cents,\n placement_scope: params.placementScope ?? params.placement_scope,\n metadata: params.metadata,\n });\n}\n\nfunction preflightBody(params: CloudPreflightRecordParams): Record<string, unknown> {\n return stripUndefined({\n cloud_account_id: params.cloudAccountId ?? params.cloud_account_id,\n cloud_region_id: params.cloudRegionId ?? params.cloud_region_id,\n provider: params.provider,\n status: params.status,\n checks: params.checks,\n raw_report: params.rawReport ?? params.raw_report,\n metadata: params.metadata,\n });\n}\n\nfunction query(params: CloudListParams = {}): Record<string, string | number | undefined> {\n return stripUndefined({\n cloud_account_id: params.cloudAccountId ?? params.cloud_account_id,\n cloud_region_id: params.cloudRegionId ?? params.cloud_region_id,\n limit: params.limit,\n }) as Record<string, string | number | undefined>;\n}\n\nexport class Cloud {\n constructor(private readonly http: HttpClient) {}\n\n async listAccounts(): Promise<CloudAccount[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudAccount[]>>(\"/cloud/accounts\"),\n );\n }\n\n async createAccount(params: CloudAccountCreateParams): Promise<CloudAccount> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudAccount>>(\n \"/cloud/accounts\",\n accountBody(params),\n ),\n );\n }\n\n async attachAwsRole(id: string, params: AttachAwsRoleParams): Promise<CloudAccount> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudAccount>>(\n `/cloud/accounts/${encodeURIComponent(id)}/aws/role`,\n stripUndefined({\n role_arn: params.roleArn ?? params.role_arn,\n default_region: params.defaultRegion ?? params.default_region,\n }),\n ),\n );\n }\n\n async listRegions(params: CloudListParams = {}): Promise<CloudRegion[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudRegion[]>>(\n \"/cloud/regions\",\n query(params),\n ),\n );\n }\n\n async createRegion(params: CloudRegionCreateParams): Promise<CloudRegion> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudRegion>>(\n \"/cloud/regions\",\n regionBody(params),\n ),\n );\n }\n\n async listPools(params: CloudListParams = {}): Promise<CloudPool[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudPool[]>>(\"/cloud/pools\", query(params)),\n );\n }\n\n async createPool(params: CloudPoolCreateParams): Promise<CloudPool> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudPool>>(\n \"/cloud/pools\",\n poolBody(params),\n ),\n );\n }\n\n async listPreflights(params: CloudListParams = {}): Promise<CloudPreflightRun[]> {\n return unwrap(\n await this.http.get<WireEnvelope<CloudPreflightRun[]>>(\n \"/cloud/preflights\",\n query(params),\n ),\n );\n }\n\n async recordPreflight(params: CloudPreflightRecordParams): Promise<CloudPreflightRun> {\n return unwrap(\n await this.http.post<WireEnvelope<CloudPreflightRun>>(\n \"/cloud/preflights\",\n preflightBody(params),\n ),\n );\n }\n}\n","/**\n * CommandCenter — agent fleet, orchestrations, metrics.\n *\n * Routes: /command-center/*\n * Requires JWT or msk_u_* API key.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"agents\",\n \"running\",\n \"metrics\",\n \"presets\",\n \"tiers\",\n \"items\",\n ]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"agents\", \"running\", \"presets\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class CommandCenter {\n constructor(private readonly http: HttpClient) {}\n\n /** Top-level snapshot (GET /command-center). */\n async overview(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/command-center\"));\n }\n\n async agents(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(\"/command-center/agents\"));\n }\n\n async runningAgents(): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\"/command-center/agents/running\"),\n );\n }\n\n async metrics(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/command-center/metrics\"));\n }\n\n async presets(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(\"/command-center/presets\"));\n }\n\n async tiers(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/command-center/tiers\"));\n }\n\n /** Stream live command-center events via SSE. */\n events(): AsyncIterableIterator<Record<string, unknown>> {\n return this.http.stream<Record<string, unknown>>(\"/command-center/events\");\n }\n}\n","/**\n * Community — public template + agent catalog with install + rate.\n *\n * Routes: /community/*\n * Requires JWT.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"templates\", \"agents\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"templates\", \"agents\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class Community {\n constructor(private readonly http: HttpClient) {}\n\n // ── Agents ────────────────────────────────────────────────────────────\n\n async listAgents(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrapList(await this.http.get<unknown>(\"/community/agents\", query));\n }\n\n async getAgent(agentId: string): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(`/community/agents/${agentId}`));\n }\n\n // ── Templates ─────────────────────────────────────────────────────────\n\n async listTemplates(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrapList(\n await this.http.get<unknown>(\"/community/templates\", query),\n );\n }\n\n async getTemplate(templateId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/community/templates/${templateId}`),\n );\n }\n\n /** Install a community template into the caller's tenant. */\n async installTemplate(\n templateId: string,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.post<unknown>(\n `/community/templates/${templateId}/install`,\n body,\n ),\n );\n }\n\n /** Rate a community template (1–5). */\n async rateTemplate(\n templateId: string,\n rating: number,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n rating,\n ...Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(\n await this.http.post<unknown>(\n `/community/templates/${templateId}/rate`,\n body,\n ),\n );\n }\n}\n","/**\n * Completions — OpenAI-compatible chat / text completion endpoints.\n *\n * Routes: POST /intelligence/completions, POST /intelligence/chat/completions\n * Requires an mki_* intelligence key. Supports stream=true via SSE.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\ninterface CompletionBase {\n model: string;\n prompt?: string | string[];\n [key: string]: unknown;\n}\n\nexport interface CompletionCreateParams extends CompletionBase {\n stream?: false;\n}\n\nexport interface CompletionCreateStreamParams extends CompletionBase {\n stream: true;\n}\n\ninterface ChatBase {\n model: string;\n messages: Record<string, unknown>[];\n [key: string]: unknown;\n}\n\nexport interface ChatCompletionCreateParams extends ChatBase {\n stream?: false;\n}\n\nexport interface ChatCompletionCreateStreamParams extends ChatBase {\n stream: true;\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n // Preserve OpenAI envelope (choices array present)\n if (Array.isArray(d.choices)) return d;\n if (\"data\" in d) return d.data as Record<string, unknown>;\n }\n return data as Record<string, unknown>;\n}\n\nfunction buildBody(params: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n}\n\nexport class Completions {\n constructor(private readonly http: HttpClient) {}\n\n /** Create a text completion (POST /intelligence/completions). */\n async create(\n params: CompletionCreateParams,\n ): Promise<Record<string, unknown>>;\n create(\n params: CompletionCreateStreamParams,\n ): AsyncIterableIterator<Record<string, unknown>>;\n create(\n params: CompletionCreateParams | CompletionCreateStreamParams,\n ):\n | Promise<Record<string, unknown>>\n | AsyncIterableIterator<Record<string, unknown>> {\n const body = buildBody(params);\n if (params.stream === true) {\n return this.http.stream<Record<string, unknown>>(\n \"/intelligence/completions\",\n { method: \"POST\", body },\n );\n }\n return this.http\n .post<unknown>(\"/intelligence/completions\", body)\n .then(unwrap);\n }\n\n /** Create a chat completion (POST /intelligence/chat/completions). */\n async chat(\n params: ChatCompletionCreateParams,\n ): Promise<Record<string, unknown>>;\n chat(\n params: ChatCompletionCreateStreamParams,\n ): AsyncIterableIterator<Record<string, unknown>>;\n chat(\n params: ChatCompletionCreateParams | ChatCompletionCreateStreamParams,\n ):\n | Promise<Record<string, unknown>>\n | AsyncIterableIterator<Record<string, unknown>> {\n const body = buildBody(params);\n if (params.stream === true) {\n return this.http.stream<Record<string, unknown>>(\n \"/intelligence/chat/completions\",\n { method: \"POST\", body },\n );\n }\n return this.http\n .post<unknown>(\"/intelligence/chat/completions\", body)\n .then(unwrap);\n }\n}\n","import type { HttpClient } from \"../http.js\";\nimport type { ComputerData } from \"../types.js\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type SnapshotStatus =\n | \"creating\"\n | \"uploading\"\n | \"ready\"\n | \"restoring\"\n | \"failed\"\n | \"deleted\";\n\nexport interface SnapshotData {\n id: string;\n computer_id: string;\n tenant_id: string;\n comment: string | null;\n status: SnapshotStatus;\n state_size_bytes: number | null;\n memory_size_bytes: number | null;\n rootfs_size_bytes: number | null;\n compressed_size_bytes: number | null;\n s3_bucket: string | null;\n s3_prefix: string | null;\n parent_snapshot_id: string | null;\n error: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface SnapshotCreateParams {\n /** Optional human-readable label for this checkpoint. */\n comment?: string;\n}\n\nexport interface SnapshotRestoreResult {\n /** The newly provisioned Computer booted from this snapshot. */\n data: ComputerData;\n /** The source snapshot used for the restore. */\n snapshot: SnapshotData;\n}\n\nexport interface SnapshotListResponse {\n data: SnapshotData[];\n}\n\nexport type SnapshotProgressEvent = {\n type: \"snapshot_progress\";\n snapshot_id: string;\n status: SnapshotStatus | string;\n step?: string;\n progress?: number;\n error?: string;\n};\n\n// ─── Checkpoints ─────────────────────────────────────────────────────────────\n\n/**\n * Firecracker microVM checkpoint management for a Computer.\n *\n * Accessed via `computer.checkpoints`.\n *\n * @example\n * ```ts\n * const snap = await computer.checkpoints.create({ comment: \"before upgrade\" });\n * // ... do risky work ...\n * const fresh = await computer.checkpoints.restore(snap.id);\n * ```\n */\nexport class Checkpoints {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/snapshots`;\n }\n\n /**\n * Create a checkpoint of the running computer.\n *\n * The returned snapshot starts in `creating` status and progresses\n * through `uploading` → `ready` asynchronously. Poll `get()` or subscribe\n * to progress events via `onProgress` to know when it's ready.\n *\n * @param params - Optional `comment` label.\n * @param onProgress - Optional callback fired for each SSE progress event.\n * Only called if a SSE ticket is available (the `events` endpoint requires\n * a prior `POST /api/v1/auth/sse-ticket` call).\n */\n async create(\n params: SnapshotCreateParams = {},\n onProgress?: (event: SnapshotProgressEvent) => void,\n ): Promise<SnapshotData> {\n const resp = await this.http.post<{ data: SnapshotData }>(\n this.base(),\n params,\n );\n const snap = resp.data;\n\n if (onProgress) {\n // Fire-and-forget progress subscription — caller decides how to await.\n void this.subscribeProgress(snap.id, onProgress).catch(() => {\n // Ignore SSE errors — the snapshot still proceeds on the server.\n });\n }\n\n return snap;\n }\n\n /**\n * List all non-deleted checkpoints for this computer.\n */\n async list(): Promise<SnapshotData[]> {\n const resp = await this.http.get<SnapshotListResponse>(this.base());\n return resp.data;\n }\n\n /**\n * Fetch a single checkpoint by id.\n */\n async get(id: string): Promise<SnapshotData> {\n const resp = await this.http.get<{ data: SnapshotData }>(\n `${this.base()}/${id}`,\n );\n return resp.data;\n }\n\n /**\n * Delete a checkpoint.\n *\n * Transitions the snapshot to `deleted` and schedules S3 cleanup on the\n * server. After deletion the snapshot object is returned with\n * `status: \"deleted\"`.\n */\n async delete(id: string): Promise<SnapshotData> {\n const resp = await this.http.delete<{ data: SnapshotData }>(\n `${this.base()}/${id}`,\n );\n return resp.data;\n }\n\n /**\n * Restore a checkpoint onto a fresh Computer.\n *\n * The returned Computer starts in `provisioning` status. Use\n * `computer.checkpoints.restore(id, onProgress)` to subscribe to restore\n * progress events.\n *\n * @param id - Snapshot id to restore (must be in `ready` status).\n * @param onProgress - Optional callback for SSE progress events during restore.\n * @returns A `SnapshotRestoreResult` containing the new Computer and the\n * source snapshot.\n */\n async restore(\n id: string,\n onProgress?: (event: SnapshotProgressEvent) => void,\n ): Promise<SnapshotRestoreResult> {\n const resp = await this.http.post<SnapshotRestoreResult>(\n `/computers/${this.computerId}/restore/${id}`,\n );\n\n if (onProgress) {\n void this.subscribeProgress(id, onProgress).catch(() => {});\n }\n\n return resp;\n }\n\n /**\n * Subscribe to Server-Sent Events for a snapshot's progress.\n *\n * Yields `SnapshotProgressEvent` objects until the stream closes or\n * `status` reaches a terminal state (`ready`, `failed`, `deleted`).\n *\n * Requires a valid SSE ticket obtained via\n * `POST /api/v1/auth/sse-ticket` and passed as `?ticket=<token>`.\n *\n * @param id - Snapshot id to watch.\n * @param ticket - Short-lived SSE ticket from the auth endpoint.\n */\n async *events(\n id: string,\n ticket: string,\n ): AsyncIterableIterator<SnapshotProgressEvent> {\n const path = `${this.base()}/${id}/events?ticket=${encodeURIComponent(ticket)}`;\n\n for await (const event of this.http.stream<SnapshotProgressEvent>(path)) {\n yield event;\n\n if (\n event.status === \"ready\" ||\n event.status === \"failed\" ||\n event.status === \"deleted\"\n ) {\n return;\n }\n }\n }\n\n // ── Private ──────────────────────────────────────────────────────────\n\n /**\n * Internal: subscribe to SSE progress events and call `cb` for each.\n *\n * Resolves when the stream closes. Any auth/network errors are silently\n * swallowed so the caller isn't blocked on progress-tracking failures.\n */\n private async subscribeProgress(\n id: string,\n cb: (event: SnapshotProgressEvent) => void,\n ): Promise<void> {\n // We don't have a ticket here (the SDK caller would need to obtain one\n // separately). This internal helper is a no-op placeholder — the public\n // `events()` iterator is the proper SSE interface.\n // Left here for future wiring once ticket issuance is unified.\n void id;\n void cb;\n }\n}\n","/**\n * ComputerAutoStop — read/update idle-timeout config.\n *\n * Routes:\n * GET /computers/:id/auto-stop\n * PATCH /computers/:id/auto-stop\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport class ComputerAutoStop {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Return the current auto-stop configuration. */\n async get(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/computers/${this.computerId}/auto-stop`),\n );\n }\n\n /** Set the idle timeout in seconds (0 disables auto-stop). */\n async update(seconds: number): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.patch<unknown>(\n `/computers/${this.computerId}/auto-stop`,\n { seconds },\n ),\n );\n }\n}\n","/**\n * ComputerEnv — encrypted env var CRUD scoped to one Computer.\n *\n * Routes:\n * GET /computers/:id/env → list\n * POST /computers/:id/env → create (single)\n * PATCH /computers/:id/env/:name → update value\n * DELETE /computers/:id/env/:name → remove\n *\n * bulkSet falls back to N individual POSTs (no bulk endpoint yet).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"env\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class ComputerEnv {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n private base(): string {\n return `/computers/${this.computerId}/env`;\n }\n\n /** List all env vars (values may be masked depending on server policy). */\n async list(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(this.base()));\n }\n\n /** Create a new env var. Use update() to change an existing one. */\n async set(name: string, value: string): Promise<Record<string, unknown>> {\n return unwrap(await this.http.post<unknown>(this.base(), { name, value }));\n }\n\n /** Patch the value of an existing env var by name. */\n async update(name: string, value: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.patch<unknown>(`${this.base()}/${name}`, { value }),\n );\n }\n\n /** Remove an env var by name. */\n async delete(name: string): Promise<void> {\n await this.http.delete(`${this.base()}/${name}`);\n }\n\n /** Convenience: create one env var per entry. */\n async bulkSet(\n env: Record<string, string>,\n ): Promise<Record<string, unknown>[]> {\n return Promise.all(\n Object.entries(env).map(([name, value]) => this.set(name, value)),\n );\n }\n}\n","/**\n * ComputerLogs — read + stream VM logs.\n *\n * Routes:\n * GET /computers/:id/logs — JSON snapshot (last N lines)\n * GET /computers/:id/logs/stream — text/event-stream of new lines (SSE)\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface ComputerLogsGetParams {\n lines?: number;\n since?: string;\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport class ComputerLogs {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Fetch the most recent log snapshot. */\n async get(\n params: ComputerLogsGetParams = {},\n ): Promise<Record<string, unknown>> {\n const query = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrap(\n await this.http.get<unknown>(`/computers/${this.computerId}/logs`, query),\n );\n }\n\n /** Stream live log events as SSE dicts `{type, data, id}`. */\n stream(): AsyncIterableIterator<Record<string, unknown>> {\n return this.http.stream<Record<string, unknown>>(\n `/computers/${this.computerId}/logs/stream`,\n );\n }\n}\n","/**\n * ComputerOsa — task dispatch to the in-VM OSA agent.\n *\n * Routes:\n * POST /computers/:id/osa/task\n * DELETE /computers/:id/osa/task\n * GET /computers/:id/osa/status\n * POST /computers/:id/osa/configure\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport class ComputerOsa {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Submit a free-form task to the in-VM OSA agent. */\n async submitTask(\n task: string,\n params: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n task,\n ...Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(\n await this.http.post<unknown>(\n `/computers/${this.computerId}/osa/task`,\n body,\n ),\n );\n }\n\n /** Cancel the currently-running OSA task, if any. */\n async cancelTask(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.delete<unknown>(`/computers/${this.computerId}/osa/task`),\n );\n }\n\n /** Return OSA's current task / configuration / health snapshot. */\n async status(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/computers/${this.computerId}/osa/status`),\n );\n }\n\n /** Update OSA runtime configuration (model, tools, secrets, etc.). */\n async configure(\n config: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(config).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.post<unknown>(\n `/computers/${this.computerId}/osa/configure`,\n body,\n ),\n );\n }\n}\n","/**\n * ComputerPorts — per-port visibility control.\n *\n * Routes:\n * GET /computers/:id/ports — list\n * POST /computers/:id/ports — create\n * PATCH /computers/:id/ports/:port — update\n * DELETE /computers/:id/ports/:port — delete\n *\n * The backend does not expose a single-port GET; get() filters the list\n * response client-side for ergonomics.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"ports\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class ComputerPorts {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n private base(): string {\n return `/computers/${this.computerId}/ports`;\n }\n\n async list(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(this.base()));\n }\n\n /** Return the port record for port, or null if not exposed. */\n async get(port: number): Promise<Record<string, unknown> | null> {\n const all = await this.list();\n return (\n all.find((r) => Number((r as Record<string, unknown>).port) === port) ??\n null\n );\n }\n\n /** Expose port with the given visibility options. */\n async create(\n port: number,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n port,\n ...Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(await this.http.post<unknown>(this.base(), body));\n }\n\n /** Patch visibility / auth options for port. */\n async update(\n port: number,\n opts: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.patch<unknown>(`${this.base()}/${port}`, body),\n );\n }\n\n /** Stop exposing port. */\n async delete(port: number): Promise<void> {\n await this.http.delete(`${this.base()}/${port}`);\n }\n}\n","/**\n * ComputerTerminal — PTY session management for a Computer.\n *\n * Routes:\n * POST /computers/:id/terminal\n * POST /computers/:id/pty/:sessionId/resize\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface TerminalCreateParams {\n cols?: number;\n rows?: number;\n shell?: string;\n cwd?: string;\n env?: Record<string, string>;\n}\n\nexport class ComputerTerminal {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n /** Open a new PTY session. Returns the server payload (session id, etc.). */\n async create(\n params: TerminalCreateParams = {},\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n const raw = await this.http.post<unknown>(\n `/computers/${this.computerId}/terminal`,\n body,\n );\n return unwrap(raw);\n }\n\n /** Resize an existing PTY session. */\n async resize(\n sessionId: string,\n cols: number,\n rows: number,\n ): Promise<Record<string, unknown>> {\n const raw = await this.http.post<unknown>(\n `/computers/${this.computerId}/pty/${sessionId}/resize`,\n { cols, rows },\n );\n return unwrap(raw);\n }\n}\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n","/**\n * ComputerVolumes — per-computer volume attachment.\n *\n * Routes:\n * GET /computers/:id/volumes — list attachments\n * POST /computers/:id/volumes — attach a volume\n * DELETE /computers/:id/volumes/:aid — detach an attachment\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"attachments\", \"volumes\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class ComputerVolumes {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n private base(): string {\n return `/computers/${this.computerId}/volumes`;\n }\n\n async list(): Promise<Record<string, unknown>[]> {\n return unwrapList(await this.http.get<unknown>(this.base()));\n }\n\n /** Attach volumeId at mountPath inside the VM. */\n async attach(\n volumeId: string,\n mountPath: string,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(this.base(), {\n volume_id: volumeId,\n mount_path: mountPath,\n }),\n );\n }\n\n /** Detach an existing attachment by attachment id. */\n async detach(attachmentId: string): Promise<void> {\n await this.http.delete(`${this.base()}/${attachmentId}`);\n }\n}\n","/**\n * MIOSA Connect — provider connectors and runtime tokens.\n *\n * Connect is the product-facing credential layer. Egress remains the runtime\n * enforcement layer underneath it.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport type ConnectorSubject =\n | { type: \"app\" }\n | { type: \"user\"; id: string; issuer?: string }\n | {\n type: \"jwt-bearer\";\n sub: string;\n iss?: string;\n aud?: string;\n additionalClaims?: Record<string, unknown>;\n };\n\nexport interface ConnectorData {\n id?: string;\n uid?: string;\n name?: string;\n provider?: string;\n type?: string;\n scope?: string;\n status?: string;\n managed?: boolean;\n display_name?: string;\n displayName?: string;\n masked_value?: string | null;\n expires_at?: string | null;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ExternalAttributionParams {\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface ConnectorListParams extends ExternalAttributionParams {\n scope?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n}\n\nexport interface ConnectorCreateParams extends ExternalAttributionParams {\n provider: string;\n name?: string;\n uid?: string;\n type?: string;\n scope?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n value?: string;\n token?: string;\n apiKey?: string;\n api_key?: string;\n credential?: {\n field?: string;\n value: string;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\nexport interface ConnectorTokenParams extends ExternalAttributionParams {\n subject?: ConnectorSubject;\n installationId?: string;\n installation_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n resourceType?: string;\n resource_type?: string;\n resourceId?: string;\n resource_id?: string;\n scopes?: string[];\n scope?: string[];\n audience?: string[];\n validityBufferMs?: number;\n validity_buffer_ms?: number;\n}\n\nexport interface ConnectorTokenResponse {\n token: string;\n expires_at?: string | number | null;\n expiresAt?: string | number | null;\n connector?: {\n id?: string;\n uid?: string;\n type?: string;\n [key: string]: unknown;\n };\n name?: string;\n installation_id?: string;\n installationId?: string;\n subject?: ConnectorSubject | Record<string, unknown>;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorInstallation {\n id?: string;\n connector_id?: string;\n connectorId?: string;\n installation_id?: string;\n installationId?: string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n subject_type?: string;\n subjectType?: string;\n scope?: string;\n status?: string;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorOauthProvider {\n id?: string;\n provider?: string;\n display_name?: string;\n displayName?: string;\n scopes?: string[];\n branding?: Record<string, unknown>;\n enabled?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ConnectorOauthStartParams extends ExternalAttributionParams {\n provider: string;\n scope?: string;\n exposeAsEnv?: boolean;\n expose_as_env?: boolean;\n ownerUserId?: string;\n owner_user_id?: string;\n}\n\nexport interface ConnectorOauthStartResponse {\n authorize_url?: string;\n authorizeUrl?: string;\n state?: string;\n [key: string]: unknown;\n}\n\nexport interface ConnectorProjectLink {\n id?: string;\n connector_id?: string;\n connectorId?: string;\n installation_id?: string | null;\n installationId?: string | null;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n environment?: string;\n resource_type?: string | null;\n resourceType?: string | null;\n resource_id?: string | null;\n resourceId?: string | null;\n allowed_subjects?: string[];\n allowedSubjects?: string[];\n allowed_scopes?: string[];\n allowedScopes?: string[];\n mode?: string;\n effect?: string;\n external_workspace_id?: string | null;\n externalWorkspaceId?: string | null;\n external_user_id?: string | null;\n externalUserId?: string | null;\n external_project_id?: string | null;\n externalProjectId?: string | null;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorProjectLinkParams extends ExternalAttributionParams {\n connector?: string;\n connectorId?: string;\n connector_id?: string;\n installationId?: string;\n installation_id?: string;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n resourceType?: string;\n resource_type?: string;\n resourceId?: string;\n resource_id?: string;\n allowedSubjects?: string[];\n allowed_subjects?: string[];\n allowedScopes?: string[];\n allowed_scopes?: string[];\n mode?: \"token-api\" | \"token_api\" | \"brokered-env\" | \"brokered_env\" | \"plain-env\" | \"plain_env\" | string;\n effect?: \"allow\" | \"deny\" | string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ConnectorLinkListParams extends ExternalAttributionParams {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n connectorId?: string;\n connector_id?: string;\n environment?: string;\n status?: string;\n}\n\nexport interface ConnectorDefault extends ConnectorProjectLink {\n default_scope?: string;\n defaultScope?: string;\n target?: string;\n}\n\nexport interface ConnectorDefaultParams extends ConnectorProjectLinkParams {\n defaultScope?: string;\n default_scope?: string;\n target?: \"all\" | \"sandbox\" | \"computer\" | \"agent\" | \"deployment\" | string;\n}\n\nexport interface ConnectorDefaultListParams extends ConnectorLinkListParams {\n defaultScope?: string;\n default_scope?: string;\n target?: string;\n}\n\nexport interface ConnectorTrigger {\n id?: string;\n connector_id?: string;\n connectorId?: string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n environment?: string;\n destination_path?: string | null;\n destinationPath?: string | null;\n destination_url?: string | null;\n destinationUrl?: string | null;\n event_types?: string[];\n eventTypes?: string[];\n status?: string;\n provider_adapter?: \"generic\" | \"github\" | \"slack\" | string;\n providerAdapter?: \"generic\" | \"github\" | \"slack\" | string;\n signing_secret_preview?: string | null;\n signingSecretPreview?: string | null;\n webhook_signing_secret?: string;\n webhookSigningSecret?: string;\n metadata?: Record<string, unknown>;\n webhook_token?: string;\n webhookToken?: string;\n [key: string]: unknown;\n}\n\nexport interface ConnectorTriggerParams extends ExternalAttributionParams {\n connector?: string;\n connectorId?: string;\n connector_id?: string;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n destinationPath?: string;\n destination_path?: string;\n destinationUrl?: string;\n destination_url?: string;\n eventTypes?: string[];\n event_types?: string[];\n status?: string;\n providerAdapter?: \"generic\" | \"github\" | \"slack\" | string;\n provider_adapter?: \"generic\" | \"github\" | \"slack\" | string;\n webhookSigningSecret?: string;\n webhook_signing_secret?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ConnectorTriggerListParams extends ConnectorLinkListParams {}\n\nexport interface ConnectorTriggerDelivery {\n id?: string;\n trigger_id?: string;\n triggerId?: string;\n connector_id?: string;\n connectorId?: string;\n event_type?: string;\n eventType?: string;\n provider_delivery_id?: string | null;\n providerDeliveryId?: string | null;\n state?: string;\n attempts?: number;\n destination_url?: string | null;\n destinationUrl?: string | null;\n status_code?: number | null;\n statusCode?: number | null;\n error?: string | null;\n latency_ms?: number | null;\n latencyMs?: number | null;\n delivered_at?: string | null;\n deliveredAt?: string | null;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ConnectorTriggerDeliveryListParams extends ConnectorLinkListParams {\n triggerId?: string;\n trigger_id?: string;\n eventType?: string;\n event_type?: string;\n}\n\nexport interface ConnectorApplicableDefaultParams extends ExternalAttributionParams {\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n target?: \"all\" | \"sandbox\" | \"computer\" | \"agent\" | \"deployment\" | string;\n resourceType?: string;\n resource_type?: string;\n resourceId?: string;\n resource_id?: string;\n}\n\nexport interface ConnectorMaterializeDefaultsParams extends ConnectorApplicableDefaultParams {\n envName?: string;\n env_name?: string;\n}\n\nexport interface ConnectorMaterializeDefaultsResult {\n applied?: number;\n results?: Array<Record<string, unknown>>;\n [key: string]: unknown;\n}\n\nexport interface SandboxConnectorBinding {\n id?: string;\n secret_id?: string;\n connector?: string;\n resource_id?: string;\n resource_type?: string;\n exposure?: string;\n expose_as_env?: string;\n env?: string;\n sync?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface SandboxConnectorAttachParams {\n connector: string;\n env: string;\n mode?: \"brokered-env\" | \"brokered_env\" | \"plain-env\" | \"plain_env\" | string;\n installationId?: string;\n installation_id?: string;\n projectId?: string;\n project_id?: string;\n environment?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface SandboxConnectorPreflightParams {\n connector?: string;\n provider?: string;\n}\n\nexport interface SandboxConnectorPreflightResult {\n sandbox_id?: string;\n sandboxId?: string;\n provider?: string;\n connector?: string;\n status?: Record<string, unknown>;\n sync?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of [\"data\", \"binding\"]) {\n if (key in p) return p[key] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of [\"data\", \"connectors\", \"items\"]) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const value of values) if (value !== undefined) return value;\n return undefined;\n}\n\nfunction externalAttributionParams(\n params: ExternalAttributionParams = {},\n): Record<string, unknown> {\n return {\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n external_project_id: pickFirst(\n params.externalProjectId,\n params.external_project_id,\n ),\n };\n}\n\nfunction queryFromListParams(\n params: ConnectorListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n scope: params.scope,\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n ...externalAttributionParams(params),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction bodyFromCreateParams(\n provider: string,\n params: Omit<ConnectorCreateParams, \"provider\">,\n): Record<string, unknown> {\n const credential =\n params.credential &&\n typeof params.credential === \"object\" &&\n !Array.isArray(params.credential)\n ? (params.credential as {\n field?: string;\n value?: string;\n [key: string]: unknown;\n })\n : undefined;\n const value = pickFirst(\n params.value,\n params.token,\n params.apiKey,\n params.api_key,\n credential?.value,\n );\n return stripUndefined({\n provider,\n type: String(params.type ?? \"api_key\").replaceAll(\"-\", \"_\"),\n name: params.name,\n uid: params.uid ?? `${provider}/${params.name ?? \"default\"}`,\n scope: params.scope,\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n ...externalAttributionParams(params),\n credential: value\n ? {\n field: credential?.field ?? \"api_key\",\n value,\n ...Object.fromEntries(\n Object.entries(credential ?? {}).filter(\n ([key]) => key !== \"value\" && key !== \"field\",\n ),\n ),\n }\n : credential,\n });\n}\n\nfunction tokenBody(params: ConnectorTokenParams = {}): Record<string, unknown> {\n return stripUndefined({\n subject: params.subject ?? { type: \"app\" },\n installation_id: pickFirst(params.installationId, params.installation_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n scopes: pickFirst(params.scopes, params.scope),\n audience: params.audience,\n ...externalAttributionParams(params),\n validity_buffer_ms: pickFirst(\n params.validityBufferMs,\n params.validity_buffer_ms,\n ),\n });\n}\n\nfunction queryFromLinkParams(\n params: ConnectorLinkListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n connector_id: pickFirst(params.connectorId, params.connector_id),\n environment: params.environment,\n status: params.status,\n ...externalAttributionParams(params),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction queryFromDefaultParams(\n params: ConnectorDefaultListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n ...queryFromLinkParams(params),\n default_scope: pickFirst(params.defaultScope, params.default_scope),\n target: params.target,\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction queryFromApplicableDefaultParams(\n params: ConnectorApplicableDefaultParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n target: params.target,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n ...externalAttributionParams(params),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction materializeDefaultsBody(\n params: ConnectorMaterializeDefaultsParams = {},\n): Record<string, unknown> {\n return stripUndefined({\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n target: params.target,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n env_name: pickFirst(params.envName, params.env_name),\n ...externalAttributionParams(params),\n });\n}\n\n\nfunction projectLinkBody(\n params: ConnectorProjectLinkParams,\n): Record<string, unknown> {\n return stripUndefined({\n connector: params.connector,\n connector_id: pickFirst(params.connectorId, params.connector_id),\n installation_id: pickFirst(params.installationId, params.installation_id),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n resource_type: pickFirst(params.resourceType, params.resource_type),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n allowed_subjects: pickFirst(\n params.allowedSubjects,\n params.allowed_subjects,\n ),\n allowed_scopes: pickFirst(params.allowedScopes, params.allowed_scopes),\n mode: params.mode?.replaceAll(\"-\", \"_\"),\n effect: params.effect,\n ...externalAttributionParams(params),\n metadata: params.metadata,\n });\n}\n\nfunction defaultBody(params: ConnectorDefaultParams): Record<string, unknown> {\n return stripUndefined({\n ...projectLinkBody(params),\n default_scope: pickFirst(params.defaultScope, params.default_scope),\n target: params.target,\n });\n}\n\nfunction triggerBody(params: ConnectorTriggerParams): Record<string, unknown> {\n return stripUndefined({\n connector: params.connector,\n connector_id: pickFirst(params.connectorId, params.connector_id),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n destination_path: pickFirst(params.destinationPath, params.destination_path),\n destination_url: pickFirst(params.destinationUrl, params.destination_url),\n event_types: pickFirst(params.eventTypes, params.event_types),\n status: params.status,\n provider_adapter: pickFirst(params.providerAdapter, params.provider_adapter),\n webhook_signing_secret: pickFirst(\n params.webhookSigningSecret,\n params.webhook_signing_secret,\n ),\n ...externalAttributionParams(params),\n metadata: params.metadata,\n });\n}\n\nfunction queryFromTriggerDeliveryParams(\n params: ConnectorTriggerDeliveryListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n ...queryFromLinkParams(params),\n trigger_id: pickFirst(params.triggerId, params.trigger_id),\n event_type: pickFirst(params.eventType, params.event_type),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction connectorPath(connector: string): string {\n return encodeURIComponent(connector);\n}\n\nexport class Connectors {\n constructor(private readonly http: HttpClient) {}\n\n /** List Connect provider connectors visible to the current tenant/workspace. */\n async list(params: ConnectorListParams = {}): Promise<ConnectorData[]> {\n const data = await this.http.get<unknown>(\n \"/connect/connectors\",\n queryFromListParams(params),\n );\n return unwrapList<ConnectorData>(data);\n }\n\n /** Show one connector by UID or id. */\n async get(connector: string): Promise<ConnectorData> {\n const data = await this.http.get<unknown>(\n `/connect/connectors/${connectorPath(connector)}`,\n );\n return unwrap<ConnectorData>(data);\n }\n\n show(connector: string): Promise<ConnectorData> {\n return this.get(connector);\n }\n\n /** Create an API-key backed connector. Raw values are never returned later. */\n async create(\n provider: string,\n params: Omit<ConnectorCreateParams, \"provider\">,\n ): Promise<ConnectorData> {\n const data = await this.http.post<unknown>(\n \"/connect/connectors\",\n bodyFromCreateParams(provider, params),\n );\n return unwrap<ConnectorData>(data);\n }\n\n /** Request a runtime provider token for a connector. */\n async getToken(\n connector: string,\n params: ConnectorTokenParams = {},\n ): Promise<ConnectorTokenResponse> {\n const data = await this.http.post<unknown>(\n `/connect/token/${connectorPath(connector)}`,\n tokenBody(params),\n );\n return unwrap<ConnectorTokenResponse>(data);\n }\n\n token(\n connector: string,\n params: ConnectorTokenParams = {},\n ): Promise<ConnectorTokenResponse> {\n return this.getToken(connector, params);\n }\n\n /** List OAuth app providers available for end-user authorization. */\n async oauthProviders(): Promise<ConnectorOauthProvider[]> {\n const data = await this.http.get<unknown>(\"/connect/oauth/providers\");\n return unwrapList<ConnectorOauthProvider>(data);\n }\n\n /** Start an OAuth authorization flow for a provider-backed connector. */\n async startOauth(\n params: ConnectorOauthStartParams,\n ): Promise<ConnectorOauthStartResponse> {\n const data = await this.http.post<unknown>(\n \"/connect/oauth/start\",\n stripUndefined({\n provider: params.provider,\n scope: params.scope,\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n ...externalAttributionParams(params),\n }),\n );\n return unwrap<ConnectorOauthStartResponse>(data);\n }\n\n /** List connector installations/grants. */\n async installations(\n params: ConnectorLinkListParams = {},\n ): Promise<ConnectorInstallation[]> {\n const data = await this.http.get<unknown>(\n \"/connect/installations\",\n queryFromLinkParams(params),\n );\n return unwrapList<ConnectorInstallation>(data);\n }\n\n /** List project/environment connector links. */\n async projectLinks(\n params: ConnectorLinkListParams = {},\n ): Promise<ConnectorProjectLink[]> {\n const data = await this.http.get<unknown>(\n \"/connect/project-links\",\n queryFromLinkParams(params),\n );\n return unwrapList<ConnectorProjectLink>(data);\n }\n\n /** List inherited connector defaults for tenant/workspace/project runtimes. */\n async defaults(\n params: ConnectorDefaultListParams = {},\n ): Promise<ConnectorDefault[]> {\n const data = await this.http.get<unknown>(\n \"/connect/defaults\",\n queryFromDefaultParams(params),\n );\n return unwrapList<ConnectorDefault>(data);\n }\n\n /** Resolve inherited connector defaults that apply to a runtime target. */\n async applicableDefaults(\n params: ConnectorApplicableDefaultParams = {},\n ): Promise<ConnectorDefault[]> {\n const data = await this.http.get<unknown>(\n \"/connect/defaults/applicable\",\n queryFromApplicableDefaultParams(params),\n );\n return unwrapList<ConnectorDefault>(data);\n }\n\n /** Materialize inherited connector defaults onto one runtime resource. */\n async materializeDefaults(\n params: ConnectorMaterializeDefaultsParams,\n ): Promise<ConnectorMaterializeDefaultsResult> {\n const data = await this.http.post<unknown>(\n \"/connect/defaults/materialize\",\n materializeDefaultsBody(params),\n );\n return unwrap<ConnectorMaterializeDefaultsResult>(data);\n }\n\n /** Create an inherited connector default for future runtime resources. */\n async createDefault(\n params: ConnectorDefaultParams,\n ): Promise<ConnectorDefault> {\n const data = await this.http.post<unknown>(\n \"/connect/defaults\",\n defaultBody(params),\n );\n return unwrap<ConnectorDefault>(data);\n }\n\n /** Delete an inherited connector default. */\n async deleteDefault(id: string): Promise<void> {\n await this.http.delete<unknown>(`/connect/defaults/${connectorPath(id)}`);\n }\n\n /** List inbound provider trigger forwarding definitions. */\n async triggers(\n params: ConnectorTriggerListParams = {},\n ): Promise<ConnectorTrigger[]> {\n const data = await this.http.get<unknown>(\n \"/connect/triggers\",\n queryFromLinkParams(params),\n );\n return unwrapList<ConnectorTrigger>(data);\n }\n\n /** Create an inbound provider trigger forwarding definition. */\n async createTrigger(params: ConnectorTriggerParams): Promise<ConnectorTrigger> {\n const data = await this.http.post<unknown>(\n \"/connect/triggers\",\n triggerBody(params),\n );\n return unwrap<ConnectorTrigger>(data);\n }\n\n /** List inbound provider trigger delivery attempts. */\n async triggerDeliveries(\n params: ConnectorTriggerDeliveryListParams = {},\n ): Promise<ConnectorTriggerDelivery[]> {\n const data = await this.http.get<unknown>(\n \"/connect/trigger-deliveries\",\n queryFromTriggerDeliveryParams(params),\n );\n return unwrapList<ConnectorTriggerDelivery>(data);\n }\n\n /** List delivery attempts for one trigger. */\n async triggerDeliveryHistory(triggerId: string): Promise<ConnectorTriggerDelivery[]> {\n const data = await this.http.get<unknown>(\n `/connect/triggers/${connectorPath(triggerId)}/deliveries`,\n );\n return unwrapList<ConnectorTriggerDelivery>(data);\n }\n\n /** Delete an inbound provider trigger forwarding definition. */\n async deleteTrigger(id: string): Promise<void> {\n await this.http.delete<unknown>(`/connect/triggers/${connectorPath(id)}`);\n }\n\n /** Link a connector to a project/environment/resource. */\n async createProjectLink(\n params: ConnectorProjectLinkParams,\n ): Promise<ConnectorProjectLink> {\n const data = await this.http.post<unknown>(\n \"/connect/project-links\",\n projectLinkBody(params),\n );\n return unwrap<ConnectorProjectLink>(data);\n }\n\n /** Delete a project connector link. */\n async deleteProjectLink(id: string): Promise<void> {\n await this.http.delete<unknown>(`/connect/project-links/${connectorPath(id)}`);\n }\n}\n\nclass RuntimeConnectors {\n constructor(\n private readonly http: HttpClient,\n private readonly basePath: string,\n ) {}\n\n /** List provider connector bindings for this runtime resource. */\n async list(): Promise<SandboxConnectorBinding[]> {\n const data = await this.http.get<unknown>(this.basePath);\n return unwrapList<SandboxConnectorBinding>(data);\n }\n\n /** Attach a connector to this runtime resource as a brokered env var. */\n async attach(\n params: SandboxConnectorAttachParams,\n ): Promise<SandboxConnectorBinding> {\n const data = await this.http.post<unknown>(\n this.basePath,\n stripUndefined({\n connector: params.connector,\n env_name: params.env,\n mode: params.mode?.replaceAll(\"-\", \"_\"),\n installation_id: pickFirst(\n params.installationId,\n params.installation_id,\n ),\n project_id: pickFirst(params.projectId, params.project_id),\n environment: params.environment,\n ...externalAttributionParams(params),\n }),\n );\n return unwrap<SandboxConnectorBinding>(data);\n }\n\n /** Detach a connector binding by binding id or connector UID. */\n async detach(bindingOrConnector: string): Promise<void> {\n await this.http.delete<unknown>(`${this.basePath}/${connectorPath(bindingOrConnector)}`);\n }\n\n /** Sync or materialize connector placeholder env vars for this runtime resource. */\n async sync(): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(`${this.basePath}/sync`, {});\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Verify a required connector is attached before agent work begins. */\n async preflight(\n params: SandboxConnectorPreflightParams = {},\n ): Promise<SandboxConnectorPreflightResult> {\n const data = await this.http.post<unknown>(\n `${this.basePath}/preflight`,\n stripUndefined(params as Record<string, unknown>),\n );\n return unwrap<SandboxConnectorPreflightResult>(data);\n }\n}\n\nexport class SandboxConnectors extends RuntimeConnectors {\n constructor(http: HttpClient, sandboxId: string) {\n super(http, `/sandboxes/${sandboxId}/connectors`);\n }\n}\n\nexport class ComputerConnectors extends RuntimeConnectors {\n constructor(http: HttpClient, computerId: string) {\n super(http, `/computers/${computerId}/connectors`);\n }\n}\n\nexport class DeploymentConnectors extends RuntimeConnectors {\n constructor(http: HttpClient, deploymentId: string) {\n super(http, `/deployments/${deploymentId}/connectors`);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\n// ─── Custom Domains ───────────────────────────────────────────────────────────\n\nexport type CustomDomainStatus =\n | \"pending\"\n | \"verified\"\n | \"active\"\n | \"failed\"\n | \"removed\";\n\nexport interface CustomDomainData {\n id: string;\n computer_id: string;\n tenant_id: string;\n fqdn: string;\n status: CustomDomainStatus;\n /** The CNAME target the user must point their DNS record at. */\n verification_target: string;\n /** Human-readable DNS setup instructions. */\n instructions: string;\n verified_at: string | null;\n tls_issued_at: string | null;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CustomDomainRegisterParams {\n fqdn: string;\n}\n\n// ─── CustomDomains resource ──────────────────────────────────────────────────\n\n/**\n * Custom domain management for a Computer.\n *\n * Accessed via `computer.domains`.\n *\n * ## Workflow\n * ```ts\n * // 1. Register the domain\n * const domain = await computer.domains.register(\"app.example.com\");\n * console.log(domain.instructions);\n * // => \"Add a CNAME record: app.example.com → <slug>.sandbox.miosa.ai\"\n *\n * // 2. Add the CNAME in your DNS registrar, then...\n *\n * // 3. Verify ownership\n * const verified = await computer.domains.verify(domain.id);\n * // Caddy auto-issues a TLS certificate after this point.\n * ```\n */\nexport class CustomDomains {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/domains`;\n }\n\n /**\n * Register a custom FQDN for this computer.\n *\n * Returns the domain record with `verification_target` and `instructions`\n * showing which CNAME record to add. The domain starts in `pending` status.\n *\n * @param fqdn - The fully-qualified domain name to register\n * (e.g. `\"app.example.com\"`). Must be lowercase RFC 1123, ≤ 253 chars,\n * and must NOT end with `miosa.ai`.\n */\n async register(fqdn: string): Promise<CustomDomainData> {\n const resp = await this.http.post<{ data: CustomDomainData }>(this.base(), {\n fqdn,\n });\n return resp.data;\n }\n\n /**\n * List all custom domains registered for this computer.\n */\n async list(): Promise<CustomDomainData[]> {\n const resp = await this.http.get<{ data: CustomDomainData[] }>(this.base());\n return resp.data;\n }\n\n /**\n * Verify DNS ownership of a registered domain.\n *\n * The control plane resolves the domain's CNAME and confirms it points to\n * the expected `verification_target`. On success the domain transitions to\n * `verified` status and Caddy will auto-issue a TLS certificate on the next\n * inbound request.\n *\n * @param id - The custom domain record id (from `register()` or `list()`).\n * @throws `ApiError` with code `CNAME_MISMATCH` if the CNAME doesn't match.\n * @throws `ApiError` with code `DNS_LOOKUP_FAILED` if DNS is unreachable.\n */\n async verify(id: string): Promise<CustomDomainData> {\n const resp = await this.http.post<{ data: CustomDomainData }>(\n `${this.base()}/${id}/verify`,\n );\n return resp.data;\n }\n\n /**\n * Delete a custom domain mapping.\n *\n * The domain is immediately removed from the routing cache and Caddy will\n * stop serving it on the next cert renewal cycle.\n *\n * @param id - The custom domain record id.\n */\n async delete(id: string): Promise<void> {\n await this.http.delete<{ id: string; deleted: boolean }>(\n `${this.base()}/${id}`,\n );\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n ClickParams,\n CursorInfo,\n DesktopActionResult,\n DoubleClickParams,\n DragParams,\n KeyParams,\n LaunchParams,\n ScrollParams,\n TypeParams,\n WaitParams,\n WindowFocusParams,\n WindowInfo,\n} from \"../types.js\";\n\nexport class Desktop {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/desktop`;\n }\n\n /** Capture a screenshot of the desktop. Returns raw PNG bytes. */\n async screenshot(): Promise<Uint8Array> {\n return this.http.getBinary(`${this.base()}/screenshot`);\n }\n\n /** Click at the given coordinates. */\n async click(\n x: number,\n y: number,\n button: ClickParams[\"button\"] = \"left\",\n ): Promise<DesktopActionResult> {\n return this.http.post<DesktopActionResult>(`${this.base()}/click`, {\n x,\n y,\n button,\n });\n }\n\n /** Double-click at the given coordinates. */\n async doubleClick(x: number, y: number): Promise<DesktopActionResult> {\n const params: DoubleClickParams = { x, y };\n return this.http.post<DesktopActionResult>(\n `${this.base()}/double-click`,\n params,\n );\n }\n\n /** Type text into the currently focused element. */\n async type(text: string, delay?: number): Promise<DesktopActionResult> {\n const params: TypeParams = { text, ...(delay !== undefined && { delay }) };\n return this.http.post<DesktopActionResult>(`${this.base()}/type`, params);\n }\n\n /** Send a key or key combination (e.g. \"Enter\", \"ctrl+c\"). */\n async key(key: string): Promise<DesktopActionResult> {\n const params: KeyParams = { key };\n return this.http.post<DesktopActionResult>(`${this.base()}/key`, params);\n }\n\n /** Scroll in a direction at an optional position. */\n async scroll(\n direction: ScrollParams[\"direction\"],\n clicks: number = 3,\n x?: number,\n y?: number,\n ): Promise<DesktopActionResult> {\n const params: ScrollParams = {\n direction,\n clicks,\n ...(x !== undefined && { x }),\n ...(y !== undefined && { y }),\n };\n return this.http.post<DesktopActionResult>(`${this.base()}/scroll`, params);\n }\n\n /** Click and drag from one coordinate to another. */\n async drag(\n fromX: number,\n fromY: number,\n toX: number,\n toY: number,\n ): Promise<DesktopActionResult> {\n const params: DragParams = {\n from_x: fromX,\n from_y: fromY,\n to_x: toX,\n to_y: toY,\n };\n return this.http.post<DesktopActionResult>(`${this.base()}/drag`, params);\n }\n\n /** Wait for the given number of seconds. */\n async wait(seconds: number): Promise<DesktopActionResult> {\n const params: WaitParams = { seconds };\n return this.http.post<DesktopActionResult>(`${this.base()}/wait`, params);\n }\n\n /** List all open windows on the desktop. */\n async windows(): Promise<WindowInfo[]> {\n const result = await this.http.get<{ windows: WindowInfo[] }>(\n `${this.base()}/windows`,\n );\n return result.windows;\n }\n\n /** Get the current cursor position. */\n async cursor(): Promise<CursorInfo> {\n return this.http.get<CursorInfo>(`${this.base()}/cursor`);\n }\n\n /** Bring the given window into focus. */\n async focusWindow(windowId: string): Promise<DesktopActionResult> {\n const params: WindowFocusParams = { window_id: windowId };\n return this.http.post<DesktopActionResult>(\n `${this.base()}/window/focus`,\n params,\n );\n }\n\n /** Launch an application by name. */\n async launch(appName: string): Promise<DesktopActionResult> {\n const params: LaunchParams = { app_name: appName };\n return this.http.post<DesktopActionResult>(`${this.base()}/launch`, params);\n }\n}\n","/**\n * Egress audit log — paginated query + live tail.\n *\n * Backed by:\n * GET /api/v1/egress/audit\n * GET /api/v1/egress/audit/:id\n *\n * `client.audit.tail()` long-polls the REST endpoint and yields new\n * events as they arrive. The sandbox-scoped variant\n * (`sandbox.audit.tail()`) upgrades to a live SSE connection backed by\n * `GET /sandboxes/:id/audit/stream` so the tail latency is\n * sub-second.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface EgressAuditEvent {\n id: string;\n action?: string;\n effect?: string;\n host?: string;\n method?: string;\n path?: string;\n status_code?: number;\n actor_id?: string;\n resource_id?: string;\n resource_type?: string;\n policy_id?: string;\n rule_id?: string;\n external_user_id?: string;\n external_workspace_id?: string;\n metadata?: Record<string, unknown>;\n inserted_at?: string;\n timestamp?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AuditListParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n host?: string;\n action?: string;\n since?: string;\n until?: string;\n limit?: number;\n cursor?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n}\n\nexport interface AuditTailParams extends AuditListParams {\n pollIntervalMs?: number;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\ninterface WireEnvelope<T> {\n data?: T;\n event?: T;\n items?: T;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"event\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"events\", \"audit\", \"items\"]) {\n if (Array.isArray(p[k])) return p[k] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const v of values) if (v !== undefined) return v;\n return undefined;\n}\n\nfunction listQuery(\n params: AuditListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n host: params.host,\n action: params.action,\n since: params.since,\n until: params.until,\n limit: params.limit,\n cursor: params.cursor,\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class EgressAudit {\n constructor(protected readonly http: HttpClient) {}\n\n /** List audit events with optional filters. */\n async list(params: AuditListParams = {}): Promise<EgressAuditEvent[]> {\n const data = await this.http.get<unknown>(\n \"/egress/audit\",\n listQuery(params),\n );\n return unwrapList<EgressAuditEvent>(data);\n }\n\n /** Get a single audit event by id. */\n async get(id: string): Promise<EgressAuditEvent> {\n const data = await this.http.get<WireEnvelope<EgressAuditEvent>>(\n `/egress/audit/${id}`,\n );\n return unwrap<EgressAuditEvent>(data);\n }\n\n /**\n * Long-poll the audit endpoint and yield new events as they appear.\n *\n * Tenant-wide `client.audit.tail()` is REST-based long polling. A\n * live WebSocket / SSE tail is only available for the sandbox-scoped\n * variant — see {@link SandboxAudit.tail}.\n */\n async *tail(\n params: AuditTailParams = {},\n ): AsyncIterableIterator<EgressAuditEvent> {\n const pollMs = params.pollIntervalMs ?? 2000;\n let since: string | undefined = params.since;\n const seen = new Set<string>();\n while (true) {\n const queryParams: AuditListParams = { ...params };\n if (since !== undefined) queryParams.since = since;\n const data = await this.http.get<unknown>(\n \"/egress/audit\",\n listQuery(queryParams),\n );\n const events = unwrapList<EgressAuditEvent>(data);\n for (const event of events) {\n if (event.id && seen.has(event.id)) continue;\n if (event.id) seen.add(event.id);\n yield event;\n const ts = event.inserted_at ?? event.timestamp;\n if (typeof ts === \"string\") since = ts;\n }\n await sleep(pollMs);\n }\n }\n}\n\n// ── Resource-scoped wrappers ─────────────────────────────────────────────────\n\n/**\n * Sandbox-bound view of {@link EgressAudit}. `list()` pre-scopes\n * `resource_id` + `resource_type=\"sandbox\"`. `tail()` upgrades to the\n * per-sandbox SSE stream for sub-second tail latency.\n */\nexport class SandboxAudit {\n protected readonly resourceType: string = \"sandbox\";\n private readonly delegate: EgressAudit;\n\n constructor(\n protected readonly http: HttpClient,\n protected readonly resourceId: string,\n ) {\n this.delegate = new EgressAudit(http);\n }\n\n list(params: AuditListParams = {}): Promise<EgressAuditEvent[]> {\n return this.delegate.list({\n ...params,\n resource_id: params.resourceId ?? params.resource_id ?? this.resourceId,\n resource_type:\n params.resourceType ?? params.resource_type ?? this.resourceType,\n });\n }\n\n get(id: string): Promise<EgressAuditEvent> {\n return this.delegate.get(id);\n }\n\n /** SSE tail of the sandbox-scoped audit stream. */\n async *tail(\n params: AuditTailParams = {},\n ): AsyncIterableIterator<EgressAuditEvent> {\n const streamPath =\n this.resourceType === \"sandbox\"\n ? `/sandboxes/${this.resourceId}/audit/stream`\n : `/computers/${this.resourceId}/audit/stream`;\n try {\n const stream = this.http.stream<EgressAuditEvent>(streamPath, {\n method: \"GET\",\n });\n for await (const event of stream) {\n yield event;\n }\n } catch {\n // SSE endpoint unavailable — fall back to long-poll on the\n // tenant-wide endpoint with this resource pre-filtered.\n yield* this.delegate.tail({\n ...params,\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n });\n }\n }\n}\n\n/** Computer-bound audit — same surface, `resource_type=\"computer\"`. */\nexport class ComputerAudit extends SandboxAudit {\n protected readonly resourceType: string = \"computer\";\n}\n","/**\n * Egress network — policies, allowlist, suggestions.\n *\n * Backed by:\n * GET /api/v1/egress/policies\n * POST /api/v1/egress/policies\n * PATCH /api/v1/egress/policies/:id (or no id for tenant default)\n *\n * GET /api/v1/egress/allowlist\n * POST /api/v1/egress/allowlist\n * DELETE /api/v1/egress/allowlist/:id\n *\n * GET /api/v1/egress/audit/suggestions\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport type EgressPolicyMode = \"enforce\" | \"audit_only\";\nexport type EgressRuleEffect = \"allow\" | \"deny\";\n\nexport interface EgressAllowlistRule {\n id: string;\n host: string;\n effect: EgressRuleEffect | string;\n methods?: string[];\n path_glob?: string | null;\n policy_id?: string | null;\n resource_id?: string | null;\n resource_type?: string | null;\n note?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\nexport interface EgressPolicyData {\n id: string;\n name?: string;\n mode: EgressPolicyMode | string;\n default_effect: EgressRuleEffect | string;\n description?: string | null;\n resource_id?: string | null;\n resource_type?: string | null;\n rules?: EgressAllowlistRule[];\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface EgressSuggestion {\n host: string;\n methods?: string[];\n path_glob?: string | null;\n count?: number;\n first_seen?: string;\n last_seen?: string;\n resource_id?: string | null;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AllowParams {\n methods?: string[];\n pathGlob?: string;\n path_glob?: string;\n policyId?: string;\n policy_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n note?: string;\n}\n\nexport interface PolicyCreateParams {\n name: string;\n mode?: EgressPolicyMode | string;\n defaultEffect?: EgressRuleEffect | string;\n default_effect?: EgressRuleEffect | string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n description?: string;\n}\n\nexport interface PolicyUpdateParams {\n mode?: EgressPolicyMode | string;\n defaultEffect?: EgressRuleEffect | string;\n default_effect?: EgressRuleEffect | string;\n name?: string;\n description?: string;\n}\n\nexport interface ModeParams {\n policyId?: string;\n policy_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\nexport interface SuggestionsParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n since?: string;\n}\n\nexport interface PolicyListParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\nexport interface RulesListParams {\n policyId?: string;\n policy_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\ninterface WireEnvelope<T> {\n data?: T;\n policy?: T;\n rule?: T;\n items?: T;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"policy\", \"rule\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"policies\",\n \"rules\",\n \"allowlist\",\n \"suggestions\",\n \"items\",\n ]) {\n if (Array.isArray(p[k])) return p[k] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const v of values) if (v !== undefined) return v;\n return undefined;\n}\n\nfunction ruleBody(\n host: string,\n params: AllowParams,\n effect: EgressRuleEffect,\n): Record<string, unknown> {\n return stripUndefined({\n host,\n effect,\n methods: params.methods,\n path_glob: pickFirst(params.pathGlob, params.path_glob),\n policy_id: pickFirst(params.policyId, params.policy_id),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n note: params.note,\n });\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class EgressNetwork {\n constructor(protected readonly http: HttpClient) {}\n\n // ── allowlist ─────────────────────────────────────────────────────────────\n\n /** Add an `allow` rule for `host` to the allowlist. */\n async allow(\n host: string,\n params: AllowParams = {},\n ): Promise<EgressAllowlistRule> {\n const data = await this.http.post<WireEnvelope<EgressAllowlistRule>>(\n \"/egress/allowlist\",\n ruleBody(host, params, \"allow\"),\n );\n return unwrap<EgressAllowlistRule>(data);\n }\n\n /** Add a `deny` rule for `host` to the allowlist. */\n async deny(\n host: string,\n params: AllowParams = {},\n ): Promise<EgressAllowlistRule> {\n const data = await this.http.post<WireEnvelope<EgressAllowlistRule>>(\n \"/egress/allowlist\",\n ruleBody(host, params, \"deny\"),\n );\n return unwrap<EgressAllowlistRule>(data);\n }\n\n /** List allowlist rules. */\n async rules(params: RulesListParams = {}): Promise<EgressAllowlistRule[]> {\n const query = stripUndefined({\n policy_id: pickFirst(params.policyId, params.policy_id),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/egress/allowlist\", query);\n return unwrapList<EgressAllowlistRule>(data);\n }\n\n /** Delete an allowlist rule by id. */\n async removeRule(ruleId: string): Promise<void> {\n await this.http.delete<unknown>(`/egress/allowlist/${ruleId}`);\n }\n\n // ── policies ──────────────────────────────────────────────────────────────\n\n /** List egress policies. */\n async policies(params: PolicyListParams = {}): Promise<EgressPolicyData[]> {\n const query = stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/egress/policies\", query);\n return unwrapList<EgressPolicyData>(data);\n }\n\n /** Create an egress policy. */\n async createPolicy(params: PolicyCreateParams): Promise<EgressPolicyData> {\n const body = stripUndefined({\n name: params.name,\n mode: params.mode ?? \"enforce\",\n default_effect: pickFirst(\n params.defaultEffect,\n params.default_effect,\n \"deny\" as EgressRuleEffect,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n description: params.description,\n });\n const data = await this.http.post<WireEnvelope<EgressPolicyData>>(\n \"/egress/policies\",\n body,\n );\n return unwrap<EgressPolicyData>(data);\n }\n\n /** Update an egress policy by id. */\n async updatePolicy(\n policyId: string,\n params: PolicyUpdateParams,\n ): Promise<EgressPolicyData> {\n const body = stripUndefined({\n mode: params.mode,\n default_effect: pickFirst(params.defaultEffect, params.default_effect),\n name: params.name,\n description: params.description,\n });\n const data = await this.http.patch<WireEnvelope<EgressPolicyData>>(\n `/egress/policies/${policyId}`,\n body,\n );\n return unwrap<EgressPolicyData>(data);\n }\n\n // ── mode helpers ──────────────────────────────────────────────────────────\n\n /** Set the policy to `mode=\"enforce\"` — denied egress is blocked. */\n async lockdown(params: ModeParams = {}): Promise<EgressPolicyData> {\n return this.setMode(\"enforce\", params);\n }\n\n /** Set the policy to `mode=\"audit_only\"` — log but do not block. */\n async observe(params: ModeParams = {}): Promise<EgressPolicyData> {\n return this.setMode(\"audit_only\", params);\n }\n\n private async setMode(\n mode: EgressPolicyMode,\n params: ModeParams,\n ): Promise<EgressPolicyData> {\n const policyId = pickFirst(params.policyId, params.policy_id);\n const resourceId = pickFirst(params.resourceId, params.resource_id);\n const resourceType = pickFirst(params.resourceType, params.resource_type);\n\n if (policyId) {\n return this.updatePolicy(policyId, { mode });\n }\n\n const body =\n resourceId !== undefined && resourceType !== undefined\n ? stripUndefined({\n mode,\n resource_id: resourceId,\n resource_type: resourceType,\n })\n : { mode };\n const data = await this.http.patch<WireEnvelope<EgressPolicyData>>(\n \"/egress/policies\",\n body,\n );\n return unwrap<EgressPolicyData>(data);\n }\n\n // ── suggestions ───────────────────────────────────────────────────────────\n\n /** AI-generated allowlist suggestions from recent denied egress. */\n async suggestions(\n params: SuggestionsParams = {},\n ): Promise<EgressSuggestion[]> {\n const query = stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n since: params.since ?? \"7d\",\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n \"/egress/audit/suggestions\",\n query,\n );\n return unwrapList<EgressSuggestion>(data);\n }\n}\n\n// ── Resource-scoped wrappers ─────────────────────────────────────────────────\n\n/**\n * Sandbox-bound view of {@link EgressNetwork}. Pre-scopes\n * `resource_id` + `resource_type=\"sandbox\"` on every call.\n */\nexport class SandboxNetwork {\n protected readonly resourceType: string = \"sandbox\";\n private readonly delegate: EgressNetwork;\n\n constructor(\n http: HttpClient,\n protected readonly resourceId: string,\n ) {\n this.delegate = new EgressNetwork(http);\n }\n\n private resolvedResourceId(params: {\n resourceId?: string;\n resource_id?: string;\n }): string {\n return params.resourceId ?? params.resource_id ?? this.resourceId;\n }\n\n private resolvedResourceType(params: {\n resourceType?: string;\n resource_type?: string;\n }): string {\n return params.resourceType ?? params.resource_type ?? this.resourceType;\n }\n\n allow(host: string, params: AllowParams = {}): Promise<EgressAllowlistRule> {\n return this.delegate.allow(host, {\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n deny(host: string, params: AllowParams = {}): Promise<EgressAllowlistRule> {\n return this.delegate.deny(host, {\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n rules(params: RulesListParams = {}): Promise<EgressAllowlistRule[]> {\n return this.delegate.rules({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n removeRule(ruleId: string): Promise<void> {\n return this.delegate.removeRule(ruleId);\n }\n\n lockdown(params: { policyId?: string } = {}): Promise<EgressPolicyData> {\n const body: ModeParams = {\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n };\n if (params.policyId !== undefined) body.policyId = params.policyId;\n return this.delegate.lockdown(body);\n }\n\n observe(params: { policyId?: string } = {}): Promise<EgressPolicyData> {\n const body: ModeParams = {\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n };\n if (params.policyId !== undefined) body.policyId = params.policyId;\n return this.delegate.observe(body);\n }\n\n suggestions(params: { since?: string } = {}): Promise<EgressSuggestion[]> {\n const body: SuggestionsParams = {\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n };\n if (params.since !== undefined) body.since = params.since;\n return this.delegate.suggestions(body);\n }\n\n policies(): Promise<EgressPolicyData[]> {\n return this.delegate.policies({\n resource_id: this.resourceId,\n resource_type: this.resourceType,\n });\n }\n}\n\n/** Computer-bound network — same surface, `resource_type=\"computer\"`. */\nexport class ComputerNetwork extends SandboxNetwork {\n protected readonly resourceType: string = \"computer\";\n}\n","/**\n * Egress secrets — encrypted API key + OAuth credential vault.\n *\n * Backed by:\n * POST /api/v1/egress/secrets\n * GET /api/v1/egress/secrets\n * GET /api/v1/egress/secrets/:id\n * PATCH /api/v1/egress/secrets/:id (rotate)\n * DELETE /api/v1/egress/secrets/:id\n *\n * POST /api/v1/egress/bindings\n * GET /api/v1/egress/bindings\n * DELETE /api/v1/egress/bindings/:id\n *\n * GET /api/v1/egress/oauth/providers\n * POST /api/v1/egress/oauth/start\n * GET /api/v1/egress/oauth/status?state=...\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport type EgressSecretType =\n | \"api_key\"\n | \"oauth_token\"\n | \"bearer\"\n | \"basic\"\n | \"generic\";\n\nexport type EgressSecretScope =\n | \"user\"\n | \"workspace\"\n | \"tenant\"\n | \"external_user\"\n | \"external_workspace\";\n\nexport interface EgressSecretData {\n id: string;\n name?: string;\n type?: EgressSecretType | string;\n scope?: EgressSecretScope | string;\n workspace_id?: string | null;\n owner_user_id?: string | null;\n external_user_id?: string | null;\n external_workspace_id?: string | null;\n resource_id?: string | null;\n resource_type?: string | null;\n masked_value?: string | null;\n expires_at?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface EgressBindingData {\n id: string;\n secret_id: string;\n resource_id: string;\n resource_type: string;\n expose_as_env: string;\n created_at?: string;\n [key: string]: unknown;\n}\n\nexport interface OauthProvider {\n name: string;\n display_name?: string;\n scopes?: string[];\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SecretSetParams {\n name: string;\n value: string;\n type?: EgressSecretType | string;\n scope?: EgressSecretScope | string;\n exposeAsEnv?: string;\n expose_as_env?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n refreshToken?: string;\n refresh_token?: string;\n expiresAt?: string;\n expires_at?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SecretListParams {\n scope?: string;\n type?: string;\n workspaceId?: string;\n workspace_id?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n}\n\nexport interface SecretRotateParams {\n newValue?: string;\n new_value?: string;\n value?: string;\n refreshToken?: string;\n refresh_token?: string;\n expiresAt?: string;\n expires_at?: string;\n}\n\nexport interface BindingCreateParams {\n secretId?: string;\n secret_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n exposeAsEnv?: string;\n expose_as_env?: string;\n}\n\nexport interface BindingListParams {\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n secretId?: string;\n secret_id?: string;\n}\n\nexport interface OauthConnectParams {\n provider: string;\n exposeAsEnv?: string;\n expose_as_env?: string;\n scope?: string;\n ownerUserId?: string;\n owner_user_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n resourceId?: string;\n resource_id?: string;\n resourceType?: string;\n resource_type?: string;\n redirectUri?: string;\n redirect_uri?: string;\n}\n\nexport interface OauthStartResult {\n authorize_url: string;\n authorizeUrl?: string;\n state: string;\n provider?: string;\n expires_at?: string;\n [key: string]: unknown;\n}\n\nexport interface OauthStatusResult {\n status: string;\n state?: string;\n secret_id?: string;\n error?: string;\n message?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\ninterface WireEnvelope<T> {\n data?: T;\n secret?: T;\n binding?: T;\n items?: T;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"secret\", \"binding\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"secrets\", \"bindings\", \"providers\", \"items\"]) {\n if (Array.isArray(p[k])) return p[k] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const v of values) if (v !== undefined) return v;\n return undefined;\n}\n\nfunction setBody(params: SecretSetParams): Record<string, unknown> {\n return stripUndefined({\n name: params.name,\n value: params.value,\n type: params.type ?? \"api_key\",\n scope: params.scope ?? \"user\",\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n refresh_token: pickFirst(params.refreshToken, params.refresh_token),\n expires_at: pickFirst(params.expiresAt, params.expires_at),\n metadata: params.metadata,\n });\n}\n\nfunction listQuery(\n params: SecretListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n scope: params.scope,\n type: params.type,\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction rotateBody(params: SecretRotateParams): Record<string, unknown> {\n return stripUndefined({\n value: pickFirst(params.newValue, params.new_value, params.value),\n refresh_token: pickFirst(params.refreshToken, params.refresh_token),\n expires_at: pickFirst(params.expiresAt, params.expires_at),\n });\n}\n\nfunction bindingBody(params: BindingCreateParams): Record<string, unknown> {\n return stripUndefined({\n secret_id: pickFirst(params.secretId, params.secret_id),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n });\n}\n\nfunction bindingQuery(\n params: BindingListParams,\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n secret_id: pickFirst(params.secretId, params.secret_id),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction oauthBody(params: OauthConnectParams): Record<string, unknown> {\n return stripUndefined({\n provider: params.provider,\n expose_as_env: pickFirst(params.exposeAsEnv, params.expose_as_env),\n scope: params.scope,\n owner_user_id: pickFirst(params.ownerUserId, params.owner_user_id),\n external_user_id: pickFirst(params.externalUserId, params.external_user_id),\n external_workspace_id: pickFirst(\n params.externalWorkspaceId,\n params.external_workspace_id,\n ),\n resource_id: pickFirst(params.resourceId, params.resource_id),\n resource_type: pickFirst(params.resourceType, params.resource_type),\n redirect_uri: pickFirst(params.redirectUri, params.redirect_uri),\n });\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// ── OAuth flow handle ────────────────────────────────────────────────────────\n\n/**\n * A pending OAuth flow.\n *\n * The SDK does NOT auto-open a browser — the caller is responsible for\n * surfacing `authorizeUrl` to the end user. Once the user grants\n * consent, call `waitForCompletion()` to poll the upstream provider\n * status.\n */\nexport class OAuthFlow {\n readonly authorizeUrl: string;\n readonly state: string;\n readonly provider?: string;\n readonly data: OauthStartResult;\n private readonly http: HttpClient;\n\n constructor(http: HttpClient, payload: OauthStartResult, provider?: string) {\n this.http = http;\n this.authorizeUrl = payload.authorize_url ?? payload.authorizeUrl ?? \"\";\n this.state = payload.state ?? \"\";\n if (provider !== undefined) {\n this.provider = provider;\n }\n this.data = payload;\n }\n\n /**\n * Poll `GET /egress/oauth/status?state=...` until the flow completes.\n *\n * Returns the status payload once the upstream provider issues\n * tokens. Rejects with a `TimeoutError`-style Error if the flow does\n * not complete within `timeoutSec` seconds, or if the upstream\n * returns a failed status.\n */\n async waitForCompletion(\n options: { timeoutSec?: number; pollIntervalMs?: number } = {},\n ): Promise<OauthStatusResult> {\n const timeoutSec = options.timeoutSec ?? 300;\n const pollMs = options.pollIntervalMs ?? 2000;\n const deadline = Date.now() + timeoutSec * 1000;\n while (Date.now() < deadline) {\n const data = await this.http.get<unknown>(\"/egress/oauth/status\", {\n state: this.state,\n });\n const payload = unwrap<OauthStatusResult>(data) ?? {};\n const status = (payload as OauthStatusResult).status;\n if (\n status === \"completed\" ||\n status === \"ready\" ||\n status === \"succeeded\"\n ) {\n return payload as OauthStatusResult;\n }\n if (status === \"failed\" || status === \"error\" || status === \"denied\") {\n throw new Error(\n `OAuth flow ${this.state} ended in status=${status}: ${\n payload.error ?? payload.message ?? \"no detail\"\n }`,\n );\n }\n await sleep(pollMs);\n }\n throw new Error(\n `OAuth flow ${this.state} did not complete within ${timeoutSec}s`,\n );\n }\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class EgressSecrets {\n constructor(protected readonly http: HttpClient) {}\n\n /**\n * Create a secret. When `exposeAsEnv` is provided together with\n * `resourceId` the backend also creates a binding so the value is\n * injected as an env-var on that resource.\n */\n async set(params: SecretSetParams): Promise<EgressSecretData> {\n const data = await this.http.post<WireEnvelope<EgressSecretData>>(\n \"/egress/secrets\",\n setBody(params),\n );\n return unwrap<EgressSecretData>(data);\n }\n\n /** List secrets. */\n async list(params: SecretListParams = {}): Promise<EgressSecretData[]> {\n const data = await this.http.get<unknown>(\n \"/egress/secrets\",\n listQuery(params),\n );\n return unwrapList<EgressSecretData>(data);\n }\n\n /** Get a single secret by id. */\n async get(id: string): Promise<EgressSecretData> {\n const data = await this.http.get<WireEnvelope<EgressSecretData>>(\n `/egress/secrets/${id}`,\n );\n return unwrap<EgressSecretData>(data);\n }\n\n /** Rotate the secret's value. */\n async rotate(\n id: string,\n params: SecretRotateParams | string,\n ): Promise<EgressSecretData> {\n const body =\n typeof params === \"string\"\n ? rotateBody({ newValue: params })\n : rotateBody(params);\n const data = await this.http.patch<WireEnvelope<EgressSecretData>>(\n `/egress/secrets/${id}`,\n body,\n );\n return unwrap<EgressSecretData>(data);\n }\n\n /** Delete a secret. */\n async delete(id: string): Promise<void> {\n await this.http.delete<unknown>(`/egress/secrets/${id}`);\n }\n\n // ── bindings ───────────────────────────────────────────────────────────────\n\n /** Bind a secret to a resource as an env var. */\n async createBinding(params: BindingCreateParams): Promise<EgressBindingData> {\n const data = await this.http.post<WireEnvelope<EgressBindingData>>(\n \"/egress/bindings\",\n bindingBody(params),\n );\n return unwrap<EgressBindingData>(data);\n }\n\n /** List secret bindings. */\n async listBindings(\n params: BindingListParams = {},\n ): Promise<EgressBindingData[]> {\n const data = await this.http.get<unknown>(\n \"/egress/bindings\",\n bindingQuery(params),\n );\n return unwrapList<EgressBindingData>(data);\n }\n\n /** Delete a binding. */\n async deleteBinding(id: string): Promise<void> {\n await this.http.delete<unknown>(`/egress/bindings/${id}`);\n }\n\n // ── OAuth Connect ──────────────────────────────────────────────────────────\n\n /** List OAuth providers visible to the current tenant. */\n async providers(): Promise<OauthProvider[]> {\n const data = await this.http.get<unknown>(\"/egress/oauth/providers\");\n return unwrapList<OauthProvider>(data);\n }\n\n /**\n * Start an OAuth Connect flow.\n *\n * Returns an {@link OAuthFlow} — the caller must surface\n * `flow.authorizeUrl` to the end user (the SDK does NOT open the\n * browser) and then call `flow.waitForCompletion()` to receive the\n * resulting secret id.\n */\n async connect(params: OauthConnectParams): Promise<OAuthFlow> {\n const data = await this.http.post<WireEnvelope<OauthStartResult>>(\n \"/egress/oauth/start\",\n oauthBody(params),\n );\n const payload = unwrap<OauthStartResult>(data) ?? ({} as OauthStartResult);\n return new OAuthFlow(this.http, payload, params.provider);\n }\n}\n\n// ── Resource-scoped wrappers ─────────────────────────────────────────────────\n\n/**\n * Sandbox-bound view of {@link EgressSecrets}. Pre-scopes\n * `resource_id` + `resource_type=\"sandbox\"` on every call.\n */\nexport class SandboxSecrets {\n protected readonly resourceType: string = \"sandbox\";\n private readonly delegate: EgressSecrets;\n\n constructor(\n http: HttpClient,\n protected readonly resourceId: string,\n ) {\n this.delegate = new EgressSecrets(http);\n }\n\n private resolvedResourceId(params: {\n resourceId?: string;\n resource_id?: string;\n }): string {\n return params.resourceId ?? params.resource_id ?? this.resourceId;\n }\n\n private resolvedResourceType(params: {\n resourceType?: string;\n resource_type?: string;\n }): string {\n return params.resourceType ?? params.resource_type ?? this.resourceType;\n }\n\n set(params: SecretSetParams): Promise<EgressSecretData> {\n return this.delegate.set({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n list(params: SecretListParams = {}): Promise<EgressSecretData[]> {\n return this.delegate.list({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n get(id: string): Promise<EgressSecretData> {\n return this.delegate.get(id);\n }\n\n rotate(\n id: string,\n params: SecretRotateParams | string,\n ): Promise<EgressSecretData> {\n return this.delegate.rotate(id, params);\n }\n\n delete(id: string): Promise<void> {\n return this.delegate.delete(id);\n }\n\n connect(params: OauthConnectParams): Promise<OAuthFlow> {\n return this.delegate.connect({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n\n listBindings(params: BindingListParams = {}): Promise<EgressBindingData[]> {\n return this.delegate.listBindings({\n ...params,\n resource_id: this.resolvedResourceId(params),\n resource_type: this.resolvedResourceType(params),\n });\n }\n}\n\n/** Computer-bound secrets — same shape, `resource_type=\"computer\"`. */\nexport class ComputerSecrets extends SandboxSecrets {\n protected readonly resourceType: string = \"computer\";\n}\n","import EventEmitter from \"node:events\";\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\n/** Producer names that can be subscribed to. */\nexport type EventProducer =\n | \"window\"\n | \"clipboard\"\n | \"file\"\n | \"process\"\n | \"idle\";\n\n/** Options for `Events.subscribe()`. */\nexport interface EventSubscribeOptions {\n /** At least one producer is required. */\n subscribe: EventProducer[];\n /** Paths to watch for the `file` producer. Defaults to `[\"/home/user\"]`. */\n paths?: string[];\n /** Idle threshold in seconds for the `idle` producer. Defaults to 30. */\n idleThresholdSec?: number;\n}\n\n// ── Emitted event payload types (indexed by event type string) ────────────────\n\nexport interface WindowFocusChangedPayload {\n window_id: string;\n pid: string;\n title: string;\n}\n\nexport interface WindowOpenedPayload {\n window_id: string;\n pid: string;\n title: string;\n}\n\nexport interface WindowClosedPayload {\n window_id: string;\n pid: string;\n title: string;\n}\n\nexport interface ClipboardChangedPayload {\n size_bytes: number;\n}\n\nexport interface FileCreatedPayload {\n path: string;\n}\n\nexport interface FileModifiedPayload {\n path: string;\n}\n\nexport interface FileDeletedPayload {\n path: string;\n}\n\nexport interface ProcessStartedPayload {\n pid: number;\n cmd: string;\n ppid: string;\n}\n\nexport interface ProcessStoppedPayload {\n pid: number;\n cmd: string;\n}\n\nexport interface IdleInactivePayload {\n idle_ms: number;\n}\n\nexport interface IdleActivePayload {\n idle_ms: number;\n}\n\nexport interface ProducerUnavailablePayload {\n producer: EventProducer;\n reason: string;\n}\n\n/** Union of all typed event envelopes. */\nexport type ComputerEvent =\n | {\n type: \"window.focus_changed\";\n timestamp: string;\n payload: WindowFocusChangedPayload;\n }\n | { type: \"window.opened\"; timestamp: string; payload: WindowOpenedPayload }\n | { type: \"window.closed\"; timestamp: string; payload: WindowClosedPayload }\n | {\n type: \"clipboard.changed\";\n timestamp: string;\n payload: ClipboardChangedPayload;\n }\n | { type: \"file.created\"; timestamp: string; payload: FileCreatedPayload }\n | { type: \"file.modified\"; timestamp: string; payload: FileModifiedPayload }\n | { type: \"file.deleted\"; timestamp: string; payload: FileDeletedPayload }\n | {\n type: \"process.started\";\n timestamp: string;\n payload: ProcessStartedPayload;\n }\n | {\n type: \"process.stopped\";\n timestamp: string;\n payload: ProcessStoppedPayload;\n }\n | { type: \"idle.inactive\"; timestamp: string; payload: IdleInactivePayload }\n | { type: \"idle.active\"; timestamp: string; payload: IdleActivePayload }\n | {\n type: \"producer.unavailable\";\n timestamp: string;\n payload: ProducerUnavailablePayload;\n };\n\n// ── EventStream ───────────────────────────────────────────────────────────────\n\ntype EventMap = {\n [K in ComputerEvent[\"type\"]]: [\n Extract<ComputerEvent, { type: K }>[\"payload\"],\n ];\n} & {\n error: [Error];\n close: [{ code: number; reason: string }];\n};\n\n/**\n * Typed event stream returned by `computer.events.subscribe()`.\n *\n * ```ts\n * const stream = computer.events.subscribe({ subscribe: [\"file\", \"process\"] });\n * stream.on(\"file.created\", e => console.log(\"created:\", e.path));\n * stream.on(\"process.started\", e => console.log(\"pid:\", e.pid));\n * stream.on(\"error\", err => console.error(err));\n * await stream.close();\n * ```\n */\nexport class EventStream extends EventEmitter<EventMap> {\n private ws: WebSocket | import(\"ws\").WebSocket | null = null;\n private closed = false;\n\n /** @internal — use `Events.subscribe()` instead. */\n constructor(ws: WebSocket | import(\"ws\").WebSocket) {\n super();\n this.ws = ws;\n this.attachHandlers();\n }\n\n private attachHandlers() {\n if (!this.ws) return;\n const ws = this.ws;\n\n ws.onmessage = (ev: MessageEvent) => {\n try {\n const raw = typeof ev.data === \"string\" ? ev.data : String(ev.data);\n const event = JSON.parse(raw) as ComputerEvent;\n // EventEmitter.emit requires (event, ...args) — payload as first arg.\n this.emit(event.type as keyof EventMap, event.payload as never);\n } catch {\n // Ignore malformed frames.\n }\n };\n\n ws.onerror = (ev: Event) => {\n const err =\n ev instanceof ErrorEvent ? ev.error : new Error(\"WebSocket error\");\n this.emit(\"error\", err instanceof Error ? err : new Error(String(err)));\n };\n\n ws.onclose = (ev: CloseEvent) => {\n this.closed = true;\n this.emit(\"close\", { code: ev.code, reason: ev.reason });\n };\n }\n\n /** Close the event stream. Idempotent. */\n async close(): Promise<void> {\n if (this.closed || !this.ws) return;\n this.closed = true;\n this.ws.close(1000, \"client closed\");\n this.ws = null;\n }\n\n /** Whether the stream has been closed (by client or server). */\n get isClosed(): boolean {\n return this.closed;\n }\n}\n\n// ── Events resource ───────────────────────────────────────────────────────────\n\n/**\n * Events resource attached to every `Computer` instance.\n * Exposes `subscribe()` for real-time in-VM event streaming.\n */\nexport class Events {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly computerId: string;\n\n constructor(baseUrl: string, apiKey: string, computerId: string) {\n this.baseUrl = baseUrl;\n this.apiKey = apiKey;\n this.computerId = computerId;\n }\n\n /**\n * Open a WebSocket subscription for the specified producers.\n *\n * ```ts\n * const stream = computer.events.subscribe({\n * subscribe: [\"window\", \"clipboard\", \"file\"],\n * paths: [\"/home/user\", \"/workspace\"],\n * });\n * stream.on(\"window.focus_changed\", e => ...);\n * stream.on(\"file.created\", e => ...);\n * stream.on(\"error\", err => ...);\n * await stream.close();\n * ```\n */\n subscribe(options: EventSubscribeOptions): EventStream {\n const wsUrl = this.buildWsUrl(options);\n const ws = createWebSocket(wsUrl, this.apiKey);\n return new EventStream(ws);\n }\n\n private buildWsUrl(options: EventSubscribeOptions): string {\n // Convert the HTTP base URL to a WS URL.\n // baseUrl is something like \"https://api.miosa.ai/api/v1\"\n const wsBase = this.baseUrl\n .replace(/^https:\\/\\//, \"wss://\")\n .replace(/^http:\\/\\//, \"ws://\")\n .replace(/\\/$/, \"\");\n\n const params = new URLSearchParams();\n params.set(\"subscribe\", options.subscribe.join(\",\"));\n\n if (options.paths && options.paths.length > 0) {\n params.set(\"paths\", options.paths.join(\",\"));\n }\n if (options.idleThresholdSec !== undefined) {\n params.set(\"idle_threshold_sec\", String(options.idleThresholdSec));\n }\n\n return `${wsBase}/computers/${this.computerId}/events?${params.toString()}`;\n }\n}\n\n// ── WebSocket factory (Node vs browser) ──────────────────────────────────────\n\n/**\n * Creates a WebSocket connection. Uses the native browser `WebSocket` when\n * running in a browser context, or the `ws` npm package in Node.js.\n *\n * The `Authorization: Bearer <key>` header is attached via a subprotocol\n * trick in the browser (WS spec doesn't allow custom headers) — the server\n * accepts the key in the `Sec-WebSocket-Protocol` header as a fallback.\n * In Node.js the `Authorization` header is set directly.\n */\n/**\n * Creates a WebSocket connection with `Sec-WebSocket-Protocol: miosa-events-v1`.\n *\n * The subprotocol must be negotiated for the server to accept the connection.\n * Future protocol versions (miosa-events-v2, etc.) can be added server-side\n * without breaking v1 clients.\n *\n * In the browser the `Authorization` header cannot be set directly — the API\n * key is passed as a secondary subprotocol entry (`bearer.<key>`). The server\n * echoes only `miosa-events-v1` back.\n *\n * In Node.js the `Authorization` header is set directly.\n */\nfunction createWebSocket(\n url: string,\n apiKey: string,\n): WebSocket | import(\"ws\").WebSocket {\n const protocol = \"miosa-events-v1\";\n\n if (\n typeof window !== \"undefined\" &&\n typeof window.WebSocket !== \"undefined\"\n ) {\n // Browser: real protocol first, then auth fallback subprotocol.\n return new window.WebSocket(url, [protocol, `bearer.${apiKey}`]);\n }\n\n // Node.js: use the `ws` package with a proper Authorization header.\n // Dynamic require so bundlers targeting browsers don't break.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const WS = require(\"ws\") as typeof import(\"ws\").WebSocket;\n return new WS(url, [protocol], {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n}\n","import { HttpClient } from \"../http.js\";\nimport type { ExecParams, ExecPythonParams, ExecResult } from \"../types.js\";\n\n// ── Exec stream types ────────────────────────────────────────────────────────\n\n/** Options for `Exec.stream()`. */\nexport interface ExecStreamOptions {\n /** Command to execute. */\n command: string;\n /** Optional arguments. */\n args?: string[];\n /** Optional environment variables as KEY=VALUE strings. */\n env?: string[];\n /** Working directory inside the VM. */\n cwd?: string;\n /** Allocate a PTY. Defaults to false. */\n tty?: boolean;\n /** Terminal rows (when tty=true). */\n rows?: number;\n /** Terminal columns (when tty=true). */\n cols?: number;\n}\n\ntype ExecStreamEventMap = {\n stdout: [data: Uint8Array];\n stderr: [data: Uint8Array];\n exit: [code: number];\n error: [err: Error];\n close: [code: number, reason: string];\n};\n\n/**\n * Live bidirectional exec stream backed by a `miosa-exec-v1` WebSocket.\n *\n * The binary wire protocol (1-byte frame ID) is handled by the server-side\n * proxy and envd. The SDK exposes typed events on the received frames:\n *\n * - `stdout` — chunk of stdout bytes\n * - `stderr` — chunk of stderr bytes\n * - `exit` — process exit code (stream ends after this)\n * - `error` — WebSocket error\n * - `close` — WebSocket closed\n *\n * Obtain via `computer.exec.stream({ command: \"bash\", tty: true })`.\n *\n * ```ts\n * const s = computer.exec.stream({ command: \"python3\", args: [\"script.py\"] });\n * s.on(\"stdout\", chunk => process.stdout.write(chunk));\n * s.on(\"exit\", code => console.log(\"exit:\", code));\n * s.sendStdin(new TextEncoder().encode(\"hello\\n\"));\n * await s.close();\n * ```\n */\nexport class ExecStreamHandle {\n private ws: WebSocket | import(\"ws\").WebSocket | null = null;\n private closed = false;\n private readonly listeners = new Map<\n keyof ExecStreamEventMap,\n Array<(...args: unknown[]) => void>\n >();\n\n // Frame IDs — must match the envd binary protocol.\n private static readonly FRAME_STDIN = 0x00;\n private static readonly FRAME_STDOUT = 0x01;\n private static readonly FRAME_STDERR = 0x02;\n private static readonly FRAME_EXIT = 0x03;\n\n /** @internal — use `Exec.stream()` instead. */\n constructor(ws: WebSocket | import(\"ws\").WebSocket) {\n this.ws = ws;\n this.attachHandlers();\n }\n\n // ── EventEmitter-style API ──────────────────────────────────────────────────\n\n on<K extends keyof ExecStreamEventMap>(\n event: K,\n handler: (...args: ExecStreamEventMap[K]) => void,\n ): this {\n const list = this.listeners.get(event) ?? [];\n list.push(handler as (...args: unknown[]) => void);\n this.listeners.set(event, list);\n return this;\n }\n\n off<K extends keyof ExecStreamEventMap>(\n event: K,\n handler: (...args: ExecStreamEventMap[K]) => void,\n ): this {\n const list = this.listeners.get(event) ?? [];\n const idx = list.indexOf(handler as (...args: unknown[]) => void);\n if (idx !== -1) list.splice(idx, 1);\n return this;\n }\n\n private emit<K extends keyof ExecStreamEventMap>(\n event: K,\n ...args: ExecStreamEventMap[K]\n ): void {\n for (const fn of this.listeners.get(event) ?? []) {\n fn(...(args as unknown[]));\n }\n }\n\n // ── Write API ───────────────────────────────────────────────────────────────\n\n /**\n * Send stdin bytes to the running process.\n * Prepends the 0x00 frame ID byte automatically.\n */\n sendStdin(data: Uint8Array): void {\n if (this.closed || !this.ws) return;\n const frame = new Uint8Array(1 + data.length);\n frame[0] = ExecStreamHandle.FRAME_STDIN;\n frame.set(data, 1);\n (this.ws as WebSocket).send(frame);\n }\n\n /**\n * Send a terminal resize event.\n * Encodes as 0x05 + rows (u16 BE) + cols (u16 BE).\n */\n sendResize(rows: number, cols: number): void {\n if (this.closed || !this.ws) return;\n const frame = new Uint8Array(5);\n const view = new DataView(frame.buffer);\n frame[0] = 0x05;\n view.setUint16(1, rows, false);\n view.setUint16(3, cols, false);\n (this.ws as WebSocket).send(frame);\n }\n\n /** Close the stream. Idempotent. */\n async close(): Promise<void> {\n if (this.closed || !this.ws) return;\n this.closed = true;\n (this.ws as WebSocket).close(1000, \"client closed\");\n this.ws = null;\n }\n\n /** Whether the stream has ended (by client or server). */\n get isClosed(): boolean {\n return this.closed;\n }\n\n // ── Internal ────────────────────────────────────────────────────────────────\n\n private attachHandlers() {\n if (!this.ws) return;\n const ws = this.ws;\n\n ws.onmessage = (ev: MessageEvent) => {\n let bytes: Uint8Array;\n if (ev.data instanceof ArrayBuffer) {\n bytes = new Uint8Array(ev.data);\n } else if (ev.data instanceof Uint8Array) {\n bytes = ev.data;\n } else {\n // Unexpected type (e.g. string on a text frame) — ignore.\n return;\n }\n if (bytes.length === 0) return;\n\n const frameId = bytes[0];\n const payload = bytes.slice(1);\n\n switch (frameId) {\n case ExecStreamHandle.FRAME_STDOUT:\n this.emit(\"stdout\", payload);\n break;\n case ExecStreamHandle.FRAME_STDERR:\n this.emit(\"stderr\", payload);\n break;\n case ExecStreamHandle.FRAME_EXIT: {\n const view = new DataView(payload.buffer, payload.byteOffset);\n const code = view.getUint32(0, false);\n this.emit(\"exit\", code);\n break;\n }\n default:\n // Unknown frame IDs — ignore, per protocol spec.\n break;\n }\n };\n\n ws.onerror = (ev: Event) => {\n const err =\n ev instanceof ErrorEvent ? ev.error : new Error(\"WebSocket error\");\n this.emit(\"error\", err instanceof Error ? err : new Error(String(err)));\n };\n\n ws.onclose = (ev: CloseEvent) => {\n this.closed = true;\n this.emit(\"close\", ev.code, ev.reason);\n };\n }\n}\n\n// ── Exec resource ─────────────────────────────────────────────────────────────\n\n/**\n * Exec resource attached to every `Computer` instance.\n * Exposes `bash()`, `python()`, and `stream()` for command execution.\n */\nexport class Exec {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/exec`;\n }\n\n /**\n * Run a shell command inside the computer.\n * @param command - Shell command string to execute.\n * @param timeout - Optional timeout in seconds.\n */\n async bash(command: string, timeout?: number): Promise<ExecResult> {\n const params: ExecParams = {\n command,\n ...(timeout !== undefined && { timeout }),\n };\n return this.http.post<ExecResult>(this.base(), params);\n }\n\n /**\n * Execute Python code inside the computer.\n * @param code - Python source code string.\n * @param timeout - Optional timeout in seconds.\n */\n async python(code: string, timeout?: number): Promise<ExecResult> {\n const params: ExecPythonParams = {\n code,\n ...(timeout !== undefined && { timeout }),\n };\n return this.http.post<ExecResult>(`${this.base()}/python`, params);\n }\n\n /**\n * Open a live binary exec stream using the `miosa-exec-v1` subprotocol.\n *\n * The WebSocket negotiates `Sec-WebSocket-Protocol: miosa-exec-v1` to\n * ensure version compatibility. Future protocol versions can be added\n * server-side without breaking v1 clients.\n *\n * ```ts\n * const stream = computer.exec.stream({ command: \"bash\", tty: true, rows: 24, cols: 80 });\n * stream.on(\"stdout\", data => process.stdout.write(data));\n * stream.on(\"exit\", code => console.log(\"done:\", code));\n * stream.sendStdin(new TextEncoder().encode(\"echo hello\\n\"));\n * ```\n */\n stream(options: ExecStreamOptions): ExecStreamHandle {\n const wsUrl = this.buildWsUrl(options);\n const ws = createWebSocket(wsUrl, this.http.apiKey, \"miosa-exec-v1\");\n return new ExecStreamHandle(ws);\n }\n\n private buildWsUrl(options: ExecStreamOptions): string {\n const wsBase = this.http.baseUrl\n .replace(/^https:\\/\\//, \"wss://\")\n .replace(/^http:\\/\\//, \"ws://\")\n .replace(/\\/$/, \"\");\n\n const params = new URLSearchParams();\n params.set(\"command\", options.command);\n\n if (options.args && options.args.length > 0) {\n for (const arg of options.args) params.append(\"args\", arg);\n }\n if (options.env && options.env.length > 0) {\n for (const e of options.env) params.append(\"env\", e);\n }\n if (options.cwd) params.set(\"cwd\", options.cwd);\n if (options.tty) params.set(\"tty\", \"true\");\n if (options.rows !== undefined) params.set(\"rows\", String(options.rows));\n if (options.cols !== undefined) params.set(\"cols\", String(options.cols));\n\n return `${wsBase}/computers/${this.computerId}/exec/stream?${params.toString()}`;\n }\n}\n\n// ── WebSocket factory (Node vs browser) ──────────────────────────────────────\n\n/**\n * Creates a WebSocket connection with the given subprotocol.\n *\n * In the browser the `Authorization` header cannot be set directly — the API\n * key is passed via a `bearer.<key>` subprotocol as a fallback; the real\n * protocol is the first entry in the list and is what the server echoes back.\n *\n * In Node.js the `Authorization` header is set directly and only the protocol\n * string is offered.\n */\nfunction createWebSocket(\n url: string,\n apiKey: string,\n protocol: string,\n): WebSocket | import(\"ws\").WebSocket {\n if (\n typeof window !== \"undefined\" &&\n typeof window.WebSocket !== \"undefined\"\n ) {\n // Browser: protocol first, then the auth fallback.\n return new window.WebSocket(url, [protocol, `bearer.${apiKey}`]);\n }\n\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const WS = require(\"ws\") as typeof import(\"ws\").WebSocket;\n return new WS(url, [protocol], {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n CopyParams,\n DirEntry,\n DirListResult,\n FileDeleteParams,\n FileEntry,\n FileExportParams,\n FileExportResult,\n FileListResult,\n FileStat,\n MkdirParams,\n} from \"../types.js\";\n\nfunction toBase64(bytes: Uint8Array): string {\n // Works on both Node (Buffer available) and browsers/Deno/Bun (btoa).\n const maybeBuffer = (\n globalThis as {\n Buffer?: { from(b: Uint8Array): { toString(e: string): string } };\n }\n ).Buffer;\n if (maybeBuffer) return maybeBuffer.from(bytes).toString(\"base64\");\n let bin = \"\";\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]!);\n return btoa(bin);\n}\n\nexport class Files {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n private base(): string {\n return `/computers/${this.computerId}/files`;\n }\n\n /**\n * Upload a local file to the computer.\n *\n * In a Node.js environment pass a Buffer or Blob; in a browser pass a File\n * or Blob. The remote path is where the file will be written inside the VM.\n *\n * @param content - File content as Blob, Buffer, Uint8Array, or string.\n * @param remotePath - Absolute path inside the VM (e.g. /home/user/file.txt).\n * @param filename - Optional filename hint (defaults to basename of remotePath).\n */\n async upload(\n content: Blob | Uint8Array | string,\n remotePath: string,\n _filename?: string,\n ): Promise<FileEntry> {\n // The hosted API is JSON-only — it doesn't accept multipart uploads.\n // We send {path, content_base64} so binary payloads round-trip cleanly.\n let bytes: Uint8Array;\n if (typeof content === \"string\") {\n bytes = new TextEncoder().encode(content);\n } else if (content instanceof Uint8Array) {\n bytes = content;\n } else {\n // Blob → bytes\n const buf = await content.arrayBuffer();\n bytes = new Uint8Array(buf);\n }\n\n const contentBase64 = toBase64(bytes);\n\n return this.http.post<FileEntry>(`${this.base()}/write`, {\n path: remotePath,\n content_base64: contentBase64,\n });\n }\n\n /**\n * List files and directories at the given path inside the VM.\n */\n async list(path: string): Promise<FileListResult> {\n return this.http.get<FileListResult>(this.base(), { path });\n }\n\n /**\n * Download a file from the computer. Returns raw bytes.\n */\n async download(path: string): Promise<Uint8Array> {\n const url = `${this.base()}/download`;\n // Build query manually so getBinary can still use the helper\n return this.http.getBinary(`${url}?path=${encodeURIComponent(path)}`);\n }\n\n /**\n * Export a file from the computer and receive a temporary signed URL.\n */\n async export(path: string): Promise<FileExportResult> {\n const params: FileExportParams = { path };\n return this.http.post<FileExportResult>(`${this.base()}/export`, params);\n }\n\n /**\n * Delete a file or directory inside the computer.\n */\n async delete(path: string): Promise<void> {\n const params: FileDeleteParams = { path };\n return this.http.delete<void>(this.base(), params);\n }\n\n // ── Phase-7 stdlib-parity methods ──────────────────────────────────────────\n\n /**\n * Stat a path inside the computer. Does not follow symlinks (lstat semantics).\n *\n * Returns `{path, size, mode, is_dir, is_symlink, symlink_target?, modified_at}`.\n */\n async stat(path: string): Promise<FileStat> {\n const result = await this.http.post<{ data: FileStat }>(\n `${this.base()}/stat`,\n { path },\n );\n return result.data;\n }\n\n /**\n * Create a directory inside the computer.\n *\n * @param path - Absolute path to create (e.g. `/home/user/project`).\n * @param options - `{ recursive?: boolean, mode?: number }`. Defaults: recursive=true, mode=0o755.\n */\n async mkdir(path: string, options: MkdirParams = {}): Promise<void> {\n const modeStr =\n options.mode !== undefined\n ? options.mode.toString(8).padStart(4, \"0\")\n : \"0755\";\n\n await this.http.post<unknown>(`${this.base()}/mkdir`, {\n path,\n recursive: options.recursive ?? true,\n mode: modeStr,\n });\n }\n\n /**\n * Rename (move) a path inside the computer.\n *\n * Creates the destination parent directory if it does not exist.\n */\n async rename(from: string, to: string): Promise<void> {\n await this.http.post<unknown>(`${this.base()}/rename`, { from, to });\n }\n\n /**\n * Copy a file or directory inside the computer.\n *\n * @param from - Source absolute path.\n * @param to - Destination absolute path.\n * @param options - `{ recursive?: boolean }`. Required when source is a directory.\n */\n async copy(\n from: string,\n to: string,\n options: CopyParams = {},\n ): Promise<void> {\n await this.http.post<unknown>(`${this.base()}/copy`, {\n from,\n to,\n recursive: options.recursive ?? false,\n });\n }\n\n /**\n * Change permissions on a path inside the computer.\n *\n * @param path - Absolute path inside the VM.\n * @param mode - Unix mode bits as an octal integer (e.g. `0o755`) or string (`\"0755\"`).\n */\n async chmod(path: string, mode: number | string): Promise<void> {\n const modeStr =\n typeof mode === \"number\" ? mode.toString(8).padStart(4, \"0\") : mode;\n await this.http.post<unknown>(`${this.base()}/chmod`, {\n path,\n mode: modeStr,\n });\n }\n\n /**\n * Return a rich directory listing for the given path.\n *\n * Each entry includes `{name, is_dir, is_symlink, size, modified_at}`.\n * Richer than `list()` which uses `find` under the hood.\n *\n * @param path - Absolute path to list.\n * @param _withTypes - Kept for API symmetry; types are always returned.\n */\n async readdir(path: string, _withTypes = true): Promise<DirEntry[]> {\n const result = await this.http.get<DirListResult>(\n `${this.base()}/readdir`,\n { path },\n );\n return result.data.entries;\n }\n\n // ── Read/write text helpers ─────────────────────────────────────────────────\n\n /**\n * Write a UTF-8 string to a file inside the computer.\n * Convenience wrapper around `upload()`.\n */\n async writeFile(path: string, content: string): Promise<void> {\n await this.upload(content, path);\n }\n\n /**\n * Read a file from the computer and return its contents as a UTF-8 string.\n */\n async readFile(path: string): Promise<string> {\n const bytes = await this.download(path);\n return new TextDecoder().decode(bytes);\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type { NetworkPolicyData, NetworkPolicySetParams } from \"../types.js\";\n\n/**\n * Manage egress network policy for a computer.\n *\n * A policy is a list of rules evaluated top-to-bottom, with a `default_effect`\n * applied when no rule matches.\n *\n * Example — block IMDS and allow everything else:\n * ```ts\n * await computer.networkPolicy.set({\n * default_effect: \"allow\",\n * rules: [\n * { effect: \"deny\", destination: \"169.254.169.254/32\" },\n * { effect: \"deny\", destination: \"metadata.google.internal\" },\n * ],\n * });\n * ```\n *\n * Example — allowlist mode (deny all by default, allow only example.com):\n * ```ts\n * await computer.networkPolicy.set({\n * default_effect: \"deny\",\n * rules: [\n * { effect: \"allow\", destination: \"example.com\", ports: \"443\", protocol: \"tcp\" },\n * ],\n * });\n * ```\n */\nexport class NetworkPolicy {\n private readonly http: HttpClient;\n private readonly computerId: string;\n\n constructor(http: HttpClient, computerId: string) {\n this.http = http;\n this.computerId = computerId;\n }\n\n /**\n * Get the current network policy.\n * Returns an empty allow-all policy if none is set.\n */\n async get(): Promise<NetworkPolicyData> {\n const response = await this.http.get<{ data: NetworkPolicyData }>(\n `/computers/${this.computerId}/network-policy`,\n );\n return response.data;\n }\n\n /**\n * Set (create or replace) the network policy.\n * Triggers immediate nftables update on the host — running VMs pick up\n * the new rules without a restart.\n */\n async set(params: NetworkPolicySetParams): Promise<NetworkPolicyData> {\n const response = await this.http.put<{ data: NetworkPolicyData }>(\n `/computers/${this.computerId}/network-policy`,\n params,\n );\n return response.data;\n }\n\n /**\n * Reset to the default policy (allow all egress).\n * Idempotent — safe to call even if no policy was set.\n */\n async reset(): Promise<void> {\n await this.http.delete<unknown>(\n `/computers/${this.computerId}/network-policy`,\n );\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n ComputerData,\n ComputerId,\n ComputerViewerPasswordRotation,\n ComputerViewerPasswordStatus,\n} from \"../types.js\";\nimport { Checkpoints } from \"./checkpoints.js\";\nimport { ComputerAutoStop } from \"./computer-auto-stop.js\";\nimport { ComputerEnv } from \"./computer-env.js\";\nimport { ComputerLogs } from \"./computer-logs.js\";\nimport { ComputerOsa } from \"./computer-osa.js\";\nimport { ComputerPorts } from \"./computer-ports.js\";\nimport { ComputerTerminal } from \"./computer-terminal.js\";\nimport { ComputerVolumes } from \"./computer-volumes.js\";\nimport { ComputerConnectors } from \"./connectors.js\";\nimport { CustomDomains } from \"./custom_domains.js\";\nimport { Desktop } from \"./desktop.js\";\nimport { ComputerAudit } from \"./egressAudit.js\";\nimport { ComputerNetwork } from \"./egressNetwork.js\";\nimport { ComputerSecrets } from \"./egressSecrets.js\";\nimport { Events } from \"./events.js\";\nimport { Exec } from \"./exec.js\";\nimport { Files } from \"./files.js\";\nimport { NetworkPolicy } from \"./network_policy.js\";\nimport {\n Runs,\n type Run,\n type RunCreateParams,\n} from \"./runs.js\";\n\n/**\n * Per-computer inbox config (GET/PATCH /computers/:id/inbox).\n * Defined inline because it has no separate file (small surface).\n */\nexport class ComputerInbox {\n constructor(\n private readonly http: HttpClient,\n private readonly computerId: string,\n ) {}\n\n async get(): Promise<Record<string, unknown>> {\n const raw = await this.http.get<unknown>(\n `/computers/${this.computerId}/inbox`,\n );\n return unwrapData(raw);\n }\n\n async update(\n fields: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(fields).filter(([, v]) => v !== undefined),\n );\n const raw = await this.http.patch<unknown>(\n `/computers/${this.computerId}/inbox`,\n body,\n );\n return unwrapData(raw);\n }\n}\n\nfunction unwrapData(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n if (\"data\" in d && Object.keys(d).length <= 2) {\n return d.data as Record<string, unknown>;\n }\n }\n return (data ?? {}) as Record<string, unknown>;\n}\n\nexport type ComputerRunOptions = Omit<\n RunCreateParams,\n \"instruction\" | \"targetKind\" | \"targetId\" | \"sandboxId\" | \"computerId\"\n>;\n\n/**\n * A Computer instance bound to a specific computer ID.\n *\n * Returned by `miosa.computers.create()`, `miosa.computers.get()`, and\n * `miosa.computers.list()`. Exposes all per-computer actions as methods and\n * sub-resources as properties.\n */\nexport class Computer {\n /** Raw data from the API. Refresh with `await computer.reload()`. */\n data: ComputerData;\n\n /** Desktop control — screenshot, click, type, drag, etc. */\n readonly desktop: Desktop;\n\n /** Execute shell and Python commands. */\n readonly exec: Exec;\n\n /** File operations — upload, download, list, delete. */\n readonly files: Files;\n\n /** Firecracker checkpoint (snapshot) management. */\n readonly checkpoints: Checkpoints;\n\n /** Egress network policy — allow/deny rules applied at the host TAP level. */\n readonly networkPolicy: NetworkPolicy;\n\n /** Real-time event subscription (window, clipboard, file, process, idle). */\n readonly events: Events;\n\n /** Custom domain management — map your own FQDNs to this sandbox. */\n readonly domains: CustomDomains;\n\n /** PTY session management — create/resize. */\n readonly terminal: ComputerTerminal;\n\n /** In-VM OSA agent dispatch — submitTask, cancelTask, status, configure. */\n readonly osa: ComputerOsa;\n\n /** Idle auto-stop config — get/update. */\n readonly autoStop: ComputerAutoStop;\n\n /** Per-computer inbox config — get/update. */\n readonly inbox: ComputerInbox;\n\n /** Encrypted env var CRUD — list, set, update, delete, bulkSet. */\n readonly env: ComputerEnv;\n\n /** VM log read + SSE stream. */\n readonly logs: ComputerLogs;\n\n /** Per-port visibility control — list, get, create, update, delete. */\n readonly ports: ComputerPorts;\n\n /** Volume attachment — list, attach, detach. */\n readonly volumes: ComputerVolumes;\n\n /** MIOSA Connect provider bindings scoped to this computer. */\n readonly connectors: ComputerConnectors;\n\n /** Encrypted secrets + OAuth credentials scoped to this computer. */\n readonly secrets: ComputerSecrets;\n\n /** Egress allowlist + policies scoped to this computer. */\n readonly network: ComputerNetwork;\n\n /** Egress audit log + live tail scoped to this computer. */\n readonly audit: ComputerAudit;\n\n private readonly http: HttpClient;\n\n constructor(http: HttpClient, data: ComputerData) {\n this.http = http;\n this.data = data;\n\n const id = data.id as string;\n this.desktop = new Desktop(http, id);\n this.exec = new Exec(http, id);\n this.files = new Files(http, id);\n this.checkpoints = new Checkpoints(http, id);\n this.networkPolicy = new NetworkPolicy(http, id);\n this.events = new Events(http.baseUrl, http.apiKey, id);\n this.domains = new CustomDomains(http, id);\n this.terminal = new ComputerTerminal(http, id);\n this.osa = new ComputerOsa(http, id);\n this.autoStop = new ComputerAutoStop(http, id);\n this.inbox = new ComputerInbox(http, id);\n this.env = new ComputerEnv(http, id);\n this.logs = new ComputerLogs(http, id);\n this.ports = new ComputerPorts(http, id);\n this.volumes = new ComputerVolumes(http, id);\n this.connectors = new ComputerConnectors(http, id);\n // Egress (security) namespaces — pre-scoped to this computer id.\n this.secrets = new ComputerSecrets(http, id);\n this.network = new ComputerNetwork(http, id);\n this.audit = new ComputerAudit(http, id);\n }\n\n get id(): ComputerId {\n return this.data.id;\n }\n\n get name(): string {\n return this.data.name;\n }\n\n get status(): ComputerData[\"status\"] {\n return this.data.status;\n }\n\n /** URL-safe slug; falls back to the raw id when unset. */\n get slug(): string {\n return this.data.slug || (this.data.id as string);\n }\n\n /**\n * Public HTTPS URL that forwards to a given port inside the VM.\n *\n * Example — expose a dev server running on port 3000:\n * ```ts\n * await computer.exec.bash(\"npm run dev &\");\n * const url = computer.previewUrl(3000);\n * // => https://3000-<slug>.sandbox.<tenant-domain>\n * ```\n *\n * Works for any TCP HTTP listener. Public (no auth required); anyone with\n * the URL can see it. Served over the ingress proxy so it inherits the\n * tenant's white-label preview domain — no per-sandbox certs to manage.\n */\n previewUrl(port: number, path: string = \"/\"): string {\n const p = path.startsWith(\"/\") ? path : `/${path}`;\n return `https://${port}-${this.slug}.sandbox.${this.previewDomain}${p}`;\n }\n\n /** Root preview URL — serves whatever is on the default app port. */\n get publicUrl(): string {\n return `https://${this.slug}.sandbox.${this.previewDomain}`;\n }\n\n /** Tenant's preview/base domain, white-label aware. */\n get previewDomain(): string {\n return this.data.preview_domain || \"miosa.ai\";\n }\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n /** Start the computer. */\n async start(): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/start`,\n );\n this.data = updated;\n return this;\n }\n\n /** Stop the computer. */\n async stop(): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/stop`,\n );\n this.data = updated;\n return this;\n }\n\n /** Restart the computer. */\n async restart(): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/restart`,\n );\n this.data = updated;\n return this;\n }\n\n /** Permanently destroy the computer. After this call the instance is invalid. */\n async destroy(): Promise<void> {\n return this.http.delete<void>(`/computers/${this.id}`);\n }\n\n /** Reload metadata from the API and update `this.data`. */\n async reload(): Promise<Computer> {\n this.data = await this.http.get<ComputerData>(`/computers/${this.id}`);\n return this;\n }\n\n /**\n * Run an AI agent inside this Computer.\n *\n * The Computer is the graphical desktop VM product. This dispatches the\n * same Runs API as `miosa agent run --computer`, scoped to this VM.\n */\n async run(\n instruction: string,\n options: ComputerRunOptions = {},\n ): Promise<Run> {\n const runner = options.runner ?? \"claude-code\";\n\n return new Runs(this.http).run({\n ...options,\n instruction,\n targetKind: \"computer\",\n targetId: this.id,\n runtimeId: this.id,\n computerId: this.id,\n runner,\n cwd: options.cwd ?? \"/workspace\",\n wait: options.wait ?? true,\n });\n }\n\n // ─── Desktop shortcuts ─────────────────────────────────────────────────────\n\n /**\n * Capture a desktop screenshot as PNG bytes.\n * Shortcut for `computer.desktop.screenshot()`.\n */\n async screenshot(): Promise<Uint8Array> {\n return this.desktop.screenshot();\n }\n\n /**\n * Capture a desktop screenshot encoded as a base64 string.\n * Convenience for AI agents that pass screenshots to LLMs.\n */\n async screenshotBase64(): Promise<string> {\n const bytes = await this.desktop.screenshot();\n // Browser-safe base64 — Buffer isn't always available.\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]!);\n }\n return typeof btoa === \"function\"\n ? btoa(binary)\n : Buffer.from(bytes).toString(\"base64\");\n }\n\n /**\n * Click at the given coordinates (default left button).\n * Shortcut for `computer.desktop.click(x, y)`.\n */\n async click(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y);\n }\n\n /** Explicit left-button click. Alias for `click(x, y)`. */\n async leftClick(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y, \"left\");\n }\n\n /** Right-button click. */\n async rightClick(x: number, y: number): Promise<void> {\n await this.desktop.click(x, y, \"right\");\n }\n\n /** Double-click at the given coordinates. */\n async doubleClick(x: number, y: number): Promise<void> {\n await this.desktop.doubleClick(x, y);\n }\n\n /**\n * Type text into the focused element.\n * Shortcut for `computer.desktop.type(text)`.\n */\n async type(text: string): Promise<void> {\n await this.desktop.type(text);\n }\n\n /**\n * Send a key or key combo.\n * Shortcut for `computer.desktop.key(key)`.\n */\n async key(key: string): Promise<void> {\n await this.desktop.key(key);\n }\n\n /**\n * Scroll in a direction.\n * Shortcut for `computer.desktop.scroll(direction, clicks)`.\n */\n async scroll(\n direction: Parameters<Desktop[\"scroll\"]>[0],\n clicks = 3,\n ): Promise<void> {\n await this.desktop.scroll(direction, clicks);\n }\n\n /**\n * Click and drag between two points.\n * Shortcut for `computer.desktop.drag(fromX, fromY, toX, toY)`.\n */\n async drag(\n fromX: number,\n fromY: number,\n toX: number,\n toY: number,\n ): Promise<void> {\n await this.desktop.drag(fromX, fromY, toX, toY);\n }\n\n /**\n * Wait for N seconds inside the desktop environment.\n * Shortcut for `computer.desktop.wait(seconds)`.\n */\n async wait(seconds: number): Promise<void> {\n await this.desktop.wait(seconds);\n }\n\n // ─── Exec shortcuts ────────────────────────────────────────────────────────\n\n /**\n * Run a shell command.\n * Shortcut for `computer.exec.bash(command)`.\n */\n async bash(command: string, timeout?: number) {\n return this.exec.bash(command, timeout);\n }\n\n /**\n * Run Python code.\n * Shortcut for `computer.exec.python(code)`.\n */\n async python(code: string, timeout?: number) {\n return this.exec.python(code, timeout);\n }\n\n // ─── Window / cursor / app shortcuts ───────────────────────────────────────\n\n /** List open windows on the desktop. */\n async windows(): Promise<Awaited<ReturnType<Desktop[\"windows\"]>>> {\n return this.desktop.windows();\n }\n\n /** Get the current cursor position. */\n async cursor(): Promise<Awaited<ReturnType<Desktop[\"cursor\"]>>> {\n return this.desktop.cursor();\n }\n\n /** Focus a specific window by ID. */\n async focusWindow(windowId: string): Promise<void> {\n await this.desktop.focusWindow(windowId);\n }\n\n /** Launch an installed app inside the VM. */\n async launch(appName: string): Promise<void> {\n await this.desktop.launch(appName);\n }\n\n // ─── Scoped filesystem helper ──────────────────────────────────────────────\n\n /**\n * Return a `ScopedFs` bound to `workingDir`. All path arguments to\n * `readFile`, `writeFile`, and `readdir` are resolved relative to that\n * directory — no need to repeat the prefix on every call.\n *\n * ```ts\n * const fs = computer.fs(\"/workspace\");\n * await fs.writeFile(\"main.py\", \"print(1)\");\n * const src = await fs.readFile(\"main.py\");\n * const entries = await fs.readdir(\".\");\n * ```\n */\n fs(workingDir: string): ScopedFs {\n return new ScopedFs(this.files, workingDir);\n }\n\n // ─── Direct methods ────────────────────────────────────────────────────────\n\n /** Get VNC credentials for this computer. */\n async vncCredentials(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/vnc-credentials`),\n );\n }\n\n /**\n * Return whether the external/raw desktop viewer password is set.\n *\n * Authenticated MIOSA platform users should use the platform desktop entry\n * URL and do not need this password. This is only for raw external viewer\n * links such as `*.computer.miosa.ai/desktop/index.html`.\n */\n async viewerPassword(): Promise<ComputerViewerPasswordStatus> {\n return this.http.get<ComputerViewerPasswordStatus>(\n `/computers/${this.id}/viewer-password`,\n );\n }\n\n /**\n * Rotate the external/raw desktop viewer password and return the plaintext\n * one time. Store it if you need to share the raw viewer URL.\n */\n async rotateViewerPassword(): Promise<ComputerViewerPasswordRotation> {\n return this.http.post<ComputerViewerPasswordRotation>(\n `/computers/${this.id}/viewer-password/rotate`,\n );\n }\n\n /** List installed apps inside the VM. */\n async apps(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/apps`),\n );\n }\n\n /** Get URL map for this computer (VNC, preview, etc.). */\n async urls(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/urls`),\n );\n }\n\n /** Mint a short-lived stream token for this computer. */\n async streamToken(): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.post<unknown>(`/computers/${this.id}/stream-token`),\n );\n }\n\n /** Clone this computer into a new one. */\n async clone(opts: Record<string, unknown> = {}): Promise<Computer> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n const raw = await this.http.post<unknown>(\n `/computers/${this.id}/clone`,\n body,\n );\n const data = unwrapData(raw) as unknown as ComputerData;\n return new Computer(this.http, data);\n }\n\n /** Resize the computer (change CPU/memory/disk). */\n async resize(size: string): Promise<Computer> {\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/resize`,\n { size },\n );\n this.data = updated;\n return this;\n }\n\n /** Move the computer to a different region or host. */\n async move(opts: Record<string, unknown>): Promise<Computer> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n const updated = await this.http.post<ComputerData>(\n `/computers/${this.id}/move`,\n body,\n );\n this.data = updated;\n return this;\n }\n\n /** Capture a region of the desktop as PNG bytes. */\n async screenshotRegion(\n x: number,\n y: number,\n width: number,\n height: number,\n ): Promise<Uint8Array> {\n return this.http.request<Uint8Array>(\n `/computers/${this.id}/screenshot-region`,\n {\n method: \"POST\",\n body: { x, y, width, height },\n binary: true,\n },\n );\n }\n\n /** Get time-series metrics (window: \"1h\" | \"24h\" | \"7d\"). */\n async metrics(window = \"1h\"): Promise<Record<string, unknown>> {\n return unwrapData(\n await this.http.get<unknown>(`/computers/${this.id}/metrics`, {\n window,\n }),\n );\n }\n\n // ─── Serialisation ─────────────────────────────────────────────────────────\n\n toJSON(): ComputerData {\n return this.data;\n }\n\n toString(): string {\n return `Computer(${this.id}, ${this.status})`;\n }\n}\n\n/**\n * A thin filesystem wrapper that prepends a fixed working directory to all\n * path arguments, mirroring the Node.js `fs/promises` surface.\n *\n * Obtain via `computer.fs(\"/workspace\")`.\n */\nexport class ScopedFs {\n private readonly files: Files;\n private readonly workingDir: string;\n\n constructor(files: Files, workingDir: string) {\n this.files = files;\n // Normalise: strip trailing slash unless it's the root.\n this.workingDir =\n workingDir !== \"/\" ? workingDir.replace(/\\/$/, \"\") : workingDir;\n }\n\n /** Resolve a relative or absolute path against `workingDir`. */\n private resolve(path: string): string {\n if (path.startsWith(\"/\")) return path;\n const joined = `${this.workingDir}/${path}`;\n // Collapse double slashes and simple `.` segments.\n return joined.replace(/\\/\\.\\//g, \"/\").replace(/\\/+/g, \"/\");\n }\n\n /** Write a UTF-8 string to a file (relative or absolute path). */\n async writeFile(path: string, content: string): Promise<void> {\n return this.files.writeFile(this.resolve(path), content);\n }\n\n /** Read a file and return its UTF-8 contents (relative or absolute path). */\n async readFile(path: string): Promise<string> {\n return this.files.readFile(this.resolve(path));\n }\n\n /** List a directory (relative or absolute path). */\n async readdir(path: string): Promise<import(\"../types.js\").DirEntry[]> {\n return this.files.readdir(this.resolve(path));\n }\n\n /** Stat a path (relative or absolute). */\n async stat(path: string): Promise<import(\"../types.js\").FileStat> {\n return this.files.stat(this.resolve(path));\n }\n\n /** Create a directory (relative or absolute). */\n async mkdir(\n path: string,\n options?: import(\"../types.js\").MkdirParams,\n ): Promise<void> {\n return this.files.mkdir(this.resolve(path), options);\n }\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n ComputerCreateParams,\n ComputerData,\n ComputerId,\n ComputerListParams,\n ComputerUpdateParams,\n ComputerViewerPasswordRotation,\n ComputerViewerPasswordStatus,\n} from \"../types.js\";\nimport { Computer } from \"./computer.js\";\n\nexport class Computers {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new computer. The computer starts in `creating` state — call\n * `computer.start()` once it reaches `stopped` to boot it.\n */\n async create(params: ComputerCreateParams): Promise<Computer> {\n const {\n agentRuntimeProfileId,\n agentProfileId,\n skipAgentRuntimeProfile,\n skipRuntimeProfile,\n ...body\n } = params;\n\n const data = await this.http.post<ComputerData>(\"/computers\", {\n template_type: \"miosa-desktop\",\n ...body,\n size: normalizeComputerSize(body.size ?? \"small\"),\n agent_runtime_profile_id:\n agentRuntimeProfileId ??\n params.agent_runtime_profile_id ??\n agentProfileId ??\n params.agent_profile_id,\n skip_agent_runtime_profile:\n skipAgentRuntimeProfile ?? skipRuntimeProfile ?? params.skip_agent_runtime_profile,\n });\n return new Computer(this.http, data);\n }\n\n /**\n * List all computers for the authenticated tenant.\n */\n async list(params?: ComputerListParams): Promise<Computer[]> {\n const query: Record<string, string | number | boolean | undefined> = {\n page: params?.page,\n per_page: params?.per_page,\n status: params?.status,\n };\n const response = await this.http.get<{ data: ComputerData[] }>(\n \"/computers\",\n query,\n );\n return response.data.map((d) => new Computer(this.http, d));\n }\n\n /**\n * Fetch a single computer by ID.\n */\n async get(id: ComputerId | string): Promise<Computer> {\n const data = await this.http.get<ComputerData>(`/computers/${id}`);\n return new Computer(this.http, data);\n }\n\n /**\n * Update computer metadata or name.\n */\n async update(\n id: ComputerId | string,\n params: ComputerUpdateParams,\n ): Promise<Computer> {\n const data = await this.http.patch<ComputerData>(\n `/computers/${id}`,\n params,\n );\n return new Computer(this.http, data);\n }\n\n /**\n * Permanently delete a computer.\n */\n async delete(id: ComputerId | string): Promise<void> {\n return this.http.delete<void>(`/computers/${id}`);\n }\n\n /**\n * Return whether the external/raw desktop viewer password is set.\n *\n * Authenticated MIOSA platform users should use the platform desktop entry\n * URL and do not need this password. This is only for raw external viewer\n * links such as `*.computer.miosa.ai/desktop/index.html`.\n */\n async viewerPassword(\n id: ComputerId | string,\n ): Promise<ComputerViewerPasswordStatus> {\n return this.http.get<ComputerViewerPasswordStatus>(\n `/computers/${id}/viewer-password`,\n );\n }\n\n /**\n * Rotate the external/raw desktop viewer password and return the plaintext\n * one time. Store it if you need to share the raw viewer URL.\n */\n async rotateViewerPassword(\n id: ComputerId | string,\n ): Promise<ComputerViewerPasswordRotation> {\n return this.http.post<ComputerViewerPasswordRotation>(\n `/computers/${id}/viewer-password/rotate`,\n );\n }\n}\n\nfunction normalizeComputerSize(size: ComputerCreateParams[\"size\"]) {\n return size === \"xlarge\" ? \"xl\" : size;\n}\n","import { HttpClient } from \"../http.js\";\nimport type {\n CreditBalance,\n CreditTransactionListResponse,\n CreditUsage,\n} from \"../types.js\";\n\nexport interface CreditTransactionListParams {\n page?: number;\n per_page?: number;\n}\n\nexport class Credits {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** Get the current credit balance for the authenticated tenant. */\n async balance(): Promise<CreditBalance> {\n return this.http.get<CreditBalance>(\"/credits/balance\");\n }\n\n /** List credit transactions (purchases, deductions). */\n async transactions(\n params?: CreditTransactionListParams,\n ): Promise<CreditTransactionListResponse> {\n const query: Record<string, number | undefined> = {\n page: params?.page,\n per_page: params?.per_page,\n };\n return this.http.get<CreditTransactionListResponse>(\n \"/credits/transactions\",\n query,\n );\n }\n\n /** Get aggregated credit usage for the current billing period. */\n async usage(): Promise<CreditUsage> {\n return this.http.get<CreditUsage>(\"/credits/usage\");\n }\n}\n","/**\n * CronJobs resource — scheduled work.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type CronJobId = string & { readonly __brand: \"CronJobId\" };\nexport type CronJobExecutionId = string & {\n readonly __brand: \"CronJobExecutionId\";\n};\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface CronJobData {\n id: CronJobId;\n tenant_id: string;\n name: string;\n schedule: string;\n state?: string;\n paused?: boolean;\n last_run_at?: string | null;\n next_run_at?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface CronJobExecutionData {\n id: CronJobExecutionId;\n cron_job_id: CronJobId;\n state?: string;\n started_at?: string | null;\n finished_at?: string | null;\n duration_ms?: number | null;\n exit_code?: number | null;\n error?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CronJobListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CronJobCreateParams {\n name: string;\n schedule: string;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface CronJobUpdateParams {\n name?: string;\n schedule?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"cron_jobs\", \"executions\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class CronJobs {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: CronJobListParams = {}): Promise<CronJobData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/cron-jobs\", query);\n return listItems<CronJobData>(data);\n }\n\n async get(jobId: string): Promise<CronJobData> {\n const data = await this.http.get<unknown>(`/cron-jobs/${jobId}`);\n return unwrap<CronJobData>(data);\n }\n\n async create(params: CronJobCreateParams): Promise<CronJobData> {\n const { idempotencyKey: ikey, ...rest } = params;\n const body = stripUndefined(rest as Record<string, unknown>);\n const data = await this.http.request<unknown>(\"/cron-jobs\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<CronJobData>(data);\n }\n\n async update(\n jobId: string,\n params: CronJobUpdateParams,\n ): Promise<CronJobData> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(`/cron-jobs/${jobId}`, body);\n return unwrap<CronJobData>(data);\n }\n\n async delete(jobId: string): Promise<void> {\n await this.http.delete<unknown>(`/cron-jobs/${jobId}`);\n }\n\n // ── Control ────────────────────────────────────────────────────────────────\n\n async pause(jobId: string): Promise<CronJobData> {\n const data = await this.http.post<unknown>(`/cron-jobs/${jobId}/pause`);\n return unwrap<CronJobData>(data);\n }\n\n async resume(jobId: string): Promise<CronJobData> {\n const data = await this.http.post<unknown>(`/cron-jobs/${jobId}/resume`);\n return unwrap<CronJobData>(data);\n }\n\n async runNow(\n jobId: string,\n opts: { idempotencyKey?: string } = {},\n ): Promise<CronJobData> {\n const data = await this.http.request<unknown>(\n `/cron-jobs/${jobId}/run-now`,\n {\n method: \"POST\",\n headers: { \"Idempotency-Key\": idempotencyKey(opts.idempotencyKey) },\n },\n );\n return unwrap<CronJobData>(data);\n }\n\n // ── Execution history ──────────────────────────────────────────────────────\n\n async listExecutions(jobId: string): Promise<CronJobExecutionData[]> {\n const data = await this.http.get<unknown>(`/cron-jobs/${jobId}/executions`);\n return listItems<CronJobExecutionData>(data, [\n \"data\",\n \"executions\",\n \"items\",\n ]);\n }\n\n async getExecution(\n jobId: string,\n executionId: string,\n ): Promise<CronJobExecutionData> {\n const data = await this.http.get<unknown>(\n `/cron-jobs/${jobId}/executions/${executionId}`,\n );\n return unwrap<CronJobExecutionData>(data);\n }\n}\n","/**\n * Dashboard — aggregated platform overview.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface DashboardSummary {\n computers?: unknown;\n sandboxes?: unknown;\n credits?: unknown;\n [key: string]: unknown;\n}\n\nexport interface OverviewData {\n status?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"dashboard\", \"overview\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Dashboard {\n constructor(private readonly http: HttpClient) {}\n\n /** Aggregated user dashboard payload. */\n async summary(): Promise<DashboardSummary> {\n const data = await this.http.get<unknown>(\"/dashboard\");\n return unwrap<DashboardSummary>(data);\n }\n\n /** Status / health overview (public endpoint). */\n async overview(): Promise<OverviewData> {\n const data = await this.http.get<unknown>(\"/overview\");\n return unwrap<OverviewData>(data);\n }\n}\n","/**\n * Databases resource — managed Postgres / databases.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type DatabaseId = string & { readonly __brand: \"DatabaseId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface DatabaseData {\n id: DatabaseId;\n tenant_id: string;\n name: string;\n state?: string;\n engine?: string;\n engine_version?: string;\n version?: string;\n cpu_count?: number;\n memory_mb?: number;\n storage_mb?: number;\n host?: string | null;\n port?: number | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface DatabaseCredentials {\n url?: string;\n host?: string;\n port?: number;\n user?: string;\n username?: string;\n password?: string;\n database?: string;\n [key: string]: unknown;\n}\n\nexport interface DatabaseLogsResult {\n lines?: string[];\n logs?: string[];\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface DatabaseListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface DatabaseCreateParams {\n name: string;\n engine?: string;\n engine_version?: string;\n cpu_count?: number;\n memory_mb?: number;\n storage_mb?: number;\n external_workspace_id?: string;\n external_user_id?: string;\n external_project_id?: string;\n metadata?: Record<string, unknown>;\n /** @deprecated use engine_version. */\n version?: string;\n /** @deprecated use cpu_count/memory_mb/storage_mb. */\n size?: string;\n region?: string;\n idempotencyKey?: string;\n idempotency_key?: string;\n [key: string]: unknown;\n}\n\nexport interface DatabaseLogsParams {\n lines?: number;\n since?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"databases\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Databases {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: DatabaseListParams = {}): Promise<DatabaseData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/databases\", query);\n return listItems<DatabaseData>(data);\n }\n\n async get(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.get<unknown>(`/databases/${databaseId}`);\n return unwrap<DatabaseData>(data);\n }\n\n async create(params: DatabaseCreateParams): Promise<DatabaseData> {\n const {\n idempotencyKey: camelIdempotencyKey,\n idempotency_key: snakeIdempotencyKey,\n version,\n engine_version,\n size: _deprecatedSize,\n ...rest\n } = params;\n\n const body = stripUndefined({\n ...rest,\n engine_version: engine_version ?? version,\n } as Record<string, unknown>);\n\n const data = await this.http.request<unknown>(\"/databases\", {\n method: \"POST\",\n body,\n headers: {\n \"Idempotency-Key\": idempotencyKey(\n camelIdempotencyKey ?? snakeIdempotencyKey,\n ),\n },\n });\n return unwrap<DatabaseData>(data);\n }\n\n async delete(databaseId: string): Promise<void> {\n await this.http.delete<unknown>(`/databases/${databaseId}`);\n }\n\n // ── Lifecycle ──────────────────────────────────────────────────────────────\n\n async start(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.post<unknown>(\n `/databases/${databaseId}/start`,\n );\n return unwrap<DatabaseData>(data);\n }\n\n async stop(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.post<unknown>(`/databases/${databaseId}/stop`);\n return unwrap<DatabaseData>(data);\n }\n\n async restart(databaseId: string): Promise<DatabaseData> {\n const data = await this.http.post<unknown>(\n `/databases/${databaseId}/restart`,\n );\n return unwrap<DatabaseData>(data);\n }\n\n // ── Credentials + logs ────────────────────────────────────────────────────\n\n async credentials(databaseId: string): Promise<DatabaseCredentials> {\n const data = await this.http.get<unknown>(\n `/databases/${databaseId}/credentials`,\n );\n return unwrap<DatabaseCredentials>(data);\n }\n\n async logs(\n databaseId: string,\n params: DatabaseLogsParams = {},\n ): Promise<DatabaseLogsResult> {\n const query = stripUndefined({\n lines: params.lines,\n since: params.since,\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n `/databases/${databaseId}/logs`,\n query,\n );\n return data as DatabaseLogsResult;\n }\n\n streamLogs(databaseId: string): AsyncIterableIterator<unknown> {\n return this.http.stream<unknown>(`/databases/${databaseId}/logs/stream`);\n }\n}\n","/**\n * Deployments resource — sandbox→production publishing surface.\n *\n * Backend phase status:\n * - list / get / create / update / delete / env: repo deployment surface.\n * - publish / versions.* / releases.* / rollback / domains.*: live release surface.\n * - runtimeInstances.*: dynamic runtime status/log inspection.\n * - publishFromSandbox: direct sandbox -> deployment bridge.\n *\n * See docs/deploy/* for the conceptual model.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\nimport { DeploymentConnectors } from \"./connectors.js\";\nimport type { DockerDeployHostData } from \"./docker-deploy.js\";\n\n// ── Branded IDs ─────────────────────────────────────────────────────────────\n\nexport type DeploymentId = string & { readonly __brand: \"DeploymentId\" };\nexport type DeploymentVersionId = string & {\n readonly __brand: \"DeploymentVersionId\";\n};\nexport type DeploymentReleaseId = string & {\n readonly __brand: \"DeploymentReleaseId\";\n};\nexport type DeploymentServiceId = string & {\n readonly __brand: \"DeploymentServiceId\";\n};\nexport type RuntimeInstanceId = string & {\n readonly __brand: \"RuntimeInstanceId\";\n};\n\n// ── States / enums ──────────────────────────────────────────────────────────\n\nexport type DeploymentState =\n | \"pending\"\n | \"building\"\n | \"running\"\n | \"stopped\"\n | \"failed\";\n\nexport type DeploymentVersionKind = \"static\" | \"dynamic\" | \"sandbox_backed\";\n\nexport type DeploymentVersionState =\n | \"created\"\n | \"building\"\n | \"ready\"\n | \"failed\"\n | \"archived\";\n\nexport type DeploymentSourceType = \"repo\" | \"sandbox\" | \"upload\";\n\nexport type DeploymentProduct = \"miosa_deploy\" | \"docker_deploy\";\n\nexport type DeploymentServiceType =\n | \"static_web\"\n | \"web\"\n | \"api\"\n | \"function\"\n | \"worker\"\n | \"cron\"\n | \"postgres\"\n | \"redis\"\n | \"bucket\"\n | \"volume\";\n\nexport type RuntimeInstanceState =\n | \"provisioning\"\n | \"starting\"\n | \"healthy\"\n | \"unhealthy\"\n | \"error\"\n | \"stopped\"\n | \"destroyed\";\n\n// ── Shared attribution ──────────────────────────────────────────────────────\n\nexport interface ExternalAttribution {\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\n// ── Resource shapes ─────────────────────────────────────────────────────────\n\nexport interface DeploymentData {\n id: DeploymentId;\n tenant_id: string;\n owner_id?: string;\n name: string;\n slug: string;\n /**\n * @deprecated — repo-based model. New deployments use source_type: \"sandbox\"\n * with `source_sandbox_id` on the version row. Will become nullable.\n */\n repo_url?: string;\n repo_provider?: \"github\";\n branch?: string;\n build_command?: string | null;\n run_command?: string | null;\n runtime_image?: string | null;\n current_build_id?: string | null;\n active_version_id?: string | null;\n source_type?: DeploymentSourceType;\n state: DeploymentState;\n auto_deploy?: boolean;\n custom_domain_id?: string | null;\n linked_database_id?: string | null;\n deployment_product?: DeploymentProduct | string | null;\n docker_deploy_host_id?: string | null;\n docker_deploy_app?: {\n id?: string | null;\n docker_deploy_host_id?: string | null;\n app_id?: string | null;\n container_id?: string | null;\n status?: string | null;\n runtime_ip?: string | null;\n runtime_port?: number | string | null;\n public_url?: string | null;\n last_health_status?: string | null;\n } | null;\n metadata?: Record<string, unknown>;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n public_url?: string | null;\n created_at?: string;\n updated_at?: string;\n}\n\nexport type DeploymentDatabaseRequest =\n | boolean\n | {\n engine?: \"postgresql\" | \"mysql\" | \"redis\" | \"qdrant\";\n size?: \"xs\" | \"small\" | \"medium\" | \"large\";\n storage_mb?: number;\n region?: string;\n };\n\nexport interface DeploymentVersionData {\n id: DeploymentVersionId;\n deployment_id: DeploymentId;\n tenant_id: string;\n created_by?: string | null;\n source_sandbox_id?: string | null;\n build_id?: string | null;\n version_number: number;\n kind: DeploymentVersionKind;\n state: DeploymentVersionState;\n artifact_uri?: string | null;\n artifact_manifest?: Record<string, unknown>;\n artifact_sha256?: string | null;\n runtime_image?: string | null;\n runtime_command?: string | null;\n runtime_port?: number | null;\n health_check_path?: string | null;\n build_log_uri?: string | null;\n metadata?: Record<string, unknown>;\n promoted_at?: string | null;\n archived_at?: string | null;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DeploymentReleaseData {\n id: DeploymentReleaseId;\n deployment_id?: DeploymentId;\n environment_id?: string | null;\n deployment_version_id: DeploymentVersionId;\n service_id?: DeploymentServiceId | null;\n tenant_id: string;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n source_sandbox_id?: string | null;\n build_id?: string | null;\n kind: \"static\" | \"oci\" | \"rootfs\" | string;\n state?: string;\n artifact_uri?: string | null;\n artifact_sha256?: string | null;\n artifact_manifest?: Record<string, unknown>;\n storage_backend?: string | null;\n storage_uri?: string;\n sha256?: string;\n size_bytes?: number;\n start_command?: string | null;\n port?: number | null;\n health_check_path?: string | null;\n build_log_uri?: string | null;\n metadata?: Record<string, unknown>;\n ready_at?: string | null;\n archived_at?: string | null;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DeploymentServiceData {\n id: DeploymentServiceId;\n deployment_id: DeploymentId;\n environment_id?: string | null;\n tenant_id: string;\n type: DeploymentServiceType;\n name?: string | null;\n desired_replicas?: number;\n state: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface RuntimeInstanceData {\n id: RuntimeInstanceId;\n deployment_id?: DeploymentId;\n environment_id?: string | null;\n service_id?: DeploymentServiceId | null;\n release_id?: DeploymentReleaseId;\n tenant_id: string;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n host_id?: string | null;\n node_id?: string | null;\n vm_id?: string | null;\n desired_state?: string | null;\n state: RuntimeInstanceState;\n ip_address?: string | null;\n port?: number | null;\n health_check_path?: string | null;\n last_health_check_at?: string | null;\n last_heartbeat_at?: string | null;\n started_at?: string | null;\n stopped_at?: string | null;\n error_message?: string | null;\n restart_count?: number;\n cpu_limit_millicores?: number | null;\n memory_limit_mb?: number | null;\n runtime_log_path?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DeploymentBuildData {\n id: string;\n deployment_id: DeploymentId;\n commit_sha?: string | null;\n commit_message?: string | null;\n triggered_by?: string;\n state: string;\n started_at?: string | null;\n finished_at?: string | null;\n duration_ms?: number | null;\n log_url?: string | null;\n image_digest?: string | null;\n error_message?: string | null;\n external_workspace_id?: string | null;\n external_user_id?: string | null;\n external_project_id?: string | null;\n created_at?: string;\n}\n\n// ── Request / response payloads ─────────────────────────────────────────────\n\nexport interface DeploymentListParams extends ExternalAttribution {\n project_id?: string;\n projectId?: string;\n state?: DeploymentState | string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface DeploymentCreateParams extends ExternalAttribution {\n name: string;\n /** Current backend create route is repo-backed; project IDs are attribution, not route ownership. */\n project_id?: string;\n projectId?: string;\n /** @deprecated Ignored by the backend create route. Use sandbox.deploy() for sandbox-backed deployments. */\n source_type?: DeploymentSourceType;\n /** @deprecated Ignored by the backend create route. Use sandbox.deploy() for sandbox-backed deployments. */\n sourceType?: DeploymentSourceType;\n repo_url?: string;\n repoUrl?: string;\n branch?: string;\n build_command?: string;\n buildCommand?: string;\n run_command?: string;\n runCommand?: string;\n auto_deploy?: boolean;\n autoDeploy?: boolean;\n database?: DeploymentDatabaseRequest;\n metadata?: Record<string, unknown>;\n idempotencyKey?: string;\n}\n\nexport interface DockerDeployCreateParams extends DeploymentCreateParams {}\n\nexport interface DockerDeployDoctorCheck {\n name: string;\n ok: boolean;\n message: string;\n details?: Record<string, unknown>;\n}\n\nexport interface DockerDeployDoctorProbe {\n url: string;\n ok: boolean;\n status?: number;\n error?: string;\n}\n\nexport interface DockerDeployDoctorResult {\n ok: boolean;\n deployment: DeploymentData;\n host?: DockerDeployHostData;\n checks: DockerDeployDoctorCheck[];\n probe?: DockerDeployDoctorProbe;\n}\n\nexport interface DeploymentProofCheck {\n id: string;\n ok: boolean;\n message: string;\n details?: Record<string, unknown>;\n recovery?: string[];\n}\n\nexport interface DeploymentProofProbe {\n url?: string;\n ok: boolean;\n status?: number;\n error?: string;\n}\n\nexport interface DeploymentProofResult {\n ok: boolean;\n deployment: DeploymentData;\n deployment_product: string | null;\n public_url: string | null;\n checks: DeploymentProofCheck[];\n probe?: DeploymentProofProbe;\n next_actions: string[];\n}\n\nexport interface DeploymentProofParams {\n probePath?: string;\n probe_path?: string;\n timeoutMs?: number;\n timeout_ms?: number;\n probe?: boolean;\n}\n\nexport interface DockerDeployDoctorParams {\n probePath?: string;\n probe_path?: string;\n timeoutMs?: number;\n timeout_ms?: number;\n}\n\nexport interface DeploymentUpdateParams {\n name?: string;\n branch?: string;\n build_command?: string;\n buildCommand?: string;\n run_command?: string;\n runCommand?: string;\n auto_deploy?: boolean;\n autoDeploy?: boolean;\n}\n\nexport interface PublishParams extends ExternalAttribution {\n sourceSandboxId: string;\n source_sandbox_id?: string;\n name?: string;\n deploymentId?: string;\n deployment_id?: string;\n /** @deprecated Reserved for dynamic runtime publish; ignored by current static publish route. */\n kind?: \"auto\" | \"static\" | \"dynamic\";\n /** @deprecated Reserved for deployment environments; ignored by current static publish route. */\n environment?: \"production\" | \"staging\" | string;\n outputPath?: string;\n output_path?: string;\n /** @deprecated Current /deployments/:id/publish snapshots /workspace internally. */\n sourceSnapshotPath?: string;\n /** @deprecated Current /deployments/:id/publish snapshots /workspace internally. */\n source_snapshot_path?: string;\n entrypoint?: string;\n promote?: boolean;\n domain?: string;\n customDomain?: string;\n custom_domain?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n buildCommand?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n build_command?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n runCommand?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n run_command?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n port?: number;\n /** @deprecated Reserved for dynamic runtime publish. */\n healthCheckPath?: string;\n /** @deprecated Reserved for dynamic runtime publish. */\n health_check_path?: string;\n /** @deprecated Reserved for managed data-service binding. */\n dataServices?: string[];\n /** @deprecated Reserved for managed data-service binding. */\n data_services?: string[];\n idempotencyKey?: string;\n}\n\nexport interface PublishResult {\n deployment: DeploymentData;\n version: DeploymentVersionData;\n release?: DeploymentReleaseData;\n services?: DeploymentServiceData[];\n promoted: boolean;\n}\n\nexport type PublishFromSandboxParams = Omit<\n PublishParams,\n \"sourceSandboxId\" | \"source_sandbox_id\"\n> & {\n sourceSandboxId?: string;\n source_sandbox_id?: string;\n};\n\nexport interface RollbackParams {\n versionId?: string;\n version_id?: string;\n idempotencyKey?: string;\n}\n\nexport interface VersionListParams extends ExternalAttribution {\n state?: DeploymentVersionState | string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface RuntimeLogsResult {\n runtime_instance_id?: string;\n deployment_id?: string;\n log_path?: string;\n logs: string;\n}\n\nexport interface AddDomainParams extends ExternalAttribution {\n redirectPolicy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n redirect_policy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n idempotencyKey?: string;\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────\n\nfunction attributionBody(p: ExternalAttribution): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n const ws = p.externalWorkspaceId ?? p.external_workspace_id;\n const usr = p.externalUserId ?? p.external_user_id;\n const proj = p.externalProjectId ?? p.external_project_id;\n if (ws !== undefined) out.external_workspace_id = ws;\n if (usr !== undefined) out.external_user_id = usr;\n if (proj !== undefined) out.external_project_id = proj;\n return out;\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\nfunction unwrap<T>(payload: { data?: T } | T): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: { data?: T[] } | { items?: T[] } | T[] | unknown,\n candidateKeys: string[] = [\"items\", \"deployments\", \"versions\", \"domains\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction dockerDeployMetadata(\n metadata: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n return {\n ...(metadata ?? {}),\n deployment_product: \"docker_deploy\",\n };\n}\n\nfunction dockerDeployProduct(deployment: DeploymentData): unknown {\n return deployment.deployment_product ?? deployment.metadata?.deployment_product;\n}\n\nfunction dockerDeployHostId(deployment: DeploymentData): string | null {\n const metadataHost = deployment.metadata?.docker_deploy_host_id;\n const appHost = dockerDeployApp(deployment)?.docker_deploy_host_id;\n return (\n deployment.docker_deploy_host_id ??\n (typeof metadataHost === \"string\" ? metadataHost : null) ??\n (typeof appHost === \"string\" ? appHost : null)\n );\n}\n\nfunction dockerDeployApp(\n deployment: DeploymentData,\n): Record<string, unknown> | null {\n if (\n deployment.docker_deploy_app &&\n typeof deployment.docker_deploy_app === \"object\" &&\n !Array.isArray(deployment.docker_deploy_app)\n ) {\n return deployment.docker_deploy_app;\n }\n const app = deployment.metadata?.docker_deploy;\n if (!app || typeof app !== \"object\" || Array.isArray(app)) return null;\n return app as Record<string, unknown>;\n}\n\nfunction dockerDeployAppPort(app: Record<string, unknown> | null): number | null {\n const runtimePort = app?.runtime_port;\n if (typeof runtimePort === \"number\" && Number.isFinite(runtimePort)) return runtimePort;\n if (typeof runtimePort === \"string\" && /^\\d+$/.test(runtimePort)) return Number(runtimePort);\n\n const url = app?.url;\n if (typeof url !== \"string\") return null;\n try {\n const parsed = new URL(url);\n const port = Number.parseInt(parsed.port, 10);\n return Number.isInteger(port) ? port : null;\n } catch {\n return null;\n }\n}\n\nfunction addDoctorCheck(\n checks: DockerDeployDoctorCheck[],\n name: string,\n ok: boolean,\n message: string,\n details?: Record<string, unknown>,\n): void {\n checks.push({ name, ok, message, ...(details ? { details } : {}) });\n}\n\nfunction addProofCheck(\n checks: DeploymentProofCheck[],\n id: string,\n ok: boolean,\n message: string,\n details?: Record<string, unknown>,\n recovery?: string[],\n): void {\n checks.push({\n id,\n ok,\n message,\n ...(details ? { details } : {}),\n ...(recovery ? { recovery } : {}),\n });\n}\n\nfunction deploymentPublicUrl(deployment: DeploymentData): string | null {\n const app = dockerDeployApp(deployment);\n const appUrl = app?.public_url;\n if (typeof appUrl === \"string\" && appUrl) return appUrl;\n return deployment.public_url ?? null;\n}\n\nfunction hostHealthy(host: DockerDeployHostData | undefined): boolean {\n return Boolean(\n host && host.status === \"active\" && host.appliance_status === \"healthy\",\n );\n}\n\nfunction probeUrl(publicUrl: string, probePath: string): string {\n const url = new URL(publicUrl);\n url.pathname = probePath.startsWith(\"/\") ? probePath : `/${probePath}`;\n return url.toString();\n}\n\n// ── Sub-resources ──────────────────────────────────────────────────────────\n\nexport class DeploymentVersions {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async list(params: VersionListParams = {}): Promise<DeploymentVersionData[]> {\n const query = stripUndefined({\n state: params.state,\n limit: params.limit,\n cursor: params.cursor,\n ...attributionBody(params),\n });\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/versions`,\n query as Record<string, string | number | boolean | undefined>,\n );\n return listItems<DeploymentVersionData>(data);\n }\n\n async get(versionId: string): Promise<DeploymentVersionData> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/versions/${versionId}`,\n );\n return unwrap(data) as DeploymentVersionData;\n }\n\n async promote(\n versionId: string,\n opts: { environment?: string; idempotencyKey?: string } = {},\n ): Promise<DeploymentData> {\n const body = stripUndefined({ environment: opts.environment });\n const data = await this.http.request<unknown>(\n `/deployments/${this.deploymentId}/versions/${versionId}/promote`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(opts.idempotencyKey) },\n },\n );\n return unwrap(data) as DeploymentData;\n }\n}\n\nexport class DeploymentReleases {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async list(): Promise<DeploymentReleaseData[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/releases`,\n );\n return listItems<DeploymentReleaseData>(data, [\"releases\"]);\n }\n\n async get(releaseId: string): Promise<DeploymentReleaseData> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/releases/${releaseId}`,\n );\n return unwrap(data) as DeploymentReleaseData;\n }\n}\n\nexport class DeploymentRuntimeInstances {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async list(): Promise<RuntimeInstanceData[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/runtime-instances`,\n );\n return listItems<RuntimeInstanceData>(data, [\"runtime_instances\"]);\n }\n\n async get(instanceId: string): Promise<RuntimeInstanceData> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/runtime-instances/${instanceId}`,\n );\n return unwrap(data) as RuntimeInstanceData;\n }\n\n async logs(instanceId: string, lines = 100): Promise<RuntimeLogsResult> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/runtime-instances/${instanceId}/logs`,\n { lines },\n );\n const unwrapped = unwrap(data) as Record<string, unknown>;\n const result: RuntimeLogsResult = { logs: String(unwrapped.logs ?? \"\") };\n if (typeof unwrapped.runtime_instance_id === \"string\") {\n result.runtime_instance_id = unwrapped.runtime_instance_id;\n }\n if (typeof unwrapped.deployment_id === \"string\") {\n result.deployment_id = unwrapped.deployment_id;\n }\n if (typeof unwrapped.log_path === \"string\") {\n result.log_path = unwrapped.log_path;\n }\n return result;\n }\n}\n\nexport class DeploymentDomains {\n constructor(\n private readonly http: HttpClient,\n private readonly deploymentId: string,\n ) {}\n\n async add(\n domain: string,\n params: AddDomainParams = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n domain,\n redirect_policy: params.redirectPolicy ?? params.redirect_policy,\n ...attributionBody(params),\n };\n const data = await this.http.request<unknown>(\n `/deployments/${this.deploymentId}/domains`,\n {\n method: \"POST\",\n body: stripUndefined(body),\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as Record<string, unknown>;\n }\n\n async list(\n filters: ExternalAttribution = {},\n ): Promise<Record<string, unknown>[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${this.deploymentId}/domains`,\n attributionBody(filters) as Record<\n string,\n string | number | boolean | undefined\n >,\n );\n return listItems<Record<string, unknown>>(data);\n }\n\n async verify(domainId: string): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(\n `/deployments/${this.deploymentId}/domains/${domainId}/verify`,\n );\n return unwrap(data) as Record<string, unknown>;\n }\n\n async delete(domainId: string): Promise<void> {\n await this.http.delete<unknown>(\n `/deployments/${this.deploymentId}/domains/${domainId}`,\n );\n }\n}\n\n// ── Main resource ──────────────────────────────────────────────────────────\n\nexport class Deployments {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: DeploymentListParams = {}): Promise<DeploymentData[]> {\n const projectId = params.projectId ?? params.project_id;\n const query = stripUndefined({\n project_id: projectId,\n state: params.state,\n limit: params.limit,\n cursor: params.cursor,\n ...attributionBody(params),\n });\n const data = await this.http.get<unknown>(\n \"/deployments\",\n query as Record<string, string | number | boolean | undefined>,\n );\n return listItems<DeploymentData>(data);\n }\n\n async get(deploymentId: string): Promise<DeploymentData> {\n const data = await this.http.get<unknown>(`/deployments/${deploymentId}`);\n return unwrap(data) as DeploymentData;\n }\n\n async create(params: DeploymentCreateParams): Promise<DeploymentData> {\n const body = stripUndefined({\n name: params.name,\n repo_url: params.repoUrl ?? params.repo_url,\n branch: params.branch,\n build_command: params.buildCommand ?? params.build_command,\n run_command: params.runCommand ?? params.run_command,\n auto_deploy: params.autoDeploy ?? params.auto_deploy,\n database: params.database,\n metadata: params.metadata,\n ...attributionBody(params),\n });\n const data = await this.http.request<unknown>(\"/deployments\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n });\n return unwrap(data) as DeploymentData;\n }\n\n /**\n * Create a deployment that runs on the workspace's dedicated App Engine\n * runtime. It uses the same /deployments API as MIOSA Deploy, but marks the\n * deployment so the control plane attaches it to the workspace Docker host.\n */\n async createDockerDeploy(\n params: DockerDeployCreateParams,\n ): Promise<DeploymentData> {\n return this.create({\n ...params,\n metadata: dockerDeployMetadata(params.metadata),\n });\n }\n\n /**\n * Verify a App Engine deployment before telling a user or agent it is\n * live. Checks product markers, appliance host health, route metadata, and\n * optionally probes the public URL.\n */\n async doctorDockerDeploy(\n deploymentId: string,\n params: DockerDeployDoctorParams = {},\n ): Promise<DockerDeployDoctorResult> {\n const checks: DockerDeployDoctorCheck[] = [];\n const deployment = await this.get(deploymentId);\n const metadata = deployment.metadata ?? {};\n const product = dockerDeployProduct(deployment);\n const hostId = dockerDeployHostId(deployment);\n\n addDoctorCheck(\n checks,\n \"deployment_product\",\n product === \"docker_deploy\",\n product === \"docker_deploy\"\n ? \"Deployment is marked for App Engine.\"\n : `Expected deployment_product=docker_deploy, got ${String(product ?? \"missing\")}.`,\n { deployment_product: product ?? null },\n );\n\n addDoctorCheck(\n checks,\n \"docker_deploy_host_id\",\n Boolean(hostId),\n hostId\n ? \"Deployment has a App Engine host id.\"\n : \"Deployment has no docker_deploy_host_id.\",\n { docker_deploy_host_id: hostId },\n );\n\n let host: DockerDeployHostData | undefined;\n if (hostId) {\n try {\n const rawHost = await this.http.get<unknown>(\n `/docker-deploy/hosts/${hostId}`,\n );\n host = unwrap<DockerDeployHostData>(\n rawHost as DockerDeployHostData | { data?: DockerDeployHostData },\n );\n addDoctorCheck(\n checks,\n \"docker_deploy_host_health\",\n hostHealthy(host),\n hostHealthy(host)\n ? \"App Engine host is active and healthy.\"\n : `App Engine host status=${host.status} appliance=${host.appliance_status}.`,\n {\n status: host.status,\n appliance_status: host.appliance_status,\n },\n );\n } catch (error) {\n addDoctorCheck(\n checks,\n \"docker_deploy_host_health\",\n false,\n error instanceof Error ? error.message : String(error),\n );\n }\n }\n\n const app = dockerDeployApp(deployment);\n const appPort = dockerDeployAppPort(app);\n const appRunning = app?.status === \"running\" && appPort !== null;\n addDoctorCheck(\n checks,\n \"docker_deploy_app\",\n appRunning,\n appRunning\n ? \"App Engine app metadata points at a running container.\"\n : \"Deployment is missing running App Engine app metadata.\",\n app\n ? {\n app_id: app.app_id,\n container_id: app.container_id,\n status: app.status,\n url: app.url,\n expected_port: appPort,\n }\n : undefined,\n );\n\n const runtime = metadata.runtime;\n const runtimeCandidate =\n typeof runtime === \"object\" && runtime !== null\n ? (runtime as Record<string, unknown>)\n : undefined;\n const appRuntimeIp = app?.runtime_ip;\n const appRuntimePort = app?.runtime_port;\n const appRuntimeCandidate =\n typeof appRuntimeIp === \"string\" &&\n (typeof appRuntimePort === \"number\" || typeof appRuntimePort === \"string\")\n ? { ip: appRuntimeIp, port: Number(appRuntimePort) }\n : undefined;\n const effectiveRuntime = appRuntimeCandidate ?? runtimeCandidate;\n const hasRuntimeRoute =\n typeof effectiveRuntime?.ip === \"string\" &&\n typeof effectiveRuntime.port === \"number\" &&\n Number.isFinite(effectiveRuntime.port);\n const runtimeRecord = hasRuntimeRoute\n ? effectiveRuntime\n : undefined;\n const routeMatchesContainerPort =\n hasRuntimeRoute && (appPort === null || runtimeRecord?.port === appPort);\n addDoctorCheck(\n checks,\n \"runtime_route\",\n hasRuntimeRoute && routeMatchesContainerPort,\n hasRuntimeRoute && routeMatchesContainerPort\n ? \"Deployment route points at the Docker container host port.\"\n : hasRuntimeRoute && appPort !== null\n ? `Deployment route port ${String(runtimeRecord?.port)} does not match Docker container host port ${appPort}.`\n : \"Deployment is missing appliance runtime route metadata.\",\n runtimeRecord\n ? {\n ...runtimeRecord,\n expected_port: appPort,\n docker_deploy_url: app?.url,\n }\n : undefined,\n );\n\n let probe: DockerDeployDoctorProbe | undefined;\n const publicUrl = deploymentPublicUrl(deployment);\n const path = params.probePath ?? params.probe_path ?? \"/\";\n if (publicUrl && typeof fetch === \"function\") {\n const url = probeUrl(publicUrl, path);\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n params.timeoutMs ?? params.timeout_ms ?? 10_000,\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n signal: controller.signal,\n });\n probe = { url, ok: response.ok, status: response.status };\n addDoctorCheck(\n checks,\n \"public_url_probe\",\n response.ok,\n `Public URL returned HTTP ${response.status}.`,\n { url, status: response.status },\n );\n } catch (error) {\n probe = {\n url,\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n };\n addDoctorCheck(\n checks,\n \"public_url_probe\",\n false,\n probe.error ?? \"Public URL probe failed.\",\n { url },\n );\n } finally {\n clearTimeout(timeout);\n }\n }\n\n return {\n ok: checks.every((check) => check.ok),\n deployment,\n ...(host ? { host } : {}),\n checks,\n ...(probe ? { probe } : {}),\n };\n }\n\n async prove(\n deploymentId: string,\n params: DeploymentProofParams = {},\n ): Promise<DeploymentProofResult> {\n const deployment = await this.get(deploymentId);\n const product = dockerDeployProduct(deployment);\n const checks: DeploymentProofCheck[] = [];\n const publicUrl = deploymentPublicUrl(deployment);\n\n addProofCheck(\n checks,\n \"deployment_row\",\n true,\n `Deployment ${deployment.id} exists with state=${deployment.state}.`,\n { state: deployment.state },\n );\n\n addProofCheck(\n checks,\n \"deployment_running\",\n deployment.state === \"running\",\n deployment.state === \"running\"\n ? \"Deployment is marked running.\"\n : `Deployment state is ${deployment.state}, expected running.`,\n { state: deployment.state },\n [\"Inspect deployment logs.\", \"Redeploy the deployment.\"],\n );\n\n addProofCheck(\n checks,\n \"public_url_present\",\n Boolean(publicUrl),\n publicUrl ? `Public URL is ${publicUrl}.` : \"Deployment has no public URL.\",\n { public_url: publicUrl },\n );\n\n if (product === \"docker_deploy\") {\n const app = dockerDeployApp(deployment);\n const appPort = dockerDeployAppPort(app);\n const hostId = dockerDeployHostId(deployment);\n const runtimeIp =\n typeof app?.runtime_ip === \"string\"\n ? app.runtime_ip\n : typeof deployment.metadata?.runtime === \"object\" &&\n deployment.metadata.runtime !== null\n ? (deployment.metadata.runtime as Record<string, unknown>).ip\n : null;\n\n addProofCheck(\n checks,\n \"docker_deploy_host_link\",\n Boolean(hostId),\n hostId\n ? `Deployment links App Engine host ${hostId}.`\n : \"Deployment has no App Engine host id.\",\n { docker_deploy_host_id: hostId },\n [\"Ensure the workspace App Engine appliance.\"],\n );\n\n if (hostId) {\n try {\n const rawHost = await this.http.get<unknown>(\n `/docker-deploy/hosts/${hostId}`,\n );\n const host = unwrap<DockerDeployHostData>(\n rawHost as DockerDeployHostData | { data?: DockerDeployHostData },\n );\n addProofCheck(\n checks,\n \"docker_deploy_host_ready\",\n hostHealthy(host),\n `Host status=${host.status}, appliance=${host.appliance_status}.`,\n {\n status: host.status,\n appliance_status: host.appliance_status,\n },\n [\"Check App Engine host health.\"],\n );\n } catch (error) {\n addProofCheck(\n checks,\n \"docker_deploy_host_ready\",\n false,\n error instanceof Error ? error.message : String(error),\n { docker_deploy_host_id: hostId },\n );\n }\n }\n\n addProofCheck(\n checks,\n \"docker_deploy_app_row\",\n Boolean(app),\n app\n ? `App Engine app status=${String(app.status ?? \"unknown\")}.`\n : \"App Engine app row is missing.\",\n app\n ? {\n app_id: app.app_id,\n container_id: app.container_id,\n status: app.status,\n }\n : undefined,\n [\"Publish through App Engine again.\"],\n );\n\n addProofCheck(\n checks,\n \"docker_deploy_container_route\",\n Boolean(\n app &&\n app.status === \"running\" &&\n typeof app.container_id === \"string\" &&\n typeof runtimeIp === \"string\" &&\n appPort !== null,\n ),\n app\n ? `Container=${String(app.container_id ?? \"missing\")}, route=${String(runtimeIp ?? \"missing\")}:${String(appPort ?? \"missing\")}.`\n : \"Cannot verify container route without App Engine app row.\",\n {\n container_id: app?.container_id ?? null,\n runtime_ip: runtimeIp ?? null,\n runtime_port: appPort,\n },\n [\"Run App Engine doctor.\", \"Check appliance container health.\"],\n );\n }\n\n let probe: DeploymentProofProbe | undefined;\n const shouldProbe = params.probe ?? true;\n if (shouldProbe && publicUrl && typeof fetch === \"function\") {\n const url = probeUrl(publicUrl, params.probePath ?? params.probe_path ?? \"/\");\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n params.timeoutMs ?? params.timeout_ms ?? 10_000,\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n signal: controller.signal,\n });\n probe = { url, ok: response.ok, status: response.status };\n } catch (error) {\n probe = {\n url,\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n };\n } finally {\n clearTimeout(timeout);\n }\n\n addProofCheck(\n checks,\n \"public_url_probe\",\n probe.ok,\n probe.ok\n ? `Public URL returned HTTP ${probe.status}.`\n : `Public URL probe failed: ${probe.error ?? `HTTP ${probe.status}`}.`,\n { ...probe },\n [\"Check DNS/custom domain routing.\", \"Check app logs and container health.\"],\n );\n }\n\n const nextActions = checks\n .filter((check) => !check.ok)\n .flatMap((check) => check.recovery ?? [])\n .filter((action, index, all) => all.indexOf(action) === index);\n\n return {\n ok: checks.every((check) => check.ok),\n deployment,\n deployment_product: typeof product === \"string\" ? product : null,\n public_url: publicUrl,\n checks,\n ...(probe ? { probe } : {}),\n next_actions: nextActions,\n };\n }\n\n async update(\n deploymentId: string,\n params: DeploymentUpdateParams,\n ): Promise<DeploymentData> {\n const body = stripUndefined({\n name: params.name,\n branch: params.branch,\n build_command: params.buildCommand ?? params.build_command,\n run_command: params.runCommand ?? params.run_command,\n auto_deploy: params.autoDeploy ?? params.auto_deploy,\n });\n const data = await this.http.patch<unknown>(\n `/deployments/${deploymentId}`,\n body,\n );\n return unwrap(data) as DeploymentData;\n }\n\n async delete(deploymentId: string): Promise<void> {\n await this.http.delete<unknown>(`/deployments/${deploymentId}`);\n }\n\n async publish(\n deploymentId: string,\n params: PublishParams,\n ): Promise<PublishResult> {\n const body = stripUndefined({\n source_sandbox_id: params.sourceSandboxId ?? params.source_sandbox_id,\n output_path: params.outputPath ?? params.output_path,\n entrypoint: params.entrypoint,\n promote: params.promote,\n });\n const data = await this.http.request<unknown>(\n `/deployments/${deploymentId}/publish`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as PublishResult;\n }\n\n /**\n * Backward-compatible bridge: POST /sandboxes/:id/deploy. Works today;\n * returns either release-backed or sandbox-backed depending on backend\n * phase. Prefer `publish()` once Phase 2B/3 lands.\n */\n async publishFromSandbox(\n sandboxId: string,\n params: PublishFromSandboxParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined({\n name: params.name,\n deployment_id: params.deploymentId ?? params.deployment_id,\n output_path: params.outputPath ?? params.output_path,\n source_snapshot_path:\n params.sourceSnapshotPath ?? params.source_snapshot_path,\n entrypoint: params.entrypoint,\n domain: params.domain,\n custom_domain: params.customDomain ?? params.custom_domain,\n });\n const data = await this.http.request<unknown>(\n `/sandboxes/${sandboxId}/deploy`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as Record<string, unknown>;\n }\n\n async rollback(\n deploymentId: string,\n params: RollbackParams = {},\n ): Promise<DeploymentData> {\n const body = stripUndefined({\n version_id: params.versionId ?? params.version_id,\n });\n const data = await this.http.request<unknown>(\n `/deployments/${deploymentId}/rollback`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(params.idempotencyKey) },\n },\n );\n return unwrap(data) as DeploymentData;\n }\n\n async listBuilds(deploymentId: string): Promise<DeploymentBuildData[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${deploymentId}/builds`,\n );\n return listItems<DeploymentBuildData>(data);\n }\n\n async getBuild(\n deploymentId: string,\n buildId: string,\n ): Promise<DeploymentBuildData> {\n const data = await this.http.get<unknown>(\n `/deployments/${deploymentId}/builds/${buildId}`,\n );\n return unwrap(data) as DeploymentBuildData;\n }\n\n async listEnv(deploymentId: string): Promise<Record<string, unknown>[]> {\n const data = await this.http.get<unknown>(\n `/deployments/${deploymentId}/env`,\n );\n return listItems<Record<string, unknown>>(data);\n }\n\n async setEnv(\n deploymentId: string,\n vars: Record<string, string>,\n opts: { environment?: string } = {},\n ): Promise<Record<string, unknown>[]> {\n const body = stripUndefined({ env: vars, environment: opts.environment });\n const data = await this.http.post<unknown>(\n `/deployments/${deploymentId}/env`,\n body,\n );\n return listItems<Record<string, unknown>>(data);\n }\n\n versions(deploymentId: string): DeploymentVersions {\n return new DeploymentVersions(this.http, deploymentId);\n }\n\n releases(deploymentId: string): DeploymentReleases {\n return new DeploymentReleases(this.http, deploymentId);\n }\n\n runtimeInstances(deploymentId: string): DeploymentRuntimeInstances {\n return new DeploymentRuntimeInstances(this.http, deploymentId);\n }\n\n runtime_instances(deploymentId: string): DeploymentRuntimeInstances {\n return this.runtimeInstances(deploymentId);\n }\n\n domains(deploymentId: string): DeploymentDomains {\n return new DeploymentDomains(this.http, deploymentId);\n }\n\n connectors(deploymentId: string): DeploymentConnectors {\n return new DeploymentConnectors(this.http, deploymentId);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport type DeviceKind = \"sandbox\" | \"computer\" | \"sandbox_worker\" | string;\n\nexport interface DeviceData {\n id?: string;\n kind?: DeviceKind;\n type?: DeviceKind;\n name?: string | null;\n state?: string | null;\n status?: string | null;\n ready?: boolean | null;\n persistent?: boolean | null;\n always_on?: boolean | null;\n preview_url?: string | null;\n metadata?: Record<string, unknown> | null;\n [key: string]: unknown;\n}\n\nexport interface DeviceListParams {\n kind?: DeviceKind;\n type?: DeviceKind;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n}\n\nexport interface DeviceCapabilities {\n id?: string;\n kind?: DeviceKind;\n capabilities?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface DeviceExecParams {\n command: string | string[];\n timeoutMs?: number;\n timeout_ms?: number;\n cwd?: string;\n env?: Record<string, string>;\n}\n\nexport interface DeviceExecResult {\n exit_code?: number | null;\n exitCode?: number | null;\n stdout?: string;\n stderr?: string;\n status?: string;\n [key: string]: unknown;\n}\n\nexport interface DeviceFileListParams {\n path?: string;\n}\n\nexport interface DeviceFileEntry {\n name?: string;\n path?: string;\n type?: \"file\" | \"dir\" | string;\n size?: number | null;\n modified?: string | null;\n [key: string]: unknown;\n}\n\nexport interface DeviceReadFileParams {\n path: string;\n}\n\nexport interface DeviceReadFileResult {\n path: string;\n size?: number | null;\n encoding?: \"base64\" | string;\n content: string;\n [key: string]: unknown;\n}\n\nexport interface DeviceWriteFileParams {\n path: string;\n content?: string;\n contentBase64?: string;\n content_base64?: string;\n}\n\nexport interface DeviceWriteFileResult {\n path?: string;\n size?: number | null;\n [key: string]: unknown;\n}\n\nexport interface DeviceExposeParams {\n port: number;\n}\n\nexport interface DeviceExposeResult {\n port?: number;\n url?: string;\n ready?: boolean;\n [key: string]: unknown;\n}\n\nexport interface DeviceLifecycleResult {\n id?: string;\n state?: string;\n [key: string]: unknown;\n}\n\nexport interface DeviceExtendParams {\n timeoutSec?: number;\n timeout_sec?: number;\n}\n\nexport type DeviceConnectorBinding =\n | string\n | {\n uid?: string;\n name?: string;\n type?: \"mcp\" | \"api-key\" | \"api_key\" | \"oauth\" | \"custom\" | string;\n provider?: string;\n managed?: boolean;\n server_url?: string;\n serverUrl?: string;\n scopes?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n };\n\nexport interface DeviceBootstrapParams {\n runtime: \"osa\" | \"claude-code\" | \"claude\" | \"codex\" | \"hermes\" | \"pi\" | \"custom\" | string;\n cwd?: string;\n connectors?: DeviceConnectorBinding[];\n env?: Record<string, string>;\n mcp?: Array<{ name: string; url: string }>;\n installCommand?: string;\n install_command?: string;\n skipProbe?: boolean;\n skip_probe?: boolean;\n}\n\nexport interface DeviceBootstrapResult {\n device_id: string;\n ok: boolean;\n runtime: string;\n manifest_path: string;\n steps: Array<{\n name: string;\n ok: boolean;\n detail?: unknown;\n error?: string;\n }>;\n}\n\nexport interface DeviceBrowserResult {\n kind?: string;\n desktop_url?: string;\n desktopEntryUrl?: string;\n desktop_entry_url?: string;\n ws_url?: string;\n wsUrl?: string;\n token?: string;\n expires_at?: number;\n expiresAt?: number;\n computer_id?: string;\n computerId?: string;\n slug?: string;\n [key: string]: unknown;\n}\n\nconst RUNTIME_BINARIES: Record<string, string[]> = {\n \"claude-code\": [\"claude-code\", \"claude\"],\n claude: [\"claude\"],\n codex: [\"codex\"],\n hermes: [\"hermes\"],\n osa: [\"osa\"],\n pi: [\"pi\"],\n custom: [],\n};\n\nfunction unwrap<T>(payload: unknown, keys: string[] = [\"data\"]): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of keys) {\n if (key in p) return p[key] as T;\n }\n }\n return payload as T;\n}\n\nfunction unwrapList<T>(payload: unknown): T[] {\n if (Array.isArray(payload)) return payload as T[];\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const key of [\"data\", \"devices\", \"items\", \"entries\"]) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction pickFirst<T>(...values: Array<T | undefined>): T | undefined {\n for (const value of values) if (value !== undefined) return value;\n return undefined;\n}\n\nfunction queryFromListParams(\n params: DeviceListParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n kind: pickFirst(params.kind, params.type),\n workspace_id: pickFirst(params.workspaceId, params.workspace_id),\n project_id: pickFirst(params.projectId, params.project_id),\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction queryFromFileParams(\n params: DeviceFileListParams | DeviceReadFileParams = {},\n): Record<string, string | number | boolean | undefined> {\n return stripUndefined({\n path: params.path,\n }) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction devicePath(id: string): string {\n return encodeURIComponent(id);\n}\n\nexport class Devices {\n constructor(private readonly http: HttpClient) {}\n\n /** List unified MIOSA devices: sandbox workers and desktop computers. */\n async list(params: DeviceListParams = {}): Promise<DeviceData[]> {\n const data = await this.http.get<unknown>(\n \"/devices\",\n queryFromListParams(params),\n );\n return unwrapList<DeviceData>(data);\n }\n\n /** Show one unified device by id. */\n async get(id: string): Promise<DeviceData> {\n const data = await this.http.get<unknown>(`/devices/${devicePath(id)}`);\n return unwrap<DeviceData>(data);\n }\n\n show(id: string): Promise<DeviceData> {\n return this.get(id);\n }\n\n /** Discover the operations this device supports. */\n async capabilities(id: string): Promise<DeviceCapabilities> {\n const data = await this.http.get<unknown>(\n `/devices/${devicePath(id)}/capabilities`,\n );\n return unwrap<DeviceCapabilities>(data);\n }\n\n /** Execute a command inside the device. */\n async exec(id: string, params: DeviceExecParams): Promise<DeviceExecResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/exec`,\n stripUndefined({\n command: params.command,\n timeout_ms: pickFirst(params.timeoutMs, params.timeout_ms),\n cwd: params.cwd,\n env: params.env,\n }),\n );\n return unwrap<DeviceExecResult>(data);\n }\n\n /** List files inside the device filesystem. */\n async listFiles(\n id: string,\n params: DeviceFileListParams = {},\n ): Promise<DeviceFileEntry[]> {\n const data = await this.http.get<unknown>(\n `/devices/${devicePath(id)}/files`,\n queryFromFileParams(params),\n );\n return unwrapList<DeviceFileEntry>(data);\n }\n\n /** Read a file. Content is returned base64-encoded by the API. */\n async readFile(\n id: string,\n params: DeviceReadFileParams,\n ): Promise<DeviceReadFileResult> {\n const data = await this.http.get<unknown>(\n `/devices/${devicePath(id)}/files/read`,\n queryFromFileParams(params),\n );\n return unwrap<DeviceReadFileResult>(data);\n }\n\n /** Write a text or base64 payload into the device filesystem. */\n async writeFile(\n id: string,\n params: DeviceWriteFileParams,\n ): Promise<DeviceWriteFileResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/files/write`,\n stripUndefined({\n path: params.path,\n content: params.content,\n content_base64: pickFirst(params.contentBase64, params.content_base64),\n }),\n );\n return unwrap<DeviceWriteFileResult>(data);\n }\n\n /** Expose a device port through MIOSA routing. */\n async expose(\n id: string,\n params: DeviceExposeParams,\n ): Promise<DeviceExposeResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/expose`,\n { port: params.port },\n );\n return unwrap<DeviceExposeResult>(data);\n }\n\n /** Return browser/desktop connection details for a computer-backed device. */\n async browser(id: string): Promise<DeviceBrowserResult> {\n const data = await this.http.get<unknown>(`/devices/${devicePath(id)}/browser`);\n return unwrap<DeviceBrowserResult>(data);\n }\n\n async pause(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/pause`,\n {},\n );\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n async stop(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/stop`,\n {},\n );\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n async resume(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/resume`,\n {},\n );\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n async extend(\n id: string,\n params: DeviceExtendParams,\n ): Promise<DeviceData> {\n const data = await this.http.post<unknown>(\n `/devices/${devicePath(id)}/extend`,\n { timeout_sec: pickFirst(params.timeoutSec, params.timeout_sec) },\n );\n return unwrap<DeviceData>(data);\n }\n\n async destroy(id: string): Promise<DeviceLifecycleResult> {\n const data = await this.http.delete<unknown>(`/devices/${devicePath(id)}`);\n return unwrap<DeviceLifecycleResult>(data);\n }\n\n /**\n * Write a MIOSA runtime bootstrap manifest and optionally install/probe\n * an agent runtime inside the device.\n */\n async bootstrap(\n id: string,\n params: DeviceBootstrapParams,\n ): Promise<DeviceBootstrapResult> {\n const runtime = params.runtime.trim().toLowerCase();\n const cwd = params.cwd ?? \"/workspace\";\n const manifestPath = `${cwd.replace(/\\/$/, \"\")}/.miosa/runtime-bootstrap.json`;\n const steps: DeviceBootstrapResult[\"steps\"] = [];\n\n const manifest = {\n version: 1,\n runtime,\n cwd,\n expected_binaries: RUNTIME_BINARIES[runtime] ?? [],\n connectors: params.connectors ?? [],\n env: params.env ?? {},\n mcp: params.mcp ?? [],\n created_by: \"@miosa/sdk\",\n };\n\n await this.recordStep(steps, \"write_manifest\", () =>\n this.writeFile(id, {\n path: manifestPath,\n content: `${JSON.stringify(manifest, null, 2)}\\n`,\n }),\n );\n\n const installCommand = pickFirst(params.installCommand, params.install_command);\n if (installCommand) {\n await this.recordStep(steps, \"install\", () =>\n this.exec(id, {\n command: installCommand,\n cwd,\n timeoutMs: 600_000,\n }),\n );\n }\n\n if (!(params.skipProbe ?? params.skip_probe)) {\n await this.recordStep(steps, \"probe\", () =>\n this.exec(id, {\n command: runtimeProbeCommand(runtime),\n cwd,\n timeoutMs: 60_000,\n }),\n );\n }\n\n return {\n device_id: id,\n ok: steps.every((step) => step.ok),\n runtime,\n manifest_path: manifestPath,\n steps,\n };\n }\n\n private async recordStep(\n steps: DeviceBootstrapResult[\"steps\"],\n name: string,\n fn: () => Promise<unknown>,\n ): Promise<void> {\n try {\n steps.push({ name, ok: true, detail: await fn() });\n } catch (error) {\n steps.push({\n name,\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n}\n\nfunction runtimeProbeCommand(runtime: string): string {\n const binaries = RUNTIME_BINARIES[runtime] ?? [];\n if (binaries.length === 0) return \"printf 'custom runtime manifest written\\\\n'\";\n const checks = binaries\n .map((binary) => `command -v ${shellWord(binary)} >/dev/null 2>&1`)\n .join(\" || \");\n const display = binaries.join(\" or \");\n return `${checks} && printf 'runtime available: ${display}\\\\n' || { printf 'runtime missing: ${display}\\\\n' >&2; exit 127; }`;\n}\n\nfunction shellWord(value: string): string {\n if (/^[A-Za-z0-9_./:-]+$/.test(value)) return value;\n return `'${value.replaceAll(\"'\", \"'\\\"'\\\"'\")}'`;\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport type DockerDeployHostId = string & {\n readonly __brand: \"DockerDeployHostId\";\n};\n\nexport type DockerDeployHostStatus =\n | \"pending\"\n | \"provisioning\"\n | \"bootstrapping\"\n | \"active\"\n | \"degraded\"\n | \"suspended\"\n | \"retired\"\n | \"error\";\n\nexport type DockerDeployApplianceStatus =\n | \"not_installed\"\n | \"installing\"\n | \"starting\"\n | \"healthy\"\n | \"unhealthy\"\n | \"unknown\";\n\nexport interface DockerDeployHostData {\n id: DockerDeployHostId;\n tenant_id: string;\n workspace_id: string;\n external_workspace_id?: string | null;\n computer_id?: string | null;\n fleet_node_id?: string | null;\n status: DockerDeployHostStatus;\n size: string;\n region: string;\n portal_domain?: string | null;\n runtime_base_url?: string | null;\n agent_base_url?: string | null;\n appliance_image?: string | null;\n appliance_version?: string | null;\n appliance_status: DockerDeployApplianceStatus;\n agent_last_seen_at?: string | null;\n metadata?: Record<string, unknown>;\n created_at?: string;\n updated_at?: string;\n}\n\nexport interface DockerDeployHostListParams {\n workspace_id?: string;\n workspaceId?: string;\n}\n\nexport interface DockerDeployHostEnsureParams {\n workspace_id?: string;\n workspaceId?: string;\n external_workspace_id?: string;\n externalWorkspaceId?: string;\n}\n\nexport interface DockerDeployHostListResponse {\n data?: DockerDeployHostData[];\n hosts?: DockerDeployHostData[];\n}\n\nexport interface DockerDeployHostResponse {\n data?: DockerDeployHostData;\n host?: DockerDeployHostData;\n queued?: boolean;\n}\n\nexport interface DockerDeployTemplate {\n id: string;\n name: string;\n description?: string;\n category?: string;\n runtime?: string;\n tags?: string[];\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface DockerDeployTemplateListResponse {\n data?: DockerDeployTemplate[];\n templates?: DockerDeployTemplate[];\n}\n\nexport interface DockerDeployTemplateResponse {\n data?: DockerDeployTemplate;\n template?: DockerDeployTemplate;\n}\n\nfunction workspaceId(params?: DockerDeployHostListParams): string | undefined {\n return params?.workspace_id ?? params?.workspaceId;\n}\n\nfunction ensureBody(params: DockerDeployHostEnsureParams): Record<string, string> {\n const body: Record<string, string> = {};\n const id = params.workspace_id ?? params.workspaceId;\n const externalId = params.external_workspace_id ?? params.externalWorkspaceId;\n if (id) body.workspace_id = id;\n if (externalId) body.external_workspace_id = externalId;\n return body;\n}\n\nfunction unwrapHost(response: DockerDeployHostResponse): DockerDeployHostData {\n const host = response.data ?? response.host;\n if (!host) {\n throw new Error(\"App Engine host response was empty.\");\n }\n return host;\n}\n\nfunction unwrapTemplates(response: DockerDeployTemplateListResponse): DockerDeployTemplate[] {\n return response.data ?? response.templates ?? [];\n}\n\nfunction unwrapTemplate(response: DockerDeployTemplateResponse): DockerDeployTemplate {\n const template = response.data ?? response.template;\n if (!template) {\n throw new Error(\"App Engine template response was empty.\");\n }\n return template;\n}\n\nexport class DockerDeploy {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List App Engine appliance hosts scoped to the current tenant.\n *\n * Pass a workspace ID to inspect the dedicated always-on appliance machine\n * for one white-label workspace.\n */\n async listHosts(\n params: DockerDeployHostListParams = {},\n ): Promise<DockerDeployHostData[]> {\n const res = await this.http.get<DockerDeployHostListResponse>(\n \"/docker-deploy/hosts\",\n { workspace_id: workspaceId(params) },\n );\n return res.data ?? res.hosts ?? [];\n }\n\n /**\n * Ensure a workspace has its dedicated App Engine appliance host.\n *\n * The host may still be `pending`, `provisioning`, or `bootstrapping` after\n * this call. Treat `status === \"active\"` and `appliance_status === \"healthy\"`\n * as the ready condition before sending app/container traffic to it.\n */\n async ensureHost(\n params: DockerDeployHostEnsureParams = {},\n ): Promise<{ host: DockerDeployHostData; queued: boolean }> {\n const res = await this.http.post<DockerDeployHostResponse>(\n \"/docker-deploy/hosts/ensure\",\n ensureBody(params),\n );\n return { host: unwrapHost(res), queued: res.queued ?? false };\n }\n\n /** Fetch one App Engine host by ID. */\n async getHost(hostId: string): Promise<DockerDeployHostData> {\n const res = await this.http.get<DockerDeployHostResponse>(\n `/docker-deploy/hosts/${hostId}`,\n );\n return unwrapHost(res);\n }\n\n /** List App Engine starter templates. */\n async listTemplates(): Promise<DockerDeployTemplate[]> {\n const res = await this.http.get<DockerDeployTemplateListResponse>(\n \"/docker-deploy/templates\",\n );\n return unwrapTemplates(res);\n }\n\n /** Fetch one App Engine starter template by ID. */\n async getTemplate(templateId: string): Promise<DockerDeployTemplate> {\n const res = await this.http.get<DockerDeployTemplateResponse>(\n `/docker-deploy/templates/${encodeURIComponent(templateId)}`,\n );\n return unwrapTemplate(res);\n }\n}\n","/**\n * Email — admin email campaigns, templates, and inbox surfaces.\n *\n * Sub-namespaces:\n * client.email.campaigns — bulk email send-out lifecycle\n * client.email.templates — reusable templates (keyed by name)\n * client.email.inbox — inbound + outbound direct messages\n *\n * Routes: /admin/email-{campaigns,templates,inbox}/*\n * Requires admin credential (msk_a_* / msk_p_* or admin JWT).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"campaigns\",\n \"templates\",\n \"inbox\",\n \"deliveries\",\n \"items\",\n ]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"campaigns\",\n \"templates\",\n \"inbox\",\n \"deliveries\",\n \"items\",\n ]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nfunction strip(obj: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Campaigns ──────────────────────────────────────────────────────────────\n\nexport class EmailCampaigns {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\n \"/admin/email-campaigns\",\n filters as Record<string, string | number | boolean | undefined>,\n ),\n );\n }\n\n async create(\n attrs: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\"/admin/email-campaigns\", strip(attrs)),\n );\n }\n\n async recipientCount(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(\n \"/admin/email-campaigns/recipient-count\",\n filters,\n ),\n );\n }\n\n async send(\n campaignId: string,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\n `/admin/email-campaigns/${campaignId}/send`,\n strip(opts),\n ),\n );\n }\n\n async cancel(campaignId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\n `/admin/email-campaigns/${campaignId}/cancel`,\n ),\n );\n }\n\n async deliveries(\n campaignId: string,\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\n `/admin/email-campaigns/${campaignId}/deliveries`,\n filters,\n ),\n );\n }\n}\n\n// ── Templates ──────────────────────────────────────────────────────────────\n\nexport class EmailTemplates {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\"/admin/email-templates\", filters),\n );\n }\n\n async create(\n key: string,\n attrs: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\"/admin/email-templates\", {\n key,\n ...strip(attrs),\n }),\n );\n }\n\n async update(\n key: string,\n attrs: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.put<unknown>(\n `/admin/email-templates/${key}`,\n strip(attrs),\n ),\n );\n }\n\n async reset(key: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/email-templates/${key}/reset`),\n );\n }\n}\n\n// ── Inbox ──────────────────────────────────────────────────────────────────\n\nexport class EmailInbox {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n return unwrapList(\n await this.http.get<unknown>(\"/admin/email-inbox\", filters),\n );\n }\n\n async send(attrs: Record<string, unknown>): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(\"/admin/email-inbox/send\", strip(attrs)),\n );\n }\n\n async markRead(messageId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/email-inbox/${messageId}/read`),\n );\n }\n\n async archive(messageId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<unknown>(`/admin/email-inbox/${messageId}/archive`),\n );\n }\n}\n\n// ── Top-level facade ────────────────────────────────────────────────────────\n\nexport class Email {\n readonly campaigns: EmailCampaigns;\n readonly templates: EmailTemplates;\n readonly inbox: EmailInbox;\n\n constructor(http: HttpClient) {\n this.campaigns = new EmailCampaigns(http);\n this.templates = new EmailTemplates(http);\n this.inbox = new EmailInbox(http);\n }\n}\n","/**\n * Embeddings — OpenAI-compatible embedding vectors.\n *\n * Route: POST /intelligence/embeddings\n * Requires an mki_* intelligence key.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport interface EmbeddingCreateParams {\n input: string | string[];\n model: string;\n [key: string]: unknown;\n}\n\nexport class Embeddings {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create one or more embedding vectors.\n *\n * Returns the full OpenAI-compatible envelope\n * `{ object: \"list\", data: [...], model, usage }`.\n */\n async create(\n params: EmbeddingCreateParams,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n return this.http.post<Record<string, unknown>>(\n \"/intelligence/embeddings\",\n body,\n );\n }\n}\n","/**\n * External keys — BYOK encrypted per-user provider keys.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ExternalKeyData {\n provider?: string;\n masked_key?: string;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ExternalKeyCreateParams {\n provider: string;\n key: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"external_keys\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ExternalKeys {\n constructor(private readonly http: HttpClient) {}\n\n /** List configured external keys. */\n async list(): Promise<ExternalKeyData[]> {\n const data = await this.http.get<unknown>(\"/external-keys\");\n const result = unwrap<ExternalKeyData[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n\n /** Create / register an external provider key. */\n async create(params: ExternalKeyCreateParams): Promise<ExternalKeyData> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\"/external-keys\", body);\n return unwrap<ExternalKeyData>(data);\n }\n\n /** Resolve (preview) the stored key for a provider. */\n async resolve(provider: string): Promise<ExternalKeyData> {\n const data = await this.http.get<unknown>(\n `/external-keys/${provider}/resolve`,\n );\n return unwrap<ExternalKeyData>(data);\n }\n\n /**\n * Delete the stored key for a provider.\n * Keys are addressed by provider name, not by id.\n */\n async delete(provider: string): Promise<void> {\n await this.http.delete<unknown>(`/external-keys/${provider}`);\n }\n}\n","/**\n * FlatCustomDomains resource — tenant-scoped custom domains at /custom-domains.\n *\n * The per-computer and per-deployment domain APIs live on those resources;\n * this is the flat tenant-level list view for white-label platforms managing\n * many domains across all resources.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type CustomDomainId = string & { readonly __brand: \"CustomDomainId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface CustomDomainData {\n id: CustomDomainId;\n tenant_id: string;\n domain: string;\n state?: string;\n resource_type?: string | null;\n resource_id?: string | null;\n verified?: boolean;\n verification_token?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CustomDomainListParams {\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface CustomDomainCreateParams {\n domain: string;\n resource_type?: string;\n resourceType?: string;\n resource_id?: string;\n resourceId?: string;\n redirect_policy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n redirectPolicy?: \"none\" | \"www_to_apex\" | \"apex_to_www\";\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"domains\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class FlatCustomDomains {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: CustomDomainListParams = {}): Promise<CustomDomainData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/custom-domains\", query);\n return listItems<CustomDomainData>(data);\n }\n\n async create(params: CustomDomainCreateParams): Promise<CustomDomainData> {\n const {\n idempotencyKey: ikey,\n resourceType,\n resourceId,\n redirectPolicy,\n ...rest\n } = params;\n const body = stripUndefined({\n ...rest,\n resource_type: resourceType ?? rest.resource_type,\n resource_id: resourceId ?? rest.resource_id,\n redirect_policy: redirectPolicy ?? rest.redirect_policy,\n });\n const data = await this.http.request<unknown>(\"/custom-domains\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<CustomDomainData>(data);\n }\n\n async delete(domainId: string): Promise<void> {\n await this.http.delete<unknown>(`/custom-domains/${domainId}`);\n }\n}\n","/**\n * Functions resource — serverless edge functions.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type FunctionId = string & { readonly __brand: \"FunctionId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface FunctionData {\n id: FunctionId;\n tenant_id: string;\n name: string;\n state?: string;\n runtime?: string | null;\n handler?: string | null;\n memory_mb?: number | null;\n timeout_sec?: number | null;\n env?: Record<string, string>;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface FunctionListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface FunctionCreateParams {\n name: string;\n runtime?: string;\n handler?: string;\n memory_mb?: number;\n memoryMb?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n env?: Record<string, string>;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface FunctionUpdateParams {\n name?: string;\n runtime?: string;\n handler?: string;\n memory_mb?: number;\n memoryMb?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n env?: Record<string, string>;\n [key: string]: unknown;\n}\n\nexport interface FunctionInvokeParams {\n payload?: Record<string, unknown>;\n headers?: Record<string, string>;\n idempotencyKey?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"functions\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Functions {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: FunctionListParams = {}): Promise<FunctionData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/functions\", query);\n return listItems<FunctionData>(data);\n }\n\n async get(functionId: string): Promise<FunctionData> {\n const data = await this.http.get<unknown>(`/functions/${functionId}`);\n return unwrap<FunctionData>(data);\n }\n\n async create(params: FunctionCreateParams): Promise<FunctionData> {\n const { idempotencyKey: ikey, memoryMb, timeoutSec, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n memory_mb: memoryMb ?? rest.memory_mb,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n });\n const data = await this.http.request<unknown>(\"/functions\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<FunctionData>(data);\n }\n\n async update(\n functionId: string,\n params: FunctionUpdateParams,\n ): Promise<FunctionData> {\n const { memoryMb, timeoutSec, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n memory_mb: memoryMb ?? rest.memory_mb,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n });\n const data = await this.http.patch<unknown>(\n `/functions/${functionId}`,\n body,\n );\n return unwrap<FunctionData>(data);\n }\n\n async delete(functionId: string): Promise<void> {\n await this.http.delete<unknown>(`/functions/${functionId}`);\n }\n\n async invoke(\n functionId: string,\n params: FunctionInvokeParams = {},\n ): Promise<Record<string, unknown>> {\n const { payload = {}, headers, idempotencyKey: ikey } = params;\n const data = await this.http.request<unknown>(\n `/functions/${functionId}/invoke`,\n {\n method: \"POST\",\n body: payload,\n headers: {\n \"Idempotency-Key\": idempotencyKey(ikey),\n ...headers,\n },\n },\n );\n return (data ?? {}) as Record<string, unknown>;\n }\n}\n","/**\n * HealthChecks resource — uptime monitoring.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type HealthCheckId = string & { readonly __brand: \"HealthCheckId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface HealthCheckData {\n id: HealthCheckId;\n tenant_id: string;\n name: string;\n url: string;\n state?: string;\n interval_sec?: number;\n timeout_sec?: number;\n method?: string;\n expected_status?: number | null;\n last_checked_at?: string | null;\n last_status?: \"up\" | \"down\" | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface HealthCheckListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface HealthCheckCreateParams {\n name: string;\n url: string;\n interval_sec?: number;\n intervalSec?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n method?: string;\n expected_status?: number;\n expectedStatus?: number;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface HealthCheckUpdateParams {\n name?: string;\n url?: string;\n interval_sec?: number;\n intervalSec?: number;\n timeout_sec?: number;\n timeoutSec?: number;\n method?: string;\n expected_status?: number;\n expectedStatus?: number;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"health_checks\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class HealthChecks {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: HealthCheckListParams = {}): Promise<HealthCheckData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/health-checks\", query);\n return listItems<HealthCheckData>(data);\n }\n\n async get(checkId: string): Promise<HealthCheckData> {\n const data = await this.http.get<unknown>(`/health-checks/${checkId}`);\n return unwrap<HealthCheckData>(data);\n }\n\n async create(params: HealthCheckCreateParams): Promise<HealthCheckData> {\n const {\n idempotencyKey: ikey,\n intervalSec,\n timeoutSec,\n expectedStatus,\n ...rest\n } = params;\n const body = stripUndefined({\n ...rest,\n interval_sec: intervalSec ?? rest.interval_sec,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n expected_status: expectedStatus ?? rest.expected_status,\n });\n const data = await this.http.request<unknown>(\"/health-checks\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<HealthCheckData>(data);\n }\n\n async update(\n checkId: string,\n params: HealthCheckUpdateParams,\n ): Promise<HealthCheckData> {\n const { intervalSec, timeoutSec, expectedStatus, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n interval_sec: intervalSec ?? rest.interval_sec,\n timeout_sec: timeoutSec ?? rest.timeout_sec,\n expected_status: expectedStatus ?? rest.expected_status,\n });\n const data = await this.http.patch<unknown>(\n `/health-checks/${checkId}`,\n body,\n );\n return unwrap<HealthCheckData>(data);\n }\n\n async delete(checkId: string): Promise<void> {\n await this.http.delete<unknown>(`/health-checks/${checkId}`);\n }\n}\n","/**\n * Integrations — OAuth account-level connections (GitHub, Slack, Linear, Discord).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface IntegrationData {\n id?: string;\n provider?: string;\n status?: string;\n connected_at?: string;\n [key: string]: unknown;\n}\n\nexport interface IntegrationCatalogEntry {\n provider?: string;\n name?: string;\n description?: string;\n [key: string]: unknown;\n}\n\nexport interface GithubRepo {\n id?: number;\n name?: string;\n full_name?: string;\n private?: boolean;\n [key: string]: unknown;\n}\n\nexport interface GithubSshKey {\n id?: number;\n title?: string;\n key?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SlackSendTestParams {\n message?: string;\n channel?: string;\n [key: string]: unknown;\n}\n\nexport interface DiscordSendTestParams {\n message?: string;\n channel_id?: string;\n [key: string]: unknown;\n}\n\nexport interface LinearCreateIssueParams {\n title?: string;\n description?: string;\n team_id?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"integrations\", \"catalog\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Integrations {\n constructor(private readonly http: HttpClient) {}\n\n /** List active OAuth integrations for the tenant. */\n async list(): Promise<IntegrationData[]> {\n const data = await this.http.get<unknown>(\"/integrations\");\n return listItems<IntegrationData>(data);\n }\n\n /** List available providers in the integration catalog. */\n async catalog(): Promise<IntegrationCatalogEntry[]> {\n const data = await this.http.get<unknown>(\"/integrations/catalog\");\n return listItems<IntegrationCatalogEntry>(data);\n }\n\n /** Begin the OAuth flow for a provider — returns an authorize URL. */\n async start(provider: string): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\n `/integrations/${provider}/start`,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Force-refresh the access token for a provider. */\n async refresh(provider: string): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(\n `/integrations/${provider}/refresh`,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Disconnect (revoke) an integration. */\n async disconnect(provider: string): Promise<void> {\n await this.http.delete<unknown>(`/integrations/${provider}`);\n }\n\n // ── GitHub-specific capabilities ───────────────────────────────────────────\n\n /** List GitHub repositories accessible to this integration. */\n async githubRepos(): Promise<GithubRepo[]> {\n const data = await this.http.get<unknown>(\"/integrations/github/repos\");\n return listItems<GithubRepo>(data);\n }\n\n /** List configured GitHub deploy keys. */\n async githubSshKeys(): Promise<GithubSshKey[]> {\n const data = await this.http.get<unknown>(\"/integrations/github/ssh-keys\");\n return listItems<GithubSshKey>(data);\n }\n\n // ── Test hooks ─────────────────────────────────────────────────────────────\n\n /** Send a test message to the connected Slack channel. */\n async slackSendTest(\n params: SlackSendTestParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/integrations/slack/send-test\",\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Send a test message to the connected Discord channel. */\n async discordSendTest(\n params: DiscordSendTestParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/integrations/discord/send-test\",\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n // ── Linear dedicated controller ────────────────────────────────────────────\n\n /** Begin Linear OAuth — Linear has provider-specific error shapes. */\n async linearStart(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/integrations/linear/start\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Create a Linear issue via the connected workspace. */\n async linearCreateIssue(\n params: LinearCreateIssueParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/integrations/linear/create-issue\",\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n}\n","/**\n * Mcp — Model Context Protocol streamable-HTTP transport.\n *\n * Clients (Claude Code, Cursor, Gemini CLI, Copilot) point at /api/v1/mcp\n * with a msk_* Bearer token and discover the MIOSA tool-belt.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface McpDispatchParams {\n method?: string;\n params?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"mcp\", \"result\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Mcp {\n constructor(private readonly http: HttpClient) {}\n\n /** Send a JSON-RPC request to the MCP endpoint. */\n async dispatch(\n params: McpDispatchParams = {},\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\n \"/mcp\",\n Object.keys(body).length > 0 ? body : undefined,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /**\n * Open the MCP listen channel (GET).\n *\n * Returns whatever the server returns. For true SSE streaming, use\n * `http.stream(\"/mcp\")` directly.\n */\n async listen(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/mcp\");\n return unwrap(data);\n }\n\n /** Close (terminate) the MCP session. */\n async close(): Promise<void> {\n await this.http.delete<unknown>(\"/mcp\");\n }\n}\n","/**\n * Models — list available LLMs across providers.\n *\n * Routes: GET /intelligence/models\n * Requires an mki_* intelligence key or JWT.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): unknown[] {\n if (Array.isArray(data)) return data;\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"models\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as unknown[];\n }\n }\n return [];\n}\n\nexport class Models {\n constructor(private readonly http: HttpClient) {}\n\n /** List all models available to the calling tenant (OpenAI-compatible shape). */\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\"/intelligence/models\", query);\n return unwrap(data) as Record<string, unknown>[];\n }\n\n /**\n * Get a single model by id.\n *\n * The platform router does not expose a per-model GET; this filters\n * the list payload client-side.\n */\n async get(modelId: string): Promise<Record<string, unknown>> {\n const all = await this.list();\n return all.find((m) => (m as Record<string, unknown>).id === modelId) ?? {};\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n AgentDispatchParams,\n AgentEvent,\n AgentSessionListResponse,\n HostId,\n OcAgentSessionData,\n} from \"./types.js\";\n\n/**\n * Agents resource — dispatch Optimal AI agent sessions that execute on a\n * remote OpenComputers host via the OSA/WS tunnel.\n *\n * ```ts\n * const session = await client.openComputers.agents.dispatch(hostId, {\n * task: \"Run the test suite and report failures\",\n * });\n *\n * for await (const event of client.openComputers.agents.events(hostId, session.id)) {\n * console.log(event.type, event.data);\n * if (event.type === \"session_completed\" || event.type === \"done\") break;\n * }\n * ```\n */\nexport class Agents {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/agent`;\n }\n\n private unwrapSession(payload: unknown): OcAgentSessionData {\n const value =\n payload && typeof payload === \"object\" && \"session\" in payload\n ? (payload as { session: unknown }).session\n : payload && typeof payload === \"object\" && \"data\" in payload\n ? (payload as { data: unknown }).data\n : payload;\n\n const session = value as OcAgentSessionData;\n if (!session.id && session.session_id) {\n return { ...session, id: session.session_id };\n }\n return session;\n }\n\n private unwrapList(payload: unknown): AgentSessionListResponse {\n if (payload && typeof payload === \"object\" && \"sessions\" in payload) {\n return { data: (payload as { sessions: OcAgentSessionData[] }).sessions };\n }\n if (Array.isArray(payload)) {\n return { data: payload as OcAgentSessionData[] };\n }\n return payload as AgentSessionListResponse;\n }\n\n /**\n * Dispatch a new agent session on the host.\n */\n async dispatch(\n hostId: HostId | string,\n params: AgentDispatchParams,\n ): Promise<OcAgentSessionData> {\n const payload = await this.http.post<unknown>(`${this.base(hostId)}/dispatch`, params);\n return this.unwrapSession(payload);\n }\n\n /**\n * List all agent sessions for a host.\n */\n async list(hostId: HostId | string): Promise<AgentSessionListResponse> {\n const payload = await this.http.get<unknown>(`${this.base(hostId)}/sessions`);\n return this.unwrapList(payload);\n }\n\n /**\n * Fetch the current state of a specific agent session.\n */\n async get(\n hostId: HostId | string,\n sessionId: string,\n ): Promise<OcAgentSessionData> {\n const payload = await this.http.get<unknown>(`${this.base(hostId)}/sessions/${sessionId}`);\n return this.unwrapSession(payload);\n }\n\n /**\n * Stream live events from an agent session.\n *\n * Yields `AgentEvent` objects. Break on `type === \"done\"` or\n * `type === \"session_completed\"`.\n */\n events(\n hostId: HostId | string,\n sessionId: string,\n ): AsyncIterableIterator<AgentEvent> {\n return this.http.stream<AgentEvent>(\n `${this.base(hostId)}/sessions/${sessionId}/events`,\n );\n }\n\n /**\n * Cancel a running or pending agent session.\n */\n async cancel(hostId: HostId | string, sessionId: string): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/sessions/${sessionId}`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n AppCatalogEntry,\n AppInstallData,\n AppInstallEvent,\n HostId,\n} from \"./types.js\";\n\n/**\n * Apps resource — one-click install of common dev services on a remote host.\n *\n * ```ts\n * const catalog = await client.openComputers.apps.catalog();\n * const install = await client.openComputers.apps.install(hostId, \"postgres\");\n *\n * for await (const evt of client.openComputers.apps.installEvents(hostId, install.id)) {\n * console.log(evt.type, evt.data);\n * if (evt.type === \"installed\" || evt.type === \"failed\") break;\n * }\n * ```\n */\nexport class Apps {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * List all available apps in the MIOSA app library.\n */\n async catalog(): Promise<AppCatalogEntry[]> {\n const result = await this.http.get<{ data: AppCatalogEntry[] }>(\n \"/opencomputers/apps\",\n );\n return result.data;\n }\n\n /**\n * List apps installed on a specific host.\n */\n async listInstalled(hostId: HostId | string): Promise<AppInstallData[]> {\n const result = await this.http.get<{ data: AppInstallData[] }>(\n `/opencomputers/hosts/${hostId}/apps`,\n );\n return result.data;\n }\n\n /**\n * Install an app on a host by app catalog ID.\n */\n async install(\n hostId: HostId | string,\n appId: string,\n ): Promise<AppInstallData> {\n return this.http.post<AppInstallData>(\n `/opencomputers/hosts/${hostId}/apps/${appId}/install`,\n );\n }\n\n /**\n * Get the current state of an install operation.\n */\n async getInstall(\n hostId: HostId | string,\n installId: string,\n ): Promise<AppInstallData> {\n return this.http.get<AppInstallData>(\n `/opencomputers/hosts/${hostId}/apps/installs/${installId}`,\n );\n }\n\n /**\n * Stream install progress events.\n */\n installEvents(\n hostId: HostId | string,\n installId: string,\n ): AsyncIterableIterator<AppInstallEvent> {\n return this.http.stream<AppInstallEvent>(\n `/opencomputers/hosts/${hostId}/apps/installs/${installId}/events`,\n );\n }\n\n /**\n * Uninstall an app from a host.\n */\n async uninstall(hostId: HostId | string, appId: string): Promise<void> {\n return this.http.delete<void>(\n `/opencomputers/hosts/${hostId}/apps/${appId}`,\n );\n }\n\n /**\n * Start a previously installed app (e.g. start the postgres service).\n */\n async startApp(hostId: HostId | string, appId: string): Promise<void> {\n return this.http.post<void>(\n `/opencomputers/hosts/${hostId}/apps/${appId}/start`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n ClusterCreateParams,\n ClusterData,\n ClusterEvent,\n ClusterId,\n ClusterListResponse,\n} from \"./types.js\";\n\n/**\n * Clusters resource — manage multi-host LLM inference clusters (exo / MLX\n * Distributed). Hosts must be Apple Silicon.\n *\n * Once a cluster is active it exposes an OpenAI-compatible endpoint at:\n * `POST /inference/{slug}/v1/chat/completions`\n *\n * Point any OpenAI client at `https://api.miosa.ai/inference/{slug}/v1` with\n * your `msk_*` Bearer token.\n *\n * ```ts\n * const cluster = await client.openComputers.clusters.create({\n * name: \"llama-cluster\",\n * model: \"llama3:70b\",\n * host_ids: [hostA.id, hostB.id],\n * });\n * console.log(cluster.inference_url); // OpenAI-compatible base URL\n * ```\n */\nexport class Clusters {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(): string {\n return \"/opencomputers/clusters\";\n }\n\n /**\n * List all inference clusters for the tenant.\n */\n async list(): Promise<ClusterListResponse> {\n return this.http.get<ClusterListResponse>(this.base());\n }\n\n /**\n * Create and provision a new inference cluster.\n */\n async create(params: ClusterCreateParams): Promise<ClusterData> {\n return this.http.post<ClusterData>(this.base(), params);\n }\n\n /**\n * Fetch a single cluster.\n */\n async get(id: ClusterId | string): Promise<ClusterData> {\n return this.http.get<ClusterData>(`${this.base()}/${id}`);\n }\n\n /**\n * Start a stopped cluster.\n */\n async start(id: ClusterId | string): Promise<ClusterData> {\n return this.http.post<ClusterData>(`${this.base()}/${id}/start`);\n }\n\n /**\n * Stop a running cluster (preserves configuration).\n */\n async stop(id: ClusterId | string): Promise<ClusterData> {\n return this.http.post<ClusterData>(`${this.base()}/${id}/stop`);\n }\n\n /**\n * Permanently delete a cluster.\n */\n async delete(id: ClusterId | string): Promise<void> {\n return this.http.delete<void>(`${this.base()}/${id}`);\n }\n\n /**\n * Stream cluster provisioning / health events.\n */\n events(id: ClusterId | string): AsyncIterableIterator<ClusterEvent> {\n return this.http.stream<ClusterEvent>(`${this.base()}/${id}/events`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type { HostId, WsTicket } from \"./types.js\";\n\n/**\n * Desktop resource — issue WebSocket tickets for KasmVNC desktop streaming on\n * a remote OpenComputers host.\n *\n * The ticket is consumed by a WebSocket upgrade at the URL in `ws_url`. Connect\n * a KasmVNC-compatible client (or an iframe pointing at the VNC web client) to\n * drive the desktop.\n *\n * ```ts\n * const { ws_url } = await client.openComputers.desktop.ticket(hostId);\n * // Open ws_url in an iframe or VNC client\n * ```\n */\nexport class Desktop {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Issue a short-lived WebSocket ticket for a desktop streaming session.\n *\n * The ticket expires quickly — open the WebSocket immediately after receiving it.\n */\n async ticket(hostId: HostId | string): Promise<WsTicket> {\n return this.http.post<WsTicket>(\n `/opencomputers/hosts/${hostId}/desktop/ticket`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type { FsEntry, FsListResponse, FsStat, HostId } from \"./types.js\";\n\n/**\n * Files resource — direct file-system access on a remote OpenComputers host.\n *\n * Operations are proxied through the OSA daemon running on the host.\n *\n * ```ts\n * const entries = await client.openComputers.files.list(hostId, \"/home/user\");\n * const bytes = await client.openComputers.files.download(hostId, \"/home/user/report.pdf\");\n * await client.openComputers.files.upload(hostId, \"/tmp/data.json\", new TextEncoder().encode(\"{}\"));\n * ```\n */\nexport class OcFiles {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/fs`;\n }\n\n /**\n * List directory entries at `path`.\n */\n async list(hostId: HostId | string, path: string): Promise<FsListResponse> {\n return this.http.get<FsListResponse>(this.base(hostId), { path });\n }\n\n /**\n * Stat a path (does not follow symlinks).\n */\n async stat(hostId: HostId | string, path: string): Promise<FsStat> {\n return this.http.get<FsStat>(`${this.base(hostId)}/stat`, { path });\n }\n\n /**\n * Download a file from the host. Returns raw bytes.\n */\n async download(hostId: HostId | string, path: string): Promise<Uint8Array> {\n const url = `${this.base(hostId)}/download?path=${encodeURIComponent(path)}`;\n return this.http.getBinary(url);\n }\n\n /**\n * Upload content to `remotePath` on the host.\n *\n * @param content - `Blob`, `Uint8Array`, or UTF-8 string.\n * @param remotePath - Absolute destination path on the host.\n * @param filename - Optional filename hint; defaults to `remotePath` basename.\n */\n async upload(\n hostId: HostId | string,\n remotePath: string,\n content: Blob | Uint8Array | string,\n filename?: string,\n ): Promise<FsEntry> {\n const fd = new FormData();\n const name = filename ?? remotePath.split(\"/\").pop() ?? \"file\";\n\n if (typeof content === \"string\") {\n fd.append(\"file\", new Blob([content]), name);\n } else if (content instanceof Uint8Array) {\n fd.append(\"file\", new Blob([content.buffer as ArrayBuffer]), name);\n } else {\n fd.append(\"file\", content, name);\n }\n fd.append(\"path\", remotePath);\n\n return this.http.postFormData<FsEntry>(`${this.base(hostId)}/upload`, fd);\n }\n\n /**\n * Delete a file or directory.\n *\n * @param recursive - When `true`, delete non-empty directories recursively.\n */\n async delete(\n hostId: HostId | string,\n path: string,\n recursive = false,\n ): Promise<void> {\n return this.http.delete<void>(\n `${this.base(hostId)}?path=${encodeURIComponent(path)}&recursive=${recursive}`,\n );\n }\n\n /**\n * Create a directory (and any missing parents).\n */\n async mkdir(hostId: HostId | string, path: string): Promise<void> {\n return this.http.post<void>(`${this.base(hostId)}/mkdir`, { path });\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostCreateParams,\n HostData,\n HostEvent,\n HostId,\n HostListResponse,\n HostUpdateParams,\n} from \"./types.js\";\n\n/**\n * Hosts resource — manage BYOC (Bring Your Own Computer) hosts registered\n * under your tenant.\n *\n * ```ts\n * const host = await client.openComputers.hosts.create({ name: \"my-mac\" });\n * console.log(host.host_key); // store this — shown only once\n * ```\n */\nexport class Hosts {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(): string {\n return \"/opencomputers/hosts\";\n }\n\n /**\n * List all hosts registered for the tenant.\n */\n async list(): Promise<HostListResponse> {\n return this.http.get<HostListResponse>(this.base());\n }\n\n /**\n * Register a new host. The returned `host_key` is shown **once** — store it\n * immediately and install it on the target machine.\n */\n async create(params: HostCreateParams): Promise<HostData> {\n return this.http.post<HostData>(this.base(), params);\n }\n\n /**\n * Fetch a single host by ID.\n */\n async get(id: HostId | string): Promise<HostData> {\n return this.http.get<HostData>(`${this.base()}/${id}`);\n }\n\n /**\n * Update host metadata (name / labels).\n */\n async update(\n id: HostId | string,\n params: HostUpdateParams,\n ): Promise<HostData> {\n return this.http.patch<HostData>(`${this.base()}/${id}`, params);\n }\n\n /**\n * Revoke a host. Permanently removes the registration; the host key is\n * invalidated and the host will disconnect on next heartbeat.\n */\n async revoke(id: HostId | string): Promise<void> {\n return this.http.delete<void>(`${this.base()}/${id}`);\n }\n\n /**\n * Stream host state-change events (connect / disconnect / error) as an\n * `AsyncIterable`.\n *\n * ```ts\n * for await (const event of client.openComputers.hosts.events()) {\n * console.log(event.type, event.host_id);\n * if (shouldStop) break;\n * }\n * ```\n */\n events(): AsyncIterableIterator<HostEvent> {\n return this.http.stream<HostEvent>(\"/opencomputers/hosts/events\");\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n JobData,\n JobEvent,\n JobId,\n JobListResponse,\n JobRunParams,\n} from \"./types.js\";\n\n/**\n * Jobs resource — run commands on a remote OpenComputers host and stream output.\n *\n * ```ts\n * const job = await client.openComputers.jobs.run(hostId, { command: \"npm test\" });\n * for await (const event of client.openComputers.jobs.stream(hostId, job.id)) {\n * process.stdout.write(String(event.data ?? \"\"));\n * if (event.type === \"done\") break;\n * }\n * ```\n */\nexport class Jobs {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}`;\n }\n\n /**\n * Dispatch a command to run on the remote host.\n */\n async run(hostId: HostId | string, params: JobRunParams): Promise<JobData> {\n return this.http.post<JobData>(`${this.base(hostId)}/exec`, params);\n }\n\n /**\n * List all jobs for a host.\n */\n async list(hostId: HostId | string): Promise<JobListResponse> {\n return this.http.get<JobListResponse>(`${this.base(hostId)}/exec`);\n }\n\n /**\n * Fetch the current state of a job.\n */\n async get(hostId: HostId | string, jobId: JobId | string): Promise<JobData> {\n return this.http.get<JobData>(`${this.base(hostId)}/exec/${jobId}`);\n }\n\n /**\n * Stream live output from a running job.\n *\n * Yields `JobEvent` objects with `type` of `stdout`, `stderr`, `exit`, or\n * `done`. Break the loop when you receive `done` or `exit`.\n */\n stream(\n hostId: HostId | string,\n jobId: JobId | string,\n ): AsyncIterableIterator<JobEvent> {\n return this.http.stream<JobEvent>(\n `${this.base(hostId)}/exec/${jobId}/stream`,\n );\n }\n\n /**\n * Cancel a running or queued job.\n */\n async cancel(hostId: HostId | string, jobId: JobId | string): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/exec/${jobId}`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n SecretCreateParams,\n SecretData,\n SecretId,\n SecretUpdateParams,\n} from \"./types.js\";\n\n/**\n * Secrets resource — manage encrypted per-host (and per-tenant) env vars.\n *\n * Secrets are injected into exec sessions and PTY sessions on the host.\n * The value is encrypted at rest; `reveal()` decrypts it for one-time display.\n *\n * ```ts\n * // Tenant-wide secret (shared across all hosts)\n * await client.openComputers.secrets.createForTenant({ name: \"OPENAI_KEY\", value: \"sk-...\" });\n *\n * // Host-specific secret\n * const secret = await client.openComputers.secrets.createForHost(hostId, {\n * name: \"DB_PASSWORD\", value: \"hunter2\",\n * });\n * ```\n */\nexport class Secrets {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n // ── Tenant-scoped secrets ────────────────────────────────────────────────────\n\n /**\n * List all tenant-scoped secrets.\n */\n async listForTenant(): Promise<SecretData[]> {\n const result = await this.http.get<{ data: SecretData[] }>(\n \"/opencomputers/secrets\",\n );\n return result.data;\n }\n\n /**\n * Create a tenant-scoped secret (available to all hosts).\n */\n async createForTenant(params: SecretCreateParams): Promise<SecretData> {\n return this.http.post<SecretData>(\"/opencomputers/secrets\", params);\n }\n\n // ── Host-scoped secrets ──────────────────────────────────────────────────────\n\n /**\n * List secrets scoped to a specific host.\n */\n async listForHost(hostId: HostId | string): Promise<SecretData[]> {\n const result = await this.http.get<{ data: SecretData[] }>(\n `/opencomputers/hosts/${hostId}/secrets`,\n );\n return result.data;\n }\n\n /**\n * Create a secret scoped to a specific host.\n */\n async createForHost(\n hostId: HostId | string,\n params: SecretCreateParams,\n ): Promise<SecretData> {\n return this.http.post<SecretData>(\n `/opencomputers/hosts/${hostId}/secrets`,\n params,\n );\n }\n\n /**\n * Update a host-scoped secret (rotate value or update description).\n */\n async updateForHost(\n hostId: HostId | string,\n secretId: SecretId | string,\n params: SecretUpdateParams,\n ): Promise<SecretData> {\n return this.http.patch<SecretData>(\n `/opencomputers/hosts/${hostId}/secrets/${secretId}`,\n params,\n );\n }\n\n /**\n * Delete a host-scoped secret.\n */\n async deleteForHost(\n hostId: HostId | string,\n secretId: SecretId | string,\n ): Promise<void> {\n return this.http.delete<void>(\n `/opencomputers/hosts/${hostId}/secrets/${secretId}`,\n );\n }\n\n /**\n * Reveal (decrypt and return) the plaintext value of a secret.\n * Use sparingly — each call is audit-logged.\n */\n async reveal(\n hostId: HostId | string,\n secretId: SecretId | string,\n ): Promise<{ value: string }> {\n return this.http.post<{ value: string }>(\n `/opencomputers/hosts/${hostId}/secrets/${secretId}/reveal`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type { HostId, WsTicket } from \"./types.js\";\n\n/**\n * Terminal resource — issue WebSocket tickets for interactive PTY sessions on\n * a remote OpenComputers host.\n *\n * The ticket is consumed by a WebSocket upgrade at the URL in `ws_url`. Use\n * xterm.js or any raw WebSocket client to drive the terminal.\n *\n * ```ts\n * const { ws_url } = await client.openComputers.terminal.ticket(hostId);\n * const ws = new WebSocket(ws_url);\n * ```\n */\nexport class Terminal {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Issue a short-lived WebSocket ticket for a terminal session.\n *\n * The ticket expires quickly — open the WebSocket immediately after receiving it.\n */\n async ticket(hostId: HostId | string): Promise<WsTicket> {\n return this.http.post<WsTicket>(\n `/opencomputers/hosts/${hostId}/terminal/ticket`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n TunnelCreateParams,\n TunnelData,\n TunnelId,\n TunnelListResponse,\n TunnelUpdateParams,\n} from \"./types.js\";\n\n/**\n * Tunnels resource — expose ports on a remote host as publicly reachable URLs.\n *\n * The public proxy is served at `/t/:slug/*path`. The `auth_mode` field on each\n * tunnel controls whether the URL is open to the internet or requires\n * tenant credentials / a password.\n *\n * ```ts\n * const tunnel = await client.openComputers.tunnels.create(hostId, {\n * target_port: 8080,\n * auth_mode: \"public\",\n * });\n * console.log(tunnel.public_url); // https://api.miosa.ai/t/<slug>\n * ```\n */\nexport class Tunnels {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/tunnels`;\n }\n\n /**\n * List all tunnels for a host.\n */\n async list(hostId: HostId | string): Promise<TunnelListResponse> {\n return this.http.get<TunnelListResponse>(this.base(hostId));\n }\n\n /**\n * Create a new tunnel that forwards traffic to `target_port` on the host.\n */\n async create(\n hostId: HostId | string,\n params: TunnelCreateParams,\n ): Promise<TunnelData> {\n return this.http.post<TunnelData>(this.base(hostId), params);\n }\n\n /**\n * Fetch a single tunnel.\n */\n async get(\n hostId: HostId | string,\n tunnelId: TunnelId | string,\n ): Promise<TunnelData> {\n return this.http.get<TunnelData>(`${this.base(hostId)}/${tunnelId}`);\n }\n\n /**\n * Update a tunnel (target port, auth mode, or enabled state).\n */\n async update(\n hostId: HostId | string,\n tunnelId: TunnelId | string,\n params: TunnelUpdateParams,\n ): Promise<TunnelData> {\n return this.http.patch<TunnelData>(\n `${this.base(hostId)}/${tunnelId}`,\n params,\n );\n }\n\n /**\n * Delete a tunnel. The public URL immediately becomes unreachable.\n */\n async delete(\n hostId: HostId | string,\n tunnelId: TunnelId | string,\n ): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/${tunnelId}`);\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport type {\n HostId,\n OcWorkspaceCreateParams,\n OcWorkspaceData,\n OcWorkspaceEvent,\n OcWorkspaceListResponse,\n OcWorkspaceUpdateParams,\n WorkspaceId,\n WsTicket,\n} from \"./types.js\";\n\n/**\n * Workspaces resource — git-backed development environments on a remote host.\n *\n * A workspace clones a repository, installs dependencies, and gives you a\n * ready-to-use terminal scoped to the project root.\n *\n * ```ts\n * const ws = await client.openComputers.workspaces.create(hostId, {\n * name: \"my-project\",\n * repo_url: \"https://github.com/acme/backend\",\n * branch: \"main\",\n * });\n * const { ws_url } = await client.openComputers.workspaces.openTerminal(hostId, ws.id);\n * ```\n */\nexport class OcWorkspaces {\n private readonly http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n private base(hostId: string): string {\n return `/opencomputers/hosts/${hostId}/workspaces`;\n }\n\n /**\n * List all workspaces across all hosts for the tenant.\n */\n async listAll(): Promise<OcWorkspaceListResponse> {\n return this.http.get<OcWorkspaceListResponse>(\"/opencomputers/workspaces\");\n }\n\n /**\n * List workspaces on a specific host.\n */\n async list(hostId: HostId | string): Promise<OcWorkspaceListResponse> {\n return this.http.get<OcWorkspaceListResponse>(this.base(hostId));\n }\n\n /**\n * Create a new workspace on a host.\n */\n async create(\n hostId: HostId | string,\n params: OcWorkspaceCreateParams,\n ): Promise<OcWorkspaceData> {\n return this.http.post<OcWorkspaceData>(this.base(hostId), params);\n }\n\n /**\n * Fetch a single workspace.\n */\n async get(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<OcWorkspaceData> {\n return this.http.get<OcWorkspaceData>(\n `${this.base(hostId)}/${workspaceId}`,\n );\n }\n\n /**\n * Update workspace metadata (name, branch).\n */\n async update(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n params: OcWorkspaceUpdateParams,\n ): Promise<OcWorkspaceData> {\n return this.http.patch<OcWorkspaceData>(\n `${this.base(hostId)}/${workspaceId}`,\n params,\n );\n }\n\n /**\n * Delete a workspace.\n */\n async delete(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<void> {\n return this.http.delete<void>(`${this.base(hostId)}/${workspaceId}`);\n }\n\n /**\n * Pull the latest changes from the remote repository.\n */\n async pull(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<OcWorkspaceData> {\n return this.http.post<OcWorkspaceData>(\n `${this.base(hostId)}/${workspaceId}/pull`,\n );\n }\n\n /**\n * Open a terminal session scoped to the workspace root directory.\n * Returns a short-lived WebSocket ticket.\n */\n async openTerminal(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): Promise<WsTicket> {\n return this.http.post<WsTicket>(\n `${this.base(hostId)}/${workspaceId}/open-terminal`,\n );\n }\n\n /**\n * Stream workspace setup / clone / install events.\n */\n events(\n hostId: HostId | string,\n workspaceId: WorkspaceId | string,\n ): AsyncIterableIterator<OcWorkspaceEvent> {\n return this.http.stream<OcWorkspaceEvent>(\n `${this.base(hostId)}/${workspaceId}/events`,\n );\n }\n}\n","import { HttpClient } from \"../../http.js\";\nimport { Agents } from \"./agents.js\";\nimport { Apps } from \"./apps.js\";\nimport { Clusters } from \"./clusters.js\";\nimport { Desktop } from \"./desktop.js\";\nimport { OcFiles } from \"./files.js\";\nimport { Hosts } from \"./hosts.js\";\nimport { Jobs } from \"./jobs.js\";\nimport { Secrets } from \"./secrets.js\";\nimport { Terminal } from \"./terminal.js\";\nimport { Tunnels } from \"./tunnels.js\";\nimport { OcWorkspaces } from \"./workspaces.js\";\n\nexport * from \"./types.js\";\nexport { Agents } from \"./agents.js\";\nexport { Apps } from \"./apps.js\";\nexport { Clusters } from \"./clusters.js\";\nexport { Desktop } from \"./desktop.js\";\nexport { OcFiles } from \"./files.js\";\nexport { Hosts } from \"./hosts.js\";\nexport { Jobs } from \"./jobs.js\";\nexport { Secrets } from \"./secrets.js\";\nexport { Terminal } from \"./terminal.js\";\nexport { Tunnels } from \"./tunnels.js\";\nexport { OcWorkspaces } from \"./workspaces.js\";\n\n/**\n * OpenComputers namespace — BYOC (Bring Your Own Computer) host management.\n *\n * Register your own machines (Mac, Linux, Windows) with MIOSA and use them\n * just like cloud computers: run jobs, manage files, open terminals, expose\n * ports, dispatch AI agents, and run LLM inference clusters.\n *\n * Access via `client.openComputers`:\n *\n * ```ts\n * const miosa = new Miosa({ apiKey: \"msk_u_...\" });\n *\n * // Register a host — save host_key immediately, shown only once\n * const host = await miosa.openComputers.hosts.create({ name: \"my-mac\" });\n *\n * // Run a command\n * const job = await miosa.openComputers.jobs.run(host.id, { command: \"npm test\" });\n *\n * // Stream output\n * for await (const event of miosa.openComputers.jobs.stream(host.id, job.id)) {\n * process.stdout.write(String(event.data ?? \"\"));\n * if (event.type === \"done\") break;\n * }\n *\n * // Expose a port\n * const tunnel = await miosa.openComputers.tunnels.create(host.id, { target_port: 3000 });\n * console.log(tunnel.public_url);\n *\n * // Dispatch an AI agent\n * const session = await miosa.openComputers.agents.dispatch(host.id, {\n * task: \"Run tests and fix failing ones\",\n * });\n * ```\n */\nexport class OpenComputers {\n /** Host registration and lifecycle. */\n readonly hosts: Hosts;\n /** Command execution on remote hosts. */\n readonly jobs: Jobs;\n /** File system access on remote hosts. */\n readonly files: OcFiles;\n /** Interactive terminal session tickets. */\n readonly terminal: Terminal;\n /** Desktop streaming session tickets. */\n readonly desktop: Desktop;\n /** HTTP tunnel management (expose host ports publicly). */\n readonly tunnels: Tunnels;\n /** AI agent dispatch and session management. */\n readonly agents: Agents;\n /** Multi-host LLM inference clusters. */\n readonly clusters: Clusters;\n /** App library — one-click installs on hosts. */\n readonly apps: Apps;\n /** Git-backed workspace environments. */\n readonly workspaces: OcWorkspaces;\n /** Encrypted per-host / per-tenant secrets. */\n readonly secrets: Secrets;\n\n constructor(http: HttpClient) {\n this.hosts = new Hosts(http);\n this.jobs = new Jobs(http);\n this.files = new OcFiles(http);\n this.terminal = new Terminal(http);\n this.desktop = new Desktop(http);\n this.tunnels = new Tunnels(http);\n this.agents = new Agents(http);\n this.clusters = new Clusters(http);\n this.apps = new Apps(http);\n this.workspaces = new OcWorkspaces(http);\n this.secrets = new Secrets(http);\n }\n}\n","/**\n * Project auth — built-in auth for sandboxes and deployments.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ProjectAuthStatus {\n enabled?: boolean;\n state?: string;\n database_id?: string | null;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport type ProjectAuthResourceType = \"sandbox\" | \"deployment\";\n\nexport interface ProjectAuthResourceParams {\n resourceType?: ProjectAuthResourceType;\n resource_type?: ProjectAuthResourceType;\n resourceId?: string;\n resource_id?: string;\n}\n\nexport interface ProjectAuthEnableParams extends ProjectAuthResourceParams {\n signupEnabled?: boolean;\n signup_enabled?: boolean;\n emailConfirmRequired?: boolean;\n email_confirm_required?: boolean;\n tokenExpirySec?: number;\n token_expiry_sec?: number;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ProjectAuthUpdateParams extends ProjectAuthEnableParams {}\n\nexport interface ProjectAuthDisableParams extends ProjectAuthResourceParams {\n [key: string]: unknown;\n}\n\nexport interface ProjectAuthStatusParams extends ProjectAuthResourceParams {\n [key: string]: unknown;\n}\n\nfunction resourcePayload(params: ProjectAuthResourceParams): {\n resource_type: ProjectAuthResourceType;\n resource_id: string;\n} {\n const resource_type = params.resource_type ?? params.resourceType;\n const resource_id = params.resource_id ?? params.resourceId;\n\n if (!resource_type || !resource_id) {\n throw new Error(\"project auth requires resourceType/resourceId\");\n }\n\n return { resource_type, resource_id };\n}\n\nfunction authConfig(params: ProjectAuthEnableParams): Record<string, unknown> {\n return stripUndefined({\n ...(params.config ?? {}),\n signup_enabled: params.signup_enabled ?? params.signupEnabled,\n email_confirm_required:\n params.email_confirm_required ?? params.emailConfirmRequired,\n token_expiry_sec: params.token_expiry_sec ?? params.tokenExpirySec,\n });\n}\n\nfunction requestBody(params: ProjectAuthEnableParams): Record<string, unknown> {\n return stripUndefined({\n ...resourcePayload(params),\n config: authConfig(params),\n });\n}\n\nexport interface ProjectAuthLegacyParams {\n provider?: string;\n config?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"project_auth\", \"config\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ProjectAuth {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current project-auth status and config. */\n async status(params: ProjectAuthStatusParams): Promise<ProjectAuthStatus> {\n const data = await this.http.get<unknown>(\n \"/project-auth/status\",\n resourcePayload(params),\n );\n return unwrap<ProjectAuthStatus>(data);\n }\n\n /** Enable project auth. */\n async enable(params: ProjectAuthEnableParams): Promise<ProjectAuthStatus> {\n const body = requestBody(params);\n const data = await this.http.post<unknown>(\"/project-auth/enable\", body);\n return unwrap<ProjectAuthStatus>(data);\n }\n\n /** Disable project auth. */\n async disable(params: ProjectAuthDisableParams): Promise<ProjectAuthStatus> {\n const data = await this.http.post<unknown>(\n \"/project-auth/disable\",\n resourcePayload(params),\n );\n return unwrap<ProjectAuthStatus>(data);\n }\n\n /** Update project-auth configuration. */\n async update(params: ProjectAuthUpdateParams): Promise<ProjectAuthStatus> {\n const body = requestBody(params);\n const data = await this.http.patch<unknown>(\"/project-auth/config\", body);\n return unwrap<ProjectAuthStatus>(data);\n }\n}\n","/**\n * Project integrations — third-party API key connections injected into VMs.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface ProjectIntegrationData {\n id?: string;\n project_id?: string;\n provider?: string;\n status?: string;\n [key: string]: unknown;\n}\n\nexport interface ProjectIntegrationCatalogEntry {\n provider?: string;\n name?: string;\n description?: string;\n schema?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface ProjectIntegrationListParams {\n project_id?: string;\n provider?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface ProjectIntegrationCreateParams {\n project_id?: string;\n provider?: string;\n credentials?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface ProjectIntegrationUpdateParams {\n credentials?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"project_integrations\", \"catalog\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\nfunction stripUndefObj(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class ProjectIntegrations {\n constructor(private readonly http: HttpClient) {}\n\n /** List project integrations. */\n async list(\n params: ProjectIntegrationListParams = {},\n ): Promise<ProjectIntegrationData[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/project-integrations\", query);\n return listItems<ProjectIntegrationData>(data);\n }\n\n /** List supported providers and their schemas. */\n async catalog(): Promise<ProjectIntegrationCatalogEntry[]> {\n const data = await this.http.get<unknown>(\"/project-integrations/catalog\");\n return listItems<ProjectIntegrationCatalogEntry>(data);\n }\n\n /** Get a project integration by id. */\n async get(integrationId: string): Promise<ProjectIntegrationData> {\n const data = await this.http.get<unknown>(\n `/project-integrations/${integrationId}`,\n );\n return unwrap<ProjectIntegrationData>(data);\n }\n\n /** Create a project integration. */\n async create(\n params: ProjectIntegrationCreateParams,\n ): Promise<ProjectIntegrationData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.post<unknown>(\"/project-integrations\", body);\n return unwrap<ProjectIntegrationData>(data);\n }\n\n /** Update a project integration. */\n async update(\n integrationId: string,\n params: ProjectIntegrationUpdateParams,\n ): Promise<ProjectIntegrationData> {\n const body = stripUndefObj(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(\n `/project-integrations/${integrationId}`,\n body,\n );\n return unwrap<ProjectIntegrationData>(data);\n }\n\n /** Delete a project integration. */\n async delete(integrationId: string): Promise<void> {\n await this.http.delete<unknown>(`/project-integrations/${integrationId}`);\n }\n}\n","/**\n * ProviderDefaults — admin LLM provider routing config.\n *\n * Routes:\n * GET /admin/provider-defaults\n * PUT /admin/provider-defaults\n * GET /admin/tenants/:id/provider-config\n * PUT /admin/tenants/:id/provider-config\n * DELETE /admin/tenants/:id/provider-config\n *\n * Requires admin credential (msk_a_* / msk_p_* or admin JWT).\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"defaults\", \"provider_defaults\", \"config\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nexport class ProviderDefaults {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current fleet-wide provider defaults. */\n async list(): Promise<Record<string, unknown>> {\n return unwrap(await this.http.get<unknown>(\"/admin/provider-defaults\"));\n }\n\n /** Return the defaults entry for a single provider, or {} if missing. */\n async get(provider: string): Promise<Record<string, unknown>> {\n const data = await this.list();\n const providers =\n (data.providers as Record<string, unknown> | undefined) ?? data;\n if (\n typeof providers === \"object\" &&\n providers !== null &&\n provider in providers\n ) {\n return providers[provider] as Record<string, unknown>;\n }\n return {};\n }\n\n /** Replace the fleet-wide defaults (PUT /admin/provider-defaults). */\n async update(\n opts: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.put<unknown>(\"/admin/provider-defaults\", body),\n );\n }\n\n // ── Per-tenant overrides ────────────────────────────────────────────────\n\n async getTenant(tenantId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(\n `/admin/tenants/${tenantId}/provider-config`,\n ),\n );\n }\n\n async setTenant(\n tenantId: string,\n opts: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n );\n return unwrap(\n await this.http.put<unknown>(\n `/admin/tenants/${tenantId}/provider-config`,\n body,\n ),\n );\n }\n\n async resetTenant(tenantId: string): Promise<void> {\n await this.http.delete(`/admin/tenants/${tenantId}/provider-config`);\n }\n}\n","/**\n * Regions — datacenter availability, sizes, pricing, templates.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface RegionData {\n id?: string;\n name?: string;\n slug?: string;\n available?: boolean;\n [key: string]: unknown;\n}\n\nexport interface SizeData {\n id?: string;\n name?: string;\n slug?: string;\n cpu?: number;\n memory_mb?: number;\n [key: string]: unknown;\n}\n\nexport interface TemplateData {\n id?: string;\n name?: string;\n slug?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"regions\",\n \"sizes\",\n \"pricing\",\n \"templates\",\n \"items\",\n ]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Regions {\n constructor(private readonly http: HttpClient) {}\n\n /** List datacenter regions. */\n async listRegions(): Promise<RegionData[]> {\n const data = await this.http.get<unknown>(\"/compute/regions\");\n return listItems<RegionData>(data);\n }\n\n /** List available compute sizes. */\n async listSizes(): Promise<SizeData[]> {\n const data = await this.http.get<unknown>(\"/compute/sizes\");\n return listItems<SizeData>(data);\n }\n\n /** Get static compute pricing data. */\n async pricing(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/compute/pricing\");\n return unwrap(data);\n }\n\n /** List community computer templates. */\n async listTemplates(): Promise<TemplateData[]> {\n const data = await this.http.get<unknown>(\"/compute/templates\");\n return listItems<TemplateData>(data);\n }\n\n /** Get a single community template by id. */\n async getTemplate(templateId: string): Promise<TemplateData> {\n const data = await this.http.get<unknown>(\n `/compute/templates/${templateId}`,\n );\n return unwrap<TemplateData>(data);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nexport type RuntimeEnvScope = \"tenant\" | \"workspace\" | \"project\";\nexport type RuntimeEnvTarget = \"all\" | \"sandbox\" | \"computer\" | \"agent\" | \"deployment\";\n\nexport interface RuntimeEnvVar {\n id: string;\n tenant_id?: string;\n tenantId?: string;\n scope: RuntimeEnvScope | string;\n workspace_id?: string | null;\n workspaceId?: string | null;\n project_id?: string | null;\n projectId?: string | null;\n target: RuntimeEnvTarget | string;\n name: string;\n preview?: string;\n enabled?: boolean;\n metadata?: Record<string, unknown>;\n created_at?: string;\n createdAt?: string;\n updated_at?: string;\n updatedAt?: string;\n}\n\nexport interface RuntimeEnvListParams {\n scope?: RuntimeEnvScope | string;\n workspaceId?: string;\n workspace_id?: string;\n projectId?: string;\n project_id?: string;\n target?: RuntimeEnvTarget | string;\n}\n\nexport interface RuntimeEnvSetParams extends RuntimeEnvListParams {\n name: string;\n value: string;\n enabled?: boolean;\n metadata?: Record<string, unknown>;\n}\n\nfunction body(params: RuntimeEnvSetParams): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries({\n scope: params.scope,\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n target: params.target,\n name: params.name,\n value: params.value,\n enabled: params.enabled,\n metadata: params.metadata,\n }).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction query(params: RuntimeEnvListParams): Record<string, string | undefined> {\n return {\n scope: params.scope,\n workspace_id: params.workspaceId ?? params.workspace_id,\n project_id: params.projectId ?? params.project_id,\n target: params.target,\n };\n}\n\nfunction normalize(row: RuntimeEnvVar): RuntimeEnvVar {\n const tenantId = row.tenantId ?? row.tenant_id;\n const workspaceId = row.workspaceId ?? row.workspace_id;\n const projectId = row.projectId ?? row.project_id;\n const createdAt = row.createdAt ?? row.created_at;\n const updatedAt = row.updatedAt ?? row.updated_at;\n return {\n ...row,\n ...(tenantId !== undefined ? { tenantId } : {}),\n ...(workspaceId !== undefined ? { workspaceId } : {}),\n ...(projectId !== undefined ? { projectId } : {}),\n ...(createdAt !== undefined ? { createdAt } : {}),\n ...(updatedAt !== undefined ? { updatedAt } : {}),\n };\n}\n\nexport class RuntimeEnv {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: RuntimeEnvListParams = {}): Promise<RuntimeEnvVar[]> {\n const response = await this.http.get<WireEnvelope<RuntimeEnvVar[]>>(\n \"/runtime-env\",\n query(params),\n );\n return unwrap(response).map(normalize);\n }\n\n async get(id: string): Promise<RuntimeEnvVar> {\n return normalize(\n unwrap(\n await this.http.get<WireEnvelope<RuntimeEnvVar>>(\n `/runtime-env/${encodeURIComponent(id)}`,\n ),\n ),\n );\n }\n\n async set(params: RuntimeEnvSetParams): Promise<RuntimeEnvVar> {\n return normalize(\n unwrap(\n await this.http.post<WireEnvelope<RuntimeEnvVar>>(\n \"/runtime-env\",\n body(params),\n ),\n ),\n );\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete<void>(`/runtime-env/${encodeURIComponent(id)}`);\n }\n}\n","import type { HttpClient } from \"../http.js\";\n\nexport interface RuntimeCapabilities {\n version: number;\n targets?: Record<string, unknown>;\n runs?: Record<string, unknown>;\n run_groups?: Record<string, unknown>;\n runtime_env?: Record<string, unknown>;\n files?: Record<string, unknown>;\n orchestration?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nexport class RuntimeCapabilitiesResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<RuntimeCapabilities> {\n return unwrap<RuntimeCapabilities>(\n await this.http.get<unknown>(\"/runtime-capabilities\"),\n );\n }\n}\n","import { MiosaError, NotFoundError } from \"../errors.js\";\nimport { HttpClient } from \"../http.js\";\nimport { SandboxAudit } from \"./egressAudit.js\";\nimport { SandboxNetwork } from \"./egressNetwork.js\";\nimport { SandboxSecrets } from \"./egressSecrets.js\";\nimport { SandboxConnectors } from \"./connectors.js\";\nimport {\n Runs,\n type Run,\n type RunCreateParams,\n} from \"./runs.js\";\n\nfunction encodeContent(content: string | Uint8Array): string {\n const bytes =\n typeof content === \"string\" ? new TextEncoder().encode(content) : content;\n const maybeBuffer = (\n globalThis as {\n Buffer?: { from(b: Uint8Array): { toString(e: string): string } };\n }\n ).Buffer;\n if (maybeBuffer) return maybeBuffer.from(bytes).toString(\"base64\");\n let bin = \"\";\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]!);\n return btoa(bin);\n}\n\nexport const SANDBOX_TEMPLATE = \"miosa-sandbox\";\n\nexport type SandboxId = string & { readonly __brand: \"SandboxId\" };\nexport type SandboxState =\n | \"provisioning\"\n | \"running\"\n | \"paused\"\n | \"destroyed\"\n | \"error\";\n\nexport interface SandboxCreateParams {\n templateId?: string;\n template_id?: string;\n image?: string;\n cpuCount?: number;\n cpu_count?: number;\n memoryMb?: number;\n memory_mb?: number;\n diskMb?: number;\n disk_mb?: number;\n diskSizeMb?: number;\n disk_size_mb?: number;\n timeoutSec?: number;\n timeout_sec?: number;\n idleTimeoutSec?: number;\n idle_timeout_sec?: number;\n /**\n * Persistence policy for builder/agent sandboxes.\n *\n * MIOSA persistence means the sandbox should snapshot/pause when idle and\n * resume from that checkpoint later. It does not mean \"keep CPU running\".\n * Use alwaysOn for a sandbox that must keep executing without idle pause.\n */\n persistent?: boolean;\n snapshotExpirationSec?: number;\n snapshot_expiration_sec?: number;\n snapshotExpirationDays?: number;\n snapshot_expiration_days?: number;\n keepLastSnapshots?: number | { count: number; expirationSec?: number; deleteEvicted?: boolean };\n keep_last_snapshots?: number | { count: number; expiration_sec?: number; delete_evicted?: boolean };\n alwaysOn?: boolean;\n always_on?: boolean;\n env?: Record<string, string>;\n metadata?: Record<string, unknown>;\n services?: Array<Record<string, unknown>>;\n readinessProbe?: Record<string, unknown>;\n readiness_probe?: Record<string, unknown>;\n database?: Record<string, unknown> | boolean;\n githubRepoUrl?: string;\n github_repo_url?: string;\n githubBranch?: string;\n github_branch?: string;\n githubClonePath?: string;\n github_clone_path?: string;\n name?: string;\n region?: string;\n entrypoint?: string;\n tags?: string[];\n idempotencyKey?: string;\n idempotency_key?: string;\n slug?: string;\n agentRuntimeProfileId?: string;\n agent_runtime_profile_id?: string;\n agentProfileId?: string;\n agent_profile_id?: string;\n skipRuntimeProfile?: boolean;\n skip_agent_runtime_profile?: boolean;\n // White-label attribution. See platform/attribution docs.\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface SandboxGetOrCreateParams extends SandboxCreateParams {\n name: string;\n /** Resume an existing paused sandbox before returning it. Defaults to true. */\n resume?: boolean;\n /** Wait for readiness before returning a created/resumed sandbox. Defaults to false. */\n waitUntilReady?: boolean;\n /** Readiness wait timeout in seconds. Defaults to 60 when waitUntilReady is true. */\n waitTimeoutSec?: number;\n}\n\nconst AGENT_WORKSPACE_TIMEOUT_SEC = 86_400;\nconst AGENT_WORKSPACE_IDLE_TIMEOUT_SEC = 1_800;\nconst AGENT_WORKSPACE_SNAPSHOT_EXPIRATION_DAYS = 30;\nconst AGENT_WORKSPACE_KEEP_LAST_SNAPSHOTS = 1;\n\nexport interface SandboxListParams {\n state?: SandboxState | string;\n tags?: string[];\n externalWorkspaceId?: string;\n external_workspace_id?: string;\n externalUserId?: string;\n external_user_id?: string;\n externalProjectId?: string;\n external_project_id?: string;\n}\n\nexport interface SandboxExecOptions {\n cwd?: string;\n workingDir?: string;\n working_dir?: string;\n env?: Record<string, string>;\n timeout?: number;\n timeoutSec?: number;\n timeout_sec?: number;\n}\n\nexport interface SandboxExecResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n exit_code: number;\n durationMs?: number;\n duration_ms?: number;\n}\n\nexport interface SandboxExportFile {\n path: string;\n filename?: string;\n download_url?: string;\n downloadUrl?: string;\n}\n\nexport interface SandboxExport {\n id: string;\n sandbox_id?: string;\n sandboxId?: string;\n label?: string | null;\n status: string;\n files: SandboxExportFile[];\n archive_download_url?: string;\n archiveDownloadUrl?: string;\n created_at?: string;\n createdAt?: string;\n}\n\nexport interface SandboxExportParams {\n path?: string;\n paths?: string[];\n label?: string;\n filename?: string;\n}\n\nexport type SandboxExecEvent =\n | { type?: \"stdout\"; line: string }\n | { type?: \"stderr\"; line: string }\n | { type?: \"exit\"; exit_code: number; exitCode?: number }\n | Record<string, unknown>;\n\nexport interface SandboxExecRunner {\n (command: string, options?: SandboxExecOptions): Promise<SandboxExecResult>;\n run(\n command: string,\n options?: SandboxExecOptions,\n ): Promise<SandboxExecResult>;\n stream(\n command: string,\n options?: SandboxExecOptions,\n ): AsyncIterableIterator<SandboxExecEvent>;\n}\n\nexport interface SandboxData {\n id: SandboxId;\n state: SandboxState;\n ready?: boolean;\n template_id?: string;\n image_id?: string | null;\n cpu_count?: number | null;\n memory_mb?: number | null;\n disk_mb?: number | null;\n disk_size_mb?: number | null;\n timeout_sec?: number | null;\n persistent?: boolean;\n boot_path?: string | null;\n boot_ms?: number | null;\n ready_at?: string | null;\n preview_url?: string | null;\n url_info?: PreviewUrlInfo | null;\n url_class?: PreviewUrlClass | null;\n stable_for_embedding?: boolean | null;\n recommended_next_action?: PreviewUrlAction | null;\n metadata?: Record<string, unknown>;\n inserted_at?: string;\n created_at?: string;\n started_at?: string | null;\n destroyed_at?: string | null;\n total_runtime_sec?: number | null;\n}\n\nexport type PreviewUrlClass =\n | \"temporary_preview\"\n | \"always_on_preview\"\n | \"stable_sandbox_embed\"\n | \"durable_deployment\"\n | (string & {});\n\nexport type PreviewUrlAction =\n | \"create_alias_or_publish\"\n | \"publish_when_ready\"\n | \"attach_custom_domain\"\n | (string & {});\n\nexport interface PreviewUrlInfo {\n url: string;\n class: PreviewUrlClass;\n url_class: PreviewUrlClass;\n stable_for_embedding: boolean;\n recommended_next_action: PreviewUrlAction;\n alias_slug?: string | null;\n port?: number | null;\n [key: string]: unknown;\n}\n\nexport interface SandboxTemplate {\n id: string;\n name?: string;\n slug?: string;\n description?: string;\n image_id?: string;\n built_in?: boolean;\n status?: string;\n preview_port?: number | null;\n workdir?: string;\n install_command?: string | null;\n start_command?: string | null;\n readiness_probe?: Record<string, unknown> | null;\n artifact_paths?: string[];\n runtimes?: string[];\n tags?: string[];\n build_spec?: Record<string, unknown>;\n current_build_id?: string | null;\n}\n\nexport interface SandboxTemplateList {\n data: SandboxTemplate[];\n default_template_id?: string;\n}\n\nexport interface SandboxBuildSpec {\n from: string;\n vcpu?: number;\n memoryMib?: number;\n diskMib?: number;\n steps?: Array<Record<string, unknown>>;\n env?: Record<string, string>;\n workdir?: string;\n user?: string;\n startCmd?: string;\n readyCmd?: string;\n previewPort?: number;\n artifactPaths?: string[];\n}\n\nexport interface SandboxBuildSpecError {\n code: string;\n field: string;\n message: string;\n}\n\nexport interface SandboxBuildSpecValidation {\n valid: boolean;\n build_spec?: Record<string, unknown>;\n errors?: SandboxBuildSpecError[];\n}\n\nexport interface SandboxTemplateCreateParams {\n name: string;\n buildSpec?: SandboxBuildSpec;\n build_spec?: SandboxBuildSpec;\n slug?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SandboxTemplateBuildCreateParams {\n buildSpec?: SandboxBuildSpec;\n build_spec?: SandboxBuildSpec;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SandboxTemplateBuild {\n id: string;\n sandbox_template_id: string;\n source_type: \"build_spec\" | string;\n state:\n | \"queued\"\n | \"building\"\n | \"certifying\"\n | \"snapshotting\"\n | \"ready\"\n | \"failed\"\n | \"cancelled\";\n image_id?: string | null;\n rootfs_path?: string | null;\n snapshot_manifest?: Record<string, unknown>;\n log_url?: string | null;\n error_code?: string | null;\n error_message?: string | null;\n started_at?: string | null;\n finished_at?: string | null;\n duration_ms?: number | null;\n build_spec?: Record<string, unknown>;\n inserted_at?: string;\n updated_at?: string;\n}\n\nexport interface SandboxFileEntry {\n name: string;\n path: string;\n size?: number;\n is_dir?: boolean;\n isDir?: boolean;\n modified_at?: string;\n modifiedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxFileTreeNode {\n path: string;\n name: string;\n type: \"file\" | \"dir\";\n size?: number;\n modified_at?: string;\n children?: SandboxFileTreeNode[];\n}\n\nexport interface SandboxWriteManyEntry {\n path: string;\n content: string | Uint8Array;\n}\n\nexport interface SandboxWriteManyResult {\n written: Array<{ path: string; size_bytes: number }>;\n failed: Array<{ path: string; error: string }>;\n}\n\nexport interface SandboxFileChange {\n type: \"created\" | \"modified\" | \"deleted\";\n path: string;\n size_bytes?: number;\n}\n\nexport interface SandboxEnvVar {\n key: string;\n encrypted: boolean;\n value?: string;\n}\n\nexport interface SandboxFileList {\n path?: string;\n entries: SandboxFileEntry[];\n}\n\nexport interface SandboxFileStat {\n path: string;\n size?: number;\n is_dir?: boolean;\n isDir?: boolean;\n mode?: string;\n modified_at?: string;\n modifiedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxSnapshot {\n id: string;\n sandbox_id?: string;\n status?: string;\n comment?: string;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxDeployParams {\n name?: string;\n deploymentId?: string;\n deployment_id?: string;\n path?: string;\n sourcePath?: string;\n source_path?: string;\n outputPath?: string;\n output_path?: string;\n sourceSnapshotPath?: string;\n source_snapshot_path?: string;\n entrypoint?: string;\n buildCommand?: string;\n build_command?: string;\n runCommand?: string;\n run_command?: string;\n startCommand?: string;\n start_command?: string;\n port?: number;\n healthCheckPath?: string;\n health_check_path?: string;\n deploymentType?: \"miosa_deploy\" | \"docker_deploy\" | \"docker-deploy\" | string;\n deployment_type?: \"miosa_deploy\" | \"docker_deploy\" | \"docker-deploy\" | string;\n type?: \"static\" | \"dynamic\" | \"server\" | string;\n mode?: \"static\" | \"dynamic\" | \"server\" | string;\n database?: boolean | Record<string, unknown>;\n resources?: Record<string, unknown>;\n domain?: string;\n customDomain?: string;\n custom_domain?: string;\n idempotencyKey?: string;\n idempotency_key?: string;\n}\n\nexport type SandboxRunOptions = Omit<\n RunCreateParams,\n \"instruction\" | \"targetKind\" | \"targetId\" | \"sandboxId\" | \"computerId\"\n>;\n\ntype WireEnvelope<T> = T | { data: T };\n\nfunction unwrap<T>(payload: WireEnvelope<T>): T {\n if (\n payload !== null &&\n typeof payload === \"object\" &&\n \"data\" in payload &&\n (payload as { data?: unknown }).data !== undefined\n ) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction normalizeExport(value: SandboxExport): SandboxExport {\n const normalized: SandboxExport = {\n ...value,\n files: (value.files ?? []).map((file) => {\n const normalized: SandboxExportFile = { ...file };\n const downloadUrl = file.downloadUrl ?? file.download_url;\n if (downloadUrl !== undefined) normalized.downloadUrl = downloadUrl;\n return normalized;\n }),\n };\n const sandboxId = value.sandboxId ?? value.sandbox_id;\n const archiveDownloadUrl =\n value.archiveDownloadUrl ?? value.archive_download_url;\n const createdAt = value.createdAt ?? value.created_at;\n if (sandboxId !== undefined) normalized.sandboxId = sandboxId;\n if (archiveDownloadUrl !== undefined) {\n normalized.archiveDownloadUrl = archiveDownloadUrl;\n }\n if (createdAt !== undefined) normalized.createdAt = createdAt;\n return normalized;\n}\n\nfunction listItems(\n payload:\n | WireEnvelope<SandboxData[]>\n | { sandboxes: SandboxData[] }\n | { items: SandboxData[] },\n): SandboxData[] {\n if (Array.isArray(payload)) return payload;\n if (\"data\" in payload && Array.isArray(payload.data)) return payload.data;\n if (\"sandboxes\" in payload && Array.isArray(payload.sandboxes))\n return payload.sandboxes;\n if (\"items\" in payload && Array.isArray(payload.items)) return payload.items;\n return [];\n}\n\nfunction createBody(params: SandboxCreateParams = {}): Record<string, unknown> {\n const templateId =\n params.templateId ?? params.template_id ?? params.image ?? SANDBOX_TEMPLATE;\n const persistent = params.persistent;\n const snapshotExpirationSec = snapshotExpirationSeconds(params);\n const keepLastSnapshots =\n params.keepLastSnapshots ?? params.keep_last_snapshots;\n const metadata = { ...(params.metadata ?? {}) };\n\n if (persistent !== undefined) metadata.miosa_persistent = persistent;\n if (snapshotExpirationSec !== undefined) {\n metadata.snapshot_expiration_sec = snapshotExpirationSec;\n }\n if (keepLastSnapshots !== undefined) {\n metadata.keep_last_snapshots = keepLastSnapshots;\n }\n\n return stripUndefined({\n template_id: templateId,\n cpu_count: params.cpuCount ?? params.cpu_count,\n memory_mb: params.memoryMb ?? params.memory_mb,\n disk_mb: params.diskMb ?? params.disk_mb,\n disk_size_mb: params.diskSizeMb ?? params.disk_size_mb,\n timeout_sec:\n params.timeoutSec ??\n params.timeout_sec ??\n (persistent === true ? 86_400 : undefined),\n idle_timeout_sec:\n params.idleTimeoutSec ??\n params.idle_timeout_sec ??\n (persistent === true ? 1_800 : undefined),\n always_on: params.alwaysOn ?? params.always_on,\n env: params.env,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n services: params.services,\n readiness_probe: params.readinessProbe ?? params.readiness_probe,\n database: params.database,\n github_repo_url: params.githubRepoUrl ?? params.github_repo_url,\n github_branch: params.githubBranch ?? params.github_branch,\n github_clone_path: params.githubClonePath ?? params.github_clone_path,\n name: params.name,\n region: params.region,\n entrypoint: params.entrypoint,\n tags: params.tags,\n slug: params.slug,\n agent_runtime_profile_id:\n params.agentRuntimeProfileId ??\n params.agent_runtime_profile_id ??\n params.agentProfileId ??\n params.agent_profile_id,\n skip_agent_runtime_profile:\n params.skipRuntimeProfile ?? params.skip_agent_runtime_profile,\n external_workspace_id:\n params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id: params.externalProjectId ?? params.external_project_id,\n });\n}\n\nfunction execBody(\n command: string,\n options: SandboxExecOptions = {},\n): Record<string, unknown> {\n return stripUndefined({\n command,\n cwd: options.cwd ?? options.workingDir ?? options.working_dir,\n env: options.env,\n timeout: options.timeout ?? options.timeoutSec ?? options.timeout_sec,\n });\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction snapshotExpirationSeconds(params: {\n snapshotExpirationSec?: number;\n snapshot_expiration_sec?: number;\n snapshotExpirationDays?: number;\n snapshot_expiration_days?: number;\n}): number | undefined {\n const seconds = params.snapshotExpirationSec ?? params.snapshot_expiration_sec;\n if (seconds !== undefined) return seconds;\n\n const days = params.snapshotExpirationDays ?? params.snapshot_expiration_days;\n return days === undefined ? undefined : days * 86_400;\n}\n\nexport class SandboxCommands {\n constructor(private readonly sandbox: Sandbox) {}\n\n run(\n command: string,\n options?: SandboxExecOptions,\n ): Promise<SandboxExecResult> {\n return this.sandbox.exec.run(command, options);\n }\n\n stream(\n command: string,\n options?: SandboxExecOptions,\n ): AsyncIterableIterator<SandboxExecEvent> {\n return this.sandbox.exec.stream(command, options);\n }\n}\n\nexport class SandboxFiles {\n constructor(private readonly sandbox: Sandbox) {}\n\n async write(path: string, content: string | Uint8Array): Promise<void> {\n await this.sandbox.writeFile(path, content);\n }\n\n async read(path: string): Promise<Uint8Array> {\n return this.sandbox.download(path);\n }\n\n async readText(path: string): Promise<string> {\n return new TextDecoder().decode(await this.read(path));\n }\n\n list(path = \"/workspace\"): Promise<SandboxFileList> {\n return this.sandbox.listFiles(path);\n }\n\n stat(path: string): Promise<SandboxFileStat> {\n return this.sandbox.statFile(path);\n }\n\n upload(path: string, content: string | Uint8Array): Promise<void> {\n return this.write(path, content);\n }\n\n download(path: string): Promise<Uint8Array> {\n return this.read(path);\n }\n\n /** GET /api/v1/sandboxes/{id}/files/tree — recursive directory tree. */\n async tree(path = \"/workspace\", depth = 3): Promise<SandboxFileTreeNode> {\n const http = (this.sandbox as unknown as { http: HttpClient }).http;\n const response = await http.get<unknown>(\n `/sandboxes/${this.sandbox.id}/files/tree`,\n { path, depth },\n );\n if (\n response &&\n typeof response === \"object\" &&\n \"data\" in (response as object)\n ) {\n return (response as { data: SandboxFileTreeNode }).data;\n }\n return response as SandboxFileTreeNode;\n }\n\n /** POST /api/v1/sandboxes/{id}/files/write-many — write multiple files atomically. */\n async writeMany(\n files: SandboxWriteManyEntry[],\n ): Promise<SandboxWriteManyResult> {\n const http = (this.sandbox as unknown as { http: HttpClient }).http;\n const payload = files.map((f) => ({\n path: f.path,\n content_base64: encodeContent(f.content),\n }));\n const response = await http.post<unknown>(\n `/sandboxes/${this.sandbox.id}/files/write-many`,\n { files: payload },\n );\n if (\n response &&\n typeof response === \"object\" &&\n \"data\" in (response as object)\n ) {\n return (response as { data: SandboxWriteManyResult }).data;\n }\n return response as SandboxWriteManyResult;\n }\n\n /** GET /api/v1/sandboxes/{id}/files/watch (SSE) — live file change events. */\n watch(): AsyncIterableIterator<SandboxFileChange> {\n const http = (this.sandbox as unknown as { http: HttpClient }).http;\n return http.stream<SandboxFileChange>(\n `/sandboxes/${this.sandbox.id}/files/watch`,\n );\n }\n}\n\nexport class SandboxPreview {\n constructor(private readonly sandbox: Sandbox) {}\n\n expose(port?: number): Promise<string> {\n return this.sandbox.expose(port);\n }\n\n exposeInfo(port?: number): Promise<PreviewUrlInfo> {\n return this.sandbox.exposeInfo(port);\n }\n}\n\nexport class SandboxArtifacts {\n constructor(private readonly sandbox: Sandbox) {}\n\n list(): Promise<Record<string, unknown>> {\n return this.sandbox.getArtifacts();\n }\n}\n\nexport class SandboxLogs {\n constructor(private readonly sandbox: Sandbox) {}\n\n get(lines?: number): Promise<string | Record<string, unknown>> {\n return this.sandbox.getLogs(lines);\n }\n\n stream(): AsyncIterableIterator<Record<string, unknown>> {\n return this.sandbox.streamLogs();\n }\n}\n\nexport class SandboxSnapshots {\n constructor(private readonly sandbox: Sandbox) {}\n\n create(comment?: string): Promise<SandboxSnapshot> {\n return this.sandbox.createSnapshot(comment);\n }\n\n list(): Promise<SandboxSnapshot[]> {\n return this.sandbox.listSnapshots();\n }\n\n restore(snapshotId: string): Promise<Sandbox> {\n return this.sandbox.restoreSnapshot(snapshotId);\n }\n\n delete(snapshotId: string): Promise<void> {\n return this.sandbox.deleteSnapshot(snapshotId);\n }\n}\n\nexport class SandboxTerminal {\n constructor(private readonly sandbox: Sandbox) {}\n\n async create(\n params: {\n cols?: number;\n rows?: number;\n shell?: string;\n cwd?: string;\n env?: Record<string, string>;\n } = {},\n ): Promise<Record<string, unknown>> {\n const body = Object.fromEntries(\n Object.entries(params).filter(([, v]) => v !== undefined),\n );\n const response = unwrap(\n await (this.sandbox as unknown as { http: HttpClient }).http.post<\n WireEnvelope<Record<string, unknown>>\n >(`/sandboxes/${this.sandbox.id}/terminal`, body),\n );\n return response as Record<string, unknown>;\n }\n\n async delete(sessionId: string): Promise<void> {\n await (this.sandbox as unknown as { http: HttpClient }).http.delete(\n `/sandboxes/${this.sandbox.id}/terminal/${sessionId}`,\n );\n }\n}\n\nexport class SandboxEvents {\n constructor(private readonly sandbox: Sandbox) {}\n\n /** Stream live sandbox events via SSE. */\n stream(): AsyncIterableIterator<Record<string, unknown>> {\n return (this.sandbox as unknown as { http: HttpClient }).http.stream<\n Record<string, unknown>\n >(`/sandboxes/${this.sandbox.id}/events`);\n }\n}\n\nexport class SandboxPreviews {\n constructor(private readonly sandbox: Sandbox) {}\n\n private get http(): HttpClient {\n return (this.sandbox as unknown as { http: HttpClient }).http;\n }\n\n async list(): Promise<Record<string, unknown>[]> {\n const response = await this.http.get<unknown>(\n `/sandboxes/${this.sandbox.id}/previews`,\n );\n if (Array.isArray(response)) return response as Record<string, unknown>[];\n if (response && typeof response === \"object\") {\n const r = response as Record<string, unknown>;\n for (const k of [\"data\", \"previews\", \"items\"]) {\n if (Array.isArray(r[k])) return r[k] as Record<string, unknown>[];\n }\n }\n return [];\n }\n\n async create(\n port: number,\n opts: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n const body = {\n port,\n ...Object.fromEntries(\n Object.entries(opts).filter(([, v]) => v !== undefined),\n ),\n };\n return unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.sandbox.id}/previews`,\n body,\n ),\n ) as Record<string, unknown>;\n }\n\n async get(previewId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}`,\n ),\n ) as Record<string, unknown>;\n }\n\n async delete(previewId: string): Promise<void> {\n await this.http.delete(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}`,\n );\n }\n\n /** Mint a share token for previewId. */\n async share(\n previewId: string,\n opts: { ttl_seconds?: number; expires_in_sec?: number } = {},\n ): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}/share`,\n { ttl_seconds: opts.ttl_seconds ?? opts.expires_in_sec ?? 3600 },\n ),\n ) as Record<string, unknown>;\n }\n\n /** Invalidate every share token associated with previewId. */\n async revokeShare(previewId: string): Promise<void> {\n await this.http.delete(\n `/sandboxes/${this.sandbox.id}/previews/${previewId}/share`,\n );\n }\n}\n\nexport class SandboxEnv {\n constructor(private readonly sandbox: Sandbox) {}\n\n private get http(): HttpClient {\n return (this.sandbox as unknown as { http: HttpClient }).http;\n }\n\n /** GET /api/v1/sandboxes/{id}/env → list of env vars. */\n async get(): Promise<SandboxEnvVar[]> {\n const response = await this.http.get<unknown>(\n `/sandboxes/${this.sandbox.id}/env`,\n );\n if (Array.isArray(response)) return response as SandboxEnvVar[];\n if (response && typeof response === \"object\") {\n const r = response as Record<string, unknown>;\n for (const k of [\"data\", \"vars\", \"env\", \"items\"]) {\n if (Array.isArray(r[k])) return r[k] as SandboxEnvVar[];\n }\n }\n return [];\n }\n\n /** @deprecated Use get() */\n async list(): Promise<SandboxEnvVar[]> {\n return this.get();\n }\n\n /** PUT /api/v1/sandboxes/{id}/env — set (replace) env vars. */\n async set(\n vars: Array<{ key: string; value: string; encrypted?: boolean }>,\n ): Promise<SandboxEnvVar[]> {\n const response = await this.http.put<unknown>(\n `/sandboxes/${this.sandbox.id}/env`,\n { vars },\n );\n if (Array.isArray(response)) return response as SandboxEnvVar[];\n if (response && typeof response === \"object\") {\n const r = response as Record<string, unknown>;\n for (const k of [\"data\", \"vars\", \"env\", \"items\"]) {\n if (Array.isArray(r[k])) return r[k] as SandboxEnvVar[];\n }\n }\n return [];\n }\n\n /** DELETE /api/v1/sandboxes/{id}/env/{key} — remove a single env var. */\n async delete(key: string): Promise<void> {\n await this.http.delete<unknown>(\n `/sandboxes/${this.sandbox.id}/env/${encodeURIComponent(key)}`,\n );\n }\n}\n\nexport class SandboxTags {\n constructor(private readonly sandbox: Sandbox) {}\n\n /** Replace the full tag list with tags. */\n async set(tags: string[]): Promise<Record<string, unknown>> {\n return unwrap(\n await (this.sandbox as unknown as { http: HttpClient }).http.patch<\n WireEnvelope<Record<string, unknown>>\n >(`/sandboxes/${this.sandbox.id}/tags`, { tags }),\n ) as Record<string, unknown>;\n }\n}\n\nexport class Sandbox {\n data: SandboxData;\n readonly commands: SandboxCommands;\n readonly exec: SandboxExecRunner;\n readonly files: SandboxFiles;\n readonly preview: SandboxPreview;\n readonly artifacts: SandboxArtifacts;\n readonly logs: SandboxLogs;\n readonly snapshots: SandboxSnapshots;\n /** PTY session control — create/delete. */\n readonly terminal: SandboxTerminal;\n /** SSE event stream. */\n readonly events: SandboxEvents;\n /** Preview CRUD + share/revokeShare. */\n readonly previews: SandboxPreviews;\n /** Read-only env var listing. */\n readonly env: SandboxEnv;\n /** Tag replacement. */\n readonly tags: SandboxTags;\n /** MIOSA Connect provider bindings scoped to this sandbox. */\n readonly connectors: SandboxConnectors;\n /** Encrypted secrets + OAuth credentials scoped to this sandbox. */\n readonly secrets: SandboxSecrets;\n /** Egress allowlist + policies scoped to this sandbox. */\n readonly network: SandboxNetwork;\n /** Egress audit log + live tail scoped to this sandbox. */\n readonly audit: SandboxAudit;\n\n constructor(\n private readonly http: HttpClient,\n data: SandboxData,\n ) {\n this.data = data;\n const runExec = (command: string, options?: SandboxExecOptions) =>\n this.runExec(command, options);\n this.exec = Object.assign(runExec, {\n run: runExec,\n stream: (command: string, options?: SandboxExecOptions) =>\n this.execStream(command, options),\n });\n this.commands = new SandboxCommands(this);\n this.files = new SandboxFiles(this);\n this.preview = new SandboxPreview(this);\n this.artifacts = new SandboxArtifacts(this);\n this.logs = new SandboxLogs(this);\n this.snapshots = new SandboxSnapshots(this);\n this.terminal = new SandboxTerminal(this);\n this.events = new SandboxEvents(this);\n this.previews = new SandboxPreviews(this);\n this.env = new SandboxEnv(this);\n this.tags = new SandboxTags(this);\n // Egress (security) namespaces — pre-scoped to this sandbox id.\n const sandboxId = data.id as string;\n this.connectors = new SandboxConnectors(http, sandboxId);\n this.secrets = new SandboxSecrets(http, sandboxId);\n this.network = new SandboxNetwork(http, sandboxId);\n this.audit = new SandboxAudit(http, sandboxId);\n }\n\n get id(): SandboxId {\n return this.data.id;\n }\n\n get state(): SandboxState {\n return this.data.state;\n }\n\n get ready(): boolean {\n return this.data.ready ?? this.data.state === \"running\";\n }\n\n get templateId(): string {\n return this.data.template_id ?? this.data.image_id ?? \"\";\n }\n\n async refresh(): Promise<Sandbox> {\n this.data = unwrap(\n await this.http.get<WireEnvelope<SandboxData>>(`/sandboxes/${this.id}`),\n );\n return this;\n }\n\n /**\n * Run an AI coding agent inside this Sandbox.\n *\n * Defaults to Claude Code, waits for completion, and runs from `/workspace`.\n * Pass `{ runner: \"codex\", env: { CODEX_API_KEY } }` to run Codex.\n */\n async run(\n instruction: string,\n options: SandboxRunOptions = {},\n ): Promise<Run> {\n const runner = options.runner ?? \"claude-code\";\n\n return new Runs(this.http).run({\n ...options,\n instruction,\n targetKind: \"sandbox\",\n targetId: this.id,\n runtimeId: this.id,\n sandboxId: this.id,\n runner,\n cwd: options.cwd ?? \"/workspace\",\n wait: options.wait ?? true,\n });\n }\n\n private async runExec(\n command: string,\n options?: SandboxExecOptions,\n ): Promise<SandboxExecResult> {\n this.assertRunning(\"exec\");\n const response = unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/exec`,\n execBody(command, options),\n ),\n );\n const exitCode = Number(response.exit_code ?? response.exitCode ?? 0);\n const result: SandboxExecResult = {\n stdout: String(response.stdout ?? \"\"),\n stderr: String(response.stderr ?? \"\"),\n exitCode,\n exit_code: exitCode,\n };\n if (typeof response.duration_ms === \"number\") {\n result.durationMs = response.duration_ms;\n result.duration_ms = response.duration_ms;\n }\n return result;\n }\n\n private execStream(\n command: string,\n options?: SandboxExecOptions,\n ): AsyncIterableIterator<SandboxExecEvent> {\n this.assertRunning(\"exec.stream\");\n return this.http.stream<SandboxExecEvent>(\n `/sandboxes/${this.id}/exec/stream`,\n {\n method: \"POST\",\n body: execBody(command, options),\n },\n );\n }\n\n async writeFile(path: string, content: string | Uint8Array): Promise<void> {\n this.assertRunning(\"writeFile\");\n const bytes =\n typeof content === \"string\" ? new TextEncoder().encode(content) : content;\n await this.http.post(`/sandboxes/${this.id}/files`, {\n path,\n content: toBase64(bytes),\n });\n }\n\n async download(path: string): Promise<Uint8Array> {\n this.assertRunning(\"download\");\n return this.http.getBinary(\n `/sandboxes/${this.id}/files/${path.replace(/^\\/+/, \"\")}`,\n );\n }\n\n async createExport(\n params: string | string[] | SandboxExportParams,\n ): Promise<SandboxExport> {\n const body =\n typeof params === \"string\"\n ? { path: params }\n : Array.isArray(params)\n ? { paths: params }\n : params;\n const response = unwrap(\n await this.http.post<WireEnvelope<SandboxExport>>(\n `/sandboxes/${this.id}/exports`,\n body,\n ),\n );\n return normalizeExport(response);\n }\n\n async downloadExport(\n paths: string | string[],\n options: { filename?: string } = {},\n ): Promise<Uint8Array> {\n const query = new URLSearchParams();\n if (Array.isArray(paths)) {\n for (const path of paths) query.append(\"paths[]\", path);\n } else {\n query.set(\"path\", paths);\n }\n if (options.filename) query.set(\"filename\", options.filename);\n return this.http.getBinary(\n `/sandboxes/${this.id}/exports/download?${query.toString()}`,\n );\n }\n\n async readFile(path: string): Promise<string> {\n return new TextDecoder().decode(await this.download(path));\n }\n\n async listFiles(path = \"/workspace\"): Promise<SandboxFileList> {\n this.assertRunning(\"files.list\");\n const response = unwrap(\n await this.http.get<WireEnvelope<SandboxFileList>>(\n `/sandboxes/${this.id}/files`,\n { path },\n ),\n );\n return response;\n }\n\n async statFile(path: string): Promise<SandboxFileStat> {\n this.assertRunning(\"files.stat\");\n return unwrap(\n await this.http.post<WireEnvelope<SandboxFileStat>>(\n `/sandboxes/${this.id}/files/stat`,\n { path },\n ),\n );\n }\n\n async expose(port?: number): Promise<string> {\n return (await this.exposeInfo(port)).url;\n }\n\n async exposeInfo(port?: number): Promise<PreviewUrlInfo> {\n this.assertRunning(\"expose\");\n const response = unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/expose`,\n port === undefined ? {} : { port },\n ),\n );\n return previewInfoFromResponse(response);\n }\n\n async startTemplate(\n options: Record<string, unknown> = {},\n ): Promise<Record<string, unknown>> {\n this.assertRunning(\"startTemplate\");\n return unwrap(\n await this.http.post<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/template/start`,\n options,\n ),\n );\n }\n\n async getArtifacts(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/artifacts`,\n ),\n );\n }\n\n async getLogs(lines?: number): Promise<string | Record<string, unknown>> {\n const response = await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/logs`,\n { lines },\n );\n return unwrap(response);\n }\n\n streamLogs(): AsyncIterableIterator<Record<string, unknown>> {\n return this.http.stream<Record<string, unknown>>(\n `/sandboxes/${this.id}/logs/stream`,\n );\n }\n\n async createSnapshot(comment?: string): Promise<SandboxSnapshot> {\n this.assertRunning(\"snapshots.create\");\n return unwrap(\n await this.http.post<WireEnvelope<SandboxSnapshot>>(\n `/sandboxes/${this.id}/snapshots`,\n comment ? { comment } : {},\n ),\n );\n }\n\n async listSnapshots(): Promise<SandboxSnapshot[]> {\n return unwrap(\n await this.http.get<WireEnvelope<SandboxSnapshot[]>>(\n `/sandboxes/${this.id}/snapshots`,\n ),\n );\n }\n\n async restoreSnapshot(snapshotId: string): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/restore/${snapshotId}`,\n {},\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n async deleteSnapshot(snapshotId: string): Promise<void> {\n await this.http.delete(`/sandboxes/${this.id}/snapshots/${snapshotId}`);\n }\n\n /**\n * Fork (clone) this sandbox into a new sandbox via copy-on-write snapshot.\n * The original sandbox continues running unchanged.\n */\n async fork(\n opts: { name?: string; metadata?: Record<string, unknown> } = {},\n ): Promise<Sandbox> {\n this.assertRunning(\"fork\");\n const body: Record<string, unknown> = {};\n if (opts.name !== undefined) body.name = opts.name;\n if (opts.metadata !== undefined) body.metadata = opts.metadata;\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/fork`,\n body,\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n /**\n * PATCH /api/v1/sandboxes/{id} — update mutable sandbox fields.\n */\n async update(params: {\n name?: string;\n slug?: string;\n tags?: string[];\n metadata?: Record<string, unknown>;\n always_on?: boolean;\n alwaysOn?: boolean;\n timeout_sec?: number;\n timeoutSec?: number;\n idle_timeout_sec?: number;\n idleTimeoutSec?: number;\n persistent?: boolean;\n snapshotExpirationSec?: number;\n snapshot_expiration_sec?: number;\n snapshotExpirationDays?: number;\n snapshot_expiration_days?: number;\n keepLastSnapshots?: number | { count: number; expirationSec?: number; deleteEvicted?: boolean };\n keep_last_snapshots?: number | { count: number; expiration_sec?: number; delete_evicted?: boolean };\n }): Promise<Sandbox> {\n const snapshotExpirationSec = snapshotExpirationSeconds(params);\n const metadata = { ...(params.metadata ?? {}) };\n if (params.persistent !== undefined) metadata.miosa_persistent = params.persistent;\n if (snapshotExpirationSec !== undefined) {\n metadata.snapshot_expiration_sec = snapshotExpirationSec;\n }\n const keepLastSnapshots = params.keepLastSnapshots ?? params.keep_last_snapshots;\n if (keepLastSnapshots !== undefined) {\n metadata.keep_last_snapshots = keepLastSnapshots;\n }\n const body = stripUndefined({\n name: params.name,\n slug: params.slug,\n tags: params.tags,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n always_on: params.always_on ?? params.alwaysOn,\n timeout_sec: params.timeout_sec ?? params.timeoutSec,\n idle_timeout_sec: params.idle_timeout_sec ?? params.idleTimeoutSec,\n });\n const data = unwrap(\n await this.http.patch<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}`,\n body,\n ),\n );\n this.data = data;\n return this;\n }\n\n async extend(timeoutSec: number): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/extend`,\n { timeout_sec: timeoutSec },\n ),\n );\n this.data = data;\n return this;\n }\n\n /**\n * POST /api/v1/sandboxes/{id}/preview-token → {token, url, expires_at, scope}\n */\n async previewToken(\n expiresIn = 3600,\n scope = \"read\",\n ): Promise<{\n token: string;\n url: string;\n expires_at: string;\n scope: string;\n [key: string]: unknown;\n }> {\n const raw = await this.http.post<unknown>(\n `/sandboxes/${this.id}/preview-token`,\n { expires_in: expiresIn, scope },\n );\n if (raw && typeof raw === \"object\" && \"data\" in (raw as object)) {\n return (\n raw as {\n data: {\n token: string;\n url: string;\n expires_at: string;\n scope: string;\n };\n }\n ).data;\n }\n return raw as {\n token: string;\n url: string;\n expires_at: string;\n scope: string;\n };\n }\n\n async pause(): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/pause`,\n {},\n ),\n );\n this.data = data;\n return this;\n }\n\n async resume(): Promise<Sandbox> {\n const data = unwrap(\n await this.http.post<WireEnvelope<SandboxData>>(\n `/sandboxes/${this.id}/resume`,\n {},\n ),\n );\n this.data = data;\n return this;\n }\n\n async deploy(\n params: SandboxDeployParams = {},\n ): Promise<Record<string, unknown>> {\n const idempotencyKey = params.idempotencyKey ?? params.idempotency_key;\n const requestOptions: Parameters<HttpClient[\"request\"]>[1] = {\n method: \"POST\",\n body: stripUndefined({\n name: params.name,\n deployment_id: params.deploymentId ?? params.deployment_id,\n output_path:\n params.outputPath ??\n params.output_path ??\n params.path ??\n params.sourcePath ??\n params.source_path,\n source_snapshot_path:\n params.sourceSnapshotPath ?? params.source_snapshot_path,\n entrypoint: params.entrypoint,\n build_command: params.buildCommand ?? params.build_command,\n run_command: params.runCommand ?? params.run_command,\n start_command: params.startCommand ?? params.start_command,\n port: params.port,\n health_check_path: params.healthCheckPath ?? params.health_check_path,\n deployment_type: params.deploymentType ?? params.deployment_type,\n type: params.type,\n mode: params.mode,\n database: params.database,\n resources: params.resources,\n domain: params.domain,\n custom_domain: params.customDomain ?? params.custom_domain,\n }),\n };\n if (idempotencyKey) {\n requestOptions.headers = { \"Idempotency-Key\": idempotencyKey };\n }\n\n return unwrap(\n await this.http.request<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/deploy`,\n requestOptions,\n ),\n );\n }\n\n async deployDocker(\n params: SandboxDeployParams = {},\n ): Promise<Record<string, unknown>> {\n return this.deploy({ ...params, deploymentType: \"docker_deploy\" });\n }\n\n /** Check readiness of the sandbox (GET /sandboxes/:id/readiness). */\n async readiness(): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<WireEnvelope<Record<string, unknown>>>(\n `/sandboxes/${this.id}/readiness`,\n ),\n ) as Record<string, unknown>;\n }\n\n /**\n * Block until the sandbox reports ready, or *timeout* seconds elapse.\n *\n * When `stream` is `true` (the default) this opens an SSE connection\n * to `GET /sandboxes/:id/readiness/stream` and waits for an\n * `event: ready` frame. The server emits `ready` immediately if the\n * sandbox is already ready, otherwise as soon as the readiness PubSub\n * message fires.\n *\n * Returns `true` once the sandbox is ready, `false` on `event: timeout`\n * or when the local timeout elapses before ready.\n *\n * If the SSE endpoint returns 404 (server pre-dates the streaming\n * endpoint) this transparently falls back to polling\n * {@link readiness} every 10 ms until ready or timeout.\n */\n async waitUntilReady(\n options: { timeout?: number; stream?: boolean } = {},\n ): Promise<boolean> {\n const timeout = options.timeout ?? 30;\n const stream = options.stream ?? true;\n\n if (stream) {\n const sseResult = await this.tryReadinessStream(timeout);\n if (sseResult !== null) return sseResult;\n // null === fall through to polling fallback (404 or transport error)\n }\n\n // Polling fallback — fixed 10 ms tick, no exponential backoff.\n const deadlineMs = Date.now() + timeout * 1000;\n while (Date.now() < deadlineMs) {\n try {\n const data = await this.readiness();\n if (data.ready === true || data.status === \"ready\") return true;\n } catch {\n // swallow transient errors and keep polling\n }\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n return false;\n }\n\n /**\n * Returns `true` / `false` for terminal SSE events, or `null` if the\n * stream endpoint is unavailable (404 or transport error) so callers\n * can fall back to polling.\n */\n private async tryReadinessStream(\n timeoutSec: number,\n ): Promise<boolean | null> {\n const abort = new AbortController();\n const timer = setTimeout(() => abort.abort(), (timeoutSec + 5) * 1000);\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.http.apiKey}`,\n Accept: \"text/event-stream\",\n \"User-Agent\": \"@miosa/sdk/1.0.0\",\n };\n const response = await fetch(\n `${this.http.baseUrl}/sandboxes/${this.id}/readiness/stream`,\n { method: \"GET\", headers, signal: abort.signal },\n );\n if (response.status === 404) return null;\n if (!response.ok || !response.body) return null;\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n let newlineIdx: number;\n while ((newlineIdx = buffer.indexOf(\"\\n\")) !== -1) {\n const line = buffer.slice(0, newlineIdx).replace(/\\r$/, \"\");\n buffer = buffer.slice(newlineIdx + 1);\n if (line.startsWith(\"event:\")) {\n const evt = line.slice(6).trim();\n if (evt === \"ready\") return true;\n if (evt === \"timeout\") return false;\n }\n }\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // already released\n }\n }\n // stream closed without a terminal event — let caller decide\n return null;\n } catch {\n return null;\n } finally {\n clearTimeout(timer);\n try {\n abort.abort();\n } catch {\n // signal already aborted\n }\n }\n }\n\n async destroy(): Promise<void> {\n if (this.data.state === \"destroyed\") return;\n await this.http.delete(`/sandboxes/${this.id}`);\n this.data = {\n ...this.data,\n state: \"destroyed\",\n destroyed_at: new Date().toISOString(),\n };\n }\n\n delete(): Promise<void> {\n return this.destroy();\n }\n\n private assertRunning(operation: string): void {\n if (this.data.state === \"destroyed\") {\n throw new MiosaError(\n `Sandbox ${this.id} has been destroyed`,\n 400,\n \"SANDBOX_DESTROYED\",\n );\n }\n if (this.data.state === \"paused\" && this.data.persistent === true) {\n return;\n }\n if (this.data.state !== \"running\") {\n throw new MiosaError(\n `Cannot ${operation} on sandbox ${this.id}: state is ${this.data.state}, expected running or paused persistent`,\n 409,\n \"SANDBOX_NOT_RUNNING\",\n );\n }\n }\n}\n\nexport class Sandboxes {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a persistent agent workspace.\n *\n * This is the preferred entry point for AI builders, coding agents, and\n * product workspaces. It gives the sandbox a stable name, a longer interactive\n * timeout, and metadata that makes the workspace easy to identify later. The\n * agent should create/edit files in `/workspace`, run installs/tests/builds\n * inside the sandbox, expose previews from the sandbox, and publish from the\n * sandbox when ready.\n */\n async createAgentWorkspace(\n params: SandboxGetOrCreateParams,\n ): Promise<Sandbox> {\n const metadata = {\n ...(params.metadata ?? {}),\n miosa_workspace_kind: \"agent_workspace\",\n };\n return this.getOrCreate({\n persistent: true,\n timeoutSec: AGENT_WORKSPACE_TIMEOUT_SEC,\n idleTimeoutSec: AGENT_WORKSPACE_IDLE_TIMEOUT_SEC,\n snapshotExpirationDays: AGENT_WORKSPACE_SNAPSHOT_EXPIRATION_DAYS,\n keepLastSnapshots: AGENT_WORKSPACE_KEEP_LAST_SNAPSHOTS,\n waitUntilReady: true,\n ...params,\n metadata,\n });\n }\n\n async create(params: SandboxCreateParams = {}): Promise<Sandbox> {\n const idempotencyKey = params.idempotencyKey ?? params.idempotency_key;\n const requestOptions: Parameters<HttpClient[\"request\"]>[1] = {\n method: \"POST\",\n body: createBody(params),\n };\n if (idempotencyKey) {\n requestOptions.headers = { \"Idempotency-Key\": idempotencyKey };\n }\n\n const data = unwrap(\n await this.http.request<WireEnvelope<SandboxData>>(\n \"/sandboxes\",\n requestOptions,\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n async list(params: SandboxListParams = {}): Promise<Sandbox[]> {\n const data = await this.http.get<\n | WireEnvelope<SandboxData[]>\n | { sandboxes: SandboxData[] }\n | { items: SandboxData[] }\n >(\"/sandboxes\", {\n state: params.state,\n tags: params.tags?.join(\",\"),\n external_workspace_id:\n params.externalWorkspaceId ?? params.external_workspace_id,\n external_user_id: params.externalUserId ?? params.external_user_id,\n external_project_id:\n params.externalProjectId ?? params.external_project_id,\n });\n return listItems(data).map((item) => new Sandbox(this.http, item));\n }\n\n async get(id: SandboxId | string): Promise<Sandbox> {\n const data = unwrap(\n await this.http.get<WireEnvelope<SandboxData>>(`/sandboxes/${id}`),\n );\n return new Sandbox(this.http, data);\n }\n\n connect(id: SandboxId | string): Promise<Sandbox> {\n return this.get(id);\n }\n\n async getByName(name: string): Promise<Sandbox> {\n const data = unwrap(\n await this.http.get<WireEnvelope<SandboxData>>(\n `/sandboxes/by-name/${encodeURIComponent(name)}`,\n ),\n );\n return new Sandbox(this.http, data);\n }\n\n /**\n * Idempotently obtain a persistent sandbox by stable name.\n *\n * If the sandbox exists, it is returned. If it is paused and `resume !== false`,\n * it is resumed first. If it does not exist, it is created with the supplied\n * params. Destroyed sandboxes are permanent and are not resumed by this helper.\n */\n async getOrCreate(params: SandboxGetOrCreateParams): Promise<Sandbox> {\n let sandbox: Sandbox;\n try {\n sandbox = await this.getByName(params.name);\n } catch (error) {\n if (!(error instanceof NotFoundError)) throw error;\n sandbox = await this.create(params);\n }\n\n if (sandbox.state === \"paused\" && params.resume !== false) {\n await sandbox.resume();\n }\n\n if (params.waitUntilReady === true) {\n await sandbox.waitUntilReady({ timeout: params.waitTimeoutSec ?? 60 });\n }\n\n return sandbox;\n }\n\n async delete(id: SandboxId | string): Promise<void> {\n await this.http.delete(`/sandboxes/${id}`);\n }\n\n async listTemplates(\n options: { includeAliases?: boolean } = {},\n ): Promise<SandboxTemplateList> {\n return this.http.get<SandboxTemplateList>(\"/sandbox-templates\", {\n include_aliases: options.includeAliases,\n });\n }\n\n async getTemplate(id: string): Promise<SandboxTemplate> {\n return this.http.get<SandboxTemplate>(`/sandbox-templates/${id}`);\n }\n\n async getBuildSpecSchema(): Promise<Record<string, unknown>> {\n return this.http.get<Record<string, unknown>>(\n \"/sandbox-templates/build-spec\",\n );\n }\n\n async validateBuildSpec(\n buildSpec: SandboxBuildSpec,\n ): Promise<SandboxBuildSpecValidation> {\n return this.http.post<SandboxBuildSpecValidation>(\n \"/sandbox-templates/validate\",\n {\n build_spec: buildSpec,\n },\n );\n }\n\n async createTemplate(\n params: SandboxTemplateCreateParams,\n ): Promise<SandboxTemplate> {\n const response = await this.http.post<WireEnvelope<SandboxTemplate>>(\n \"/sandbox-templates\",\n stripUndefined({\n name: params.name,\n slug: params.slug,\n description: params.description,\n build_spec: params.buildSpec ?? params.build_spec,\n metadata: params.metadata,\n }),\n );\n return unwrap(response);\n }\n\n async createTemplateBuild(\n templateId: string,\n params: SandboxTemplateBuildCreateParams = {},\n ): Promise<SandboxTemplateBuild> {\n const response = await this.http.post<WireEnvelope<SandboxTemplateBuild>>(\n `/sandbox-templates/${templateId}/builds`,\n stripUndefined({\n build_spec: params.buildSpec ?? params.build_spec,\n metadata: params.metadata,\n }),\n );\n return unwrap(response);\n }\n\n async listTemplateBuilds(\n templateId: string,\n ): Promise<SandboxTemplateBuild[]> {\n const response = await this.http.get<WireEnvelope<SandboxTemplateBuild[]>>(\n `/sandbox-templates/${templateId}/builds`,\n );\n return unwrap(response);\n }\n\n async getTemplateBuild(buildId: string): Promise<SandboxTemplateBuild> {\n const response = await this.http.get<WireEnvelope<SandboxTemplateBuild>>(\n `/sandbox-template-builds/${buildId}`,\n );\n return unwrap(response);\n }\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n const maybeBuffer = (\n globalThis as {\n Buffer?: {\n from(data: Uint8Array): { toString(encoding: string): string };\n };\n }\n ).Buffer;\n if (maybeBuffer) return maybeBuffer.from(bytes).toString(\"base64\");\n\n let binary = \"\";\n for (let index = 0; index < bytes.length; index += 1) {\n binary += String.fromCharCode(bytes[index]!);\n }\n return btoa(binary);\n}\n\nfunction previewInfoFromResponse(\n response: Record<string, unknown>,\n): PreviewUrlInfo {\n const url = String(response.url ?? response.preview_url ?? \"\");\n const embeddedInfo =\n response.url_info && typeof response.url_info === \"object\"\n ? (response.url_info as Record<string, unknown>)\n : {};\n\n return {\n ...embeddedInfo,\n url: String(embeddedInfo.url ?? url),\n class: String(\n response.class ??\n response.url_class ??\n embeddedInfo.class ??\n embeddedInfo.url_class ??\n \"temporary_preview\",\n ) as PreviewUrlClass,\n url_class: String(\n response.url_class ??\n response.class ??\n embeddedInfo.url_class ??\n embeddedInfo.class ??\n \"temporary_preview\",\n ) as PreviewUrlClass,\n stable_for_embedding: Boolean(\n response.stable_for_embedding ??\n embeddedInfo.stable_for_embedding ??\n false,\n ),\n recommended_next_action: String(\n response.recommended_next_action ??\n embeddedInfo.recommended_next_action ??\n \"create_alias_or_publish\",\n ) as PreviewUrlAction,\n };\n}\n","/**\n * SandboxTemplates resource — tenant sandbox template management.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type SandboxTemplateResourceId = string & {\n readonly __brand: \"SandboxTemplateResourceId\";\n};\nexport type SandboxTemplateBuildResourceId = string & {\n readonly __brand: \"SandboxTemplateBuildResourceId\";\n};\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface SandboxTemplateResourceData {\n id: SandboxTemplateResourceId;\n tenant_id: string;\n name: string;\n state?: string;\n build_spec?: Record<string, unknown>;\n aliases?: string[];\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface SandboxTemplateBuildResourceData {\n id: SandboxTemplateBuildResourceId;\n template_id: SandboxTemplateResourceId;\n state?: string;\n started_at?: string | null;\n finished_at?: string | null;\n error?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SandboxTemplateListParams {\n include_aliases?: boolean;\n includeAliases?: boolean;\n}\n\nexport interface TemplateCreateParams {\n name: string;\n build_spec: Record<string, unknown>;\n buildSpec?: Record<string, unknown>;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface TemplateBuildCreateParams {\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"templates\", \"builds\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class SandboxTemplates {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n params: SandboxTemplateListParams = {},\n ): Promise<SandboxTemplateResourceData[]> {\n const includeAliases =\n params.includeAliases ?? params.include_aliases ?? false;\n const query = includeAliases\n ? ({ include_aliases: true } as Record<\n string,\n string | number | boolean | undefined\n >)\n : undefined;\n const data = await this.http.get<unknown>(\"/sandbox-templates\", query);\n return listItems<SandboxTemplateResourceData>(data, [\n \"data\",\n \"templates\",\n \"items\",\n ]);\n }\n\n async get(templateId: string): Promise<SandboxTemplateResourceData> {\n const data = await this.http.get<unknown>(\n `/sandbox-templates/${templateId}`,\n );\n return unwrap<SandboxTemplateResourceData>(data);\n }\n\n async create(\n params: TemplateCreateParams,\n ): Promise<SandboxTemplateResourceData> {\n const {\n idempotencyKey: ikey,\n buildSpec,\n build_spec,\n name,\n ...rest\n } = params;\n const body = stripUndefined({\n name,\n build_spec: buildSpec ?? build_spec,\n ...rest,\n });\n const data = await this.http.request<unknown>(\"/sandbox-templates\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<SandboxTemplateResourceData>(data);\n }\n\n async buildSpecSchema(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/sandbox-templates/build-spec\");\n return (data ?? {}) as Record<string, unknown>;\n }\n\n async validate(\n buildSpec: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const data = await this.http.post<unknown>(\"/sandbox-templates/validate\", {\n build_spec: buildSpec,\n });\n return (data ?? {}) as Record<string, unknown>;\n }\n\n async listBuilds(\n templateId: string,\n ): Promise<SandboxTemplateBuildResourceData[]> {\n const data = await this.http.get<unknown>(\n `/sandbox-templates/${templateId}/builds`,\n );\n return listItems<SandboxTemplateBuildResourceData>(data, [\n \"data\",\n \"builds\",\n \"items\",\n ]);\n }\n\n async createBuild(\n templateId: string,\n params: TemplateBuildCreateParams = {},\n ): Promise<SandboxTemplateBuildResourceData> {\n const { idempotencyKey: ikey, ...rest } = params;\n const body = stripUndefined(rest as Record<string, unknown>);\n const data = await this.http.request<unknown>(\n `/sandbox-templates/${templateId}/builds`,\n {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n },\n );\n return unwrap<SandboxTemplateBuildResourceData>(data);\n }\n}\n","/**\n * Settings — tenant config, branding, BYOK provider keys.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface SettingsUpdateParams {\n [key: string]: unknown;\n}\n\nexport interface BrandingUpdateParams {\n logo_url?: string;\n primary_color?: string;\n wordmark?: string;\n [key: string]: unknown;\n}\n\nexport interface ProviderKeyUpsertParams {\n key: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\n \"data\",\n \"settings\",\n \"branding\",\n \"provider_keys\",\n \"items\",\n ]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction listItems<T>(payload: unknown): T[] {\n const result = unwrap<T[] | unknown>(payload);\n if (Array.isArray(result)) return result;\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Settings {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current tenant settings. */\n async get(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/settings\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Update tenant settings. */\n async update(params: SettingsUpdateParams): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\"/settings\", body);\n return unwrap<Record<string, unknown>>(data);\n }\n\n // ── Branding ──────────────────────────────────────────────────────────────\n\n /** Get tenant branding (logo, colors, custom wordmark). */\n async getBranding(): Promise<Record<string, unknown>> {\n const data = await this.http.get<unknown>(\"/settings/branding\");\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Update tenant branding. */\n async updateBranding(\n params: BrandingUpdateParams,\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\"/settings/branding\", body);\n return unwrap<Record<string, unknown>>(data);\n }\n\n // ── Read-only reference data ───────────────────────────────────────────────\n\n /** Get tenant-scoped compute pricing. */\n async computePricing(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/compute-pricing\");\n return unwrap(data);\n }\n\n /** Get tenant-scoped GPU pricing. */\n async gpuPricing(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/gpu-pricing\");\n return unwrap(data);\n }\n\n /** List models available to this tenant. */\n async availableModels(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/available-models\");\n return unwrap(data);\n }\n\n /** List regions enabled for this tenant. */\n async regions(): Promise<unknown> {\n const data = await this.http.get<unknown>(\"/settings/regions\");\n return unwrap(data);\n }\n\n // ── BYOK provider keys ────────────────────────────────────────────────────\n\n /** List tenant-level BYOK provider keys (Anthropic, OpenAI, etc.). */\n async listProviderKeys(): Promise<Record<string, unknown>[]> {\n const data = await this.http.get<unknown>(\"/settings/provider-keys\");\n return listItems<Record<string, unknown>>(data);\n }\n\n /** Create or update a BYOK provider key. */\n async upsertProviderKey(\n provider: string,\n params: ProviderKeyUpsertParams,\n ): Promise<Record<string, unknown>> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.put<unknown>(\n `/settings/provider-keys/${provider}`,\n body,\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n /** Delete a BYOK provider key. */\n async deleteProviderKey(provider: string): Promise<void> {\n await this.http.delete<unknown>(`/settings/provider-keys/${provider}`);\n }\n}\n","/**\n * SnapshotsStandalone — fleet-wide snapshot index for admin callers.\n *\n * Routes: /admin/snapshots/*\n * Requires admin credential.\n *\n * Per-computer snapshots remain nested under client.computers.get(id).checkpoints.\n * This resource exposes the fleet-wide read-only index used by the admin dashboard.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nfunction unwrap(data: unknown): Record<string, unknown> {\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"snapshots\", \"items\"]) {\n if (k in d) return d[k] as Record<string, unknown>;\n }\n }\n return data as Record<string, unknown>;\n}\n\nfunction unwrapList(data: unknown): Record<string, unknown>[] {\n if (Array.isArray(data)) return data as Record<string, unknown>[];\n if (data && typeof data === \"object\") {\n const d = data as Record<string, unknown>;\n for (const k of [\"data\", \"snapshots\", \"items\"]) {\n if (Array.isArray(d[k])) return d[k] as Record<string, unknown>[];\n }\n }\n return [];\n}\n\nexport class SnapshotsStandalone {\n constructor(private readonly http: HttpClient) {}\n\n async list(\n filters: Record<string, string | number | boolean | undefined> = {},\n ): Promise<Record<string, unknown>[]> {\n const query = Object.fromEntries(\n Object.entries(filters).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n return unwrapList(await this.http.get<unknown>(\"/admin/snapshots\", query));\n }\n\n async get(snapshotId: string): Promise<Record<string, unknown>> {\n return unwrap(\n await this.http.get<unknown>(`/admin/snapshots/${snapshotId}`),\n );\n }\n}\n","/**\n * Storage resource — managed S3-compatible buckets, objects, and presigned URLs.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type BucketId = string & { readonly __brand: \"BucketId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface BucketData {\n id: BucketId;\n tenant_id: string;\n name: string;\n region?: string | null;\n visibility?: \"private\" | \"public\" | string;\n quota_bytes?: number | null;\n used_bytes?: number | null;\n public?: boolean;\n object_count?: number | null;\n size_bytes?: number | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface StorageObjectData {\n key: string;\n size_bytes?: number;\n content_type?: string;\n etag?: string | null;\n last_modified?: string | null;\n [key: string]: unknown;\n}\n\nexport interface PresignResult {\n url: string;\n expires_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface BucketCreateParams {\n name: string;\n region?: string;\n visibility?: \"private\" | \"public\";\n quota_bytes?: number;\n public?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ObjectListParams {\n prefix?: string;\n maxKeys?: number;\n max_keys?: number;\n marker?: string;\n /** @deprecated use maxKeys/max_keys; kept as a convenience alias. */\n limit?: number;\n /** @deprecated use marker; kept as a convenience alias. */\n cursor?: string;\n}\n\nexport interface PresignParams {\n key: string;\n method?: \"GET\" | \"PUT\";\n expiresIn?: number;\n expires_in?: number;\n /** @deprecated use method; kept as a convenience alias. */\n operation?: \"get\" | \"put\";\n /** @deprecated use expiresIn/expires_in; kept as a convenience alias. */\n expiresInSec?: number;\n /** @deprecated use expiresIn/expires_in; kept as a convenience alias. */\n expires_in_sec?: number;\n contentType?: string;\n content_type?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"buckets\", \"objects\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Storage {\n constructor(private readonly http: HttpClient) {}\n\n // ── Buckets ────────────────────────────────────────────────────────────────\n\n async listBuckets(): Promise<BucketData[]> {\n const data = await this.http.get<unknown>(\"/storage/buckets\");\n return listItems<BucketData>(data);\n }\n\n async createBucket(params: BucketCreateParams): Promise<BucketData> {\n const { name, public: isPublic, visibility, ...rest } = params;\n const body = stripUndefined({\n name,\n visibility:\n visibility ??\n (isPublic === undefined ? undefined : isPublic ? \"public\" : \"private\"),\n ...rest,\n });\n const data = await this.http.post<unknown>(\"/storage/buckets\", body);\n return unwrap<BucketData>(data);\n }\n\n async getBucket(bucketId: string): Promise<BucketData> {\n const data = await this.http.get<unknown>(`/storage/buckets/${bucketId}`);\n return unwrap<BucketData>(data);\n }\n\n async deleteBucket(bucketId: string): Promise<void> {\n await this.http.delete<unknown>(`/storage/buckets/${bucketId}`);\n }\n\n // ── Objects ────────────────────────────────────────────────────────────────\n\n async listObjects(\n bucketId: string,\n params: ObjectListParams = {},\n ): Promise<StorageObjectData[]> {\n const query = stripUndefined({\n prefix: params.prefix,\n max_keys: params.max_keys ?? params.maxKeys ?? params.limit,\n marker: params.marker ?? params.cursor,\n }) as Record<string, string | number | boolean | undefined>;\n const data = await this.http.get<unknown>(\n `/storage/buckets/${bucketId}/objects`,\n query,\n );\n return listItems<StorageObjectData>(data, [\"data\", \"objects\", \"items\"]);\n }\n\n async putObject(\n bucketId: string,\n key: string,\n content: Uint8Array | ArrayBuffer,\n opts: { contentType?: string } = {},\n ): Promise<Record<string, unknown>> {\n const contentType = opts.contentType ?? \"application/octet-stream\";\n const data = await this.http.request<unknown>(\n `/storage/buckets/${bucketId}/objects/${key}`,\n {\n method: \"PUT\",\n body: content,\n headers: { \"Content-Type\": contentType },\n },\n );\n return (data ?? {}) as Record<string, unknown>;\n }\n\n async getObject(bucketId: string, key: string): Promise<Uint8Array> {\n return this.http.getBinary(`/storage/buckets/${bucketId}/objects/${key}`);\n }\n\n async deleteObject(bucketId: string, key: string): Promise<void> {\n await this.http.delete<unknown>(\n `/storage/buckets/${bucketId}/objects/${key}`,\n );\n }\n\n // ── Presigned URLs ─────────────────────────────────────────────────────────\n\n async presign(\n bucketId: string,\n params: PresignParams,\n ): Promise<PresignResult> {\n const operationMethod =\n params.operation === \"put\"\n ? \"PUT\"\n : params.operation === \"get\"\n ? \"GET\"\n : undefined;\n\n const body = stripUndefined({\n key: params.key,\n method: params.method ?? operationMethod ?? \"GET\",\n expires_in:\n params.expiresIn ??\n params.expires_in ??\n params.expiresInSec ??\n params.expires_in_sec ??\n 3600,\n });\n const data = await this.http.post<unknown>(\n `/storage/buckets/${bucketId}/presign`,\n body,\n );\n return unwrap<PresignResult>(data);\n }\n}\n","/**\n * Org Invites — email invite flow for org (tenant) membership.\n *\n * Public endpoints (no auth):\n * GET /invites/:token\n *\n * Authenticated endpoints (admin/owner role required for create/list/revoke):\n * POST /tenants/:id/invites\n * GET /tenants/:id/invites\n * DELETE /tenants/:id/invites/:invite_id\n * POST /invites/:token/accept\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport type OrgRole = \"owner\" | \"admin\" | \"member\";\n\nexport interface OrgInvite {\n id: string;\n tenant_id: string;\n email: string;\n role: OrgRole;\n invited_by: string | null;\n expires_at: string;\n accepted_at: string | null;\n created_at: string;\n}\n\nexport interface OrgInviteCreated {\n invite_id: string;\n email: string;\n role: OrgRole;\n expires_at: string;\n /**\n * Full URL for the invite landing page. On white-label tenants this uses\n * the tenant's custom domain.\n */\n invite_url: string;\n}\n\nexport interface OrgInvitePreview {\n email: string;\n tenant_name: string;\n role: OrgRole;\n expires_at: string;\n expired: boolean;\n accepted: boolean;\n}\n\nexport interface TenantSummary {\n id: string;\n name: string;\n slug: string;\n owner_user_id: string | null;\n plan_id: string | null;\n plan_name: string | null;\n settings: Record<string, unknown>;\n inserted_at: string;\n updated_at: string;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CreateOrgInviteParams {\n email: string;\n role?: OrgRole;\n}\n\n// ── Response shapes ───────────────────────────────────────────────────────────\n\nexport interface OrgInviteCreatedResponse {\n data: OrgInviteCreated;\n}\n\nexport interface OrgInviteListResponse {\n data: OrgInvite[];\n total: number;\n}\n\nexport interface OrgInviteRevokeResponse {\n invite_id: string;\n revoked: boolean;\n}\n\nexport interface OrgInvitePreviewResponse {\n data: OrgInvitePreview;\n}\n\nexport interface AcceptOrgInviteResponse {\n accepted: boolean;\n tenant_id: string;\n tenant: TenantSummary | null;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class OrgInvites {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create an org invite and dispatch the invite email.\n *\n * The invite URL in the response is host-aware: on white-label tenants it\n * uses the custom domain so the recipient lands on the branded experience.\n * Requires `admin` or `owner` role in the tenant.\n *\n * `POST /tenants/:id/invites`\n */\n async create(\n tenantId: string,\n params: CreateOrgInviteParams,\n ): Promise<OrgInviteCreated> {\n const res = await this.http.post<OrgInviteCreatedResponse>(\n `/tenants/${tenantId}/invites`,\n params,\n );\n return res.data;\n }\n\n /**\n * List all pending (non-expired, non-accepted, non-revoked) org invites.\n *\n * Requires `admin` or `owner` role.\n *\n * `GET /tenants/:id/invites`\n */\n async list(tenantId: string): Promise<OrgInvite[]> {\n const res = await this.http.get<OrgInviteListResponse>(\n `/tenants/${tenantId}/invites`,\n );\n return res.data ?? [];\n }\n\n /**\n * Revoke a pending org invite.\n *\n * Returns `409` when the invite was already legitimately accepted.\n * Requires `admin` or `owner` role.\n *\n * `DELETE /tenants/:id/invites/:invite_id`\n */\n async revoke(\n tenantId: string,\n inviteId: string,\n ): Promise<OrgInviteRevokeResponse> {\n return this.http.delete<OrgInviteRevokeResponse>(\n `/tenants/${tenantId}/invites/${inviteId}`,\n );\n }\n\n /**\n * Preview an org invite by token (no auth required).\n *\n * Returns `null` when the token is unknown or has been revoked.\n *\n * `GET /invites/:token`\n */\n async preview(token: string): Promise<OrgInvitePreview | null> {\n try {\n const res = await this.http.get<OrgInvitePreviewResponse>(\n `/invites/${token}`,\n );\n return res.data ?? null;\n } catch {\n return null;\n }\n }\n\n /**\n * Accept an org invite on behalf of the authenticated user.\n *\n * The caller's JWT email must match the invite email (case-insensitive).\n * On success inserts a `tenant_members` row.\n *\n * Error responses:\n * - `400` — invalid or expired token.\n * - `422 EMAIL_MISMATCH` — JWT email does not match the invite email.\n *\n * `POST /invites/:token/accept`\n */\n async accept(token: string): Promise<AcceptOrgInviteResponse> {\n return this.http.post<AcceptOrgInviteResponse>(\n `/invites/${token}/accept`,\n {},\n );\n }\n}\n","/**\n * Tenant — current tenant info and plan/usage.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface TenantPlan {\n id?: string;\n name?: string;\n limits?: Record<string, unknown>;\n usage?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface PreviewDomainData {\n preview_domain?: string | null;\n default_domain?: string;\n status?: string;\n dns_status?: string;\n cname_target?: string | null;\n dns_instructions?: unknown;\n [key: string]: unknown;\n}\n\nexport interface TenantBrandingUpdateParams {\n product_name?: string;\n logo_url?: string;\n support_url?: string;\n support_email?: string;\n primary_color?: string;\n background_color?: string;\n [key: string]: unknown;\n}\n\nexport type BrandingData = TenantBrandingUpdateParams;\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"tenant\", \"branding\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nexport class PreviewDomain {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the tenant's white-label preview domain settings. */\n async get(): Promise<PreviewDomainData> {\n const data = await this.http.get<unknown>(\"/tenant/preview-domain\");\n return unwrap<PreviewDomainData>(data);\n }\n\n /** Set the tenant's white-label preview domain. */\n async set(domain: string): Promise<PreviewDomainData> {\n const data = await this.http.put<unknown>(\"/tenant/preview-domain\", {\n preview_domain: domain,\n });\n return unwrap<PreviewDomainData>(data);\n }\n\n /** Re-run DNS verification for the configured preview domain. */\n async verify(): Promise<PreviewDomainData> {\n const data = await this.http.post<unknown>(\n \"/tenant/preview-domain/verify\",\n {},\n );\n return unwrap<PreviewDomainData>(data);\n }\n\n /** Remove the tenant's custom preview domain. */\n async delete(): Promise<void> {\n await this.http.delete<unknown>(\"/tenant/preview-domain\");\n }\n}\n\nexport class Branding {\n constructor(private readonly http: HttpClient) {}\n\n /** Get tenant branding used by white-label hosted surfaces. */\n async get(): Promise<BrandingData> {\n const data = await this.http.get<unknown>(\"/tenant/branding\");\n return unwrap<BrandingData>(data);\n }\n\n /** Update tenant branding used by white-label hosted surfaces. */\n async set(params: TenantBrandingUpdateParams): Promise<BrandingData> {\n const data = await this.http.put<unknown>(\"/tenant/branding\", {\n branding: stripUndefined(params),\n });\n return unwrap<BrandingData>(data);\n }\n\n /** Reset tenant branding to platform defaults. */\n async delete(): Promise<void> {\n await this.http.delete<unknown>(\"/tenant/branding\");\n }\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Tenant {\n readonly preview_domain: PreviewDomain;\n readonly branding: Branding;\n /** camelCase alias for SDK consumers that avoid snake_case properties. */\n readonly previewDomain: PreviewDomain;\n\n constructor(private readonly http: HttpClient) {\n this.preview_domain = new PreviewDomain(http);\n this.previewDomain = this.preview_domain;\n this.branding = new Branding(http);\n }\n\n /** Get the current tenant's plan, limits, and live usage counters. */\n async current(): Promise<TenantPlan> {\n const data = await this.http.get<unknown>(\"/tenant/plan\");\n return unwrap<TenantPlan>(data);\n }\n\n /** Convenience alias for `tenant.branding.get()`. */\n async getBranding(): Promise<BrandingData> {\n return this.branding.get();\n }\n\n /** Convenience alias for `tenant.branding.set(...)`. */\n async setBranding(\n params: TenantBrandingUpdateParams,\n ): Promise<BrandingData> {\n return this.branding.set(params);\n }\n\n /** Convenience alias for `tenant.branding.delete()`. */\n async deleteBranding(): Promise<void> {\n await this.branding.delete();\n }\n}\n","/**\n * Product-aware template catalog.\n *\n * This is different from `sandboxTemplates`, which manages tenant-owned\n * sandbox template build records. `templates` is the canonical discovery\n * surface for product/template/size/readiness primitives across sandboxes,\n * computers, and appliances.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\nexport type ComputeProduct =\n | \"sandbox\"\n | \"computer\"\n | \"docker_deploy_host\"\n | \"managed_database\"\n | \"deployment\";\n\nexport type TemplateReadinessState =\n | \"fast_ready\"\n | \"cold_boot_only\"\n | \"missing\"\n | \"partial_fast_ready\"\n | \"unavailable\";\n\nexport interface TemplateSizeReadiness {\n size: string;\n state: TemplateReadinessState | string;\n fast_ready?: boolean;\n cold_boot_only?: boolean;\n readiness_scope?: string;\n checked_nodes?: number;\n ready_nodes?: number;\n cold_boot_nodes?: number;\n missing_nodes?: number;\n unavailable_nodes?: number;\n [key: string]: unknown;\n}\n\nexport interface TemplateBenchmarkLane {\n id: string;\n name?: string;\n command?: string;\n purpose?: string;\n [key: string]: unknown;\n}\n\nexport interface TemplateReadinessContract {\n exec_ready?: boolean;\n preview_ready?: boolean;\n desktop_ready?: boolean;\n app_ready?: boolean;\n benchmark_command?: string;\n start_command?: string | null;\n readiness_probe?: Record<string, unknown> | null;\n [key: string]: unknown;\n}\n\nexport interface ProductTemplate {\n id: string;\n name: string;\n product: ComputeProduct | string;\n primitive?: \"template\" | string;\n default_size?: string;\n image_id?: string;\n description?: string | null;\n sdk_name?: string;\n cli_name?: string;\n installed_tools?: string[];\n install_command?: string | null;\n start_command?: string | null;\n readiness_probe?: Record<string, unknown> | null;\n readiness_contract?: TemplateReadinessContract;\n benchmark_lane?: TemplateBenchmarkLane;\n aliases?: string[];\n sizes?: TemplateSizeReadiness[];\n readiness?: TemplateReadinessState | string;\n [key: string]: unknown;\n}\n\nexport interface ProductCatalogEntry {\n id: ComputeProduct | string;\n name: string;\n primitive?: \"product\" | string;\n description?: string;\n default_template?: string;\n default_size?: string;\n templates?: ProductTemplate[];\n size_ids?: string[];\n [key: string]: unknown;\n}\n\nexport interface TemplatesListParams {\n product?: ComputeProduct | string;\n}\n\nexport interface ProductTemplateCatalog {\n templates: ProductTemplate[];\n products?: ProductCatalogEntry[];\n sizes?: Array<Record<string, unknown>>;\n readiness_states?: string[];\n rules?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nfunction unwrapCatalog(payload: unknown): ProductTemplateCatalog {\n if (!payload || typeof payload !== \"object\") return { templates: [] };\n const data =\n \"data\" in payload && typeof (payload as { data?: unknown }).data === \"object\"\n ? (payload as { data: Record<string, unknown> }).data\n : (payload as Record<string, unknown>);\n\n const templates = Array.isArray(data.templates)\n ? (data.templates as ProductTemplate[])\n : [];\n\n return {\n ...data,\n templates,\n } as ProductTemplateCatalog;\n}\n\nexport class Templates {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List product-aware templates across sandbox, computer, and appliance.\n *\n * Use `sandboxTemplates` for tenant-owned sandbox template CRUD/builds.\n */\n async list(params: TemplatesListParams = {}): Promise<ProductTemplate[]> {\n const data = await this.http.get<unknown>(\"/templates\");\n const catalog = unwrapCatalog(data);\n\n if (!params.product) return catalog.templates;\n\n return catalog.templates.filter((template) => template.product === params.product);\n }\n\n async catalog(): Promise<ProductTemplateCatalog> {\n const data = await this.http.get<unknown>(\"/templates\");\n return unwrapCatalog(data);\n }\n\n async get(templateId: string, params: TemplatesListParams = {}): Promise<ProductTemplate> {\n const templates = await this.list(params);\n const match = templates.find((template) => template.id === templateId);\n\n if (!match) {\n throw new Error(`Template not found: ${templateId}`);\n }\n\n return match;\n }\n\n async readiness(\n templateId: string,\n params: TemplatesListParams = {},\n ): Promise<TemplateSizeReadiness[]> {\n const template = await this.get(templateId, params);\n return template.sizes ?? [];\n }\n}\n\n","/**\n * Usage — per-session metering, summary, and reports.\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface UsageSummary {\n period_start?: string;\n period_end?: string;\n total_credits?: number;\n [key: string]: unknown;\n}\n\nexport interface UsageSession {\n id?: string;\n computer_id?: string;\n started_at?: string;\n ended_at?: string;\n credits_used?: number;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface UsageSessionsParams {\n computer_id?: string;\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface UsageReportParams extends UsageSessionsParams {\n period_start?: string;\n period_end?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\") {\n const p = payload as Record<string, unknown>;\n for (const k of [\"data\", \"usage\", \"sessions\", \"summary\", \"items\"]) {\n if (k in p) return p[k] as T;\n }\n }\n return payload as T;\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, string | number | boolean | undefined> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n ) as Record<string, string | number | boolean | undefined>;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Usage {\n constructor(private readonly http: HttpClient) {}\n\n /** Get the current period usage summary. */\n async current(): Promise<UsageSummary> {\n const data = await this.http.get<unknown>(\"/usage/summary\");\n return unwrap<UsageSummary>(data);\n }\n\n /** List per-session metering events. */\n async sessions(params: UsageSessionsParams = {}): Promise<UsageSession[]> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/usage/sessions\", query);\n const result = unwrap<UsageSession[] | unknown>(data);\n if (Array.isArray(result)) return result;\n return [];\n }\n\n /** Get a usage report for a period. */\n async report(params: UsageReportParams = {}): Promise<UsageSummary> {\n const query = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.get<unknown>(\"/usage/summary\", query);\n return unwrap<UsageSummary>(data);\n }\n}\n","/**\n * Volumes resource — persistent block storage.\n */\n\nimport { randomUUID } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type VolumeId = string & { readonly __brand: \"VolumeId\" };\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface VolumeData {\n id: VolumeId;\n tenant_id: string;\n name: string;\n size_gb: number;\n state?: string;\n region?: string | null;\n attached_to?: string | null;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface VolumeListParams {\n limit?: number;\n cursor?: string;\n state?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface VolumeCreateParams {\n name: string;\n size_gb: number;\n sizeGb?: number;\n region?: string;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"volumes\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Volumes {\n constructor(private readonly http: HttpClient) {}\n\n async list(params: VolumeListParams = {}): Promise<VolumeData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/volumes\", query);\n return listItems<VolumeData>(data);\n }\n\n async get(volumeId: string): Promise<VolumeData> {\n const data = await this.http.get<unknown>(`/volumes/${volumeId}`);\n return unwrap<VolumeData>(data);\n }\n\n async create(params: VolumeCreateParams): Promise<VolumeData> {\n const { idempotencyKey: ikey, sizeGb, ...rest } = params;\n const body = stripUndefined({\n ...rest,\n size_gb: sizeGb ?? rest.size_gb,\n });\n const data = await this.http.request<unknown>(\"/volumes\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<VolumeData>(data);\n }\n\n async delete(volumeId: string): Promise<void> {\n await this.http.delete<unknown>(`/volumes/${volumeId}`);\n }\n}\n","/**\n * Webhooks resource — tenant outgoing event delivery.\n */\n\nimport { createHmac, randomUUID, timingSafeEqual } from \"node:crypto\";\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Branded IDs ──────────────────────────────────────────────────────────────\n\nexport type WebhookId = string & { readonly __brand: \"WebhookId\" };\nexport type WebhookDeliveryId = string & {\n readonly __brand: \"WebhookDeliveryId\";\n};\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface WebhookData {\n id: WebhookId;\n tenant_id: string;\n url: string;\n events: string[];\n state?: string;\n secret?: string | null;\n enabled?: boolean;\n created_at?: string;\n updated_at?: string;\n [key: string]: unknown;\n}\n\nexport interface WebhookDeliveryData {\n id: WebhookDeliveryId;\n webhook_id: WebhookId;\n event?: string;\n state?: string;\n response_status?: number | null;\n attempt_count?: number;\n next_retry_at?: string | null;\n delivered_at?: string | null;\n created_at?: string;\n [key: string]: unknown;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface WebhookListParams {\n limit?: number;\n cursor?: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface WebhookCreateParams {\n url: string;\n events: string[];\n secret?: string;\n enabled?: boolean;\n idempotencyKey?: string;\n [key: string]: unknown;\n}\n\nexport interface WebhookUpdateParams {\n url?: string;\n events?: string[];\n secret?: string;\n enabled?: boolean;\n [key: string]: unknown;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrap<T>(payload: unknown): T {\n if (payload && typeof payload === \"object\" && \"data\" in (payload as object)) {\n return (payload as { data: T }).data;\n }\n return payload as T;\n}\n\nfunction listItems<T>(\n payload: unknown,\n candidateKeys: string[] = [\"data\", \"webhooks\", \"deliveries\", \"items\"],\n): T[] {\n if (Array.isArray(payload)) return payload;\n if (!payload || typeof payload !== \"object\") return [];\n const p = payload as Record<string, unknown>;\n if (Array.isArray(p.data)) return p.data as T[];\n for (const key of candidateKeys) {\n if (Array.isArray(p[key])) return p[key] as T[];\n }\n return [];\n}\n\nfunction stripUndefined(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, v]) => v !== undefined),\n );\n}\n\nfunction idempotencyKey(key?: string): string {\n return key ?? randomUUID();\n}\n\nfunction bodyBuffer(body: Buffer | Uint8Array | string): Buffer {\n if (Buffer.isBuffer(body)) return body;\n if (typeof body === \"string\") return Buffer.from(body, \"utf8\");\n return Buffer.from(body);\n}\n\n/**\n * Verify the `Miosa-Signature` webhook header.\n *\n * Header format: `t=<unix_seconds>,v1=<hex_hmac>`.\n * Signed payload: `<timestamp>.<raw_body>`.\n */\nexport function verifySignature(\n body: Buffer | Uint8Array | string,\n header: string,\n secret: string,\n toleranceSec = 300,\n): boolean {\n const parts = Object.fromEntries(\n header\n .split(\",\")\n .map((chunk) => chunk.split(\"=\", 2))\n .filter(([key, value]) => key && value),\n );\n const timestamp = parts.t;\n const received = parts.v1;\n if (!timestamp || !received || !secret) return false;\n\n const unixSeconds = Number(timestamp);\n if (!Number.isFinite(unixSeconds)) return false;\n\n const ageSec = Math.abs(Date.now() / 1000 - unixSeconds);\n if (ageSec > toleranceSec) {\n throw new Error(\"webhook timestamp too old\");\n }\n\n const rawBody = bodyBuffer(body);\n const signed = Buffer.concat([Buffer.from(`${timestamp}.`), rawBody]);\n const expected = createHmac(\"sha256\", secret).update(signed).digest(\"hex\");\n\n try {\n return timingSafeEqual(\n Buffer.from(expected, \"utf8\"),\n Buffer.from(received, \"utf8\"),\n );\n } catch {\n return false;\n }\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class Webhooks {\n static verifySignature = verifySignature;\n\n constructor(private readonly http: HttpClient) {}\n\n async list(params: WebhookListParams = {}): Promise<WebhookData[]> {\n const query = stripUndefined({ ...params }) as Record<\n string,\n string | number | boolean | undefined\n >;\n const data = await this.http.get<unknown>(\"/webhooks\", query);\n return listItems<WebhookData>(data);\n }\n\n async get(webhookId: string): Promise<WebhookData> {\n const data = await this.http.get<unknown>(`/webhooks/${webhookId}`);\n return unwrap<WebhookData>(data);\n }\n\n async create(params: WebhookCreateParams): Promise<WebhookData> {\n const { idempotencyKey: ikey, ...rest } = params;\n const body = stripUndefined(rest as Record<string, unknown>);\n const data = await this.http.request<unknown>(\"/webhooks\", {\n method: \"POST\",\n body,\n headers: { \"Idempotency-Key\": idempotencyKey(ikey) },\n });\n return unwrap<WebhookData>(data);\n }\n\n async update(\n webhookId: string,\n params: WebhookUpdateParams,\n ): Promise<WebhookData> {\n const body = stripUndefined(params as Record<string, unknown>);\n const data = await this.http.patch<unknown>(`/webhooks/${webhookId}`, body);\n return unwrap<WebhookData>(data);\n }\n\n async delete(webhookId: string): Promise<void> {\n await this.http.delete<unknown>(`/webhooks/${webhookId}`);\n }\n\n async test(\n webhookId: string,\n opts: { idempotencyKey?: string } = {},\n ): Promise<Record<string, unknown>> {\n const data = await this.http.request<unknown>(\n `/webhooks/${webhookId}/test`,\n {\n method: \"POST\",\n headers: { \"Idempotency-Key\": idempotencyKey(opts.idempotencyKey) },\n },\n );\n return unwrap<Record<string, unknown>>(data);\n }\n\n async deliveries(webhookId: string): Promise<WebhookDeliveryData[]> {\n const data = await this.http.get<unknown>(\n `/webhooks/${webhookId}/deliveries`,\n );\n return listItems<WebhookDeliveryData>(data, [\n \"data\",\n \"deliveries\",\n \"items\",\n ]);\n }\n}\n","/**\n * Workspace Invites — email invite flow for workspace access.\n *\n * Sending an invite to an email that already belongs to a tenant member\n * short-circuits to directly adding that user (returns `type: \"added\"`).\n * Accepting a workspace invite for an unknown email auto-creates both a\n * `tenant_members` and a `workspace_members` row atomically.\n *\n * Public endpoints (no auth):\n * GET /workspace-invites/:token\n *\n * Authenticated endpoints:\n * POST /workspaces/:id/invites\n * GET /workspaces/:id/invites\n * DELETE /workspaces/:id/invites/:invite_id\n * POST /workspace-invites/:token/accept\n */\n\nimport type { HttpClient } from \"../http.js\";\nimport type {\n WorkspaceMemberRecord,\n WorkspaceRole,\n} from \"./workspace-members.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\nexport interface WorkspaceInvite {\n id: string;\n workspace_id: string;\n tenant_id: string;\n email: string;\n role: WorkspaceRole;\n invited_by: string | null;\n expires_at: string;\n accepted_at: string | null;\n inserted_at: string;\n}\n\nexport interface WorkspaceInvitePreview {\n workspace_name: string;\n tenant_name: string;\n role: WorkspaceRole;\n email: string;\n expires_at: string;\n expired: boolean;\n revoked: boolean;\n accepted: boolean;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface CreateWorkspaceInviteParams {\n email: string;\n role?: WorkspaceRole;\n}\n\n// ── Response shapes ───────────────────────────────────────────────────────────\n\n/** Returned when the email was unknown — an invite was created. */\nexport interface WorkspaceInviteCreatedResponse {\n data: WorkspaceInvite;\n type: \"invited\";\n}\n\n/** Returned when the email already had a tenant_members row — added directly. */\nexport interface WorkspaceMemberAddedResponse {\n data: WorkspaceMemberRecord;\n type: \"added\";\n}\n\nexport type CreateWorkspaceInviteResponse =\n | WorkspaceInviteCreatedResponse\n | WorkspaceMemberAddedResponse;\n\nexport interface WorkspaceInviteListResponse {\n data: WorkspaceInvite[];\n total: number;\n}\n\nexport interface WorkspaceInviteRevokeResponse {\n invite_id: string;\n revoked: boolean;\n}\n\nexport interface WorkspaceInvitePreviewResponse {\n data: WorkspaceInvitePreview;\n}\n\nexport interface AcceptWorkspaceInviteResponse {\n accepted: boolean;\n workspace_id: string;\n tenant_id: string;\n role: WorkspaceRole;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class WorkspaceInvites {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a workspace invite or add a member directly.\n *\n * If `email` already maps to a tenant member the user is added directly and\n * `type === \"added\"` is returned with a `WorkspaceMemberRecord`. Otherwise\n * an invite row is created and `type === \"invited\"` is returned.\n *\n * `POST /workspaces/:id/invites`\n */\n async create(\n workspaceId: string,\n params: CreateWorkspaceInviteParams,\n ): Promise<CreateWorkspaceInviteResponse> {\n return this.http.post<CreateWorkspaceInviteResponse>(\n `/workspaces/${workspaceId}/invites`,\n params,\n );\n }\n\n /**\n * List all pending (non-expired, non-accepted, non-revoked) workspace invites.\n *\n * `GET /workspaces/:id/invites`\n */\n async list(workspaceId: string): Promise<WorkspaceInvite[]> {\n const res = await this.http.get<WorkspaceInviteListResponse>(\n `/workspaces/${workspaceId}/invites`,\n );\n return res.data ?? [];\n }\n\n /**\n * Revoke a pending workspace invite.\n *\n * Already-revoked invites are idempotent (returns `revoked: true`). An invite\n * that was legitimately accepted throws `409 ALREADY_ACCEPTED`.\n *\n * `DELETE /workspaces/:id/invites/:invite_id`\n */\n async revoke(\n workspaceId: string,\n inviteId: string,\n ): Promise<WorkspaceInviteRevokeResponse> {\n return this.http.delete<WorkspaceInviteRevokeResponse>(\n `/workspaces/${workspaceId}/invites/${inviteId}`,\n );\n }\n\n /**\n * Preview a workspace invite by token (no auth required).\n *\n * Use this to render the invite landing page before prompting the user to\n * log in or sign up. Returns `null` when the token is unknown or revoked.\n *\n * `GET /workspace-invites/:token`\n */\n async preview(token: string): Promise<WorkspaceInvitePreview | null> {\n try {\n const res = await this.http.get<WorkspaceInvitePreviewResponse>(\n `/workspace-invites/${token}`,\n );\n return res.data ?? null;\n } catch {\n return null;\n }\n }\n\n /**\n * Accept a workspace invite on behalf of the authenticated user.\n *\n * The caller's JWT email must match the invite email (case-insensitive).\n *\n * Error codes:\n * - `INVALID_TOKEN` (404) — token not found.\n * - `EXPIRED` (410) — invite TTL elapsed.\n * - `REVOKED` (409) — invite was revoked.\n * - `ALREADY_ACCEPTED` (409) — already used.\n * - `EMAIL_MISMATCH` (422) — JWT email differs from invite email.\n *\n * `POST /workspace-invites/:token/accept`\n */\n async accept(token: string): Promise<AcceptWorkspaceInviteResponse> {\n return this.http.post<AcceptWorkspaceInviteResponse>(\n `/workspace-invites/${token}/accept`,\n {},\n );\n }\n}\n","/**\n * Workspace Members — per-workspace user roster.\n *\n * Endpoints:\n * GET /workspaces/:id/members\n * POST /workspaces/:id/members\n * PATCH /workspaces/:id/members/:user_id\n * DELETE /workspaces/:id/members/:user_id\n */\n\nimport type { HttpClient } from \"../http.js\";\n\n// ── Resource shapes ──────────────────────────────────────────────────────────\n\n/** Role a user can hold within a workspace. */\nexport type WorkspaceRole = \"owner\" | \"admin\" | \"member\" | \"viewer\";\n\n/**\n * Workspace member as returned by `list` — includes denormalised user fields\n * for display.\n */\nexport interface WorkspaceMember {\n user_id: string;\n email: string | null;\n name: string | null;\n avatar_url: string | null;\n role: WorkspaceRole;\n joined_at: string | null;\n added_by: string | null;\n}\n\n/** Raw workspace_members row returned after add/update operations. */\nexport interface WorkspaceMemberRecord {\n user_id: string;\n workspace_id: string;\n role: WorkspaceRole;\n joined_at: string | null;\n added_by: string | null;\n}\n\n// ── Request payloads ─────────────────────────────────────────────────────────\n\nexport interface AddWorkspaceMemberParams {\n /** UUID of the tenant user to add. Must already be an org member. */\n user_id: string;\n /** Role to assign; defaults to `\"member\"`. */\n role?: WorkspaceRole;\n}\n\nexport interface UpdateWorkspaceMemberRoleParams {\n role: WorkspaceRole;\n}\n\n// ── Response envelopes ───────────────────────────────────────────────────────\n\nexport interface WorkspaceMemberListResponse {\n data: WorkspaceMember[];\n}\n\nexport interface WorkspaceMemberRecordResponse {\n data: WorkspaceMemberRecord;\n}\n\nexport interface WorkspaceMemberDeleteResponse {\n deleted: boolean;\n}\n\n// ── Main resource ─────────────────────────────────────────────────────────────\n\nexport class WorkspaceMembers {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List all members of a workspace.\n *\n * `GET /workspaces/:id/members`\n */\n async list(workspaceId: string): Promise<WorkspaceMember[]> {\n const res = await this.http.get<WorkspaceMemberListResponse>(\n `/workspaces/${workspaceId}/members`,\n );\n return res.data ?? (res as unknown as WorkspaceMember[]);\n }\n\n /**\n * Add an existing tenant user to a workspace.\n *\n * The `user_id` must already hold a `tenant_members` row for the parent org.\n * Use {@link WorkspaceInvites.create} to invite someone who is not yet an org\n * member.\n *\n * `POST /workspaces/:id/members`\n *\n * @throws `MiosaError` with code `NOT_TENANT_MEMBER` if the user is not an\n * org member.\n */\n async add(\n workspaceId: string,\n params: AddWorkspaceMemberParams,\n ): Promise<WorkspaceMemberRecord> {\n const res = await this.http.post<WorkspaceMemberRecordResponse>(\n `/workspaces/${workspaceId}/members`,\n params,\n );\n return res.data ?? (res as unknown as WorkspaceMemberRecord);\n }\n\n /**\n * Change a workspace member's role.\n *\n * `PATCH /workspaces/:id/members/:user_id`\n */\n async updateRole(\n workspaceId: string,\n userId: string,\n params: UpdateWorkspaceMemberRoleParams,\n ): Promise<WorkspaceMemberRecord> {\n const res = await this.http.patch<WorkspaceMemberRecordResponse>(\n `/workspaces/${workspaceId}/members/${userId}`,\n params,\n );\n return res.data ?? (res as unknown as WorkspaceMemberRecord);\n }\n\n /**\n * Remove a user from a workspace.\n *\n * The last `owner` of a workspace cannot be removed. Promote another member\n * to `owner` first using {@link updateRole}.\n *\n * `DELETE /workspaces/:id/members/:user_id`\n *\n * @throws `MiosaError` with code `LAST_OWNER` if the target is the sole owner.\n */\n async remove(\n workspaceId: string,\n userId: string,\n ): Promise<WorkspaceMemberDeleteResponse> {\n return this.http.delete<WorkspaceMemberDeleteResponse>(\n `/workspaces/${workspaceId}/members/${userId}`,\n );\n }\n}\n","import { HttpClient } from \"./http.js\";\nimport { Admin } from \"./resources/admin.js\";\nimport { RunGroups } from \"./resources/run-groups.js\";\nimport { AgentRuntimeProfiles } from \"./resources/agent-runtime-profiles.js\";\nimport { Runs } from \"./resources/runs.js\";\nimport { Analytics } from \"./resources/analytics.js\";\nimport { ApiKeys } from \"./resources/api-keys.js\";\nimport { AuditLog } from \"./resources/audit-log.js\";\nimport { Benchmarks } from \"./resources/benchmarks.js\";\nimport { BuilderSessions } from \"./resources/builder-sessions.js\";\nimport { Channels } from \"./resources/channels.js\";\nimport { Cloud } from \"./resources/cloud.js\";\nimport { CommandCenter } from \"./resources/command-center.js\";\nimport { Community } from \"./resources/community.js\";\nimport { Completions } from \"./resources/completions.js\";\nimport { Computers } from \"./resources/computers.js\";\nimport { Connectors } from \"./resources/connectors.js\";\nimport { Credits } from \"./resources/credits.js\";\nimport { CronJobs } from \"./resources/cron-jobs.js\";\nimport { Dashboard } from \"./resources/dashboard.js\";\nimport { Databases } from \"./resources/databases.js\";\nimport { Deployments } from \"./resources/deployments.js\";\nimport { Devices } from \"./resources/devices.js\";\nimport { DockerDeploy } from \"./resources/docker-deploy.js\";\nimport { EgressAudit } from \"./resources/egressAudit.js\";\nimport { EgressNetwork } from \"./resources/egressNetwork.js\";\nimport { EgressSecrets } from \"./resources/egressSecrets.js\";\nimport { Email } from \"./resources/email.js\";\nimport { Embeddings } from \"./resources/embeddings.js\";\nimport { ExternalKeys } from \"./resources/external-keys.js\";\nimport { FlatCustomDomains } from \"./resources/flat-custom-domains.js\";\nimport { Functions } from \"./resources/functions.js\";\nimport { HealthChecks } from \"./resources/health-checks.js\";\nimport { Integrations } from \"./resources/integrations.js\";\nimport { Mcp } from \"./resources/mcp.js\";\nimport { Models } from \"./resources/models.js\";\nimport { OpenComputers } from \"./resources/open-computers/index.js\";\nimport { ProjectAuth } from \"./resources/project-auth.js\";\nimport { ProjectIntegrations } from \"./resources/project-integrations.js\";\nimport { ProviderDefaults } from \"./resources/provider-defaults.js\";\nimport { Regions } from \"./resources/regions.js\";\nimport { RuntimeEnv } from \"./resources/runtime-env.js\";\nimport { RuntimeCapabilitiesResource } from \"./resources/runtime-capabilities.js\";\nimport { Sandboxes } from \"./resources/sandboxes.js\";\nimport { SandboxTemplates } from \"./resources/sandbox-templates.js\";\nimport { Settings } from \"./resources/settings.js\";\nimport { SnapshotsStandalone } from \"./resources/snapshots-standalone.js\";\nimport { Storage } from \"./resources/storage.js\";\nimport { OrgInvites } from \"./resources/org-invites.js\";\nimport { Tenant } from \"./resources/tenant.js\";\nimport { Templates } from \"./resources/templates.js\";\nimport { Usage } from \"./resources/usage.js\";\nimport { Volumes } from \"./resources/volumes.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport { WorkspaceInvites } from \"./resources/workspace-invites.js\";\nimport { WorkspaceMembers } from \"./resources/workspace-members.js\";\nimport type { MiosaClientConfig } from \"./types.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.miosa.ai/api/v1\";\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * The top-level MIOSA client.\n *\n * @example\n * ```ts\n * import { Miosa } from '@miosa/sdk';\n *\n * const miosa = new Miosa({ apiKey: 'msk_u_...' });\n *\n * const computer = await miosa.computers.create({ name: 'my-agent' });\n * await computer.start();\n * ```\n */\nexport class Miosa {\n /** Per-workspace user roster — list, add, update role, remove. */\n readonly workspaceMembers: WorkspaceMembers;\n\n /**\n * Workspace invite flow — create invite, list, revoke, preview, accept.\n * Sending to an email already in the org adds the user directly.\n */\n readonly workspaceInvites: WorkspaceInvites;\n\n /**\n * Org invite flow — create invite, list, revoke, preview, accept.\n * Requires admin/owner role for write operations.\n */\n readonly orgInvites: OrgInvites;\n\n /** Current tenant plan, limits, and live usage counters. */\n readonly tenant: Tenant;\n\n /** Datacenter regions, compute sizes, pricing, community templates. */\n readonly regions: Regions;\n\n /** Tenant settings — workspace config, branding, BYOK provider keys. */\n readonly settings: Settings;\n\n /** Aggregated platform dashboard and health overview. */\n readonly dashboard: Dashboard;\n\n /** Admin-scoped analytics overview and timeseries metrics. */\n readonly analytics: Analytics;\n\n /** Admin-scoped audit log event stream. */\n readonly auditLog: AuditLog;\n\n /** Current-period usage summary, sessions, and report queries. */\n readonly usage: Usage;\n\n /** Notification channels — Slack, Discord, email, etc. */\n readonly channels: Channels;\n\n /** Cloud accounts / BYOC / cloudburst control-plane state. */\n readonly cloud: Cloud;\n\n /** OAuth integrations — GitHub, Slack, Linear, Discord. */\n readonly integrations: Integrations;\n\n /** Per-project integrations (Stripe, Resend, Twilio, etc.). */\n readonly projectIntegrations: ProjectIntegrations;\n\n /** Built-in auth for generated apps inside sandboxes/deployments. */\n readonly projectAuth: ProjectAuth;\n\n /** BYOK encrypted per-user provider keys. */\n readonly externalKeys: ExternalKeys;\n\n /** Model Context Protocol — JSON-RPC dispatch + streaming channel. */\n readonly mcp: Mcp;\n\n /** Runs - instruction dispatch into sandbox and computer targets. */\n readonly runs: Runs;\n\n /** Run groups - durable multi-run orchestration groups. */\n readonly runGroups: RunGroups;\n\n /** Agent runtime profiles — tenant/workspace defaults for sandbox/computer agents. */\n readonly agentRuntimeProfiles: AgentRuntimeProfiles;\n\n /** MIOSA Connect — provider connectors and runtime tokens. */\n readonly connectors: Connectors;\n\n /** Inherited runtime env — tenant/workspace/project defaults for agent runtimes. */\n readonly runtimeEnv: RuntimeEnv;\n\n /** Runtime capabilities — live backend feature and contract discovery. */\n readonly runtimeCapabilities: RuntimeCapabilitiesResource;\n\n /** Unified devices — sandbox workers and desktop computers behind one API. */\n readonly devices: Devices;\n\n /** Computer management — create, list, get, delete. */\n readonly computers: Computers;\n\n /** Sandboxes — native code-execution environments under `/sandboxes`. */\n readonly sandboxes: Sandboxes;\n\n /**\n * Deployments — publish from a sandbox to a stable production URL.\n * Versions, releases, rollback, custom domains.\n */\n readonly deployments: Deployments;\n\n /** App Engine appliance hosts — one always-on workspace host, many apps. */\n readonly dockerDeploy: DockerDeploy;\n\n /** Credit balance and usage. */\n readonly credits: Credits;\n\n /** Admin surface (`/api/v1/admin/*`) — requires an admin credential. */\n readonly admin: Admin;\n\n /**\n * OpenComputers — BYOC host management: register your own machines and use\n * them like cloud computers (jobs, files, tunnels, AI agents, clusters).\n */\n readonly openComputers: OpenComputers;\n\n /** Managed Postgres databases — lifecycle, credentials, logs. */\n readonly databases: Databases;\n\n /** Managed object storage — buckets, objects, presigned URLs. */\n readonly storage: Storage;\n\n /** Persistent block storage volumes. */\n readonly volumes: Volumes;\n\n /** Tenant-scoped custom domains across all resources. */\n readonly customDomains: FlatCustomDomains;\n\n /** Serverless edge functions — CRUD and invoke. */\n readonly functions: Functions;\n\n /** Scheduled cron jobs — CRUD, pause/resume, execution history. */\n readonly cronJobs: CronJobs;\n\n /** Uptime health checks. */\n readonly healthChecks: HealthChecks;\n\n /** Outgoing tenant webhooks — CRUD, test, delivery history. */\n readonly webhooks: Webhooks;\n\n /** Sandbox templates — CRUD, build-spec schema, builds. */\n readonly sandboxTemplates: SandboxTemplates;\n\n /** Product-aware templates — catalog/readiness for sandbox, computer, appliance. */\n readonly templates: Templates;\n\n /** API key management — list, create, delete. */\n readonly apiKeys: ApiKeys;\n\n // ── P3 / P4 resources ──────────────────────────────────────────────────────\n\n /** Available LLM models via the intelligence gateway. */\n readonly models: Models;\n\n /** OpenAI-compatible text + chat completions (supports SSE streaming). */\n readonly completions: Completions;\n\n /** OpenAI-compatible embedding vectors. */\n readonly embeddings: Embeddings;\n\n /** Admin: fleet-wide + per-tenant LLM provider routing defaults. */\n readonly providerDefaults: ProviderDefaults;\n\n /** Admin: trigger + inspect platform benchmark runs. */\n readonly benchmarks: Benchmarks;\n\n /** Read-only views of the Optimal AI agent fleet. */\n readonly commandCenter: CommandCenter;\n\n /** Community template + agent catalog. */\n readonly community: Community;\n\n /** Admin email campaigns, templates, and inbox. */\n readonly email: Email;\n\n /** Builder UI session metadata. */\n readonly builderSessions: BuilderSessions;\n\n /** Admin: fleet-wide snapshot index. */\n readonly snapshotsStandalone: SnapshotsStandalone;\n\n // ── Egress (security) namespaces ───────────────────────────────────────────\n\n /** Encrypted secret + OAuth credential vault (`/egress/secrets`). */\n readonly secrets: EgressSecrets;\n\n /** Egress allowlist + policies — host-level firewall (`/egress/policies`). */\n readonly network: EgressNetwork;\n\n /** Egress audit log — every outbound request, paginated query + tail. */\n readonly audit: EgressAudit;\n\n private readonly http: HttpClient;\n\n constructor(config: MiosaClientConfig) {\n if (!config.apiKey) {\n throw new Error(\n 'Miosa: apiKey is required. Pass { apiKey: \"msk_u_...\" } or set MIOSA_API_KEY.',\n );\n }\n\n if (!config.apiKey.startsWith(\"msk_\")) {\n // Soft warning — allow non-standard keys in tests / self-hosted\n console.warn(\n '[miosa] Warning: API key does not start with \"msk_\". Double-check your key.',\n );\n }\n\n this.http = new HttpClient({\n baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,\n apiKey: config.apiKey,\n timeout: config.timeout ?? DEFAULT_TIMEOUT,\n maxRetries: config.maxRetries ?? DEFAULT_MAX_RETRIES,\n });\n\n this.workspaceMembers = new WorkspaceMembers(this.http);\n this.workspaceInvites = new WorkspaceInvites(this.http);\n this.orgInvites = new OrgInvites(this.http);\n this.tenant = new Tenant(this.http);\n this.regions = new Regions(this.http);\n this.settings = new Settings(this.http);\n this.dashboard = new Dashboard(this.http);\n this.analytics = new Analytics(this.http);\n this.auditLog = new AuditLog(this.http);\n this.usage = new Usage(this.http);\n this.channels = new Channels(this.http);\n this.cloud = new Cloud(this.http);\n this.integrations = new Integrations(this.http);\n this.projectIntegrations = new ProjectIntegrations(this.http);\n this.projectAuth = new ProjectAuth(this.http);\n this.externalKeys = new ExternalKeys(this.http);\n this.mcp = new Mcp(this.http);\n this.runs = new Runs(this.http);\n this.runGroups = new RunGroups(this.http);\n this.agentRuntimeProfiles = new AgentRuntimeProfiles(this.http);\n this.connectors = new Connectors(this.http);\n this.runtimeEnv = new RuntimeEnv(this.http);\n this.runtimeCapabilities = new RuntimeCapabilitiesResource(this.http);\n this.devices = new Devices(this.http);\n this.computers = new Computers(this.http);\n this.sandboxes = new Sandboxes(this.http);\n this.deployments = new Deployments(this.http);\n this.dockerDeploy = new DockerDeploy(this.http);\n this.credits = new Credits(this.http);\n this.admin = new Admin(this.http);\n this.openComputers = new OpenComputers(this.http);\n this.databases = new Databases(this.http);\n this.storage = new Storage(this.http);\n this.volumes = new Volumes(this.http);\n this.customDomains = new FlatCustomDomains(this.http);\n this.functions = new Functions(this.http);\n this.cronJobs = new CronJobs(this.http);\n this.healthChecks = new HealthChecks(this.http);\n this.webhooks = new Webhooks(this.http);\n this.sandboxTemplates = new SandboxTemplates(this.http);\n this.templates = new Templates(this.http);\n this.apiKeys = new ApiKeys(this.http);\n this.models = new Models(this.http);\n this.completions = new Completions(this.http);\n this.embeddings = new Embeddings(this.http);\n this.providerDefaults = new ProviderDefaults(this.http);\n this.benchmarks = new Benchmarks(this.http);\n this.commandCenter = new CommandCenter(this.http);\n this.community = new Community(this.http);\n this.email = new Email(this.http);\n this.builderSessions = new BuilderSessions(this.http);\n this.snapshotsStandalone = new SnapshotsStandalone(this.http);\n // Egress (security) namespaces\n this.secrets = new EgressSecrets(this.http);\n this.network = new EgressNetwork(this.http);\n this.audit = new EgressAudit(this.http);\n }\n}\n","import type {\n RunCreateParams,\n RunExpectedOutputs,\n RunTargetKind,\n} from \"./resources/runs.js\";\n\nexport type AgentBuildKind =\n | \"landing_page\"\n | \"website\"\n | \"lead_magnet\"\n | \"webinar\"\n | \"slides_deck\"\n | \"email_sequence\"\n | \"social_content\"\n | \"ad_creative\"\n | \"booking_page\"\n | \"brand_identity\"\n | \"offer\"\n | \"program\"\n | \"podcast\"\n | \"sales_script\"\n | \"campaign\"\n | \"challenge\"\n | \"character\"\n | \"custom\";\n\nexport interface AgentBuildFileSpec {\n kind: string;\n path: string;\n mime_type?: string;\n name?: string;\n downloadable?: boolean;\n previewable?: boolean;\n required?: boolean;\n}\n\nexport interface AgentBuildInputRef {\n kind?: string;\n title?: string;\n ref?: string;\n file_ref?: string;\n drive_asset_id?: string;\n filename?: string;\n content_type?: string;\n size_bytes?: number;\n public_url?: string;\n text?: string;\n path?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface AgentBuildKindSpec {\n kind: AgentBuildKind;\n label: string;\n deliverableType: string;\n runtimeTemplate: Record<string, unknown>;\n requestedOutputs: string[];\n plannerDocumentKinds: string[];\n files: AgentBuildFileSpec[];\n designResearchRequired: boolean;\n previewPort?: number;\n}\n\nexport interface AgentBuildPlannerDocument {\n kind: string;\n title: string;\n content_markdown?: string;\n contentMarkdown?: string;\n path?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AgentBuildExecutionPacket {\n version: string;\n run_type: AgentBuildKind;\n build_kind: AgentBuildKind;\n deliverable_type: string;\n title: string;\n goal: string;\n source_refs: unknown[];\n input_refs: AgentBuildInputRef[];\n context_markdown: string;\n planner_documents: AgentBuildPlannerDocument[];\n requested_outputs: string[];\n quality_rules: string[];\n runtime_profile_id?: string;\n expected_outputs: RunExpectedOutputs;\n runtime_instructions: Record<string, unknown>;\n metadata: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface CreateAgentBuildPacketParams {\n runType?: string;\n buildKind?: string;\n deliverableType?: string;\n title: string;\n goal: string;\n contextMarkdown?: string;\n plannerDocuments?: AgentBuildPlannerDocument[];\n requestedOutputs?: string[];\n qualityRules?: string[];\n sourceRefs?: unknown[];\n inputRefs?: AgentBuildInputRef[];\n runtimeProfileId?: string;\n runtimeTemplate?: Record<string, unknown>;\n expectedOutputs?: RunExpectedOutputs;\n files?: AgentBuildFileSpec[];\n outputRoot?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CreateBuildRunParams extends CreateAgentBuildPacketParams {\n targetKind?: RunTargetKind;\n targetId?: string;\n sandboxId?: string;\n computerId?: string;\n runner?: string;\n provider?: string;\n model?: string;\n instruction?: string;\n cwd?: string;\n timeout?: number;\n wait?: boolean;\n env?: Record<string, string>;\n agentRuntimeProfileId?: string;\n externalWorkspaceId?: string;\n externalUserId?: string;\n externalProjectId?: string;\n approvalPolicy?: RunCreateParams[\"approvalPolicy\"];\n capabilityRequirements?: string[];\n}\n\nexport const DEFAULT_AGENT_BUILD_PACKET_VERSION = \"2026-06-19\";\nexport const DEFAULT_AGENT_BUILD_OUTPUT_ROOT = \"/workspace/output\";\nexport const DEFAULT_AGENT_BUILD_INPUT_ROOT = \"/workspace/inputs\";\n\nconst NEXTJS_RUNTIME_TEMPLATE = {\n kind: \"nextjs_app\",\n template_id: \"nextjs\",\n workspace_root: \"/workspace\",\n app_dir: \"/workspace/app\",\n output_dir: DEFAULT_AGENT_BUILD_OUTPUT_ROOT,\n expected_preview_port: 3000,\n start_command: \"npm run dev -- --hostname 0.0.0.0 --port 3000\",\n build_command: \"npm run build\",\n} as const;\n\nfunction fileBundle(kind: string): Record<string, unknown> {\n return {\n kind,\n workspace_root: \"/workspace\",\n output_dir: DEFAULT_AGENT_BUILD_OUTPUT_ROOT,\n };\n}\n\nconst COMMON_PLANNER_DOCUMENT_KINDS = [\n \"input_bundle\",\n \"client_grounding\",\n \"brand_identity\",\n \"strategy_context\",\n \"quality_rules\",\n];\n\nconst BUILD_KIND_ALIASES: Record<string, AgentBuildKind> = {\n ad: \"ad_creative\",\n ads: \"ad_creative\",\n adcreative: \"ad_creative\",\n ad_creative: \"ad_creative\",\n booking: \"booking_page\",\n booking_form: \"booking_page\",\n booking_page: \"booking_page\",\n brand: \"brand_identity\",\n brand_character: \"character\",\n brand_identity: \"brand_identity\",\n campaign: \"campaign\",\n campaign_plan: \"campaign\",\n carousel: \"social_content\",\n challenge: \"challenge\",\n character: \"character\",\n character_pack: \"character\",\n content: \"social_content\",\n content_batch: \"social_content\",\n course: \"program\",\n email: \"email_sequence\",\n email_sequence: \"email_sequence\",\n email_sms_sequence: \"email_sequence\",\n funnel: \"landing_page\",\n landing: \"landing_page\",\n landing_page: \"landing_page\",\n lead_magnet: \"lead_magnet\",\n leadmagnet: \"lead_magnet\",\n offer: \"offer\",\n offer_stack: \"offer\",\n online_course: \"program\",\n page: \"landing_page\",\n podcast: \"podcast\",\n podcast_audio: \"podcast\",\n program: \"program\",\n sales_page: \"landing_page\",\n sales_script: \"sales_script\",\n sales_script_builder: \"sales_script\",\n salesscript: \"sales_script\",\n site: \"website\",\n slides: \"slides_deck\",\n slides_deck: \"slides_deck\",\n social: \"social_content\",\n social_content: \"social_content\",\n social_media: \"social_content\",\n social_media_post: \"social_content\",\n text_card: \"social_content\",\n webinar: \"webinar\",\n website: \"website\",\n};\n\nfunction spec(\n kind: AgentBuildKind,\n label: string,\n deliverableType: string,\n runtimeTemplate: Record<string, unknown>,\n files: AgentBuildFileSpec[],\n options: Partial<\n Pick<\n AgentBuildKindSpec,\n \"requestedOutputs\" | \"plannerDocumentKinds\" | \"designResearchRequired\" | \"previewPort\"\n >\n > = {},\n): AgentBuildKindSpec {\n const resolved: AgentBuildKindSpec = {\n kind,\n label,\n deliverableType,\n runtimeTemplate,\n requestedOutputs: options.requestedOutputs ?? [\"requested deliverables\", \"manifest\"],\n plannerDocumentKinds: options.plannerDocumentKinds ?? COMMON_PLANNER_DOCUMENT_KINDS,\n files,\n designResearchRequired: options.designResearchRequired ?? false,\n };\n if (options.previewPort !== undefined) resolved.previewPort = options.previewPort;\n return resolved;\n}\n\nexport const AGENT_BUILD_KIND_SPECS: Record<AgentBuildKind, AgentBuildKindSpec> = {\n landing_page: spec(\n \"landing_page\",\n \"Landing page\",\n \"landing_page\",\n NEXTJS_RUNTIME_TEMPLATE,\n [\n { kind: \"html\", path: \"landing-page.html\", mime_type: \"text/html\", name: \"Landing page\", previewable: true },\n { kind: \"source\", path: \"source.zip\", mime_type: \"application/zip\", name: \"Source files\" },\n ],\n { requestedOutputs: [\"Next.js landing page\", \"preview URL\", \"source files\"], designResearchRequired: true, previewPort: 3000 },\n ),\n website: spec(\"website\", \"Website\", \"website\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"html\", path: \"website.html\", mime_type: \"text/html\", name: \"Website\", previewable: true },\n { kind: \"source\", path: \"source.zip\", mime_type: \"application/zip\", name: \"Source files\" },\n ], { requestedOutputs: [\"Next.js website\", \"preview URL\", \"source files\"], designResearchRequired: true, previewPort: 3000 }),\n lead_magnet: spec(\"lead_magnet\", \"Lead magnet\", \"lead_magnet\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"pdf\", path: \"lead-magnet.pdf\", mime_type: \"application/pdf\", name: \"Lead magnet PDF\", previewable: true },\n { kind: \"html\", path: \"opt-in-page.html\", mime_type: \"text/html\", name: \"Opt-in page\", previewable: true },\n ], { requestedOutputs: [\"PDF lead magnet\", \"opt-in page\", \"source files\"], designResearchRequired: true, previewPort: 3000 }),\n webinar: spec(\"webinar\", \"Webinar\", \"webinar\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"html\", path: \"webinar-page.html\", mime_type: \"text/html\", name: \"Webinar page\", previewable: true },\n { kind: \"markdown\", path: \"webinar-script.md\", mime_type: \"text/markdown\", name: \"Webinar script\" },\n ], { requestedOutputs: [\"webinar registration page\", \"script\", \"slides\"], designResearchRequired: true, previewPort: 3000 }),\n slides_deck: spec(\"slides_deck\", \"Slides deck\", \"slides_deck\", fileBundle(\"html_deck\"), [\n { kind: \"html\", path: \"deck.html\", mime_type: \"text/html\", name: \"Slide deck\", previewable: true },\n ], { designResearchRequired: true }),\n email_sequence: spec(\"email_sequence\", \"Email sequence\", \"email_sms_sequence\", fileBundle(\"email_bundle\"), [\n { kind: \"markdown\", path: \"email-sequence.md\", mime_type: \"text/markdown\", name: \"Email sequence\", previewable: true },\n ]),\n social_content: spec(\"social_content\", \"Social content\", \"social_media_post\", fileBundle(\"html_image_bundle\"), [\n { kind: \"html\", path: \"social-carousel.html\", mime_type: \"text/html\", name: \"Social carousel\", previewable: true },\n { kind: \"markdown\", path: \"captions.md\", mime_type: \"text/markdown\", name: \"Caption bank\" },\n ], { designResearchRequired: true }),\n ad_creative: spec(\"ad_creative\", \"Ad creative\", \"ad_creative\", fileBundle(\"html_image_bundle\"), [\n { kind: \"html\", path: \"ad-creative.html\", mime_type: \"text/html\", name: \"Ad creative previews\", previewable: true },\n ], { designResearchRequired: true }),\n booking_page: spec(\"booking_page\", \"Booking page\", \"booking_page\", NEXTJS_RUNTIME_TEMPLATE, [\n { kind: \"html\", path: \"booking-page.html\", mime_type: \"text/html\", name: \"Booking page\", previewable: true },\n ], { requestedOutputs: [\"booking page\", \"confirmation copy\", \"source files\"], designResearchRequired: true, previewPort: 3000 }),\n brand_identity: spec(\"brand_identity\", \"Brand identity\", \"brand_identity\", fileBundle(\"brand_bundle\"), [\n { kind: \"markdown\", path: \"brand-guide.md\", mime_type: \"text/markdown\", name: \"Brand guide\", previewable: true },\n ], { designResearchRequired: true }),\n offer: spec(\"offer\", \"Offer\", \"offer\", fileBundle(\"offer_bundle\"), [\n { kind: \"markdown\", path: \"offer-stack.md\", mime_type: \"text/markdown\", name: \"Offer stack\", previewable: true },\n ]),\n program: spec(\"program\", \"Program\", \"program_lms\", fileBundle(\"program_lms\"), [\n { kind: \"html\", path: \"program.html\", mime_type: \"text/html\", name: \"Program preview\", previewable: true },\n { kind: \"markdown\", path: \"program.md\", mime_type: \"text/markdown\", name: \"Program outline\" },\n ], { designResearchRequired: true }),\n podcast: spec(\"podcast\", \"Podcast\", \"podcast_audio\", fileBundle(\"podcast_audio\"), [\n { kind: \"html\", path: \"podcast.html\", mime_type: \"text/html\", name: \"Podcast preview\", previewable: true },\n { kind: \"markdown\", path: \"show-notes.md\", mime_type: \"text/markdown\", name: \"Show notes\" },\n ]),\n sales_script: spec(\"sales_script\", \"Sales script\", \"sales_script\", fileBundle(\"script_bundle\"), [\n { kind: \"markdown\", path: \"sales-script.md\", mime_type: \"text/markdown\", name: \"Sales script\", previewable: true },\n ]),\n campaign: spec(\"campaign\", \"Campaign\", \"campaign\", fileBundle(\"campaign_bundle\"), [\n { kind: \"markdown\", path: \"campaign-plan.md\", mime_type: \"text/markdown\", name: \"Campaign plan\", previewable: true },\n { kind: \"html\", path: \"campaign-assets.html\", mime_type: \"text/html\", name: \"Campaign assets\", previewable: true },\n ], { designResearchRequired: true }),\n challenge: spec(\"challenge\", \"Challenge\", \"challenge\", fileBundle(\"challenge_bundle\"), [\n { kind: \"markdown\", path: \"challenge-plan.md\", mime_type: \"text/markdown\", name: \"Challenge plan\", previewable: true },\n ]),\n character: spec(\"character\", \"Character pack\", \"brand_character\", fileBundle(\"character_bundle\"), [\n { kind: \"markdown\", path: \"character-pack.md\", mime_type: \"text/markdown\", name: \"Character pack\", previewable: true },\n ], { designResearchRequired: true }),\n custom: spec(\"custom\", \"Custom build\", \"file\", fileBundle(\"file_bundle\"), []),\n};\n\nfunction normalizeBuildKind(value: string | undefined): string {\n return (value ?? \"\")\n .trim()\n .toLowerCase()\n .replace(/[\\s-]+/g, \"_\")\n .replace(/[^a-z0-9_]/g, \"\");\n}\n\nexport function resolveAgentBuildKind(\n value: string | undefined,\n fallback: AgentBuildKind = \"custom\",\n): AgentBuildKind {\n const normalized = normalizeBuildKind(value);\n if (!normalized) return fallback;\n return BUILD_KIND_ALIASES[normalized] ?? fallback;\n}\n\nexport function getAgentBuildKindSpec(value: string | undefined): AgentBuildKindSpec {\n return AGENT_BUILD_KIND_SPECS[resolveAgentBuildKind(value)];\n}\n\nfunction normalizeFilePath(path: string, outputRoot: string): string {\n return path.startsWith(\"/\") ? path : `${outputRoot}/${path}`;\n}\n\nexport function createAgentBuildExpectedOutputs(\n buildKind: string | undefined,\n options: {\n deliverableType?: string;\n files?: AgentBuildFileSpec[];\n expectedOutputs?: RunExpectedOutputs;\n outputRoot?: string;\n } = {},\n): RunExpectedOutputs {\n if (options.expectedOutputs) return options.expectedOutputs;\n const spec = getAgentBuildKindSpec(buildKind);\n const outputRoot = options.outputRoot ?? DEFAULT_AGENT_BUILD_OUTPUT_ROOT;\n const files = [\n {\n path: `${outputRoot}/manifest.json`,\n kind: \"json\",\n mime_type: \"application/json\",\n name: \"Manifest\",\n downloadable: true,\n },\n ...(options.files ?? spec.files).map((file) => ({\n ...file,\n path: normalizeFilePath(file.path, outputRoot),\n downloadable: file.downloadable ?? true,\n })),\n ];\n const contract = withoutUndefined({\n write_files_under: outputRoot,\n manifest: `${outputRoot}/manifest.json`,\n planner_documents_under: \"/workspace/planner\",\n inputs_under: DEFAULT_AGENT_BUILD_INPUT_ROOT,\n deliverable_type: options.deliverableType ?? spec.deliverableType,\n required_files: [`${outputRoot}/manifest.json`],\n files: files,\n expected_outputs: {\n messages: true,\n files: files,\n previews: spec.previewPort !== undefined,\n },\n preview_port: spec.previewPort,\n include_downloads: true,\n });\n return contract as RunExpectedOutputs;\n}\n\nfunction normalizePlannerDocuments(\n documents: AgentBuildPlannerDocument[] | undefined,\n): AgentBuildPlannerDocument[] {\n return (documents ?? []).map((document) => ({\n ...document,\n content_markdown: document.content_markdown ?? document.contentMarkdown ?? \"\",\n }));\n}\n\nfunction withoutUndefined<T extends Record<string, unknown>>(input: T): T {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n ) as T;\n}\n\nexport function createAgentBuildExecutionPacket(\n params: CreateAgentBuildPacketParams,\n): AgentBuildExecutionPacket {\n const buildKind = resolveAgentBuildKind(params.buildKind ?? params.runType);\n const spec = AGENT_BUILD_KIND_SPECS[buildKind];\n const deliverableType = params.deliverableType ?? spec.deliverableType;\n const runtimeTemplate = params.runtimeTemplate ?? spec.runtimeTemplate;\n const outputOptions: {\n deliverableType?: string;\n files?: AgentBuildFileSpec[];\n expectedOutputs?: RunExpectedOutputs;\n outputRoot?: string;\n } = { deliverableType };\n if (params.files !== undefined) outputOptions.files = params.files;\n if (params.expectedOutputs !== undefined) {\n outputOptions.expectedOutputs = params.expectedOutputs;\n }\n if (params.outputRoot !== undefined) outputOptions.outputRoot = params.outputRoot;\n const expectedOutputs = createAgentBuildExpectedOutputs(buildKind, outputOptions);\n const inputRefs = params.inputRefs ?? [];\n\n const packet: AgentBuildExecutionPacket = {\n version: DEFAULT_AGENT_BUILD_PACKET_VERSION,\n run_type: buildKind,\n build_kind: buildKind,\n deliverable_type: deliverableType,\n title: params.title,\n goal: params.goal,\n source_refs: params.sourceRefs ?? [],\n input_refs: inputRefs,\n context_markdown: params.contextMarkdown ?? \"\",\n planner_documents: normalizePlannerDocuments(params.plannerDocuments),\n requested_outputs: params.requestedOutputs ?? spec.requestedOutputs,\n quality_rules: params.qualityRules ?? [],\n expected_outputs: expectedOutputs,\n runtime_instructions: {\n agent: \"claude\",\n template: runtimeTemplate,\n input_materialization: {\n directory: DEFAULT_AGENT_BUILD_INPUT_ROOT,\n manifest: `${DEFAULT_AGENT_BUILD_INPUT_ROOT}/inputs.json`,\n },\n design_research: {\n provider: \"refero\",\n required: spec.designResearchRequired,\n },\n },\n metadata: {\n ...(params.metadata ?? {}),\n build_kind: buildKind,\n deliverable_type: deliverableType,\n build_target: runtimeTemplate,\n runtime_template: runtimeTemplate,\n expected_outputs: expectedOutputs,\n input_refs: inputRefs,\n design_research_required: spec.designResearchRequired,\n planner_document_kinds: spec.plannerDocumentKinds,\n },\n };\n if (params.runtimeProfileId) packet.runtime_profile_id = params.runtimeProfileId;\n return packet;\n}\n\nexport function createAgentBuildPrompt(packet: AgentBuildExecutionPacket): string {\n return [\n `Build: ${packet.title}`,\n \"\",\n packet.goal,\n \"\",\n `Materialize input_refs under ${DEFAULT_AGENT_BUILD_INPUT_ROOT}.`,\n \"Use the execution packet, input bundle, planner documents, brand/context notes, and quality rules.\",\n `Write every deliverable under ${packet.expected_outputs.write_files_under}.`,\n `Write a JSON manifest to ${packet.expected_outputs.manifest}.`,\n \"Do not expose secrets. Do not publish externally unless the approval policy allows it.\",\n ].join(\"\\n\");\n}\n\nexport function createBuildRunParams(\n params: CreateBuildRunParams,\n): RunCreateParams {\n const runtimeProfileId = params.agentRuntimeProfileId ?? params.runtimeProfileId;\n const packetParams: CreateAgentBuildPacketParams = { ...params };\n if (runtimeProfileId !== undefined) packetParams.runtimeProfileId = runtimeProfileId;\n const packet = createAgentBuildExecutionPacket(packetParams);\n\n return withoutUndefined({\n instruction: params.instruction ?? createAgentBuildPrompt(packet),\n targetKind: params.targetKind ?? (params.computerId ? \"computer\" : \"sandbox\"),\n targetId: params.targetId,\n sandboxId: params.sandboxId,\n computerId: params.computerId,\n runner: params.runner ?? \"claude-code\",\n provider: params.provider,\n model: params.model,\n cwd: params.cwd ?? \"/workspace\",\n timeout: params.timeout ?? 1800,\n wait: params.wait ?? false,\n env: params.env,\n agentRuntimeProfileId: runtimeProfileId,\n externalWorkspaceId: params.externalWorkspaceId,\n externalUserId: params.externalUserId,\n externalProjectId: params.externalProjectId,\n executionPacket: packet,\n expectedOutputs: packet.expected_outputs,\n approvalPolicy: params.approvalPolicy ?? {\n publish: \"manual\",\n external_write: \"manual\",\n destructive_actions: \"forbidden\",\n },\n capabilityRequirements: params.capabilityRequirements ?? [\n \"filesystem\",\n \"shell\",\n \"files\",\n \"downloads\",\n ],\n metadata: {\n ...(params.metadata ?? {}),\n build_kind: packet.build_kind,\n deliverable_type: packet.deliverable_type,\n },\n } as Record<string, unknown>) as unknown as RunCreateParams;\n}\n","/**\n * AppAuth — end-user authentication client for apps deployed on MIOSA.\n *\n * Reads AUTH_URL and AUTH_JWT_SECRET from the process environment at\n * construction time. Both are injected automatically when a sandbox or\n * deployment boots.\n *\n * @example\n * ```ts\n * import { AppAuth } from '@miosa/sdk';\n *\n * const auth = new AppAuth({ resourceType: 'deployment', resourceId: 'dep_abc' });\n *\n * const session = await auth.signup('alice@example.com', 'hunter2');\n * console.log(session.userId, session.token);\n *\n * const verified = await auth.verifyToken(session.token);\n * console.log(verified.sub);\n * ```\n */\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\n/** Branded string types for domain safety. */\nexport type UserId = string & { readonly __brand: \"UserId\" };\nexport type AuthToken = string & { readonly __brand: \"AuthToken\" };\n\n/** Response returned by signup, login, verify, and me. */\nexport interface AppAuthSession {\n userId: UserId;\n token: AuthToken;\n expiresAt: string;\n}\n\n/** Decoded JWT payload returned by verifyToken. */\nexport interface AppAuthTokenPayload {\n sub: string;\n exp: number;\n iat: number;\n [key: string]: unknown;\n}\n\nexport type AppAuthResourceType = \"sandbox\" | \"deployment\";\n\nexport interface AppAuthConfig {\n /** Resource type — \"sandbox\" or \"deployment\". */\n resourceType: AppAuthResourceType;\n /** Resource ID (sandbox ID or deployment ID). */\n resourceId: string;\n /**\n * Base URL of the app-auth service. Defaults to the AUTH_URL environment\n * variable, which is injected at boot inside every MIOSA sandbox/deployment.\n */\n authUrl?: string;\n /**\n * HS256 secret for verifyToken(). Defaults to AUTH_JWT_SECRET from env.\n * Only needed if you call verifyToken() server-side.\n */\n jwtSecret?: string;\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nfunction unwrapSession(data: unknown): AppAuthSession {\n const d = (\n data && typeof data === \"object\" && \"data\" in (data as object)\n ? (data as Record<string, unknown>).data\n : data\n ) as Record<string, unknown>;\n\n const userId =\n (d.user_id as string | undefined) ?? (d.userId as string | undefined);\n const token =\n (d.token as string | undefined) ?? (d.access_token as string | undefined);\n const expiresAt =\n (d.expires_at as string | undefined) ??\n (d.expiresAt as string | undefined) ??\n \"\";\n\n if (!userId || !token) {\n throw new Error(\n `AppAuth: unexpected response shape — got: ${JSON.stringify(d)}`,\n );\n }\n\n return {\n userId: userId as UserId,\n token: token as AuthToken,\n expiresAt,\n };\n}\n\nfunction base64UrlDecode(s: string): Uint8Array {\n const padded = s.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const bin = atob(padded);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) {\n bytes[i] = bin.charCodeAt(i);\n }\n return bytes;\n}\n\n// ── AppAuth client ─────────────────────────────────────────────────────────────\n\nexport class AppAuth {\n private readonly baseUrl: string;\n private readonly resourceType: AppAuthResourceType;\n private readonly resourceId: string;\n private readonly jwtSecret: string | undefined;\n\n constructor(config: AppAuthConfig) {\n const authUrl =\n config.authUrl ??\n (typeof process !== \"undefined\" ? process.env[\"AUTH_URL\"] : undefined);\n if (!authUrl) {\n throw new Error(\n \"AppAuth: authUrl is required. Pass authUrl in config or set AUTH_URL env var.\",\n );\n }\n if (!config.resourceType || !config.resourceId) {\n throw new Error(\"AppAuth: resourceType and resourceId are required.\");\n }\n this.baseUrl = authUrl.replace(/\\/$/, \"\");\n this.resourceType = config.resourceType;\n this.resourceId = config.resourceId;\n this.jwtSecret =\n config.jwtSecret ??\n (typeof process !== \"undefined\"\n ? process.env[\"AUTH_JWT_SECRET\"]\n : undefined);\n }\n\n /** POST /app-auth/:resourceType/:resourceId/signup */\n async signup(email: string, password: string): Promise<AppAuthSession> {\n return unwrapSession(await this._post(\"signup\", { email, password }));\n }\n\n /** POST /app-auth/:resourceType/:resourceId/login */\n async login(email: string, password: string): Promise<AppAuthSession> {\n return unwrapSession(await this._post(\"login\", { email, password }));\n }\n\n /**\n * POST /app-auth/:resourceType/:resourceId/verify\n * Verifies an email confirmation or magic-link token issued by the backend.\n */\n async verify(token: string): Promise<AppAuthSession> {\n return unwrapSession(await this._post(\"verify\", { token }));\n }\n\n /** POST /app-auth/:resourceType/:resourceId/password-reset */\n async passwordReset(email: string): Promise<{ ok: boolean }> {\n const data = await this._post(\"password-reset\", { email });\n return { ok: true, ...(data as object) };\n }\n\n /**\n * POST /app-auth/:resourceType/:resourceId/logout\n * Invalidates the given bearer token server-side.\n */\n async logout(token: AuthToken): Promise<{ ok: boolean }> {\n const data = await this._post(\"logout\", { token });\n return { ok: true, ...(data as object) };\n }\n\n /**\n * GET /app-auth/:resourceType/:resourceId/me\n * Returns the session for the bearer token.\n */\n async me(token: AuthToken): Promise<AppAuthSession> {\n const url = `${this.baseUrl}/app-auth/${this.resourceType}/${this.resourceId}/me`;\n const resp = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n });\n if (!resp.ok) {\n const body = await resp.text();\n throw new Error(`AppAuth me failed (${resp.status}): ${body}`);\n }\n return unwrapSession(await resp.json());\n }\n\n /**\n * Verifies a JWT token locally using HS256 + AUTH_JWT_SECRET.\n *\n * Does NOT make a network call. Throws if the signature is invalid or the\n * token is expired. Returns the decoded payload on success.\n */\n async verifyToken(token: string): Promise<AppAuthTokenPayload> {\n if (!this.jwtSecret) {\n throw new Error(\n \"AppAuth.verifyToken: jwtSecret is required. Pass jwtSecret in config or set AUTH_JWT_SECRET env var.\",\n );\n }\n\n const parts = token.split(\".\");\n if (parts.length !== 3) {\n throw new Error(\"AppAuth.verifyToken: malformed JWT — expected 3 parts\");\n }\n\n const [headerB64, payloadB64, signatureB64] = parts as [\n string,\n string,\n string,\n ];\n\n // Decode payload first to check expiry before expensive crypto.\n const payloadJson = new TextDecoder().decode(base64UrlDecode(payloadB64));\n const payload = JSON.parse(payloadJson) as AppAuthTokenPayload;\n\n const now = Math.floor(Date.now() / 1000);\n if (typeof payload.exp === \"number\" && payload.exp < now) {\n throw new Error(\n `AppAuth.verifyToken: token expired at ${new Date(payload.exp * 1000).toISOString()}`,\n );\n }\n\n // Verify HS256 signature using WebCrypto (available in Node >=18 and all modern browsers).\n const encoder = new TextEncoder();\n const signingInput = `${headerB64}.${payloadB64}`;\n const secretBytes = encoder.encode(this.jwtSecret);\n\n const key = await crypto.subtle.importKey(\n \"raw\",\n secretBytes,\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"verify\"],\n );\n\n const signatureBytes = base64UrlDecode(signatureB64).buffer as ArrayBuffer;\n const valid = await crypto.subtle.verify(\n \"HMAC\",\n key,\n signatureBytes,\n encoder.encode(signingInput),\n );\n\n if (!valid) {\n throw new Error(\"AppAuth.verifyToken: invalid JWT signature\");\n }\n\n return payload;\n }\n\n // ── Private ──────────────────────────────────────────────────────────────────\n\n private async _post(\n action: string,\n body: Record<string, unknown>,\n ): Promise<unknown> {\n const url = `${this.baseUrl}/app-auth/${this.resourceType}/${this.resourceId}/${action}`;\n const resp = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!resp.ok) {\n const text = await resp.text();\n throw new Error(`AppAuth ${action} failed (${resp.status}): ${text}`);\n }\n return resp.json();\n }\n}\n"]}