@opengeni/codemode 0.5.9-canary.0 → 0.5.9-canary.2

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.
@@ -5,6 +5,8 @@ export type CodemodeArtifactModality = "spreadsheet" | "document" | "presentatio
5
5
  export type CodemodeArtifactFormat = "xlsx" | "pptx" | "docx" | "pdf" | "png" | "webp";
6
6
  export type CodemodeArtifactMetadata = Readonly<{
7
7
  id: string;
8
+ /** Server-authored handoff reference; absent on older servers. */
9
+ artifactReference?: string;
8
10
  modality: CodemodeArtifactModality;
9
11
  title: string;
10
12
  lifecycle: "active" | "archived";
@@ -82,6 +84,8 @@ export declare class CodemodeArtifact {
82
84
  inspect<T = unknown>(query: CodemodeArtifactQuery, callOptions?: CodemodeCallOptions): Promise<Readonly<{
83
85
  artifact: CodemodeArtifactMetadata;
84
86
  projection: T;
87
+ /** Server-authored proof of native document inspection, when available. */
88
+ inspectionReceiptId?: string;
85
89
  }>>;
86
90
  apply(commands: readonly CodemodeArtifactCommand[], callOptions?: CodemodeCallOptions): Promise<CodemodeArtifactMutationReceipt>;
87
91
  export(format: CodemodeArtifactFormat, options?: Readonly<Record<string, unknown>>, callOptions?: CodemodeCallOptions): Promise<CodemodeArtifactExport>;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/environment.ts","../src/artifacts.ts","../src/structured.ts","../src/interaction.ts","../src/declarations.ts","../src/site.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n ATTEMPT_TOOL_CATALOG_VERSION,\n ATTEMPT_TOOL_CATALOG_MAX_BYTES,\n AttemptToolCall,\n AttemptToolCatalog,\n AttemptToolResult,\n CodemodeCallSubmission,\n CodemodeOperation,\n CodemodeDispatchAck,\n CodemodeDispatchRequest,\n type AttemptToolCall as AttemptToolCallValue,\n AttemptToolCaller,\n type AttemptToolCatalog as AttemptToolCatalogValue,\n type AttemptToolCatalogEntry as AttemptToolCatalogEntryValue,\n type AttemptToolIdentity,\n type AttemptToolResult as AttemptToolResultValue,\n type CodemodeDispatchAck as CodemodeDispatchAckValue,\n type CodemodeDispatchRequest as CodemodeDispatchRequestValue,\n type CodemodeOperation as CodemodeOperationValue,\n} from \"@opengeni/contracts\";\nimport {\n ToolGateway,\n ToolGatewayApprovalRequiredError as AttemptToolApprovalRequiredError,\n ToolGatewayCatalogIntegrityError as AttemptToolCatalogIntegrityError,\n ToolGatewayCatalogStaleError as AttemptToolCatalogStaleError,\n ToolGatewayCatalogTooLargeError as AttemptToolCatalogTooLargeError,\n ToolGatewayInputValidationError as AttemptToolInputValidationError,\n ToolGatewayOutputValidationError as AttemptToolOutputValidationError,\n ToolGatewayPathCollisionError as AttemptToolPathCollisionError,\n ToolGatewayToolNotFoundError as AttemptToolNotFoundError,\n digestCanonicalJson,\n prepareToolGatewayDefinitions,\n type PreparedToolGatewayCall,\n type ToolGatewayCallLifecycle,\n type ToolGatewayDefinition,\n} from \"@opengeni/tool-gateway\";\n\nimport { siteSessionPath } from \"@opengeni/contracts/site-session-http\";\n\nexport type { AttemptToolCatalog, AttemptToolCatalogEntry } from \"@opengeni/contracts\";\n\nexport type AttemptToolScope = Pick<\n AttemptToolCatalogValue,\n \"accountId\" | \"workspaceId\" | \"sessionId\" | \"turnId\" | \"attemptId\" | \"executionGeneration\"\n>;\n\nexport type AttemptToolExecutionContext = {\n operationId: string;\n caller: AttemptToolCaller;\n /** Trusted in-process SDK correlation; not operation identity or approval authority. */\n sourceCallId?: string;\n /** In-process transport metadata; never part of catalog identity or digest. */\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n};\n\nexport type AttemptToolDefinition = Omit<AttemptToolCatalogEntryValue, \"codemodePath\"> & {\n /** Optional human-readable path. Unsafe/colliding segments are normalized. */\n codemodePath?: readonly string[];\n /** In-process execution lifecycle shared by model MCP and Codemode. */\n lifecycle?: ToolGatewayCallLifecycle;\n execute: (\n args: Record<string, unknown>,\n context: AttemptToolExecutionContext,\n ) => Promise<AttemptToolResultValue> | AttemptToolResultValue;\n};\n\nexport type AttemptToolAuthorization = (input: {\n call: AttemptToolCallValue;\n entry: AttemptToolCatalogEntryValue;\n}) => Promise<void> | void;\n\nexport type CreateAttemptToolEnvironmentInput = {\n scope: AttemptToolScope;\n generation: number;\n definitions: readonly AttemptToolDefinition[];\n createdAt?: Date;\n authorize?: AttemptToolAuthorization;\n /** Host-only approval projection for one exact model invocation. */\n confirmModelApproval?: (input: { modelName: string; subjectId: string }) => boolean;\n};\n\nexport type ModelAttemptToolCall = {\n operationId?: string;\n /** Exact SDK call id supplied by the host, never inferred from arguments or metadata. */\n sourceCallId?: string;\n modelName: string;\n arguments: Record<string, unknown>;\n subjectId: string;\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n};\n\nexport {\n AttemptToolCatalogStaleError,\n AttemptToolNotFoundError,\n AttemptToolApprovalRequiredError,\n AttemptToolCatalogIntegrityError,\n AttemptToolCatalogTooLargeError,\n AttemptToolInputValidationError,\n AttemptToolOutputValidationError,\n AttemptToolPathCollisionError,\n};\n\nexport class CodemodeTransportError extends Error {\n readonly code = \"codemode_transport_error\";\n readonly remoteCode: string | null;\n readonly retryable: boolean | null;\n readonly outcomeUnknown: boolean | null;\n readonly details: Readonly<Record<string, unknown>> | null;\n\n constructor(\n message: string,\n readonly status: number | null = null,\n options: {\n code?: string;\n retryable?: boolean;\n outcomeUnknown?: boolean;\n details?: Readonly<Record<string, unknown>>;\n } = {},\n ) {\n super(message);\n this.name = \"CodemodeTransportError\";\n this.remoteCode = options.code ?? null;\n this.retryable = options.retryable ?? null;\n this.outcomeUnknown = options.outcomeUnknown ?? null;\n this.details = options.details ?? null;\n }\n}\n\nexport class CodemodeOperationError extends Error {\n constructor(\n readonly operation: CodemodeOperationValue,\n readonly code: string,\n ) {\n super(operation.errorMessage ?? `Codemode operation ${operation.state}`);\n this.name = \"CodemodeOperationError\";\n }\n}\n\nexport type CodemodeTokenProvider = string | (() => string | Promise<string>);\n\nexport type CodemodeClientOptions = {\n /** `/v1/workspaces/:workspaceId/codemode` base URL. */\n baseUrl: string;\n token: CodemodeTokenProvider;\n fetch?: typeof globalThis.fetch;\n pollIntervalMs?: number;\n timeoutMs?: number;\n};\n\nexport type CodemodeCallOptions = {\n operationId?: string;\n /** Stops client observation only; it never cancels an already-created server operation. */\n signal?: AbortSignal;\n timeoutMs?: number;\n};\n\nexport type CodemodeToolFunction = (\n argumentsValue?: Record<string, unknown>,\n options?: CodemodeCallOptions,\n) => Promise<unknown>;\n\nexport type CodemodeToolResult = AttemptToolResultValue;\n\nexport class CodemodeToolCallError extends Error {\n readonly code: string;\n readonly retryable: boolean;\n\n constructor(readonly result: AttemptToolResultValue) {\n const error = structuredToolError(result);\n super(error.message);\n this.name = \"CodemodeToolCallError\";\n this.code = error.code;\n this.retryable = error.retryable;\n }\n}\n\nexport class CodemodeToolContractError extends Error {\n readonly code = \"invalid_tool_result\";\n\n constructor(message: string) {\n super(message);\n this.name = \"CodemodeToolContractError\";\n }\n}\n\nexport interface CodemodeTools {\n [key: string]: CodemodeTools | CodemodeToolFunction;\n}\n\n/** Persistent, idempotent client for one exact sandbox attempt bearer. */\nexport class CodemodeClient {\n private readonly baseUrl: string;\n private readonly fetchImpl: typeof globalThis.fetch;\n private readonly pollIntervalMs: number;\n private readonly timeoutMs: number;\n private catalogSnapshot: AttemptToolCatalogValue | null = null;\n\n constructor(private readonly options: CodemodeClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/+$/u, \"\");\n if (!/^https?:\\/\\//u.test(this.baseUrl)) {\n throw new Error(\"Codemode baseUrl must be an absolute HTTP(S) URL\");\n }\n this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n this.pollIntervalMs = boundedPositiveInteger(options.pollIntervalMs ?? 500, 50, 30_000);\n this.timeoutMs = boundedPositiveInteger(options.timeoutMs ?? 10 * 60_000, 1_000, 60 * 60_000);\n }\n\n async catalog(\n options: { refresh?: boolean; signal?: AbortSignal } = {},\n ): Promise<AttemptToolCatalogValue> {\n if (this.catalogSnapshot && !options.refresh) return this.catalogSnapshot;\n const response = await this.request(\"/catalog\", {\n method: \"GET\",\n ...(options.signal ? { signal: options.signal } : {}),\n });\n const catalog = parseVerifiedAttemptToolCatalog(await response.json());\n this.catalogSnapshot = catalog;\n return catalog;\n }\n\n async tools(options: { refresh?: boolean; signal?: AbortSignal } = {}): Promise<CodemodeTools> {\n return compileCodemodeTools(await this.catalog(options), this);\n }\n\n async call(\n identity: AttemptToolIdentity,\n argumentsValue: Record<string, unknown> = {},\n options: CodemodeCallOptions = {},\n ): Promise<AttemptToolResultValue> {\n return (\n await this.callResolved(\n (catalog) =>\n catalog.entries.find(\n (entry) =>\n entry.identity.serverId === identity.serverId &&\n entry.identity.toolName === identity.toolName,\n ) ?? null,\n argumentsValue,\n options,\n )\n ).result;\n }\n\n private async callResolved(\n resolveEntry: (catalog: AttemptToolCatalogValue) => AttemptToolCatalogEntryValue | null,\n argumentsValue: Record<string, unknown>,\n options: CodemodeCallOptions,\n ): Promise<{ result: AttemptToolResultValue; entry: AttemptToolCatalogEntryValue }> {\n let catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\n let entry = resolveEntry(catalog);\n if (!entry) throw new AttemptToolNotFoundError();\n const operationId = options.operationId ?? randomUUID();\n const deadline =\n Date.now() + boundedPositiveInteger(options.timeoutMs ?? this.timeoutMs, 1_000, 60 * 60_000);\n let submitted = false;\n let staleRefreshAttempted = false;\n let operation: CodemodeOperationValue | null = null;\n let nextNotifyAt = 0;\n while (true) {\n throwIfAborted(options.signal);\n if (Date.now() >= deadline) {\n throw new CodemodeTransportError(\n `Codemode operation ${operationId} did not settle before the client deadline`,\n );\n }\n const shouldNotify =\n !submitted ||\n ((operation?.state === \"queued\" || operation?.state === \"running\") &&\n Date.now() >= nextNotifyAt);\n if (shouldNotify) {\n submitted = true;\n nextNotifyAt = Date.now() + 2_000;\n try {\n operation = await this.submit(\n operationId,\n catalog.digest,\n entry.identity,\n argumentsValue,\n options.signal,\n );\n } catch (error) {\n if (\n operation === null &&\n !staleRefreshAttempted &&\n error instanceof CodemodeTransportError &&\n error.remoteCode === \"codemode_catalog_stale\"\n ) {\n staleRefreshAttempted = true;\n catalog = await this.catalog({\n refresh: true,\n ...(options.signal ? { signal: options.signal } : {}),\n });\n entry = resolveEntry(catalog);\n if (!entry) throw new AttemptToolNotFoundError();\n submitted = false;\n nextNotifyAt = 0;\n continue;\n }\n if (options.signal?.aborted) throw error;\n if (operation === null && !canReconcileCodemodeSubmission(error)) throw error;\n // The POST may have committed before its response was lost, or an\n // already-bound operation may have settled while a later wake\n // notification failed deterministically. The caller-owned id is the\n // recovery handle: read and re-prove the exact binding before\n // deciding that another side effect is necessary.\n let recovered: CodemodeOperationValue;\n try {\n recovered = await this.read(operationId, options.signal);\n } catch (recoveryError) {\n if (options.signal?.aborted) throw recoveryError;\n throw new CodemodeTransportError(\n `Codemode operation ${operationId} could not be reconciled after its submission response failed`,\n null,\n {\n code: \"codemode_operation_recovery_unavailable\",\n retryable: true,\n outcomeUnknown: true,\n details: { operationId },\n },\n );\n }\n assertRecoveredCodemodeOperation(recovered, {\n operationId,\n catalog,\n identity: entry.identity,\n arguments: argumentsValue,\n });\n operation = recovered;\n }\n } else {\n operation = await this.read(operationId, options.signal);\n }\n if (operation.state === \"completed\") {\n return { result: AttemptToolResult.parse(operation.result), entry };\n }\n if ([\"failed\", \"outcome_unknown\", \"cancelled\"].includes(operation.state)) {\n throw new CodemodeOperationError(\n operation,\n operation.errorCode ?? `codemode_${operation.state}`,\n );\n }\n await abortableDelay(this.pollIntervalMs, options.signal);\n }\n }\n\n /** Resolve and call one exact generated namespace path without parsing a wire name. */\n async callPath(\n path: readonly string[],\n argumentsValue: Record<string, unknown> = {},\n options: CodemodeCallOptions = {},\n ): Promise<AttemptToolResultValue> {\n if (path.length < 2 || path.some((segment) => segment.length === 0)) {\n throw new AttemptToolNotFoundError();\n }\n return (\n await this.callResolved(\n (catalog) => catalogEntryForPath(catalog, path),\n argumentsValue,\n options,\n )\n ).result;\n }\n\n /** Return structured content when the catalog declares it; otherwise retain the full MCP result. */\n async callPathValue(\n path: readonly string[],\n argumentsValue: Record<string, unknown> = {},\n options: CodemodeCallOptions = {},\n ): Promise<unknown> {\n if (path.length < 2 || path.some((segment) => segment.length === 0)) {\n throw new AttemptToolNotFoundError();\n }\n const { result, entry } = await this.callResolved(\n (catalog) => catalogEntryForPath(catalog, path),\n argumentsValue,\n options,\n );\n if (!entry.outputSchema) return result;\n if (result.isError) throw new CodemodeToolCallError(result);\n if (!result.structuredContent) {\n throw new CodemodeToolContractError(\n `Codemode tool ${path.join(\".\")} declared outputSchema but returned no structured content`,\n );\n }\n return result.structuredContent;\n }\n\n private async submit(\n operationId: string,\n catalogDigest: string,\n identity: AttemptToolIdentity,\n argumentsValue: Record<string, unknown>,\n signal?: AbortSignal,\n ): Promise<CodemodeOperationValue> {\n const response = await this.request(\"/calls\", {\n method: \"POST\",\n ...(signal ? { signal } : {}),\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n operationId,\n catalogDigest,\n identity,\n arguments: argumentsValue,\n }),\n });\n return CodemodeCallSubmission.parse(await response.json()).operation;\n }\n\n private async read(operationId: string, signal?: AbortSignal): Promise<CodemodeOperationValue> {\n const response = await this.request(`/calls/${operationId}`, {\n method: \"GET\",\n ...(signal ? { signal } : {}),\n });\n return CodemodeOperation.parse(await response.json());\n }\n\n /** Server-side Site preview forwarding. The attempt bearer never enters the\n * page. Validate tenant routing here; ordinary API handlers authorize the\n * operation under the existing agent proxy permission ceiling. */\n async sessionRequest(path: string, init: RequestInit): Promise<Response> {\n siteSessionPath(path, \"site-host\", init.method ?? \"GET\");\n return this.request(`/sdk${path}`, init, false);\n }\n\n private async request(path: string, init: RequestInit, throwOnError = true): Promise<Response> {\n const token =\n typeof this.options.token === \"function\" ? await this.options.token() : this.options.token;\n const response = await this.fetchImpl(`${this.baseUrl}${path}`, {\n ...init,\n headers: {\n ...Object.fromEntries(new Headers(init.headers).entries()),\n authorization: `Bearer ${token}`,\n },\n });\n if (!response.ok && throwOnError) {\n let message = `Codemode request failed with HTTP ${response.status}`;\n let errorOptions: {\n code?: string;\n retryable?: boolean;\n outcomeUnknown?: boolean;\n details?: Readonly<Record<string, unknown>>;\n } = {};\n try {\n const error = parseCodemodeApiError(await response.json());\n if (error?.message) message = error.message;\n if (error) {\n errorOptions = {\n ...(error.code ? { code: error.code } : {}),\n ...(error.retryable === undefined ? {} : { retryable: error.retryable }),\n ...(error.outcomeUnknown === undefined ? {} : { outcomeUnknown: error.outcomeUnknown }),\n ...(error.details ? { details: error.details } : {}),\n };\n }\n } catch {\n // The status is sufficient; never echo an unbounded provider body.\n }\n throw new CodemodeTransportError(message, response.status, errorOptions);\n }\n return response;\n }\n}\n\nfunction canReconcileCodemodeSubmission(error: unknown): boolean {\n return !(error instanceof CodemodeTransportError) || error.outcomeUnknown === true;\n}\n\nfunction assertRecoveredCodemodeOperation(\n operation: CodemodeOperationValue,\n expected: {\n operationId: string;\n catalog: AttemptToolCatalogValue;\n identity: AttemptToolIdentity;\n arguments: Record<string, unknown>;\n },\n): void {\n const matches =\n operation.operationId === expected.operationId &&\n operation.accountId === expected.catalog.accountId &&\n operation.workspaceId === expected.catalog.workspaceId &&\n operation.sessionId === expected.catalog.sessionId &&\n operation.turnId === expected.catalog.turnId &&\n operation.attemptId === expected.catalog.attemptId &&\n operation.executionGeneration === expected.catalog.executionGeneration &&\n operation.catalogDigest === expected.catalog.digest &&\n operation.identity.serverId === expected.identity.serverId &&\n operation.identity.toolName === expected.identity.toolName &&\n digestCanonicalJson(operation.arguments) === digestCanonicalJson(expected.arguments);\n if (matches) return;\n throw new CodemodeTransportError(\n \"Codemode operation id is already bound to a different request\",\n 409,\n {\n code: \"codemode_operation_conflict\",\n retryable: false,\n outcomeUnknown: false,\n },\n );\n}\n\nexport function compileCodemodeTools(\n catalog: AttemptToolCatalogValue,\n client: CodemodeClient,\n): CodemodeTools {\n const verified = parseVerifiedAttemptToolCatalog(catalog);\n const root: CodemodeTools = Object.create(null) as CodemodeTools;\n for (const entry of verified.entries) {\n let cursor = root;\n for (const segment of entry.codemodePath.slice(0, -1)) {\n let existing = cursor[segment];\n if (typeof existing === \"function\") throw new Error(\"Codemode path collides with a tool\");\n if (!existing) {\n existing = Object.create(null) as CodemodeTools;\n cursor[segment] = existing;\n }\n cursor = existing;\n }\n const leaf = entry.codemodePath.at(-1)!;\n const invoke: CodemodeToolFunction = async (args = {}, options = {}) =>\n await client.callPathValue(entry.codemodePath, args, options);\n Object.defineProperty(invoke, \"entry\", { value: entry, enumerable: false });\n cursor[leaf] = invoke;\n }\n return root;\n}\n\nexport class AttemptToolEnvironment {\n constructor(\n readonly catalog: AttemptToolCatalogValue,\n private readonly gateway: ToolGateway,\n ) {}\n\n async call(\n input: AttemptToolCallValue,\n context: {\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n } = {},\n ): Promise<AttemptToolResultValue> {\n return await (await this.prepareCall(input, context)).execute();\n }\n\n async prepareCall(\n input: AttemptToolCallValue,\n context: {\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n } = {},\n ): Promise<PreparedToolGatewayCall> {\n const call = AttemptToolCall.parse(input);\n return await this.gateway.prepareCall(call, context);\n }\n\n async callModel(input: ModelAttemptToolCall): Promise<AttemptToolResultValue> {\n return await this.gateway.callModel(input);\n }\n}\n\nexport function createAttemptToolEnvironment(\n input: CreateAttemptToolEnvironmentInput,\n): AttemptToolEnvironment {\n const createdAt = (input.createdAt ?? new Date()).toISOString();\n const prepared = prepareToolGatewayDefinitions(\n input.definitions.map(\n (definition): ToolGatewayDefinition => ({\n ...definition,\n execute: async (argumentsValue, context) =>\n await definition.execute(argumentsValue, {\n ...context,\n caller: AttemptToolCaller.parse(context.caller),\n }),\n }),\n ),\n );\n const unsigned = {\n version: ATTEMPT_TOOL_CATALOG_VERSION,\n ...input.scope,\n generation: input.generation,\n createdAt,\n entries: [...prepared.entries],\n };\n const catalog = AttemptToolCatalog.parse({\n ...unsigned,\n digest: digestAttemptToolCatalog(unsigned),\n });\n assertCatalogSize(catalog);\n return new AttemptToolEnvironment(\n catalog,\n prepared.create({\n catalogDigest: catalog.digest,\n requireApproval: (entry, caller) => caller.kind === \"codemode\" && entry.approval === \"human\",\n ...(input.confirmModelApproval\n ? {\n confirmModelApproval: ({ entry, subjectId }) =>\n input.confirmModelApproval!({\n modelName: entry.modelName,\n subjectId,\n }),\n }\n : {}),\n ...(input.authorize\n ? {\n authorize: async ({ call, entry }) =>\n await input.authorize!({\n call: AttemptToolCall.parse(call),\n entry,\n }),\n }\n : {}),\n }),\n );\n}\n\nexport function digestAttemptToolCatalog(catalog: Omit<AttemptToolCatalogValue, \"digest\">): string {\n const { createdAt: _createdAt, ...authoritative } = catalog;\n return digestCanonicalJson(authoritative);\n}\n\nexport function digestCodemodeOperationRequest(\n input: Pick<AttemptToolCallValue, \"catalogDigest\" | \"identity\" | \"arguments\" | \"caller\">,\n): string {\n return digestCanonicalJson(input);\n}\n\nexport function codemodeDispatchSubject(workspaceId: string, attemptId: string): string {\n if (!UUID_PATTERN.test(workspaceId) || !UUID_PATTERN.test(attemptId)) {\n throw new Error(\"Codemode dispatch subject requires UUID workspace and attempt ids\");\n }\n return `codemode.${workspaceId}.${attemptId}.dispatch`;\n}\n\nexport function encodeCodemodeDispatchRequest(input: CodemodeDispatchRequestValue): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(CodemodeDispatchRequest.parse(input)));\n}\n\nexport function decodeCodemodeDispatchRequest(input: Uint8Array): CodemodeDispatchRequestValue {\n return CodemodeDispatchRequest.parse(JSON.parse(new TextDecoder().decode(input)));\n}\n\nexport function encodeCodemodeDispatchAck(input: CodemodeDispatchAckValue): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(CodemodeDispatchAck.parse(input)));\n}\n\nexport function decodeCodemodeDispatchAck(input: Uint8Array): CodemodeDispatchAckValue {\n return CodemodeDispatchAck.parse(JSON.parse(new TextDecoder().decode(input)));\n}\n\nexport function parseVerifiedAttemptToolCatalog(input: unknown): AttemptToolCatalogValue {\n const catalog = AttemptToolCatalog.parse(input);\n assertCatalogSize(catalog);\n const { digest, ...unsigned } = catalog;\n if (digestAttemptToolCatalog(unsigned) !== digest) {\n throw new AttemptToolCatalogIntegrityError();\n }\n return catalog;\n}\n\nfunction assertCatalogSize(catalog: AttemptToolCatalogValue): void {\n if (\n new TextEncoder().encode(JSON.stringify(catalog)).byteLength > ATTEMPT_TOOL_CATALOG_MAX_BYTES\n ) {\n throw new AttemptToolCatalogTooLargeError();\n }\n}\n\nconst UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n\nfunction boundedPositiveInteger(value: number, minimum: number, maximum: number): number {\n if (!Number.isFinite(value)) return minimum;\n return Math.max(minimum, Math.min(maximum, Math.floor(value)));\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) throw signal.reason ?? new DOMException(\"Aborted\", \"AbortError\");\n}\n\nfunction structuredToolError(result: AttemptToolResultValue): {\n code: string;\n message: string;\n retryable: boolean;\n} {\n const structured = result.structuredContent as\n | { error?: { code?: unknown; message?: unknown; retryable?: unknown } }\n | undefined;\n const error = structured?.error;\n return {\n code: typeof error?.code === \"string\" ? error.code : \"tool_error\",\n message: typeof error?.message === \"string\" ? error.message : \"Codemode tool failed\",\n retryable: error?.retryable === true,\n };\n}\n\nfunction catalogEntryForPath(\n catalog: AttemptToolCatalogValue,\n path: readonly string[],\n): AttemptToolCatalogEntryValue | null {\n const matches = catalog.entries.filter(\n (entry) =>\n entry.codemodePath.length === path.length &&\n entry.codemodePath.every((segment, index) => segment === path[index]),\n );\n return matches.length === 1 ? matches[0]! : null;\n}\n\nfunction parseCodemodeApiError(input: unknown): {\n message?: string;\n code?: string;\n retryable?: boolean;\n outcomeUnknown?: boolean;\n details?: Readonly<Record<string, unknown>>;\n} | null {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) return null;\n const root = input as Record<string, unknown>;\n const nested =\n root.error && typeof root.error === \"object\" && !Array.isArray(root.error)\n ? (root.error as Record<string, unknown>)\n : root;\n const details =\n nested.details && typeof nested.details === \"object\" && !Array.isArray(nested.details)\n ? (nested.details as Readonly<Record<string, unknown>>)\n : undefined;\n const detailCode = details?.code;\n const code =\n typeof detailCode === \"string\" && /^[a-z0-9_]{1,128}$/u.test(detailCode)\n ? detailCode\n : undefined;\n const message = typeof nested.message === \"string\" ? nested.message : undefined;\n const retryable = typeof nested.retryable === \"boolean\" ? nested.retryable : undefined;\n const outcomeUnknown =\n typeof nested.outcomeUnknown === \"boolean\" ? nested.outcomeUnknown : undefined;\n return message || code || retryable !== undefined || outcomeUnknown !== undefined || details\n ? {\n ...(message ? { message } : {}),\n ...(code ? { code } : {}),\n ...(retryable === undefined ? {} : { retryable }),\n ...(outcomeUnknown === undefined ? {} : { outcomeUnknown }),\n ...(details ? { details } : {}),\n }\n : null;\n}\n\nasync function abortableDelay(delayMs: number, signal?: AbortSignal): Promise<void> {\n if (!signal) {\n await new Promise<void>((resolve) => setTimeout(resolve, delayMs));\n return;\n }\n throwIfAborted(signal);\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delayMs);\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal.reason ?? new DOMException(\"Aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nexport * from \"./environment\";\nexport * from \"./interaction\";\nexport * from \"./artifacts\";\nexport * from \"./structured\";\nexport * from \"./declarations\";\nexport * from \"./site\";\n","import { readFile } from \"node:fs/promises\";\nimport { CodemodeClient, type CodemodeCallOptions, type CodemodeToolFunction } from \"./index\";\n\nexport const CODEMODE_ENVIRONMENT = {\n url: \"OPENGENI_CODEMODE_URL\",\n token: \"OPENGENI_CODEMODE_TOKEN\",\n tokenFile: \"OPENGENI_CODEMODE_TOKEN_FILE\",\n} as const;\n\n/** Minimal environment shape; public declarations must not require `@types/node`. */\nexport type CodemodeEnvironment = Readonly<Record<string, string | undefined>>;\n\nexport type CodemodeClientProvider = () => CodemodeClient | Promise<CodemodeClient>;\n\n/** A lazy catalog path. Every nested property remains callable at runtime. */\nexport type CodemodeDynamicTool = CodemodeToolFunction & {\n readonly [segment: string]: CodemodeDynamicTool;\n};\n\nexport type CodemodeDynamicTools = {\n readonly [segment: string]: CodemodeDynamicTool;\n};\n\n/** Catalog-specific generated declarations augment this interface. */\nexport interface CodemodeGeneratedTools {}\n\nexport type CodemodeToolsNamespace = CodemodeDynamicTools & CodemodeGeneratedTools;\n\nlet cachedEnvironmentClient: { key: string; client: CodemodeClient } | null = null;\n\n/**\n * Build (or reuse) the persistent client for the exact sandbox attempt.\n * The bearer file is reread for every HTTP request so worker renewal is live.\n */\nexport function environmentCodemodeClient(\n environment: CodemodeEnvironment = process.env,\n): CodemodeClient {\n const baseUrl = requiredEnvironment(environment, CODEMODE_ENVIRONMENT.url);\n const directTokenConfigured = environment[CODEMODE_ENVIRONMENT.token] !== undefined;\n const tokenFile = directTokenConfigured\n ? undefined\n : requiredEnvironment(environment, CODEMODE_ENVIRONMENT.tokenFile);\n // Never place bearer bytes in the cache identity. The callback rereads the\n // selected source for every request: managed token-file renewal is live, and\n // a Connected Machine child never leaves its direct bearer in module state.\n const key = `${baseUrl}\\u0000${directTokenConfigured ? \"direct\" : `file:${tokenFile}`}`;\n if (environment === process.env && cachedEnvironmentClient?.key === key) {\n return cachedEnvironmentClient.client;\n }\n const client = new CodemodeClient({\n baseUrl,\n token: directTokenConfigured\n ? async () => requiredEnvironment(environment, CODEMODE_ENVIRONMENT.token)\n : async () => await readBearerFile(tokenFile!),\n });\n if (environment === process.env) cachedEnvironmentClient = { key, client };\n return client;\n}\n\n/**\n * Lazy namespace used by ordinary sandbox programs:\n * `await tools.slack.search({ query: \"...\" })`.\n */\nexport function createCodemodeTools(\n client: CodemodeClientProvider = () => environmentCodemodeClient(),\n): CodemodeToolsNamespace {\n const node = (path: readonly string[]): CodemodeDynamicTool =>\n new Proxy(\n (async (args: Record<string, unknown> = {}, options: CodemodeCallOptions = {}) =>\n await (await client()).callPathValue(path, args, options)) as CodemodeDynamicTool,\n {\n get(_target, property) {\n if (property === \"then\") return undefined;\n if (property === Symbol.toStringTag) return \"CodemodeTool\";\n if (typeof property !== \"string\") return undefined;\n return node([...path, property]);\n },\n set() {\n return false;\n },\n },\n );\n return new Proxy(Object.create(null) as CodemodeToolsNamespace, {\n get(_target, property) {\n if (property === \"then\") return undefined;\n if (property === Symbol.toStringTag) return \"CodemodeTools\";\n if (typeof property !== \"string\") return undefined;\n return node([property]);\n },\n set() {\n return false;\n },\n });\n}\n\nexport const tools = createCodemodeTools();\n\nasync function readBearerFile(path: string): Promise<string> {\n let token: string;\n try {\n token = (await readFile(path, \"utf8\")).trim();\n } catch {\n throw new Error(`${CODEMODE_ENVIRONMENT.tokenFile} is not readable`);\n }\n if (!token) throw new Error(`${CODEMODE_ENVIRONMENT.tokenFile} is empty`);\n return token;\n}\n\nfunction requiredEnvironment(environment: CodemodeEnvironment, name: string): string {\n const value = environment[name]?.trim();\n if (!value) throw new Error(`${name} is required`);\n return value;\n}\n","import { randomBytes } from \"node:crypto\";\n\nimport type {\n DocumentArtifactId,\n DocumentArtifactIdKind,\n DocumentArtifactCommand,\n DocumentArtifactQuery,\n EditableArtifactStableId,\n PresentationArtifactCommand,\n PresentationArtifactQuery,\n SpreadsheetArtifactCommand,\n SpreadsheetArtifactKernelQuery,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport type { CodemodeCallOptions } from \"./index\";\nimport type { CodemodeClientProvider } from \"./environment\";\nimport { callStructured } from \"./structured\";\n\nconst PATH = {\n list: [\"artifacts\", \"list\"],\n create: [\"artifacts\", \"create\"],\n import: [\"artifacts\", \"import\"],\n get: [\"artifacts\", \"get\"],\n inspect: [\"artifacts\", \"inspect\"],\n apply: [\"artifacts\", \"apply\"],\n export: [\"artifacts\", \"export\"],\n exportStatus: [\"artifacts\", \"exportStatus\"],\n} as const;\n\nexport type CodemodeArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\nexport type CodemodeArtifactFormat = \"xlsx\" | \"pptx\" | \"docx\" | \"pdf\" | \"png\" | \"webp\";\nexport type CodemodeArtifactMetadata = Readonly<{\n id: string;\n modality: CodemodeArtifactModality;\n title: string;\n lifecycle: \"active\" | \"archived\";\n headSequence: number;\n stateHash: string;\n createdAt: string;\n updatedAt: string;\n}>;\nexport type CodemodeArtifactQuery =\n | SpreadsheetArtifactKernelQuery\n | DocumentArtifactQuery\n | PresentationArtifactQuery;\nexport type CodemodeArtifactCommand =\n | SpreadsheetArtifactCommand\n | DocumentArtifactCommand\n | PresentationArtifactCommand;\nexport type CodemodeArtifactMutationReceipt = Readonly<{\n artifact: CodemodeArtifactMetadata;\n transaction: Readonly<{\n id: string;\n clientTransactionId: string;\n sequenceStart: number;\n sequenceEnd: number;\n stateHash: string;\n committedAt: string;\n replayed: boolean;\n }>;\n}>;\nexport type CodemodeArtifactExportFile = Readonly<{\n fileId: string;\n filename: string;\n contentType: string;\n sizeBytes: number;\n sha256: string;\n artifactId: string;\n versionId: string;\n materializationJobId: string;\n sourceHeadSequence: number;\n sourceStateHash: string;\n}>;\nexport type CodemodeArtifactExportStatus = Readonly<{\n artifact: CodemodeArtifactMetadata;\n versionId: string;\n jobId: string;\n sourceHeadSequence: number;\n sourceStateHash: string;\n state: \"pending\" | \"running\" | \"succeeded\" | \"failed\";\n errorCode: string | null;\n file: CodemodeArtifactExportFile | null;\n}>;\n\nexport type CodemodeArtifactIdFactory = Readonly<{\n /** Create a nonzero 128-bit id accepted by spreadsheet and presentation commands. */\n stable(): EditableArtifactStableId;\n /** Create a document object id in the namespace returned by a summary query. */\n document(kind: DocumentArtifactIdKind, namespace: bigint | number | string): DocumentArtifactId;\n}>;\n\nexport const codemodeArtifactIds: CodemodeArtifactIdFactory = Object.freeze({\n stable: createStableArtifactId,\n document: createDocumentArtifactId,\n});\n\n/** Authored CodeMode collection over the exact MCP-backed artifact operations. */\nexport class CodemodeArtifactCollection {\n readonly ids = codemodeArtifactIds;\n\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async list(\n options: { limit?: number | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifactMetadata[]> {\n return (\n await callStructured<{ artifacts: CodemodeArtifactMetadata[] }>(\n this.client,\n PATH.list,\n options,\n callOptions,\n )\n ).artifacts;\n }\n\n async create(\n modality: CodemodeArtifactModality,\n title: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifact> {\n const metadata = await callStructured<CodemodeArtifactMetadata>(\n this.client,\n PATH.create,\n { modality, title },\n callOptions,\n );\n return new CodemodeArtifact(this.client, metadata.id, metadata);\n }\n\n async import(\n fileId: string,\n modality: CodemodeArtifactModality,\n title: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifact> {\n const metadata = await callStructured<CodemodeArtifactMetadata>(\n this.client,\n PATH.import,\n { fileId, modality, title },\n callOptions,\n );\n return new CodemodeArtifact(this.client, metadata.id, metadata);\n }\n\n use(artifact: string | CodemodeArtifactMetadata): CodemodeArtifact {\n return typeof artifact === \"string\"\n ? new CodemodeArtifact(this.client, artifact)\n : new CodemodeArtifact(this.client, artifact.id, artifact);\n }\n}\n\nconst DOCUMENT_ID_PREFIX = Object.freeze({\n paragraph: \"p\",\n table: \"dt\",\n \"page-break\": \"pb\",\n section: \"sec\",\n header: \"hdr\",\n footer: \"ftr\",\n comment: \"dc\",\n \"tracked-change\": \"chg\",\n} satisfies Readonly<Record<DocumentArtifactIdKind, string>>);\nconst MAX_U64 = 0xffff_ffff_ffff_ffffn;\nconst MAX_DOCUMENT_COUNTER = BigInt(Number.MAX_SAFE_INTEGER) - 1n;\n\nfunction createStableArtifactId(): EditableArtifactStableId {\n const bytes = randomBytes(16);\n if (bytes.subarray(0, 8).every((byte) => byte === 0)) bytes[0] = 1;\n if (bytes.subarray(8, 16).every((byte) => byte === 0)) bytes[8] = 1;\n return bytes.toString(\"hex\") as EditableArtifactStableId;\n}\n\nfunction createDocumentArtifactId(\n kind: DocumentArtifactIdKind,\n namespaceInput: bigint | number | string,\n): DocumentArtifactId {\n const namespace = parseDocumentNamespace(namespaceInput);\n const bytes = randomBytes(7);\n bytes[0] = (bytes[0] ?? 0) & 0x1f;\n let counter = 0n;\n for (const byte of bytes) counter = (counter << 8n) | BigInt(byte);\n if (counter === 0n) counter = 1n;\n if (counter > MAX_DOCUMENT_COUNTER) {\n throw new Error(\"Generated document id counter exceeds the canonical limit\");\n }\n return `${DOCUMENT_ID_PREFIX[kind]}/${namespace.toString(16).padStart(16, \"0\")}${counter\n .toString(16)\n .padStart(16, \"0\")}`;\n}\n\nfunction parseDocumentNamespace(input: bigint | number | string): bigint {\n if (\n (typeof input === \"number\" && (!Number.isSafeInteger(input) || input < 0)) ||\n (typeof input === \"string\" && !/^(?:0|[1-9][0-9]*)$/u.test(input))\n ) {\n throw new TypeError(\"Document id namespace must be an unsigned decimal integer\");\n }\n const namespace = BigInt(input);\n if (namespace < 0n || namespace > MAX_U64) {\n throw new RangeError(\"Document id namespace is outside the uint64 range\");\n }\n return namespace;\n}\n\nexport class CodemodeArtifact {\n private metadata: CodemodeArtifactMetadata | null;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n metadata: CodemodeArtifactMetadata | null = null,\n ) {\n this.metadata = metadata;\n }\n\n async get(callOptions: CodemodeCallOptions = {}): Promise<CodemodeArtifactMetadata> {\n const metadata = await callStructured<CodemodeArtifactMetadata>(\n this.client,\n PATH.get,\n { artifactId: this.id },\n callOptions,\n );\n this.metadata = metadata;\n return metadata;\n }\n\n async inspect<T = unknown>(\n query: CodemodeArtifactQuery,\n callOptions: CodemodeCallOptions = {},\n ): Promise<Readonly<{ artifact: CodemodeArtifactMetadata; projection: T }>> {\n const modality = (await this.currentMetadata(callOptions)).modality;\n const result = await callStructured<{\n artifact: CodemodeArtifactMetadata;\n projection: T;\n }>(this.client, PATH.inspect, { artifactId: this.id, modality, request: query }, callOptions);\n this.metadata = result.artifact;\n return result;\n }\n\n async apply(\n commands: readonly CodemodeArtifactCommand[],\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifactMutationReceipt> {\n const metadata = await this.currentMetadata(callOptions);\n const result = await callStructured<CodemodeArtifactMutationReceipt>(\n this.client,\n PATH.apply,\n {\n artifactId: this.id,\n modality: metadata.modality,\n expectedHeadSequence: metadata.headSequence,\n expectedStateHash: metadata.stateHash,\n commands,\n },\n callOptions,\n );\n this.metadata = result.artifact;\n return result;\n }\n\n async export(\n format: CodemodeArtifactFormat,\n options: Readonly<Record<string, unknown>> = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifactExport> {\n const started = await callStructured<{\n artifact: CodemodeArtifactMetadata;\n versionId: string;\n jobId: string;\n sourceHeadSequence: number;\n sourceStateHash: string;\n state: \"pending\" | \"running\" | \"succeeded\" | \"failed\";\n }>(this.client, PATH.export, { artifactId: this.id, format, options }, callOptions);\n this.metadata = started.artifact;\n return new CodemodeArtifactExport(\n this.client,\n started.artifact.id,\n started.versionId,\n started.jobId,\n started.sourceHeadSequence,\n started.sourceStateHash,\n );\n }\n\n private async currentMetadata(\n callOptions: CodemodeCallOptions,\n ): Promise<CodemodeArtifactMetadata> {\n return this.metadata ?? (await this.get(callOptions));\n }\n}\n\nexport class CodemodeArtifactExport {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly artifactId: string,\n readonly versionId: string,\n readonly jobId: string,\n readonly sourceHeadSequence: number,\n readonly sourceStateHash: string,\n ) {}\n\n async status(callOptions: CodemodeCallOptions = {}): Promise<CodemodeArtifactExportStatus> {\n return await callStructured(\n this.client,\n PATH.exportStatus,\n {\n artifactId: this.artifactId,\n versionId: this.versionId,\n jobId: this.jobId,\n },\n callOptions,\n );\n }\n}\n","import type { AttemptToolResult } from \"@opengeni/contracts\";\nimport type { CodemodeCallOptions, CodemodeClient } from \"./index\";\nimport { environmentCodemodeClient, type CodemodeClientProvider } from \"./environment\";\n\nexport class CodemodeToolExecutionError extends Error {\n readonly code: string;\n readonly retryable: boolean;\n\n constructor(readonly result: AttemptToolResult) {\n const error = toolError(result);\n super(error.message);\n this.name = \"CodemodeToolExecutionError\";\n this.code = error.code;\n this.retryable = error.retryable;\n }\n}\n\nexport function codemodeClientProvider(\n client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient(),\n): CodemodeClientProvider {\n return typeof client === \"function\" ? client : () => client;\n}\n\nexport async function callStructured<T>(\n client: CodemodeClientProvider,\n path: readonly string[],\n args: Record<string, unknown>,\n options: CodemodeCallOptions,\n): Promise<T> {\n const result = await (await client()).callPath(path, args, options);\n if (result.isError) throw new CodemodeToolExecutionError(result);\n if (!result.structuredContent) {\n throw new Error(`Codemode tool ${path.join(\".\")} returned no structured content`);\n }\n return result.structuredContent as T;\n}\n\nfunction toolError(result: AttemptToolResult): {\n code: string;\n message: string;\n retryable: boolean;\n} {\n const structured = result.structuredContent as\n | { error?: { code?: unknown; message?: unknown; retryable?: unknown } }\n | undefined;\n const error = structured?.error;\n return {\n code: typeof error?.code === \"string\" ? error.code : \"tool_error\",\n message: typeof error?.message === \"string\" ? error.message : \"Codemode tool failed\",\n retryable: error?.retryable === true,\n };\n}\n","import type {\n AttachedBrowserDevice,\n AuthRun,\n AuthRunListResponse,\n AuthRunMutationResponse,\n BrowserAction,\n BrowserActionReceipt,\n BrowserClipboard,\n BrowserDiagnosticBatch,\n BrowserDiagnosticKind,\n BrowserIdentity,\n BrowserIdentityListResponse,\n BrowserIdentityMutationResponse,\n BrowserLocator,\n BrowserObservation,\n BrowserPermission,\n BrowserPermissionSetting,\n BrowserRevisionListResponse,\n BrowserSession,\n BrowserSessionMutationResponse,\n BrowserTarget,\n BrowserTargetListResponse,\n ComputerAction,\n ComputerActionReceipt,\n ComputerClipboard,\n ComputerLocator,\n ComputerObservation,\n ComputerSession,\n ComputerSessionMutationResponse,\n ComputerTarget,\n ComputerTargetListResponse,\n ExternalAuthRunRequest,\n ExternalAuthRunResponse,\n InteractionPlacement,\n ProtectedAuthFillRequest,\n ProtectedAuthFillResponse,\n PublishBrowserRevisionResponse,\n ReportAuthRunRequest,\n RequestHumanInteractionToolInput,\n RequestHumanInteractionToolOutput,\n SiteAuthConnection,\n SiteAuthConnectionListResponse,\n StartAuthRunRequest,\n UpdateBrowserIdentityRequest,\n VerifyAuthRunRequest,\n} from \"@opengeni/contracts\";\nimport type { CodemodeCallOptions, CodemodeClient } from \"./index\";\nimport { environmentCodemodeClient, type CodemodeClientProvider } from \"./environment\";\nimport { CodemodeArtifactCollection } from \"./artifacts\";\nimport { callStructured, codemodeClientProvider } from \"./structured\";\n\nexport { CodemodeToolExecutionError } from \"./structured\";\n\nconst PATH = {\n discover: [\"interaction\", \"discover\"],\n browserOpen: [\"interaction\", \"browser\", \"open\"],\n browserTabs: [\"interaction\", \"browser\", \"tabs\"],\n browserObserve: [\"interaction\", \"browser\", \"observe\"],\n browserAct: [\"interaction\", \"browser\", \"act\"],\n browserClipboard: [\"interaction\", \"browser\", \"clipboard\"],\n browserDebug: [\"interaction\", \"browser\", \"debug\"],\n browserAuth: [\"interaction\", \"browser\", \"auth\"],\n requestHuman: [\"interaction\", \"requestHuman\"],\n browserIdentity: [\"interaction\", \"browser\", \"identity\"],\n browserPublish: [\"interaction\", \"browser\", \"publish\"],\n browserLifecycle: [\"interaction\", \"browser\", \"lifecycle\"],\n computerOpen: [\"interaction\", \"computer\", \"open\"],\n computerTargets: [\"interaction\", \"computer\", \"targets\"],\n computerObserve: [\"interaction\", \"computer\", \"observe\"],\n computerClipboard: [\"interaction\", \"computer\", \"clipboard\"],\n computerAct: [\"interaction\", \"computer\", \"act\"],\n computerLifecycle: [\"interaction\", \"computer\", \"lifecycle\"],\n} as const;\n\nexport type InteractionDiscovery = {\n browserRevision: number;\n computerRevision: number;\n identityRevision: number;\n attachedBrowserRevision: number;\n browsers: BrowserSession[];\n computers: ComputerSession[];\n identities: BrowserIdentity[];\n attachedBrowsers: AttachedBrowserDevice[];\n};\n\nexport type CodemodeBrowserOpenOptions = {\n browserSessionId?: string | undefined;\n mode?: \"reuse_or_create\" | \"new\" | undefined;\n name?: string | undefined;\n initialUrl?: string | undefined;\n headless?: boolean | undefined;\n placement?: InteractionPlacement | undefined;\n identityId?: string | undefined;\n baseRevisionId?: string | undefined;\n linkedComputerSessionId?: string | undefined;\n};\n\nexport type CodemodeComputerOpenOptions = {\n computerSessionId?: string | undefined;\n mode?: \"reuse_or_create\" | \"new\" | undefined;\n name?: string | undefined;\n placement?: InteractionPlacement | undefined;\n};\n\nexport type BrowserActionFences = {\n expectedTargetGeneration?: string | undefined;\n expectedDocumentGeneration?: string | null | undefined;\n expectedFrameId?: string | null | undefined;\n};\n\nexport type ComputerActionFences = {\n expectedTargetGeneration?: string | undefined;\n expectedObservationId?: string | null | undefined;\n expectedFrameId?: string | null | undefined;\n};\n\n/** Authored object facade over the exact atomic Browser/Computer catalog. */\nexport class OpenGeniCodemode {\n readonly browsers: CodemodeBrowserCollection;\n readonly computers: CodemodeComputerCollection;\n readonly artifacts: CodemodeArtifactCollection;\n readonly auth: CodemodeAuth;\n\n constructor(client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient()) {\n const provider = codemodeClientProvider(client);\n this.browsers = new CodemodeBrowserCollection(provider);\n this.computers = new CodemodeComputerCollection(provider);\n this.artifacts = new CodemodeArtifactCollection(provider);\n this.auth = new CodemodeAuth(provider);\n }\n\n async discover(\n options: {\n includeTerminal?: boolean | undefined;\n includeArchivedIdentities?: boolean | undefined;\n includeDisconnectedDevices?: boolean | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<InteractionDiscovery> {\n return await callStructured(this.browsers.client, PATH.discover, options, callOptions);\n }\n\n async requestHuman(\n request: RequestHumanInteractionToolInput,\n callOptions: CodemodeCallOptions = {},\n ): Promise<RequestHumanInteractionToolOutput> {\n return await callStructured(this.browsers.client, PATH.requestHuman, request, callOptions);\n }\n}\n\nexport class CodemodeBrowserCollection {\n readonly identities: CodemodeBrowserIdentityCollection;\n\n constructor(readonly client: CodemodeClientProvider) {\n this.identities = new CodemodeBrowserIdentityCollection(client);\n }\n\n async list(\n options: { includeTerminal?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserSession[]> {\n return (\n await callStructured<InteractionDiscovery>(this.client, PATH.discover, options, callOptions)\n ).browsers;\n }\n\n async open(\n options: CodemodeBrowserOpenOptions = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeBrowser> {\n const opened = await callStructured<{ session: BrowserSession; targets: BrowserTarget[] }>(\n this.client,\n PATH.browserOpen,\n options,\n callOptions,\n );\n return new CodemodeBrowser(this.client, opened.session.id);\n }\n\n use(browserSessionId: string): CodemodeBrowser {\n return new CodemodeBrowser(this.client, browserSessionId);\n }\n}\n\nexport class CodemodeBrowserIdentityCollection {\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async list(\n options: { includeArchived?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserIdentityListResponse> {\n const response = await callStructured<{\n operation: \"list\";\n result: BrowserIdentityListResponse;\n }>(this.client, PATH.browserIdentity, { operation: \"list\", ...options }, callOptions);\n return response.result;\n }\n\n async get(identityId: string, callOptions: CodemodeCallOptions = {}): Promise<BrowserIdentity> {\n const response = await callStructured<{ operation: \"get\"; result: BrowserIdentity }>(\n this.client,\n PATH.browserIdentity,\n { operation: \"get\", identityId },\n callOptions,\n );\n return response.result;\n }\n\n async create(\n name: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserIdentityMutationResponse> {\n const response = await callStructured<{\n operation: \"create\";\n result: BrowserIdentityMutationResponse;\n }>(this.client, PATH.browserIdentity, { operation: \"create\", name }, callOptions);\n return response.result;\n }\n\n async revisions(\n identityId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserRevisionListResponse> {\n const response = await callStructured<{\n operation: \"revisions\";\n result: BrowserRevisionListResponse;\n }>(this.client, PATH.browserIdentity, { operation: \"revisions\", identityId }, callOptions);\n return response.result;\n }\n\n async update(\n identityId: string,\n update: Omit<UpdateBrowserIdentityRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserIdentityMutationResponse> {\n const response = await callStructured<{\n operation: \"update\";\n result: BrowserIdentityMutationResponse;\n }>(\n this.client,\n PATH.browserIdentity,\n { operation: \"update\", identityId, ...update },\n callOptions,\n );\n return response.result;\n }\n}\n\nexport class CodemodeBrowser {\n readonly tabs: CodemodeBrowserTabCollection;\n readonly auth: CodemodeBrowserAuth;\n readonly clipboard: CodemodeBrowserClipboard;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n ) {\n this.tabs = new CodemodeBrowserTabCollection(client, id);\n this.auth = new CodemodeBrowserAuth(client, id);\n this.clipboard = new CodemodeBrowserClipboard(client, id, this.tabs);\n }\n\n async refresh(callOptions: CodemodeCallOptions = {}): Promise<BrowserSession> {\n const result = await callStructured<{ session: BrowserSession; targets: BrowserTarget[] }>(\n this.client,\n PATH.browserOpen,\n { browserSessionId: this.id },\n callOptions,\n );\n return result.session;\n }\n\n async observe(\n targetId?: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserObservation> {\n return await this.tabs\n .use(await this.tabs.resolveId(targetId, callOptions))\n .observe(callOptions);\n }\n\n async act(\n action: BrowserAction,\n options: BrowserActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n const targetId = await this.tabs.resolveId(options.targetId, callOptions);\n return await this.tabs.use(targetId).act(action, options, callOptions);\n }\n\n async diagnostics(\n targetId?: string,\n options: {\n kinds?: BrowserDiagnosticKind[] | undefined;\n after?: number | undefined;\n limit?: number | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserDiagnosticBatch> {\n return await callStructured(\n this.client,\n PATH.browserDebug,\n {\n browserSessionId: this.id,\n targetId: await this.tabs.resolveId(targetId, callOptions),\n ...options,\n },\n callOptions,\n );\n }\n\n async publish(\n input: {\n identityId: string;\n expectedHeadGeneration: number;\n advanceDefault?: boolean | undefined;\n },\n callOptions: CodemodeCallOptions = {},\n ): Promise<PublishBrowserRevisionResponse> {\n return await callStructured(\n this.client,\n PATH.browserPublish,\n { browserSessionId: this.id, ...input },\n callOptions,\n );\n }\n\n async suspend(callOptions: CodemodeCallOptions = {}): Promise<BrowserSessionMutationResponse> {\n return await this.lifecycle(\"suspend\", callOptions);\n }\n\n async resume(callOptions: CodemodeCallOptions = {}): Promise<BrowserSessionMutationResponse> {\n return await this.lifecycle(\"resume\", callOptions);\n }\n\n async end(callOptions: CodemodeCallOptions = {}): Promise<BrowserSessionMutationResponse> {\n return await this.lifecycle(\"end\", callOptions);\n }\n\n private async lifecycle(\n action: \"suspend\" | \"resume\" | \"end\",\n callOptions: CodemodeCallOptions,\n ): Promise<BrowserSessionMutationResponse> {\n return await callStructured(\n this.client,\n PATH.browserLifecycle,\n { browserSessionId: this.id, action },\n callOptions,\n );\n }\n}\n\nexport class CodemodeBrowserClipboard {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly browserSessionId: string,\n private readonly tabs: CodemodeBrowserTabCollection,\n ) {}\n\n async read(callOptions: CodemodeCallOptions = {}): Promise<BrowserClipboard> {\n return await callStructured(\n this.client,\n PATH.browserClipboard,\n { browserSessionId: this.browserSessionId },\n callOptions,\n );\n }\n\n async write(\n text: string,\n options: BrowserActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await this.act({ type: \"clipboard\", operation: \"write\", text }, options, callOptions);\n }\n\n async clear(\n options: BrowserActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await this.act({ type: \"clipboard\", operation: \"clear\" }, options, callOptions);\n }\n\n async copy(\n options: BrowserActionFences & {\n targetId?: string | undefined;\n locator?: BrowserLocator | undefined;\n content?: \"selection\" | \"value\" | \"text\" | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n const {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n ...copy\n } = options;\n return await this.act(\n { type: \"clipboard\", operation: \"copy\", ...copy },\n {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n },\n callOptions,\n );\n }\n\n async paste(\n options: BrowserActionFences & {\n targetId?: string | undefined;\n locator?: BrowserLocator | undefined;\n text?: string | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n const {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n ...paste\n } = options;\n return await this.act(\n { type: \"clipboard\", operation: \"paste\", ...paste },\n {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n },\n callOptions,\n );\n }\n\n private async act(\n action: BrowserAction,\n options: BrowserActionFences & { targetId?: string | undefined },\n callOptions: CodemodeCallOptions,\n ): Promise<BrowserActionReceipt> {\n const { targetId, ...fences } = options;\n return await this.tabs\n .use(await this.tabs.resolveId(targetId, callOptions))\n .act(action, fences, callOptions);\n }\n}\n\nexport class CodemodeBrowserTabCollection {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly browserSessionId: string,\n ) {}\n\n async list(callOptions: CodemodeCallOptions = {}): Promise<BrowserTargetListResponse> {\n return await callStructured(\n this.client,\n PATH.browserTabs,\n { operation: \"list\", browserSessionId: this.browserSessionId },\n callOptions,\n );\n }\n\n async selected(callOptions: CodemodeCallOptions = {}): Promise<CodemodeBrowserTab> {\n return this.use(await this.resolveId(undefined, callOptions));\n }\n\n use(targetId: string): CodemodeBrowserTab {\n return new CodemodeBrowserTab(this.client, this.browserSessionId, targetId);\n }\n\n async open(url?: string, callOptions: CodemodeCallOptions = {}): Promise<CodemodeBrowserTab> {\n const before = await this.list(callOptions);\n const after = await callStructured<BrowserTargetListResponse>(\n this.client,\n PATH.browserTabs,\n {\n operation: \"open\",\n browserSessionId: this.browserSessionId,\n ...(url ? { url } : {}),\n },\n callOptions,\n );\n const beforeIds = new Set(before.targets.map((target) => target.id));\n const opened =\n after.targets.find((target) => !beforeIds.has(target.id)) ??\n after.targets.find((target) => target.selected);\n if (!opened) throw new Error(\"Browser opened no discoverable tab\");\n return this.use(opened.id);\n }\n\n async select(\n targetId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeBrowserTab> {\n const after = await callStructured<BrowserTargetListResponse>(\n this.client,\n PATH.browserTabs,\n { operation: \"select\", browserSessionId: this.browserSessionId, targetId },\n callOptions,\n );\n if (!after.targets.some((target) => target.id === targetId && target.selected)) {\n throw new Error(\"Browser did not select the requested tab\");\n }\n return this.use(targetId);\n }\n\n async close(\n targetId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserTargetListResponse> {\n return await callStructured(\n this.client,\n PATH.browserTabs,\n { operation: \"close\", browserSessionId: this.browserSessionId, targetId },\n callOptions,\n );\n }\n\n async resolveId(targetId: string | undefined, callOptions: CodemodeCallOptions): Promise<string> {\n const listed = await this.list(callOptions);\n if (targetId) {\n if (!listed.targets.some((target) => target.id === targetId)) {\n throw new Error(`Browser tab is unavailable: ${targetId}`);\n }\n return targetId;\n }\n const selected = listed.targets.filter((target) => target.selected);\n if (selected.length === 1) return selected[0]!.id;\n if (listed.targets.length === 1) return listed.targets[0]!.id;\n if (listed.targets.length === 0) throw new Error(\"Browser has no tabs\");\n throw new Error(\"Browser target is ambiguous; select an exact tab\");\n }\n}\n\nexport class CodemodeBrowserTab {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly browserSessionId: string,\n readonly id: string,\n ) {}\n\n async observe(callOptions: CodemodeCallOptions = {}): Promise<BrowserObservation> {\n return await callStructured(\n this.client,\n PATH.browserObserve,\n { browserSessionId: this.browserSessionId, targetId: this.id },\n callOptions,\n );\n }\n\n async act(\n action: BrowserAction,\n fences: BrowserActionFences = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await callStructured(\n this.client,\n PATH.browserAct,\n { browserSessionId: this.browserSessionId, targetId: this.id, action, ...fences },\n callOptions,\n );\n }\n\n async navigate(url: string, callOptions: CodemodeCallOptions = {}) {\n return await this.act({ type: \"navigate\", url }, {}, callOptions);\n }\n\n async setPermission(\n permission: BrowserPermission,\n setting: BrowserPermissionSetting,\n fences: BrowserActionFences = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await this.act({ type: \"permission\", permission, setting }, fences, callOptions);\n }\n\n async requestHuman(\n reason: string,\n options: {\n kind?: \"manual_login\" | \"mfa\" | \"external_action\" | \"confirmation\" | \"other\";\n authRunId?: string | undefined;\n expiresInSeconds?: number | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<RequestHumanInteractionToolOutput> {\n const observation = await this.observe(callOptions);\n return await callStructured(\n this.client,\n PATH.requestHuman,\n {\n operation: \"request\",\n resourceKind: \"browser_session\",\n resourceId: this.browserSessionId,\n targetId: this.id,\n expectedControllerGeneration: observation.target.controllerGeneration,\n expectedTargetGeneration: observation.target.targetGeneration,\n expectedDocumentGeneration: observation.target.documentGeneration,\n kind: options.kind ?? \"other\",\n reason,\n ...(options.authRunId ? { authRunId: options.authRunId } : {}),\n ...(options.expiresInSeconds === undefined\n ? {}\n : { expiresInSeconds: options.expiresInSeconds }),\n },\n callOptions,\n );\n }\n\n getByRole(role: string, options: { name?: string; exact?: boolean } = {}) {\n return new CodemodeBrowserLocator(this, { kind: \"role\", role, ...options });\n }\n\n getByText(text: string) {\n return new CodemodeBrowserLocator(this, { kind: \"text\", text });\n }\n\n getByLabel(text: string) {\n return new CodemodeBrowserLocator(this, { kind: \"label\", text });\n }\n\n getByPlaceholder(text: string) {\n return new CodemodeBrowserLocator(this, { kind: \"placeholder\", text });\n }\n\n getByTestId(value: string) {\n return new CodemodeBrowserLocator(this, { kind: \"test_id\", value });\n }\n\n locator(selector: string) {\n return new CodemodeBrowserLocator(this, { kind: \"css\", selector });\n }\n\n ref(ref: string) {\n return new CodemodeBrowserLocator(this, { kind: \"ref\", ref });\n }\n}\n\nexport class CodemodeBrowserLocator {\n constructor(\n private readonly tab: CodemodeBrowserTab,\n readonly locator: BrowserLocator,\n ) {}\n\n async click(\n options: { button?: \"left\" | \"right\" | \"middle\" } = {},\n callOptions: CodemodeCallOptions = {},\n ) {\n return await this.tab.act(\n { type: \"click\", locator: this.locator, ...options },\n {},\n callOptions,\n );\n }\n\n async doubleClick(callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"double_click\", locator: this.locator }, {}, callOptions);\n }\n\n async hover(callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"hover\", locator: this.locator }, {}, callOptions);\n }\n\n async fill(value: string, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"fill\", locator: this.locator, value }, {}, callOptions);\n }\n\n async type(text: string, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"type\", locator: this.locator, text }, {}, callOptions);\n }\n\n async press(key: string, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"press\", locator: this.locator, key }, {}, callOptions);\n }\n\n async select(values: string[], callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"select\", locator: this.locator, values }, {}, callOptions);\n }\n\n async check(checked = true, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"check\", locator: this.locator, checked }, {}, callOptions);\n }\n}\n\nexport class CodemodeAuth {\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async listConnections(\n options: { includeArchived?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<SiteAuthConnectionListResponse> {\n const response = await callStructured<{\n operation: \"list_connections\";\n result: SiteAuthConnectionListResponse;\n }>(this.client, PATH.browserAuth, { operation: \"list_connections\", ...options }, callOptions);\n return response.result;\n }\n\n async getConnection(\n siteAuthConnectionId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<SiteAuthConnection> {\n const response = await callStructured<{\n operation: \"get_connection\";\n result: SiteAuthConnection;\n }>(\n this.client,\n PATH.browserAuth,\n { operation: \"get_connection\", siteAuthConnectionId },\n callOptions,\n );\n return response.result;\n }\n\n async listRuns(\n options: {\n browserSessionId?: string | undefined;\n siteAuthConnectionId?: string | undefined;\n includeSettled?: boolean | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunListResponse> {\n const response = await callStructured<{ operation: \"list_runs\"; result: AuthRunListResponse }>(\n this.client,\n PATH.browserAuth,\n { operation: \"list_runs\", ...options },\n callOptions,\n );\n return response.result;\n }\n\n async getRun(authRunId: string, callOptions: CodemodeCallOptions = {}): Promise<AuthRun> {\n const response = await callStructured<{ operation: \"get_run\"; result: AuthRun }>(\n this.client,\n PATH.browserAuth,\n { operation: \"get_run\", authRunId },\n callOptions,\n );\n return response.result;\n }\n\n use(browserSessionId: string, authRunId: string): CodemodeAuthRun {\n return new CodemodeAuthRun(this.client, browserSessionId, authRunId);\n }\n}\n\nexport class CodemodeBrowserAuth {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly browserSessionId: string,\n ) {}\n\n async listRuns(\n options: {\n siteAuthConnectionId?: string | undefined;\n includeSettled?: boolean | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunListResponse> {\n const response = await callStructured<{ operation: \"list_runs\"; result: AuthRunListResponse }>(\n this.client,\n PATH.browserAuth,\n { operation: \"list_runs\", browserSessionId: this.browserSessionId, ...options },\n callOptions,\n );\n return response.result;\n }\n\n async start(\n request: Omit<StartAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeAuthRun> {\n const response = await callStructured<{ operation: \"start\"; result: AuthRunMutationResponse }>(\n this.client,\n PATH.browserAuth,\n { operation: \"start\", browserSessionId: this.browserSessionId, ...request },\n callOptions,\n );\n return this.use(response.result.run.id);\n }\n\n use(authRunId: string): CodemodeAuthRun {\n return new CodemodeAuthRun(this.client, this.browserSessionId, authRunId);\n }\n}\n\nexport class CodemodeAuthRun {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly browserSessionId: string,\n readonly id: string,\n ) {}\n\n async get(callOptions: CodemodeCallOptions = {}): Promise<AuthRun> {\n const response = await callStructured<{ operation: \"get_run\"; result: AuthRun }>(\n this.client,\n PATH.browserAuth,\n { operation: \"get_run\", authRunId: this.id },\n callOptions,\n );\n if (response.result.browserSessionId !== this.browserSessionId) {\n throw new Error(\"Auth run belongs to another BrowserSession\");\n }\n return response.result;\n }\n\n async report(\n request: Omit<ReportAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunMutationResponse> {\n const response = await callStructured<{ operation: \"report\"; result: AuthRunMutationResponse }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"report\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n\n async protectedFill(\n request: Omit<ProtectedAuthFillRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<ProtectedAuthFillResponse> {\n const response = await callStructured<{\n operation: \"protected_fill\";\n result: ProtectedAuthFillResponse;\n }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"protected_fill\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n\n async advanceExternal(\n request: Omit<ExternalAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<ExternalAuthRunResponse> {\n const response = await callStructured<{\n operation: \"advance_external\";\n result: ExternalAuthRunResponse;\n }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"advance_external\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n\n async verify(\n request: Omit<VerifyAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunMutationResponse> {\n const response = await callStructured<{ operation: \"verify\"; result: AuthRunMutationResponse }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"verify\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n}\n\nexport class CodemodeComputerCollection {\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async list(\n options: { includeTerminal?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerSession[]> {\n return (\n await callStructured<InteractionDiscovery>(this.client, PATH.discover, options, callOptions)\n ).computers;\n }\n\n async open(\n options: CodemodeComputerOpenOptions = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeComputer> {\n const opened = await callStructured<{ session: ComputerSession; targets: ComputerTarget[] }>(\n this.client,\n PATH.computerOpen,\n options,\n callOptions,\n );\n return new CodemodeComputer(this.client, opened.session.id);\n }\n\n use(computerSessionId: string): CodemodeComputer {\n return new CodemodeComputer(this.client, computerSessionId);\n }\n}\n\nexport class CodemodeComputer {\n readonly targets: CodemodeComputerTargetCollection;\n readonly apps: CodemodeComputerTargetCollection;\n readonly clipboard: CodemodeComputerClipboard;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n ) {\n this.targets = new CodemodeComputerTargetCollection(client, id);\n this.apps = this.targets;\n this.clipboard = new CodemodeComputerClipboard(client, id, this.targets);\n }\n\n async refresh(callOptions: CodemodeCallOptions = {}): Promise<ComputerSession> {\n const result = await callStructured<{ session: ComputerSession; targets: ComputerTarget[] }>(\n this.client,\n PATH.computerOpen,\n { computerSessionId: this.id },\n callOptions,\n );\n return result.session;\n }\n\n async observe(\n targetId?: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerObservation> {\n return await this.targets\n .use(await this.targets.resolveId(targetId, callOptions))\n .observe(callOptions);\n }\n\n async act(\n action: ComputerAction,\n options: ComputerActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.targets\n .use(await this.targets.resolveId(options.targetId, callOptions))\n .act(action, options, callOptions);\n }\n\n async launch(applicationId: string, callOptions: CodemodeCallOptions = {}) {\n const targetId = await this.targets.resolveId(undefined, callOptions);\n await this.targets.use(targetId).act({ type: \"launch\", applicationId }, {}, callOptions);\n return await this.targets.list(callOptions);\n }\n\n async end(callOptions: CodemodeCallOptions = {}): Promise<ComputerSessionMutationResponse> {\n return await callStructured(\n this.client,\n PATH.computerLifecycle,\n { computerSessionId: this.id, action: \"end\" },\n callOptions,\n );\n }\n}\n\nexport class CodemodeComputerClipboard {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly computerSessionId: string,\n private readonly targets: CodemodeComputerTargetCollection,\n ) {}\n\n async read(callOptions: CodemodeCallOptions = {}): Promise<ComputerClipboard> {\n return await callStructured(\n this.client,\n PATH.computerClipboard,\n { computerSessionId: this.computerSessionId },\n callOptions,\n );\n }\n\n async write(\n text: string,\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"write\", text }, options, callOptions);\n }\n\n async clear(\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"clear\" }, options, callOptions);\n }\n\n async copy(\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"copy\" }, options, callOptions);\n }\n\n async paste(\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"paste\" }, options, callOptions);\n }\n\n private async mutate(\n action: Extract<ComputerAction, { type: \"clipboard\" }>,\n options: { targetId?: string | undefined },\n callOptions: CodemodeCallOptions,\n ): Promise<ComputerActionReceipt> {\n const targetId = await this.targets.resolveSeatId(options.targetId, callOptions);\n return await this.targets.use(targetId).act(action, {}, callOptions);\n }\n}\n\nexport class CodemodeComputerTargetCollection {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly computerSessionId: string,\n ) {}\n\n async list(callOptions: CodemodeCallOptions = {}): Promise<ComputerTargetListResponse> {\n return await callStructured(\n this.client,\n PATH.computerTargets,\n { computerSessionId: this.computerSessionId },\n callOptions,\n );\n }\n\n use(targetId: string): CodemodeComputerTarget {\n return new CodemodeComputerTarget(this.client, this.computerSessionId, targetId);\n }\n\n async focused(callOptions: CodemodeCallOptions = {}): Promise<CodemodeComputerTarget> {\n return this.use(await this.resolveId(undefined, callOptions));\n }\n\n async resolveId(targetId: string | undefined, callOptions: CodemodeCallOptions): Promise<string> {\n const listed = await this.list(callOptions);\n if (targetId) {\n if (!listed.targets.some((target) => target.id === targetId)) {\n throw new Error(`Computer target is unavailable: ${targetId}`);\n }\n return targetId;\n }\n const focused = listed.targets.filter((target) => target.focused);\n if (focused.length === 1) return focused[0]!.id;\n if (listed.targets.length === 1) return listed.targets[0]!.id;\n if (listed.targets.length === 0)\n throw new Error(\"Computer has no app, window, or screen targets\");\n throw new Error(\"Computer target is ambiguous; select an exact app or window\");\n }\n\n async resolveSeatId(\n targetId: string | undefined,\n callOptions: CodemodeCallOptions,\n ): Promise<string> {\n if (targetId) return await this.resolveId(targetId, callOptions);\n const listed = await this.list(callOptions);\n const screens = listed.targets.filter((target) => target.kind === \"screen\");\n if (screens.length === 1) return screens[0]!.id;\n return await this.resolveId(undefined, callOptions);\n }\n}\n\nexport class CodemodeComputerTarget {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly computerSessionId: string,\n readonly id: string,\n ) {}\n\n async observe(callOptions: CodemodeCallOptions = {}): Promise<ComputerObservation> {\n return await callStructured(\n this.client,\n PATH.computerObserve,\n { computerSessionId: this.computerSessionId, targetId: this.id },\n callOptions,\n );\n }\n\n async act(\n action: ComputerAction,\n fences: ComputerActionFences = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await callStructured(\n this.client,\n PATH.computerAct,\n { computerSessionId: this.computerSessionId, targetId: this.id, action, ...fences },\n callOptions,\n );\n }\n\n async requestHuman(\n reason: string,\n options: {\n kind?: \"manual_login\" | \"mfa\" | \"external_action\" | \"confirmation\" | \"other\";\n expiresInSeconds?: number | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<RequestHumanInteractionToolOutput> {\n const observation = await this.observe(callOptions);\n return await callStructured(\n this.client,\n PATH.requestHuman,\n {\n operation: \"request\",\n resourceKind: \"computer_session\",\n resourceId: this.computerSessionId,\n targetId: this.id,\n expectedControllerGeneration: observation.target.controllerGeneration,\n expectedTargetGeneration: observation.target.targetGeneration,\n expectedDocumentGeneration: null,\n kind: options.kind ?? \"other\",\n reason,\n ...(options.expiresInSeconds === undefined\n ? {}\n : { expiresInSeconds: options.expiresInSeconds }),\n },\n callOptions,\n );\n }\n\n getByRole(role: string, options: { name?: string; exact?: boolean } = {}) {\n return new CodemodeComputerLocator(this, { kind: \"role\", role, ...options });\n }\n\n getByText(text: string, exact?: boolean) {\n return new CodemodeComputerLocator(this, { kind: \"text\", text, ...(exact ? { exact } : {}) });\n }\n\n getByLabel(text: string, exact?: boolean) {\n return new CodemodeComputerLocator(this, { kind: \"label\", text, ...(exact ? { exact } : {}) });\n }\n\n getByIdentifier(value: string) {\n return new CodemodeComputerLocator(this, { kind: \"identifier\", value });\n }\n\n ref(ref: string) {\n return new CodemodeComputerLocator(this, { kind: \"ref\", ref });\n }\n}\n\nexport class CodemodeComputerLocator {\n constructor(\n private readonly target: CodemodeComputerTarget,\n readonly locator: ComputerLocator,\n ) {}\n\n async invoke(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"invoke\", undefined, callOptions);\n }\n\n async focus(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"focus\", undefined, callOptions);\n }\n\n async setValue(value: string | number | boolean, callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"set_value\", value, callOptions);\n }\n\n async select(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"select\", undefined, callOptions);\n }\n\n async expand(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"expand\", undefined, callOptions);\n }\n\n async collapse(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"collapse\", undefined, callOptions);\n }\n\n private async semantic(\n action: Extract<ComputerAction, { type: \"semantic\" }>[\"action\"],\n value: string | number | boolean | undefined,\n callOptions: CodemodeCallOptions,\n ) {\n return await this.target.act(\n {\n type: \"semantic\",\n locator: this.locator,\n action,\n ...(value === undefined ? {} : { value }),\n },\n {},\n callOptions,\n );\n }\n}\n\nexport function createOpenGeniCodemode(\n client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient(),\n) {\n return new OpenGeniCodemode(client);\n}\n\nexport const openGeni = createOpenGeniCodemode();\n","import type { AttemptToolCatalog } from \"@opengeni/contracts\";\nimport { generateToolDeclarations, jsonSchemaToTypeScript } from \"@opengeni/tool-gateway\";\nimport { parseVerifiedAttemptToolCatalog } from \"./index\";\n\nexport type GenerateCodemodeDeclarationsOptions = {\n /** Package whose augmentable CodemodeGeneratedTools interface owns the namespace. */\n moduleSpecifier?: string;\n};\n\n/**\n * Generate declaration merging for one exact, digest-pinned attempt catalog.\n * Types improve authoring only; runtime catalog validation remains authoritative.\n */\nexport function generateCodemodeDeclarations(\n catalog: AttemptToolCatalog,\n options: GenerateCodemodeDeclarationsOptions = {},\n): string {\n const verified = parseVerifiedAttemptToolCatalog(catalog);\n return generateToolDeclarations(\n { digest: verified.digest, entries: verified.entries },\n {\n moduleSpecifier: options.moduleSpecifier ?? \"@opengeni/codemode\",\n interfaceName: \"CodemodeGeneratedTools\",\n callOptionsType: \"CodemodeCallOptions\",\n fallbackResultType: \"CodemodeToolResult\",\n generatedBy: \"@opengeni/codemode via @opengeni/tool-gateway\",\n catalogDigestLabel: \"Attempt catalog digest\",\n },\n );\n}\n\nexport { jsonSchemaToTypeScript };\n","import { siteRequestHeaders } from \"@opengeni/contracts/site-session-http\";\nimport { randomUUID } from \"node:crypto\";\nimport { generateToolDeclarations } from \"@opengeni/tool-gateway\";\nimport { SITE_BROWSER_RUNTIME, SITE_CLIENT_SCRIPT_PATH } from \"@opengeni/sdk/site-document\";\n\nimport { CodemodeClient, CodemodeTransportError } from \"./index\";\nimport { environmentCodemodeClient, type CodemodeClientProvider } from \"./environment\";\n\nexport const CODEMODE_SITE_LOCAL_PATH = \"/__opengeni/site-tools\" as const;\n\nexport type CodemodeSiteRequestHandler = (request: Request) => Promise<Response>;\n\n/**\n * Same-origin local Site preview adapter. The Bun host retains the exact\n * attempt bearer; browser code receives only the ordinary Site tool protocol.\n */\nexport function createCodemodeSiteRequestHandler(\n client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient(),\n): CodemodeSiteRequestHandler {\n const provide = typeof client === \"function\" ? client : () => client;\n return async (request) => {\n try {\n const pathname = new URL(request.url).pathname;\n if (pathname === SITE_CLIENT_SCRIPT_PATH) {\n if (request.method !== \"GET\" && request.method !== \"HEAD\")\n return new Response(\"Method not allowed\", {\n status: 405,\n headers: { allow: \"GET, HEAD\" },\n });\n return new Response(request.method === \"HEAD\" ? null : SITE_BROWSER_RUNTIME, {\n headers: {\n \"content-type\": \"text/javascript; charset=utf-8\",\n \"cache-control\": \"no-cache\",\n },\n });\n }\n const active = await provide();\n if (pathname.startsWith(`${CODEMODE_SITE_LOCAL_PATH}/sdk/`)) {\n const path =\n pathname.slice(`${CODEMODE_SITE_LOCAL_PATH}/sdk`.length) + new URL(request.url).search;\n const response = await active.sessionRequest(path, {\n method: request.method,\n signal: request.signal,\n headers: siteRequestHeaders(request.headers),\n ...(request.body ? { body: await request.text() } : {}),\n });\n // Fetch decodes compressed upstream bodies. Forward decoded bytes with\n // fresh transport headers, or the preview browser decompresses twice.\n const headers = new Headers(response.headers);\n headers.delete(\"content-encoding\");\n headers.delete(\"content-length\");\n headers.delete(\"transfer-encoding\");\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n }\n if (request.method === \"GET\" && pathname === `${CODEMODE_SITE_LOCAL_PATH}/catalog`) {\n const catalog = await active.catalog({ signal: request.signal });\n return Response.json(projectSiteCatalog(catalog));\n }\n if (request.method === \"GET\" && pathname === `${CODEMODE_SITE_LOCAL_PATH}/declarations`) {\n const catalog = await active.catalog({ signal: request.signal });\n return Response.json({\n catalogDigest: catalog.digest,\n moduleSpecifier: \"@opengeni/sdk\",\n source: generateToolDeclarations(\n { digest: catalog.digest, entries: catalog.entries },\n {\n moduleSpecifier: \"@opengeni/sdk\",\n interfaceName: \"OpenGeniGeneratedTools\",\n callOptionsType: \"OpenGeniToolCallOptions\",\n fallbackResultType: \"ToolGatewayResult\",\n generatedBy: \"@opengeni/codemode local Site preview\",\n catalogDigestLabel: \"Attempt catalog digest\",\n },\n ),\n });\n }\n if (request.method === \"POST\" && pathname === `${CODEMODE_SITE_LOCAL_PATH}/calls`) {\n const body = await request.json();\n if (!isSiteCall(body)) return siteError(400, \"invalid_request\", \"Invalid Site tool call\");\n const catalog = await active.catalog({ signal: request.signal });\n if (body.catalogDigest !== catalog.digest) {\n return siteError(409, \"catalog_stale\", \"The local Site tool catalog changed\", true);\n }\n const operationId = body.operationId ?? randomUUID();\n const result = await active.call(body.identity, body.arguments, {\n operationId,\n signal: request.signal,\n });\n return Response.json({\n operationId,\n catalogDigest: catalog.digest,\n result,\n });\n }\n return siteError(404, \"not_found\", \"Local Site tool endpoint not found\");\n } catch (error) {\n if (error instanceof CodemodeTransportError) {\n return siteError(\n error.status && error.status >= 400 && error.status <= 599 ? error.status : 502,\n error.remoteCode ?? error.code,\n error.message,\n error.retryable === true,\n error.outcomeUnknown === true,\n );\n }\n return siteError(\n 500,\n \"local_codemode_error\",\n error instanceof Error ? error.message : \"Local Site tool request failed\",\n );\n }\n };\n}\n\nfunction projectSiteCatalog(catalog: Awaited<ReturnType<CodemodeClient[\"catalog\"]>>) {\n return {\n version: catalog.version,\n generation: catalog.generation,\n digest: catalog.digest,\n createdAt: catalog.createdAt,\n entries: catalog.entries,\n };\n}\n\nfunction isSiteCall(value: unknown): value is {\n operationId?: string;\n catalogDigest: string;\n identity: { serverId: string; toolName: string };\n arguments: Record<string, unknown>;\n} {\n if (!isRecord(value) || typeof value.catalogDigest !== \"string\") return false;\n if (value.operationId !== undefined && typeof value.operationId !== \"string\") return false;\n return (\n isRecord(value.identity) &&\n typeof value.identity.serverId === \"string\" &&\n typeof value.identity.toolName === \"string\" &&\n isRecord(value.arguments)\n );\n}\n\nfunction siteError(\n status: number,\n code: string,\n message: string,\n retryable = false,\n outcomeUnknown = false,\n): Response {\n return Response.json(\n {\n error: {\n code,\n message,\n retryable,\n ...(outcomeUnknown ? { outcomeUnknown: true } : {}),\n },\n },\n { status },\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"mappings":"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","names":["randomUUID","PATH","generateToolDeclarations","generateToolDeclarations","randomUUID"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/environment.ts","../src/artifacts.ts","../src/structured.ts","../src/interaction.ts","../src/declarations.ts","../src/site.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n ATTEMPT_TOOL_CATALOG_VERSION,\n ATTEMPT_TOOL_CATALOG_MAX_BYTES,\n AttemptToolCall,\n AttemptToolCatalog,\n AttemptToolResult,\n CodemodeCallSubmission,\n CodemodeOperation,\n CodemodeDispatchAck,\n CodemodeDispatchRequest,\n type AttemptToolCall as AttemptToolCallValue,\n AttemptToolCaller,\n type AttemptToolCatalog as AttemptToolCatalogValue,\n type AttemptToolCatalogEntry as AttemptToolCatalogEntryValue,\n type AttemptToolIdentity,\n type AttemptToolResult as AttemptToolResultValue,\n type CodemodeDispatchAck as CodemodeDispatchAckValue,\n type CodemodeDispatchRequest as CodemodeDispatchRequestValue,\n type CodemodeOperation as CodemodeOperationValue,\n} from \"@opengeni/contracts\";\nimport {\n ToolGateway,\n ToolGatewayApprovalRequiredError as AttemptToolApprovalRequiredError,\n ToolGatewayCatalogIntegrityError as AttemptToolCatalogIntegrityError,\n ToolGatewayCatalogStaleError as AttemptToolCatalogStaleError,\n ToolGatewayCatalogTooLargeError as AttemptToolCatalogTooLargeError,\n ToolGatewayInputValidationError as AttemptToolInputValidationError,\n ToolGatewayOutputValidationError as AttemptToolOutputValidationError,\n ToolGatewayPathCollisionError as AttemptToolPathCollisionError,\n ToolGatewayToolNotFoundError as AttemptToolNotFoundError,\n digestCanonicalJson,\n prepareToolGatewayDefinitions,\n type PreparedToolGatewayCall,\n type ToolGatewayCallLifecycle,\n type ToolGatewayDefinition,\n} from \"@opengeni/tool-gateway\";\n\nimport { siteSessionPath } from \"@opengeni/contracts/site-session-http\";\n\nexport type { AttemptToolCatalog, AttemptToolCatalogEntry } from \"@opengeni/contracts\";\n\nexport type AttemptToolScope = Pick<\n AttemptToolCatalogValue,\n \"accountId\" | \"workspaceId\" | \"sessionId\" | \"turnId\" | \"attemptId\" | \"executionGeneration\"\n>;\n\nexport type AttemptToolExecutionContext = {\n operationId: string;\n caller: AttemptToolCaller;\n /** Trusted in-process SDK correlation; not operation identity or approval authority. */\n sourceCallId?: string;\n /** In-process transport metadata; never part of catalog identity or digest. */\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n};\n\nexport type AttemptToolDefinition = Omit<AttemptToolCatalogEntryValue, \"codemodePath\"> & {\n /** Optional human-readable path. Unsafe/colliding segments are normalized. */\n codemodePath?: readonly string[];\n /** In-process execution lifecycle shared by model MCP and Codemode. */\n lifecycle?: ToolGatewayCallLifecycle;\n execute: (\n args: Record<string, unknown>,\n context: AttemptToolExecutionContext,\n ) => Promise<AttemptToolResultValue> | AttemptToolResultValue;\n};\n\nexport type AttemptToolAuthorization = (input: {\n call: AttemptToolCallValue;\n entry: AttemptToolCatalogEntryValue;\n}) => Promise<void> | void;\n\nexport type CreateAttemptToolEnvironmentInput = {\n scope: AttemptToolScope;\n generation: number;\n definitions: readonly AttemptToolDefinition[];\n createdAt?: Date;\n authorize?: AttemptToolAuthorization;\n /** Host-only approval projection for one exact model invocation. */\n confirmModelApproval?: (input: { modelName: string; subjectId: string }) => boolean;\n};\n\nexport type ModelAttemptToolCall = {\n operationId?: string;\n /** Exact SDK call id supplied by the host, never inferred from arguments or metadata. */\n sourceCallId?: string;\n modelName: string;\n arguments: Record<string, unknown>;\n subjectId: string;\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n};\n\nexport {\n AttemptToolCatalogStaleError,\n AttemptToolNotFoundError,\n AttemptToolApprovalRequiredError,\n AttemptToolCatalogIntegrityError,\n AttemptToolCatalogTooLargeError,\n AttemptToolInputValidationError,\n AttemptToolOutputValidationError,\n AttemptToolPathCollisionError,\n};\n\nexport class CodemodeTransportError extends Error {\n readonly code = \"codemode_transport_error\";\n readonly remoteCode: string | null;\n readonly retryable: boolean | null;\n readonly outcomeUnknown: boolean | null;\n readonly details: Readonly<Record<string, unknown>> | null;\n\n constructor(\n message: string,\n readonly status: number | null = null,\n options: {\n code?: string;\n retryable?: boolean;\n outcomeUnknown?: boolean;\n details?: Readonly<Record<string, unknown>>;\n } = {},\n ) {\n super(message);\n this.name = \"CodemodeTransportError\";\n this.remoteCode = options.code ?? null;\n this.retryable = options.retryable ?? null;\n this.outcomeUnknown = options.outcomeUnknown ?? null;\n this.details = options.details ?? null;\n }\n}\n\nexport class CodemodeOperationError extends Error {\n constructor(\n readonly operation: CodemodeOperationValue,\n readonly code: string,\n ) {\n super(operation.errorMessage ?? `Codemode operation ${operation.state}`);\n this.name = \"CodemodeOperationError\";\n }\n}\n\nexport type CodemodeTokenProvider = string | (() => string | Promise<string>);\n\nexport type CodemodeClientOptions = {\n /** `/v1/workspaces/:workspaceId/codemode` base URL. */\n baseUrl: string;\n token: CodemodeTokenProvider;\n fetch?: typeof globalThis.fetch;\n pollIntervalMs?: number;\n timeoutMs?: number;\n};\n\nexport type CodemodeCallOptions = {\n operationId?: string;\n /** Stops client observation only; it never cancels an already-created server operation. */\n signal?: AbortSignal;\n timeoutMs?: number;\n};\n\nexport type CodemodeToolFunction = (\n argumentsValue?: Record<string, unknown>,\n options?: CodemodeCallOptions,\n) => Promise<unknown>;\n\nexport type CodemodeToolResult = AttemptToolResultValue;\n\nexport class CodemodeToolCallError extends Error {\n readonly code: string;\n readonly retryable: boolean;\n\n constructor(readonly result: AttemptToolResultValue) {\n const error = structuredToolError(result);\n super(error.message);\n this.name = \"CodemodeToolCallError\";\n this.code = error.code;\n this.retryable = error.retryable;\n }\n}\n\nexport class CodemodeToolContractError extends Error {\n readonly code = \"invalid_tool_result\";\n\n constructor(message: string) {\n super(message);\n this.name = \"CodemodeToolContractError\";\n }\n}\n\nexport interface CodemodeTools {\n [key: string]: CodemodeTools | CodemodeToolFunction;\n}\n\n/** Persistent, idempotent client for one exact sandbox attempt bearer. */\nexport class CodemodeClient {\n private readonly baseUrl: string;\n private readonly fetchImpl: typeof globalThis.fetch;\n private readonly pollIntervalMs: number;\n private readonly timeoutMs: number;\n private catalogSnapshot: AttemptToolCatalogValue | null = null;\n\n constructor(private readonly options: CodemodeClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/+$/u, \"\");\n if (!/^https?:\\/\\//u.test(this.baseUrl)) {\n throw new Error(\"Codemode baseUrl must be an absolute HTTP(S) URL\");\n }\n this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n this.pollIntervalMs = boundedPositiveInteger(options.pollIntervalMs ?? 500, 50, 30_000);\n this.timeoutMs = boundedPositiveInteger(options.timeoutMs ?? 10 * 60_000, 1_000, 60 * 60_000);\n }\n\n async catalog(\n options: { refresh?: boolean; signal?: AbortSignal } = {},\n ): Promise<AttemptToolCatalogValue> {\n if (this.catalogSnapshot && !options.refresh) return this.catalogSnapshot;\n const response = await this.request(\"/catalog\", {\n method: \"GET\",\n ...(options.signal ? { signal: options.signal } : {}),\n });\n const catalog = parseVerifiedAttemptToolCatalog(await response.json());\n this.catalogSnapshot = catalog;\n return catalog;\n }\n\n async tools(options: { refresh?: boolean; signal?: AbortSignal } = {}): Promise<CodemodeTools> {\n return compileCodemodeTools(await this.catalog(options), this);\n }\n\n async call(\n identity: AttemptToolIdentity,\n argumentsValue: Record<string, unknown> = {},\n options: CodemodeCallOptions = {},\n ): Promise<AttemptToolResultValue> {\n return (\n await this.callResolved(\n (catalog) =>\n catalog.entries.find(\n (entry) =>\n entry.identity.serverId === identity.serverId &&\n entry.identity.toolName === identity.toolName,\n ) ?? null,\n argumentsValue,\n options,\n )\n ).result;\n }\n\n private async callResolved(\n resolveEntry: (catalog: AttemptToolCatalogValue) => AttemptToolCatalogEntryValue | null,\n argumentsValue: Record<string, unknown>,\n options: CodemodeCallOptions,\n ): Promise<{ result: AttemptToolResultValue; entry: AttemptToolCatalogEntryValue }> {\n let catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\n let entry = resolveEntry(catalog);\n if (!entry) throw new AttemptToolNotFoundError();\n const operationId = options.operationId ?? randomUUID();\n const deadline =\n Date.now() + boundedPositiveInteger(options.timeoutMs ?? this.timeoutMs, 1_000, 60 * 60_000);\n let submitted = false;\n let staleRefreshAttempted = false;\n let operation: CodemodeOperationValue | null = null;\n let nextNotifyAt = 0;\n while (true) {\n throwIfAborted(options.signal);\n if (Date.now() >= deadline) {\n throw new CodemodeTransportError(\n `Codemode operation ${operationId} did not settle before the client deadline`,\n );\n }\n const shouldNotify =\n !submitted ||\n ((operation?.state === \"queued\" || operation?.state === \"running\") &&\n Date.now() >= nextNotifyAt);\n if (shouldNotify) {\n submitted = true;\n nextNotifyAt = Date.now() + 2_000;\n try {\n operation = await this.submit(\n operationId,\n catalog.digest,\n entry.identity,\n argumentsValue,\n options.signal,\n );\n } catch (error) {\n if (\n operation === null &&\n !staleRefreshAttempted &&\n error instanceof CodemodeTransportError &&\n error.remoteCode === \"codemode_catalog_stale\"\n ) {\n staleRefreshAttempted = true;\n catalog = await this.catalog({\n refresh: true,\n ...(options.signal ? { signal: options.signal } : {}),\n });\n entry = resolveEntry(catalog);\n if (!entry) throw new AttemptToolNotFoundError();\n submitted = false;\n nextNotifyAt = 0;\n continue;\n }\n if (options.signal?.aborted) throw error;\n if (operation === null && !canReconcileCodemodeSubmission(error)) throw error;\n // The POST may have committed before its response was lost, or an\n // already-bound operation may have settled while a later wake\n // notification failed deterministically. The caller-owned id is the\n // recovery handle: read and re-prove the exact binding before\n // deciding that another side effect is necessary.\n let recovered: CodemodeOperationValue;\n try {\n recovered = await this.read(operationId, options.signal);\n } catch (recoveryError) {\n if (options.signal?.aborted) throw recoveryError;\n throw new CodemodeTransportError(\n `Codemode operation ${operationId} could not be reconciled after its submission response failed`,\n null,\n {\n code: \"codemode_operation_recovery_unavailable\",\n retryable: true,\n outcomeUnknown: true,\n details: { operationId },\n },\n );\n }\n assertRecoveredCodemodeOperation(recovered, {\n operationId,\n catalog,\n identity: entry.identity,\n arguments: argumentsValue,\n });\n operation = recovered;\n }\n } else {\n operation = await this.read(operationId, options.signal);\n }\n if (operation.state === \"completed\") {\n return { result: AttemptToolResult.parse(operation.result), entry };\n }\n if ([\"failed\", \"outcome_unknown\", \"cancelled\"].includes(operation.state)) {\n throw new CodemodeOperationError(\n operation,\n operation.errorCode ?? `codemode_${operation.state}`,\n );\n }\n await abortableDelay(this.pollIntervalMs, options.signal);\n }\n }\n\n /** Resolve and call one exact generated namespace path without parsing a wire name. */\n async callPath(\n path: readonly string[],\n argumentsValue: Record<string, unknown> = {},\n options: CodemodeCallOptions = {},\n ): Promise<AttemptToolResultValue> {\n if (path.length < 2 || path.some((segment) => segment.length === 0)) {\n throw new AttemptToolNotFoundError();\n }\n return (\n await this.callResolved(\n (catalog) => catalogEntryForPath(catalog, path),\n argumentsValue,\n options,\n )\n ).result;\n }\n\n /** Return structured content when the catalog declares it; otherwise retain the full MCP result. */\n async callPathValue(\n path: readonly string[],\n argumentsValue: Record<string, unknown> = {},\n options: CodemodeCallOptions = {},\n ): Promise<unknown> {\n if (path.length < 2 || path.some((segment) => segment.length === 0)) {\n throw new AttemptToolNotFoundError();\n }\n const { result, entry } = await this.callResolved(\n (catalog) => catalogEntryForPath(catalog, path),\n argumentsValue,\n options,\n );\n if (!entry.outputSchema) return result;\n if (result.isError) throw new CodemodeToolCallError(result);\n if (!result.structuredContent) {\n throw new CodemodeToolContractError(\n `Codemode tool ${path.join(\".\")} declared outputSchema but returned no structured content`,\n );\n }\n return result.structuredContent;\n }\n\n private async submit(\n operationId: string,\n catalogDigest: string,\n identity: AttemptToolIdentity,\n argumentsValue: Record<string, unknown>,\n signal?: AbortSignal,\n ): Promise<CodemodeOperationValue> {\n const response = await this.request(\"/calls\", {\n method: \"POST\",\n ...(signal ? { signal } : {}),\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n operationId,\n catalogDigest,\n identity,\n arguments: argumentsValue,\n }),\n });\n return CodemodeCallSubmission.parse(await response.json()).operation;\n }\n\n private async read(operationId: string, signal?: AbortSignal): Promise<CodemodeOperationValue> {\n const response = await this.request(`/calls/${operationId}`, {\n method: \"GET\",\n ...(signal ? { signal } : {}),\n });\n return CodemodeOperation.parse(await response.json());\n }\n\n /** Server-side Site preview forwarding. The attempt bearer never enters the\n * page. Validate tenant routing here; ordinary API handlers authorize the\n * operation under the existing agent proxy permission ceiling. */\n async sessionRequest(path: string, init: RequestInit): Promise<Response> {\n siteSessionPath(path, \"site-host\", init.method ?? \"GET\");\n return this.request(`/sdk${path}`, init, false);\n }\n\n private async request(path: string, init: RequestInit, throwOnError = true): Promise<Response> {\n const token =\n typeof this.options.token === \"function\" ? await this.options.token() : this.options.token;\n const response = await this.fetchImpl(`${this.baseUrl}${path}`, {\n ...init,\n headers: {\n ...Object.fromEntries(new Headers(init.headers).entries()),\n authorization: `Bearer ${token}`,\n },\n });\n if (!response.ok && throwOnError) {\n let message = `Codemode request failed with HTTP ${response.status}`;\n let errorOptions: {\n code?: string;\n retryable?: boolean;\n outcomeUnknown?: boolean;\n details?: Readonly<Record<string, unknown>>;\n } = {};\n try {\n const error = parseCodemodeApiError(await response.json());\n if (error?.message) message = error.message;\n if (error) {\n errorOptions = {\n ...(error.code ? { code: error.code } : {}),\n ...(error.retryable === undefined ? {} : { retryable: error.retryable }),\n ...(error.outcomeUnknown === undefined ? {} : { outcomeUnknown: error.outcomeUnknown }),\n ...(error.details ? { details: error.details } : {}),\n };\n }\n } catch {\n // The status is sufficient; never echo an unbounded provider body.\n }\n throw new CodemodeTransportError(message, response.status, errorOptions);\n }\n return response;\n }\n}\n\nfunction canReconcileCodemodeSubmission(error: unknown): boolean {\n return !(error instanceof CodemodeTransportError) || error.outcomeUnknown === true;\n}\n\nfunction assertRecoveredCodemodeOperation(\n operation: CodemodeOperationValue,\n expected: {\n operationId: string;\n catalog: AttemptToolCatalogValue;\n identity: AttemptToolIdentity;\n arguments: Record<string, unknown>;\n },\n): void {\n const matches =\n operation.operationId === expected.operationId &&\n operation.accountId === expected.catalog.accountId &&\n operation.workspaceId === expected.catalog.workspaceId &&\n operation.sessionId === expected.catalog.sessionId &&\n operation.turnId === expected.catalog.turnId &&\n operation.attemptId === expected.catalog.attemptId &&\n operation.executionGeneration === expected.catalog.executionGeneration &&\n operation.catalogDigest === expected.catalog.digest &&\n operation.identity.serverId === expected.identity.serverId &&\n operation.identity.toolName === expected.identity.toolName &&\n digestCanonicalJson(operation.arguments) === digestCanonicalJson(expected.arguments);\n if (matches) return;\n throw new CodemodeTransportError(\n \"Codemode operation id is already bound to a different request\",\n 409,\n {\n code: \"codemode_operation_conflict\",\n retryable: false,\n outcomeUnknown: false,\n },\n );\n}\n\nexport function compileCodemodeTools(\n catalog: AttemptToolCatalogValue,\n client: CodemodeClient,\n): CodemodeTools {\n const verified = parseVerifiedAttemptToolCatalog(catalog);\n const root: CodemodeTools = Object.create(null) as CodemodeTools;\n for (const entry of verified.entries) {\n let cursor = root;\n for (const segment of entry.codemodePath.slice(0, -1)) {\n let existing = cursor[segment];\n if (typeof existing === \"function\") throw new Error(\"Codemode path collides with a tool\");\n if (!existing) {\n existing = Object.create(null) as CodemodeTools;\n cursor[segment] = existing;\n }\n cursor = existing;\n }\n const leaf = entry.codemodePath.at(-1)!;\n const invoke: CodemodeToolFunction = async (args = {}, options = {}) =>\n await client.callPathValue(entry.codemodePath, args, options);\n Object.defineProperty(invoke, \"entry\", { value: entry, enumerable: false });\n cursor[leaf] = invoke;\n }\n return root;\n}\n\nexport class AttemptToolEnvironment {\n constructor(\n readonly catalog: AttemptToolCatalogValue,\n private readonly gateway: ToolGateway,\n ) {}\n\n async call(\n input: AttemptToolCallValue,\n context: {\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n } = {},\n ): Promise<AttemptToolResultValue> {\n return await (await this.prepareCall(input, context)).execute();\n }\n\n async prepareCall(\n input: AttemptToolCallValue,\n context: {\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n } = {},\n ): Promise<PreparedToolGatewayCall> {\n const call = AttemptToolCall.parse(input);\n return await this.gateway.prepareCall(call, context);\n }\n\n async callModel(input: ModelAttemptToolCall): Promise<AttemptToolResultValue> {\n return await this.gateway.callModel(input);\n }\n}\n\nexport function createAttemptToolEnvironment(\n input: CreateAttemptToolEnvironmentInput,\n): AttemptToolEnvironment {\n const createdAt = (input.createdAt ?? new Date()).toISOString();\n const prepared = prepareToolGatewayDefinitions(\n input.definitions.map(\n (definition): ToolGatewayDefinition => ({\n ...definition,\n execute: async (argumentsValue, context) =>\n await definition.execute(argumentsValue, {\n ...context,\n caller: AttemptToolCaller.parse(context.caller),\n }),\n }),\n ),\n );\n const unsigned = {\n version: ATTEMPT_TOOL_CATALOG_VERSION,\n ...input.scope,\n generation: input.generation,\n createdAt,\n entries: [...prepared.entries],\n };\n const catalog = AttemptToolCatalog.parse({\n ...unsigned,\n digest: digestAttemptToolCatalog(unsigned),\n });\n assertCatalogSize(catalog);\n return new AttemptToolEnvironment(\n catalog,\n prepared.create({\n catalogDigest: catalog.digest,\n requireApproval: (entry, caller) => caller.kind === \"codemode\" && entry.approval === \"human\",\n ...(input.confirmModelApproval\n ? {\n confirmModelApproval: ({ entry, subjectId }) =>\n input.confirmModelApproval!({\n modelName: entry.modelName,\n subjectId,\n }),\n }\n : {}),\n ...(input.authorize\n ? {\n authorize: async ({ call, entry }) =>\n await input.authorize!({\n call: AttemptToolCall.parse(call),\n entry,\n }),\n }\n : {}),\n }),\n );\n}\n\nexport function digestAttemptToolCatalog(catalog: Omit<AttemptToolCatalogValue, \"digest\">): string {\n const { createdAt: _createdAt, ...authoritative } = catalog;\n return digestCanonicalJson(authoritative);\n}\n\nexport function digestCodemodeOperationRequest(\n input: Pick<AttemptToolCallValue, \"catalogDigest\" | \"identity\" | \"arguments\" | \"caller\">,\n): string {\n return digestCanonicalJson(input);\n}\n\nexport function codemodeDispatchSubject(workspaceId: string, attemptId: string): string {\n if (!UUID_PATTERN.test(workspaceId) || !UUID_PATTERN.test(attemptId)) {\n throw new Error(\"Codemode dispatch subject requires UUID workspace and attempt ids\");\n }\n return `codemode.${workspaceId}.${attemptId}.dispatch`;\n}\n\nexport function encodeCodemodeDispatchRequest(input: CodemodeDispatchRequestValue): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(CodemodeDispatchRequest.parse(input)));\n}\n\nexport function decodeCodemodeDispatchRequest(input: Uint8Array): CodemodeDispatchRequestValue {\n return CodemodeDispatchRequest.parse(JSON.parse(new TextDecoder().decode(input)));\n}\n\nexport function encodeCodemodeDispatchAck(input: CodemodeDispatchAckValue): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(CodemodeDispatchAck.parse(input)));\n}\n\nexport function decodeCodemodeDispatchAck(input: Uint8Array): CodemodeDispatchAckValue {\n return CodemodeDispatchAck.parse(JSON.parse(new TextDecoder().decode(input)));\n}\n\nexport function parseVerifiedAttemptToolCatalog(input: unknown): AttemptToolCatalogValue {\n const catalog = AttemptToolCatalog.parse(input);\n assertCatalogSize(catalog);\n const { digest, ...unsigned } = catalog;\n if (digestAttemptToolCatalog(unsigned) !== digest) {\n throw new AttemptToolCatalogIntegrityError();\n }\n return catalog;\n}\n\nfunction assertCatalogSize(catalog: AttemptToolCatalogValue): void {\n if (\n new TextEncoder().encode(JSON.stringify(catalog)).byteLength > ATTEMPT_TOOL_CATALOG_MAX_BYTES\n ) {\n throw new AttemptToolCatalogTooLargeError();\n }\n}\n\nconst UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n\nfunction boundedPositiveInteger(value: number, minimum: number, maximum: number): number {\n if (!Number.isFinite(value)) return minimum;\n return Math.max(minimum, Math.min(maximum, Math.floor(value)));\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n if (signal?.aborted) throw signal.reason ?? new DOMException(\"Aborted\", \"AbortError\");\n}\n\nfunction structuredToolError(result: AttemptToolResultValue): {\n code: string;\n message: string;\n retryable: boolean;\n} {\n const structured = result.structuredContent as\n | { error?: { code?: unknown; message?: unknown; retryable?: unknown } }\n | undefined;\n const error = structured?.error;\n return {\n code: typeof error?.code === \"string\" ? error.code : \"tool_error\",\n message: typeof error?.message === \"string\" ? error.message : \"Codemode tool failed\",\n retryable: error?.retryable === true,\n };\n}\n\nfunction catalogEntryForPath(\n catalog: AttemptToolCatalogValue,\n path: readonly string[],\n): AttemptToolCatalogEntryValue | null {\n const matches = catalog.entries.filter(\n (entry) =>\n entry.codemodePath.length === path.length &&\n entry.codemodePath.every((segment, index) => segment === path[index]),\n );\n return matches.length === 1 ? matches[0]! : null;\n}\n\nfunction parseCodemodeApiError(input: unknown): {\n message?: string;\n code?: string;\n retryable?: boolean;\n outcomeUnknown?: boolean;\n details?: Readonly<Record<string, unknown>>;\n} | null {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) return null;\n const root = input as Record<string, unknown>;\n const nested =\n root.error && typeof root.error === \"object\" && !Array.isArray(root.error)\n ? (root.error as Record<string, unknown>)\n : root;\n const details =\n nested.details && typeof nested.details === \"object\" && !Array.isArray(nested.details)\n ? (nested.details as Readonly<Record<string, unknown>>)\n : undefined;\n const detailCode = details?.code;\n const code =\n typeof detailCode === \"string\" && /^[a-z0-9_]{1,128}$/u.test(detailCode)\n ? detailCode\n : undefined;\n const message = typeof nested.message === \"string\" ? nested.message : undefined;\n const retryable = typeof nested.retryable === \"boolean\" ? nested.retryable : undefined;\n const outcomeUnknown =\n typeof nested.outcomeUnknown === \"boolean\" ? nested.outcomeUnknown : undefined;\n return message || code || retryable !== undefined || outcomeUnknown !== undefined || details\n ? {\n ...(message ? { message } : {}),\n ...(code ? { code } : {}),\n ...(retryable === undefined ? {} : { retryable }),\n ...(outcomeUnknown === undefined ? {} : { outcomeUnknown }),\n ...(details ? { details } : {}),\n }\n : null;\n}\n\nasync function abortableDelay(delayMs: number, signal?: AbortSignal): Promise<void> {\n if (!signal) {\n await new Promise<void>((resolve) => setTimeout(resolve, delayMs));\n return;\n }\n throwIfAborted(signal);\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delayMs);\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal.reason ?? new DOMException(\"Aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nexport * from \"./environment\";\nexport * from \"./interaction\";\nexport * from \"./artifacts\";\nexport * from \"./structured\";\nexport * from \"./declarations\";\nexport * from \"./site\";\n","import { readFile } from \"node:fs/promises\";\nimport { CodemodeClient, type CodemodeCallOptions, type CodemodeToolFunction } from \"./index\";\n\nexport const CODEMODE_ENVIRONMENT = {\n url: \"OPENGENI_CODEMODE_URL\",\n token: \"OPENGENI_CODEMODE_TOKEN\",\n tokenFile: \"OPENGENI_CODEMODE_TOKEN_FILE\",\n} as const;\n\n/** Minimal environment shape; public declarations must not require `@types/node`. */\nexport type CodemodeEnvironment = Readonly<Record<string, string | undefined>>;\n\nexport type CodemodeClientProvider = () => CodemodeClient | Promise<CodemodeClient>;\n\n/** A lazy catalog path. Every nested property remains callable at runtime. */\nexport type CodemodeDynamicTool = CodemodeToolFunction & {\n readonly [segment: string]: CodemodeDynamicTool;\n};\n\nexport type CodemodeDynamicTools = {\n readonly [segment: string]: CodemodeDynamicTool;\n};\n\n/** Catalog-specific generated declarations augment this interface. */\nexport interface CodemodeGeneratedTools {}\n\nexport type CodemodeToolsNamespace = CodemodeDynamicTools & CodemodeGeneratedTools;\n\nlet cachedEnvironmentClient: { key: string; client: CodemodeClient } | null = null;\n\n/**\n * Build (or reuse) the persistent client for the exact sandbox attempt.\n * The bearer file is reread for every HTTP request so worker renewal is live.\n */\nexport function environmentCodemodeClient(\n environment: CodemodeEnvironment = process.env,\n): CodemodeClient {\n const baseUrl = requiredEnvironment(environment, CODEMODE_ENVIRONMENT.url);\n const directTokenConfigured = environment[CODEMODE_ENVIRONMENT.token] !== undefined;\n const tokenFile = directTokenConfigured\n ? undefined\n : requiredEnvironment(environment, CODEMODE_ENVIRONMENT.tokenFile);\n // Never place bearer bytes in the cache identity. The callback rereads the\n // selected source for every request: managed token-file renewal is live, and\n // a Connected Machine child never leaves its direct bearer in module state.\n const key = `${baseUrl}\\u0000${directTokenConfigured ? \"direct\" : `file:${tokenFile}`}`;\n if (environment === process.env && cachedEnvironmentClient?.key === key) {\n return cachedEnvironmentClient.client;\n }\n const client = new CodemodeClient({\n baseUrl,\n token: directTokenConfigured\n ? async () => requiredEnvironment(environment, CODEMODE_ENVIRONMENT.token)\n : async () => await readBearerFile(tokenFile!),\n });\n if (environment === process.env) cachedEnvironmentClient = { key, client };\n return client;\n}\n\n/**\n * Lazy namespace used by ordinary sandbox programs:\n * `await tools.slack.search({ query: \"...\" })`.\n */\nexport function createCodemodeTools(\n client: CodemodeClientProvider = () => environmentCodemodeClient(),\n): CodemodeToolsNamespace {\n const node = (path: readonly string[]): CodemodeDynamicTool =>\n new Proxy(\n (async (args: Record<string, unknown> = {}, options: CodemodeCallOptions = {}) =>\n await (await client()).callPathValue(path, args, options)) as CodemodeDynamicTool,\n {\n get(_target, property) {\n if (property === \"then\") return undefined;\n if (property === Symbol.toStringTag) return \"CodemodeTool\";\n if (typeof property !== \"string\") return undefined;\n return node([...path, property]);\n },\n set() {\n return false;\n },\n },\n );\n return new Proxy(Object.create(null) as CodemodeToolsNamespace, {\n get(_target, property) {\n if (property === \"then\") return undefined;\n if (property === Symbol.toStringTag) return \"CodemodeTools\";\n if (typeof property !== \"string\") return undefined;\n return node([property]);\n },\n set() {\n return false;\n },\n });\n}\n\nexport const tools = createCodemodeTools();\n\nasync function readBearerFile(path: string): Promise<string> {\n let token: string;\n try {\n token = (await readFile(path, \"utf8\")).trim();\n } catch {\n throw new Error(`${CODEMODE_ENVIRONMENT.tokenFile} is not readable`);\n }\n if (!token) throw new Error(`${CODEMODE_ENVIRONMENT.tokenFile} is empty`);\n return token;\n}\n\nfunction requiredEnvironment(environment: CodemodeEnvironment, name: string): string {\n const value = environment[name]?.trim();\n if (!value) throw new Error(`${name} is required`);\n return value;\n}\n","import { randomBytes } from \"node:crypto\";\n\nimport type {\n DocumentArtifactId,\n DocumentArtifactIdKind,\n DocumentArtifactCommand,\n DocumentArtifactQuery,\n EditableArtifactStableId,\n PresentationArtifactCommand,\n PresentationArtifactQuery,\n SpreadsheetArtifactCommand,\n SpreadsheetArtifactKernelQuery,\n} from \"@opengeni/contracts/editable-artifacts\";\nimport type { CodemodeCallOptions } from \"./index\";\nimport type { CodemodeClientProvider } from \"./environment\";\nimport { callStructured } from \"./structured\";\n\nconst PATH = {\n list: [\"artifacts\", \"list\"],\n create: [\"artifacts\", \"create\"],\n import: [\"artifacts\", \"import\"],\n get: [\"artifacts\", \"get\"],\n inspect: [\"artifacts\", \"inspect\"],\n apply: [\"artifacts\", \"apply\"],\n export: [\"artifacts\", \"export\"],\n exportStatus: [\"artifacts\", \"exportStatus\"],\n} as const;\n\nexport type CodemodeArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\nexport type CodemodeArtifactFormat = \"xlsx\" | \"pptx\" | \"docx\" | \"pdf\" | \"png\" | \"webp\";\nexport type CodemodeArtifactMetadata = Readonly<{\n id: string;\n /** Server-authored handoff reference; absent on older servers. */\n artifactReference?: string;\n modality: CodemodeArtifactModality;\n title: string;\n lifecycle: \"active\" | \"archived\";\n headSequence: number;\n stateHash: string;\n createdAt: string;\n updatedAt: string;\n}>;\nexport type CodemodeArtifactQuery =\n | SpreadsheetArtifactKernelQuery\n | DocumentArtifactQuery\n | PresentationArtifactQuery;\nexport type CodemodeArtifactCommand =\n | SpreadsheetArtifactCommand\n | DocumentArtifactCommand\n | PresentationArtifactCommand;\nexport type CodemodeArtifactMutationReceipt = Readonly<{\n artifact: CodemodeArtifactMetadata;\n transaction: Readonly<{\n id: string;\n clientTransactionId: string;\n sequenceStart: number;\n sequenceEnd: number;\n stateHash: string;\n committedAt: string;\n replayed: boolean;\n }>;\n}>;\nexport type CodemodeArtifactExportFile = Readonly<{\n fileId: string;\n filename: string;\n contentType: string;\n sizeBytes: number;\n sha256: string;\n artifactId: string;\n versionId: string;\n materializationJobId: string;\n sourceHeadSequence: number;\n sourceStateHash: string;\n}>;\nexport type CodemodeArtifactExportStatus = Readonly<{\n artifact: CodemodeArtifactMetadata;\n versionId: string;\n jobId: string;\n sourceHeadSequence: number;\n sourceStateHash: string;\n state: \"pending\" | \"running\" | \"succeeded\" | \"failed\";\n errorCode: string | null;\n file: CodemodeArtifactExportFile | null;\n}>;\n\nexport type CodemodeArtifactIdFactory = Readonly<{\n /** Create a nonzero 128-bit id accepted by spreadsheet and presentation commands. */\n stable(): EditableArtifactStableId;\n /** Create a document object id in the namespace returned by a summary query. */\n document(kind: DocumentArtifactIdKind, namespace: bigint | number | string): DocumentArtifactId;\n}>;\n\nexport const codemodeArtifactIds: CodemodeArtifactIdFactory = Object.freeze({\n stable: createStableArtifactId,\n document: createDocumentArtifactId,\n});\n\n/** Authored CodeMode collection over the exact MCP-backed artifact operations. */\nexport class CodemodeArtifactCollection {\n readonly ids = codemodeArtifactIds;\n\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async list(\n options: { limit?: number | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifactMetadata[]> {\n return (\n await callStructured<{ artifacts: CodemodeArtifactMetadata[] }>(\n this.client,\n PATH.list,\n options,\n callOptions,\n )\n ).artifacts;\n }\n\n async create(\n modality: CodemodeArtifactModality,\n title: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifact> {\n const metadata = await callStructured<CodemodeArtifactMetadata>(\n this.client,\n PATH.create,\n { modality, title },\n callOptions,\n );\n return new CodemodeArtifact(this.client, metadata.id, metadata);\n }\n\n async import(\n fileId: string,\n modality: CodemodeArtifactModality,\n title: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifact> {\n const metadata = await callStructured<CodemodeArtifactMetadata>(\n this.client,\n PATH.import,\n { fileId, modality, title },\n callOptions,\n );\n return new CodemodeArtifact(this.client, metadata.id, metadata);\n }\n\n use(artifact: string | CodemodeArtifactMetadata): CodemodeArtifact {\n return typeof artifact === \"string\"\n ? new CodemodeArtifact(this.client, artifact)\n : new CodemodeArtifact(this.client, artifact.id, artifact);\n }\n}\n\nconst DOCUMENT_ID_PREFIX = Object.freeze({\n paragraph: \"p\",\n table: \"dt\",\n \"page-break\": \"pb\",\n section: \"sec\",\n header: \"hdr\",\n footer: \"ftr\",\n comment: \"dc\",\n \"tracked-change\": \"chg\",\n} satisfies Readonly<Record<DocumentArtifactIdKind, string>>);\nconst MAX_U64 = 0xffff_ffff_ffff_ffffn;\nconst MAX_DOCUMENT_COUNTER = BigInt(Number.MAX_SAFE_INTEGER) - 1n;\n\nfunction createStableArtifactId(): EditableArtifactStableId {\n const bytes = randomBytes(16);\n if (bytes.subarray(0, 8).every((byte) => byte === 0)) bytes[0] = 1;\n if (bytes.subarray(8, 16).every((byte) => byte === 0)) bytes[8] = 1;\n return bytes.toString(\"hex\") as EditableArtifactStableId;\n}\n\nfunction createDocumentArtifactId(\n kind: DocumentArtifactIdKind,\n namespaceInput: bigint | number | string,\n): DocumentArtifactId {\n const namespace = parseDocumentNamespace(namespaceInput);\n const bytes = randomBytes(7);\n bytes[0] = (bytes[0] ?? 0) & 0x1f;\n let counter = 0n;\n for (const byte of bytes) counter = (counter << 8n) | BigInt(byte);\n if (counter === 0n) counter = 1n;\n if (counter > MAX_DOCUMENT_COUNTER) {\n throw new Error(\"Generated document id counter exceeds the canonical limit\");\n }\n return `${DOCUMENT_ID_PREFIX[kind]}/${namespace.toString(16).padStart(16, \"0\")}${counter\n .toString(16)\n .padStart(16, \"0\")}`;\n}\n\nfunction parseDocumentNamespace(input: bigint | number | string): bigint {\n if (\n (typeof input === \"number\" && (!Number.isSafeInteger(input) || input < 0)) ||\n (typeof input === \"string\" && !/^(?:0|[1-9][0-9]*)$/u.test(input))\n ) {\n throw new TypeError(\"Document id namespace must be an unsigned decimal integer\");\n }\n const namespace = BigInt(input);\n if (namespace < 0n || namespace > MAX_U64) {\n throw new RangeError(\"Document id namespace is outside the uint64 range\");\n }\n return namespace;\n}\n\nexport class CodemodeArtifact {\n private metadata: CodemodeArtifactMetadata | null;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n metadata: CodemodeArtifactMetadata | null = null,\n ) {\n this.metadata = metadata;\n }\n\n async get(callOptions: CodemodeCallOptions = {}): Promise<CodemodeArtifactMetadata> {\n const metadata = await callStructured<CodemodeArtifactMetadata>(\n this.client,\n PATH.get,\n { artifactId: this.id },\n callOptions,\n );\n this.metadata = metadata;\n return metadata;\n }\n\n async inspect<T = unknown>(\n query: CodemodeArtifactQuery,\n callOptions: CodemodeCallOptions = {},\n ): Promise<\n Readonly<{\n artifact: CodemodeArtifactMetadata;\n projection: T;\n /** Server-authored proof of native document inspection, when available. */\n inspectionReceiptId?: string;\n }>\n > {\n const modality = (await this.currentMetadata(callOptions)).modality;\n const result = await callStructured<{\n artifact: CodemodeArtifactMetadata;\n projection: T;\n inspectionReceiptId?: string;\n }>(this.client, PATH.inspect, { artifactId: this.id, modality, request: query }, callOptions);\n this.metadata = result.artifact;\n return result;\n }\n\n async apply(\n commands: readonly CodemodeArtifactCommand[],\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifactMutationReceipt> {\n const metadata = await this.currentMetadata(callOptions);\n const result = await callStructured<CodemodeArtifactMutationReceipt>(\n this.client,\n PATH.apply,\n {\n artifactId: this.id,\n modality: metadata.modality,\n expectedHeadSequence: metadata.headSequence,\n expectedStateHash: metadata.stateHash,\n commands,\n },\n callOptions,\n );\n this.metadata = result.artifact;\n return result;\n }\n\n async export(\n format: CodemodeArtifactFormat,\n options: Readonly<Record<string, unknown>> = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeArtifactExport> {\n const started = await callStructured<{\n artifact: CodemodeArtifactMetadata;\n versionId: string;\n jobId: string;\n sourceHeadSequence: number;\n sourceStateHash: string;\n state: \"pending\" | \"running\" | \"succeeded\" | \"failed\";\n }>(this.client, PATH.export, { artifactId: this.id, format, options }, callOptions);\n this.metadata = started.artifact;\n return new CodemodeArtifactExport(\n this.client,\n started.artifact.id,\n started.versionId,\n started.jobId,\n started.sourceHeadSequence,\n started.sourceStateHash,\n );\n }\n\n private async currentMetadata(\n callOptions: CodemodeCallOptions,\n ): Promise<CodemodeArtifactMetadata> {\n return this.metadata ?? (await this.get(callOptions));\n }\n}\n\nexport class CodemodeArtifactExport {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly artifactId: string,\n readonly versionId: string,\n readonly jobId: string,\n readonly sourceHeadSequence: number,\n readonly sourceStateHash: string,\n ) {}\n\n async status(callOptions: CodemodeCallOptions = {}): Promise<CodemodeArtifactExportStatus> {\n return await callStructured(\n this.client,\n PATH.exportStatus,\n {\n artifactId: this.artifactId,\n versionId: this.versionId,\n jobId: this.jobId,\n },\n callOptions,\n );\n }\n}\n","import type { AttemptToolResult } from \"@opengeni/contracts\";\nimport type { CodemodeCallOptions, CodemodeClient } from \"./index\";\nimport { environmentCodemodeClient, type CodemodeClientProvider } from \"./environment\";\n\nexport class CodemodeToolExecutionError extends Error {\n readonly code: string;\n readonly retryable: boolean;\n\n constructor(readonly result: AttemptToolResult) {\n const error = toolError(result);\n super(error.message);\n this.name = \"CodemodeToolExecutionError\";\n this.code = error.code;\n this.retryable = error.retryable;\n }\n}\n\nexport function codemodeClientProvider(\n client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient(),\n): CodemodeClientProvider {\n return typeof client === \"function\" ? client : () => client;\n}\n\nexport async function callStructured<T>(\n client: CodemodeClientProvider,\n path: readonly string[],\n args: Record<string, unknown>,\n options: CodemodeCallOptions,\n): Promise<T> {\n const result = await (await client()).callPath(path, args, options);\n if (result.isError) throw new CodemodeToolExecutionError(result);\n if (!result.structuredContent) {\n throw new Error(`Codemode tool ${path.join(\".\")} returned no structured content`);\n }\n return result.structuredContent as T;\n}\n\nfunction toolError(result: AttemptToolResult): {\n code: string;\n message: string;\n retryable: boolean;\n} {\n const structured = result.structuredContent as\n | { error?: { code?: unknown; message?: unknown; retryable?: unknown } }\n | undefined;\n const error = structured?.error;\n return {\n code: typeof error?.code === \"string\" ? error.code : \"tool_error\",\n message: typeof error?.message === \"string\" ? error.message : \"Codemode tool failed\",\n retryable: error?.retryable === true,\n };\n}\n","import type {\n AttachedBrowserDevice,\n AuthRun,\n AuthRunListResponse,\n AuthRunMutationResponse,\n BrowserAction,\n BrowserActionReceipt,\n BrowserClipboard,\n BrowserDiagnosticBatch,\n BrowserDiagnosticKind,\n BrowserIdentity,\n BrowserIdentityListResponse,\n BrowserIdentityMutationResponse,\n BrowserLocator,\n BrowserObservation,\n BrowserPermission,\n BrowserPermissionSetting,\n BrowserRevisionListResponse,\n BrowserSession,\n BrowserSessionMutationResponse,\n BrowserTarget,\n BrowserTargetListResponse,\n ComputerAction,\n ComputerActionReceipt,\n ComputerClipboard,\n ComputerLocator,\n ComputerObservation,\n ComputerSession,\n ComputerSessionMutationResponse,\n ComputerTarget,\n ComputerTargetListResponse,\n ExternalAuthRunRequest,\n ExternalAuthRunResponse,\n InteractionPlacement,\n ProtectedAuthFillRequest,\n ProtectedAuthFillResponse,\n PublishBrowserRevisionResponse,\n ReportAuthRunRequest,\n RequestHumanInteractionToolInput,\n RequestHumanInteractionToolOutput,\n SiteAuthConnection,\n SiteAuthConnectionListResponse,\n StartAuthRunRequest,\n UpdateBrowserIdentityRequest,\n VerifyAuthRunRequest,\n} from \"@opengeni/contracts\";\nimport type { CodemodeCallOptions, CodemodeClient } from \"./index\";\nimport { environmentCodemodeClient, type CodemodeClientProvider } from \"./environment\";\nimport { CodemodeArtifactCollection } from \"./artifacts\";\nimport { callStructured, codemodeClientProvider } from \"./structured\";\n\nexport { CodemodeToolExecutionError } from \"./structured\";\n\nconst PATH = {\n discover: [\"interaction\", \"discover\"],\n browserOpen: [\"interaction\", \"browser\", \"open\"],\n browserTabs: [\"interaction\", \"browser\", \"tabs\"],\n browserObserve: [\"interaction\", \"browser\", \"observe\"],\n browserAct: [\"interaction\", \"browser\", \"act\"],\n browserClipboard: [\"interaction\", \"browser\", \"clipboard\"],\n browserDebug: [\"interaction\", \"browser\", \"debug\"],\n browserAuth: [\"interaction\", \"browser\", \"auth\"],\n requestHuman: [\"interaction\", \"requestHuman\"],\n browserIdentity: [\"interaction\", \"browser\", \"identity\"],\n browserPublish: [\"interaction\", \"browser\", \"publish\"],\n browserLifecycle: [\"interaction\", \"browser\", \"lifecycle\"],\n computerOpen: [\"interaction\", \"computer\", \"open\"],\n computerTargets: [\"interaction\", \"computer\", \"targets\"],\n computerObserve: [\"interaction\", \"computer\", \"observe\"],\n computerClipboard: [\"interaction\", \"computer\", \"clipboard\"],\n computerAct: [\"interaction\", \"computer\", \"act\"],\n computerLifecycle: [\"interaction\", \"computer\", \"lifecycle\"],\n} as const;\n\nexport type InteractionDiscovery = {\n browserRevision: number;\n computerRevision: number;\n identityRevision: number;\n attachedBrowserRevision: number;\n browsers: BrowserSession[];\n computers: ComputerSession[];\n identities: BrowserIdentity[];\n attachedBrowsers: AttachedBrowserDevice[];\n};\n\nexport type CodemodeBrowserOpenOptions = {\n browserSessionId?: string | undefined;\n mode?: \"reuse_or_create\" | \"new\" | undefined;\n name?: string | undefined;\n initialUrl?: string | undefined;\n headless?: boolean | undefined;\n placement?: InteractionPlacement | undefined;\n identityId?: string | undefined;\n baseRevisionId?: string | undefined;\n linkedComputerSessionId?: string | undefined;\n};\n\nexport type CodemodeComputerOpenOptions = {\n computerSessionId?: string | undefined;\n mode?: \"reuse_or_create\" | \"new\" | undefined;\n name?: string | undefined;\n placement?: InteractionPlacement | undefined;\n};\n\nexport type BrowserActionFences = {\n expectedTargetGeneration?: string | undefined;\n expectedDocumentGeneration?: string | null | undefined;\n expectedFrameId?: string | null | undefined;\n};\n\nexport type ComputerActionFences = {\n expectedTargetGeneration?: string | undefined;\n expectedObservationId?: string | null | undefined;\n expectedFrameId?: string | null | undefined;\n};\n\n/** Authored object facade over the exact atomic Browser/Computer catalog. */\nexport class OpenGeniCodemode {\n readonly browsers: CodemodeBrowserCollection;\n readonly computers: CodemodeComputerCollection;\n readonly artifacts: CodemodeArtifactCollection;\n readonly auth: CodemodeAuth;\n\n constructor(client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient()) {\n const provider = codemodeClientProvider(client);\n this.browsers = new CodemodeBrowserCollection(provider);\n this.computers = new CodemodeComputerCollection(provider);\n this.artifacts = new CodemodeArtifactCollection(provider);\n this.auth = new CodemodeAuth(provider);\n }\n\n async discover(\n options: {\n includeTerminal?: boolean | undefined;\n includeArchivedIdentities?: boolean | undefined;\n includeDisconnectedDevices?: boolean | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<InteractionDiscovery> {\n return await callStructured(this.browsers.client, PATH.discover, options, callOptions);\n }\n\n async requestHuman(\n request: RequestHumanInteractionToolInput,\n callOptions: CodemodeCallOptions = {},\n ): Promise<RequestHumanInteractionToolOutput> {\n return await callStructured(this.browsers.client, PATH.requestHuman, request, callOptions);\n }\n}\n\nexport class CodemodeBrowserCollection {\n readonly identities: CodemodeBrowserIdentityCollection;\n\n constructor(readonly client: CodemodeClientProvider) {\n this.identities = new CodemodeBrowserIdentityCollection(client);\n }\n\n async list(\n options: { includeTerminal?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserSession[]> {\n return (\n await callStructured<InteractionDiscovery>(this.client, PATH.discover, options, callOptions)\n ).browsers;\n }\n\n async open(\n options: CodemodeBrowserOpenOptions = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeBrowser> {\n const opened = await callStructured<{ session: BrowserSession; targets: BrowserTarget[] }>(\n this.client,\n PATH.browserOpen,\n options,\n callOptions,\n );\n return new CodemodeBrowser(this.client, opened.session.id);\n }\n\n use(browserSessionId: string): CodemodeBrowser {\n return new CodemodeBrowser(this.client, browserSessionId);\n }\n}\n\nexport class CodemodeBrowserIdentityCollection {\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async list(\n options: { includeArchived?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserIdentityListResponse> {\n const response = await callStructured<{\n operation: \"list\";\n result: BrowserIdentityListResponse;\n }>(this.client, PATH.browserIdentity, { operation: \"list\", ...options }, callOptions);\n return response.result;\n }\n\n async get(identityId: string, callOptions: CodemodeCallOptions = {}): Promise<BrowserIdentity> {\n const response = await callStructured<{ operation: \"get\"; result: BrowserIdentity }>(\n this.client,\n PATH.browserIdentity,\n { operation: \"get\", identityId },\n callOptions,\n );\n return response.result;\n }\n\n async create(\n name: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserIdentityMutationResponse> {\n const response = await callStructured<{\n operation: \"create\";\n result: BrowserIdentityMutationResponse;\n }>(this.client, PATH.browserIdentity, { operation: \"create\", name }, callOptions);\n return response.result;\n }\n\n async revisions(\n identityId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserRevisionListResponse> {\n const response = await callStructured<{\n operation: \"revisions\";\n result: BrowserRevisionListResponse;\n }>(this.client, PATH.browserIdentity, { operation: \"revisions\", identityId }, callOptions);\n return response.result;\n }\n\n async update(\n identityId: string,\n update: Omit<UpdateBrowserIdentityRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserIdentityMutationResponse> {\n const response = await callStructured<{\n operation: \"update\";\n result: BrowserIdentityMutationResponse;\n }>(\n this.client,\n PATH.browserIdentity,\n { operation: \"update\", identityId, ...update },\n callOptions,\n );\n return response.result;\n }\n}\n\nexport class CodemodeBrowser {\n readonly tabs: CodemodeBrowserTabCollection;\n readonly auth: CodemodeBrowserAuth;\n readonly clipboard: CodemodeBrowserClipboard;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n ) {\n this.tabs = new CodemodeBrowserTabCollection(client, id);\n this.auth = new CodemodeBrowserAuth(client, id);\n this.clipboard = new CodemodeBrowserClipboard(client, id, this.tabs);\n }\n\n async refresh(callOptions: CodemodeCallOptions = {}): Promise<BrowserSession> {\n const result = await callStructured<{ session: BrowserSession; targets: BrowserTarget[] }>(\n this.client,\n PATH.browserOpen,\n { browserSessionId: this.id },\n callOptions,\n );\n return result.session;\n }\n\n async observe(\n targetId?: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserObservation> {\n return await this.tabs\n .use(await this.tabs.resolveId(targetId, callOptions))\n .observe(callOptions);\n }\n\n async act(\n action: BrowserAction,\n options: BrowserActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n const targetId = await this.tabs.resolveId(options.targetId, callOptions);\n return await this.tabs.use(targetId).act(action, options, callOptions);\n }\n\n async diagnostics(\n targetId?: string,\n options: {\n kinds?: BrowserDiagnosticKind[] | undefined;\n after?: number | undefined;\n limit?: number | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserDiagnosticBatch> {\n return await callStructured(\n this.client,\n PATH.browserDebug,\n {\n browserSessionId: this.id,\n targetId: await this.tabs.resolveId(targetId, callOptions),\n ...options,\n },\n callOptions,\n );\n }\n\n async publish(\n input: {\n identityId: string;\n expectedHeadGeneration: number;\n advanceDefault?: boolean | undefined;\n },\n callOptions: CodemodeCallOptions = {},\n ): Promise<PublishBrowserRevisionResponse> {\n return await callStructured(\n this.client,\n PATH.browserPublish,\n { browserSessionId: this.id, ...input },\n callOptions,\n );\n }\n\n async suspend(callOptions: CodemodeCallOptions = {}): Promise<BrowserSessionMutationResponse> {\n return await this.lifecycle(\"suspend\", callOptions);\n }\n\n async resume(callOptions: CodemodeCallOptions = {}): Promise<BrowserSessionMutationResponse> {\n return await this.lifecycle(\"resume\", callOptions);\n }\n\n async end(callOptions: CodemodeCallOptions = {}): Promise<BrowserSessionMutationResponse> {\n return await this.lifecycle(\"end\", callOptions);\n }\n\n private async lifecycle(\n action: \"suspend\" | \"resume\" | \"end\",\n callOptions: CodemodeCallOptions,\n ): Promise<BrowserSessionMutationResponse> {\n return await callStructured(\n this.client,\n PATH.browserLifecycle,\n { browserSessionId: this.id, action },\n callOptions,\n );\n }\n}\n\nexport class CodemodeBrowserClipboard {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly browserSessionId: string,\n private readonly tabs: CodemodeBrowserTabCollection,\n ) {}\n\n async read(callOptions: CodemodeCallOptions = {}): Promise<BrowserClipboard> {\n return await callStructured(\n this.client,\n PATH.browserClipboard,\n { browserSessionId: this.browserSessionId },\n callOptions,\n );\n }\n\n async write(\n text: string,\n options: BrowserActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await this.act({ type: \"clipboard\", operation: \"write\", text }, options, callOptions);\n }\n\n async clear(\n options: BrowserActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await this.act({ type: \"clipboard\", operation: \"clear\" }, options, callOptions);\n }\n\n async copy(\n options: BrowserActionFences & {\n targetId?: string | undefined;\n locator?: BrowserLocator | undefined;\n content?: \"selection\" | \"value\" | \"text\" | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n const {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n ...copy\n } = options;\n return await this.act(\n { type: \"clipboard\", operation: \"copy\", ...copy },\n {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n },\n callOptions,\n );\n }\n\n async paste(\n options: BrowserActionFences & {\n targetId?: string | undefined;\n locator?: BrowserLocator | undefined;\n text?: string | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n const {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n ...paste\n } = options;\n return await this.act(\n { type: \"clipboard\", operation: \"paste\", ...paste },\n {\n targetId,\n expectedTargetGeneration,\n expectedDocumentGeneration,\n expectedFrameId,\n },\n callOptions,\n );\n }\n\n private async act(\n action: BrowserAction,\n options: BrowserActionFences & { targetId?: string | undefined },\n callOptions: CodemodeCallOptions,\n ): Promise<BrowserActionReceipt> {\n const { targetId, ...fences } = options;\n return await this.tabs\n .use(await this.tabs.resolveId(targetId, callOptions))\n .act(action, fences, callOptions);\n }\n}\n\nexport class CodemodeBrowserTabCollection {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly browserSessionId: string,\n ) {}\n\n async list(callOptions: CodemodeCallOptions = {}): Promise<BrowserTargetListResponse> {\n return await callStructured(\n this.client,\n PATH.browserTabs,\n { operation: \"list\", browserSessionId: this.browserSessionId },\n callOptions,\n );\n }\n\n async selected(callOptions: CodemodeCallOptions = {}): Promise<CodemodeBrowserTab> {\n return this.use(await this.resolveId(undefined, callOptions));\n }\n\n use(targetId: string): CodemodeBrowserTab {\n return new CodemodeBrowserTab(this.client, this.browserSessionId, targetId);\n }\n\n async open(url?: string, callOptions: CodemodeCallOptions = {}): Promise<CodemodeBrowserTab> {\n const before = await this.list(callOptions);\n const after = await callStructured<BrowserTargetListResponse>(\n this.client,\n PATH.browserTabs,\n {\n operation: \"open\",\n browserSessionId: this.browserSessionId,\n ...(url ? { url } : {}),\n },\n callOptions,\n );\n const beforeIds = new Set(before.targets.map((target) => target.id));\n const opened =\n after.targets.find((target) => !beforeIds.has(target.id)) ??\n after.targets.find((target) => target.selected);\n if (!opened) throw new Error(\"Browser opened no discoverable tab\");\n return this.use(opened.id);\n }\n\n async select(\n targetId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeBrowserTab> {\n const after = await callStructured<BrowserTargetListResponse>(\n this.client,\n PATH.browserTabs,\n { operation: \"select\", browserSessionId: this.browserSessionId, targetId },\n callOptions,\n );\n if (!after.targets.some((target) => target.id === targetId && target.selected)) {\n throw new Error(\"Browser did not select the requested tab\");\n }\n return this.use(targetId);\n }\n\n async close(\n targetId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserTargetListResponse> {\n return await callStructured(\n this.client,\n PATH.browserTabs,\n { operation: \"close\", browserSessionId: this.browserSessionId, targetId },\n callOptions,\n );\n }\n\n async resolveId(targetId: string | undefined, callOptions: CodemodeCallOptions): Promise<string> {\n const listed = await this.list(callOptions);\n if (targetId) {\n if (!listed.targets.some((target) => target.id === targetId)) {\n throw new Error(`Browser tab is unavailable: ${targetId}`);\n }\n return targetId;\n }\n const selected = listed.targets.filter((target) => target.selected);\n if (selected.length === 1) return selected[0]!.id;\n if (listed.targets.length === 1) return listed.targets[0]!.id;\n if (listed.targets.length === 0) throw new Error(\"Browser has no tabs\");\n throw new Error(\"Browser target is ambiguous; select an exact tab\");\n }\n}\n\nexport class CodemodeBrowserTab {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly browserSessionId: string,\n readonly id: string,\n ) {}\n\n async observe(callOptions: CodemodeCallOptions = {}): Promise<BrowserObservation> {\n return await callStructured(\n this.client,\n PATH.browserObserve,\n { browserSessionId: this.browserSessionId, targetId: this.id },\n callOptions,\n );\n }\n\n async act(\n action: BrowserAction,\n fences: BrowserActionFences = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await callStructured(\n this.client,\n PATH.browserAct,\n { browserSessionId: this.browserSessionId, targetId: this.id, action, ...fences },\n callOptions,\n );\n }\n\n async navigate(url: string, callOptions: CodemodeCallOptions = {}) {\n return await this.act({ type: \"navigate\", url }, {}, callOptions);\n }\n\n async setPermission(\n permission: BrowserPermission,\n setting: BrowserPermissionSetting,\n fences: BrowserActionFences = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<BrowserActionReceipt> {\n return await this.act({ type: \"permission\", permission, setting }, fences, callOptions);\n }\n\n async requestHuman(\n reason: string,\n options: {\n kind?: \"manual_login\" | \"mfa\" | \"external_action\" | \"confirmation\" | \"other\";\n authRunId?: string | undefined;\n expiresInSeconds?: number | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<RequestHumanInteractionToolOutput> {\n const observation = await this.observe(callOptions);\n return await callStructured(\n this.client,\n PATH.requestHuman,\n {\n operation: \"request\",\n resourceKind: \"browser_session\",\n resourceId: this.browserSessionId,\n targetId: this.id,\n expectedControllerGeneration: observation.target.controllerGeneration,\n expectedTargetGeneration: observation.target.targetGeneration,\n expectedDocumentGeneration: observation.target.documentGeneration,\n kind: options.kind ?? \"other\",\n reason,\n ...(options.authRunId ? { authRunId: options.authRunId } : {}),\n ...(options.expiresInSeconds === undefined\n ? {}\n : { expiresInSeconds: options.expiresInSeconds }),\n },\n callOptions,\n );\n }\n\n getByRole(role: string, options: { name?: string; exact?: boolean } = {}) {\n return new CodemodeBrowserLocator(this, { kind: \"role\", role, ...options });\n }\n\n getByText(text: string) {\n return new CodemodeBrowserLocator(this, { kind: \"text\", text });\n }\n\n getByLabel(text: string) {\n return new CodemodeBrowserLocator(this, { kind: \"label\", text });\n }\n\n getByPlaceholder(text: string) {\n return new CodemodeBrowserLocator(this, { kind: \"placeholder\", text });\n }\n\n getByTestId(value: string) {\n return new CodemodeBrowserLocator(this, { kind: \"test_id\", value });\n }\n\n locator(selector: string) {\n return new CodemodeBrowserLocator(this, { kind: \"css\", selector });\n }\n\n ref(ref: string) {\n return new CodemodeBrowserLocator(this, { kind: \"ref\", ref });\n }\n}\n\nexport class CodemodeBrowserLocator {\n constructor(\n private readonly tab: CodemodeBrowserTab,\n readonly locator: BrowserLocator,\n ) {}\n\n async click(\n options: { button?: \"left\" | \"right\" | \"middle\" } = {},\n callOptions: CodemodeCallOptions = {},\n ) {\n return await this.tab.act(\n { type: \"click\", locator: this.locator, ...options },\n {},\n callOptions,\n );\n }\n\n async doubleClick(callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"double_click\", locator: this.locator }, {}, callOptions);\n }\n\n async hover(callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"hover\", locator: this.locator }, {}, callOptions);\n }\n\n async fill(value: string, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"fill\", locator: this.locator, value }, {}, callOptions);\n }\n\n async type(text: string, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"type\", locator: this.locator, text }, {}, callOptions);\n }\n\n async press(key: string, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"press\", locator: this.locator, key }, {}, callOptions);\n }\n\n async select(values: string[], callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"select\", locator: this.locator, values }, {}, callOptions);\n }\n\n async check(checked = true, callOptions: CodemodeCallOptions = {}) {\n return await this.tab.act({ type: \"check\", locator: this.locator, checked }, {}, callOptions);\n }\n}\n\nexport class CodemodeAuth {\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async listConnections(\n options: { includeArchived?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<SiteAuthConnectionListResponse> {\n const response = await callStructured<{\n operation: \"list_connections\";\n result: SiteAuthConnectionListResponse;\n }>(this.client, PATH.browserAuth, { operation: \"list_connections\", ...options }, callOptions);\n return response.result;\n }\n\n async getConnection(\n siteAuthConnectionId: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<SiteAuthConnection> {\n const response = await callStructured<{\n operation: \"get_connection\";\n result: SiteAuthConnection;\n }>(\n this.client,\n PATH.browserAuth,\n { operation: \"get_connection\", siteAuthConnectionId },\n callOptions,\n );\n return response.result;\n }\n\n async listRuns(\n options: {\n browserSessionId?: string | undefined;\n siteAuthConnectionId?: string | undefined;\n includeSettled?: boolean | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunListResponse> {\n const response = await callStructured<{ operation: \"list_runs\"; result: AuthRunListResponse }>(\n this.client,\n PATH.browserAuth,\n { operation: \"list_runs\", ...options },\n callOptions,\n );\n return response.result;\n }\n\n async getRun(authRunId: string, callOptions: CodemodeCallOptions = {}): Promise<AuthRun> {\n const response = await callStructured<{ operation: \"get_run\"; result: AuthRun }>(\n this.client,\n PATH.browserAuth,\n { operation: \"get_run\", authRunId },\n callOptions,\n );\n return response.result;\n }\n\n use(browserSessionId: string, authRunId: string): CodemodeAuthRun {\n return new CodemodeAuthRun(this.client, browserSessionId, authRunId);\n }\n}\n\nexport class CodemodeBrowserAuth {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly browserSessionId: string,\n ) {}\n\n async listRuns(\n options: {\n siteAuthConnectionId?: string | undefined;\n includeSettled?: boolean | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunListResponse> {\n const response = await callStructured<{ operation: \"list_runs\"; result: AuthRunListResponse }>(\n this.client,\n PATH.browserAuth,\n { operation: \"list_runs\", browserSessionId: this.browserSessionId, ...options },\n callOptions,\n );\n return response.result;\n }\n\n async start(\n request: Omit<StartAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeAuthRun> {\n const response = await callStructured<{ operation: \"start\"; result: AuthRunMutationResponse }>(\n this.client,\n PATH.browserAuth,\n { operation: \"start\", browserSessionId: this.browserSessionId, ...request },\n callOptions,\n );\n return this.use(response.result.run.id);\n }\n\n use(authRunId: string): CodemodeAuthRun {\n return new CodemodeAuthRun(this.client, this.browserSessionId, authRunId);\n }\n}\n\nexport class CodemodeAuthRun {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly browserSessionId: string,\n readonly id: string,\n ) {}\n\n async get(callOptions: CodemodeCallOptions = {}): Promise<AuthRun> {\n const response = await callStructured<{ operation: \"get_run\"; result: AuthRun }>(\n this.client,\n PATH.browserAuth,\n { operation: \"get_run\", authRunId: this.id },\n callOptions,\n );\n if (response.result.browserSessionId !== this.browserSessionId) {\n throw new Error(\"Auth run belongs to another BrowserSession\");\n }\n return response.result;\n }\n\n async report(\n request: Omit<ReportAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunMutationResponse> {\n const response = await callStructured<{ operation: \"report\"; result: AuthRunMutationResponse }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"report\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n\n async protectedFill(\n request: Omit<ProtectedAuthFillRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<ProtectedAuthFillResponse> {\n const response = await callStructured<{\n operation: \"protected_fill\";\n result: ProtectedAuthFillResponse;\n }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"protected_fill\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n\n async advanceExternal(\n request: Omit<ExternalAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<ExternalAuthRunResponse> {\n const response = await callStructured<{\n operation: \"advance_external\";\n result: ExternalAuthRunResponse;\n }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"advance_external\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n\n async verify(\n request: Omit<VerifyAuthRunRequest, \"operationId\">,\n callOptions: CodemodeCallOptions = {},\n ): Promise<AuthRunMutationResponse> {\n const response = await callStructured<{ operation: \"verify\"; result: AuthRunMutationResponse }>(\n this.client,\n PATH.browserAuth,\n {\n operation: \"verify\",\n browserSessionId: this.browserSessionId,\n authRunId: this.id,\n ...request,\n },\n callOptions,\n );\n return response.result;\n }\n}\n\nexport class CodemodeComputerCollection {\n constructor(private readonly client: CodemodeClientProvider) {}\n\n async list(\n options: { includeTerminal?: boolean | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerSession[]> {\n return (\n await callStructured<InteractionDiscovery>(this.client, PATH.discover, options, callOptions)\n ).computers;\n }\n\n async open(\n options: CodemodeComputerOpenOptions = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<CodemodeComputer> {\n const opened = await callStructured<{ session: ComputerSession; targets: ComputerTarget[] }>(\n this.client,\n PATH.computerOpen,\n options,\n callOptions,\n );\n return new CodemodeComputer(this.client, opened.session.id);\n }\n\n use(computerSessionId: string): CodemodeComputer {\n return new CodemodeComputer(this.client, computerSessionId);\n }\n}\n\nexport class CodemodeComputer {\n readonly targets: CodemodeComputerTargetCollection;\n readonly apps: CodemodeComputerTargetCollection;\n readonly clipboard: CodemodeComputerClipboard;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n ) {\n this.targets = new CodemodeComputerTargetCollection(client, id);\n this.apps = this.targets;\n this.clipboard = new CodemodeComputerClipboard(client, id, this.targets);\n }\n\n async refresh(callOptions: CodemodeCallOptions = {}): Promise<ComputerSession> {\n const result = await callStructured<{ session: ComputerSession; targets: ComputerTarget[] }>(\n this.client,\n PATH.computerOpen,\n { computerSessionId: this.id },\n callOptions,\n );\n return result.session;\n }\n\n async observe(\n targetId?: string,\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerObservation> {\n return await this.targets\n .use(await this.targets.resolveId(targetId, callOptions))\n .observe(callOptions);\n }\n\n async act(\n action: ComputerAction,\n options: ComputerActionFences & { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.targets\n .use(await this.targets.resolveId(options.targetId, callOptions))\n .act(action, options, callOptions);\n }\n\n async launch(applicationId: string, callOptions: CodemodeCallOptions = {}) {\n const targetId = await this.targets.resolveId(undefined, callOptions);\n await this.targets.use(targetId).act({ type: \"launch\", applicationId }, {}, callOptions);\n return await this.targets.list(callOptions);\n }\n\n async end(callOptions: CodemodeCallOptions = {}): Promise<ComputerSessionMutationResponse> {\n return await callStructured(\n this.client,\n PATH.computerLifecycle,\n { computerSessionId: this.id, action: \"end\" },\n callOptions,\n );\n }\n}\n\nexport class CodemodeComputerClipboard {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly computerSessionId: string,\n private readonly targets: CodemodeComputerTargetCollection,\n ) {}\n\n async read(callOptions: CodemodeCallOptions = {}): Promise<ComputerClipboard> {\n return await callStructured(\n this.client,\n PATH.computerClipboard,\n { computerSessionId: this.computerSessionId },\n callOptions,\n );\n }\n\n async write(\n text: string,\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"write\", text }, options, callOptions);\n }\n\n async clear(\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"clear\" }, options, callOptions);\n }\n\n async copy(\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"copy\" }, options, callOptions);\n }\n\n async paste(\n options: { targetId?: string | undefined } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await this.mutate({ type: \"clipboard\", operation: \"paste\" }, options, callOptions);\n }\n\n private async mutate(\n action: Extract<ComputerAction, { type: \"clipboard\" }>,\n options: { targetId?: string | undefined },\n callOptions: CodemodeCallOptions,\n ): Promise<ComputerActionReceipt> {\n const targetId = await this.targets.resolveSeatId(options.targetId, callOptions);\n return await this.targets.use(targetId).act(action, {}, callOptions);\n }\n}\n\nexport class CodemodeComputerTargetCollection {\n constructor(\n private readonly client: CodemodeClientProvider,\n private readonly computerSessionId: string,\n ) {}\n\n async list(callOptions: CodemodeCallOptions = {}): Promise<ComputerTargetListResponse> {\n return await callStructured(\n this.client,\n PATH.computerTargets,\n { computerSessionId: this.computerSessionId },\n callOptions,\n );\n }\n\n use(targetId: string): CodemodeComputerTarget {\n return new CodemodeComputerTarget(this.client, this.computerSessionId, targetId);\n }\n\n async focused(callOptions: CodemodeCallOptions = {}): Promise<CodemodeComputerTarget> {\n return this.use(await this.resolveId(undefined, callOptions));\n }\n\n async resolveId(targetId: string | undefined, callOptions: CodemodeCallOptions): Promise<string> {\n const listed = await this.list(callOptions);\n if (targetId) {\n if (!listed.targets.some((target) => target.id === targetId)) {\n throw new Error(`Computer target is unavailable: ${targetId}`);\n }\n return targetId;\n }\n const focused = listed.targets.filter((target) => target.focused);\n if (focused.length === 1) return focused[0]!.id;\n if (listed.targets.length === 1) return listed.targets[0]!.id;\n if (listed.targets.length === 0)\n throw new Error(\"Computer has no app, window, or screen targets\");\n throw new Error(\"Computer target is ambiguous; select an exact app or window\");\n }\n\n async resolveSeatId(\n targetId: string | undefined,\n callOptions: CodemodeCallOptions,\n ): Promise<string> {\n if (targetId) return await this.resolveId(targetId, callOptions);\n const listed = await this.list(callOptions);\n const screens = listed.targets.filter((target) => target.kind === \"screen\");\n if (screens.length === 1) return screens[0]!.id;\n return await this.resolveId(undefined, callOptions);\n }\n}\n\nexport class CodemodeComputerTarget {\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly computerSessionId: string,\n readonly id: string,\n ) {}\n\n async observe(callOptions: CodemodeCallOptions = {}): Promise<ComputerObservation> {\n return await callStructured(\n this.client,\n PATH.computerObserve,\n { computerSessionId: this.computerSessionId, targetId: this.id },\n callOptions,\n );\n }\n\n async act(\n action: ComputerAction,\n fences: ComputerActionFences = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<ComputerActionReceipt> {\n return await callStructured(\n this.client,\n PATH.computerAct,\n { computerSessionId: this.computerSessionId, targetId: this.id, action, ...fences },\n callOptions,\n );\n }\n\n async requestHuman(\n reason: string,\n options: {\n kind?: \"manual_login\" | \"mfa\" | \"external_action\" | \"confirmation\" | \"other\";\n expiresInSeconds?: number | undefined;\n } = {},\n callOptions: CodemodeCallOptions = {},\n ): Promise<RequestHumanInteractionToolOutput> {\n const observation = await this.observe(callOptions);\n return await callStructured(\n this.client,\n PATH.requestHuman,\n {\n operation: \"request\",\n resourceKind: \"computer_session\",\n resourceId: this.computerSessionId,\n targetId: this.id,\n expectedControllerGeneration: observation.target.controllerGeneration,\n expectedTargetGeneration: observation.target.targetGeneration,\n expectedDocumentGeneration: null,\n kind: options.kind ?? \"other\",\n reason,\n ...(options.expiresInSeconds === undefined\n ? {}\n : { expiresInSeconds: options.expiresInSeconds }),\n },\n callOptions,\n );\n }\n\n getByRole(role: string, options: { name?: string; exact?: boolean } = {}) {\n return new CodemodeComputerLocator(this, { kind: \"role\", role, ...options });\n }\n\n getByText(text: string, exact?: boolean) {\n return new CodemodeComputerLocator(this, { kind: \"text\", text, ...(exact ? { exact } : {}) });\n }\n\n getByLabel(text: string, exact?: boolean) {\n return new CodemodeComputerLocator(this, { kind: \"label\", text, ...(exact ? { exact } : {}) });\n }\n\n getByIdentifier(value: string) {\n return new CodemodeComputerLocator(this, { kind: \"identifier\", value });\n }\n\n ref(ref: string) {\n return new CodemodeComputerLocator(this, { kind: \"ref\", ref });\n }\n}\n\nexport class CodemodeComputerLocator {\n constructor(\n private readonly target: CodemodeComputerTarget,\n readonly locator: ComputerLocator,\n ) {}\n\n async invoke(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"invoke\", undefined, callOptions);\n }\n\n async focus(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"focus\", undefined, callOptions);\n }\n\n async setValue(value: string | number | boolean, callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"set_value\", value, callOptions);\n }\n\n async select(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"select\", undefined, callOptions);\n }\n\n async expand(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"expand\", undefined, callOptions);\n }\n\n async collapse(callOptions: CodemodeCallOptions = {}) {\n return await this.semantic(\"collapse\", undefined, callOptions);\n }\n\n private async semantic(\n action: Extract<ComputerAction, { type: \"semantic\" }>[\"action\"],\n value: string | number | boolean | undefined,\n callOptions: CodemodeCallOptions,\n ) {\n return await this.target.act(\n {\n type: \"semantic\",\n locator: this.locator,\n action,\n ...(value === undefined ? {} : { value }),\n },\n {},\n callOptions,\n );\n }\n}\n\nexport function createOpenGeniCodemode(\n client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient(),\n) {\n return new OpenGeniCodemode(client);\n}\n\nexport const openGeni = createOpenGeniCodemode();\n","import type { AttemptToolCatalog } from \"@opengeni/contracts\";\nimport { generateToolDeclarations, jsonSchemaToTypeScript } from \"@opengeni/tool-gateway\";\nimport { parseVerifiedAttemptToolCatalog } from \"./index\";\n\nexport type GenerateCodemodeDeclarationsOptions = {\n /** Package whose augmentable CodemodeGeneratedTools interface owns the namespace. */\n moduleSpecifier?: string;\n};\n\n/**\n * Generate declaration merging for one exact, digest-pinned attempt catalog.\n * Types improve authoring only; runtime catalog validation remains authoritative.\n */\nexport function generateCodemodeDeclarations(\n catalog: AttemptToolCatalog,\n options: GenerateCodemodeDeclarationsOptions = {},\n): string {\n const verified = parseVerifiedAttemptToolCatalog(catalog);\n return generateToolDeclarations(\n { digest: verified.digest, entries: verified.entries },\n {\n moduleSpecifier: options.moduleSpecifier ?? \"@opengeni/codemode\",\n interfaceName: \"CodemodeGeneratedTools\",\n callOptionsType: \"CodemodeCallOptions\",\n fallbackResultType: \"CodemodeToolResult\",\n generatedBy: \"@opengeni/codemode via @opengeni/tool-gateway\",\n catalogDigestLabel: \"Attempt catalog digest\",\n },\n );\n}\n\nexport { jsonSchemaToTypeScript };\n","import { siteRequestHeaders } from \"@opengeni/contracts/site-session-http\";\nimport { randomUUID } from \"node:crypto\";\nimport { generateToolDeclarations } from \"@opengeni/tool-gateway\";\nimport { SITE_BROWSER_RUNTIME, SITE_CLIENT_SCRIPT_PATH } from \"@opengeni/sdk/site-document\";\n\nimport { CodemodeClient, CodemodeTransportError } from \"./index\";\nimport { environmentCodemodeClient, type CodemodeClientProvider } from \"./environment\";\n\nexport const CODEMODE_SITE_LOCAL_PATH = \"/__opengeni/site-tools\" as const;\n\nexport type CodemodeSiteRequestHandler = (request: Request) => Promise<Response>;\n\n/**\n * Same-origin local Site preview adapter. The Bun host retains the exact\n * attempt bearer; browser code receives only the ordinary Site tool protocol.\n */\nexport function createCodemodeSiteRequestHandler(\n client: CodemodeClient | CodemodeClientProvider = () => environmentCodemodeClient(),\n): CodemodeSiteRequestHandler {\n const provide = typeof client === \"function\" ? client : () => client;\n return async (request) => {\n try {\n const pathname = new URL(request.url).pathname;\n if (pathname === SITE_CLIENT_SCRIPT_PATH) {\n if (request.method !== \"GET\" && request.method !== \"HEAD\")\n return new Response(\"Method not allowed\", {\n status: 405,\n headers: { allow: \"GET, HEAD\" },\n });\n return new Response(request.method === \"HEAD\" ? null : SITE_BROWSER_RUNTIME, {\n headers: {\n \"content-type\": \"text/javascript; charset=utf-8\",\n \"cache-control\": \"no-cache\",\n },\n });\n }\n const active = await provide();\n if (pathname.startsWith(`${CODEMODE_SITE_LOCAL_PATH}/sdk/`)) {\n const path =\n pathname.slice(`${CODEMODE_SITE_LOCAL_PATH}/sdk`.length) + new URL(request.url).search;\n const response = await active.sessionRequest(path, {\n method: request.method,\n signal: request.signal,\n headers: siteRequestHeaders(request.headers),\n ...(request.body ? { body: await request.text() } : {}),\n });\n // Fetch decodes compressed upstream bodies. Forward decoded bytes with\n // fresh transport headers, or the preview browser decompresses twice.\n const headers = new Headers(response.headers);\n headers.delete(\"content-encoding\");\n headers.delete(\"content-length\");\n headers.delete(\"transfer-encoding\");\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n }\n if (request.method === \"GET\" && pathname === `${CODEMODE_SITE_LOCAL_PATH}/catalog`) {\n const catalog = await active.catalog({ signal: request.signal });\n return Response.json(projectSiteCatalog(catalog));\n }\n if (request.method === \"GET\" && pathname === `${CODEMODE_SITE_LOCAL_PATH}/declarations`) {\n const catalog = await active.catalog({ signal: request.signal });\n return Response.json({\n catalogDigest: catalog.digest,\n moduleSpecifier: \"@opengeni/sdk\",\n source: generateToolDeclarations(\n { digest: catalog.digest, entries: catalog.entries },\n {\n moduleSpecifier: \"@opengeni/sdk\",\n interfaceName: \"OpenGeniGeneratedTools\",\n callOptionsType: \"OpenGeniToolCallOptions\",\n fallbackResultType: \"ToolGatewayResult\",\n generatedBy: \"@opengeni/codemode local Site preview\",\n catalogDigestLabel: \"Attempt catalog digest\",\n },\n ),\n });\n }\n if (request.method === \"POST\" && pathname === `${CODEMODE_SITE_LOCAL_PATH}/calls`) {\n const body = await request.json();\n if (!isSiteCall(body)) return siteError(400, \"invalid_request\", \"Invalid Site tool call\");\n const catalog = await active.catalog({ signal: request.signal });\n if (body.catalogDigest !== catalog.digest) {\n return siteError(409, \"catalog_stale\", \"The local Site tool catalog changed\", true);\n }\n const operationId = body.operationId ?? randomUUID();\n const result = await active.call(body.identity, body.arguments, {\n operationId,\n signal: request.signal,\n });\n return Response.json({\n operationId,\n catalogDigest: catalog.digest,\n result,\n });\n }\n return siteError(404, \"not_found\", \"Local Site tool endpoint not found\");\n } catch (error) {\n if (error instanceof CodemodeTransportError) {\n return siteError(\n error.status && error.status >= 400 && error.status <= 599 ? error.status : 502,\n error.remoteCode ?? error.code,\n error.message,\n error.retryable === true,\n error.outcomeUnknown === true,\n );\n }\n return siteError(\n 500,\n \"local_codemode_error\",\n error instanceof Error ? error.message : \"Local Site tool request failed\",\n );\n }\n };\n}\n\nfunction projectSiteCatalog(catalog: Awaited<ReturnType<CodemodeClient[\"catalog\"]>>) {\n return {\n version: catalog.version,\n generation: catalog.generation,\n digest: catalog.digest,\n createdAt: catalog.createdAt,\n entries: catalog.entries,\n };\n}\n\nfunction isSiteCall(value: unknown): value is {\n operationId?: string;\n catalogDigest: string;\n identity: { serverId: string; toolName: string };\n arguments: Record<string, unknown>;\n} {\n if (!isRecord(value) || typeof value.catalogDigest !== \"string\") return false;\n if (value.operationId !== undefined && typeof value.operationId !== \"string\") return false;\n return (\n isRecord(value.identity) &&\n typeof value.identity.serverId === \"string\" &&\n typeof value.identity.toolName === \"string\" &&\n isRecord(value.arguments)\n );\n}\n\nfunction siteError(\n status: number,\n code: string,\n message: string,\n retryable = false,\n outcomeUnknown = false,\n): Response {\n return Response.json(\n {\n error: {\n code,\n message,\n retryable,\n ...(outcomeUnknown ? { outcomeUnknown: true } : {}),\n },\n },\n { status },\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"mappings":"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","names":["randomUUID","PATH","generateToolDeclarations","generateToolDeclarations","randomUUID"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/codemode",
3
- "version": "0.5.9-canary.0",
3
+ "version": "0.5.9-canary.2",
4
4
  "description": "Attempt-frozen programmatic tool catalog and execution authority for OpenGeni.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -34,9 +34,9 @@
34
34
  "prepublishOnly": "bash ../../scripts/prepublish-guard"
35
35
  },
36
36
  "dependencies": {
37
- "@opengeni/contracts": "^4.1.0-canary.0",
38
- "@opengeni/sdk": "^6.1.0-canary.0",
39
- "@opengeni/tool-gateway": "^0.1.10-canary.0"
37
+ "@opengeni/contracts": "^4.1.0-canary.2",
38
+ "@opengeni/sdk": "^6.1.0-canary.2",
39
+ "@opengeni/tool-gateway": "^0.1.10-canary.2"
40
40
  },
41
41
  "engines": {
42
42
  "node": ">=18"
package/src/artifacts.ts CHANGED
@@ -30,6 +30,8 @@ export type CodemodeArtifactModality = "spreadsheet" | "document" | "presentatio
30
30
  export type CodemodeArtifactFormat = "xlsx" | "pptx" | "docx" | "pdf" | "png" | "webp";
31
31
  export type CodemodeArtifactMetadata = Readonly<{
32
32
  id: string;
33
+ /** Server-authored handoff reference; absent on older servers. */
34
+ artifactReference?: string;
33
35
  modality: CodemodeArtifactModality;
34
36
  title: string;
35
37
  lifecycle: "active" | "archived";
@@ -226,11 +228,19 @@ export class CodemodeArtifact {
226
228
  async inspect<T = unknown>(
227
229
  query: CodemodeArtifactQuery,
228
230
  callOptions: CodemodeCallOptions = {},
229
- ): Promise<Readonly<{ artifact: CodemodeArtifactMetadata; projection: T }>> {
231
+ ): Promise<
232
+ Readonly<{
233
+ artifact: CodemodeArtifactMetadata;
234
+ projection: T;
235
+ /** Server-authored proof of native document inspection, when available. */
236
+ inspectionReceiptId?: string;
237
+ }>
238
+ > {
230
239
  const modality = (await this.currentMetadata(callOptions)).modality;
231
240
  const result = await callStructured<{
232
241
  artifact: CodemodeArtifactMetadata;
233
242
  projection: T;
243
+ inspectionReceiptId?: string;
234
244
  }>(this.client, PATH.inspect, { artifactId: this.id, modality, request: query }, callOptions);
235
245
  this.metadata = result.artifact;
236
246
  return result;