zidane 6.5.2 → 6.5.3

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.
Files changed (98) hide show
  1. package/dist/{acp-565X8nVP.js → acp-CIpD8UIw.js} +2 -2
  2. package/dist/{acp-565X8nVP.js.map → acp-CIpD8UIw.js.map} +1 -1
  3. package/dist/acp-cli.js +5 -5
  4. package/dist/acp.d.ts +1 -1
  5. package/dist/acp.js +1 -1
  6. package/dist/{agent-CvO7UOxv.js → agent-8kfGIDb_.js} +2 -2
  7. package/dist/{agent-CvO7UOxv.js.map → agent-8kfGIDb_.js.map} +1 -1
  8. package/dist/agent.d.ts +1 -1
  9. package/dist/agent.js +1 -1
  10. package/dist/{anthropic-Dov2mC5e.js → anthropic-_Hn1YiWr.js} +2 -2
  11. package/dist/{anthropic-Dov2mC5e.js.map → anthropic-_Hn1YiWr.js.map} +1 -1
  12. package/dist/{auth-B8ZuBcKC.js → auth-CS_e8ng1.js} +6 -5
  13. package/dist/{auth-B8ZuBcKC.js.map → auth-CS_e8ng1.js.map} +1 -1
  14. package/dist/chat/pure.d.ts +3 -3
  15. package/dist/chat.d.ts +20 -15
  16. package/dist/chat.d.ts.map +1 -1
  17. package/dist/chat.js +3 -3
  18. package/dist/{context-transport-ClvadrlH.js → context-transport-Bco9Wo0b.js} +3 -3
  19. package/dist/{context-transport-ClvadrlH.js.map → context-transport-Bco9Wo0b.js.map} +1 -1
  20. package/dist/contexts/daytona.d.ts +1 -1
  21. package/dist/contexts/daytona.d.ts.map +1 -1
  22. package/dist/contexts/daytona.js +5 -2
  23. package/dist/contexts/daytona.js.map +1 -1
  24. package/dist/contexts/e2b.d.ts +1 -1
  25. package/dist/eval.d.ts +1 -1
  26. package/dist/extensions.d.ts +1 -1
  27. package/dist/extensions.js +1 -1
  28. package/dist/headless.d.ts +1 -1
  29. package/dist/headless.js +1 -1
  30. package/dist/{index-DfERTrql.d.ts → index-BKyWhILQ.d.ts} +2 -2
  31. package/dist/{index-DfERTrql.d.ts.map → index-BKyWhILQ.d.ts.map} +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.js +7 -7
  34. package/dist/{login-Cl6ML2XN.js → login-D3CKhgbI.js} +2 -2
  35. package/dist/{login-Cl6ML2XN.js.map → login-D3CKhgbI.js.map} +1 -1
  36. package/dist/{mcp-DdntU47g.js → mcp-D9fqOQo5.js} +3 -3
  37. package/dist/{mcp-DdntU47g.js.map → mcp-D9fqOQo5.js.map} +1 -1
  38. package/dist/mcp.d.ts +1 -1
  39. package/dist/mcp.js +1 -1
  40. package/dist/{oauth-bkEOybqm.js → oauth-BYjlFR-J.js} +49 -10
  41. package/dist/oauth-BYjlFR-J.js.map +1 -0
  42. package/dist/output/stream-json.d.ts +1 -1
  43. package/dist/output/terminal.d.ts +1 -1
  44. package/dist/plugins.d.ts +1 -1
  45. package/dist/presets.d.ts +1 -1
  46. package/dist/presets.js +1 -1
  47. package/dist/providers/anthropic.d.ts +1 -1
  48. package/dist/providers/anthropic.js +1 -1
  49. package/dist/providers/arcee.d.ts +1 -1
  50. package/dist/providers/baseten.d.ts +1 -1
  51. package/dist/providers/cerebras.d.ts +1 -1
  52. package/dist/providers/local.d.ts +1 -1
  53. package/dist/providers/openai-compat.d.ts +1 -1
  54. package/dist/providers/openai.d.ts +1 -1
  55. package/dist/providers/openai.js +1 -1
  56. package/dist/providers/openrouter.d.ts +1 -1
  57. package/dist/providers/xai.d.ts +1 -1
  58. package/dist/providers/xai.js +68 -1
  59. package/dist/providers/xai.js.map +1 -0
  60. package/dist/{providers-B6mFe7OD.js → providers-VypZh7rD.js} +3 -3
  61. package/dist/{providers-B6mFe7OD.js.map → providers-VypZh7rD.js.map} +1 -1
  62. package/dist/providers.d.ts +1 -1
  63. package/dist/providers.js +4 -4
  64. package/dist/restate.d.ts +1 -1
  65. package/dist/restate.js +1 -1
  66. package/dist/rolldown-runtime-BhDjJH2R.js +15 -0
  67. package/dist/session/sqlite.d.ts +1 -1
  68. package/dist/session.d.ts +1 -1
  69. package/dist/skills.d.ts +1 -1
  70. package/dist/{stdio-BQeCMmuK.js → stdio-DPpBDPx5.js} +13 -4
  71. package/dist/{stdio-BQeCMmuK.js.map → stdio-DPpBDPx5.js.map} +1 -1
  72. package/dist/{stdio-loader-BN1l1ZAG.js → stdio-loader-CI4sPFve.js} +11 -6
  73. package/dist/stdio-loader-CI4sPFve.js.map +1 -0
  74. package/dist/{tool-formatters-B2gBbKaS.d.ts → tool-formatters-DMr62Hpy.d.ts} +3 -3
  75. package/dist/{tool-formatters-B2gBbKaS.d.ts.map → tool-formatters-DMr62Hpy.d.ts.map} +1 -1
  76. package/dist/tools/fetch-url.d.ts +1 -1
  77. package/dist/tools/web-search.d.ts +1 -1
  78. package/dist/tools.d.ts +1 -1
  79. package/dist/tools.js +1 -1
  80. package/dist/{transcript-anchors-CeIxhKP7.d.ts → transcript-anchors-BHihk9nf.d.ts} +2 -2
  81. package/dist/{transcript-anchors-CeIxhKP7.d.ts.map → transcript-anchors-BHihk9nf.d.ts.map} +1 -1
  82. package/dist/{transcript-anchors-CmFKUw8M.js → transcript-anchors-uU_KZLsp.js} +36 -31
  83. package/dist/transcript-anchors-uU_KZLsp.js.map +1 -0
  84. package/dist/tui.d.ts +3 -3
  85. package/dist/tui.d.ts.map +1 -1
  86. package/dist/tui.js +19 -13
  87. package/dist/tui.js.map +1 -1
  88. package/dist/{turn-operations-Dyv3Z-Ff.d.ts → turn-operations-BgqVUjtl.d.ts} +3 -3
  89. package/dist/{turn-operations-Dyv3Z-Ff.d.ts.map → turn-operations-BgqVUjtl.d.ts.map} +1 -1
  90. package/dist/types.d.ts +1 -1
  91. package/dist/{xai-Du6Wfnlb.js → xai-CfmI5Y5k.js} +10 -67
  92. package/dist/xai-CfmI5Y5k.js.map +1 -0
  93. package/docs/RESTATE.md +7 -0
  94. package/package.json +18 -17
  95. package/dist/oauth-bkEOybqm.js.map +0 -1
  96. package/dist/stdio-loader-BN1l1ZAG.js.map +0 -1
  97. package/dist/transcript-anchors-CmFKUw8M.js.map +0 -1
  98. package/dist/xai-Du6Wfnlb.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"daytona.js","names":[],"sources":["../../src/contexts/daytona.ts"],"sourcesContent":["/**\n * Daytona sandbox provider.\n *\n * Implements {@link SandboxProvider} on top of Daytona sandboxes. Pair it with\n * {@link createSandboxContext} to run an agent's shell + filesystem tools\n * inside a Daytona sandbox:\n *\n * ```ts\n * import { createSandboxContext } from 'zidane/contexts'\n * import { createDaytonaProvider } from 'zidane/contexts/daytona'\n *\n * const execution = createSandboxContext(createDaytonaProvider())\n * ```\n *\n * Requires `@daytona/sdk` as an optional peer dependency:\n * `bun add @daytona/sdk`.\n */\n\nimport type { Logger } from '../logger'\nimport type { SandboxProvider } from './sandbox'\nimport type { ExecResult, SpawnConfig, StreamHandle } from './types'\nimport { Buffer } from 'node:buffer'\nimport { consoleSink, createLogger } from '../logger'\nimport { capBufferedExecOutput } from './output-cap'\nimport { StreamQueue } from './stream-queue'\n\n// ---------------------------------------------------------------------------\n// Minimal structural views of the `@daytona/sdk` surface we touch. Declared\n// locally so zidane typechecks without the optional peer dependency installed.\n// ---------------------------------------------------------------------------\n\ninterface DaytonaExecuteResponse {\n exitCode?: number | null\n result?: string | null\n output?: string | null\n stdout?: string | null\n stderr?: string | null\n artifacts?: { stdout?: string | null }\n}\n\ninterface DaytonaFileEntry {\n name: string\n /** Present in the Daytona SDK's FileInfo; used for the `/` dir suffix. */\n isDir?: boolean\n}\n\n/**\n * Structural subset of Daytona's `PtyHandle`.\n *\n * Daytona's process/session API has NO stdin channel at all — sessions are\n * fire-and-forget with log streaming — so a PTY is the only way to reach a\n * long-lived process interactively. See the `execStream` implementation for\n * what that costs.\n */\ninterface DaytonaPtyHandle {\n pid?: number\n waitForConnection: () => Promise<unknown>\n sendInput: (data: string | Uint8Array) => Promise<unknown>\n wait: () => Promise<{ exitCode?: number }>\n kill?: () => Promise<unknown>\n disconnect: () => Promise<unknown>\n}\n\ninterface DaytonaSandbox {\n id: string\n state?: string\n process: {\n executeCommand: (command: string, cwd?: string, env?: Record<string, string>, timeout?: number) => Promise<DaytonaExecuteResponse>\n /** Present in recent SDKs; only `execStream` uses it. */\n createPty?: (options: {\n /**\n * REQUIRED by the API despite reading like a convenience handle: the\n * SDK forwards it as the session id and the control plane rejects the\n * create with 400 `session ID is required` when it is absent.\n */\n id: string\n cwd?: string\n envs?: Record<string, string>\n onData?: (data: Uint8Array) => void\n }) => Promise<DaytonaPtyHandle>\n }\n fs: {\n downloadFile: (path: string) => Promise<Uint8Array | ArrayBuffer | { toString: (encoding?: BufferEncoding) => string }>\n uploadFile: (content: Uint8Array | Buffer, path: string) => Promise<unknown>\n listFiles: (path: string) => Promise<DaytonaFileEntry[]>\n }\n getWorkDir?: () => Promise<string>\n start?: (timeout?: number) => Promise<unknown>\n delete: (timeout?: number) => Promise<unknown>\n stop?: (timeout?: number) => Promise<unknown>\n archive?: () => Promise<unknown>\n}\n\ninterface DaytonaClientConfig {\n apiKey?: string\n apiUrl?: string\n target?: string\n}\n\ninterface DaytonaResources {\n cpu?: number\n memory?: number\n disk?: number\n gpu?: number\n [key: string]: unknown\n}\n\ninterface DaytonaCreateParams {\n language?: string\n snapshot?: string\n image?: unknown\n resources?: DaytonaResources\n envVars?: Record<string, string>\n [key: string]: unknown\n}\n\ninterface DaytonaClient {\n create: (params?: DaytonaCreateParams) => Promise<DaytonaSandbox>\n get: (sandboxIdOrName: string) => Promise<DaytonaSandbox>\n}\n\ntype DaytonaConstructor = new (config?: DaytonaClientConfig) => DaytonaClient\n\n// ---------------------------------------------------------------------------\n// Provider options\n// ---------------------------------------------------------------------------\n\nexport type DaytonaOnDestroy = 'delete' | 'kill' | 'stop' | 'pause' | 'archive' | 'leave'\n\nexport interface DaytonaProviderOptions {\n /** Daytona API key. Falls back to the `DAYTONA_API_KEY` env var when omitted. */\n apiKey?: string\n /** Daytona API URL. Falls back to `DAYTONA_API_URL`, then Daytona's hosted default. */\n apiUrl?: string\n /** Daytona target / region. Falls back to `DAYTONA_TARGET`, then the org default. */\n target?: string\n /**\n * Attach to a pre-existing sandbox by id or name instead of creating a fresh\n * one. By default the provider treats attached sandboxes as externally owned\n * and leaves them running on destroy/failure (set {@link ownAttached} to take\n * over the lifecycle).\n */\n sandboxId?: string\n /**\n * Take ownership of an attached ({@link sandboxId}) sandbox's lifecycle, so\n * `destroy()` applies {@link onDestroy} to it (stop / archive / delete)\n * instead of leaving it running.\n *\n * The intended caller is a durable host that *owns* the sandbox across\n * invocations: mint it once, journal its id, re-attach via `sandboxId` on\n * every replay/resume, and clean it up at the end of the logical run. Without\n * this an attached sandbox can never be stopped/deleted through the provider —\n * a leak for host-owned sandboxes. No effect when creating a fresh sandbox\n * (those are always owned). Spawn-time failures (readiness timeout, pregame\n * error) still never delete a pre-existing attached sandbox — only sandboxes\n * this provider *created* are auto-cleaned on spawn failure.\n *\n * Default: `false`.\n */\n ownAttached?: boolean\n /** Daytona snapshot used when creating a fresh sandbox. */\n snapshot?: string\n /** Runtime used for Daytona's code tooling. Shell execution works either way. */\n language?: string\n /** Daytona image/declarative builder input used when creating a fresh sandbox. */\n image?: unknown\n /** Daytona sandbox resources. */\n resources?: DaytonaResources\n /** Default working directory, applied when a spawn doesn't set `SpawnConfig.cwd`. */\n cwd?: string\n /** Environment variables baked into the sandbox and re-sent on every command. */\n env?: Record<string, string>\n /** Logger for provider-level lifecycle lines. */\n logger?: Logger\n /** Total deadline, in seconds, for the post-create readiness probe. Defaults to `60`. */\n readinessTimeoutSeconds?: number\n /** Setup script to upload and run once the sandbox is ready. */\n pregame?: { name: string, content: string }\n /**\n * What to do with an owned sandbox on destroy:\n *\n * - `'delete'` / `'kill'` (default) — call `sandbox.delete()`.\n * - `'stop'` / `'pause'` — call `sandbox.stop()` so Daytona preserves state\n * according to the runner's stop semantics.\n * - `'archive'` — stop, then archive for longer-term persistence.\n * - `'leave'` — make no API call.\n */\n onDestroy?: DaytonaOnDestroy\n}\n\n/** Per-probe timeout for the readiness `true` command. */\nconst READINESS_PROBE_TIMEOUT_SECONDS = 5\n/** Pause between readiness probes while the sandbox is still warming up. */\nconst READINESS_BACKOFF_MS = 250\n/** Setup scripts commonly install dependencies, so give them a generous cap. */\nconst PREGAME_TIMEOUT_SECONDS = 30 * 60\n\nexport interface DaytonaReadinessOptions {\n /** Total deadline in seconds. `<= 0` disables the probe entirely. */\n timeoutSeconds: number\n /** Optional cleanup for owned sandboxes that never become ready. */\n cleanupOnTimeout?: () => Promise<void>\n /** Clock source — injectable for deterministic tests. */\n now?: () => number\n /** Sleep between probes — injectable for deterministic tests. */\n sleep?: (ms: number) => Promise<void>\n}\n\nexport function resolveDaytonaEnv(\n optionEnv: Record<string, string> | undefined,\n perSpawnEnv: Record<string, string> | undefined,\n): Record<string, string> | undefined {\n const merged = { ...optionEnv, ...perSpawnEnv }\n return Object.keys(merged).length > 0 ? merged : undefined\n}\n\nexport function normalizeDaytonaExecResult(response: DaytonaExecuteResponse): ExecResult {\n return {\n stdout: response.stdout ?? response.artifacts?.stdout ?? response.result ?? response.output ?? '',\n stderr: response.stderr ?? '',\n exitCode: typeof response.exitCode === 'number' ? response.exitCode : 0,\n }\n}\n\nfunction capExecResult(result: ExecResult): ExecResult {\n return { ...capBufferedExecOutput(result.stdout, result.stderr), exitCode: result.exitCode }\n}\n\nfunction normalizeDaytonaExecError(error: unknown): ExecResult {\n const err = error as { exitCode?: unknown, stdout?: unknown, stderr?: unknown, result?: unknown, output?: unknown, message?: unknown }\n if (typeof err.exitCode === 'number') {\n return {\n stdout: typeof err.stdout === 'string'\n ? err.stdout\n : typeof err.result === 'string'\n ? err.result\n : typeof err.output === 'string'\n ? err.output\n : '',\n stderr: typeof err.stderr === 'string' ? err.stderr : typeof err.message === 'string' ? err.message : '',\n exitCode: err.exitCode,\n }\n }\n return { stdout: '', stderr: error instanceof Error ? error.message : String(error), exitCode: 124 }\n}\n\nfunction bufferToString(value: Uint8Array | ArrayBuffer | { toString: (encoding?: BufferEncoding) => string }): string {\n if (Buffer.isBuffer(value))\n return value.toString('utf8')\n if (value instanceof ArrayBuffer)\n return new TextDecoder().decode(new Uint8Array(value))\n if (value instanceof Uint8Array)\n return new TextDecoder().decode(value)\n return value.toString('utf8')\n}\n\nfunction toClientConfig(apiKey?: string, apiUrl?: string, target?: string): DaytonaClientConfig | undefined {\n const config: DaytonaClientConfig = {}\n if (apiKey !== undefined)\n config.apiKey = apiKey\n if (apiUrl !== undefined)\n config.apiUrl = apiUrl\n if (target !== undefined)\n config.target = target\n return Object.keys(config).length > 0 ? config : undefined\n}\n\nfunction takeString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nexport function resolveDaytonaCreateParams(\n sandboxConfig: Record<string, unknown>,\n options: DaytonaProviderOptions,\n envVars: Record<string, string> | undefined,\n): DaytonaCreateParams | undefined {\n const reserved = new Set(['provider', 'apiKey', 'apiUrl', 'target', 'sandboxId'])\n const params: DaytonaCreateParams = {}\n\n for (const [key, value] of Object.entries(sandboxConfig)) {\n if (!reserved.has(key) && value !== undefined)\n params[key] = value\n }\n\n const language = takeString(sandboxConfig.language) ?? options.language\n const snapshot = takeString(sandboxConfig.snapshot) ?? options.snapshot\n const image = sandboxConfig.image ?? options.image\n const resources = (sandboxConfig.resources as DaytonaResources | undefined) ?? options.resources\n const configEnvVars = sandboxConfig.envVars as Record<string, string> | undefined\n const mergedEnvVars = resolveDaytonaEnv(envVars, configEnvVars)\n\n if (language !== undefined)\n params.language = language\n if (snapshot !== undefined)\n params.snapshot = snapshot\n if (image !== undefined)\n params.image = image\n if (resources !== undefined)\n params.resources = resources\n if (mergedEnvVars !== undefined)\n params.envVars = mergedEnvVars\n\n return Object.keys(params).length > 0 ? params : undefined\n}\n\nexport async function waitForDaytonaReady(\n sandbox: DaytonaSandbox,\n logger: Logger,\n opts: DaytonaReadinessOptions,\n): Promise<void> {\n if (opts.timeoutSeconds <= 0)\n return\n\n const now = opts.now ?? Date.now\n const sleep = opts.sleep ?? (ms => new Promise<void>(resolve => setTimeout(resolve, ms)))\n const start = now()\n const deadline = start + opts.timeoutSeconds * 1000\n\n logger.info('waiting for Daytona sandbox to initialize', { sandboxId: sandbox.id })\n\n while (true) {\n try {\n await sandbox.process.executeCommand('true', undefined, undefined, READINESS_PROBE_TIMEOUT_SECONDS)\n logger.info('Daytona sandbox ready', { sandboxId: sandbox.id, elapsedMs: now() - start })\n return\n }\n catch {\n if (now() >= deadline) {\n await opts.cleanupOnTimeout?.().catch(() => {})\n throw new Error(`Daytona sandbox ${sandbox.id} did not become ready within ${opts.timeoutSeconds}s`)\n }\n await sleep(READINESS_BACKOFF_MS)\n }\n }\n}\n\nexport async function runDaytonaPregame(\n sandbox: DaytonaSandbox,\n logger: Logger,\n opts: { name: string, content: string, cwd?: string, envVars?: Record<string, string> },\n): Promise<void> {\n const path = `/tmp/${opts.name}`\n logger.info('running Daytona pregame script', { sandboxId: sandbox.id, path })\n await sandbox.fs.uploadFile(Buffer.from(opts.content), path)\n\n const quoted = JSON.stringify(path)\n let result: ExecResult\n try {\n result = normalizeDaytonaExecResult(\n await sandbox.process.executeCommand(`chmod +x ${quoted} && ${quoted}`, opts.cwd, opts.envVars, PREGAME_TIMEOUT_SECONDS),\n )\n }\n catch (err) {\n result = normalizeDaytonaExecError(err)\n }\n\n if (result.exitCode !== 0) {\n logger.error('Daytona pregame script failed', { sandboxId: sandbox.id, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr })\n throw new Error(`Daytona pregame script ${opts.name} failed with exit code ${result.exitCode}`)\n }\n\n logger.info('Daytona pregame ready', { sandboxId: sandbox.id, stdout: result.stdout, stderr: result.stderr })\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function createDaytonaProvider(options: DaytonaProviderOptions = {}): SandboxProvider {\n const live = new Map<string, { sandbox: DaytonaSandbox, env?: Record<string, string>, owned: boolean }>()\n const logger = options.logger ?? createLogger(consoleSink())\n const readinessTimeoutSeconds = options.readinessTimeoutSeconds ?? 60\n\n async function loadSdk(): Promise<DaytonaConstructor> {\n try {\n const mod = await import('@daytona/sdk') as { Daytona: DaytonaConstructor }\n return mod.Daytona\n }\n catch {\n throw new Error('@daytona/sdk is required for the Daytona sandbox provider. Install it with: bun add @daytona/sdk')\n }\n }\n\n function get(sandboxId: string): { sandbox: DaytonaSandbox, env?: Record<string, string>, owned: boolean } {\n const entry = live.get(sandboxId)\n if (!entry)\n throw new Error(`Daytona sandbox ${sandboxId} is not tracked by this provider`)\n return entry\n }\n\n async function deleteOwnedSandbox(sandbox: DaytonaSandbox): Promise<void> {\n try {\n await sandbox.delete()\n }\n catch {\n // Already gone — nothing to clean up.\n }\n }\n\n async function stopOwnedSandbox(sandbox: DaytonaSandbox): Promise<void> {\n if (!sandbox.stop) {\n logger.error('cannot stop Daytona sandbox: this @daytona/sdk install exposes no stop() method; leaving it running', { sandboxId: sandbox.id })\n return\n }\n try {\n await sandbox.stop()\n logger.info('stopped Daytona sandbox; reconnect later via the sandboxId option (CLI: --sandbox)', { sandboxId: sandbox.id })\n }\n catch (err) {\n logger.error('failed to stop Daytona sandbox; it will run until Daytona lifecycle policy stops it', { sandboxId: sandbox.id, error: err instanceof Error ? err.message : String(err) })\n }\n }\n\n async function archiveOwnedSandbox(sandbox: DaytonaSandbox): Promise<void> {\n if (!sandbox.stop || !sandbox.archive) {\n logger.error('cannot archive Daytona sandbox: this @daytona/sdk install exposes no stop() and archive() pair; leaving it running', { sandboxId: sandbox.id })\n return\n }\n try {\n await sandbox.stop()\n await sandbox.archive()\n logger.info('archived Daytona sandbox; reconnect later via the sandboxId option (CLI: --sandbox)', { sandboxId: sandbox.id })\n }\n catch (err) {\n logger.error('failed to archive Daytona sandbox; it will run until Daytona lifecycle policy stops it', { sandboxId: sandbox.id, error: err instanceof Error ? err.message : String(err) })\n }\n }\n\n async function startAttachedSandboxIfNeeded(sandbox: DaytonaSandbox): Promise<void> {\n if (sandbox.state !== 'stopped' && sandbox.state !== 'archived')\n return\n if (!sandbox.start) {\n logger.error('cannot start Daytona sandbox before attach readiness probe: this @daytona/sdk install exposes no start() method', { sandboxId: sandbox.id, state: sandbox.state })\n return\n }\n logger.info('starting Daytona sandbox before attach readiness probe', { sandboxId: sandbox.id, state: sandbox.state })\n await sandbox.start(readinessTimeoutSeconds > 0 ? readinessTimeoutSeconds : undefined)\n }\n\n return {\n name: 'daytona',\n\n async spawn(config: SpawnConfig = {}): Promise<{ id: string, cwd: string }> {\n const Daytona = await loadSdk()\n const sb: Record<string, unknown> = config.sandbox ?? {}\n\n const apiKey = takeString(sb.apiKey) ?? options.apiKey\n const apiUrl = takeString(sb.apiUrl) ?? options.apiUrl\n const target = takeString(sb.target) ?? options.target\n const connectId = takeString(sb.sandboxId) ?? options.sandboxId\n const envVars = resolveDaytonaEnv(options.env, config.env)\n\n const daytona = new Daytona(toClientConfig(apiKey, apiUrl, target))\n const attached = connectId !== undefined\n // Lifecycle ownership drives `destroy()` (onDestroy). A created sandbox is\n // always owned; an attached one is owned only when the host opts in via\n // `ownAttached`. Spawn-FAILURE cleanup is separate (see below) and keyed\n // on `!attached` so a pre-existing sandbox is never auto-deleted.\n const owned = !attached || options.ownAttached === true\n const sandbox = attached\n ? await daytona.get(connectId)\n : await daytona.create(resolveDaytonaCreateParams(sb, options, envVars))\n\n if (attached)\n await startAttachedSandboxIfNeeded(sandbox)\n\n live.set(sandbox.id, { sandbox, env: envVars, owned })\n\n try {\n await waitForDaytonaReady(sandbox, logger, {\n timeoutSeconds: readinessTimeoutSeconds,\n // Only auto-delete a sandbox we CREATED on readiness failure — never a\n // pre-existing attached one, even when we own its lifecycle.\n ...(!attached ? { cleanupOnTimeout: () => deleteOwnedSandbox(sandbox) } : {}),\n })\n }\n catch (err) {\n live.delete(sandbox.id)\n throw err\n }\n\n const requestedCwd = config.cwd ?? options.cwd\n let cwd: string\n if (requestedCwd) {\n cwd = requestedCwd\n await sandbox.process.executeCommand(`mkdir -p ${JSON.stringify(cwd)}`).catch(() => {})\n }\n else if (sandbox.getWorkDir) {\n cwd = await sandbox.getWorkDir().catch(() => '')\n if (!cwd)\n cwd = await sandbox.process.executeCommand('pwd').then(r => normalizeDaytonaExecResult(r).stdout.trim()).catch(() => '') || '/home/daytona'\n }\n else {\n cwd = await sandbox.process.executeCommand('pwd').then(r => normalizeDaytonaExecResult(r).stdout.trim()).catch(() => '') || '/home/daytona'\n }\n\n if (options.pregame) {\n try {\n await runDaytonaPregame(sandbox, logger, { name: options.pregame.name, content: options.pregame.content, cwd, envVars })\n }\n catch (err) {\n // Spawn-failure cleanup: only delete a sandbox we created, never a\n // pre-existing attached one (the host owns its prior state).\n if (!attached)\n await deleteOwnedSandbox(sandbox)\n live.delete(sandbox.id)\n throw err\n }\n }\n\n return { id: sandbox.id, cwd }\n },\n\n async exec(sandboxId, command, opts): Promise<ExecResult> {\n const { sandbox, env } = get(sandboxId)\n const timeoutSeconds = opts?.timeout ?? 30\n try {\n // The SDK buffers the streams uncapped (see the KNOWN RESIDUAL note\n // on `ExecutionContext.fileSize`) — cap host-side before the strings\n // propagate into tool results and session history.\n return capExecResult(normalizeDaytonaExecResult(\n await sandbox.process.executeCommand(\n command,\n opts?.cwd,\n resolveDaytonaEnv(env, opts?.env),\n timeoutSeconds > 0 ? timeoutSeconds : undefined,\n ),\n ))\n }\n catch (err) {\n return capExecResult(normalizeDaytonaExecError(err))\n }\n },\n\n /**\n * Live bidirectional stream — see `ExecutionContext.execStream`.\n *\n * PTY-backed, and not by preference: Daytona's process + session API\n * exposes no stdin at all (sessions are fire-and-forget with log\n * streaming), so a pseudo-terminal is the only interactive channel the\n * platform offers. That forces three mitigations, all in the launch\n * wrapper below, because a PTY is a terminal and a protocol stream is\n * not:\n *\n * 1. `stty -echo` — a terminal echoes everything written to stdin back\n * onto stdout. Without this the caller reads its own requests back\n * as if they were responses.\n * 2. `stty raw` — canonical mode rewrites `\\n`→`\\r\\n` and caps a line\n * at ~4096 bytes. Protocol frames routinely exceed that and would\n * be silently truncated mid-message.\n * 3. `2><file>` — a PTY has ONE stream, so the child's stderr would\n * otherwise interleave into the protocol data and corrupt framing.\n * It is redirected to a file inside the sandbox and surfaced on the\n * returned handle by polling that file through the exec API.\n *\n * The mitigations must run before the child's first byte — but the\n * launch line ITSELF is typed into a canonical-mode terminal, so it is\n * echoed once (a short non-JSON line the transport's tolerant framing\n * discards) and subject to the ~4096-byte line cap. That is why the\n * real command lives in an uploaded script and the typed line stays\n * short and constant: a long command line would be truncated before\n * `stty` ever ran. The script also restores `sh` compound-command\n * semantics that a bare `exec <command>` would break.\n */\n async execStream(sandboxId, command, opts): Promise<StreamHandle> {\n const { sandbox, env } = get(sandboxId)\n\n if (!sandbox.process.createPty) {\n throw new Error(\n 'Daytona SDK is too old: `process.createPty` is required for execStream '\n + '(used to run stdio MCP servers inside the sandbox).',\n )\n }\n\n opts?.signal?.throwIfAborted()\n\n const token = Math.random().toString(36).slice(2, 10)\n const stderrPath = `/tmp/.zidane-stream-${token}.err`\n const scriptPath = `/tmp/.zidane-stream-${token}.sh`\n\n // `exec 2>` rebinds the shell's stderr before the command runs, so\n // the command text needs no rewriting and stays compound-safe.\n await sandbox.fs.uploadFile(\n Buffer.from(`exec 2>${stderrPath}\\n${command}\\n`),\n scriptPath,\n )\n\n // See the E2B counterpart: the PTY's `onData` is a sync `void`\n // callback, so a stalled consumer can only be reported, never slowed.\n const warnBacklog = (which: string) => (bytes: number) =>\n logger.warn('execStream consumer is not draining output', { sandboxId, stream: which, bufferedBytes: bytes })\n const stdout = new StreamQueue(warnBacklog('stdout'))\n const stderr = new StreamQueue(warnBacklog('stderr'))\n\n // Everything the shell emits before the child is actually running is\n // NOISE that must never reach the caller: the echo of our own launch\n // line (typed before `-echo` takes effect), the login shell's prompt,\n // and its line-editor redraw escapes. `createPty` is `lazyStart`, so\n // the shell frequently does not exist yet when we type — it boots\n // afterwards and REPLAYS the buffered input through its line editor.\n // Observed on a stock sandbox: the stream opened with the echoed\n // launch line, the echoed first request, `\\u001b[?2004h` bracketed\n // paste, and a `%` prompt. An MCP client parses that echoed request\n // as a message and the handshake collapses.\n //\n // So: gate the stream on a sentinel the CHILD side prints, and drop\n // every byte before it. The sentinel is assembled by `printf` at\n // runtime (`Z-%s-READY` + token) so the echoed *source* line, which\n // contains the format string rather than the result, cannot match it.\n const sentinel = `Z-${token}-READY`\n let gateOpen = false\n let gateBuffer = ''\n let openGate: () => void = () => {}\n const gateReady = new Promise<void>((r) => { openGate = r })\n\n const pty = await sandbox.process.createPty({\n id: `zidane-stream-${token}`,\n ...(opts?.cwd ? { cwd: opts.cwd } : {}),\n envs: resolveDaytonaEnv(env, opts?.env) ?? {},\n onData: (data: Uint8Array) => {\n if (gateOpen) {\n stdout.push(data)\n return\n }\n gateBuffer += Buffer.from(data).toString('utf8')\n const at = gateBuffer.indexOf(sentinel)\n if (at === -1) {\n // Bounded: never let pre-gate noise grow without limit, but keep\n // a tail longer than the sentinel so it can't be split away.\n if (gateBuffer.length > 64 * 1024)\n gateBuffer = gateBuffer.slice(-1024)\n return\n }\n gateOpen = true\n openGate()\n // Everything after the sentinel's trailing newline is real output.\n const rest = gateBuffer.slice(at + sentinel.length).replace(/^\\r?\\n/, '')\n gateBuffer = ''\n if (rest.length > 0)\n stdout.push(new TextEncoder().encode(rest))\n },\n })\n await pty.waitForConnection()\n\n // Short, constant, and under any canonical line cap. `exec` replaces\n // the login shell so the PTY's lifetime is the script's lifetime and\n // no shell prompt can reach stdout.\n await pty.sendInput(`stty raw -echo; printf 'Z-%s-READY\\\\n' ${token}; exec sh ${scriptPath}\\n`)\n\n // Block until the child is genuinely live. Without this the caller can\n // write its first frame into a shell that hasn't started, where it is\n // echoed back and misread as a response.\n let gateTimer: ReturnType<typeof setTimeout> | undefined\n await Promise.race([\n gateReady,\n new Promise<void>((r) => { gateTimer = setTimeout(r, 30_000) }),\n ])\n clearTimeout(gateTimer)\n if (!gateOpen) {\n // Full teardown, not just a disconnect: Daytona PTY sessions persist\n // server-side after the websocket drops, so a bare disconnect leaks\n // one login shell plus two /tmp files per attempt — a bootstrap\n // retry loop against a broken image would stack them until the\n // sandbox dies.\n await (pty.kill?.() ?? Promise.resolve()).catch(() => {})\n await pty.disconnect().catch(() => {})\n await sandbox.process.executeCommand(`rm -f ${scriptPath} ${stderrPath}`).catch(() => {})\n throw new Error(\n `Daytona execStream: PTY did not reach the ready sentinel within 30s `\n + `(sandbox ${sandboxId}). The login shell may not have started.`,\n )\n }\n\n // stderr file → handle.stderr. Poll rather than stream: the exec API\n // is the only other channel into the sandbox, and diagnostics don't\n // need latency. Byte offsets keep re-reads incremental.\n //\n // The offset comes from the FILE (`wc -c`), never from measuring the\n // returned content: an exec API that trims a trailing newline from\n // command output would make a content-derived offset under-advance by\n // one byte per poll, re-emitting the tail byte forever. The size rides\n // back on the same round trip as a `ZEOF-<token>:` suffix; content is\n // whatever precedes it, so content-side transforms can't drift the\n // cursor either.\n let stderrOffset = 0\n let torndown = false\n const eofMark = `ZEOF-${token}:`\n const drainStderr = async (): Promise<void> => {\n try {\n const res = normalizeDaytonaExecResult(await sandbox.process.executeCommand(\n `tail -c +${stderrOffset + 1} ${stderrPath} 2>/dev/null; printf '${eofMark}%s' \"$(wc -c < ${stderrPath} 2>/dev/null || echo 0)\"`,\n ))\n const at = res.stdout.lastIndexOf(eofMark)\n if (at === -1)\n return\n const content = res.stdout.slice(0, at)\n const size = Number.parseInt(res.stdout.slice(at + eofMark.length).trim(), 10)\n if (content.length > 0)\n stderr.push(new TextEncoder().encode(content))\n if (Number.isFinite(size) && size > stderrOffset)\n stderrOffset = size\n }\n catch {\n // Diagnostic channel — polling failures must never surface as\n // protocol errors.\n }\n }\n const stderrTimer = setInterval(() => { void drainStderr() }, 2000)\n // Guarded: Bun/Node timers support unref, test fakes may not.\n ;(stderrTimer as { unref?: () => void }).unref?.()\n\n // Shared teardown for both exit paths (natural exit and kill): one\n // final stderr drain so a crash message isn't lost, then remove the\n // script + stderr files that would otherwise accumulate in /tmp for\n // the sandbox's lifetime.\n const teardown = async (): Promise<void> => {\n if (torndown)\n return\n torndown = true\n clearInterval(stderrTimer)\n await drainStderr()\n await sandbox.process.executeCommand(`rm -f ${scriptPath} ${stderrPath}`).catch(() => {})\n stdout.close()\n stderr.close()\n }\n\n const exited = pty.wait()\n .then(result => result?.exitCode ?? 0)\n .catch(() => 137)\n .finally(teardown)\n\n const kill = async (): Promise<void> => {\n // A PTY login shell never exits on its own — killing it IS the\n // normal termination path here, not an error path.\n await (pty.kill?.() ?? Promise.resolve()).catch(() => {})\n await pty.disconnect().catch(() => {})\n await teardown()\n }\n\n if (opts?.signal) {\n if (opts.signal.aborted) {\n void kill()\n }\n else {\n // Detach on exit — the (typically run-long) signal otherwise\n // retains the `kill` closure and the PTY handle for the rest of\n // the run, one dead closure per exec.\n const onAbort = () => { void kill() }\n const detach = () => opts.signal!.removeEventListener('abort', onAbort)\n opts.signal.addEventListener('abort', onAbort, { once: true })\n exited.then(detach, detach)\n }\n }\n\n return {\n pid: pty.pid ?? -1,\n stdout,\n stderr,\n write: async (data: Uint8Array): Promise<void> => {\n await pty.sendInput(data)\n },\n kill,\n exited,\n }\n },\n\n async readFile(sandboxId, path): Promise<string> {\n return bufferToString(await get(sandboxId).sandbox.fs.downloadFile(path))\n },\n\n async writeFile(sandboxId, path, content): Promise<void> {\n await get(sandboxId).sandbox.fs.uploadFile(Buffer.from(content), path)\n },\n\n async listFiles(sandboxId, path): Promise<string[]> {\n const entries = await get(sandboxId).sandbox.fs.listFiles(path)\n // Trailing `/` on directories — parity with process/docker contexts.\n return entries.map(e => (e.isDir ? `${e.name}/` : e.name))\n },\n\n async destroy(sandboxId): Promise<void> {\n const entry = live.get(sandboxId)\n if (!entry)\n return\n if (entry.owned) {\n const action = options.onDestroy ?? 'delete'\n if (action === 'stop' || action === 'pause')\n await stopOwnedSandbox(entry.sandbox)\n else if (action === 'archive')\n await archiveOwnedSandbox(entry.sandbox)\n else if (action === 'delete' || action === 'kill')\n await deleteOwnedSandbox(entry.sandbox)\n }\n live.delete(sandboxId)\n },\n }\n}\n"],"mappings":";;;;;;AA+LA,MAAM,kCAAkC;;AAExC,MAAM,uBAAuB;;AAE7B,MAAM,0BAA0B;AAahC,SAAgB,kBACd,WACA,aACoC;CACpC,MAAM,SAAS;EAAE,GAAG;EAAW,GAAG;CAAY;CAC9C,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,SAAS,KAAA;AACnD;AAEA,SAAgB,2BAA2B,UAA8C;CACvF,OAAO;EACL,QAAQ,SAAS,UAAU,SAAS,WAAW,UAAU,SAAS,UAAU,SAAS,UAAU;EAC/F,QAAQ,SAAS,UAAU;EAC3B,UAAU,OAAO,SAAS,aAAa,WAAW,SAAS,WAAW;CACxE;AACF;AAEA,SAAS,cAAc,QAAgC;CACrD,OAAO;EAAE,GAAG,sBAAsB,OAAO,QAAQ,OAAO,MAAM;EAAG,UAAU,OAAO;CAAS;AAC7F;AAEA,SAAS,0BAA0B,OAA4B;CAC7D,MAAM,MAAM;CACZ,IAAI,OAAO,IAAI,aAAa,UAC1B,OAAO;EACL,QAAQ,OAAO,IAAI,WAAW,WAC1B,IAAI,SACJ,OAAO,IAAI,WAAW,WACpB,IAAI,SACJ,OAAO,IAAI,WAAW,WACpB,IAAI,SACJ;EACR,QAAQ,OAAO,IAAI,WAAW,WAAW,IAAI,SAAS,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;EACtG,UAAU,IAAI;CAChB;CAEF,OAAO;EAAE,QAAQ;EAAI,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAAG,UAAU;CAAI;AACrG;AAEA,SAAS,eAAe,OAA+F;CACrH,IAAI,OAAO,SAAS,KAAK,GACvB,OAAO,MAAM,SAAS,MAAM;CAC9B,IAAI,iBAAiB,aACnB,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,IAAI,WAAW,KAAK,CAAC;CACvD,IAAI,iBAAiB,YACnB,OAAO,IAAI,YAAY,CAAC,CAAC,OAAO,KAAK;CACvC,OAAO,MAAM,SAAS,MAAM;AAC9B;AAEA,SAAS,eAAe,QAAiB,QAAiB,QAAkD;CAC1G,MAAM,SAA8B,CAAC;CACrC,IAAI,WAAW,KAAA,GACb,OAAO,SAAS;CAClB,IAAI,WAAW,KAAA,GACb,OAAO,SAAS;CAClB,IAAI,WAAW,KAAA,GACb,OAAO,SAAS;CAClB,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,SAAS,KAAA;AACnD;AAEA,SAAS,WAAW,OAAoC;CACtD,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ,KAAA;AACjE;AAEA,SAAgB,2BACd,eACA,SACA,SACiC;CACjC,MAAM,2BAAW,IAAI,IAAI;EAAC;EAAY;EAAU;EAAU;EAAU;CAAW,CAAC;CAChF,MAAM,SAA8B,CAAC;CAErC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,GACrD,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,UAAU,KAAA,GAClC,OAAO,OAAO;CAGlB,MAAM,WAAW,WAAW,cAAc,QAAQ,KAAK,QAAQ;CAC/D,MAAM,WAAW,WAAW,cAAc,QAAQ,KAAK,QAAQ;CAC/D,MAAM,QAAQ,cAAc,SAAS,QAAQ;CAC7C,MAAM,YAAa,cAAc,aAA8C,QAAQ;CACvF,MAAM,gBAAgB,cAAc;CACpC,MAAM,gBAAgB,kBAAkB,SAAS,aAAa;CAE9D,IAAI,aAAa,KAAA,GACf,OAAO,WAAW;CACpB,IAAI,aAAa,KAAA,GACf,OAAO,WAAW;CACpB,IAAI,UAAU,KAAA,GACZ,OAAO,QAAQ;CACjB,IAAI,cAAc,KAAA,GAChB,OAAO,YAAY;CACrB,IAAI,kBAAkB,KAAA,GACpB,OAAO,UAAU;CAEnB,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,SAAS,KAAA;AACnD;AAEA,eAAsB,oBACpB,SACA,QACA,MACe;CACf,IAAI,KAAK,kBAAkB,GACzB;CAEF,MAAM,MAAM,KAAK,OAAO,KAAK;CAC7B,MAAM,QAAQ,KAAK,WAAU,OAAM,IAAI,SAAc,YAAW,WAAW,SAAS,EAAE,CAAC;CACvF,MAAM,QAAQ,IAAI;CAClB,MAAM,WAAW,QAAQ,KAAK,iBAAiB;CAE/C,OAAO,KAAK,6CAA6C,EAAE,WAAW,QAAQ,GAAG,CAAC;CAElF,OAAO,MACL,IAAI;EACF,MAAM,QAAQ,QAAQ,eAAe,QAAQ,KAAA,GAAW,KAAA,GAAW,+BAA+B;EAClG,OAAO,KAAK,yBAAyB;GAAE,WAAW,QAAQ;GAAI,WAAW,IAAI,IAAI;EAAM,CAAC;EACxF;CACF,QACM;EACJ,IAAI,IAAI,KAAK,UAAU;GACrB,MAAM,KAAK,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC;GAC9C,MAAM,IAAI,MAAM,mBAAmB,QAAQ,GAAG,+BAA+B,KAAK,eAAe,EAAE;EACrG;EACA,MAAM,MAAM,oBAAoB;CAClC;AAEJ;AAEA,eAAsB,kBACpB,SACA,QACA,MACe;CACf,MAAM,OAAO,QAAQ,KAAK;CAC1B,OAAO,KAAK,kCAAkC;EAAE,WAAW,QAAQ;EAAI;CAAK,CAAC;CAC7E,MAAM,QAAQ,GAAG,WAAW,OAAO,KAAK,KAAK,OAAO,GAAG,IAAI;CAE3D,MAAM,SAAS,KAAK,UAAU,IAAI;CAClC,IAAI;CACJ,IAAI;EACF,SAAS,2BACP,MAAM,QAAQ,QAAQ,eAAe,YAAY,OAAO,MAAM,UAAU,KAAK,KAAK,KAAK,SAAS,uBAAuB,CACzH;CACF,SACO,KAAK;EACV,SAAS,0BAA0B,GAAG;CACxC;CAEA,IAAI,OAAO,aAAa,GAAG;EACzB,OAAO,MAAM,iCAAiC;GAAE,WAAW,QAAQ;GAAI,UAAU,OAAO;GAAU,QAAQ,OAAO;GAAQ,QAAQ,OAAO;EAAO,CAAC;EAChJ,MAAM,IAAI,MAAM,0BAA0B,KAAK,KAAK,yBAAyB,OAAO,UAAU;CAChG;CAEA,OAAO,KAAK,yBAAyB;EAAE,WAAW,QAAQ;EAAI,QAAQ,OAAO;EAAQ,QAAQ,OAAO;CAAO,CAAC;AAC9G;AAMA,SAAgB,sBAAsB,UAAkC,CAAC,GAAoB;CAC3F,MAAM,uBAAO,IAAI,IAAuF;CACxG,MAAM,SAAS,QAAQ,UAAU,aAAa,YAAY,CAAC;CAC3D,MAAM,0BAA0B,QAAQ,2BAA2B;CAEnE,eAAe,UAAuC;EACpD,IAAI;GAEF,QAAO,MADW,OAAO,gBAAA,CACd;EACb,QACM;GACJ,MAAM,IAAI,MAAM,kGAAkG;EACpH;CACF;CAEA,SAAS,IAAI,WAA8F;EACzG,MAAM,QAAQ,KAAK,IAAI,SAAS;EAChC,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,mBAAmB,UAAU,iCAAiC;EAChF,OAAO;CACT;CAEA,eAAe,mBAAmB,SAAwC;EACxE,IAAI;GACF,MAAM,QAAQ,OAAO;EACvB,QACM,CAEN;CACF;CAEA,eAAe,iBAAiB,SAAwC;EACtE,IAAI,CAAC,QAAQ,MAAM;GACjB,OAAO,MAAM,uGAAuG,EAAE,WAAW,QAAQ,GAAG,CAAC;GAC7I;EACF;EACA,IAAI;GACF,MAAM,QAAQ,KAAK;GACnB,OAAO,KAAK,sFAAsF,EAAE,WAAW,QAAQ,GAAG,CAAC;EAC7H,SACO,KAAK;GACV,OAAO,MAAM,uFAAuF;IAAE,WAAW,QAAQ;IAAI,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;GAAE,CAAC;EACxL;CACF;CAEA,eAAe,oBAAoB,SAAwC;EACzE,IAAI,CAAC,QAAQ,QAAQ,CAAC,QAAQ,SAAS;GACrC,OAAO,MAAM,sHAAsH,EAAE,WAAW,QAAQ,GAAG,CAAC;GAC5J;EACF;EACA,IAAI;GACF,MAAM,QAAQ,KAAK;GACnB,MAAM,QAAQ,QAAQ;GACtB,OAAO,KAAK,uFAAuF,EAAE,WAAW,QAAQ,GAAG,CAAC;EAC9H,SACO,KAAK;GACV,OAAO,MAAM,0FAA0F;IAAE,WAAW,QAAQ;IAAI,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;GAAE,CAAC;EAC3L;CACF;CAEA,eAAe,6BAA6B,SAAwC;EAClF,IAAI,QAAQ,UAAU,aAAa,QAAQ,UAAU,YACnD;EACF,IAAI,CAAC,QAAQ,OAAO;GAClB,OAAO,MAAM,mHAAmH;IAAE,WAAW,QAAQ;IAAI,OAAO,QAAQ;GAAM,CAAC;GAC/K;EACF;EACA,OAAO,KAAK,0DAA0D;GAAE,WAAW,QAAQ;GAAI,OAAO,QAAQ;EAAM,CAAC;EACrH,MAAM,QAAQ,MAAM,0BAA0B,IAAI,0BAA0B,KAAA,CAAS;CACvF;CAEA,OAAO;EACL,MAAM;EAEN,MAAM,MAAM,SAAsB,CAAC,GAAyC;GAC1E,MAAM,UAAU,MAAM,QAAQ;GAC9B,MAAM,KAA8B,OAAO,WAAW,CAAC;GAEvD,MAAM,SAAS,WAAW,GAAG,MAAM,KAAK,QAAQ;GAChD,MAAM,SAAS,WAAW,GAAG,MAAM,KAAK,QAAQ;GAChD,MAAM,SAAS,WAAW,GAAG,MAAM,KAAK,QAAQ;GAChD,MAAM,YAAY,WAAW,GAAG,SAAS,KAAK,QAAQ;GACtD,MAAM,UAAU,kBAAkB,QAAQ,KAAK,OAAO,GAAG;GAEzD,MAAM,UAAU,IAAI,QAAQ,eAAe,QAAQ,QAAQ,MAAM,CAAC;GAClE,MAAM,WAAW,cAAc,KAAA;GAK/B,MAAM,QAAQ,CAAC,YAAY,QAAQ,gBAAgB;GACnD,MAAM,UAAU,WACZ,MAAM,QAAQ,IAAI,SAAS,IAC3B,MAAM,QAAQ,OAAO,2BAA2B,IAAI,SAAS,OAAO,CAAC;GAEzE,IAAI,UACF,MAAM,6BAA6B,OAAO;GAE5C,KAAK,IAAI,QAAQ,IAAI;IAAE;IAAS,KAAK;IAAS;GAAM,CAAC;GAErD,IAAI;IACF,MAAM,oBAAoB,SAAS,QAAQ;KACzC,gBAAgB;KAGhB,GAAI,CAAC,WAAW,EAAE,wBAAwB,mBAAmB,OAAO,EAAE,IAAI,CAAC;IAC7E,CAAC;GACH,SACO,KAAK;IACV,KAAK,OAAO,QAAQ,EAAE;IACtB,MAAM;GACR;GAEA,MAAM,eAAe,OAAO,OAAO,QAAQ;GAC3C,IAAI;GACJ,IAAI,cAAc;IAChB,MAAM;IACN,MAAM,QAAQ,QAAQ,eAAe,YAAY,KAAK,UAAU,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;GACxF,OACK,IAAI,QAAQ,YAAY;IAC3B,MAAM,MAAM,QAAQ,WAAW,CAAC,CAAC,YAAY,EAAE;IAC/C,IAAI,CAAC,KACH,MAAM,MAAM,QAAQ,QAAQ,eAAe,KAAK,CAAC,CAAC,MAAK,MAAK,2BAA2B,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK;GAChI,OAEE,MAAM,MAAM,QAAQ,QAAQ,eAAe,KAAK,CAAC,CAAC,MAAK,MAAK,2BAA2B,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK;GAG9H,IAAI,QAAQ,SACV,IAAI;IACF,MAAM,kBAAkB,SAAS,QAAQ;KAAE,MAAM,QAAQ,QAAQ;KAAM,SAAS,QAAQ,QAAQ;KAAS;KAAK;IAAQ,CAAC;GACzH,SACO,KAAK;IAGV,IAAI,CAAC,UACH,MAAM,mBAAmB,OAAO;IAClC,KAAK,OAAO,QAAQ,EAAE;IACtB,MAAM;GACR;GAGF,OAAO;IAAE,IAAI,QAAQ;IAAI;GAAI;EAC/B;EAEA,MAAM,KAAK,WAAW,SAAS,MAA2B;GACxD,MAAM,EAAE,SAAS,QAAQ,IAAI,SAAS;GACtC,MAAM,iBAAiB,MAAM,WAAW;GACxC,IAAI;IAIF,OAAO,cAAc,2BACnB,MAAM,QAAQ,QAAQ,eACpB,SACA,MAAM,KACN,kBAAkB,KAAK,MAAM,GAAG,GAChC,iBAAiB,IAAI,iBAAiB,KAAA,CACxC,CACF,CAAC;GACH,SACO,KAAK;IACV,OAAO,cAAc,0BAA0B,GAAG,CAAC;GACrD;EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCA,MAAM,WAAW,WAAW,SAAS,MAA6B;GAChE,MAAM,EAAE,SAAS,QAAQ,IAAI,SAAS;GAEtC,IAAI,CAAC,QAAQ,QAAQ,WACnB,MAAM,IAAI,MACR,4HAEF;GAGF,MAAM,QAAQ,eAAe;GAE7B,MAAM,QAAQ,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE;GACpD,MAAM,aAAa,uBAAuB,MAAM;GAChD,MAAM,aAAa,uBAAuB,MAAM;GAIhD,MAAM,QAAQ,GAAG,WACf,OAAO,KAAK,UAAU,WAAW,IAAI,QAAQ,GAAG,GAChD,UACF;GAIA,MAAM,eAAe,WAAmB,UACtC,OAAO,KAAK,8CAA8C;IAAE;IAAW,QAAQ;IAAO,eAAe;GAAM,CAAC;GAC9G,MAAM,SAAS,IAAI,YAAY,YAAY,QAAQ,CAAC;GACpD,MAAM,SAAS,IAAI,YAAY,YAAY,QAAQ,CAAC;GAiBpD,MAAM,WAAW,KAAK,MAAM;GAC5B,IAAI,WAAW;GACf,IAAI,aAAa;GACjB,IAAI,iBAA6B,CAAC;GAClC,MAAM,YAAY,IAAI,SAAe,MAAM;IAAE,WAAW;GAAE,CAAC;GAE3D,MAAM,MAAM,MAAM,QAAQ,QAAQ,UAAU;IAC1C,IAAI,iBAAiB;IACrB,GAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;IACrC,MAAM,kBAAkB,KAAK,MAAM,GAAG,KAAK,CAAC;IAC5C,SAAS,SAAqB;KAC5B,IAAI,UAAU;MACZ,OAAO,KAAK,IAAI;MAChB;KACF;KACA,cAAc,OAAO,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM;KAC/C,MAAM,KAAK,WAAW,QAAQ,QAAQ;KACtC,IAAI,OAAO,IAAI;MAGb,IAAI,WAAW,SAAS,KAAK,MAC3B,aAAa,WAAW,MAAM,KAAK;MACrC;KACF;KACA,WAAW;KACX,SAAS;KAET,MAAM,OAAO,WAAW,MAAM,KAAK,SAAS,MAAM,CAAC,CAAC,QAAQ,UAAU,EAAE;KACxE,aAAa;KACb,IAAI,KAAK,SAAS,GAChB,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC;IAC9C;GACF,CAAC;GACD,MAAM,IAAI,kBAAkB;GAK5B,MAAM,IAAI,UAAU,0CAA0C,MAAM,YAAY,WAAW,GAAG;GAK9F,IAAI;GACJ,MAAM,QAAQ,KAAK,CACjB,WACA,IAAI,SAAe,MAAM;IAAE,YAAY,WAAW,GAAG,GAAM;GAAE,CAAC,CAChE,CAAC;GACD,aAAa,SAAS;GACtB,IAAI,CAAC,UAAU;IAMb,OAAO,IAAI,OAAO,KAAK,QAAQ,QAAQ,EAAA,CAAG,YAAY,CAAC,CAAC;IACxD,MAAM,IAAI,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,QAAQ,QAAQ,eAAe,SAAS,WAAW,GAAG,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;IACxF,MAAM,IAAI,MACR,gFACc,UAAU,yCAC1B;GACF;GAaA,IAAI,eAAe;GACnB,IAAI,WAAW;GACf,MAAM,UAAU,QAAQ,MAAM;GAC9B,MAAM,cAAc,YAA2B;IAC7C,IAAI;KACF,MAAM,MAAM,2BAA2B,MAAM,QAAQ,QAAQ,eAC3D,YAAY,eAAe,EAAE,GAAG,WAAW,wBAAwB,QAAQ,iBAAiB,WAAW,yBACzG,CAAC;KACD,MAAM,KAAK,IAAI,OAAO,YAAY,OAAO;KACzC,IAAI,OAAO,IACT;KACF,MAAM,UAAU,IAAI,OAAO,MAAM,GAAG,EAAE;KACtC,MAAM,OAAO,OAAO,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE;KAC7E,IAAI,QAAQ,SAAS,GACnB,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC;KAC/C,IAAI,OAAO,SAAS,IAAI,KAAK,OAAO,cAClC,eAAe;IACnB,QACM,CAGN;GACF;GACA,MAAM,cAAc,kBAAkB;IAAE,YAAiB;GAAE,GAAG,GAAI;GAEjE,YAAwC,QAAQ;GAMjD,MAAM,WAAW,YAA2B;IAC1C,IAAI,UACF;IACF,WAAW;IACX,cAAc,WAAW;IACzB,MAAM,YAAY;IAClB,MAAM,QAAQ,QAAQ,eAAe,SAAS,WAAW,GAAG,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;IACxF,OAAO,MAAM;IACb,OAAO,MAAM;GACf;GAEA,MAAM,SAAS,IAAI,KAAK,CAAC,CACtB,MAAK,WAAU,QAAQ,YAAY,CAAC,CAAC,CACrC,YAAY,GAAG,CAAC,CAChB,QAAQ,QAAQ;GAEnB,MAAM,OAAO,YAA2B;IAGtC,OAAO,IAAI,OAAO,KAAK,QAAQ,QAAQ,EAAA,CAAG,YAAY,CAAC,CAAC;IACxD,MAAM,IAAI,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,SAAS;GACjB;GAEA,IAAI,MAAM,QACR,IAAI,KAAK,OAAO,SACd,KAAU;QAEP;IAIH,MAAM,gBAAgB;KAAE,KAAU;IAAE;IACpC,MAAM,eAAe,KAAK,OAAQ,oBAAoB,SAAS,OAAO;IACtE,KAAK,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;IAC7D,OAAO,KAAK,QAAQ,MAAM;GAC5B;GAGF,OAAO;IACL,KAAK,IAAI,OAAO;IAChB;IACA;IACA,OAAO,OAAO,SAAoC;KAChD,MAAM,IAAI,UAAU,IAAI;IAC1B;IACA;IACA;GACF;EACF;EAEA,MAAM,SAAS,WAAW,MAAuB;GAC/C,OAAO,eAAe,MAAM,IAAI,SAAS,CAAC,CAAC,QAAQ,GAAG,aAAa,IAAI,CAAC;EAC1E;EAEA,MAAM,UAAU,WAAW,MAAM,SAAwB;GACvD,MAAM,IAAI,SAAS,CAAC,CAAC,QAAQ,GAAG,WAAW,OAAO,KAAK,OAAO,GAAG,IAAI;EACvE;EAEA,MAAM,UAAU,WAAW,MAAyB;GAGlD,QAAO,MAFe,IAAI,SAAS,CAAC,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAA,CAE/C,KAAI,MAAM,EAAE,QAAQ,GAAG,EAAE,KAAK,KAAK,EAAE,IAAK;EAC3D;EAEA,MAAM,QAAQ,WAA0B;GACtC,MAAM,QAAQ,KAAK,IAAI,SAAS;GAChC,IAAI,CAAC,OACH;GACF,IAAI,MAAM,OAAO;IACf,MAAM,SAAS,QAAQ,aAAa;IACpC,IAAI,WAAW,UAAU,WAAW,SAClC,MAAM,iBAAiB,MAAM,OAAO;SACjC,IAAI,WAAW,WAClB,MAAM,oBAAoB,MAAM,OAAO;SACpC,IAAI,WAAW,YAAY,WAAW,QACzC,MAAM,mBAAmB,MAAM,OAAO;GAC1C;GACA,KAAK,OAAO,SAAS;EACvB;CACF;AACF"}
1
+ {"version":3,"file":"daytona.js","names":[],"sources":["../../src/contexts/daytona.ts"],"sourcesContent":["/**\n * Daytona sandbox provider.\n *\n * Implements {@link SandboxProvider} on top of Daytona sandboxes. Pair it with\n * {@link createSandboxContext} to run an agent's shell + filesystem tools\n * inside a Daytona sandbox:\n *\n * ```ts\n * import { createSandboxContext } from 'zidane/contexts'\n * import { createDaytonaProvider } from 'zidane/contexts/daytona'\n *\n * const execution = createSandboxContext(createDaytonaProvider())\n * ```\n *\n * Requires `@daytona/sdk` as an optional peer dependency:\n * `bun add @daytona/sdk`.\n */\n\nimport type { Logger } from '../logger'\nimport type { SandboxProvider } from './sandbox'\nimport type { ExecResult, SpawnConfig, StreamHandle } from './types'\nimport { Buffer } from 'node:buffer'\nimport { errorMessage } from '../errors'\nimport { consoleSink, createLogger } from '../logger'\nimport { capBufferedExecOutput } from './output-cap'\nimport { StreamQueue } from './stream-queue'\n\n// ---------------------------------------------------------------------------\n// Minimal structural views of the `@daytona/sdk` surface we touch. Declared\n// locally so zidane typechecks without the optional peer dependency installed.\n// ---------------------------------------------------------------------------\n\ninterface DaytonaExecuteResponse {\n exitCode?: number | null\n result?: string | null\n output?: string | null\n stdout?: string | null\n stderr?: string | null\n artifacts?: { stdout?: string | null }\n}\n\ninterface DaytonaFileEntry {\n name: string\n /** Present in the Daytona SDK's FileInfo; used for the `/` dir suffix. */\n isDir?: boolean\n}\n\n/**\n * Structural subset of Daytona's `PtyHandle`.\n *\n * Daytona's process/session API has NO stdin channel at all — sessions are\n * fire-and-forget with log streaming — so a PTY is the only way to reach a\n * long-lived process interactively. See the `execStream` implementation for\n * what that costs.\n */\ninterface DaytonaPtyHandle {\n pid?: number\n waitForConnection: () => Promise<unknown>\n sendInput: (data: string | Uint8Array) => Promise<unknown>\n wait: () => Promise<{ exitCode?: number }>\n kill?: () => Promise<unknown>\n disconnect: () => Promise<unknown>\n}\n\ninterface DaytonaSandbox {\n id: string\n state?: string\n process: {\n executeCommand: (command: string, cwd?: string, env?: Record<string, string>, timeout?: number) => Promise<DaytonaExecuteResponse>\n /** Present in recent SDKs; only `execStream` uses it. */\n createPty?: (options: {\n /**\n * REQUIRED by the API despite reading like a convenience handle: the\n * SDK forwards it as the session id and the control plane rejects the\n * create with 400 `session ID is required` when it is absent.\n */\n id: string\n cwd?: string\n envs?: Record<string, string>\n onData?: (data: Uint8Array) => void\n }) => Promise<DaytonaPtyHandle>\n }\n fs: {\n downloadFile: (path: string) => Promise<Uint8Array | ArrayBuffer | { toString: (encoding?: BufferEncoding) => string }>\n uploadFile: (content: Uint8Array | Buffer, path: string) => Promise<unknown>\n listFiles: (path: string) => Promise<DaytonaFileEntry[]>\n }\n getWorkDir?: () => Promise<string>\n start?: (timeout?: number) => Promise<unknown>\n delete: (timeout?: number) => Promise<unknown>\n stop?: (timeout?: number) => Promise<unknown>\n archive?: () => Promise<unknown>\n}\n\ninterface DaytonaClientConfig {\n apiKey?: string\n apiUrl?: string\n target?: string\n}\n\ninterface DaytonaResources {\n cpu?: number\n memory?: number\n disk?: number\n gpu?: number\n [key: string]: unknown\n}\n\ninterface DaytonaCreateParams {\n language?: string\n snapshot?: string\n image?: unknown\n resources?: DaytonaResources\n envVars?: Record<string, string>\n [key: string]: unknown\n}\n\ninterface DaytonaClient {\n create: (params?: DaytonaCreateParams) => Promise<DaytonaSandbox>\n get: (sandboxIdOrName: string) => Promise<DaytonaSandbox>\n}\n\ntype DaytonaConstructor = new (config?: DaytonaClientConfig) => DaytonaClient\n\n// ---------------------------------------------------------------------------\n// Provider options\n// ---------------------------------------------------------------------------\n\nexport type DaytonaOnDestroy = 'delete' | 'kill' | 'stop' | 'pause' | 'archive' | 'leave'\n\nexport interface DaytonaProviderOptions {\n /** Daytona API key. Falls back to the `DAYTONA_API_KEY` env var when omitted. */\n apiKey?: string\n /** Daytona API URL. Falls back to `DAYTONA_API_URL`, then Daytona's hosted default. */\n apiUrl?: string\n /** Daytona target / region. Falls back to `DAYTONA_TARGET`, then the org default. */\n target?: string\n /**\n * Attach to a pre-existing sandbox by id or name instead of creating a fresh\n * one. By default the provider treats attached sandboxes as externally owned\n * and leaves them running on destroy/failure (set {@link ownAttached} to take\n * over the lifecycle).\n */\n sandboxId?: string\n /**\n * Take ownership of an attached ({@link sandboxId}) sandbox's lifecycle, so\n * `destroy()` applies {@link onDestroy} to it (stop / archive / delete)\n * instead of leaving it running.\n *\n * The intended caller is a durable host that *owns* the sandbox across\n * invocations: mint it once, journal its id, re-attach via `sandboxId` on\n * every replay/resume, and clean it up at the end of the logical run. Without\n * this an attached sandbox can never be stopped/deleted through the provider —\n * a leak for host-owned sandboxes. No effect when creating a fresh sandbox\n * (those are always owned). Spawn-time failures (readiness timeout, pregame\n * error) still never delete a pre-existing attached sandbox — only sandboxes\n * this provider *created* are auto-cleaned on spawn failure.\n *\n * Default: `false`.\n */\n ownAttached?: boolean\n /** Daytona snapshot used when creating a fresh sandbox. */\n snapshot?: string\n /** Runtime used for Daytona's code tooling. Shell execution works either way. */\n language?: string\n /** Daytona image/declarative builder input used when creating a fresh sandbox. */\n image?: unknown\n /** Daytona sandbox resources. */\n resources?: DaytonaResources\n /** Default working directory, applied when a spawn doesn't set `SpawnConfig.cwd`. */\n cwd?: string\n /** Environment variables baked into the sandbox and re-sent on every command. */\n env?: Record<string, string>\n /** Logger for provider-level lifecycle lines. */\n logger?: Logger\n /** Total deadline, in seconds, for the post-create readiness probe. Defaults to `60`. */\n readinessTimeoutSeconds?: number\n /** Setup script to upload and run once the sandbox is ready. */\n pregame?: { name: string, content: string }\n /**\n * What to do with an owned sandbox on destroy:\n *\n * - `'delete'` / `'kill'` (default) — call `sandbox.delete()`.\n * - `'stop'` / `'pause'` — call `sandbox.stop()` so Daytona preserves state\n * according to the runner's stop semantics.\n * - `'archive'` — stop, then archive for longer-term persistence.\n * - `'leave'` — make no API call.\n */\n onDestroy?: DaytonaOnDestroy\n}\n\n/** Per-probe timeout for the readiness `true` command. */\nconst READINESS_PROBE_TIMEOUT_SECONDS = 5\n/** Pause between readiness probes while the sandbox is still warming up. */\nconst READINESS_BACKOFF_MS = 250\n/** Setup scripts commonly install dependencies, so give them a generous cap. */\nconst PREGAME_TIMEOUT_SECONDS = 30 * 60\n\nexport interface DaytonaReadinessOptions {\n /** Total deadline in seconds. `<= 0` disables the probe entirely. */\n timeoutSeconds: number\n /** Optional cleanup for owned sandboxes that never become ready. */\n cleanupOnTimeout?: () => Promise<void>\n /** Clock source — injectable for deterministic tests. */\n now?: () => number\n /** Sleep between probes — injectable for deterministic tests. */\n sleep?: (ms: number) => Promise<void>\n}\n\nexport function resolveDaytonaEnv(\n optionEnv: Record<string, string> | undefined,\n perSpawnEnv: Record<string, string> | undefined,\n): Record<string, string> | undefined {\n const merged = { ...optionEnv, ...perSpawnEnv }\n return Object.keys(merged).length > 0 ? merged : undefined\n}\n\nexport function normalizeDaytonaExecResult(response: DaytonaExecuteResponse): ExecResult {\n return {\n stdout: response.stdout ?? response.artifacts?.stdout ?? response.result ?? response.output ?? '',\n stderr: response.stderr ?? '',\n exitCode: typeof response.exitCode === 'number' ? response.exitCode : 0,\n }\n}\n\nfunction capExecResult(result: ExecResult): ExecResult {\n return { ...capBufferedExecOutput(result.stdout, result.stderr), exitCode: result.exitCode }\n}\n\nfunction normalizeDaytonaExecError(error: unknown): ExecResult {\n const err = error as { exitCode?: unknown, stdout?: unknown, stderr?: unknown, result?: unknown, output?: unknown, message?: unknown }\n if (typeof err.exitCode === 'number') {\n return {\n stdout: typeof err.stdout === 'string'\n ? err.stdout\n : typeof err.result === 'string'\n ? err.result\n : typeof err.output === 'string'\n ? err.output\n : '',\n stderr: typeof err.stderr === 'string' ? err.stderr : typeof err.message === 'string' ? err.message : '',\n exitCode: err.exitCode,\n }\n }\n return { stdout: '', stderr: error instanceof Error ? error.message : String(error), exitCode: 124 }\n}\n\nfunction bufferToString(value: Uint8Array | ArrayBuffer | { toString: (encoding?: BufferEncoding) => string }): string {\n if (Buffer.isBuffer(value))\n return value.toString('utf8')\n if (value instanceof ArrayBuffer)\n return new TextDecoder().decode(new Uint8Array(value))\n if (value instanceof Uint8Array)\n return new TextDecoder().decode(value)\n return value.toString('utf8')\n}\n\nfunction toClientConfig(apiKey?: string, apiUrl?: string, target?: string): DaytonaClientConfig | undefined {\n const config: DaytonaClientConfig = {}\n if (apiKey !== undefined)\n config.apiKey = apiKey\n if (apiUrl !== undefined)\n config.apiUrl = apiUrl\n if (target !== undefined)\n config.target = target\n return Object.keys(config).length > 0 ? config : undefined\n}\n\nfunction takeString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nexport function resolveDaytonaCreateParams(\n sandboxConfig: Record<string, unknown>,\n options: DaytonaProviderOptions,\n envVars: Record<string, string> | undefined,\n): DaytonaCreateParams | undefined {\n const reserved = new Set(['provider', 'apiKey', 'apiUrl', 'target', 'sandboxId'])\n const params: DaytonaCreateParams = {}\n\n for (const [key, value] of Object.entries(sandboxConfig)) {\n if (!reserved.has(key) && value !== undefined)\n params[key] = value\n }\n\n const language = takeString(sandboxConfig.language) ?? options.language\n const snapshot = takeString(sandboxConfig.snapshot) ?? options.snapshot\n const image = sandboxConfig.image ?? options.image\n const resources = (sandboxConfig.resources as DaytonaResources | undefined) ?? options.resources\n const configEnvVars = sandboxConfig.envVars as Record<string, string> | undefined\n const mergedEnvVars = resolveDaytonaEnv(envVars, configEnvVars)\n\n if (language !== undefined)\n params.language = language\n if (snapshot !== undefined)\n params.snapshot = snapshot\n if (image !== undefined)\n params.image = image\n if (resources !== undefined)\n params.resources = resources\n if (mergedEnvVars !== undefined)\n params.envVars = mergedEnvVars\n\n return Object.keys(params).length > 0 ? params : undefined\n}\n\nexport async function waitForDaytonaReady(\n sandbox: DaytonaSandbox,\n logger: Logger,\n opts: DaytonaReadinessOptions,\n): Promise<void> {\n if (opts.timeoutSeconds <= 0)\n return\n\n const now = opts.now ?? Date.now\n const sleep = opts.sleep ?? (ms => new Promise<void>(resolve => setTimeout(resolve, ms)))\n const start = now()\n const deadline = start + opts.timeoutSeconds * 1000\n\n logger.info('waiting for Daytona sandbox to initialize', { sandboxId: sandbox.id })\n\n while (true) {\n try {\n await sandbox.process.executeCommand('true', undefined, undefined, READINESS_PROBE_TIMEOUT_SECONDS)\n logger.info('Daytona sandbox ready', { sandboxId: sandbox.id, elapsedMs: now() - start })\n return\n }\n catch {\n if (now() >= deadline) {\n await opts.cleanupOnTimeout?.().catch(() => {})\n throw new Error(`Daytona sandbox ${sandbox.id} did not become ready within ${opts.timeoutSeconds}s`)\n }\n await sleep(READINESS_BACKOFF_MS)\n }\n }\n}\n\nexport async function runDaytonaPregame(\n sandbox: DaytonaSandbox,\n logger: Logger,\n opts: { name: string, content: string, cwd?: string, envVars?: Record<string, string> },\n): Promise<void> {\n const path = `/tmp/${opts.name}`\n logger.info('running Daytona pregame script', { sandboxId: sandbox.id, path })\n await sandbox.fs.uploadFile(Buffer.from(opts.content), path)\n\n const quoted = JSON.stringify(path)\n let result: ExecResult\n try {\n result = normalizeDaytonaExecResult(\n await sandbox.process.executeCommand(`chmod +x ${quoted} && ${quoted}`, opts.cwd, opts.envVars, PREGAME_TIMEOUT_SECONDS),\n )\n }\n catch (err) {\n result = normalizeDaytonaExecError(err)\n }\n\n if (result.exitCode !== 0) {\n logger.error('Daytona pregame script failed', { sandboxId: sandbox.id, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr })\n throw new Error(`Daytona pregame script ${opts.name} failed with exit code ${result.exitCode}`)\n }\n\n logger.info('Daytona pregame ready', { sandboxId: sandbox.id, stdout: result.stdout, stderr: result.stderr })\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function createDaytonaProvider(options: DaytonaProviderOptions = {}): SandboxProvider {\n const live = new Map<string, { sandbox: DaytonaSandbox, env?: Record<string, string>, owned: boolean }>()\n const logger = options.logger ?? createLogger(consoleSink())\n const readinessTimeoutSeconds = options.readinessTimeoutSeconds ?? 60\n\n async function loadSdk(): Promise<DaytonaConstructor> {\n try {\n const mod = await import('@daytona/sdk') as { Daytona: DaytonaConstructor }\n return mod.Daytona\n }\n catch (err) {\n // Distinguish \"not installed\" from \"installed but failed to load\". This\n // used to be a bare `catch` that reported the install hint either way,\n // which sent people to `bun add` a package that was already present. The\n // realistic load failure is a `tslib` hoist: `@daytona/sdk` declares no\n // tslib dependency of its own and reaches AWS SDK v3 through\n // `@aws-sdk/client-s3`, so a stale `@aws-crypto` v3/v4 floor\n // (`tslib: ^1.11.1`) can win the hoist and the SDK's initializer helpers\n // resolve against tslib 1.x, which lacks them. Fix with a root\n // `overrides: { \"tslib\": \"^2.8.1\" }` — see `docs/RESTATE.md`.\n const message = errorMessage(err)\n const notInstalled = /cannot find (?:module|package)|module not found|failed to resolve/i.test(message)\n throw new Error(\n notInstalled\n ? '@daytona/sdk is required for the Daytona sandbox provider. Install it with: bun add @daytona/sdk'\n : `@daytona/sdk is installed but failed to load: ${message}. If this mentions tslib, pin it with a root override: \"overrides\": { \"tslib\": \"^2.8.1\" } — see docs/RESTATE.md.`,\n { cause: err },\n )\n }\n }\n\n function get(sandboxId: string): { sandbox: DaytonaSandbox, env?: Record<string, string>, owned: boolean } {\n const entry = live.get(sandboxId)\n if (!entry)\n throw new Error(`Daytona sandbox ${sandboxId} is not tracked by this provider`)\n return entry\n }\n\n async function deleteOwnedSandbox(sandbox: DaytonaSandbox): Promise<void> {\n try {\n await sandbox.delete()\n }\n catch {\n // Already gone — nothing to clean up.\n }\n }\n\n async function stopOwnedSandbox(sandbox: DaytonaSandbox): Promise<void> {\n if (!sandbox.stop) {\n logger.error('cannot stop Daytona sandbox: this @daytona/sdk install exposes no stop() method; leaving it running', { sandboxId: sandbox.id })\n return\n }\n try {\n await sandbox.stop()\n logger.info('stopped Daytona sandbox; reconnect later via the sandboxId option (CLI: --sandbox)', { sandboxId: sandbox.id })\n }\n catch (err) {\n logger.error('failed to stop Daytona sandbox; it will run until Daytona lifecycle policy stops it', { sandboxId: sandbox.id, error: err instanceof Error ? err.message : String(err) })\n }\n }\n\n async function archiveOwnedSandbox(sandbox: DaytonaSandbox): Promise<void> {\n if (!sandbox.stop || !sandbox.archive) {\n logger.error('cannot archive Daytona sandbox: this @daytona/sdk install exposes no stop() and archive() pair; leaving it running', { sandboxId: sandbox.id })\n return\n }\n try {\n await sandbox.stop()\n await sandbox.archive()\n logger.info('archived Daytona sandbox; reconnect later via the sandboxId option (CLI: --sandbox)', { sandboxId: sandbox.id })\n }\n catch (err) {\n logger.error('failed to archive Daytona sandbox; it will run until Daytona lifecycle policy stops it', { sandboxId: sandbox.id, error: err instanceof Error ? err.message : String(err) })\n }\n }\n\n async function startAttachedSandboxIfNeeded(sandbox: DaytonaSandbox): Promise<void> {\n if (sandbox.state !== 'stopped' && sandbox.state !== 'archived')\n return\n if (!sandbox.start) {\n logger.error('cannot start Daytona sandbox before attach readiness probe: this @daytona/sdk install exposes no start() method', { sandboxId: sandbox.id, state: sandbox.state })\n return\n }\n logger.info('starting Daytona sandbox before attach readiness probe', { sandboxId: sandbox.id, state: sandbox.state })\n await sandbox.start(readinessTimeoutSeconds > 0 ? readinessTimeoutSeconds : undefined)\n }\n\n return {\n name: 'daytona',\n\n async spawn(config: SpawnConfig = {}): Promise<{ id: string, cwd: string }> {\n const Daytona = await loadSdk()\n const sb: Record<string, unknown> = config.sandbox ?? {}\n\n const apiKey = takeString(sb.apiKey) ?? options.apiKey\n const apiUrl = takeString(sb.apiUrl) ?? options.apiUrl\n const target = takeString(sb.target) ?? options.target\n const connectId = takeString(sb.sandboxId) ?? options.sandboxId\n const envVars = resolveDaytonaEnv(options.env, config.env)\n\n const daytona = new Daytona(toClientConfig(apiKey, apiUrl, target))\n const attached = connectId !== undefined\n // Lifecycle ownership drives `destroy()` (onDestroy). A created sandbox is\n // always owned; an attached one is owned only when the host opts in via\n // `ownAttached`. Spawn-FAILURE cleanup is separate (see below) and keyed\n // on `!attached` so a pre-existing sandbox is never auto-deleted.\n const owned = !attached || options.ownAttached === true\n const sandbox = attached\n ? await daytona.get(connectId)\n : await daytona.create(resolveDaytonaCreateParams(sb, options, envVars))\n\n if (attached)\n await startAttachedSandboxIfNeeded(sandbox)\n\n live.set(sandbox.id, { sandbox, env: envVars, owned })\n\n try {\n await waitForDaytonaReady(sandbox, logger, {\n timeoutSeconds: readinessTimeoutSeconds,\n // Only auto-delete a sandbox we CREATED on readiness failure — never a\n // pre-existing attached one, even when we own its lifecycle.\n ...(!attached ? { cleanupOnTimeout: () => deleteOwnedSandbox(sandbox) } : {}),\n })\n }\n catch (err) {\n live.delete(sandbox.id)\n throw err\n }\n\n const requestedCwd = config.cwd ?? options.cwd\n let cwd: string\n if (requestedCwd) {\n cwd = requestedCwd\n await sandbox.process.executeCommand(`mkdir -p ${JSON.stringify(cwd)}`).catch(() => {})\n }\n else if (sandbox.getWorkDir) {\n cwd = await sandbox.getWorkDir().catch(() => '')\n if (!cwd)\n cwd = await sandbox.process.executeCommand('pwd').then(r => normalizeDaytonaExecResult(r).stdout.trim()).catch(() => '') || '/home/daytona'\n }\n else {\n cwd = await sandbox.process.executeCommand('pwd').then(r => normalizeDaytonaExecResult(r).stdout.trim()).catch(() => '') || '/home/daytona'\n }\n\n if (options.pregame) {\n try {\n await runDaytonaPregame(sandbox, logger, { name: options.pregame.name, content: options.pregame.content, cwd, envVars })\n }\n catch (err) {\n // Spawn-failure cleanup: only delete a sandbox we created, never a\n // pre-existing attached one (the host owns its prior state).\n if (!attached)\n await deleteOwnedSandbox(sandbox)\n live.delete(sandbox.id)\n throw err\n }\n }\n\n return { id: sandbox.id, cwd }\n },\n\n async exec(sandboxId, command, opts): Promise<ExecResult> {\n const { sandbox, env } = get(sandboxId)\n const timeoutSeconds = opts?.timeout ?? 30\n try {\n // The SDK buffers the streams uncapped (see the KNOWN RESIDUAL note\n // on `ExecutionContext.fileSize`) — cap host-side before the strings\n // propagate into tool results and session history.\n return capExecResult(normalizeDaytonaExecResult(\n await sandbox.process.executeCommand(\n command,\n opts?.cwd,\n resolveDaytonaEnv(env, opts?.env),\n timeoutSeconds > 0 ? timeoutSeconds : undefined,\n ),\n ))\n }\n catch (err) {\n return capExecResult(normalizeDaytonaExecError(err))\n }\n },\n\n /**\n * Live bidirectional stream — see `ExecutionContext.execStream`.\n *\n * PTY-backed, and not by preference: Daytona's process + session API\n * exposes no stdin at all (sessions are fire-and-forget with log\n * streaming), so a pseudo-terminal is the only interactive channel the\n * platform offers. That forces three mitigations, all in the launch\n * wrapper below, because a PTY is a terminal and a protocol stream is\n * not:\n *\n * 1. `stty -echo` — a terminal echoes everything written to stdin back\n * onto stdout. Without this the caller reads its own requests back\n * as if they were responses.\n * 2. `stty raw` — canonical mode rewrites `\\n`→`\\r\\n` and caps a line\n * at ~4096 bytes. Protocol frames routinely exceed that and would\n * be silently truncated mid-message.\n * 3. `2><file>` — a PTY has ONE stream, so the child's stderr would\n * otherwise interleave into the protocol data and corrupt framing.\n * It is redirected to a file inside the sandbox and surfaced on the\n * returned handle by polling that file through the exec API.\n *\n * The mitigations must run before the child's first byte — but the\n * launch line ITSELF is typed into a canonical-mode terminal, so it is\n * echoed once (a short non-JSON line the transport's tolerant framing\n * discards) and subject to the ~4096-byte line cap. That is why the\n * real command lives in an uploaded script and the typed line stays\n * short and constant: a long command line would be truncated before\n * `stty` ever ran. The script also restores `sh` compound-command\n * semantics that a bare `exec <command>` would break.\n */\n async execStream(sandboxId, command, opts): Promise<StreamHandle> {\n const { sandbox, env } = get(sandboxId)\n\n if (!sandbox.process.createPty) {\n throw new Error(\n 'Daytona SDK is too old: `process.createPty` is required for execStream '\n + '(used to run stdio MCP servers inside the sandbox).',\n )\n }\n\n opts?.signal?.throwIfAborted()\n\n const token = Math.random().toString(36).slice(2, 10)\n const stderrPath = `/tmp/.zidane-stream-${token}.err`\n const scriptPath = `/tmp/.zidane-stream-${token}.sh`\n\n // `exec 2>` rebinds the shell's stderr before the command runs, so\n // the command text needs no rewriting and stays compound-safe.\n await sandbox.fs.uploadFile(\n Buffer.from(`exec 2>${stderrPath}\\n${command}\\n`),\n scriptPath,\n )\n\n // See the E2B counterpart: the PTY's `onData` is a sync `void`\n // callback, so a stalled consumer can only be reported, never slowed.\n const warnBacklog = (which: string) => (bytes: number) =>\n logger.warn('execStream consumer is not draining output', { sandboxId, stream: which, bufferedBytes: bytes })\n const stdout = new StreamQueue(warnBacklog('stdout'))\n const stderr = new StreamQueue(warnBacklog('stderr'))\n\n // Everything the shell emits before the child is actually running is\n // NOISE that must never reach the caller: the echo of our own launch\n // line (typed before `-echo` takes effect), the login shell's prompt,\n // and its line-editor redraw escapes. `createPty` is `lazyStart`, so\n // the shell frequently does not exist yet when we type — it boots\n // afterwards and REPLAYS the buffered input through its line editor.\n // Observed on a stock sandbox: the stream opened with the echoed\n // launch line, the echoed first request, `\\u001b[?2004h` bracketed\n // paste, and a `%` prompt. An MCP client parses that echoed request\n // as a message and the handshake collapses.\n //\n // So: gate the stream on a sentinel the CHILD side prints, and drop\n // every byte before it. The sentinel is assembled by `printf` at\n // runtime (`Z-%s-READY` + token) so the echoed *source* line, which\n // contains the format string rather than the result, cannot match it.\n const sentinel = `Z-${token}-READY`\n let gateOpen = false\n let gateBuffer = ''\n let openGate: () => void = () => {}\n const gateReady = new Promise<void>((r) => { openGate = r })\n\n const pty = await sandbox.process.createPty({\n id: `zidane-stream-${token}`,\n ...(opts?.cwd ? { cwd: opts.cwd } : {}),\n envs: resolveDaytonaEnv(env, opts?.env) ?? {},\n onData: (data: Uint8Array) => {\n if (gateOpen) {\n stdout.push(data)\n return\n }\n gateBuffer += Buffer.from(data).toString('utf8')\n const at = gateBuffer.indexOf(sentinel)\n if (at === -1) {\n // Bounded: never let pre-gate noise grow without limit, but keep\n // a tail longer than the sentinel so it can't be split away.\n if (gateBuffer.length > 64 * 1024)\n gateBuffer = gateBuffer.slice(-1024)\n return\n }\n gateOpen = true\n openGate()\n // Everything after the sentinel's trailing newline is real output.\n const rest = gateBuffer.slice(at + sentinel.length).replace(/^\\r?\\n/, '')\n gateBuffer = ''\n if (rest.length > 0)\n stdout.push(new TextEncoder().encode(rest))\n },\n })\n await pty.waitForConnection()\n\n // Short, constant, and under any canonical line cap. `exec` replaces\n // the login shell so the PTY's lifetime is the script's lifetime and\n // no shell prompt can reach stdout.\n await pty.sendInput(`stty raw -echo; printf 'Z-%s-READY\\\\n' ${token}; exec sh ${scriptPath}\\n`)\n\n // Block until the child is genuinely live. Without this the caller can\n // write its first frame into a shell that hasn't started, where it is\n // echoed back and misread as a response.\n let gateTimer: ReturnType<typeof setTimeout> | undefined\n await Promise.race([\n gateReady,\n new Promise<void>((r) => { gateTimer = setTimeout(r, 30_000) }),\n ])\n clearTimeout(gateTimer)\n if (!gateOpen) {\n // Full teardown, not just a disconnect: Daytona PTY sessions persist\n // server-side after the websocket drops, so a bare disconnect leaks\n // one login shell plus two /tmp files per attempt — a bootstrap\n // retry loop against a broken image would stack them until the\n // sandbox dies.\n await (pty.kill?.() ?? Promise.resolve()).catch(() => {})\n await pty.disconnect().catch(() => {})\n await sandbox.process.executeCommand(`rm -f ${scriptPath} ${stderrPath}`).catch(() => {})\n throw new Error(\n `Daytona execStream: PTY did not reach the ready sentinel within 30s `\n + `(sandbox ${sandboxId}). The login shell may not have started.`,\n )\n }\n\n // stderr file → handle.stderr. Poll rather than stream: the exec API\n // is the only other channel into the sandbox, and diagnostics don't\n // need latency. Byte offsets keep re-reads incremental.\n //\n // The offset comes from the FILE (`wc -c`), never from measuring the\n // returned content: an exec API that trims a trailing newline from\n // command output would make a content-derived offset under-advance by\n // one byte per poll, re-emitting the tail byte forever. The size rides\n // back on the same round trip as a `ZEOF-<token>:` suffix; content is\n // whatever precedes it, so content-side transforms can't drift the\n // cursor either.\n let stderrOffset = 0\n let torndown = false\n const eofMark = `ZEOF-${token}:`\n const drainStderr = async (): Promise<void> => {\n try {\n const res = normalizeDaytonaExecResult(await sandbox.process.executeCommand(\n `tail -c +${stderrOffset + 1} ${stderrPath} 2>/dev/null; printf '${eofMark}%s' \"$(wc -c < ${stderrPath} 2>/dev/null || echo 0)\"`,\n ))\n const at = res.stdout.lastIndexOf(eofMark)\n if (at === -1)\n return\n const content = res.stdout.slice(0, at)\n const size = Number.parseInt(res.stdout.slice(at + eofMark.length).trim(), 10)\n if (content.length > 0)\n stderr.push(new TextEncoder().encode(content))\n if (Number.isFinite(size) && size > stderrOffset)\n stderrOffset = size\n }\n catch {\n // Diagnostic channel — polling failures must never surface as\n // protocol errors.\n }\n }\n const stderrTimer = setInterval(() => { void drainStderr() }, 2000)\n // Guarded: Bun/Node timers support unref, test fakes may not.\n ;(stderrTimer as { unref?: () => void }).unref?.()\n\n // Shared teardown for both exit paths (natural exit and kill): one\n // final stderr drain so a crash message isn't lost, then remove the\n // script + stderr files that would otherwise accumulate in /tmp for\n // the sandbox's lifetime.\n const teardown = async (): Promise<void> => {\n if (torndown)\n return\n torndown = true\n clearInterval(stderrTimer)\n await drainStderr()\n await sandbox.process.executeCommand(`rm -f ${scriptPath} ${stderrPath}`).catch(() => {})\n stdout.close()\n stderr.close()\n }\n\n const exited = pty.wait()\n .then(result => result?.exitCode ?? 0)\n .catch(() => 137)\n .finally(teardown)\n\n const kill = async (): Promise<void> => {\n // A PTY login shell never exits on its own — killing it IS the\n // normal termination path here, not an error path.\n await (pty.kill?.() ?? Promise.resolve()).catch(() => {})\n await pty.disconnect().catch(() => {})\n await teardown()\n }\n\n if (opts?.signal) {\n if (opts.signal.aborted) {\n void kill()\n }\n else {\n // Detach on exit — the (typically run-long) signal otherwise\n // retains the `kill` closure and the PTY handle for the rest of\n // the run, one dead closure per exec.\n const onAbort = () => { void kill() }\n const detach = () => opts.signal!.removeEventListener('abort', onAbort)\n opts.signal.addEventListener('abort', onAbort, { once: true })\n exited.then(detach, detach)\n }\n }\n\n return {\n pid: pty.pid ?? -1,\n stdout,\n stderr,\n write: async (data: Uint8Array): Promise<void> => {\n await pty.sendInput(data)\n },\n kill,\n exited,\n }\n },\n\n async readFile(sandboxId, path): Promise<string> {\n return bufferToString(await get(sandboxId).sandbox.fs.downloadFile(path))\n },\n\n async writeFile(sandboxId, path, content): Promise<void> {\n await get(sandboxId).sandbox.fs.uploadFile(Buffer.from(content), path)\n },\n\n async listFiles(sandboxId, path): Promise<string[]> {\n const entries = await get(sandboxId).sandbox.fs.listFiles(path)\n // Trailing `/` on directories — parity with process/docker contexts.\n return entries.map(e => (e.isDir ? `${e.name}/` : e.name))\n },\n\n async destroy(sandboxId): Promise<void> {\n const entry = live.get(sandboxId)\n if (!entry)\n return\n if (entry.owned) {\n const action = options.onDestroy ?? 'delete'\n if (action === 'stop' || action === 'pause')\n await stopOwnedSandbox(entry.sandbox)\n else if (action === 'archive')\n await archiveOwnedSandbox(entry.sandbox)\n else if (action === 'delete' || action === 'kill')\n await deleteOwnedSandbox(entry.sandbox)\n }\n live.delete(sandboxId)\n },\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Wu as Logger } from "../index-DfERTrql.js";
1
+ import { Wu as Logger } from "../index-BKyWhILQ.js";
2
2
  import { t as SandboxProvider } from "../sandbox-DLY6uah7.js";
3
3
 
4
4
  //#region src/contexts/e2b.d.ts
package/dist/eval.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { $t as EvalRunUsage, An as efficiencyMetricValues, Bn as functionalityMetric, Bt as EvalAgentStats, Cn as clearRegisteredEvals, Dn as createReusableExecutionContext, En as createEvalRunReporter, Fn as fileExistsOneOf, Ft as EvalAgent, Gn as runEvalCase, Gt as EvalDefinitionContext, Hn as normalizeMetric, Ht as EvalCaseOptions, In as finalizeEvalMetrics, It as EvalAgentMcpServers, Jt as EvalRunMetricAggregate, Kn as statusCompleted, Kt as EvalMetric, Ln as formatEvalCaseSummary, Lt as EvalAgentRunOptions, Mn as fileContains, Nn as fileContentQuality, Nt as CreateEvalAgentOptions, On as defineEval, Pn as fileExists, Pt as EFFICIENCY_METRICS, Qt as EvalRunSummaryCase, Rn as formatEvalRunSummary, Rt as EvalAgentRunResult, Sn as buildTrajectory, Tn as createEvalAgent, Un as registerEvalTests, Ut as EvalCaseResult, Vn as llmJudge, Vt as EvalArtifacts, Wn as relativeArtifactPath, Wt as EvalDefinition, Xt as EvalRunReporterOptions, Yt as EvalRunReporter, Zt as EvalRunSummary, _n as TrajectoryStep, an as EvalWorkspaceFile, bn as buildEvalRunSummary, cn as LlmJudgeOptions, dn as MetricSpec, en as EvalScore, fn as MetricSpecMap, gn as Trajectory, hn as ReusableExecutionContext, in as EvalVariantSummary, jn as emitEfficiencyMetrics, kn as defineMetrics, ln as MetricDirection, mn as RegisterEvalTestsOptions, nn as EvalScorerContext, on as EvalWorkspaceOptions, pn as MetricStats, qt as EvalMetricError, rn as EvalTestRunner, sn as EvalWorkspaceSnapshot, tn as EvalScorer, un as MetricEmitter, vn as TrajectoryStepKind, wn as computeEvalTagScores, xn as buildRegisteredEvals, yn as artifactPath, zn as formatTrajectoryLine, zt as EvalAgentRunStats } from "./index-DfERTrql.js";
1
+ import { $t as EvalRunUsage, An as efficiencyMetricValues, Bn as functionalityMetric, Bt as EvalAgentStats, Cn as clearRegisteredEvals, Dn as createReusableExecutionContext, En as createEvalRunReporter, Fn as fileExistsOneOf, Ft as EvalAgent, Gn as runEvalCase, Gt as EvalDefinitionContext, Hn as normalizeMetric, Ht as EvalCaseOptions, In as finalizeEvalMetrics, It as EvalAgentMcpServers, Jt as EvalRunMetricAggregate, Kn as statusCompleted, Kt as EvalMetric, Ln as formatEvalCaseSummary, Lt as EvalAgentRunOptions, Mn as fileContains, Nn as fileContentQuality, Nt as CreateEvalAgentOptions, On as defineEval, Pn as fileExists, Pt as EFFICIENCY_METRICS, Qt as EvalRunSummaryCase, Rn as formatEvalRunSummary, Rt as EvalAgentRunResult, Sn as buildTrajectory, Tn as createEvalAgent, Un as registerEvalTests, Ut as EvalCaseResult, Vn as llmJudge, Vt as EvalArtifacts, Wn as relativeArtifactPath, Wt as EvalDefinition, Xt as EvalRunReporterOptions, Yt as EvalRunReporter, Zt as EvalRunSummary, _n as TrajectoryStep, an as EvalWorkspaceFile, bn as buildEvalRunSummary, cn as LlmJudgeOptions, dn as MetricSpec, en as EvalScore, fn as MetricSpecMap, gn as Trajectory, hn as ReusableExecutionContext, in as EvalVariantSummary, jn as emitEfficiencyMetrics, kn as defineMetrics, ln as MetricDirection, mn as RegisterEvalTestsOptions, nn as EvalScorerContext, on as EvalWorkspaceOptions, pn as MetricStats, qt as EvalMetricError, rn as EvalTestRunner, sn as EvalWorkspaceSnapshot, tn as EvalScorer, un as MetricEmitter, vn as TrajectoryStepKind, wn as computeEvalTagScores, xn as buildRegisteredEvals, yn as artifactPath, zn as formatTrajectoryLine, zt as EvalAgentRunStats } from "./index-BKyWhILQ.js";
2
2
  export { CreateEvalAgentOptions, EFFICIENCY_METRICS, EvalAgent, EvalAgentMcpServers, EvalAgentRunOptions, EvalAgentRunResult, EvalAgentRunStats, EvalAgentStats, EvalArtifacts, EvalCaseOptions, EvalCaseResult, EvalDefinition, EvalDefinitionContext, EvalMetric, EvalMetricError, EvalRunMetricAggregate, EvalRunReporter, EvalRunReporterOptions, EvalRunSummary, EvalRunSummaryCase, EvalRunUsage, EvalScore, EvalScorer, EvalScorerContext, EvalTestRunner, EvalVariantSummary, EvalWorkspaceFile, EvalWorkspaceOptions, EvalWorkspaceSnapshot, LlmJudgeOptions, MetricDirection, MetricEmitter, MetricSpec, MetricSpecMap, MetricStats, RegisterEvalTestsOptions, ReusableExecutionContext, Trajectory, TrajectoryStep, TrajectoryStepKind, artifactPath, buildEvalRunSummary, buildRegisteredEvals, buildTrajectory, clearRegisteredEvals, computeEvalTagScores, createEvalAgent, createEvalRunReporter, createReusableExecutionContext, defineEval, defineMetrics, efficiencyMetricValues, emitEfficiencyMetrics, fileContains, fileContentQuality, fileExists, fileExistsOneOf, finalizeEvalMetrics, formatEvalCaseSummary, formatEvalRunSummary, formatTrajectoryLine, functionalityMetric, llmJudge, normalizeMetric, registerEvalTests, relativeArtifactPath, runEvalCase, statusCompleted };
@@ -1,2 +1,2 @@
1
- import { $a as ExtensionConfigStringItem, $i as ExtensionCatalogPartition, $o as ExtensionToolResultMetadataRegistration, Aa as discoverExtensions, Ao as ExtensionManifest, Ba as defineExtension, Bo as ExtensionRunTransform, Ca as readExtensionInstallProvenance, Co as ExtensionCustomRendererEntry, Cs as ExtensionSessionsSurface, Da as ENTRY_CANDIDATES, Do as ExtensionGuiSurface, Ds as createWorkspaceSurface, Ea as registerExtensionHostModules, Eo as ExtensionGuiPanel, Es as createExtensionHostRuntimeBridge, Fa as DiscoverAndBuildExtensionRegistryOptions, Fo as ExtensionPaths, Ga as ExtensionConfigCategory, Go as ExtensionStorageScope, Ha as ExtensionConfigActionResult, Ho as ExtensionSessionStateSurface, Ia as discoverAndBuildExtensionRegistry, Io as ExtensionPermission, Ja as ExtensionConfigItem, Jo as ExtensionToolPolicy, Ka as ExtensionConfigChangeBehavior, Ko as ExtensionStorageSurface, La as ExtensionPromptBridge, Lo as ExtensionPromptTransform, Ma as isExtensionDefinition, Mo as ExtensionModal, Na as parseExtensionScanPathEnv, No as ExtensionModalNode, Oa as ExtensionScanEntry, Oo as ExtensionKeybinding, Pa as scanExtensionDirectories, Po as ExtensionOrderedContribution, Qa as ExtensionConfigScope, Qi as BuildExtensionRegistryOptions, Qo as ExtensionToolRendererRegistration, Ra as ExtensionPromptDelivery, Ro as ExtensionProviderMiddleware, Sa as parseExtensionInstallSource, So as ExtensionCustomRenderer, Ss as ExtensionSessionSummary, Ta as updateInstalledExtension, To as ExtensionFooterHint, Ts as ExtensionWorkspaceSurface, Ua as ExtensionConfigActionStatus, Uo as ExtensionSkillPolicy, Va as ExtensionConfigActionItem, Vo as ExtensionRuntimeEnv, Wa as ExtensionConfigBooleanItem, Wo as ExtensionSource, Xa as ExtensionConfigModelItem, Xo as ExtensionToolRenderer, Ya as ExtensionConfigItemBase, Yo as ExtensionToolRenderProps, Za as ExtensionConfigNumberItem, Zo as ExtensionToolRendererEntry, _a as InstallExtensionFromSpecOptions, _o as ExtensionBehaviorTransform, _s as createExtensionHud, aa as filterRegistryPlugins, ao as WireExtensionConfigSchema, as as LoadedExtension, ba as installExtensionFromSpec, bo as ExtensionContextTransform, bs as ExtensionModelEntry, ca as ExtensionFetchResult, co as isValidExtensionConfigItem, cs as ExtensionBannerOptions, da as ExtensionInstallErrorCode, do as resolveExtensionConfigValue, ds as ExtensionHudStatus, ea as buildExtensionPreset, eo as ExtensionConfigSurface, es as ExtensionToolResultPatch, fa as ExtensionInstallIo, fo as sanitizeExtensionConfigActionPatch, fs as ExtensionHudWriter, ga as ExtensionInstallSource, go as ExtensionApiVersion, gs as ExtensionStatusOptions, ha as ExtensionInstallScope, ho as ExtensionAgentPluginOptions, hs as ExtensionNotifyTone, ia as filterExtensionRegistry, io as WireExtensionConfigItem, is as GuiContributions, ja as inlineLoadedExtension, jo as ExtensionMcpConfigTransform, ka as defaultExtensionScanPaths, ko as ExtensionKeybindingDispatchContext, la as ExtensionInstallCandidate, lo as isValidExtensionConfigValue, ls as ExtensionHud, ma as ExtensionInstallResult, mo as EMPTY_EXTENSION_REGISTRY, ms as ExtensionNotifyOptions, na as composeExtensionPreset, no as ExtensionConfigValueItem, ns as ExtensionToolVerdict, oa as mergeContributions, oo as clampExtensionConfigNumber, os as LoadedPluginRecord, pa as ExtensionInstallProvenance, po as toWireConfigSchema, ps as ExtensionNotification, qa as ExtensionConfigEnumItem, qo as ExtensionToolCatalogTransform, ra as disposeExtensionRegistry, ro as StoredExtensionConfigItem, rs as ExtensionTuiSurface, sa as partitionExtensionCatalog, so as coerceExtensionConfigInput, ss as TuiContributions, ta as buildExtensionRegistry, to as ExtensionConfigValue, ts as ExtensionToolResultTransform, ua as ExtensionInstallError, uo as resolveExtensionConfig, us as ExtensionHudState, va as InstalledExtensionTargetOptions, vo as ExtensionCapability, vs as ExtensionHostRuntimeBridge, wa as removeInstalledExtension, wo as ExtensionDefinition, ws as ExtensionWorkspacePair, xa as listExtensionCandidates, xo as ExtensionContributions, xs as ExtensionRuntimeSurface, ya as fetchExtensionSource, yo as ExtensionContext, ys as ExtensionHostRuntimeImpl, za as createExtensionPromptBridge, zo as ExtensionRegistry } from "./index-DfERTrql.js";
1
+ import { $a as ExtensionConfigStringItem, $i as ExtensionCatalogPartition, $o as ExtensionToolResultMetadataRegistration, Aa as discoverExtensions, Ao as ExtensionManifest, Ba as defineExtension, Bo as ExtensionRunTransform, Ca as readExtensionInstallProvenance, Co as ExtensionCustomRendererEntry, Cs as ExtensionSessionsSurface, Da as ENTRY_CANDIDATES, Do as ExtensionGuiSurface, Ds as createWorkspaceSurface, Ea as registerExtensionHostModules, Eo as ExtensionGuiPanel, Es as createExtensionHostRuntimeBridge, Fa as DiscoverAndBuildExtensionRegistryOptions, Fo as ExtensionPaths, Ga as ExtensionConfigCategory, Go as ExtensionStorageScope, Ha as ExtensionConfigActionResult, Ho as ExtensionSessionStateSurface, Ia as discoverAndBuildExtensionRegistry, Io as ExtensionPermission, Ja as ExtensionConfigItem, Jo as ExtensionToolPolicy, Ka as ExtensionConfigChangeBehavior, Ko as ExtensionStorageSurface, La as ExtensionPromptBridge, Lo as ExtensionPromptTransform, Ma as isExtensionDefinition, Mo as ExtensionModal, Na as parseExtensionScanPathEnv, No as ExtensionModalNode, Oa as ExtensionScanEntry, Oo as ExtensionKeybinding, Pa as scanExtensionDirectories, Po as ExtensionOrderedContribution, Qa as ExtensionConfigScope, Qi as BuildExtensionRegistryOptions, Qo as ExtensionToolRendererRegistration, Ra as ExtensionPromptDelivery, Ro as ExtensionProviderMiddleware, Sa as parseExtensionInstallSource, So as ExtensionCustomRenderer, Ss as ExtensionSessionSummary, Ta as updateInstalledExtension, To as ExtensionFooterHint, Ts as ExtensionWorkspaceSurface, Ua as ExtensionConfigActionStatus, Uo as ExtensionSkillPolicy, Va as ExtensionConfigActionItem, Vo as ExtensionRuntimeEnv, Wa as ExtensionConfigBooleanItem, Wo as ExtensionSource, Xa as ExtensionConfigModelItem, Xo as ExtensionToolRenderer, Ya as ExtensionConfigItemBase, Yo as ExtensionToolRenderProps, Za as ExtensionConfigNumberItem, Zo as ExtensionToolRendererEntry, _a as InstallExtensionFromSpecOptions, _o as ExtensionBehaviorTransform, _s as createExtensionHud, aa as filterRegistryPlugins, ao as WireExtensionConfigSchema, as as LoadedExtension, ba as installExtensionFromSpec, bo as ExtensionContextTransform, bs as ExtensionModelEntry, ca as ExtensionFetchResult, co as isValidExtensionConfigItem, cs as ExtensionBannerOptions, da as ExtensionInstallErrorCode, do as resolveExtensionConfigValue, ds as ExtensionHudStatus, ea as buildExtensionPreset, eo as ExtensionConfigSurface, es as ExtensionToolResultPatch, fa as ExtensionInstallIo, fo as sanitizeExtensionConfigActionPatch, fs as ExtensionHudWriter, ga as ExtensionInstallSource, go as ExtensionApiVersion, gs as ExtensionStatusOptions, ha as ExtensionInstallScope, ho as ExtensionAgentPluginOptions, hs as ExtensionNotifyTone, ia as filterExtensionRegistry, io as WireExtensionConfigItem, is as GuiContributions, ja as inlineLoadedExtension, jo as ExtensionMcpConfigTransform, ka as defaultExtensionScanPaths, ko as ExtensionKeybindingDispatchContext, la as ExtensionInstallCandidate, lo as isValidExtensionConfigValue, ls as ExtensionHud, ma as ExtensionInstallResult, mo as EMPTY_EXTENSION_REGISTRY, ms as ExtensionNotifyOptions, na as composeExtensionPreset, no as ExtensionConfigValueItem, ns as ExtensionToolVerdict, oa as mergeContributions, oo as clampExtensionConfigNumber, os as LoadedPluginRecord, pa as ExtensionInstallProvenance, po as toWireConfigSchema, ps as ExtensionNotification, qa as ExtensionConfigEnumItem, qo as ExtensionToolCatalogTransform, ra as disposeExtensionRegistry, ro as StoredExtensionConfigItem, rs as ExtensionTuiSurface, sa as partitionExtensionCatalog, so as coerceExtensionConfigInput, ss as TuiContributions, ta as buildExtensionRegistry, to as ExtensionConfigValue, ts as ExtensionToolResultTransform, ua as ExtensionInstallError, uo as resolveExtensionConfig, us as ExtensionHudState, va as InstalledExtensionTargetOptions, vo as ExtensionCapability, vs as ExtensionHostRuntimeBridge, wa as removeInstalledExtension, wo as ExtensionDefinition, ws as ExtensionWorkspacePair, xa as listExtensionCandidates, xo as ExtensionContributions, xs as ExtensionRuntimeSurface, ya as fetchExtensionSource, yo as ExtensionContext, ys as ExtensionHostRuntimeImpl, za as createExtensionPromptBridge, zo as ExtensionRegistry } from "./index-BKyWhILQ.js";
2
2
  export { type BuildExtensionRegistryOptions, type DiscoverAndBuildExtensionRegistryOptions, EMPTY_EXTENSION_REGISTRY, ENTRY_CANDIDATES, type ExtensionAgentPluginOptions, type ExtensionApiVersion, type ExtensionBannerOptions, type ExtensionBehaviorTransform, type ExtensionCapability, type ExtensionCatalogPartition, type ExtensionConfigActionItem, type ExtensionConfigActionResult, type ExtensionConfigActionStatus, type ExtensionConfigBooleanItem, type ExtensionConfigCategory, type ExtensionConfigChangeBehavior, type ExtensionConfigEnumItem, type ExtensionConfigItem, type ExtensionConfigItemBase, type ExtensionConfigModelItem, type ExtensionConfigNumberItem, type ExtensionConfigScope, type ExtensionConfigStringItem, type ExtensionConfigSurface, type ExtensionConfigValue, type ExtensionConfigValueItem, type ExtensionContext, type ExtensionContextTransform, type ExtensionContributions, type ExtensionCustomRenderer, type ExtensionCustomRendererEntry, type ExtensionDefinition, type ExtensionFetchResult, type ExtensionFooterHint, type ExtensionGuiPanel, type ExtensionGuiSurface, type ExtensionHostRuntimeBridge, type ExtensionHostRuntimeImpl, type ExtensionHud, type ExtensionHudState, type ExtensionHudStatus, type ExtensionHudWriter, type ExtensionInstallCandidate, ExtensionInstallError, type ExtensionInstallErrorCode, type ExtensionInstallIo, type ExtensionInstallProvenance, type ExtensionInstallResult, type ExtensionInstallScope, type ExtensionInstallSource, type ExtensionKeybinding, type ExtensionKeybindingDispatchContext, type ExtensionManifest, type ExtensionMcpConfigTransform, type ExtensionModal, type ExtensionModalNode, type ExtensionModelEntry, type ExtensionNotification, type ExtensionNotifyOptions, type ExtensionNotifyTone, type ExtensionOrderedContribution, type ExtensionPaths, type ExtensionPermission, type ExtensionPromptBridge, type ExtensionPromptDelivery, type ExtensionPromptTransform, type ExtensionProviderMiddleware, type ExtensionRegistry, type ExtensionRunTransform, type ExtensionRuntimeEnv, type ExtensionRuntimeSurface, type ExtensionScanEntry, type ExtensionSessionStateSurface, type ExtensionSessionSummary, type ExtensionSessionsSurface, type ExtensionSkillPolicy, type ExtensionSource, type ExtensionStatusOptions, type ExtensionStorageScope, type ExtensionStorageSurface, type ExtensionToolCatalogTransform, type ExtensionToolPolicy, type ExtensionToolRenderProps, type ExtensionToolRenderer, type ExtensionToolRendererEntry, type ExtensionToolRendererRegistration, type ExtensionToolResultMetadataRegistration, type ExtensionToolResultPatch, type ExtensionToolResultTransform, type ExtensionToolVerdict, type ExtensionTuiSurface, type ExtensionWorkspacePair, type ExtensionWorkspaceSurface, type GuiContributions, type InstallExtensionFromSpecOptions, type InstalledExtensionTargetOptions, type LoadedExtension, type LoadedPluginRecord, type StoredExtensionConfigItem, type TuiContributions, type WireExtensionConfigItem, type WireExtensionConfigSchema, buildExtensionPreset, buildExtensionRegistry, clampExtensionConfigNumber, coerceExtensionConfigInput, composeExtensionPreset, createExtensionHostRuntimeBridge, createExtensionHud, createExtensionPromptBridge, createWorkspaceSurface, defaultExtensionScanPaths, defineExtension, discoverAndBuildExtensionRegistry, discoverExtensions, disposeExtensionRegistry, fetchExtensionSource, filterExtensionRegistry, filterRegistryPlugins, inlineLoadedExtension, installExtensionFromSpec, isExtensionDefinition, isValidExtensionConfigItem, isValidExtensionConfigValue, listExtensionCandidates, mergeContributions, parseExtensionInstallSource, parseExtensionScanPathEnv, partitionExtensionCatalog, readExtensionInstallProvenance, registerExtensionHostModules, removeInstalledExtension, resolveExtensionConfig, resolveExtensionConfigValue, sanitizeExtensionConfigActionPatch, scanExtensionDirectories, toWireConfigSchema, updateInstalledExtension };
@@ -1,2 +1,2 @@
1
- import { $ as installExtensionFromSpec, Cn as resolveExtensionConfigValue, Q as fetchExtensionSource, Sn as resolveExtensionConfig, Tn as toWireConfigSchema, X as createExtensionPromptBridge, Y as EMPTY_EXTENSION_REGISTRY, Z as ExtensionInstallError, _n as defineExtension, at as createExtensionHud, bn as isValidExtensionConfigItem, cn as registerExtensionHostModules, ct as buildExtensionRegistry, dn as discoverExtensions, dt as filterExtensionRegistry, et as listExtensionCandidates, fn as inlineLoadedExtension, ft as filterRegistryPlugins, gt as createWorkspaceSurface, hn as scanExtensionDirectories, ht as createExtensionHostRuntimeBridge, it as updateInstalledExtension, ln as ENTRY_CANDIDATES, lt as composeExtensionPreset, mn as parseExtensionScanPathEnv, mt as partitionExtensionCatalog, nt as readExtensionInstallProvenance, ot as discoverAndBuildExtensionRegistry, pn as isExtensionDefinition, pt as mergeContributions, rt as removeInstalledExtension, st as buildExtensionPreset, tt as parseExtensionInstallSource, un as defaultExtensionScanPaths, ut as disposeExtensionRegistry, vn as clampExtensionConfigNumber, wn as sanitizeExtensionConfigActionPatch, xn as isValidExtensionConfigValue, yn as coerceExtensionConfigInput } from "./agent-CvO7UOxv.js";
1
+ import { $ as installExtensionFromSpec, Cn as resolveExtensionConfigValue, Q as fetchExtensionSource, Sn as resolveExtensionConfig, Tn as toWireConfigSchema, X as createExtensionPromptBridge, Y as EMPTY_EXTENSION_REGISTRY, Z as ExtensionInstallError, _n as defineExtension, at as createExtensionHud, bn as isValidExtensionConfigItem, cn as registerExtensionHostModules, ct as buildExtensionRegistry, dn as discoverExtensions, dt as filterExtensionRegistry, et as listExtensionCandidates, fn as inlineLoadedExtension, ft as filterRegistryPlugins, gt as createWorkspaceSurface, hn as scanExtensionDirectories, ht as createExtensionHostRuntimeBridge, it as updateInstalledExtension, ln as ENTRY_CANDIDATES, lt as composeExtensionPreset, mn as parseExtensionScanPathEnv, mt as partitionExtensionCatalog, nt as readExtensionInstallProvenance, ot as discoverAndBuildExtensionRegistry, pn as isExtensionDefinition, pt as mergeContributions, rt as removeInstalledExtension, st as buildExtensionPreset, tt as parseExtensionInstallSource, un as defaultExtensionScanPaths, ut as disposeExtensionRegistry, vn as clampExtensionConfigNumber, wn as sanitizeExtensionConfigActionPatch, xn as isValidExtensionConfigValue, yn as coerceExtensionConfigInput } from "./agent-8kfGIDb_.js";
2
2
  export { EMPTY_EXTENSION_REGISTRY, ENTRY_CANDIDATES, ExtensionInstallError, buildExtensionPreset, buildExtensionRegistry, clampExtensionConfigNumber, coerceExtensionConfigInput, composeExtensionPreset, createExtensionHostRuntimeBridge, createExtensionHud, createExtensionPromptBridge, createWorkspaceSurface, defaultExtensionScanPaths, defineExtension, discoverAndBuildExtensionRegistry, discoverExtensions, disposeExtensionRegistry, fetchExtensionSource, filterExtensionRegistry, filterRegistryPlugins, inlineLoadedExtension, installExtensionFromSpec, isExtensionDefinition, isValidExtensionConfigItem, isValidExtensionConfigValue, listExtensionCandidates, mergeContributions, parseExtensionInstallSource, parseExtensionScanPathEnv, partitionExtensionCatalog, readExtensionInstallProvenance, registerExtensionHostModules, removeInstalledExtension, resolveExtensionConfig, resolveExtensionConfigValue, sanitizeExtensionConfigActionPatch, scanExtensionDirectories, toWireConfigSchema, updateInstalledExtension };
@@ -1,2 +1,2 @@
1
- import { $n as HeadlessResult, Jn as FormattedHeadlessTurnEvent, Qn as HeadlessOutputFormat, Xn as HeadlessEvent, Yn as HeadlessErrorInfo, Zn as HeadlessOptions, ar as exitCodeForHeadlessResult, cr as formattedHeadlessTurnEventToJsonl, dr as providerTranscriptFormatForProvider, er as HeadlessStatus, fr as runHeadless, ir as ProviderTranscriptFormat, lr as headlessEventToJsonl, mr as transcriptToProviderMessages, nr as OpenAIChatContentPart, or as formatHeadlessResult, pr as transcriptToOpenAIMessages, qn as FormattedHeadlessResult, rr as OpenAIChatMessage, sr as formatHeadlessTurnEvent, tr as HeadlessUsage, ur as installHeadlessEventAdapter } from "./index-DfERTrql.js";
1
+ import { $n as HeadlessResult, Jn as FormattedHeadlessTurnEvent, Qn as HeadlessOutputFormat, Xn as HeadlessEvent, Yn as HeadlessErrorInfo, Zn as HeadlessOptions, ar as exitCodeForHeadlessResult, cr as formattedHeadlessTurnEventToJsonl, dr as providerTranscriptFormatForProvider, er as HeadlessStatus, fr as runHeadless, ir as ProviderTranscriptFormat, lr as headlessEventToJsonl, mr as transcriptToProviderMessages, nr as OpenAIChatContentPart, or as formatHeadlessResult, pr as transcriptToOpenAIMessages, qn as FormattedHeadlessResult, rr as OpenAIChatMessage, sr as formatHeadlessTurnEvent, tr as HeadlessUsage, ur as installHeadlessEventAdapter } from "./index-BKyWhILQ.js";
2
2
  export { FormattedHeadlessResult, FormattedHeadlessTurnEvent, HeadlessErrorInfo, HeadlessEvent, HeadlessOptions, HeadlessOutputFormat, HeadlessResult, HeadlessStatus, HeadlessUsage, OpenAIChatContentPart, OpenAIChatMessage, ProviderTranscriptFormat, exitCodeForHeadlessResult, formatHeadlessResult, formatHeadlessTurnEvent, formattedHeadlessTurnEventToJsonl, headlessEventToJsonl, installHeadlessEventAdapter, providerTranscriptFormatForProvider, runHeadless, transcriptToOpenAIMessages, transcriptToProviderMessages };
package/dist/headless.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as isWireTurn, i as documentBlockMarker, l as toolResultToText, n as assertResolvedMediaBlock } from "./types-BIarq1qE.js";
2
- import { bt as basic_default, t as createAgent } from "./agent-CvO7UOxv.js";
2
+ import { bt as basic_default, t as createAgent } from "./agent-8kfGIDb_.js";
3
3
  import { r as createProcessContext } from "./contexts-DWVt7MvF.js";
4
4
  import { t as audioFormatFromMediaType } from "./media-sniff-UKijEaiQ.js";
5
5
  import { c as ensureToolResultPairing, g as toAnthropic } from "./messages-C_H9soi5.js";
@@ -9736,7 +9736,7 @@ declare function InteractionsProvider({
9736
9736
  children
9737
9737
  }: {
9738
9738
  children: ReactNode;
9739
- }): import("react/jsx-runtime").JSX.Element;
9739
+ }): import("react").JSX.Element;
9740
9740
  /** Read the live queue (re-renders on every push/pop). */
9741
9741
  declare function useInteractionsQueue(): readonly PendingInteractionEntry[];
9742
9742
  /** Read the stable actions object. */
@@ -19142,4 +19142,4 @@ declare function definePreset(config: Preset): Preset;
19142
19142
  declare function composePresets(...presets: Preset[]): Preset;
19143
19143
  //#endregion
19144
19144
  export { SessionArtifactDirMigration as $, ExtensionConfigStringItem as $a, createSkillActivationState as $c, restoreModelOptions as $d, SchemaSanitizeProfile as $f, toWireMessages as $g, stagedToolState as $h, ExtensionCatalogPartition as $i, commandBlocksToContent as $l, RepeatGuardConfig as $m, HeadlessResult as $n, ExtensionToolResultMetadataRegistration as $o, buildAnthropicClientOptions as $p, createRunSummaryCollector as $r, AgentPluginsVersion as $s, EvalRunUsage as $t, AgentProfile as $u, Meter as A, discoverExtensions as Aa, SkillInstallError as Ac, toggleChainEntry as Ad, CacheDriftInfo as Af, PairingDrop as Ag, toolOutputBudgetByteLength as Ah, CompactionSlice as Ai, CompletionReference as Al, CompactEndHookContext as Am, efficiencyMetricValues as An, ExtensionManifest as Ao, openai as Ap, createSkillsReadTool as Ar, SpawnTaskInput as As, resolveExtensionDocsDir as At, pendingInteractionsFromTurns as Au, McpCredentialStore as B, defineExtension as Ba, discoverSkills as Bc, anthropicDescriptor as Bd, StreamCallbacks as Bf, autoDetectAndConvert as Bg, hashContent as Bh, defaultRepeatGuardTracked as Bi, CommandArgSuggestion as Bl, McpToolHookContext as Bm, functionalityMetric as Bn, ExtensionRunTransform as Bo, cerebras as Bp, grep as Br, SpawnModelEntry as Bs, EvalAgentStats as Bt, ConsoleSinkOptions as Bu, SuccessfulMutationOutcome as C, readExtensionInstallProvenance as Ca, resolveSkills as Cc, buildRunModel as Cd, ContextUsageSplit as Cf, createRemoteStore as Cg, ToolResultImageContent as Ch, buildCompactPrompt as Ci, tokenEndingAtCursor as Cl, AgentClock as Cm, clearRegisteredEvals as Cn, ExtensionCustomRendererEntry as Co, openaiCompat as Cp, ToolSearchToolOptions as Cr, ExtensionSessionsSurface as Cs, ZIDANE_SKILL_EDIT_SKILL_NAME as Ct, QuestionType as Cu, Counter as D, ENTRY_CANDIDATES as Da, SKILL_PROVENANCE_FILE as Dc, providerKeySetChanged as Dd, CacheDimensionDiff as Df, createFileMapStore as Dg, ToolResultVideoContent as Dh, buildUpToCompactPrompt as Di, CompletionContext as Dl, AutoCompactConfig as Dm, createReusableExecutionContext as Dn, ExtensionGuiSurface as Do, OpenAIParams as Dp, SkillsRunScriptToolOptions as Dr, createWorkspaceSurface as Ds, extensionDirForCwd as Dt, createInteractionTools as Du, resolveModelTargets as E, registerExtensionHostModules as Ea, stripShellInterpolations as Ec, filterChainFallbacks as Ed, CacheBreakLoggerOptions as Ef, FileMapStoreOptions as Eg, ToolResultTextContent as Eh, buildTailCompactPrompt as Ei, ActiveTrigger as El, AutoCompact as Em, createEvalRunReporter as En, ExtensionGuiPanel as Eo, userMessage as Ep, createSkillsUseTool as Er, createExtensionHostRuntimeBridge as Es, editSessionMetadata as Et, buildResumedToolResultsTurn as Eu, createMetricsHooks as F, DiscoverAndBuildExtensionRegistryOptions as Fa, installSkillFromSpec as Fc, BUILTIN_PROVIDERS as Fd, snapshotCacheDimensions as Ff, RemintResult as Fg, ToolMap as Fh, summaryToTurn as Fi, mergeReferences as Fl, DedupHasher as Fm, fileExistsOneOf as Fn, ExtensionPaths as Fo, LocalParams as Fp, readFile as Fr, SubagentDef as Fs, EvalAgent as Ft, SchemaInput as Fu, OAuthCallbackHandle as G, ExtensionConfigCategory as Ga, buildCatalog as Gc, getModelInfo as Gd, ToolSpec as Gf, filterUnresolvedToolUses as Gg, DEFAULT_MAX_VALUE_BYTES as Gh, AgentHookMap as Gi, CommandInvocation as Gl, ProgressNudgeKind as Gm, runEvalCase as Gn, ExtensionStorageScope as Go, arcee as Gp, RunSummaryBudget as Gr, PLUGIN_MCP_FILE as Gs, EvalDefinitionContext as Gt, LoggingHookSet as Gu, McpOAuthProviderOptions as H, ExtensionConfigActionResult as Ha, inferSource as Hc, credKeyOf as Hd, TokenCountPayload as Hf, dropInvalidToolPairings as Hg, hydrateReadStateFromSessionAsync as Hh, stableStringify as Hi, CommandExecution as Hl, ModelTarget as Hm, normalizeMetric as Hn, ExtensionSessionStateSurface as Ho, baseten as Hp, edit as Hr, formatModelLine as Hs, EvalCaseOptions as Ht, LogRecord as Hu, LoginMcpServerOptions as I, discoverAndBuildExtensionRegistry as Ia, listSkillCandidates as Ic, CustomField as Id, HistoryRepair as If, SYNTHETIC_TOOL_RESULT_PLACEHOLDER as Ig, HydrateReadStateOptions as Ih, truncateHeadForPtlRetry as Ii, mergeSuggestions as Il, DedupToolConfig as Im, finalizeEvalMetrics as In, ExtensionPermission as Io, local as Ip, multiEdit as Ir, SubagentOverride as Is, EvalAgentMcpServers as It, StandardSchemaLike as Iu, startOAuthCallback as J, ExtensionConfigItem as Ja, ActivationVia as Jc, modelSupportsReasoning as Jd, planZaiReasoning as Jf, reasoningWireAction as Jg, ToolStateOp as Jh, McpConnector as Ji, CommandSpawnTask as Jl, PromptDocumentPart as Jm, FormattedHeadlessTurnEvent as Jn, ExtensionToolPolicy as Jo, AnthropicParams as Jp, RunSummaryCollectorOptions as Jr, parsePluginManifest as Js, EvalRunMetricAggregate as Jt, consoleSink as Ju, OAuthCallbackOptions as K, ExtensionConfigChangeBehavior as Ka, IMPLICITLY_ALLOWED_SKILL_TOOLS as Kc, localDescriptor as Kd, TurnResult as Kf, fromAnthropic as Kg, StagedToolState as Kh, AgentHooks as Ki, CommandOutputBlock as Kl, ProgressNudgeMessage as Km, statusCompleted as Kn, ExtensionStorageSurface as Ko, AnthropicBedrockConfig as Kp, RunSummaryByModel as Kr, expandPluginVars as Ks, EvalMetric as Kt, LoggingHooksOptions as Ku, LoginMcpServerResult as L, ExtensionPromptBridge as La, parseSkillInstallSpec as Lc, ModelInfo as Ld, Provider as Lf, TOOL_USE_INTERRUPTED_MARKER as Lg, ReadStateEntry as Lh, GenerateStructuredDataOptions as Li, resolveCompletionSubmit as Ll, GeometricThinkingDecay as Lm, formatEvalCaseSummary as Ln, ExtensionPromptTransform as Lo, CursorParams as Lp, listFiles as Lr, SubagentRegistry as Ls, EvalAgentRunOptions as Lt, isStandardSchema as Lu, MetricsHookSet as M, isExtensionDefinition as Ma, SkillInstallOptions as Mc, ProviderAuth as Md, fnv1a32 as Mf, PairingRepair as Mg, toolResultToText as Mh, anchorPreviewFor as Mi, applyInsert as Ml, CompactHookContext as Mm, fileContains as Mn, ExtensionModal as Mo, MistralParams as Mp, CreateShellToolOptions as Mr, SpawnTool as Ms, withZidaneSkillEditSkill as Mt, useInteractionsActions as Mu, MetricsHooksOptions as N, parseExtensionScanPathEnv as Na, SkillInstallResult as Nc, ProviderKey as Nd, hashMessages as Nf, PairingRepairMode as Ng, ToolContext as Nh, sliceForCompaction as Ni, collectReferences as Nl, CompactStartHookContext as Nm, fileContentQuality as Nn, ExtensionModalNode as No, mistral as Np, createShellTool as Nr, SpawnToolOptions as Ns, CreateEvalAgentOptions as Nt, useInteractionsQueue as Nu, Histogram as O, ExtensionScanEntry as Oa, SkillCandidateDetail as Oc, restoreChainFallbacks as Od, CacheDimensionName as Of, EnsureToolResultPairingOptions as Og, TurnFinishReason as Oh, ANCHOR_PREVIEW_MAX_CHARS as Oi, CompletionItem as Ol, CacheTtl as Om, defineEval as On, ExtensionKeybinding as Oo, classifyOpenAIError as Op, createSkillsRunScriptTool as Or, ChildAgent as Os, extensionScaffold as Ot, isInteractionTool as Ou, UpDownCounter as P, scanExtensionDirectories as Pa, SkillInstallSpec as Pc, detectAuth as Pd, installCacheBreakLogger as Pf, ReasoningWireAction as Pg, ToolDef as Ph, stripImagesFromTurns as Pi, findActiveTrigger as Pl, DEFAULT_AGENT_CLOCK as Pm, fileExists as Pn, ExtensionOrderedContribution as Po, planMistralReasoning as Pp, shell as Pr, SpawnToolState as Ps, EFFICIENCY_METRICS as Pt, InferSchemaOutput as Pu, PersistOutcome as Q, ExtensionConfigScope as Qa, SkillActivationStateOptions as Qc, piIdOf as Qd, SchemaSanitizeOptions as Qf, toOpenAI as Qg, isToolStateOps as Qh, BuildExtensionRegistryOptions as Qi, commandBlockToEvent as Ql, PromptVideoPart as Qm, HeadlessOutputFormat as Qn, ExtensionToolRendererRegistration as Qo, applyAnthropicCacheBreakpoints as Qp, RunSummaryValidation as Qr, loadAgentPlugin as Qs, EvalRunSummaryCase as Qt, AgentAccent as Qu, loginMcpServer as R, ExtensionPromptDelivery as Ra, readSkillProvenance as Rc, ModelOption as Rd, ProviderCapabilities as Rf, ToWireMessagesOptions as Rg, ReadStateMap as Rh, generateStructuredData as Ri, Command as Rl, JsonValue as Rm, formatEvalRunSummary as Rn, ExtensionProviderMiddleware as Ro, cursor as Rp, InteractionToolOptions as Rr, createSpawnTool as Rs, EvalAgentRunResult as Rt, resolveSchemaInput as Ru, MutationValidationResult as S, setModelCatalog as S_, parseExtensionInstallSource as Sa, validateSkillName as Sc, ModelChainEntry as Sd, ContextSnapshot as Sf, RemoteStoreOptions as Sg, ToolResultDocumentRefContent as Sh, TRAILER as Si, resolveInlineSuggestion as Sl, AgentBehavior as Sm, buildTrajectory as Sn, ExtensionCustomRenderer as So, openAICompatPromptMessage as Sp, LazyToolEntry as Sr, ExtensionSessionSummary as Ss, ZIDANE_EXTENSION_SKILL_NAME as St, QuestionResponse as Su, normalizeProviders as T, updateInstalledExtension as Ta, interpolateShellCommands as Tc, chainsEqual as Td, CacheBreakInfo as Tf, FileMapAdapter as Tg, ToolResultMetadata as Th, buildFullCompactPrompt as Ti, useCompletion as Tl, AgentStats as Tm, createEvalAgent as Tn, ExtensionFooterHint as To, toolResultsMessage as Tp, SkillsUseToolOptions as Tr, ExtensionWorkspaceSurface as Ts, buildZidaneSkillEditSkill as Tt, TextQuestion as Tu, createMemoryMcpCredentialStore as U, ExtensionConfigActionStatus as Ua, parseFrontmatter as Uc, enabledModelOptions as Ud, ToolCall as Uf, ensureEndsWithUserMessage as Ug, readStateKey as Uh, localReliabilityBehavior as Ui, CommandGenerateDataOptions as Ul, ModelTargetSpec as Um, registerEvalTests as Un, ExtensionSkillPolicy as Uo, planBasetenReasoning as Up, RunSummary as Ur, matchModelEntries as Us, EvalCaseResult as Ut, LogSink as Uu, McpOAuthProvider as V, ExtensionConfigActionItem as Va, getDefaultScanPaths as Vc, cerebrasDescriptor as Vd, StreamOptions as Vf, detectTurnInterruption as Vg, hydrateReadStateFromSession as Vh, normalizeShellCommand as Vi, CommandAttachment as Vl, McpToolSchema as Vm, llmJudge as Vn, ExtensionRuntimeEnv as Vo, BasetenParams as Vp, glob as Vr, createModelSearchTool as Vs, EvalArtifacts as Vt, LogLevel as Vu, hasAuthorizationHeader as W, ExtensionConfigBooleanItem as Wa, parseSkillFile as Wc, getContextWindow as Wd, ToolResult as Wf, ensureToolResultPairing as Wg, resolveReadStateMap as Wh, Agent as Wi, CommandInteraction as Wl, OAuthRefreshHookContext as Wm, relativeArtifactPath as Wn, ExtensionSource as Wo, ArceeParams as Wp, RunSummaryBlock as Wr, PLUGIN_SKILLS_DIR as Ws, EvalDefinition as Wt, Logger as Wu, PERSISTENCE_PREVIEW_BYTES as X, ExtensionConfigModelItem as Xa, DeactivationReason as Xc, openaiDescriptor as Xd, XaiParams as Xf, sanitizeHistoryForProvider as Xg, ToolStateView as Xh, McpToolWrap as Xi, CommandStepContext as Xl, PromptPart as Xm, HeadlessEvent as Xn, ExtensionToolRenderer as Xo, EXTENDED_CACHE_TTL_BETA as Xp, RunSummaryRepeatGuard as Xr, PLUGIN_MANIFEST_FILE as Xs, EvalRunReporterOptions as Xt, createLoggingHooks as Xu, PERSISTED_STUB_PREFIX as Y, ExtensionConfigItemBase as Ya, ActiveSkill as Yc, modelsForDescriptor as Yd, zai as Yf, remintDuplicateToolCallIds as Yg, ToolStateStore as Yh, McpToolMeta as Yi, CommandStep as Yl, PromptImagePart as Ym, HeadlessErrorInfo as Yn, ExtensionToolRenderProps as Yo, AnthropicThinkingPlan as Yp, RunSummaryError as Yr, validatePluginManifest as Ys, EvalRunReporter as Yt, createLogger as Yu, PersistInput as Z, ExtensionConfigNumberItem as Za, SkillActivationState as Zc, openrouterDescriptor as Zd, xai as Zf, toAnthropic as Zg, createToolStateController as Zh, createAgent as Zi, CommandStepFn as Zl, PromptTextPart as Zm, HeadlessOptions as Zn, ExtensionToolRendererEntry as Zo, anthropic as Zp, RunSummaryTokens as Zr, defaultPluginDataRoot as Zs, EvalRunSummary as Zt, jsonSink as Zu, statsByModel as _, originPinnedFetch as __, InstallExtensionFromSpecOptions as _a, matchesAllowedTool as _c, Screen as _d, ContextExactCounts as _f, getExtensionSessionState as _g, ToolHookContext as _h, BASE_INSTRUCTIONS as _i, InlineAutocompleteContext as _l, readOAuthCredentials as _m, TrajectoryStep as _n, ExtensionBehaviorTransform as _o, buildAssistantContent as _p, waitTask as _r, createExtensionHud as _s, EXTENSION_EDIT_METADATA_KEY as _t, PlanStep as _u, basicTools as a, createStderrLineEmitter as a_, filterRegistryPlugins as aa, PluginManifest as ac, DEFAULT_PERSIST_EXCLUDE_TOOLS as ad, shouldAutoCompact as af, SkillsConfig as ag, SessionContentBlock as ah, RecentFile as ai, BUILTIN_THEMES as al, resolveAnthropicBetas as am, EvalWorkspaceFile as an, WireExtensionConfigSchema as ao, openrouter as ap, exitCodeForHeadlessResult as ar, LoadedExtension as as, resolveLegacySessionDir as at, ConfirmQuestion as au, MutationValidationHooksOptions as b, ModelCatalogSource as b_, installExtensionFromSpec as ba, validateResourcePathReal as bc, StreamEvent as bd, ContextItem as bf, setExtensionSessionState as bg, ToolResultContent as bh, CompactPromptOptions as bi, createPathAutocompleteProvider as bl, writeOAuthCredentials as bm, buildEvalRunSummary as bn, ExtensionContextTransform as bo, formatTools as bp, TailTruncateOptions as br, ExtensionModelEntry as bs, SKILL_EDIT_METADATA_KEY as bt, QuestionPayload as bu, StartSpan as c, expandMcpConfigEnv as c_, ExtensionFetchResult as ca, agentPluginsSchemaId as cc, resolveAgentId as cd, ContextSegmentOrigin as cf, Session as cg, SessionMessage as ch, selectFilesFromSession as ci, DEFAULT_THEME as cl, PromptCacheKeyOption as cm, LlmJudgeOptions as cn, isValidExtensionConfigItem as co, OAITool as cp, formattedHeadlessTurnEventToJsonl as cr, ExtensionBannerOptions as cs, resolveSessionDir as ct, InteractionResponse as cu, TracingHooksOptions as d, normalizeMcpServers as d_, ExtensionInstallErrorCode as da, defineSkill as dc, EditHunk as dd, ContextBreakdown as df, SessionRun as dg, StaleReadPolicy as dh, CompactOptions as di, Theme as dl, OAuthParams as dm, MetricSpec as dn, resolveExtensionConfigValue as do, OpenAICompatParams as dp, providerTranscriptFormatForProvider as dr, ExtensionHudStatus as ds, SHELL_CASCADE_CANCEL_MESSAGE as dt, PRESENT_PLAN_TOOL as du, ConnectMcpServersOptions as e_, buildExtensionPreset as ea, LoadAgentPluginOptions as ec, AgentRegistry as ed, AUTO_COMPACT_MIN_GROWTH_FRACTION as ef, ShellInterpolationApproval as eg, RepeatGuardToolMatcher as eh, BYTES_PER_TOKEN as ei, ResolveStorageDirsOptions as el, classifyAnthropicError as em, EvalScore as en, ExtensionConfigSurface as eo, SchemaSanitizeResult as ep, HeadlessStatus as er, ExtensionToolResultPatch as es, buildPersistedStub as et, commandSteps as eu, createTracingHooks as f, resolveTransportConfig as f_, ExtensionInstallIo as fa, writeSkillToDisk as fc, EditOutcome as fd, ContextBreakdownContributionContext as ff, SessionStore as fg, StepThinkingDecay as fh, CompactResult as fi, ThemeColors as fl, ResolveOAuthApiKeyOptions as fm, MetricSpecMap as fn, sanitizeExtensionConfigActionPatch as fo, OpenAICompatStreamError as fp, runHeadless as fr, ExtensionHudWriter as fs, TOOL_USE_CANCELLED_MESSAGE as ft, PendingInteractionEntry as fu, formatTokenUsage as g, isAllowedRemoteUrl as g_, ExtensionInstallSource as ga, isToolAllowedByUnion as gc, Picked as gd, ContextCategoryId as gf, demoteStaleRunningStatus as gg, ToolBatchExecutor as gh, CompactPromptTooLongError as gi, resolveTheme as gl, isOAuthAccessToken as gm, Trajectory as gn, ExtensionApiVersion as go, assistantMessage as gp, WAIT_TASK_TIMED_OUT_PREFIX as gr, ExtensionStatusOptions as gs, renderStaleReadNotice as gt, PlanResponse as gu, flattenTurns as h, PinnedFetch as h_, ExtensionInstallScope as ha, SkillValidationResult as hc, Owner as hd, ContextCategory as hf, deleteExtensionSessionState as hg, ThinkingLevel as hh, CompactInvalidInputError as hi, resolveChipColor as hl, extractRuntimeCredentials as hm, ReusableExecutionContext as hn, ExtensionAgentPluginOptions as ho, applyOAIToolCacheBreakpoint as hp, writeFile as hr, ExtensionNotifyTone as hs, collectNewlyStaleReadPaths as ht, PlanRequest as hu, _default as i, connectMcpServers as i_, filterExtensionRegistry as ia, PluginDiagnostic as ic, DEFAULT_BUDGET_EXCLUDE_TOOLS as id, effectiveContextWindow as if, SkillSource as ig, RunHookMap as ih, PostCompactRestoreOptions as ii, resolveStorageDirs as il, resolveAnthropicAuthShape as im, EvalVariantSummary as in, WireExtensionConfigItem as io, normalizeOpenRouterModelId as ip, ProviderTranscriptFormat as ir, GuiContributions as is, resolveLegacyPersistDir as it, AnswerValue as iu, MetricAttributes as j, inlineLoadedExtension as ja, SkillInstallErrorCode as jc, AuthMethod as jd, diffCacheDimensions as jf, PairingDropKind as jg, toolOutputByteLength as jh, SummaryToTurnInput as ji, CompletionSubmitContext as jl, CompactFunction as jm, emitEfficiencyMetrics as jn, ExtensionMcpConfigTransform as jo, toPiMessages as jp, shellKill as jr, SpawnTaskOutcome as js, withZidaneExtensionSkill as jt, serializeInteractionResponse as ju, InstrumentOptions as k, defaultExtensionScanPaths as ka, SkillInstallCandidate as kc, sanitizeModelChain as kd, CacheDimensionSnapshot as kf, ORPHANED_TOOL_RESULT_MARKER as kg, TurnUsage as kh, CompactScope as ki, CompletionProvider as kl, ChildRunStats as km, defineMetrics as kn, ExtensionKeybindingDispatchContext as ko, mapCodexStopReason as kp, SkillsReadToolOptions as kr, ExtensionSubagentDef as ks, readSkillEditMarker as kt, makeRequestInteraction as ku, TracingConventions as l, nonOwningMcpView as l_, ExtensionInstallCandidate as la, isSupportedAgentPluginsVersion as lc, singleAgentRegistry as ld, ContextSegmentsInput as lf, SessionData as lg, SessionTurn as lh, selectRecentFiles as li, SyntaxStyles as ll, derivePromptCacheKey as lm, MetricDirection as ln, isValidExtensionConfigValue as lo, OpenAICompatAuthHeader as lp, headlessEventToJsonl as lr, ExtensionHud as ls, resolveTasksDir as lt, InteractionsActions as lu, TokenUsageLike as m, wrapDiscoveredMcpTools as m_, ExtensionInstallResult as ma, SkillValidationIssue as mc, EditPayload as md, ContextBreakdownOptions as mf, currentExtensionSession as mg, ThinkingDecay as mh, compactConversation as mi, ThemeSurfaces as ml, credentialsFromParams as mm, RegisterEvalTestsOptions as mn, EMPTY_EXTENSION_REGISTRY as mo, applyOAICacheBreakpoints as mp, transcriptToProviderMessages as mr, ExtensionNotifyOptions as ms, applyCompactSummaryCutoff as mt, PlanPayload as mu, composePresets as n, McpExecutionBinding as n_, composeExtensionPreset as na, PluginAuthor as nc, BUILTIN_AGENTS as nd, AutoCompactInput as nf, SkillDiagnostic as ng, ResolveContentRefBlock as nh, utf8ByteLength as ni, StorageMode as nl, defaultAnthropicMaxTokens as nm, EvalScorerContext as nn, ExtensionConfigValueItem as no, sanitizeToolSpecs as np, OpenAIChatContentPart as nr, ExtensionToolVerdict as ns, maybePersistToolResult as nt, parseCommandInvocation as nu, GEN_AI_ATTRIBUTES as o, deriveMcpToolMeta as o_, mergeContributions as oa, PluginSchemaKind as oc, PLAN_AGENT as od, ContextSegment as of, CreateSessionOptions as og, SessionEndStatus as oh, buildPostCompactAttachments as oi, ChipColor as ol, resolveAnthropicMaxOutput as om, EvalWorkspaceOptions as on, clampExtensionConfigNumber as oo, ASSISTANT_TOOL_CALLS_TAG as op, formatHeadlessResult as or, LoadedPluginRecord as os, resolveMcpWarningsDir as ot, CreateInteractionToolsOptions as ou, ModelUsage as p, resultToString as p_, ExtensionInstallProvenance as pa, writeSkillsToDisk as pc, EditOutcomeKind as pd, ContextBreakdownContributor as pf, createSession as pg, StreamHookContext as ph, CompactStartEvent as pi, ThemeSelect as pl, credentialsFilePath as pm, MetricStats as pn, toWireConfigSchema as po, TOOL_RESULTS_TAG as pp, transcriptToOpenAIMessages as pr, ExtensionNotification as ps, TOOL_USE_SKIPPED_MESSAGE as pt, PlanDecision as pu, OAuthCallbackResult as q, ExtensionConfigEnumItem as qa, installAllowedToolsGate as qc, modelOptionsFor as qd, ZaiParams as qf, fromOpenAI as qg, ToolStateController as qh, AgentOptions as qi, CommandSpawnResult as ql, PromptAudioPart as qm, FormattedHeadlessResult as qn, ExtensionToolCatalogTransform as qo, AnthropicContextManagement as qp, RunSummaryCollector as qr, ManifestValidation as qs, EvalMetricError as qt, RingBufferSink as qu, definePreset as r, attachStderrWarnPump as r_, disposeExtensionRegistry as ra, PluginComponentStatus as rc, DEFAULT_AGENT_ID as rd, OUTPUT_RESERVE_TOKENS as rf, SkillResource as rg, RetryConfig as rh, PostCompactAttachments as ri, StorageSlot as rl, planAnthropicThinking as rm, EvalTestRunner as rn, StoredExtensionConfigItem as ro, OpenRouterParams as rp, OpenAIChatMessage as rr, ExtensionTuiSurface as rs, migrateSessionArtifactDirs as rt, ASK_USER_TOOL as ru, Span as s, expandEnvPlaceholders as s_, partitionExtensionCatalog as sa, SUPPORTED_AGENT_PLUGINS_VERSIONS as sc, accentColor as sd, ContextSegmentFile as sf, LoadSessionOptions as sg, SessionHookContext as sh, selectFilesFromReadState as si, ChipColorMap as sl, PromptCacheKeyContext as sm, EvalWorkspaceSnapshot as sn, coerceExtensionConfigInput as so, OAIMessage as sp, formatHeadlessTurnEvent as sr, TuiContributions as ss, resolvePersistDir as st, InteractionRequest as su, Preset as t, McpConnection as t_, buildExtensionRegistry as ta, LoadedPlugin as tc, BUILD_AGENT as td, AutoCompactDecision as tf, SkillConfig as tg, ResolveContentRef as th, estimateTokens as ti, StorageDirs as tl, credentialIdentity as tm, EvalScorer as tn, ExtensionConfigValue as to, sanitizeToolSchema as tp, HeadlessUsage as tr, ExtensionToolResultTransform as ts, cleanupPersistedSession as tt, executeCommand as tu, TracingHookSet as u, normalizeMcpBlocks as u_, ExtensionInstallError as ua, parseSchemaId as uc, EditDiffDisplay as ud, buildContextSegments as uf, SessionMetaRow as ug, SpawnHookContext as uh, CompactEndEvent as ui, SyntaxTokenStyle as ul, resolvePromptCacheKey as um, MetricEmitter as un, resolveExtensionConfig as uo, OpenAICompatHttpError as up, installHeadlessEventAdapter as ur, ExtensionHudState as us, INTERRUPT_MESSAGE_FOR_TOOL_USE as ut, InteractionsProvider as uu, MutationValidationBatch as v, ModelCatalog as v_, InstalledExtensionTargetOptions as va, parseAllowedToolPattern as vc, SessionMeta as vd, ContextExtensionRow as vf, loadSession as vg, ToolOutcome as vh, CompactDirection as vi, InlineAutocompleteProvider as vl, registerCustomOAuthProvider as vm, TrajectoryStepKind as vn, ExtensionCapability as vo, classifyOpenAICompatError as vp, ValidationResult as vr, ExtensionHostRuntimeBridge as vs, EditSessionTarget as vt, Question as vu, createMutationValidationHooks as w, removeInstalledExtension as wa, InterpolateShellCommandsOptions as wc, chainPositionOf as wd, buildContextBreakdown as wf, createMemoryStore as wg, ToolResultImageRefContent as wh, buildFromCompactPrompt as wi, CompletionState as wl, AgentRunOptions as wm, computeEvalTagScores as wn, ExtensionDefinition as wo, toOAIMessages as wp, createToolSearchTool as wr, ExtensionWorkspacePair as ws, buildZidaneExtensionSkill as wt, SelectQuestion as wu, MutationValidationMutation as x, getModelCatalog as x_, listExtensionCandidates as xa, validateSkillForWrite as xc, ToolCallDisplay as xd, ContextMcpGroup as xf, withExtensionSession as xg, ToolResultDocumentContent as xh, NO_TOOLS_PREAMBLE as xi, patchInlineGhost as xl, OAuthProviderInterface as xm, buildRegisteredEvals as xn, ExtensionContributions as xo, mapOAIFinishReason as xp, tailTruncate as xr, ExtensionRuntimeSurface as xs, SkillEditMarker as xt, QuestionRequest as xu, MutationValidationFailure as y, ModelCatalogEntry as y_, fetchExtensionSource as ya, validateResourcePath as yc, Settings as yd, ContextExtensionSection as yf, resumeChainRunIds as yg, ToolResultAudioContent as yh, CompactPromptBuilder as yi, InlineGhost as yl, resolveOAuthApiKey as ym, artifactPath as yn, ExtensionContext as yo, consumeSSE as yp, validateToolArgs as yr, ExtensionHostRuntimeImpl as ys, ExtensionEditMarker as yt, QuestionChoice as yu, McpCredentialEntry as z, createExtensionPromptBridge as za, SourcedScanPath as zc, ProviderDescriptor as zd, ProviderMeta as zf, TurnInterruptionState as zg, getReadState as zh, defaultRepeatGuardNormalize as zi, CommandAgentResult as zl, McpServerConfig as zm, formatTrajectoryLine as zn, ExtensionRegistry as zo, CerebrasParams as zp, createInteractionTool as zr, isSpawnTool as zs, EvalAgentRunStats as zt, zodToJsonSchema as zu };
19145
- //# sourceMappingURL=index-DfERTrql.d.ts.map
19145
+ //# sourceMappingURL=index-BKyWhILQ.d.ts.map