@opengeni/codemode 0.2.2 → 0.4.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.
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"],"sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport Ajv, { type ValidateFunction } from \"ajv\";\nimport Ajv2019 from \"ajv/dist/2019.js\";\nimport Ajv2020 from \"ajv/dist/2020.js\";\nimport {\n ATTEMPT_TOOL_CATALOG_VERSION,\n ATTEMPT_TOOL_CATALOG_MAX_BYTES,\n AttemptToolCall,\n AttemptToolCatalog,\n AttemptToolCatalogEntry,\n AttemptToolResult,\n CodemodeCallSubmission,\n CodemodeOperation,\n CodemodeDispatchAck,\n CodemodeDispatchRequest,\n type AttemptToolCall as AttemptToolCallValue,\n type 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\";\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 /** 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 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};\n\nexport type ModelAttemptToolCall = {\n operationId?: string;\n modelName: string;\n arguments: Record<string, unknown>;\n subjectId: string;\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n};\n\nexport class AttemptToolCatalogStaleError extends Error {\n readonly code = \"catalog_stale\";\n\n constructor() {\n super(\"Codemode catalog is stale for the active execution attempt\");\n this.name = \"AttemptToolCatalogStaleError\";\n }\n}\n\nexport class AttemptToolNotFoundError extends Error {\n readonly code = \"tool_not_found\";\n\n constructor() {\n super(\"Tool is not present in the active execution attempt catalog\");\n this.name = \"AttemptToolNotFoundError\";\n }\n}\n\nexport class AttemptToolApprovalRequiredError extends Error {\n readonly code = \"approval_required\";\n\n constructor() {\n super(\"Tool requires human approval and must be invoked through the agent\");\n this.name = \"AttemptToolApprovalRequiredError\";\n }\n}\n\nexport class AttemptToolCatalogIntegrityError extends Error {\n readonly code = \"catalog_integrity_failed\";\n\n constructor() {\n super(\"Attempt tool catalog digest does not match its authoritative content\");\n this.name = \"AttemptToolCatalogIntegrityError\";\n }\n}\n\nexport class AttemptToolCatalogTooLargeError extends Error {\n readonly code = \"catalog_too_large\";\n\n constructor() {\n super(\"Attempt tool catalog exceeds the maximum serialized size\");\n this.name = \"AttemptToolCatalogTooLargeError\";\n }\n}\n\nexport class AttemptToolInputValidationError extends Error {\n readonly code = \"invalid_tool_arguments\";\n\n constructor() {\n super(\"Tool arguments do not match the attempt catalog input schema\");\n this.name = \"AttemptToolInputValidationError\";\n }\n}\n\nexport class AttemptToolOutputValidationError extends Error {\n readonly code = \"invalid_tool_result\";\n\n constructor() {\n super(\"Tool result does not match the attempt catalog output schema\");\n this.name = \"AttemptToolOutputValidationError\";\n }\n}\n\nexport class CodemodeTransportError extends Error {\n readonly code = \"codemode_transport_error\";\n\n constructor(\n message: string,\n readonly status: number | null = null,\n ) {\n super(message);\n this.name = \"CodemodeTransportError\";\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 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 const catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\n if (\n !catalog.entries.some(\n (entry) =>\n entry.identity.serverId === identity.serverId &&\n entry.identity.toolName === identity.toolName,\n )\n ) {\n throw new AttemptToolNotFoundError();\n }\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 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 || (operation?.state === \"queued\" && 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 identity,\n argumentsValue,\n options.signal,\n );\n } catch (error) {\n // The POST may have committed before its response was lost, or an\n // attempt may have closed between submission and a wake retry. The\n // caller-owned id is the recovery handle: read before deciding that\n // another side effect is necessary.\n try {\n operation = await this.read(operationId, options.signal);\n } catch {\n throw error;\n }\n }\n } else {\n operation = await this.read(operationId, options.signal);\n }\n if (operation.state === \"completed\") return AttemptToolResult.parse(operation.result);\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 const catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\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 if (matches.length !== 1) throw new AttemptToolNotFoundError();\n return await this.call(matches[0]!.identity, argumentsValue, options);\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 catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\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 if (matches.length !== 1) throw new AttemptToolNotFoundError();\n const entry = matches[0]!;\n const result = await this.call(entry.identity, argumentsValue, options);\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({ operationId, catalogDigest, identity, arguments: argumentsValue }),\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 private async request(path: string, init: RequestInit): 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) {\n let message = `Codemode request failed with HTTP ${response.status}`;\n try {\n const payload = (await response.json()) as { error?: { message?: unknown } };\n if (typeof payload.error?.message === \"string\") message = payload.error.message;\n } catch {\n // The status is sufficient; never echo an unbounded provider body.\n }\n throw new CodemodeTransportError(message, response.status);\n }\n return response;\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\ntype CompiledDefinition = {\n entry: AttemptToolCatalogEntryValue;\n execute: AttemptToolDefinition[\"execute\"];\n validateInput: ValidateFunction<unknown>;\n validateOutput: ValidateFunction<unknown> | null;\n};\n\nexport class AttemptToolEnvironment {\n readonly catalog: AttemptToolCatalogValue;\n private readonly byIdentity = new Map<string, CompiledDefinition>();\n private readonly byModelName = new Map<string, CompiledDefinition>();\n\n constructor(\n catalog: AttemptToolCatalogValue,\n definitions: readonly CompiledDefinition[],\n private readonly authorize: AttemptToolAuthorization | undefined,\n ) {\n this.catalog = catalog;\n for (const definition of definitions) {\n this.byIdentity.set(identityKey(definition.entry.identity), definition);\n this.byModelName.set(definition.entry.modelName, definition);\n }\n }\n\n async call(\n input: AttemptToolCallValue,\n context: { transportMeta?: Record<string, unknown> | null; signal?: AbortSignal } = {},\n ): Promise<AttemptToolResultValue> {\n const call = AttemptToolCall.parse(input);\n if (call.catalogDigest !== this.catalog.digest) {\n throw new AttemptToolCatalogStaleError();\n }\n const definition = this.byIdentity.get(identityKey(call.identity));\n if (!definition) {\n throw new AttemptToolNotFoundError();\n }\n if (call.caller.kind === \"codemode\" && definition.entry.approval === \"human\") {\n throw new AttemptToolApprovalRequiredError();\n }\n if (!definition.validateInput(call.arguments)) {\n throw new AttemptToolInputValidationError();\n }\n await this.authorize?.({ call, entry: definition.entry });\n const result = AttemptToolResult.parse(\n await definition.execute(call.arguments, {\n operationId: call.operationId,\n caller: call.caller,\n ...(context.transportMeta === undefined ? {} : { transportMeta: context.transportMeta }),\n ...(context.signal === undefined ? {} : { signal: context.signal }),\n }),\n );\n if (!result.isError && definition.validateOutput) {\n if (\n result.structuredContent === undefined ||\n !definition.validateOutput(result.structuredContent)\n ) {\n throw new AttemptToolOutputValidationError();\n }\n }\n return result;\n }\n\n async callModel(input: ModelAttemptToolCall): Promise<AttemptToolResultValue> {\n const definition = this.byModelName.get(input.modelName);\n if (!definition) {\n throw new AttemptToolNotFoundError();\n }\n const call = AttemptToolCall.parse({\n operationId: input.operationId ?? randomUUID(),\n catalogDigest: this.catalog.digest,\n identity: definition.entry.identity,\n arguments: input.arguments,\n caller: { kind: \"model\", subjectId: input.subjectId },\n });\n return await this.call(call, {\n ...(input.transportMeta === undefined ? {} : { transportMeta: input.transportMeta }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n });\n }\n}\n\nexport function createAttemptToolEnvironment(\n input: CreateAttemptToolEnvironmentInput,\n): AttemptToolEnvironment {\n const createdAt = (input.createdAt ?? new Date()).toISOString();\n const paths = allocateCodemodePaths(input.definitions);\n const schemaValidators = createSchemaValidators();\n const compiled = input.definitions.map((definition, index): CompiledDefinition => {\n const { execute, codemodePath: _path, ...entryInput } = definition;\n const entry = AttemptToolCatalogEntry.parse({\n ...entryInput,\n codemodePath: paths[index],\n });\n return {\n entry,\n execute,\n validateInput: compileCatalogSchema(schemaValidators, entry.inputSchema),\n validateOutput: entry.outputSchema\n ? compileCatalogSchema(schemaValidators, entry.outputSchema)\n : null,\n };\n });\n const unsigned = {\n version: ATTEMPT_TOOL_CATALOG_VERSION,\n ...input.scope,\n generation: input.generation,\n createdAt,\n entries: compiled.map(({ entry }) => entry),\n };\n const catalog = AttemptToolCatalog.parse({\n ...unsigned,\n digest: digestAttemptToolCatalog(unsigned),\n });\n assertCatalogSize(catalog);\n return new AttemptToolEnvironment(catalog, compiled, input.authorize);\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\ntype SchemaCompiler = { compile(schema: object): ValidateFunction<unknown> };\n\nfunction createSchemaValidators(): {\n draft7: SchemaCompiler;\n draft2019: SchemaCompiler;\n draft2020: SchemaCompiler;\n} {\n const options = {\n allErrors: false,\n coerceTypes: false,\n strict: false,\n useDefaults: false,\n validateFormats: false,\n } as const;\n return {\n draft7: new Ajv(options),\n draft2019: new Ajv2019(options),\n draft2020: new Ajv2020(options),\n };\n}\n\nfunction compileCatalogSchema(\n validators: ReturnType<typeof createSchemaValidators>,\n schema: AttemptToolCatalogEntryValue[\"inputSchema\"],\n): ValidateFunction<unknown> {\n const dialect = typeof schema.$schema === \"string\" ? schema.$schema : \"\";\n if (dialect.includes(\"2020-12\")) return validators.draft2020.compile(schema);\n if (dialect.includes(\"2019-09\")) return validators.draft2019.compile(schema);\n return validators.draft7.compile(schema);\n}\n\nfunction allocateCodemodePaths(definitions: readonly AttemptToolDefinition[]): string[][] {\n const bases = definitions.map((definition) =>\n (definition.codemodePath?.length\n ? definition.codemodePath\n : [definition.identity.serverId, definition.identity.toolName]\n ).map(safeNamespaceSegment),\n );\n const counts = new Map<string, number>();\n for (const path of bases) {\n const key = path.join(\"\\u0000\");\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return bases.map((base, index) => {\n const key = base.join(\"\\u0000\");\n if (counts.get(key) === 1) return base;\n const suffix = `_${shortIdentityDigest(definitions[index]!.identity)}`;\n const last = base.at(-1)!;\n return [...base.slice(0, -1), `${last.slice(0, 128 - suffix.length)}${suffix}`];\n });\n}\n\nfunction safeNamespaceSegment(value: string): string {\n let normalized = value.replace(/[^A-Za-z0-9_$]/gu, \"_\");\n if (!/^[A-Za-z_$]/u.test(normalized)) normalized = `_${normalized}`;\n if ([\"__proto__\", \"prototype\", \"constructor\"].includes(normalized)) {\n normalized = `_${normalized}`;\n }\n return normalized.slice(0, 128) || \"_\";\n}\n\nfunction shortIdentityDigest(identity: AttemptToolIdentity): string {\n return createHash(\"sha256\").update(identityKey(identity), \"utf8\").digest(\"hex\").slice(0, 10);\n}\n\nfunction identityKey(identity: AttemptToolIdentity): string {\n return `${identity.serverId}\\u0000${identity.toolName}`;\n}\n\nfunction digestCanonicalJson(value: unknown): string {\n return createHash(\"sha256\")\n .update(JSON.stringify(canonicalJsonValue(value)), \"utf8\")\n .digest(\"hex\");\n}\n\nfunction canonicalJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(canonicalJsonValue);\n if (value !== null && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entry]) => [key, canonicalJsonValue(entry)]),\n );\n }\n return value;\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\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\";\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 tokenFile: \"OPENGENI_CODEMODE_TOKEN_FILE\",\n} as const;\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: NodeJS.ProcessEnv = process.env,\n): CodemodeClient {\n const baseUrl = requiredEnvironment(environment, CODEMODE_ENVIRONMENT.url);\n const tokenFile = requiredEnvironment(environment, CODEMODE_ENVIRONMENT.tokenFile);\n const key = `${baseUrl}\\u0000${tokenFile}`;\n if (environment === process.env && cachedEnvironmentClient?.key === key) {\n return cachedEnvironmentClient.client;\n }\n const client = new CodemodeClient({\n baseUrl,\n token: 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: NodeJS.ProcessEnv, 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 BrowserAction,\n BrowserActionReceipt,\n BrowserDiagnosticBatch,\n BrowserDiagnosticKind,\n BrowserIdentity,\n BrowserIdentityListResponse,\n BrowserIdentityMutationResponse,\n BrowserLocator,\n BrowserObservation,\n BrowserRevisionListResponse,\n BrowserSession,\n BrowserSessionMutationResponse,\n BrowserTarget,\n BrowserTargetListResponse,\n ComputerAction,\n ComputerActionReceipt,\n ComputerLocator,\n ComputerObservation,\n ComputerSession,\n ComputerSessionMutationResponse,\n ComputerTarget,\n ComputerTargetListResponse,\n InteractionPlacement,\n PublishBrowserRevisionResponse,\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 browserDebug: [\"interaction\", \"browser\", \"debug\"],\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 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\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 }\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\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\nexport class CodemodeBrowser {\n readonly tabs: CodemodeBrowserTabCollection;\n\n constructor(\n private readonly client: CodemodeClientProvider,\n readonly id: string,\n ) {\n this.tabs = new CodemodeBrowserTabCollection(client, id);\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 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 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 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\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 }\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 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\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 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, AttemptToolCatalogEntry } from \"@opengeni/contracts\";\nimport { parseVerifiedAttemptToolCatalog } from \"./index\";\n\nexport type GenerateCodemodeDeclarationsOptions = {\n /** Package whose augmentable CodemodeGeneratedTools interface owns the namespace. */\n moduleSpecifier?: string;\n};\n\ntype NamespaceNode = {\n children: Map<string, NamespaceNode>;\n entry: AttemptToolCatalogEntry | null;\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 const moduleSpecifier = options.moduleSpecifier ?? \"@opengeni/codemode\";\n const root = namespaceNode();\n for (const entry of verified.entries) insertEntry(root, entry);\n\n return [\n \"// Generated by @opengeni/codemode. Do not edit.\",\n `// Attempt catalog digest: ${verified.digest}`,\n `import type { CodemodeCallOptions, CodemodeToolResult } from ${JSON.stringify(moduleSpecifier)};`,\n \"\",\n `declare module ${JSON.stringify(moduleSpecifier)} {`,\n \" interface CodemodeGeneratedTools {\",\n ...renderChildren(root, 4),\n \" }\",\n \"}\",\n \"\",\n \"export {};\",\n \"\",\n ].join(\"\\n\");\n}\n\n/** Honest JSON-Schema-to-TypeScript projection used by declaration generation. */\nexport function jsonSchemaToTypeScript(schema: unknown): string {\n return schemaType(schema, schema, new Set<string>(), 0);\n}\n\nfunction namespaceNode(): NamespaceNode {\n return { children: new Map(), entry: null };\n}\n\nfunction insertEntry(root: NamespaceNode, entry: AttemptToolCatalogEntry): void {\n let node = root;\n for (const [index, segment] of entry.codemodePath.entries()) {\n if (node.entry) {\n throw new Error(\n `Codemode declaration path ${entry.codemodePath.join(\".\")} extends a tool leaf`,\n );\n }\n let child = node.children.get(segment);\n if (!child) {\n child = namespaceNode();\n node.children.set(segment, child);\n }\n node = child;\n if (index === entry.codemodePath.length - 1) {\n if (node.entry || node.children.size > 0) {\n throw new Error(`Codemode declaration path ${entry.codemodePath.join(\".\")} collides`);\n }\n node.entry = entry;\n }\n }\n}\n\nfunction renderChildren(node: NamespaceNode, indent: number): string[] {\n const lines: string[] = [];\n for (const [name, child] of [...node.children].sort(([left], [right]) =>\n left.localeCompare(right),\n )) {\n if (child.entry) {\n lines.push(...renderTool(name, child.entry, indent));\n continue;\n }\n lines.push(`${spaces(indent)}readonly ${name}: {`);\n lines.push(...renderChildren(child, indent + 2));\n lines.push(`${spaces(indent)}};`);\n }\n return lines;\n}\n\nfunction renderTool(name: string, entry: AttemptToolCatalogEntry, indent: number): string[] {\n const input = schemaType(entry.inputSchema, entry.inputSchema, new Set<string>(), 0);\n const output = entry.outputSchema\n ? schemaType(entry.outputSchema, entry.outputSchema, new Set<string>(), 0)\n : \"CodemodeToolResult\";\n const optionalArguments = rootObjectArgumentsAreOptional(entry.inputSchema);\n const description = boundedDoc(entry.description ?? entry.title);\n return [\n ...(description ? renderDoc(description, indent) : []),\n `${spaces(indent)}readonly ${name}: (`,\n `${spaces(indent + 2)}argumentsValue${optionalArguments ? \"?\" : \"\"}: ${input},`,\n `${spaces(indent + 2)}options?: CodemodeCallOptions,`,\n `${spaces(indent)}) => Promise<${output}>;`,\n ];\n}\n\nfunction rootObjectArgumentsAreOptional(schema: unknown): boolean {\n if (!isSchemaObject(schema)) return false;\n const required = Array.isArray(schema.required)\n ? schema.required.filter((value): value is string => typeof value === \"string\")\n : [];\n return required.length === 0 && (schema.type === \"object\" || isSchemaObject(schema.properties));\n}\n\nfunction schemaType(\n schema: unknown,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n if (depth > 48 || schema === true) return \"unknown\";\n if (schema === false) return \"never\";\n if (!isSchemaObject(schema)) return \"unknown\";\n\n if (typeof schema.$ref === \"string\") {\n const reference = schema.$ref;\n if (!reference.startsWith(\"#/\") || resolvingRefs.has(reference)) return \"unknown\";\n const resolved = resolveLocalReference(rootSchema, reference);\n if (resolved === undefined) return \"unknown\";\n const next = new Set(resolvingRefs);\n next.add(reference);\n return schemaType(resolved, rootSchema, next, depth + 1);\n }\n\n if (Object.hasOwn(schema, \"const\")) return literalType(schema.const);\n if (Array.isArray(schema.enum)) {\n return union(schema.enum.map(literalType));\n }\n\n const composites: string[] = [];\n if (Array.isArray(schema.oneOf)) {\n composites.push(\n union(schema.oneOf.map((part) => schemaType(part, rootSchema, resolvingRefs, depth + 1))),\n );\n }\n if (Array.isArray(schema.anyOf)) {\n composites.push(\n union(schema.anyOf.map((part) => schemaType(part, rootSchema, resolvingRefs, depth + 1))),\n );\n }\n if (Array.isArray(schema.allOf)) {\n composites.push(\n intersection(\n schema.allOf.map((part) => schemaType(part, rootSchema, resolvingRefs, depth + 1)),\n ),\n );\n }\n if (composites.length > 0) {\n const composed = intersection(composites);\n return schema.nullable === true ? union([composed, \"null\"]) : composed;\n }\n\n const declaredTypes = Array.isArray(schema.type)\n ? schema.type.filter((value): value is string => typeof value === \"string\")\n : typeof schema.type === \"string\"\n ? [schema.type]\n : inferredSchemaTypes(schema);\n const rendered = declaredTypes.map((type) =>\n typeType(type, schema, rootSchema, resolvingRefs, depth + 1),\n );\n if (schema.nullable === true) rendered.push(\"null\");\n return union(rendered.length > 0 ? rendered : [\"unknown\"]);\n}\n\nfunction inferredSchemaTypes(schema: Record<string, unknown>): string[] {\n if (isSchemaObject(schema.properties) || Object.hasOwn(schema, \"additionalProperties\")) {\n return [\"object\"];\n }\n if (Object.hasOwn(schema, \"items\") || Array.isArray(schema.prefixItems)) return [\"array\"];\n return [];\n}\n\nfunction typeType(\n type: string,\n schema: Record<string, unknown>,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n switch (type) {\n case \"null\":\n return \"null\";\n case \"boolean\":\n return \"boolean\";\n case \"integer\":\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n case \"array\":\n return arrayType(schema, rootSchema, resolvingRefs, depth);\n case \"object\":\n return objectType(schema, rootSchema, resolvingRefs, depth);\n default:\n return \"unknown\";\n }\n}\n\nfunction arrayType(\n schema: Record<string, unknown>,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n if (Array.isArray(schema.prefixItems)) {\n const tuple = schema.prefixItems.map((item) =>\n schemaType(item, rootSchema, resolvingRefs, depth + 1),\n );\n if (schema.items === false) return `readonly [${tuple.join(\", \")}]`;\n const rest =\n schema.items === undefined || schema.items === true\n ? \"unknown\"\n : schemaType(schema.items, rootSchema, resolvingRefs, depth + 1);\n return `readonly [${tuple.join(\", \")}${tuple.length > 0 ? \", \" : \"\"}...${rest}[]]`;\n }\n const item =\n schema.items === undefined || schema.items === true\n ? \"unknown\"\n : schemaType(schema.items, rootSchema, resolvingRefs, depth + 1);\n return `readonly (${item})[]`;\n}\n\nfunction objectType(\n schema: Record<string, unknown>,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n const properties = isSchemaObject(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter((value): value is string => typeof value === \"string\")\n : [],\n );\n const entries = Object.entries(properties).sort(([left], [right]) => left.localeCompare(right));\n const fields = entries.map(([name, propertySchema]) => {\n const key = identifierOrQuoted(name);\n const optional = required.has(name) ? \"\" : \"?\";\n return `readonly ${key}${optional}: ${schemaType(\n propertySchema,\n rootSchema,\n resolvingRefs,\n depth + 1,\n )}`;\n });\n for (const missing of [...required].filter((name) => !Object.hasOwn(properties, name)).sort()) {\n fields.push(`readonly ${identifierOrQuoted(missing)}: unknown`);\n }\n\n const additional = schema.additionalProperties;\n if (additional !== false) {\n if (entries.length === 0 && additional !== undefined && additional !== true) {\n return `Readonly<Record<string, ${schemaType(\n additional,\n rootSchema,\n resolvingRefs,\n depth + 1,\n )}>>`;\n }\n // Known properties and typed additional properties can have incompatible\n // value types. `unknown` preserves legal values without fabricating a lie.\n fields.push(\"readonly [key: string]: unknown\");\n }\n return fields.length === 0 ? \"Record<string, never>\" : `{ ${fields.join(\"; \")} }`;\n}\n\nfunction resolveLocalReference(rootSchema: unknown, reference: string): unknown {\n let current = rootSchema;\n for (const encoded of reference.slice(2).split(\"/\")) {\n if (!isSchemaObject(current)) return undefined;\n const segment = encoded.replace(/~1/gu, \"/\").replace(/~0/gu, \"~\");\n if (!Object.hasOwn(current, segment)) return undefined;\n current = current[segment];\n }\n return current;\n}\n\nfunction literalType(value: unknown): string {\n if (\n value === null ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) return `readonly [${value.map(literalType).join(\", \")}]`;\n if (isSchemaObject(value)) {\n return `{ ${Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => `readonly ${identifierOrQuoted(key)}: ${literalType(child)}`)\n .join(\"; \")} }`;\n }\n return \"unknown\";\n}\n\nfunction union(types: string[]): string {\n const unique = [...new Set(types)];\n if (unique.includes(\"unknown\")) return \"unknown\";\n if (unique.length === 0) return \"never\";\n return unique.length === 1 ? unique[0]! : unique.map(parenthesizeComposite).join(\" | \");\n}\n\nfunction intersection(types: string[]): string {\n const unique = [...new Set(types.filter((type) => type !== \"unknown\"))];\n if (unique.length === 0) return \"unknown\";\n return unique.length === 1 ? unique[0]! : unique.map(parenthesizeComposite).join(\" & \");\n}\n\nfunction parenthesizeComposite(type: string): string {\n return /[|&]/u.test(type) ? `(${type})` : type;\n}\n\nfunction identifierOrQuoted(value: string): string {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(value) ? value : JSON.stringify(value);\n}\n\nfunction boundedDoc(value: string | undefined): string | null {\n if (!value) return null;\n const normalized = value.replace(/\\s+/gu, \" \").trim().replace(/\\*\\//gu, \"*\\\\/\");\n if (!normalized) return null;\n return normalized.length <= 512 ? normalized : `${normalized.slice(0, 509)}...`;\n}\n\nfunction renderDoc(value: string, indent: number): string[] {\n return [`${spaces(indent)}/** ${value} */`];\n}\n\nfunction spaces(count: number): string {\n return \" \".repeat(count);\n}\n\nfunction isSchemaObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n"],"mappings":"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","names":["PATH","item","entry"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/environment.ts","../src/artifacts.ts","../src/structured.ts","../src/interaction.ts","../src/declarations.ts"],"sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport Ajv, { type ValidateFunction } from \"ajv\";\nimport Ajv2019 from \"ajv/dist/2019.js\";\nimport Ajv2020 from \"ajv/dist/2020.js\";\nimport {\n ATTEMPT_TOOL_CATALOG_VERSION,\n ATTEMPT_TOOL_CATALOG_MAX_BYTES,\n AttemptToolCall,\n AttemptToolCatalog,\n AttemptToolCatalogEntry,\n AttemptToolResult,\n CodemodeCallSubmission,\n CodemodeOperation,\n CodemodeDispatchAck,\n CodemodeDispatchRequest,\n type AttemptToolCall as AttemptToolCallValue,\n type 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\";\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 /** 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 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};\n\nexport type ModelAttemptToolCall = {\n operationId?: string;\n modelName: string;\n arguments: Record<string, unknown>;\n subjectId: string;\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n};\n\nexport class AttemptToolCatalogStaleError extends Error {\n readonly code = \"catalog_stale\";\n\n constructor() {\n super(\"Codemode catalog is stale for the active execution attempt\");\n this.name = \"AttemptToolCatalogStaleError\";\n }\n}\n\nexport class AttemptToolNotFoundError extends Error {\n readonly code = \"tool_not_found\";\n\n constructor() {\n super(\"Tool is not present in the active execution attempt catalog\");\n this.name = \"AttemptToolNotFoundError\";\n }\n}\n\nexport class AttemptToolApprovalRequiredError extends Error {\n readonly code = \"approval_required\";\n\n constructor() {\n super(\"Tool requires human approval and must be invoked through the agent\");\n this.name = \"AttemptToolApprovalRequiredError\";\n }\n}\n\nexport class AttemptToolCatalogIntegrityError extends Error {\n readonly code = \"catalog_integrity_failed\";\n\n constructor() {\n super(\"Attempt tool catalog digest does not match its authoritative content\");\n this.name = \"AttemptToolCatalogIntegrityError\";\n }\n}\n\nexport class AttemptToolCatalogTooLargeError extends Error {\n readonly code = \"catalog_too_large\";\n\n constructor() {\n super(\"Attempt tool catalog exceeds the maximum serialized size\");\n this.name = \"AttemptToolCatalogTooLargeError\";\n }\n}\n\nexport class AttemptToolInputValidationError extends Error {\n readonly code = \"invalid_tool_arguments\";\n\n constructor() {\n super(\"Tool arguments do not match the attempt catalog input schema\");\n this.name = \"AttemptToolInputValidationError\";\n }\n}\n\nexport class AttemptToolOutputValidationError extends Error {\n readonly code = \"invalid_tool_result\";\n\n constructor() {\n super(\"Tool result does not match the attempt catalog output schema\");\n this.name = \"AttemptToolOutputValidationError\";\n }\n}\n\nexport class CodemodeTransportError extends Error {\n readonly code = \"codemode_transport_error\";\n\n constructor(\n message: string,\n readonly status: number | null = null,\n ) {\n super(message);\n this.name = \"CodemodeTransportError\";\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 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 const catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\n if (\n !catalog.entries.some(\n (entry) =>\n entry.identity.serverId === identity.serverId &&\n entry.identity.toolName === identity.toolName,\n )\n ) {\n throw new AttemptToolNotFoundError();\n }\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 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 || (operation?.state === \"queued\" && 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 identity,\n argumentsValue,\n options.signal,\n );\n } catch (error) {\n // The POST may have committed before its response was lost, or an\n // attempt may have closed between submission and a wake retry. The\n // caller-owned id is the recovery handle: read before deciding that\n // another side effect is necessary.\n try {\n operation = await this.read(operationId, options.signal);\n } catch {\n throw error;\n }\n }\n } else {\n operation = await this.read(operationId, options.signal);\n }\n if (operation.state === \"completed\") return AttemptToolResult.parse(operation.result);\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 const catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\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 if (matches.length !== 1) throw new AttemptToolNotFoundError();\n return await this.call(matches[0]!.identity, argumentsValue, options);\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 catalog = await this.catalog(options.signal ? { signal: options.signal } : {});\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 if (matches.length !== 1) throw new AttemptToolNotFoundError();\n const entry = matches[0]!;\n const result = await this.call(entry.identity, argumentsValue, options);\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 private async request(path: string, init: RequestInit): 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) {\n let message = `Codemode request failed with HTTP ${response.status}`;\n try {\n const payload = (await response.json()) as {\n error?: { message?: unknown };\n };\n if (typeof payload.error?.message === \"string\") message = payload.error.message;\n } catch {\n // The status is sufficient; never echo an unbounded provider body.\n }\n throw new CodemodeTransportError(message, response.status);\n }\n return response;\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\ntype CompiledDefinition = {\n entry: AttemptToolCatalogEntryValue;\n execute: AttemptToolDefinition[\"execute\"];\n validateInput: ValidateFunction<unknown>;\n validateOutput: ValidateFunction<unknown> | null;\n};\n\nexport class AttemptToolEnvironment {\n readonly catalog: AttemptToolCatalogValue;\n private readonly byIdentity = new Map<string, CompiledDefinition>();\n private readonly byModelName = new Map<string, CompiledDefinition>();\n\n constructor(\n catalog: AttemptToolCatalogValue,\n definitions: readonly CompiledDefinition[],\n private readonly authorize: AttemptToolAuthorization | undefined,\n ) {\n this.catalog = catalog;\n for (const definition of definitions) {\n this.byIdentity.set(identityKey(definition.entry.identity), definition);\n this.byModelName.set(definition.entry.modelName, definition);\n }\n }\n\n async call(\n input: AttemptToolCallValue,\n context: {\n transportMeta?: Record<string, unknown> | null;\n signal?: AbortSignal;\n } = {},\n ): Promise<AttemptToolResultValue> {\n const call = AttemptToolCall.parse(input);\n if (call.catalogDigest !== this.catalog.digest) {\n throw new AttemptToolCatalogStaleError();\n }\n const definition = this.byIdentity.get(identityKey(call.identity));\n if (!definition) {\n throw new AttemptToolNotFoundError();\n }\n if (call.caller.kind === \"codemode\" && definition.entry.approval === \"human\") {\n throw new AttemptToolApprovalRequiredError();\n }\n if (!definition.validateInput(call.arguments)) {\n throw new AttemptToolInputValidationError();\n }\n await this.authorize?.({ call, entry: definition.entry });\n const result = AttemptToolResult.parse(\n await definition.execute(call.arguments, {\n operationId: call.operationId,\n caller: call.caller,\n ...(context.transportMeta === undefined ? {} : { transportMeta: context.transportMeta }),\n ...(context.signal === undefined ? {} : { signal: context.signal }),\n }),\n );\n if (!result.isError && definition.validateOutput) {\n if (\n result.structuredContent === undefined ||\n !definition.validateOutput(result.structuredContent)\n ) {\n throw new AttemptToolOutputValidationError();\n }\n }\n return result;\n }\n\n async callModel(input: ModelAttemptToolCall): Promise<AttemptToolResultValue> {\n const definition = this.byModelName.get(input.modelName);\n if (!definition) {\n throw new AttemptToolNotFoundError();\n }\n const call = AttemptToolCall.parse({\n operationId: input.operationId ?? randomUUID(),\n catalogDigest: this.catalog.digest,\n identity: definition.entry.identity,\n arguments: input.arguments,\n caller: { kind: \"model\", subjectId: input.subjectId },\n });\n return await this.call(call, {\n ...(input.transportMeta === undefined ? {} : { transportMeta: input.transportMeta }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n });\n }\n}\n\nexport function createAttemptToolEnvironment(\n input: CreateAttemptToolEnvironmentInput,\n): AttemptToolEnvironment {\n const createdAt = (input.createdAt ?? new Date()).toISOString();\n const paths = allocateCodemodePaths(input.definitions);\n const schemaValidators = createSchemaValidators();\n const compiled = input.definitions.map((definition, index): CompiledDefinition => {\n const { execute, codemodePath: _path, ...entryInput } = definition;\n const entry = AttemptToolCatalogEntry.parse({\n ...entryInput,\n codemodePath: paths[index],\n });\n return {\n entry,\n execute,\n validateInput: compileCatalogSchema(schemaValidators, entry.inputSchema),\n validateOutput: entry.outputSchema\n ? compileCatalogSchema(schemaValidators, entry.outputSchema)\n : null,\n };\n });\n const unsigned = {\n version: ATTEMPT_TOOL_CATALOG_VERSION,\n ...input.scope,\n generation: input.generation,\n createdAt,\n entries: compiled.map(({ entry }) => entry),\n };\n const catalog = AttemptToolCatalog.parse({\n ...unsigned,\n digest: digestAttemptToolCatalog(unsigned),\n });\n assertCatalogSize(catalog);\n return new AttemptToolEnvironment(catalog, compiled, input.authorize);\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\ntype SchemaCompiler = { compile(schema: object): ValidateFunction<unknown> };\n\n// Validator compilation is structural and independent of attempt identity,\n// executable closures, credentials, and authorization. Reuse only exact\n// content-addressed validators; the attempt environment and catalog remain\n// freshly bound and digested on every execution. The hard cap prevents an\n// untrusted MCP schema stream from turning this process cache into a memory\n// sink.\nconst COMPILED_CATALOG_SCHEMA_CACHE_MAX_ENTRIES = 512;\nconst compiledCatalogSchemaCache = new Map<string, ValidateFunction<unknown>>();\n\nfunction createSchemaValidators(): {\n draft7: SchemaCompiler;\n draft2019: SchemaCompiler;\n draft2020: SchemaCompiler;\n} {\n const options = {\n allErrors: false,\n coerceTypes: false,\n strict: false,\n useDefaults: false,\n validateFormats: false,\n } as const;\n return {\n draft7: new Ajv(options),\n draft2019: new Ajv2019(options),\n draft2020: new Ajv2020(options),\n };\n}\n\nfunction compileCatalogSchema(\n validators: ReturnType<typeof createSchemaValidators>,\n schema: AttemptToolCatalogEntryValue[\"inputSchema\"],\n): ValidateFunction<unknown> {\n const dialect = typeof schema.$schema === \"string\" ? schema.$schema : \"\";\n const family = dialect.includes(\"2020-12\")\n ? \"2020-12\"\n : dialect.includes(\"2019-09\")\n ? \"2019-09\"\n : \"draft7\";\n const cacheKey = `${family}:${digestCanonicalJson(schema)}`;\n const cached = compiledCatalogSchemaCache.get(cacheKey);\n if (cached) {\n compiledCatalogSchemaCache.delete(cacheKey);\n compiledCatalogSchemaCache.set(cacheKey, cached);\n return cached;\n }\n const compiled =\n family === \"2020-12\"\n ? validators.draft2020.compile(schema)\n : family === \"2019-09\"\n ? validators.draft2019.compile(schema)\n : validators.draft7.compile(schema);\n while (compiledCatalogSchemaCache.size >= COMPILED_CATALOG_SCHEMA_CACHE_MAX_ENTRIES) {\n const oldest = compiledCatalogSchemaCache.keys().next().value;\n if (oldest === undefined) break;\n compiledCatalogSchemaCache.delete(oldest);\n }\n compiledCatalogSchemaCache.set(cacheKey, compiled);\n return compiled;\n}\n\nfunction allocateCodemodePaths(definitions: readonly AttemptToolDefinition[]): string[][] {\n const bases = definitions.map((definition) =>\n (definition.codemodePath?.length\n ? definition.codemodePath\n : [definition.identity.serverId, definition.identity.toolName]\n ).map(safeNamespaceSegment),\n );\n const counts = new Map<string, number>();\n for (const path of bases) {\n const key = path.join(\"\\u0000\");\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return bases.map((base, index) => {\n const key = base.join(\"\\u0000\");\n if (counts.get(key) === 1) return base;\n const suffix = `_${shortIdentityDigest(definitions[index]!.identity)}`;\n const last = base.at(-1)!;\n return [...base.slice(0, -1), `${last.slice(0, 128 - suffix.length)}${suffix}`];\n });\n}\n\nfunction safeNamespaceSegment(value: string): string {\n let normalized = value.replace(/[^A-Za-z0-9_$]/gu, \"_\");\n if (!/^[A-Za-z_$]/u.test(normalized)) normalized = `_${normalized}`;\n if ([\"__proto__\", \"prototype\", \"constructor\"].includes(normalized)) {\n normalized = `_${normalized}`;\n }\n return normalized.slice(0, 128) || \"_\";\n}\n\nfunction shortIdentityDigest(identity: AttemptToolIdentity): string {\n return createHash(\"sha256\").update(identityKey(identity), \"utf8\").digest(\"hex\").slice(0, 10);\n}\n\nfunction identityKey(identity: AttemptToolIdentity): string {\n return `${identity.serverId}\\u0000${identity.toolName}`;\n}\n\nfunction digestCanonicalJson(value: unknown): string {\n return createHash(\"sha256\")\n .update(JSON.stringify(canonicalJsonValue(value)), \"utf8\")\n .digest(\"hex\");\n}\n\nfunction canonicalJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(canonicalJsonValue);\n if (value !== null && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entry]) => [key, canonicalJsonValue(entry)]),\n );\n }\n return value;\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\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\";\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, AttemptToolCatalogEntry } from \"@opengeni/contracts\";\nimport { parseVerifiedAttemptToolCatalog } from \"./index\";\n\nexport type GenerateCodemodeDeclarationsOptions = {\n /** Package whose augmentable CodemodeGeneratedTools interface owns the namespace. */\n moduleSpecifier?: string;\n};\n\ntype NamespaceNode = {\n children: Map<string, NamespaceNode>;\n entry: AttemptToolCatalogEntry | null;\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 const moduleSpecifier = options.moduleSpecifier ?? \"@opengeni/codemode\";\n const root = namespaceNode();\n for (const entry of verified.entries) insertEntry(root, entry);\n\n return [\n \"// Generated by @opengeni/codemode. Do not edit.\",\n `// Attempt catalog digest: ${verified.digest}`,\n `import type { CodemodeCallOptions, CodemodeToolResult } from ${JSON.stringify(moduleSpecifier)};`,\n \"\",\n `declare module ${JSON.stringify(moduleSpecifier)} {`,\n \" interface CodemodeGeneratedTools {\",\n ...renderChildren(root, 4),\n \" }\",\n \"}\",\n \"\",\n \"export {};\",\n \"\",\n ].join(\"\\n\");\n}\n\n/** Honest JSON-Schema-to-TypeScript projection used by declaration generation. */\nexport function jsonSchemaToTypeScript(schema: unknown): string {\n return schemaType(schema, schema, new Set<string>(), 0);\n}\n\nfunction namespaceNode(): NamespaceNode {\n return { children: new Map(), entry: null };\n}\n\nfunction insertEntry(root: NamespaceNode, entry: AttemptToolCatalogEntry): void {\n let node = root;\n for (const [index, segment] of entry.codemodePath.entries()) {\n if (node.entry) {\n throw new Error(\n `Codemode declaration path ${entry.codemodePath.join(\".\")} extends a tool leaf`,\n );\n }\n let child = node.children.get(segment);\n if (!child) {\n child = namespaceNode();\n node.children.set(segment, child);\n }\n node = child;\n if (index === entry.codemodePath.length - 1) {\n if (node.entry || node.children.size > 0) {\n throw new Error(`Codemode declaration path ${entry.codemodePath.join(\".\")} collides`);\n }\n node.entry = entry;\n }\n }\n}\n\nfunction renderChildren(node: NamespaceNode, indent: number): string[] {\n const lines: string[] = [];\n for (const [name, child] of [...node.children].sort(([left], [right]) =>\n left.localeCompare(right),\n )) {\n if (child.entry) {\n lines.push(...renderTool(name, child.entry, indent));\n continue;\n }\n lines.push(`${spaces(indent)}readonly ${name}: {`);\n lines.push(...renderChildren(child, indent + 2));\n lines.push(`${spaces(indent)}};`);\n }\n return lines;\n}\n\nfunction renderTool(name: string, entry: AttemptToolCatalogEntry, indent: number): string[] {\n const input = schemaType(entry.inputSchema, entry.inputSchema, new Set<string>(), 0);\n const output = entry.outputSchema\n ? schemaType(entry.outputSchema, entry.outputSchema, new Set<string>(), 0)\n : \"CodemodeToolResult\";\n const optionalArguments = rootObjectArgumentsAreOptional(entry.inputSchema);\n const description = boundedDoc(entry.description ?? entry.title);\n return [\n ...(description ? renderDoc(description, indent) : []),\n `${spaces(indent)}readonly ${name}: (`,\n `${spaces(indent + 2)}argumentsValue${optionalArguments ? \"?\" : \"\"}: ${input},`,\n `${spaces(indent + 2)}options?: CodemodeCallOptions,`,\n `${spaces(indent)}) => Promise<${output}>;`,\n ];\n}\n\nfunction rootObjectArgumentsAreOptional(schema: unknown): boolean {\n if (!isSchemaObject(schema)) return false;\n const required = Array.isArray(schema.required)\n ? schema.required.filter((value): value is string => typeof value === \"string\")\n : [];\n return required.length === 0 && (schema.type === \"object\" || isSchemaObject(schema.properties));\n}\n\nfunction schemaType(\n schema: unknown,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n if (depth > 48 || schema === true) return \"unknown\";\n if (schema === false) return \"never\";\n if (!isSchemaObject(schema)) return \"unknown\";\n\n if (typeof schema.$ref === \"string\") {\n const reference = schema.$ref;\n if (!reference.startsWith(\"#/\") || resolvingRefs.has(reference)) return \"unknown\";\n const resolved = resolveLocalReference(rootSchema, reference);\n if (resolved === undefined) return \"unknown\";\n const next = new Set(resolvingRefs);\n next.add(reference);\n return schemaType(resolved, rootSchema, next, depth + 1);\n }\n\n if (Object.hasOwn(schema, \"const\")) return literalType(schema.const);\n if (Array.isArray(schema.enum)) {\n return union(schema.enum.map(literalType));\n }\n\n const composites: string[] = [];\n if (Array.isArray(schema.oneOf)) {\n composites.push(\n union(schema.oneOf.map((part) => schemaType(part, rootSchema, resolvingRefs, depth + 1))),\n );\n }\n if (Array.isArray(schema.anyOf)) {\n composites.push(\n union(schema.anyOf.map((part) => schemaType(part, rootSchema, resolvingRefs, depth + 1))),\n );\n }\n if (Array.isArray(schema.allOf)) {\n composites.push(\n intersection(\n schema.allOf.map((part) => schemaType(part, rootSchema, resolvingRefs, depth + 1)),\n ),\n );\n }\n if (composites.length > 0) {\n const composed = intersection(composites);\n return schema.nullable === true ? union([composed, \"null\"]) : composed;\n }\n\n const declaredTypes = Array.isArray(schema.type)\n ? schema.type.filter((value): value is string => typeof value === \"string\")\n : typeof schema.type === \"string\"\n ? [schema.type]\n : inferredSchemaTypes(schema);\n const rendered = declaredTypes.map((type) =>\n typeType(type, schema, rootSchema, resolvingRefs, depth + 1),\n );\n if (schema.nullable === true) rendered.push(\"null\");\n return union(rendered.length > 0 ? rendered : [\"unknown\"]);\n}\n\nfunction inferredSchemaTypes(schema: Record<string, unknown>): string[] {\n if (isSchemaObject(schema.properties) || Object.hasOwn(schema, \"additionalProperties\")) {\n return [\"object\"];\n }\n if (Object.hasOwn(schema, \"items\") || Array.isArray(schema.prefixItems)) return [\"array\"];\n return [];\n}\n\nfunction typeType(\n type: string,\n schema: Record<string, unknown>,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n switch (type) {\n case \"null\":\n return \"null\";\n case \"boolean\":\n return \"boolean\";\n case \"integer\":\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n case \"array\":\n return arrayType(schema, rootSchema, resolvingRefs, depth);\n case \"object\":\n return objectType(schema, rootSchema, resolvingRefs, depth);\n default:\n return \"unknown\";\n }\n}\n\nfunction arrayType(\n schema: Record<string, unknown>,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n if (Array.isArray(schema.prefixItems)) {\n const tuple = schema.prefixItems.map((item) =>\n schemaType(item, rootSchema, resolvingRefs, depth + 1),\n );\n if (schema.items === false) return `readonly [${tuple.join(\", \")}]`;\n const rest =\n schema.items === undefined || schema.items === true\n ? \"unknown\"\n : schemaType(schema.items, rootSchema, resolvingRefs, depth + 1);\n return `readonly [${tuple.join(\", \")}${tuple.length > 0 ? \", \" : \"\"}...${rest}[]]`;\n }\n const item =\n schema.items === undefined || schema.items === true\n ? \"unknown\"\n : schemaType(schema.items, rootSchema, resolvingRefs, depth + 1);\n return `readonly (${item})[]`;\n}\n\nfunction objectType(\n schema: Record<string, unknown>,\n rootSchema: unknown,\n resolvingRefs: Set<string>,\n depth: number,\n): string {\n const properties = isSchemaObject(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter((value): value is string => typeof value === \"string\")\n : [],\n );\n const entries = Object.entries(properties).sort(([left], [right]) => left.localeCompare(right));\n const fields = entries.map(([name, propertySchema]) => {\n const key = identifierOrQuoted(name);\n const optional = required.has(name) ? \"\" : \"?\";\n return `readonly ${key}${optional}: ${schemaType(\n propertySchema,\n rootSchema,\n resolvingRefs,\n depth + 1,\n )}`;\n });\n for (const missing of [...required].filter((name) => !Object.hasOwn(properties, name)).sort()) {\n fields.push(`readonly ${identifierOrQuoted(missing)}: unknown`);\n }\n\n const additional = schema.additionalProperties;\n if (additional !== false) {\n if (entries.length === 0 && additional !== undefined && additional !== true) {\n return `Readonly<Record<string, ${schemaType(\n additional,\n rootSchema,\n resolvingRefs,\n depth + 1,\n )}>>`;\n }\n // Known properties and typed additional properties can have incompatible\n // value types. `unknown` preserves legal values without fabricating a lie.\n fields.push(\"readonly [key: string]: unknown\");\n }\n return fields.length === 0 ? \"Record<string, never>\" : `{ ${fields.join(\"; \")} }`;\n}\n\nfunction resolveLocalReference(rootSchema: unknown, reference: string): unknown {\n let current = rootSchema;\n for (const encoded of reference.slice(2).split(\"/\")) {\n if (!isSchemaObject(current)) return undefined;\n const segment = encoded.replace(/~1/gu, \"/\").replace(/~0/gu, \"~\");\n if (!Object.hasOwn(current, segment)) return undefined;\n current = current[segment];\n }\n return current;\n}\n\nfunction literalType(value: unknown): string {\n if (\n value === null ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) return `readonly [${value.map(literalType).join(\", \")}]`;\n if (isSchemaObject(value)) {\n return `{ ${Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => `readonly ${identifierOrQuoted(key)}: ${literalType(child)}`)\n .join(\"; \")} }`;\n }\n return \"unknown\";\n}\n\nfunction union(types: string[]): string {\n const unique = [...new Set(types)];\n if (unique.includes(\"unknown\")) return \"unknown\";\n if (unique.length === 0) return \"never\";\n return unique.length === 1 ? unique[0]! : unique.map(parenthesizeComposite).join(\" | \");\n}\n\nfunction intersection(types: string[]): string {\n const unique = [...new Set(types.filter((type) => type !== \"unknown\"))];\n if (unique.length === 0) return \"unknown\";\n return unique.length === 1 ? unique[0]! : unique.map(parenthesizeComposite).join(\" & \");\n}\n\nfunction parenthesizeComposite(type: string): string {\n return /[|&]/u.test(type) ? `(${type})` : type;\n}\n\nfunction identifierOrQuoted(value: string): string {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(value) ? value : JSON.stringify(value);\n}\n\nfunction boundedDoc(value: string | undefined): string | null {\n if (!value) return null;\n const normalized = value.replace(/\\s+/gu, \" \").trim().replace(/\\*\\//gu, \"*\\\\/\");\n if (!normalized) return null;\n return normalized.length <= 512 ? normalized : `${normalized.slice(0, 509)}...`;\n}\n\nfunction renderDoc(value: string, indent: number): string[] {\n return [`${spaces(indent)}/** ${value} */`];\n}\n\nfunction spaces(count: number): string {\n return \" \".repeat(count);\n}\n\nfunction isSchemaObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n"],"mappings":"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","names":["PATH","item","entry"]}