niceeval 0.14.1-canary.51 → 0.14.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/INDEX.md +1 -1
- package/dist/agents/codex-app-server.cjs +7 -1
- package/dist/agents/codex-app-server.cjs.map +1 -1
- package/dist/inspection/overview.cjs +7 -3
- package/dist/inspection/overview.cjs.map +1 -1
- package/dist/sandbox/incus/control.cjs +28 -1
- package/dist/sandbox/incus/control.cjs.map +1 -1
- package/dist/show/render.cjs +28 -15
- package/dist/show/render.cjs.map +1 -1
- package/dist/view/function-runtime.mjs +2 -2
- package/docs-site/zh/reference/cli.mdx +4 -2
- package/docs-site/zh/troubleshooting/debugging.mdx +20 -1
- package/docs-site/zh/tutorials/criteria-files.mdx +2 -0
- package/docs-site/zh/tutorials/evaluation-kinds.mdx +1 -1
- package/docs-site/zh/tutorials/rerun-and-cache.mdx +3 -1
- package/docs-site/zh/tutorials/viewing-results.mdx +43 -4
- package/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +3 -2
- package/node_modules/undici/docs/docs/api/EventSource.md +4 -0
- package/node_modules/undici/lib/cache/memory-cache-store.js +1 -1
- package/node_modules/undici/lib/dispatcher/agent.js +7 -2
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +1 -1
- package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +43 -3
- package/node_modules/undici/lib/dispatcher/client.js +3 -2
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +13 -1
- package/node_modules/undici/lib/dispatcher/dispatcher.js +10 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +10 -3
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +1 -1
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +3 -1
- package/node_modules/undici/lib/handler/cache-handler.js +8 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +7 -1
- package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/undici/lib/handler/redirect-handler.js +8 -0
- package/node_modules/undici/lib/handler/retry-handler.js +83 -11
- package/node_modules/undici/lib/interceptor/dump.js +1 -1
- package/node_modules/undici/lib/mock/mock-agent.js +13 -1
- package/node_modules/undici/lib/mock/mock-utils.js +11 -10
- package/node_modules/undici/lib/web/cookies/parse.js +4 -2
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +4 -1
- package/node_modules/undici/lib/web/fetch/request.js +2 -3
- package/node_modules/undici/package.json +3 -3
- package/node_modules/undici/types/client.d.ts +10 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.js","sourceRoot":"","sources":["control.ts"],"names":[],"mappings":"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","sourcesContent":["import { Result, Schema } from \"effect\";\nimport { Effect } from \"effect\";\nimport { spawn } from \"node:child_process\";\nimport { request as httpRequest } from \"node:http\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { classifyProvisionErrorFallback, type SandboxProvisionErrorKind } from \"../errors.ts\";\nimport { DEVELOPMENT_HOST_PATH } from \"./descriptor.ts\";\nimport { incusError, type IncusProviderError } from \"./errors.ts\";\nimport type { IncusImageLocator } from \"./image.ts\";\nimport { INCUS_GUEST_INIT_BLOCK_DOCKER_DATA, INCUS_IMAGE_GUEST_INIT_PROPERTY, parseIncusImageLocator, } from \"./image.ts\";\nconst QUERY_TIMEOUT_MS = 15000;\nconst MUTATION_TIMEOUT_MS = 120000;\nconst ParseOptions = Object.freeze({\n errors: \"all\" as const,\n exact: true,\n onExcessProperty: \"error\" as const,\n});\nexport const INCUS_METADATA = Object.freeze({\n allocationId: \"user.niceeval.allocationId\",\n executionId: \"user.niceeval.executionId\",\n generation: \"user.niceeval.generation\",\n artifactDigest: \"user.niceeval.artifactDigest\",\n executionDomainId: \"user.niceeval.executionDomainId\",\n provisionToken: \"user.niceeval.provisionToken\",\n host: \"user.niceeval.host\",\n pid: \"user.niceeval.pid\",\n startedAt: \"user.niceeval.startedAt\",\n artifactState: \"user.niceeval.artifactState\",\n setupPrefixKey: \"user.niceeval.setupPrefixKey\",\n manifestDigest: \"user.niceeval.manifestDigest\",\n runtimeProject: \"user.niceeval.runtimeProject\",\n pool: \"user.niceeval.pool\",\n baseFingerprint: \"user.niceeval.baseFingerprint\",\n captureRevision: \"user.niceeval.captureRevision\",\n replacementScopeDigest: \"user.niceeval.replacementScopeDigest\",\n});\nexport interface IncusImage {\n readonly fingerprint: string;\n readonly aliases: readonly string[];\n readonly type: string;\n readonly properties: Readonly<Record<string, string>>;\n}\nexport interface IncusInstance {\n readonly name: string;\n readonly status: string;\n readonly type: string;\n readonly config: Readonly<Record<string, string>>;\n readonly expandedDevices?: Readonly<Record<string, Readonly<Record<string, string>>>>;\n}\nexport interface IncusExecResult {\n readonly stdout: string;\n readonly stderr: string;\n readonly exitCode: number;\n}\nexport interface IncusInstanceSpec {\n readonly name: string;\n readonly project: string;\n readonly fingerprint: string;\n readonly storagePool: string;\n readonly network: string;\n readonly config: Readonly<Record<string, string>>;\n readonly dockerDataVolume: string;\n readonly dockerDataContentType: \"block\" | \"filesystem\";\n readonly dockerDataPath?: string;\n}\nexport interface IncusVolume {\n readonly name: string;\n readonly type: string;\n readonly contentType: string;\n readonly config: Readonly<Record<string, string>>;\n}\nexport interface IncusVolumeSpec {\n readonly project: string;\n readonly pool: string;\n readonly name: string;\n readonly contentType: \"block\" | \"filesystem\";\n readonly sizeBytes: number;\n readonly config: Readonly<Record<string, string>>;\n}\nexport interface IncusStorageAttestation {\n readonly name: string;\n readonly driver: string;\n readonly source: string;\n readonly backingDevice: string;\n}\nexport interface SpawnedIncusExec {\n readonly stdin: NodeJS.WritableStream;\n readonly stdout: NodeJS.ReadableStream;\n readonly stderr: NodeJS.ReadableStream;\n readonly pid: number | undefined;\n wait(): Promise<number>;\n killHost(): void;\n}\ntype Transport = {\n readonly _tag: \"Cli\";\n readonly binary: string;\n} | {\n readonly _tag: \"UnixRead\";\n readonly socketPath: string;\n};\nconst EnvelopeSchema = Schema.Struct({\n type: Schema.Literals([\"sync\", \"error\", \"async\"]),\n status: Schema.optional(Schema.String),\n status_code: Schema.optional(Schema.Number),\n error: Schema.optional(Schema.String),\n error_code: Schema.optional(Schema.Number),\n metadata: Schema.optional(Schema.Unknown),\n operation: Schema.optional(Schema.String),\n});\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\nfunction asStringRecord(value: unknown): Record<string, string> {\n if (!isRecord(value))\n return {};\n const out: Record<string, string> = {};\n for (const [key, child] of Object.entries(value)) {\n if (typeof child === \"string\")\n out[key] = child;\n }\n return out;\n}\nfunction commandErrorCode(cause: unknown): string | undefined {\n if (cause === null || typeof cause !== \"object\" || !(\"code\" in cause))\n return undefined;\n const code = (cause as {\n readonly code?: unknown;\n }).code;\n return typeof code === \"string\" ? code : undefined;\n}\nfunction sanitizeSpawnError(cause: unknown): IncusProviderError {\n const code = commandErrorCode(cause);\n if (code === \"ENOENT\")\n return unreachable(\"The incus CLI is not installed or not on PATH.\");\n const message = cause instanceof Error ? cause.message : String(cause);\n return unreachable(`Failed to spawn incus: ${message}`);\n}\nfunction unreachable(summary: string, cause?: unknown): IncusProviderError {\n return incusError(\"incus-unreachable\", summary, [\n \"Install and start the Incus daemon, and make the incus CLI available on PATH.\",\n \"NiceEval talks only to the Incus control API or CLI; it will not sudo, pull images, or fall back to Docker.\",\n ], cause);\n}\nfunction shapeError(path: string, cause?: unknown): IncusProviderError {\n return incusError(\"incus-unreachable\", `Incus ${path} returned an unexpected JSON shape.`, [\"Inspect `incus query` output; NiceEval fail-closes on unknown control-plane envelopes.\"], cause);\n}\nfunction decodeEnvelope(parsed: unknown, path: string): Schema.Schema.Type<typeof EnvelopeSchema> {\n const decoded = Schema.decodeUnknownResult(EnvelopeSchema, ParseOptions)(parsed);\n if (Result.isFailure(decoded))\n throw shapeError(path, decoded.failure);\n return decoded.success;\n}\nfunction decodeCliOutput(stdout: string, stderr: string, exitCode: number, path: string): unknown {\n const text = stdout.trim() === \"\" ? stderr.trim() : stdout.trim();\n if (text === \"\") {\n if (exitCode === 0)\n return null;\n throw unreachable(`Incus ${path} produced empty output (exit ${exitCode}).`);\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n }\n catch (cause) {\n throw shapeError(path, cause);\n }\n const envelope = decodeEnvelope(parsed, path);\n if (envelope.type === \"error\") {\n if (envelope.error_code === 404)\n return { _tag: \"Absent\" as const };\n throw unreachable(`Incus ${path} failed${envelope.error === undefined ? \"\" : `: ${envelope.error}`}.`, parsed);\n }\n if (envelope.type === \"async\") {\n throw unreachable(`Incus ${path} returned an unfinished async operation; mutations must wait for completion.`, parsed);\n }\n return envelope.metadata ?? null;\n}\nasync function runCli(binary: string, args: readonly string[], options: {\n readonly timeoutMs: number;\n readonly stdin?: Uint8Array;\n readonly encoding: \"utf8\" | \"buffer\";\n readonly env?: NodeJS.ProcessEnv;\n}): Promise<{\n readonly stdout: Buffer;\n readonly stderr: Buffer;\n readonly exitCode: number;\n}> {\n return await new Promise((resolve, reject) => {\n let settled = false;\n const child = spawn(binary, [...args], {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n env: options.env,\n });\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n const finish = (error: unknown | undefined, result?: {\n stdout: Buffer;\n stderr: Buffer;\n exitCode: number;\n }): void => {\n if (settled)\n return;\n settled = true;\n clearTimeout(timer);\n if (error !== undefined)\n reject(error);\n else if (result !== undefined)\n resolve(result);\n };\n const timer = setTimeout(() => {\n child.kill(\"SIGKILL\");\n finish(unreachable(\"Incus CLI timed out.\"));\n }, options.timeoutMs);\n child.stdout.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n child.stderr.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n child.on(\"error\", (cause) => {\n finish(sanitizeSpawnError(cause));\n });\n child.on(\"close\", (code) => {\n finish(undefined, {\n stdout: Buffer.concat(stdout),\n stderr: Buffer.concat(stderr),\n exitCode: code ?? 1,\n });\n });\n child.stdin.on(\"error\", () => undefined);\n if (options.stdin !== undefined)\n child.stdin.end(Buffer.from(options.stdin));\n else\n child.stdin.end();\n });\n}\nasync function unixGet(socketPath: string, path: string, timeoutMs = QUERY_TIMEOUT_MS): Promise<unknown> {\n return await new Promise((resolve, reject) => {\n const req = httpRequest({\n socketPath,\n path,\n method: \"GET\",\n headers: { Host: \"incus\", Accept: \"application/json\" },\n }, (response) => {\n const chunks: Buffer[] = [];\n response.on(\"data\", (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));\n response.on(\"end\", () => {\n const text = Buffer.concat(chunks).toString(\"utf8\");\n if (response.statusCode === 404) {\n resolve({ _tag: \"Absent\" });\n return;\n }\n let parsed: unknown;\n try {\n parsed = text.trim() === \"\" ? null : JSON.parse(text);\n }\n catch (cause) {\n reject(shapeError(`GET ${path}`, cause));\n return;\n }\n try {\n const envelope = decodeEnvelope(parsed, `GET ${path}`);\n if (envelope.type === \"error\") {\n if (envelope.error_code === 404) {\n resolve({ _tag: \"Absent\" });\n return;\n }\n reject(unreachable(`Incus GET ${path} failed${envelope.error === undefined ? \"\" : `: ${envelope.error}`}.`));\n return;\n }\n if (envelope.type !== \"sync\") {\n reject(shapeError(`GET ${path}`));\n return;\n }\n resolve(envelope.metadata ?? null);\n }\n catch (cause) {\n reject(cause);\n }\n });\n });\n const timer = setTimeout(() => {\n req.destroy();\n reject(unreachable(`Incus control socket timed out for GET ${path}.`));\n }, timeoutMs);\n req.on(\"error\", (cause) => {\n clearTimeout(timer);\n const code = commandErrorCode(cause);\n reject(code === \"ENOENT\" || code === \"ECONNREFUSED\" || code === \"ENOTSOCK\"\n ? unreachable(`Incus control socket ${JSON.stringify(socketPath)} is unreachable.`, cause)\n : unreachable(`Incus control socket failed: ${cause.message}`, cause));\n });\n req.on(\"close\", () => clearTimeout(timer));\n req.end();\n });\n}\nfunction candidateSockets(env: NodeJS.ProcessEnv): readonly string[] {\n const sockets: string[] = [];\n const explicit = env.INCUS_SOCKET?.trim();\n if (explicit)\n sockets.push(explicit);\n const dir = env.INCUS_DIR?.trim();\n if (dir && !dir.startsWith(\"/var/lib/incus\"))\n sockets.push(join(dir, \"unix.socket\"));\n sockets.push(\"/run/incus/unix.socket\");\n const uid = typeof process.getuid === \"function\" ? process.getuid() : undefined;\n if (uid !== undefined)\n sockets.push(`/run/user/${uid}/incus/unix.socket`);\n sockets.push(join(homedir(), \".config/incus/unix.socket\"));\n return Object.freeze([...new Set(sockets)]);\n}\nasync function probeCli(): Promise<Transport | undefined> {\n try {\n const result = await runCli(\"incus\", [\"query\", \"--raw\", \"-X\", \"GET\", \"/1.0\"], {\n timeoutMs: QUERY_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n decodeCliOutput(result.stdout.toString(\"utf8\"), result.stderr.toString(\"utf8\"), result.exitCode, \"GET /1.0\");\n return { _tag: \"Cli\", binary: \"incus\" };\n }\n catch (cause) {\n if (cause instanceof Error && \"code\" in cause && (cause as IncusProviderError).code === \"incus-unreachable\"\n && commandErrorCode((cause as IncusProviderError).cause) === \"ENOENT\") {\n return undefined;\n }\n throw cause;\n }\n}\nasync function probeUnix(env: NodeJS.ProcessEnv): Promise<Transport | undefined> {\n for (const socketPath of candidateSockets(env)) {\n try {\n const metadata = await unixGet(socketPath, \"/1.0\");\n if (isRecord(metadata) && metadata._tag === \"Absent\")\n continue;\n return { _tag: \"UnixRead\", socketPath };\n }\n catch {\n continue;\n }\n }\n return undefined;\n}\nfunction isAbsent(value: unknown): boolean {\n return isRecord(value) && value._tag === \"Absent\";\n}\nconst REFERENCE_DRIVERS = new Set([\"zfs\", \"btrfs\", \"lvm\", \"lvmcluster\"]);\nexport class IncusControl {\n private constructor(private readonly transport: Transport) { }\n static async connectReadOnly(env: NodeJS.ProcessEnv = process.env): Promise<IncusControl> {\n const cli = await probeCli();\n if (cli !== undefined)\n return new IncusControl(cli);\n const unix = await probeUnix(env);\n if (unix !== undefined)\n return new IncusControl(unix);\n throw unreachable(\"Incus control plane is unreachable: no incus CLI and no usable control socket.\");\n }\n static async connectMutation(env: NodeJS.ProcessEnv = process.env): Promise<IncusControl> {\n const cli = await probeCli();\n if (cli !== undefined)\n return new IncusControl(cli);\n throw unreachable(\"Incus mutations require the incus CLI; Unix-socket mutation and exec are disabled.\");\n }\n get mode(): \"cli\" | \"unix-read\" {\n return this.transport._tag === \"Cli\" ? \"cli\" : \"unix-read\";\n }\n requireCli(operation: string): asserts this is this {\n if (this.transport._tag !== \"Cli\") {\n throw unreachable(`${operation} requires the incus CLI; Unix-socket mutation and exec are disabled.`);\n }\n }\n private projectPath(path: string, project: string): string {\n const separator = path.includes(\"?\") ? \"&\" : \"?\";\n return `${path}${separator}project=${encodeURIComponent(project)}`;\n }\n private async get(path: string): Promise<unknown> {\n if (this.transport._tag === \"UnixRead\")\n return unixGet(this.transport.socketPath, path);\n const result = await runCli(this.transport.binary, [\"query\", \"--raw\", \"-X\", \"GET\", path], {\n timeoutMs: QUERY_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n return decodeCliOutput(result.stdout.toString(\"utf8\"), result.stderr.toString(\"utf8\"), result.exitCode, `GET ${path}`);\n }\n private async mutate(method: string, path: string, body?: unknown): Promise<unknown> {\n this.requireCli(`Incus ${method} ${path}`);\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus mutations require the incus CLI.\");\n const args = [\"query\", \"--raw\", \"--wait\", \"-X\", method, path];\n if (body !== undefined)\n args.push(\"-d\", JSON.stringify(body));\n const result = await runCli(this.transport.binary, args, {\n timeoutMs: MUTATION_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n return decodeCliOutput(result.stdout.toString(\"utf8\"), result.stderr.toString(\"utf8\"), result.exitCode, `${method} ${path}`);\n }\n async projectExists(project: string): Promise<boolean> {\n const metadata = await this.get(`/1.0/projects/${encodeURIComponent(project)}`);\n return !isAbsent(metadata);\n }\n async getStoragePool(project: string, pool: string): Promise<IncusStorageAttestation | undefined> {\n const metadata = await this.get(this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}`, project));\n if (isAbsent(metadata))\n return undefined;\n if (!isRecord(metadata) || typeof metadata.name !== \"string\" || typeof metadata.driver !== \"string\") {\n throw shapeError(`GET storage pool ${pool}`);\n }\n const config = asStringRecord(metadata.config);\n const source = config.source ?? \"\";\n const backingDevice = config[\"zfs.pool_name\"] ?? config[\"source\"] ?? config[\"lvm.vg_name\"] ?? \"\";\n return Object.freeze({\n name: metadata.name,\n driver: metadata.driver,\n source,\n backingDevice,\n });\n }\n async attestReferenceStorage(project: string, pool: string, network: string, expected: {\n readonly source: string;\n readonly backingDevice: string;\n }): Promise<IncusStorageAttestation> {\n const storage = await this.getStoragePool(project, pool);\n if (storage === undefined) {\n throw incusError(\"incus-undeployed\", `Incus storage pool ${JSON.stringify(pool)} is not present in project ${JSON.stringify(project)}.`, [\"Create the reference dedicated-block pool before planning sandboxes.\"]);\n }\n if (!REFERENCE_DRIVERS.has(storage.driver) || storage.driver === \"dir\") {\n throw incusError(\"sandbox-artifact-unverified\", `Reference pool ${JSON.stringify(pool)} is not a dedicated block-backed Incus pool (driver=${storage.driver}).`, [\"Use ZFS, Btrfs, or LVM for the reference domain; loop-backed or directory pools cannot attest.\"]);\n }\n if (storage.source !== expected.source || storage.backingDevice !== expected.backingDevice || storage.name !== pool) {\n throw incusError(\"sandbox-artifact-unverified\", \"Live Incus pool source/backingDevice does not match the pinned reference descriptor.\", [\"Do not trust descriptor self-description; pin and attest the exact pool source and backing device.\"]);\n }\n if (/\\.img$/u.test(storage.source) || /loop/i.test(storage.source)) {\n throw incusError(\"sandbox-artifact-unverified\", `Reference pool ${JSON.stringify(pool)} source is not dedicated-block.`, [\"Do not present loop-backed files as reference capacity.\"]);\n }\n const net = await this.get(this.projectPath(`/1.0/networks/${encodeURIComponent(network)}`, project));\n if (isAbsent(net) || !isRecord(net) || typeof net.name !== \"string\") {\n throw incusError(\"incus-undeployed\", `Incus network ${JSON.stringify(network)} is not present in project ${JSON.stringify(project)}.`, [\"Create the descriptor network in Incus before planning sandboxes.\"]);\n }\n return storage;\n }\n async attestDevelopmentStorage(project: string, pool: string): Promise<IncusStorageAttestation> {\n const storage = await this.getStoragePool(project, pool);\n if (storage === undefined) {\n throw incusError(\"incus-undeployed\", `Incus development pool ${JSON.stringify(pool)} is not present.`, [\"Create the development-dir pool at /data/niceeval-sandbox-dev.\"]);\n }\n if (storage.driver !== \"dir\" || storage.source !== DEVELOPMENT_HOST_PATH) {\n throw incusError(\"sandbox-artifact-unverified\", `Development pool must be a dir pool sourced at ${DEVELOPMENT_HOST_PATH}.`, [\"Point the development storage pool at /data/niceeval-sandbox-dev.\"]);\n }\n return storage;\n }\n async listImages(project: string): Promise<readonly IncusImage[]> {\n const metadata = await this.get(this.projectPath(\"/1.0/images?recursion=1\", project));\n if (metadata === null)\n return Object.freeze([]);\n if (!Array.isArray(metadata))\n throw shapeError(\"GET /1.0/images\");\n return Object.freeze(metadata.flatMap((entry) => {\n if (!isRecord(entry) || typeof entry.fingerprint !== \"string\")\n return [];\n if (!/^[a-f0-9]{64}$/u.test(entry.fingerprint))\n return [];\n const aliases = Array.isArray(entry.aliases)\n ? entry.aliases.flatMap((alias) => isRecord(alias) && typeof alias.name === \"string\" ? [alias.name] : [])\n : [];\n return [Object.freeze({\n fingerprint: entry.fingerprint,\n aliases: Object.freeze(aliases),\n type: typeof entry.type === \"string\" ? entry.type : \"container\",\n properties: Object.freeze(asStringRecord(entry.properties)),\n })];\n }));\n }\n async resolveTrustedImage(project: string, image: IncusImageLocator, trusted: readonly string[]): Promise<IncusImage> {\n const trustedLocators = trusted.map((entry) => parseIncusImageLocator(entry, \"trustedBaseImages\"));\n const exact = trustedLocators.find((entry) => entry.locator === image.locator);\n if (exact === undefined || exact.digest !== image.digest || exact.name !== image.name) {\n throw incusError(\"sandbox-artifact-unverified\", `Image ${image.locator} is not an exact trustedBaseImages locator.`, [\"trustedBaseImages must list the same name@sha256:<digest>; a matching digest under another name is rejected.\"]);\n }\n const images = await this.listImages(project);\n const match = images.find((candidate) => candidate.fingerprint === image.digest && candidate.aliases.includes(image.name));\n if (match === undefined) {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${image.locator} is not present as that exact alias and digest in project ${JSON.stringify(project)}.`, [\"Import the trusted image with the Incus deployment; NiceEval will not pull, build, or import images.\"]);\n }\n if (match.type !== \"virtual-machine\") {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${image.locator} is type ${JSON.stringify(match.type)}, not a virtual-machine.`, [\"Use a digest-pinned Incus virtual-machine image for incusSandbox().\"]);\n }\n return match;\n }\n async assertGuestInitMountsBlockDockerData(project: string, fingerprint: string): Promise<void> {\n const images = await this.listImages(project);\n const image = images.find((candidate) => candidate.fingerprint === fingerprint);\n if (image === undefined) {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${fingerprint} is not present for guest-init attestation.`, [\"Import the digest-pinned VM image; NiceEval will not pull, build, or import images.\"]);\n }\n if (image.type !== \"virtual-machine\") {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${fingerprint} is type ${JSON.stringify(image.type)}, not a virtual-machine.`, [\"Reference Docker data uses a block custom volume; only a VM image can receive that disk.\"]);\n }\n if (image.properties[INCUS_IMAGE_GUEST_INIT_PROPERTY] !== INCUS_GUEST_INIT_BLOCK_DOCKER_DATA) {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${fingerprint} does not prove guest-init can mount a block Docker data disk.`, [\n `Set image property ${INCUS_IMAGE_GUEST_INIT_PROPERTY}=${INCUS_GUEST_INIT_BLOCK_DOCKER_DATA} on the trusted VM image.`,\n \"NiceEval will not attach a path/size extra disk (invalid Incus) or assume an unproven guest-init contract.\",\n ]);\n }\n }\n async listInstances(project: string): Promise<readonly IncusInstance[]> {\n const metadata = await this.get(this.projectPath(\"/1.0/instances?recursion=1\", project));\n if (metadata === null)\n return Object.freeze([]);\n if (!Array.isArray(metadata))\n throw shapeError(\"GET /1.0/instances\");\n return Object.freeze(metadata.flatMap((entry) => this.decodeInstance(entry, \"GET /1.0/instances\")));\n }\n private decodeInstance(entry: unknown, path: string): IncusInstance[] {\n if (!isRecord(entry) || typeof entry.name !== \"string\")\n throw shapeError(path);\n const devices = isRecord(entry.expanded_devices) ? entry.expanded_devices : undefined;\n const expanded = devices === undefined\n ? undefined\n : Object.freeze(Object.fromEntries(Object.entries(devices).flatMap(([key, value]) => isRecord(value)\n ? [[key, Object.freeze(asStringRecord(value))] as const]\n : [])));\n return [Object.freeze({\n name: entry.name,\n status: typeof entry.status === \"string\" ? entry.status : \"Unknown\",\n type: typeof entry.type === \"string\" ? entry.type : \"container\",\n config: Object.freeze(asStringRecord(entry.config)),\n ...(expanded === undefined ? {} : { expandedDevices: expanded }),\n })];\n }\n async getInstance(project: string, name: string): Promise<IncusInstance | undefined> {\n const metadata = await this.get(this.projectPath(`/1.0/instances/${encodeURIComponent(name)}`, project));\n if (isAbsent(metadata))\n return undefined;\n const decoded = this.decodeInstance(metadata, `GET instance ${name}`);\n return decoded[0];\n }\n async listVolumes(project: string, pool: string): Promise<readonly IncusVolume[]> {\n const metadata = await this.get(this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom?recursion=1`, project));\n if (metadata === null)\n return Object.freeze([]);\n if (!Array.isArray(metadata))\n throw shapeError(\"GET storage volumes\");\n return Object.freeze(metadata.flatMap((entry) => this.decodeVolume(entry, \"GET storage volumes\"))\n .filter((volume) => volume.type === \"custom\"));\n }\n async getVolume(project: string, pool: string, name: string): Promise<IncusVolume | undefined> {\n const metadata = await this.get(this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom/${encodeURIComponent(name)}`, project));\n if (isAbsent(metadata))\n return undefined;\n return this.decodeVolume(metadata, `GET volume ${name}`)[0];\n }\n private decodeVolume(entry: unknown, path: string): IncusVolume[] {\n if (!isRecord(entry) || typeof entry.name !== \"string\")\n throw shapeError(path);\n const contentType = typeof entry.content_type === \"string\"\n ? entry.content_type\n : typeof entry.contentType === \"string\" ? entry.contentType : \"\";\n return [Object.freeze({\n name: entry.name,\n type: typeof entry.type === \"string\" ? entry.type : \"custom\",\n contentType,\n config: Object.freeze(asStringRecord(entry.config)),\n })];\n }\n async createVolume(spec: IncusVolumeSpec): Promise<void> {\n await this.mutate(\"POST\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(spec.pool)}/volumes/custom`, spec.project), {\n name: spec.name,\n type: \"custom\",\n content_type: spec.contentType,\n config: {\n size: `${spec.sizeBytes}B`,\n ...spec.config,\n },\n });\n }\n async deleteVolume(project: string, pool: string, name: string): Promise<void> {\n const existing = await this.getVolume(project, pool, name);\n if (existing === undefined)\n return;\n await this.mutate(\"DELETE\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom/${encodeURIComponent(name)}`, project));\n }\n async waitVolumeAbsent(project: string, pool: string, name: string, timeoutMs = MUTATION_TIMEOUT_MS): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const volume = await this.getVolume(project, pool, name);\n if (volume === undefined)\n return;\n if (Date.now() >= deadline) {\n throw incusError(\"sandbox-destroy-incomplete\", `Incus volume ${JSON.stringify(name)} in pool ${JSON.stringify(pool)} is still present after delete.`, [\"Inspect the custom volume with the Incus CLI; NiceEval will not mark the allocation destroyed without an absent receipt.\"]);\n }\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n async createInstance(spec: IncusInstanceSpec): Promise<void> {\n if (spec.dockerDataContentType === \"block\" && spec.dockerDataPath !== undefined) {\n throw incusError(\"sandbox-artifact-unverified\", \"Block Docker data volumes are attached without a host path; guest-init mounts the dedicated disk.\", [\"Do not set path on a block custom volume disk device.\"]);\n }\n if (spec.dockerDataContentType === \"filesystem\" && spec.dockerDataPath === undefined) {\n throw incusError(\"sandbox-artifact-unverified\", \"Filesystem Docker data volumes require path=/var/lib/docker.\", [\"Attach filesystem custom volumes with an explicit guest path.\"]);\n }\n const dockerdata: Record<string, string> = {\n type: \"disk\",\n pool: spec.storagePool,\n source: spec.dockerDataVolume,\n dependent: \"true\",\n ...(spec.dockerDataPath === undefined ? {} : { path: spec.dockerDataPath }),\n };\n const devices: Record<string, Record<string, string>> = {\n root: { path: \"/\", pool: spec.storagePool, type: \"disk\" },\n eth0: { name: \"eth0\", nictype: \"bridged\", parent: spec.network, type: \"nic\" },\n dockerdata,\n };\n await this.mutate(\"POST\", this.projectPath(\"/1.0/instances\", spec.project), {\n name: spec.name,\n type: \"virtual-machine\",\n source: { type: \"image\", fingerprint: spec.fingerprint },\n config: spec.config,\n devices,\n });\n }\n /** Copy is intentionally explicit about both projects: artifacts never live in runtime. */\n async copyVolume(spec: {\n readonly sourceProject: string;\n readonly sourcePool: string;\n readonly sourceName: string;\n readonly targetProject: string;\n readonly targetPool: string;\n readonly targetName: string;\n readonly config: Readonly<Record<string, string>>;\n }): Promise<void> {\n await this.mutate(\"POST\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(spec.targetPool)}/volumes/custom`, spec.targetProject), {\n name: spec.targetName, type: \"custom\",\n source: { type: \"copy\", project: spec.sourceProject, pool: spec.sourcePool, name: spec.sourceName },\n config: spec.config,\n });\n }\n async copyInstance(spec: {\n readonly sourceProject: string;\n readonly sourceName: string;\n readonly targetProject: string;\n readonly targetName: string;\n readonly config: Readonly<Record<string, string>>;\n readonly devices: Readonly<Record<string, Readonly<Record<string, string>>>>;\n }): Promise<void> {\n const source = await this.getInstance(spec.sourceProject, spec.sourceName);\n const baseImage = source?.config[\"volatile.base_image\"] ??\n source?.config[INCUS_METADATA.baseFingerprint];\n if (source === undefined || baseImage === undefined || !/^[a-f0-9]{64}$/u.test(baseImage)) {\n throw incusError(\"sandbox-artifact-unverified\", `Incus copy source ${JSON.stringify(spec.sourceName)} has no exact base-image digest.`, [\"Quarantine the source tuple; artifact copies must retain their trusted base-image lineage.\"]);\n }\n await this.mutate(\"POST\", this.projectPath(\"/1.0/instances\", spec.targetProject), {\n name: spec.targetName, type: \"virtual-machine\",\n // Incus needs base-image to copy a VM's root-disk delta. Omitting it can\n // produce a valid-looking target rooted at the base image and silently\n // discard the source VM's prepared root filesystem state.\n source: {\n type: \"copy\",\n project: spec.sourceProject,\n source: spec.sourceName,\n \"base-image\": baseImage,\n },\n config: spec.config, devices: spec.devices,\n });\n }\n async updateVolumeConfig(project: string, pool: string, name: string, config: Readonly<Record<string, string>>): Promise<void> {\n await this.mutate(\"PATCH\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom/${encodeURIComponent(name)}`, project), { config });\n }\n async stopInstance(project: string, name: string): Promise<void> {\n const instance = await this.getInstance(project, name);\n if (instance === undefined || instance.status.toLowerCase() === \"stopped\")\n return;\n await this.mutate(\"PUT\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}/state`, project), \n // Artifact capture must let the guest flush its root filesystem. Forced\n // power-off is reserved for disposable allocation destruction below.\n { action: \"stop\", force: false, timeout: 120 });\n const stopped = await this.getInstance(project, name);\n if (stopped === undefined || stopped.status.toLowerCase() !== \"stopped\") {\n throw incusError(\"sandbox-artifact-unverified\", `Incus instance ${JSON.stringify(name)} did not stop for artifact capture.`, [\"Do not publish a running artifact.\"]);\n }\n }\n async startInstance(project: string, name: string): Promise<void> {\n await this.mutate(\"PUT\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}/state`, project), { action: \"start\", timeout: 120 });\n }\n async deleteInstance(project: string, name: string): Promise<void> {\n const existing = await this.getInstance(project, name);\n if (existing === undefined)\n return;\n if (existing.status.toLowerCase() !== \"stopped\") {\n await this.mutate(\"PUT\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}/state`, project), { action: \"stop\", force: true, timeout: 30 });\n }\n await this.mutate(\"DELETE\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}`, project));\n }\n async waitAbsent(project: string, name: string, timeoutMs = MUTATION_TIMEOUT_MS): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const instance = await this.getInstance(project, name);\n if (instance === undefined)\n return;\n if (Date.now() >= deadline) {\n throw incusError(\"sandbox-destroy-incomplete\", `Incus instance ${JSON.stringify(name)} in project ${JSON.stringify(project)} is still present after delete.`, [\"Inspect the instance with the Incus CLI and destroy it from the Incus control plane.\"]);\n }\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n spawnExec(project: string, name: string, argv: readonly string[], options: {\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly user?: number | string;\n readonly group?: number | string;\n readonly keepStdin?: boolean;\n } = {}): SpawnedIncusExec {\n this.requireCli(\"Incus exec\");\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus exec requires the incus CLI.\");\n const args = [\"exec\", name, \"--project\", project];\n if (options.cwd !== undefined)\n args.push(\"--cwd\", options.cwd);\n if (options.user !== undefined)\n args.push(\"--user\", String(options.user));\n if (options.group !== undefined)\n args.push(\"--group\", String(options.group));\n if (options.env !== undefined) {\n for (const [key, value] of Object.entries(options.env)) {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(key) || key.includes(\"\\0\") || value.includes(\"\\0\")) {\n throw unreachable(\"Refusing to pass an invalid environment entry to incus exec.\");\n }\n args.push(\"--env\", `${key}=${value}`);\n }\n }\n args.push(\"--\", ...argv);\n const child = spawn(this.transport.binary, args, {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n env: process.env,\n });\n if (child.stdin === null || child.stdout === null || child.stderr === null) {\n throw unreachable(\"Incus exec did not expose stdio pipes.\");\n }\n if (options.keepStdin !== true)\n child.stdin.end();\n return {\n stdin: child.stdin,\n stdout: child.stdout,\n stderr: child.stderr,\n pid: child.pid,\n wait: () => new Promise((resolve, reject) => {\n let settled = false;\n const finish = (error: unknown | undefined, code?: number): void => {\n if (settled)\n return;\n settled = true;\n if (error !== undefined)\n reject(sanitizeSpawnError(error));\n else\n resolve(code ?? 1);\n };\n child.once(\"error\", (cause) => finish(cause));\n child.once(\"close\", (code) => finish(undefined, code ?? 1));\n }),\n killHost: () => {\n child.kill(\"SIGKILL\");\n },\n };\n }\n async exec(project: string, name: string, argv: readonly string[], options: {\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly user?: number | string;\n readonly group?: number | string;\n readonly timeoutMs?: number;\n readonly signal?: AbortSignal;\n } = {}): Promise<IncusExecResult> {\n const spawned = this.spawnExec(project, name, argv, options);\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n spawned.stdout.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n spawned.stderr.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const onAbort = (): void => spawned.killHost();\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted)\n onAbort();\n if (options.timeoutMs !== undefined) {\n timeout = setTimeout(onAbort, options.timeoutMs);\n }\n try {\n const exitCode = await spawned.wait();\n return {\n stdout: Buffer.concat(stdout).toString(\"utf8\"),\n stderr: Buffer.concat(stderr).toString(\"utf8\"),\n exitCode,\n };\n }\n finally {\n if (timeout !== undefined)\n clearTimeout(timeout);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n }\n async pushFile(project: string, name: string, guestPath: string, content: Uint8Array, options: {\n readonly uid?: number;\n readonly gid?: number;\n readonly mode?: string;\n } = {}): Promise<void> {\n this.requireCli(\"Incus file push\");\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus file push requires the incus CLI.\");\n const args = [\"file\", \"push\", \"-\", `${name}${guestPath}`, \"--project\", project];\n if (options.uid !== undefined)\n args.push(\"--uid\", String(options.uid));\n if (options.gid !== undefined)\n args.push(\"--gid\", String(options.gid));\n if (options.mode !== undefined)\n args.push(\"--mode\", options.mode);\n const result = await runCli(this.transport.binary, args, {\n timeoutMs: MUTATION_TIMEOUT_MS,\n encoding: \"buffer\",\n stdin: content,\n });\n if (result.exitCode !== 0) {\n throw unreachable(`incus file push failed (exit ${result.exitCode}).`);\n }\n }\n async pullFile(project: string, name: string, guestPath: string): Promise<Uint8Array> {\n this.requireCli(\"Incus file pull\");\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus file pull requires the incus CLI.\");\n const result = await runCli(this.transport.binary, [\"file\", \"pull\", `${name}${guestPath}`, \"-\", \"--project\", project], { timeoutMs: MUTATION_TIMEOUT_MS, encoding: \"buffer\" });\n if (result.exitCode !== 0) {\n throw unreachable(`incus file pull failed (exit ${result.exitCode}).`);\n }\n return result.stdout;\n }\n}\nexport function parseIncusSizeBytes(raw: string | undefined): number | undefined {\n if (raw === undefined)\n return undefined;\n const trimmed = raw.trim();\n if (trimmed === \"\")\n return undefined;\n if (/^\\d+$/u.test(trimmed)) {\n const bytes = Number(trimmed);\n return Number.isSafeInteger(bytes) && bytes > 0 ? bytes : undefined;\n }\n const match = /^(\\d+)((?:[kKmMgGtTpP]i?)?B?| bytes)$/u.exec(trimmed);\n if (match === null || match[1] === undefined || match[2] === undefined)\n return undefined;\n const value = Number(match[1]);\n if (!Number.isSafeInteger(value) || value <= 0)\n return undefined;\n const unit = match[2].toLowerCase().replace(/ ?bytes$/u, \"b\");\n if (unit === \"\" || unit === \"b\")\n return value;\n const binary = unit.includes(\"i\");\n const index = \"kmgtp\".indexOf(unit[0] ?? \"\");\n if (index < 0)\n return undefined;\n const base = binary ? 1024 : 1000;\n const bytes = value * (base ** (index + 1));\n return Number.isSafeInteger(bytes) && bytes > 0 ? bytes : undefined;\n}\nexport function isIncusCliTimeout(error: unknown): boolean {\n return error instanceof Error && /timed out/i.test(error.message);\n}\nexport function isIncusUnreachable(error: unknown): boolean {\n return error instanceof Error && \"code\" in error && (error as IncusProviderError).code === \"incus-unreachable\";\n}\nexport function classifyIncusProvisionError(error: unknown): SandboxProvisionErrorKind {\n if (error instanceof Error && \"code\" in error) {\n const code = (error as IncusProviderError).code;\n if (code === \"incus-unreachable\")\n return classifyProvisionErrorFallback(error);\n if (code === \"incus-undeployed\" ||\n code === \"incus-descriptor-invalid\" ||\n code === \"incus-domain-mismatch\" ||\n code === \"sandbox-artifact-unverified\" ||\n code === \"sandbox-capability-unsatisfied\") {\n return \"unknown\";\n }\n if (code === \"sandbox-capacity-unavailable\")\n return \"rejected\";\n }\n return classifyProvisionErrorFallback(error);\n}\nexport const connectIncusControl = (env: NodeJS.ProcessEnv = process.env): Effect.Effect<IncusControl, IncusProviderError> => Effect.tryPromise({\n try: () => IncusControl.connectReadOnly(env),\n catch: (cause) => cause instanceof Error && \"code\" in cause\n ? cause as IncusProviderError\n : unreachable(`Incus control plane is unreachable: ${cause instanceof Error ? cause.message : String(cause)}`, cause),\n});\nexport const connectIncusMutation = (env: NodeJS.ProcessEnv = process.env): Effect.Effect<IncusControl, IncusProviderError> => Effect.tryPromise({\n try: () => IncusControl.connectMutation(env),\n catch: (cause) => cause instanceof Error && \"code\" in cause\n ? cause as IncusProviderError\n : unreachable(`Incus mutations require the incus CLI: ${cause instanceof Error ? cause.message : String(cause)}`, cause),\n});\n"]}
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["control.ts"],"names":[],"mappings":"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","sourcesContent":["import { Result, Schema } from \"effect\";\nimport { Effect } from \"effect\";\nimport { spawn } from \"node:child_process\";\nimport { request as httpRequest } from \"node:http\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { classifyProvisionErrorFallback, type SandboxProvisionErrorKind } from \"../errors.ts\";\nimport { DEVELOPMENT_HOST_PATH } from \"./descriptor.ts\";\nimport { incusError, type IncusProviderError } from \"./errors.ts\";\nimport type { IncusImageLocator } from \"./image.ts\";\nimport { INCUS_GUEST_INIT_BLOCK_DOCKER_DATA, INCUS_IMAGE_GUEST_INIT_PROPERTY, parseIncusImageLocator, } from \"./image.ts\";\nconst QUERY_TIMEOUT_MS = 15000;\nconst MUTATION_TIMEOUT_MS = 120000;\nconst ParseOptions = Object.freeze({\n errors: \"all\" as const,\n exact: true,\n onExcessProperty: \"error\" as const,\n});\nexport const INCUS_METADATA = Object.freeze({\n allocationId: \"user.niceeval.allocationId\",\n executionId: \"user.niceeval.executionId\",\n generation: \"user.niceeval.generation\",\n artifactDigest: \"user.niceeval.artifactDigest\",\n executionDomainId: \"user.niceeval.executionDomainId\",\n provisionToken: \"user.niceeval.provisionToken\",\n host: \"user.niceeval.host\",\n pid: \"user.niceeval.pid\",\n startedAt: \"user.niceeval.startedAt\",\n artifactState: \"user.niceeval.artifactState\",\n setupPrefixKey: \"user.niceeval.setupPrefixKey\",\n manifestDigest: \"user.niceeval.manifestDigest\",\n runtimeProject: \"user.niceeval.runtimeProject\",\n pool: \"user.niceeval.pool\",\n baseFingerprint: \"user.niceeval.baseFingerprint\",\n captureRevision: \"user.niceeval.captureRevision\",\n replacementScopeDigest: \"user.niceeval.replacementScopeDigest\",\n});\nexport interface IncusImage {\n readonly fingerprint: string;\n readonly aliases: readonly string[];\n readonly type: string;\n readonly properties: Readonly<Record<string, string>>;\n}\nexport interface IncusInstance {\n readonly name: string;\n readonly status: string;\n readonly type: string;\n readonly config: Readonly<Record<string, string>>;\n readonly expandedDevices?: Readonly<Record<string, Readonly<Record<string, string>>>>;\n}\nexport interface IncusExecResult {\n readonly stdout: string;\n readonly stderr: string;\n readonly exitCode: number;\n}\nexport interface IncusInstanceSpec {\n readonly name: string;\n readonly project: string;\n readonly fingerprint: string;\n readonly storagePool: string;\n readonly network: string;\n readonly config: Readonly<Record<string, string>>;\n readonly dockerDataVolume: string;\n readonly dockerDataContentType: \"block\" | \"filesystem\";\n readonly dockerDataPath?: string;\n}\nexport interface IncusVolume {\n readonly name: string;\n readonly type: string;\n readonly contentType: string;\n readonly config: Readonly<Record<string, string>>;\n}\nexport interface IncusVolumeSpec {\n readonly project: string;\n readonly pool: string;\n readonly name: string;\n readonly contentType: \"block\" | \"filesystem\";\n readonly sizeBytes: number;\n readonly config: Readonly<Record<string, string>>;\n}\nexport interface IncusStorageAttestation {\n readonly name: string;\n readonly driver: string;\n readonly source: string;\n readonly backingDevice: string;\n}\nexport interface SpawnedIncusExec {\n readonly stdin: NodeJS.WritableStream;\n readonly stdout: NodeJS.ReadableStream;\n readonly stderr: NodeJS.ReadableStream;\n readonly pid: number | undefined;\n wait(): Promise<number>;\n killHost(): void;\n}\ntype Transport = {\n readonly _tag: \"Cli\";\n readonly binary: string;\n} | {\n readonly _tag: \"UnixRead\";\n readonly socketPath: string;\n};\nconst EnvelopeSchema = Schema.Struct({\n type: Schema.Literals([\"sync\", \"error\", \"async\"]),\n status: Schema.optional(Schema.String),\n status_code: Schema.optional(Schema.Number),\n error: Schema.optional(Schema.String),\n error_code: Schema.optional(Schema.Number),\n metadata: Schema.optional(Schema.Unknown),\n operation: Schema.optional(Schema.String),\n});\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\nfunction asStringRecord(value: unknown): Record<string, string> {\n if (!isRecord(value))\n return {};\n const out: Record<string, string> = {};\n for (const [key, child] of Object.entries(value)) {\n if (typeof child === \"string\")\n out[key] = child;\n }\n return out;\n}\nfunction commandErrorCode(cause: unknown): string | undefined {\n if (cause === null || typeof cause !== \"object\" || !(\"code\" in cause))\n return undefined;\n const code = (cause as {\n readonly code?: unknown;\n }).code;\n return typeof code === \"string\" ? code : undefined;\n}\nfunction sanitizeSpawnError(cause: unknown): IncusProviderError {\n const code = commandErrorCode(cause);\n if (code === \"ENOENT\")\n return unreachable(\"The incus CLI is not installed or not on PATH.\");\n const message = cause instanceof Error ? cause.message : String(cause);\n return unreachable(`Failed to spawn incus: ${message}`);\n}\nfunction unreachable(summary: string, cause?: unknown): IncusProviderError {\n return incusError(\"incus-unreachable\", summary, [\n \"Install and start the Incus daemon, and make the incus CLI available on PATH.\",\n \"NiceEval talks only to the Incus control API or CLI; it will not sudo, pull images, or fall back to Docker.\",\n ], cause);\n}\nfunction shapeError(path: string, cause?: unknown): IncusProviderError {\n return incusError(\"incus-unreachable\", `Incus ${path} returned an unexpected JSON shape.`, [\"Inspect `incus query` output; NiceEval fail-closes on unknown control-plane envelopes.\"], cause);\n}\nconst CLI_DIAGNOSTIC_LIMIT = 512;\nfunction cliDiagnosticExcerpt(text: string): string {\n const redacted = text\n .replace(/[\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]/gu, \"�\")\n .replace(/((?:authorization|password|secret|token|api[-_]?key)\\s*[:=]\\s*)(?:\"[^\"]*\"|'[^']*'|\\S+)/giu, \"$1[redacted]\")\n .replace(/\\s+/gu, \" \")\n .trim();\n if (redacted.length <= CLI_DIAGNOSTIC_LIMIT)\n return redacted;\n return `${redacted.slice(0, CLI_DIAGNOSTIC_LIMIT)}…`;\n}\nfunction cliFailure(path: string, exitCode: number, text: string, cause?: unknown): IncusProviderError {\n const excerpt = cliDiagnosticExcerpt(text);\n return unreachable(`Incus ${path} failed (exit ${exitCode})${excerpt === \"\" ? \" without output\" : `: ${excerpt}`}.`, cause);\n}\nfunction decodeEnvelope(parsed: unknown, path: string): Schema.Schema.Type<typeof EnvelopeSchema> {\n const decoded = Schema.decodeUnknownResult(EnvelopeSchema, ParseOptions)(parsed);\n if (Result.isFailure(decoded))\n throw shapeError(path, decoded.failure);\n return decoded.success;\n}\nfunction decodeCliOutput(stdout: string, stderr: string, exitCode: number, path: string): unknown {\n const text = stdout.trim() === \"\" ? stderr.trim() : stdout.trim();\n if (text === \"\") {\n if (exitCode === 0)\n return null;\n throw unreachable(`Incus ${path} produced empty output (exit ${exitCode}).`);\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n }\n catch (cause) {\n if (exitCode !== 0)\n throw cliFailure(path, exitCode, text, cause);\n throw shapeError(path, cause);\n }\n let envelope: Schema.Schema.Type<typeof EnvelopeSchema>;\n try {\n envelope = decodeEnvelope(parsed, path);\n }\n catch (cause) {\n if (exitCode !== 0)\n throw cliFailure(path, exitCode, text, cause);\n throw cause;\n }\n if (envelope.type === \"error\") {\n if (envelope.error_code === 404)\n return { _tag: \"Absent\" as const };\n throw unreachable(`Incus ${path} failed${envelope.error === undefined ? \"\" : `: ${envelope.error}`}.`, parsed);\n }\n if (exitCode !== 0)\n throw cliFailure(path, exitCode, text, parsed);\n if (envelope.type === \"async\") {\n throw unreachable(`Incus ${path} returned an unfinished async operation; mutations must wait for completion.`, parsed);\n }\n return envelope.metadata ?? null;\n}\nasync function runCli(binary: string, args: readonly string[], options: {\n readonly timeoutMs: number;\n readonly stdin?: Uint8Array;\n readonly encoding: \"utf8\" | \"buffer\";\n readonly env?: NodeJS.ProcessEnv;\n}): Promise<{\n readonly stdout: Buffer;\n readonly stderr: Buffer;\n readonly exitCode: number;\n}> {\n return await new Promise((resolve, reject) => {\n let settled = false;\n const child = spawn(binary, [...args], {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n env: options.env,\n });\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n const finish = (error: unknown | undefined, result?: {\n stdout: Buffer;\n stderr: Buffer;\n exitCode: number;\n }): void => {\n if (settled)\n return;\n settled = true;\n clearTimeout(timer);\n if (error !== undefined)\n reject(error);\n else if (result !== undefined)\n resolve(result);\n };\n const timer = setTimeout(() => {\n child.kill(\"SIGKILL\");\n finish(unreachable(\"Incus CLI timed out.\"));\n }, options.timeoutMs);\n child.stdout.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n child.stderr.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n child.on(\"error\", (cause) => {\n finish(sanitizeSpawnError(cause));\n });\n child.on(\"close\", (code) => {\n finish(undefined, {\n stdout: Buffer.concat(stdout),\n stderr: Buffer.concat(stderr),\n exitCode: code ?? 1,\n });\n });\n child.stdin.on(\"error\", () => undefined);\n if (options.stdin !== undefined)\n child.stdin.end(Buffer.from(options.stdin));\n else\n child.stdin.end();\n });\n}\nasync function unixGet(socketPath: string, path: string, timeoutMs = QUERY_TIMEOUT_MS): Promise<unknown> {\n return await new Promise((resolve, reject) => {\n const req = httpRequest({\n socketPath,\n path,\n method: \"GET\",\n headers: { Host: \"incus\", Accept: \"application/json\" },\n }, (response) => {\n const chunks: Buffer[] = [];\n response.on(\"data\", (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));\n response.on(\"end\", () => {\n const text = Buffer.concat(chunks).toString(\"utf8\");\n if (response.statusCode === 404) {\n resolve({ _tag: \"Absent\" });\n return;\n }\n let parsed: unknown;\n try {\n parsed = text.trim() === \"\" ? null : JSON.parse(text);\n }\n catch (cause) {\n reject(shapeError(`GET ${path}`, cause));\n return;\n }\n try {\n const envelope = decodeEnvelope(parsed, `GET ${path}`);\n if (envelope.type === \"error\") {\n if (envelope.error_code === 404) {\n resolve({ _tag: \"Absent\" });\n return;\n }\n reject(unreachable(`Incus GET ${path} failed${envelope.error === undefined ? \"\" : `: ${envelope.error}`}.`));\n return;\n }\n if (envelope.type !== \"sync\") {\n reject(shapeError(`GET ${path}`));\n return;\n }\n resolve(envelope.metadata ?? null);\n }\n catch (cause) {\n reject(cause);\n }\n });\n });\n const timer = setTimeout(() => {\n req.destroy();\n reject(unreachable(`Incus control socket timed out for GET ${path}.`));\n }, timeoutMs);\n req.on(\"error\", (cause) => {\n clearTimeout(timer);\n const code = commandErrorCode(cause);\n reject(code === \"ENOENT\" || code === \"ECONNREFUSED\" || code === \"ENOTSOCK\"\n ? unreachable(`Incus control socket ${JSON.stringify(socketPath)} is unreachable.`, cause)\n : unreachable(`Incus control socket failed: ${cause.message}`, cause));\n });\n req.on(\"close\", () => clearTimeout(timer));\n req.end();\n });\n}\nfunction candidateSockets(env: NodeJS.ProcessEnv): readonly string[] {\n const sockets: string[] = [];\n const explicit = env.INCUS_SOCKET?.trim();\n if (explicit)\n sockets.push(explicit);\n const dir = env.INCUS_DIR?.trim();\n if (dir && !dir.startsWith(\"/var/lib/incus\"))\n sockets.push(join(dir, \"unix.socket\"));\n sockets.push(\"/run/incus/unix.socket\");\n const uid = typeof process.getuid === \"function\" ? process.getuid() : undefined;\n if (uid !== undefined)\n sockets.push(`/run/user/${uid}/incus/unix.socket`);\n sockets.push(join(homedir(), \".config/incus/unix.socket\"));\n return Object.freeze([...new Set(sockets)]);\n}\nasync function probeCli(): Promise<Transport | undefined> {\n try {\n const result = await runCli(\"incus\", [\"query\", \"--raw\", \"-X\", \"GET\", \"/1.0\"], {\n timeoutMs: QUERY_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n decodeCliOutput(result.stdout.toString(\"utf8\"), result.stderr.toString(\"utf8\"), result.exitCode, \"GET /1.0\");\n return { _tag: \"Cli\", binary: \"incus\" };\n }\n catch (cause) {\n if (cause instanceof Error && \"code\" in cause && (cause as IncusProviderError).code === \"incus-unreachable\"\n && commandErrorCode((cause as IncusProviderError).cause) === \"ENOENT\") {\n return undefined;\n }\n throw cause;\n }\n}\nasync function probeUnix(env: NodeJS.ProcessEnv): Promise<Transport | undefined> {\n for (const socketPath of candidateSockets(env)) {\n try {\n const metadata = await unixGet(socketPath, \"/1.0\");\n if (isRecord(metadata) && metadata._tag === \"Absent\")\n continue;\n return { _tag: \"UnixRead\", socketPath };\n }\n catch {\n continue;\n }\n }\n return undefined;\n}\nfunction isAbsent(value: unknown): boolean {\n return isRecord(value) && value._tag === \"Absent\";\n}\nconst REFERENCE_DRIVERS = new Set([\"zfs\", \"btrfs\", \"lvm\", \"lvmcluster\"]);\nexport class IncusControl {\n private constructor(private readonly transport: Transport) { }\n static async connectReadOnly(env: NodeJS.ProcessEnv = process.env): Promise<IncusControl> {\n const cli = await probeCli();\n if (cli !== undefined)\n return new IncusControl(cli);\n const unix = await probeUnix(env);\n if (unix !== undefined)\n return new IncusControl(unix);\n throw unreachable(\"Incus control plane is unreachable: no incus CLI and no usable control socket.\");\n }\n static async connectMutation(env: NodeJS.ProcessEnv = process.env): Promise<IncusControl> {\n const cli = await probeCli();\n if (cli !== undefined)\n return new IncusControl(cli);\n throw unreachable(\"Incus mutations require the incus CLI; Unix-socket mutation and exec are disabled.\");\n }\n get mode(): \"cli\" | \"unix-read\" {\n return this.transport._tag === \"Cli\" ? \"cli\" : \"unix-read\";\n }\n requireCli(operation: string): asserts this is this {\n if (this.transport._tag !== \"Cli\") {\n throw unreachable(`${operation} requires the incus CLI; Unix-socket mutation and exec are disabled.`);\n }\n }\n private projectPath(path: string, project: string): string {\n const separator = path.includes(\"?\") ? \"&\" : \"?\";\n return `${path}${separator}project=${encodeURIComponent(project)}`;\n }\n private async get(path: string): Promise<unknown> {\n if (this.transport._tag === \"UnixRead\")\n return unixGet(this.transport.socketPath, path);\n const result = await runCli(this.transport.binary, [\"query\", \"--raw\", \"-X\", \"GET\", path], {\n timeoutMs: QUERY_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n return decodeCliOutput(result.stdout.toString(\"utf8\"), result.stderr.toString(\"utf8\"), result.exitCode, `GET ${path}`);\n }\n private async mutate(method: string, path: string, body?: unknown): Promise<unknown> {\n this.requireCli(`Incus ${method} ${path}`);\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus mutations require the incus CLI.\");\n const args = [\"query\", \"--raw\", \"--wait\", \"-X\", method, path];\n if (body !== undefined)\n args.push(\"-d\", JSON.stringify(body));\n const result = await runCli(this.transport.binary, args, {\n timeoutMs: MUTATION_TIMEOUT_MS,\n encoding: \"utf8\",\n });\n return decodeCliOutput(result.stdout.toString(\"utf8\"), result.stderr.toString(\"utf8\"), result.exitCode, `${method} ${path}`);\n }\n async projectExists(project: string): Promise<boolean> {\n const metadata = await this.get(`/1.0/projects/${encodeURIComponent(project)}`);\n return !isAbsent(metadata);\n }\n async getStoragePool(project: string, pool: string): Promise<IncusStorageAttestation | undefined> {\n const metadata = await this.get(this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}`, project));\n if (isAbsent(metadata))\n return undefined;\n if (!isRecord(metadata) || typeof metadata.name !== \"string\" || typeof metadata.driver !== \"string\") {\n throw shapeError(`GET storage pool ${pool}`);\n }\n const config = asStringRecord(metadata.config);\n const source = config.source ?? \"\";\n const backingDevice = config[\"zfs.pool_name\"] ?? config[\"source\"] ?? config[\"lvm.vg_name\"] ?? \"\";\n return Object.freeze({\n name: metadata.name,\n driver: metadata.driver,\n source,\n backingDevice,\n });\n }\n async attestReferenceStorage(project: string, pool: string, network: string, expected: {\n readonly source: string;\n readonly backingDevice: string;\n }): Promise<IncusStorageAttestation> {\n const storage = await this.getStoragePool(project, pool);\n if (storage === undefined) {\n throw incusError(\"incus-undeployed\", `Incus storage pool ${JSON.stringify(pool)} is not present in project ${JSON.stringify(project)}.`, [\"Create the reference dedicated-block pool before planning sandboxes.\"]);\n }\n if (!REFERENCE_DRIVERS.has(storage.driver) || storage.driver === \"dir\") {\n throw incusError(\"sandbox-artifact-unverified\", `Reference pool ${JSON.stringify(pool)} is not a dedicated block-backed Incus pool (driver=${storage.driver}).`, [\"Use ZFS, Btrfs, or LVM for the reference domain; loop-backed or directory pools cannot attest.\"]);\n }\n if (storage.source !== expected.source || storage.backingDevice !== expected.backingDevice || storage.name !== pool) {\n throw incusError(\"sandbox-artifact-unverified\", \"Live Incus pool source/backingDevice does not match the pinned reference descriptor.\", [\"Do not trust descriptor self-description; pin and attest the exact pool source and backing device.\"]);\n }\n if (/\\.img$/u.test(storage.source) || /loop/i.test(storage.source)) {\n throw incusError(\"sandbox-artifact-unverified\", `Reference pool ${JSON.stringify(pool)} source is not dedicated-block.`, [\"Do not present loop-backed files as reference capacity.\"]);\n }\n const net = await this.get(this.projectPath(`/1.0/networks/${encodeURIComponent(network)}`, project));\n if (isAbsent(net) || !isRecord(net) || typeof net.name !== \"string\") {\n throw incusError(\"incus-undeployed\", `Incus network ${JSON.stringify(network)} is not present in project ${JSON.stringify(project)}.`, [\"Create the descriptor network in Incus before planning sandboxes.\"]);\n }\n return storage;\n }\n async attestDevelopmentStorage(project: string, pool: string): Promise<IncusStorageAttestation> {\n const storage = await this.getStoragePool(project, pool);\n if (storage === undefined) {\n throw incusError(\"incus-undeployed\", `Incus development pool ${JSON.stringify(pool)} is not present.`, [\"Create the development-dir pool at /data/niceeval-sandbox-dev.\"]);\n }\n if (storage.driver !== \"dir\" || storage.source !== DEVELOPMENT_HOST_PATH) {\n throw incusError(\"sandbox-artifact-unverified\", `Development pool must be a dir pool sourced at ${DEVELOPMENT_HOST_PATH}.`, [\"Point the development storage pool at /data/niceeval-sandbox-dev.\"]);\n }\n return storage;\n }\n async listImages(project: string): Promise<readonly IncusImage[]> {\n const metadata = await this.get(this.projectPath(\"/1.0/images?recursion=1\", project));\n if (metadata === null)\n return Object.freeze([]);\n if (!Array.isArray(metadata))\n throw shapeError(\"GET /1.0/images\");\n return Object.freeze(metadata.flatMap((entry) => {\n if (!isRecord(entry) || typeof entry.fingerprint !== \"string\")\n return [];\n if (!/^[a-f0-9]{64}$/u.test(entry.fingerprint))\n return [];\n const aliases = Array.isArray(entry.aliases)\n ? entry.aliases.flatMap((alias) => isRecord(alias) && typeof alias.name === \"string\" ? [alias.name] : [])\n : [];\n return [Object.freeze({\n fingerprint: entry.fingerprint,\n aliases: Object.freeze(aliases),\n type: typeof entry.type === \"string\" ? entry.type : \"container\",\n properties: Object.freeze(asStringRecord(entry.properties)),\n })];\n }));\n }\n async resolveTrustedImage(project: string, image: IncusImageLocator, trusted: readonly string[]): Promise<IncusImage> {\n const trustedLocators = trusted.map((entry) => parseIncusImageLocator(entry, \"trustedBaseImages\"));\n const exact = trustedLocators.find((entry) => entry.locator === image.locator);\n if (exact === undefined || exact.digest !== image.digest || exact.name !== image.name) {\n throw incusError(\"sandbox-artifact-unverified\", `Image ${image.locator} is not an exact trustedBaseImages locator.`, [\"trustedBaseImages must list the same name@sha256:<digest>; a matching digest under another name is rejected.\"]);\n }\n const images = await this.listImages(project);\n const match = images.find((candidate) => candidate.fingerprint === image.digest && candidate.aliases.includes(image.name));\n if (match === undefined) {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${image.locator} is not present as that exact alias and digest in project ${JSON.stringify(project)}.`, [\"Import the trusted image with the Incus deployment; NiceEval will not pull, build, or import images.\"]);\n }\n if (match.type !== \"virtual-machine\") {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${image.locator} is type ${JSON.stringify(match.type)}, not a virtual-machine.`, [\"Use a digest-pinned Incus virtual-machine image for incusSandbox().\"]);\n }\n return match;\n }\n async assertGuestInitMountsBlockDockerData(project: string, fingerprint: string): Promise<void> {\n const images = await this.listImages(project);\n const image = images.find((candidate) => candidate.fingerprint === fingerprint);\n if (image === undefined) {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${fingerprint} is not present for guest-init attestation.`, [\"Import the digest-pinned VM image; NiceEval will not pull, build, or import images.\"]);\n }\n if (image.type !== \"virtual-machine\") {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${fingerprint} is type ${JSON.stringify(image.type)}, not a virtual-machine.`, [\"Reference Docker data uses a block custom volume; only a VM image can receive that disk.\"]);\n }\n if (image.properties[INCUS_IMAGE_GUEST_INIT_PROPERTY] !== INCUS_GUEST_INIT_BLOCK_DOCKER_DATA) {\n throw incusError(\"sandbox-artifact-unverified\", `Trusted image ${fingerprint} does not prove guest-init can mount a block Docker data disk.`, [\n `Set image property ${INCUS_IMAGE_GUEST_INIT_PROPERTY}=${INCUS_GUEST_INIT_BLOCK_DOCKER_DATA} on the trusted VM image.`,\n \"NiceEval will not attach a path/size extra disk (invalid Incus) or assume an unproven guest-init contract.\",\n ]);\n }\n }\n async listInstances(project: string): Promise<readonly IncusInstance[]> {\n const metadata = await this.get(this.projectPath(\"/1.0/instances?recursion=1\", project));\n if (metadata === null)\n return Object.freeze([]);\n if (!Array.isArray(metadata))\n throw shapeError(\"GET /1.0/instances\");\n return Object.freeze(metadata.flatMap((entry) => this.decodeInstance(entry, \"GET /1.0/instances\")));\n }\n private decodeInstance(entry: unknown, path: string): IncusInstance[] {\n if (!isRecord(entry) || typeof entry.name !== \"string\")\n throw shapeError(path);\n const devices = isRecord(entry.expanded_devices) ? entry.expanded_devices : undefined;\n const expanded = devices === undefined\n ? undefined\n : Object.freeze(Object.fromEntries(Object.entries(devices).flatMap(([key, value]) => isRecord(value)\n ? [[key, Object.freeze(asStringRecord(value))] as const]\n : [])));\n return [Object.freeze({\n name: entry.name,\n status: typeof entry.status === \"string\" ? entry.status : \"Unknown\",\n type: typeof entry.type === \"string\" ? entry.type : \"container\",\n config: Object.freeze(asStringRecord(entry.config)),\n ...(expanded === undefined ? {} : { expandedDevices: expanded }),\n })];\n }\n async getInstance(project: string, name: string): Promise<IncusInstance | undefined> {\n const metadata = await this.get(this.projectPath(`/1.0/instances/${encodeURIComponent(name)}`, project));\n if (isAbsent(metadata))\n return undefined;\n const decoded = this.decodeInstance(metadata, `GET instance ${name}`);\n return decoded[0];\n }\n async listVolumes(project: string, pool: string): Promise<readonly IncusVolume[]> {\n const metadata = await this.get(this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom?recursion=1`, project));\n if (metadata === null)\n return Object.freeze([]);\n if (!Array.isArray(metadata))\n throw shapeError(\"GET storage volumes\");\n return Object.freeze(metadata.flatMap((entry) => this.decodeVolume(entry, \"GET storage volumes\"))\n .filter((volume) => volume.type === \"custom\"));\n }\n async getVolume(project: string, pool: string, name: string): Promise<IncusVolume | undefined> {\n const metadata = await this.get(this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom/${encodeURIComponent(name)}`, project));\n if (isAbsent(metadata))\n return undefined;\n return this.decodeVolume(metadata, `GET volume ${name}`)[0];\n }\n private decodeVolume(entry: unknown, path: string): IncusVolume[] {\n if (!isRecord(entry) || typeof entry.name !== \"string\")\n throw shapeError(path);\n const contentType = typeof entry.content_type === \"string\"\n ? entry.content_type\n : typeof entry.contentType === \"string\" ? entry.contentType : \"\";\n return [Object.freeze({\n name: entry.name,\n type: typeof entry.type === \"string\" ? entry.type : \"custom\",\n contentType,\n config: Object.freeze(asStringRecord(entry.config)),\n })];\n }\n async createVolume(spec: IncusVolumeSpec): Promise<void> {\n await this.mutate(\"POST\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(spec.pool)}/volumes/custom`, spec.project), {\n name: spec.name,\n type: \"custom\",\n content_type: spec.contentType,\n config: {\n size: `${spec.sizeBytes}B`,\n ...spec.config,\n },\n });\n }\n async deleteVolume(project: string, pool: string, name: string): Promise<void> {\n const existing = await this.getVolume(project, pool, name);\n if (existing === undefined)\n return;\n await this.mutate(\"DELETE\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom/${encodeURIComponent(name)}`, project));\n }\n async waitVolumeAbsent(project: string, pool: string, name: string, timeoutMs = MUTATION_TIMEOUT_MS): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const volume = await this.getVolume(project, pool, name);\n if (volume === undefined)\n return;\n if (Date.now() >= deadline) {\n throw incusError(\"sandbox-destroy-incomplete\", `Incus volume ${JSON.stringify(name)} in pool ${JSON.stringify(pool)} is still present after delete.`, [\"Inspect the custom volume with the Incus CLI; NiceEval will not mark the allocation destroyed without an absent receipt.\"]);\n }\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n async createInstance(spec: IncusInstanceSpec): Promise<void> {\n if (spec.dockerDataContentType === \"block\" && spec.dockerDataPath !== undefined) {\n throw incusError(\"sandbox-artifact-unverified\", \"Block Docker data volumes are attached without a host path; guest-init mounts the dedicated disk.\", [\"Do not set path on a block custom volume disk device.\"]);\n }\n if (spec.dockerDataContentType === \"filesystem\" && spec.dockerDataPath === undefined) {\n throw incusError(\"sandbox-artifact-unverified\", \"Filesystem Docker data volumes require path=/var/lib/docker.\", [\"Attach filesystem custom volumes with an explicit guest path.\"]);\n }\n const dockerdata: Record<string, string> = {\n type: \"disk\",\n pool: spec.storagePool,\n source: spec.dockerDataVolume,\n dependent: \"true\",\n ...(spec.dockerDataPath === undefined ? {} : { path: spec.dockerDataPath }),\n };\n const devices: Record<string, Record<string, string>> = {\n root: { path: \"/\", pool: spec.storagePool, type: \"disk\" },\n eth0: { name: \"eth0\", nictype: \"bridged\", parent: spec.network, type: \"nic\" },\n dockerdata,\n };\n await this.mutate(\"POST\", this.projectPath(\"/1.0/instances\", spec.project), {\n name: spec.name,\n type: \"virtual-machine\",\n source: { type: \"image\", fingerprint: spec.fingerprint },\n config: spec.config,\n devices,\n });\n }\n /** Copy is intentionally explicit about both projects: artifacts never live in runtime. */\n async copyVolume(spec: {\n readonly sourceProject: string;\n readonly sourcePool: string;\n readonly sourceName: string;\n readonly targetProject: string;\n readonly targetPool: string;\n readonly targetName: string;\n readonly config: Readonly<Record<string, string>>;\n }): Promise<void> {\n await this.mutate(\"POST\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(spec.targetPool)}/volumes/custom`, spec.targetProject), {\n name: spec.targetName, type: \"custom\",\n source: { type: \"copy\", project: spec.sourceProject, pool: spec.sourcePool, name: spec.sourceName },\n config: spec.config,\n });\n }\n async copyInstance(spec: {\n readonly sourceProject: string;\n readonly sourceName: string;\n readonly targetProject: string;\n readonly targetName: string;\n readonly config: Readonly<Record<string, string>>;\n readonly devices: Readonly<Record<string, Readonly<Record<string, string>>>>;\n }): Promise<void> {\n const source = await this.getInstance(spec.sourceProject, spec.sourceName);\n const baseImage = source?.config[\"volatile.base_image\"] ??\n source?.config[INCUS_METADATA.baseFingerprint];\n if (source === undefined || baseImage === undefined || !/^[a-f0-9]{64}$/u.test(baseImage)) {\n throw incusError(\"sandbox-artifact-unverified\", `Incus copy source ${JSON.stringify(spec.sourceName)} has no exact base-image digest.`, [\"Quarantine the source tuple; artifact copies must retain their trusted base-image lineage.\"]);\n }\n await this.mutate(\"POST\", this.projectPath(\"/1.0/instances\", spec.targetProject), {\n name: spec.targetName, type: \"virtual-machine\",\n // Incus needs base-image to copy a VM's root-disk delta. Omitting it can\n // produce a valid-looking target rooted at the base image and silently\n // discard the source VM's prepared root filesystem state.\n source: {\n type: \"copy\",\n project: spec.sourceProject,\n source: spec.sourceName,\n \"base-image\": baseImage,\n },\n config: spec.config, devices: spec.devices,\n });\n }\n async updateVolumeConfig(project: string, pool: string, name: string, config: Readonly<Record<string, string>>): Promise<void> {\n await this.mutate(\"PATCH\", this.projectPath(`/1.0/storage-pools/${encodeURIComponent(pool)}/volumes/custom/${encodeURIComponent(name)}`, project), { config });\n }\n async stopInstance(project: string, name: string): Promise<void> {\n const instance = await this.getInstance(project, name);\n if (instance === undefined || instance.status.toLowerCase() === \"stopped\")\n return;\n await this.mutate(\"PUT\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}/state`, project), \n // Artifact capture must let the guest flush its root filesystem. Forced\n // power-off is reserved for disposable allocation destruction below.\n { action: \"stop\", force: false, timeout: 120 });\n const stopped = await this.getInstance(project, name);\n if (stopped === undefined || stopped.status.toLowerCase() !== \"stopped\") {\n throw incusError(\"sandbox-artifact-unverified\", `Incus instance ${JSON.stringify(name)} did not stop for artifact capture.`, [\"Do not publish a running artifact.\"]);\n }\n }\n async startInstance(project: string, name: string): Promise<void> {\n await this.mutate(\"PUT\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}/state`, project), { action: \"start\", timeout: 120 });\n }\n async deleteInstance(project: string, name: string): Promise<void> {\n const existing = await this.getInstance(project, name);\n if (existing === undefined)\n return;\n if (existing.status.toLowerCase() !== \"stopped\") {\n await this.mutate(\"PUT\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}/state`, project), { action: \"stop\", force: true, timeout: 30 });\n }\n await this.mutate(\"DELETE\", this.projectPath(`/1.0/instances/${encodeURIComponent(name)}`, project));\n }\n async waitAbsent(project: string, name: string, timeoutMs = MUTATION_TIMEOUT_MS): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const instance = await this.getInstance(project, name);\n if (instance === undefined)\n return;\n if (Date.now() >= deadline) {\n throw incusError(\"sandbox-destroy-incomplete\", `Incus instance ${JSON.stringify(name)} in project ${JSON.stringify(project)} is still present after delete.`, [\"Inspect the instance with the Incus CLI and destroy it from the Incus control plane.\"]);\n }\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n spawnExec(project: string, name: string, argv: readonly string[], options: {\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly user?: number | string;\n readonly group?: number | string;\n readonly keepStdin?: boolean;\n } = {}): SpawnedIncusExec {\n this.requireCli(\"Incus exec\");\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus exec requires the incus CLI.\");\n const args = [\"exec\", name, \"--project\", project];\n if (options.cwd !== undefined)\n args.push(\"--cwd\", options.cwd);\n if (options.user !== undefined)\n args.push(\"--user\", String(options.user));\n if (options.group !== undefined)\n args.push(\"--group\", String(options.group));\n if (options.env !== undefined) {\n for (const [key, value] of Object.entries(options.env)) {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(key) || key.includes(\"\\0\") || value.includes(\"\\0\")) {\n throw unreachable(\"Refusing to pass an invalid environment entry to incus exec.\");\n }\n args.push(\"--env\", `${key}=${value}`);\n }\n }\n args.push(\"--\", ...argv);\n const child = spawn(this.transport.binary, args, {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n env: process.env,\n });\n if (child.stdin === null || child.stdout === null || child.stderr === null) {\n throw unreachable(\"Incus exec did not expose stdio pipes.\");\n }\n if (options.keepStdin !== true)\n child.stdin.end();\n return {\n stdin: child.stdin,\n stdout: child.stdout,\n stderr: child.stderr,\n pid: child.pid,\n wait: () => new Promise((resolve, reject) => {\n let settled = false;\n const finish = (error: unknown | undefined, code?: number): void => {\n if (settled)\n return;\n settled = true;\n if (error !== undefined)\n reject(sanitizeSpawnError(error));\n else\n resolve(code ?? 1);\n };\n child.once(\"error\", (cause) => finish(cause));\n child.once(\"close\", (code) => finish(undefined, code ?? 1));\n }),\n killHost: () => {\n child.kill(\"SIGKILL\");\n },\n };\n }\n async exec(project: string, name: string, argv: readonly string[], options: {\n readonly cwd?: string;\n readonly env?: Readonly<Record<string, string>>;\n readonly user?: number | string;\n readonly group?: number | string;\n readonly timeoutMs?: number;\n readonly signal?: AbortSignal;\n } = {}): Promise<IncusExecResult> {\n const spawned = this.spawnExec(project, name, argv, options);\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n spawned.stdout.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n spawned.stderr.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const onAbort = (): void => spawned.killHost();\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted)\n onAbort();\n if (options.timeoutMs !== undefined) {\n timeout = setTimeout(onAbort, options.timeoutMs);\n }\n try {\n const exitCode = await spawned.wait();\n return {\n stdout: Buffer.concat(stdout).toString(\"utf8\"),\n stderr: Buffer.concat(stderr).toString(\"utf8\"),\n exitCode,\n };\n }\n finally {\n if (timeout !== undefined)\n clearTimeout(timeout);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n }\n async pushFile(project: string, name: string, guestPath: string, content: Uint8Array, options: {\n readonly uid?: number;\n readonly gid?: number;\n readonly mode?: string;\n } = {}): Promise<void> {\n this.requireCli(\"Incus file push\");\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus file push requires the incus CLI.\");\n const args = [\"file\", \"push\", \"-\", `${name}${guestPath}`, \"--project\", project];\n if (options.uid !== undefined)\n args.push(\"--uid\", String(options.uid));\n if (options.gid !== undefined)\n args.push(\"--gid\", String(options.gid));\n if (options.mode !== undefined)\n args.push(\"--mode\", options.mode);\n const result = await runCli(this.transport.binary, args, {\n timeoutMs: MUTATION_TIMEOUT_MS,\n encoding: \"buffer\",\n stdin: content,\n });\n if (result.exitCode !== 0) {\n throw unreachable(`incus file push failed (exit ${result.exitCode}).`);\n }\n }\n async pullFile(project: string, name: string, guestPath: string): Promise<Uint8Array> {\n this.requireCli(\"Incus file pull\");\n if (this.transport._tag !== \"Cli\")\n throw unreachable(\"Incus file pull requires the incus CLI.\");\n const result = await runCli(this.transport.binary, [\"file\", \"pull\", `${name}${guestPath}`, \"-\", \"--project\", project], { timeoutMs: MUTATION_TIMEOUT_MS, encoding: \"buffer\" });\n if (result.exitCode !== 0) {\n throw unreachable(`incus file pull failed (exit ${result.exitCode}).`);\n }\n return result.stdout;\n }\n}\nexport function parseIncusSizeBytes(raw: string | undefined): number | undefined {\n if (raw === undefined)\n return undefined;\n const trimmed = raw.trim();\n if (trimmed === \"\")\n return undefined;\n if (/^\\d+$/u.test(trimmed)) {\n const bytes = Number(trimmed);\n return Number.isSafeInteger(bytes) && bytes > 0 ? bytes : undefined;\n }\n const match = /^(\\d+)((?:[kKmMgGtTpP]i?)?B?| bytes)$/u.exec(trimmed);\n if (match === null || match[1] === undefined || match[2] === undefined)\n return undefined;\n const value = Number(match[1]);\n if (!Number.isSafeInteger(value) || value <= 0)\n return undefined;\n const unit = match[2].toLowerCase().replace(/ ?bytes$/u, \"b\");\n if (unit === \"\" || unit === \"b\")\n return value;\n const binary = unit.includes(\"i\");\n const index = \"kmgtp\".indexOf(unit[0] ?? \"\");\n if (index < 0)\n return undefined;\n const base = binary ? 1024 : 1000;\n const bytes = value * (base ** (index + 1));\n return Number.isSafeInteger(bytes) && bytes > 0 ? bytes : undefined;\n}\nexport function isIncusCliTimeout(error: unknown): boolean {\n return error instanceof Error && /timed out/i.test(error.message);\n}\nexport function isIncusUnreachable(error: unknown): boolean {\n return error instanceof Error && \"code\" in error && (error as IncusProviderError).code === \"incus-unreachable\";\n}\nexport function classifyIncusProvisionError(error: unknown): SandboxProvisionErrorKind {\n if (error instanceof Error && \"code\" in error) {\n const code = (error as IncusProviderError).code;\n if (code === \"incus-unreachable\")\n return classifyProvisionErrorFallback(error);\n if (code === \"incus-undeployed\" ||\n code === \"incus-descriptor-invalid\" ||\n code === \"incus-domain-mismatch\" ||\n code === \"sandbox-artifact-unverified\" ||\n code === \"sandbox-capability-unsatisfied\") {\n return \"unknown\";\n }\n if (code === \"sandbox-capacity-unavailable\")\n return \"rejected\";\n }\n return classifyProvisionErrorFallback(error);\n}\nexport const connectIncusControl = (env: NodeJS.ProcessEnv = process.env): Effect.Effect<IncusControl, IncusProviderError> => Effect.tryPromise({\n try: () => IncusControl.connectReadOnly(env),\n catch: (cause) => cause instanceof Error && \"code\" in cause\n ? cause as IncusProviderError\n : unreachable(`Incus control plane is unreachable: ${cause instanceof Error ? cause.message : String(cause)}`, cause),\n});\nexport const connectIncusMutation = (env: NodeJS.ProcessEnv = process.env): Effect.Effect<IncusControl, IncusProviderError> => Effect.tryPromise({\n try: () => IncusControl.connectMutation(env),\n catch: (cause) => cause instanceof Error && \"code\" in cause\n ? cause as IncusProviderError\n : unreachable(`Incus mutations require the incus CLI: ${cause instanceof Error ? cause.message : String(cause)}`, cause),\n});\n"]}
|
package/dist/show/render.cjs
CHANGED
|
@@ -44,13 +44,17 @@ const aggregateEntries = (value) => ({
|
|
|
44
44
|
kind: "keyValue",
|
|
45
45
|
entries: [
|
|
46
46
|
{ key: "Observed", value: `${value.observed}/${value.expected}` },
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
...(value.evaluationKind === "points"
|
|
48
|
+
? [{
|
|
49
|
+
key: "Outcomes",
|
|
50
|
+
value: `${value.passed} scored; ${value.errored} errored; ${value.skipped} skipped`,
|
|
51
|
+
}]
|
|
52
|
+
: [{
|
|
53
|
+
key: "Verdicts",
|
|
54
|
+
value: value.failed === 0 && value.errored === 0 && value.skipped === 0
|
|
55
|
+
? `${value.passed} passed`
|
|
56
|
+
: `${value.passed} passed; ${value.failed} failed; ${value.errored} errored; ${value.skipped} skipped`,
|
|
57
|
+
}, { key: "Pass rate", value: passRate(value.passRate) }]),
|
|
54
58
|
...(value.evaluationKind === "pass"
|
|
55
59
|
? []
|
|
56
60
|
: [{ key: "Score", value: metric(value.score) }]),
|
|
@@ -80,6 +84,7 @@ const attemptBlocks = (cells, group, all) => {
|
|
|
80
84
|
let shownErrors = 0;
|
|
81
85
|
return cells.flatMap((cell) => {
|
|
82
86
|
const showScore = cell.aggregate.evaluationKind !== "pass";
|
|
87
|
+
const showScoreOutcome = cell.aggregate.evaluationKind === "points";
|
|
83
88
|
const members = all
|
|
84
89
|
? cell.members
|
|
85
90
|
: cell.members.filter((member) => {
|
|
@@ -105,7 +110,7 @@ const attemptBlocks = (cells, group, all) => {
|
|
|
105
110
|
kind: "table",
|
|
106
111
|
columns: [
|
|
107
112
|
{ header: "Attempt", maxWidth: 14 },
|
|
108
|
-
{ header: "Verdict" },
|
|
113
|
+
{ header: showScoreOutcome ? "Outcome" : "Verdict" },
|
|
109
114
|
{ header: "Duration" },
|
|
110
115
|
...(showScore ? [{ header: "Score" }] : []),
|
|
111
116
|
],
|
|
@@ -124,7 +129,11 @@ const attemptBlocks = (cells, group, all) => {
|
|
|
124
129
|
? `absent (${member.publication.reason})`
|
|
125
130
|
: "pending",
|
|
126
131
|
member.publication.state === "published"
|
|
127
|
-
?
|
|
132
|
+
? showScoreOutcome
|
|
133
|
+
? member.publication.verdict === "passed"
|
|
134
|
+
? "scored"
|
|
135
|
+
: member.publication.verdict ?? "not-recorded"
|
|
136
|
+
: member.publication.verdict ?? "not-recorded"
|
|
128
137
|
: member.publication.state,
|
|
129
138
|
member.publication.state === "published"
|
|
130
139
|
? duration(member.publication.durationMs)
|
|
@@ -140,21 +149,24 @@ const attemptBlocks = (cells, group, all) => {
|
|
|
140
149
|
});
|
|
141
150
|
};
|
|
142
151
|
const hiddenAttemptSummary = (cells) => {
|
|
143
|
-
const counts = { passed: 0, failed: 0, errored: 0 };
|
|
152
|
+
const counts = { passed: 0, failed: 0, scored: 0, errored: 0 };
|
|
144
153
|
for (const cell of cells) {
|
|
145
154
|
for (const member of cell.members) {
|
|
146
155
|
if (member.publication.state !== "published")
|
|
147
156
|
continue;
|
|
148
157
|
const verdict = member.publication.verdict;
|
|
149
|
-
if (verdict === "passed"
|
|
150
|
-
|
|
151
|
-
|
|
158
|
+
if (verdict === "passed") {
|
|
159
|
+
counts[cell.aggregate.evaluationKind === "points" ? "scored" : "passed"] += 1;
|
|
160
|
+
}
|
|
161
|
+
else if (verdict === "failed" || verdict === "errored") {
|
|
152
162
|
counts[verdict] += 1;
|
|
163
|
+
}
|
|
153
164
|
}
|
|
154
165
|
}
|
|
155
166
|
const hidden = [
|
|
156
167
|
...(counts.passed > 0 ? [`${counts.passed} passed`] : []),
|
|
157
168
|
...(counts.failed > 0 ? [`${counts.failed} failed`] : []),
|
|
169
|
+
...(counts.scored > 0 ? [`${counts.scored} scored`] : []),
|
|
158
170
|
...(counts.errored > 5 ? [`${counts.errored - 5} errored`] : []),
|
|
159
171
|
];
|
|
160
172
|
return hidden.length === 0 ? null : `${hidden.join("; ")} Attempts hidden`;
|
|
@@ -200,6 +212,7 @@ function renderOverview(value, options = {}) {
|
|
|
200
212
|
kind: "panel",
|
|
201
213
|
title: "Experiments",
|
|
202
214
|
blocks: groups.flatMap((group) => {
|
|
215
|
+
const showPassRate = group.experiments.some(({ aggregate }) => aggregate.evaluationKind !== "points");
|
|
203
216
|
const showScore = group.experiments.some(({ aggregate }) => aggregate.evaluationKind !== "pass");
|
|
204
217
|
return [
|
|
205
218
|
...(group.name === null
|
|
@@ -212,7 +225,7 @@ function renderOverview(value, options = {}) {
|
|
|
212
225
|
{ header: "Observed" },
|
|
213
226
|
{ header: "Agent" },
|
|
214
227
|
{ header: "Model" },
|
|
215
|
-
{ header: "Pass rate" },
|
|
228
|
+
...(showPassRate ? [{ header: "Pass rate" }] : []),
|
|
216
229
|
...(showScore ? [{ header: "Score" }] : []),
|
|
217
230
|
],
|
|
218
231
|
rows: group.experiments.map((experiment) => [
|
|
@@ -220,7 +233,7 @@ function renderOverview(value, options = {}) {
|
|
|
220
233
|
`${experiment.aggregate.observed}/${experiment.aggregate.expected}`,
|
|
221
234
|
executionValue(experiment.agent),
|
|
222
235
|
executionValue(experiment.model),
|
|
223
|
-
passRate(experiment.aggregate.passRate),
|
|
236
|
+
...(showPassRate ? [passRate(experiment.aggregate.passRate)] : []),
|
|
224
237
|
...(showScore ? [metric(experiment.aggregate.score)] : []),
|
|
225
238
|
]),
|
|
226
239
|
},
|