@mutagent/cli 0.1.279 → 0.1.281

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/lib/secure-file.ts", "../src/lib/config.ts", "../src/lib/errors.ts", "../src/lib/provider-request.ts", "../src/lib/sdk-mappers.ts", "../src/lib/sdk-client.ts", "../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/output.ts", "../src/commands/onboarding.ts", "../src/lib/rc-config.ts", "../src/lib/framework-detection.ts", "../src/lib/installer.ts", "../src/lib/installer-helix.ts", "../src/lib/install-telemetry.ts", "../src/lib/auth-flow.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/config.ts", "../src/commands/workspaces.ts", "../src/lib/ui-links.ts", "../src/commands/providers/index.ts", "../src/commands/providers/add.ts", "../src/lib/api-format.ts", "../../mutagent/src/modules/tenancy/providers/catalog.ts", "../src/commands/providers/update.ts", "../src/commands/providers/delete.ts", "../src/commands/init.ts", "../src/commands/skills.ts", "../src/generated/skill-content.ts", "../src/commands/usage.ts", "../src/commands/hooks/index.ts", "../src/commands/hooks/import-transcript.ts", "../src/commands/hooks/api.ts", "../src/commands/hooks/handlers-core.ts", "../src/commands/hooks/state.ts", "../src/commands/hooks/handlers-v2.ts", "../src/commands/hooks/install.ts", "../src/commands/feedback.ts", "../src/lib/transcript.ts", "../src/lib/feedback-safety.ts", "../src/lib/secret-scan.ts", "../src/lib/by-design.ts", "../src/commands/install/index.ts", "../src/commands/trace.ts", "../src/commands/helix/index.ts", "../src/commands/helix/spawn.ts", "../src/lib/sandbox-api.ts", "../src/lib/sandbox-token.ts", "../src/lib/tty.ts", "../src/commands/helix/session.ts", "../src/lib/sse.ts", "../src/lib/sandbox-stream.ts", "../src/commands/helix/attach.ts", "../src/commands/helix/run.ts", "../src/commands/helix/inventory.ts", "../src/lib/brand.ts", "../src/lib/global-version-flag.ts"],
3
+ "sources": ["../src/lib/secure-file.ts", "../src/lib/config.ts", "../src/lib/errors.ts", "../src/lib/provider-request.ts", "../src/lib/sdk-mappers.ts", "../src/lib/sdk-client.ts", "../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/output.ts", "../src/commands/onboarding.ts", "../src/lib/rc-config.ts", "../src/lib/framework-detection.ts", "../src/lib/installer.ts", "../src/lib/installer-helix.ts", "../src/lib/install-telemetry.ts", "../src/lib/auth-flow.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/config.ts", "../src/commands/workspaces.ts", "../src/lib/ui-links.ts", "../src/commands/providers/index.ts", "../src/commands/providers/add.ts", "../src/lib/api-format.ts", "../../mutagent/src/modules/tenancy/providers/catalog.ts", "../src/commands/providers/update.ts", "../src/commands/providers/delete.ts", "../src/commands/init.ts", "../src/commands/skills.ts", "../src/generated/skill-content.ts", "../src/commands/usage.ts", "../src/commands/hooks/index.ts", "../src/commands/hooks/import-transcript.ts", "../src/commands/hooks/api.ts", "../src/commands/hooks/handlers-core.ts", "../src/commands/hooks/state.ts", "../src/commands/hooks/handlers-v2.ts", "../src/commands/hooks/install.ts", "../src/commands/feedback.ts", "../src/lib/transcript.ts", "../src/lib/feedback-safety.ts", "../src/lib/secret-scan.ts", "../src/lib/by-design.ts", "../src/commands/install/index.ts", "../src/commands/trace.ts", "../src/commands/helix/index.ts", "../src/commands/helix/spawn.ts", "../src/lib/sandbox-api.ts", "../src/lib/sandbox-token.ts", "../src/lib/tty.ts", "../src/commands/helix/session.ts", "../src/lib/sse.ts", "../src/lib/sandbox-stream.ts", "../src/commands/helix/frames.ts", "../src/commands/helix/attach.ts", "../src/commands/helix/send.ts", "../src/commands/helix/session-start.ts", "../src/commands/helix/run.ts", "../src/commands/helix/inventory.ts", "../src/lib/brand.ts", "../src/lib/global-version-flag.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Owner-only file writes for credential material (issue #1558, D13).\n *\n * Every `writeFileSync(CREDENTIALS_FILE, …)` in `lib/config.ts` was called with\n * no `mode`, so the credentials file was created 0644 — world-readable. The API\n * key it holds was therefore readable by every other account on a shared or\n * multi-user machine.\n *\n * WHY A CHMOD IS REQUIRED AND `{ mode: 0o600 }` ALONE IS NOT:\n *\n * `writeFileSync`'s `mode` option is applied by `open(2)` at CREATION time and\n * is ignored outright when the file already exists. Passing the mode fixes\n * only brand-new installs; every user who already has a 0644 credentials file\n * would keep it at 0644 forever, through every subsequent login. The explicit\n * `chmodSync` is what repairs the existing population.\n *\n * Both are kept: the mode closes the window between create and chmod (the file\n * is never briefly world-readable with a key already in it), and the chmod\n * repairs anything written before this change.\n */\n\nimport { writeFileSync, chmodSync } from 'fs';\n\n/** Owner read/write only. No group, no other. */\nexport const SECURE_FILE_MODE = 0o600;\n\n/**\n * Write `contents` to `path` such that the file ends up owner-readable only.\n *\n * Creation uses mode 0600 so the bytes are never world-readable even briefly;\n * the follow-up chmod repairs a pre-existing file whose mode `writeFileSync`\n * would otherwise leave untouched.\n *\n * The chmod is best-effort: on filesystems that do not implement POSIX\n * permissions (a Windows volume, some network mounts) `chmodSync` throws, and\n * failing the whole login over an unsupported permission model would be worse\n * than the weaker mode. The write itself is never swallowed.\n */\nexport function writeSecureFile(path: string, contents: string): void {\n writeFileSync(path, contents, { mode: SECURE_FILE_MODE });\n try {\n chmodSync(path, SECURE_FILE_MODE);\n } catch {\n // Filesystem does not support POSIX modes — the write above still stands.\n }\n}\n",
6
6
  "import { cosmiconfigSync } from 'cosmiconfig';\nimport { z } from 'zod';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport { existsSync, readFileSync, mkdirSync } from 'fs';\nimport type { Config } from '../types/index.js';\nimport { writeSecureFile } from './secure-file.js';\n\nconst configSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().default('https://api.mutagent.io'),\n format: z.enum(['table', 'json']).default('table'),\n timeout: z.number().default(30000),\n defaultWorkspace: z.string().optional(),\n defaultWorkspaceSource: z.enum(['user', 'login-inferred']).optional(),\n defaultOrganization: z.string().optional(),\n});\n\n/**\n * Where `defaultWorkspace` came from.\n *\n * `user` — an explicit `mutagent config set workspace <id>`\n * `login-inferred` — chosen FOR the user at login, when the account had several\n * workspaces and none was marked default\n *\n * The distinction exists because a provider write must not land in a workspace\n * nobody chose (FR-CLI-002). Without it the two are indistinguishable in config,\n * so a login-time guess reads as a deliberate choice and the ambiguity gate can\n * never fire — the guess is simply laundered one layer upstream.\n */\nexport type WorkspaceSource = 'user' | 'login-inferred';\n\nconst credentialsSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().optional(),\n defaultWorkspace: z.string().optional(),\n defaultWorkspaceSource: z.enum(['user', 'login-inferred']).optional(),\n defaultOrganization: z.string().optional(),\n expiresAt: z.string().optional(),\n}).loose();\n\nexport interface FullCredentials {\n apiKey: string;\n endpoint?: string;\n workspaceId?: string;\n organizationId?: string;\n expiresAt?: string;\n}\n\nconst CREDENTIALS_DIR = join(homedir(), '.config', 'mutagent');\nconst CREDENTIALS_FILE = join(CREDENTIALS_DIR, 'credentials.json');\n\nfunction parseJsonSafe<T>(content: string, schema: z.ZodType<T>): T | null {\n try {\n const parsed: unknown = JSON.parse(content);\n return schema.parse(parsed);\n } catch {\n return null;\n }\n}\n\nexport function loadConfig(): Config {\n // Load from cosmiconfig (rc files)\n const explorer = cosmiconfigSync('mutagent');\n const result = explorer.search();\n\n // Safely extract config from cosmiconfig result\n const rcConfig = result?.config as Record<string, unknown> | undefined;\n\n // Load from credentials file\n let credentials: z.infer<typeof credentialsSchema> | null = null;\n if (existsSync(CREDENTIALS_FILE)) {\n credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n }\n\n // Merge configs: ENV > credentials > rc files > defaults\n const merged = {\n providers: {},\n environment: 'production',\n ...rcConfig,\n ...credentials,\n apiKey: process.env.MUTAGENT_API_KEY ?? credentials?.apiKey ?? (rcConfig?.apiKey as string | undefined),\n endpoint: process.env.MUTAGENT_ENDPOINT ?? credentials?.endpoint ?? (rcConfig?.endpoint as string | undefined),\n // ENV first, like apiKey and endpoint above. Without this the documented\n // precedence (\"1. Environment\") had no environment entry for a key the\n // config schema supports, so a fully non-interactive run could supply a key\n // and an endpoint but had no way to name a workspace short of writing a\n // credentials file. `mutagent helix` needs one — sandbox access is minted\n // per workspace — which is what surfaced the gap.\n defaultWorkspace:\n process.env.MUTAGENT_WORKSPACE_ID ??\n credentials?.defaultWorkspace ??\n (rcConfig?.defaultWorkspace as string | undefined),\n // Provenance defaults to 'login-inferred' for anything without an explicit\n // stamp — including rc-file values. An rc file LOOKS like an act of\n // configuration, but `mutagent init` scaffolds it from the same login guess,\n // so trusting it would let logging out and re-initialising UPGRADE a guess\n // into a choice. Only `config set workspace` earns 'user'; everything else\n // is re-verified against the account's real workspaces, which costs a lookup\n // and never costs a credential written somewhere nobody picked.\n //\n // MUTAGENT_WORKSPACE_ID earns 'user' because exporting it IS the deliberate\n // act the gate is looking for — nothing infers it on the operator's behalf,\n // which is exactly what separates it from a scaffolded rc value.\n defaultWorkspaceSource: process.env.MUTAGENT_WORKSPACE_ID\n ? 'user'\n : credentials?.defaultWorkspace\n ? (credentials.defaultWorkspaceSource ?? 'login-inferred')\n : (rcConfig?.defaultWorkspace ? 'login-inferred' : undefined),\n defaultOrganization: credentials?.defaultOrganization ?? (rcConfig?.defaultOrganization as string | undefined),\n };\n\n return configSchema.parse(merged) as Config;\n}\n\nexport function saveCredentials(apiKey: string, endpoint?: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n const config = loadConfig();\n const credentials = {\n apiKey,\n endpoint: endpoint ?? config.endpoint,\n };\n\n writeSecureFile(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\n/**\n * Save full credentials including workspace and organization info\n * Used by browser auth flow which returns complete credential set\n */\nexport function saveFullCredentials(creds: FullCredentials): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n // Load existing credentials to preserve any custom settings\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n // A workspace id arriving through the LOGIN flow was picked for the user, not\n // by them — auth-flow takes `workspaces.find(isDefault) ?? workspaces[0]`.\n // Record that provenance so a provider write can refuse to land in a guessed\n // workspace (FR-CLI-002). An explicit `config set workspace` overwrites\n // this with 'user'. A pre-existing 'user' choice is never downgraded.\n const existingSource = existingCredentials.defaultWorkspaceSource as WorkspaceSource | undefined;\n const workspaceChanged = creds.workspaceId !== undefined\n && creds.workspaceId !== existingCredentials.defaultWorkspace;\n const source: WorkspaceSource | undefined = creds.workspaceId === undefined\n ? existingSource\n : workspaceChanged\n ? 'login-inferred'\n : (existingSource ?? 'login-inferred');\n\n const credentials = {\n ...existingCredentials,\n apiKey: creds.apiKey,\n endpoint: creds.endpoint ?? existingCredentials.endpoint ?? 'https://api.mutagent.io',\n defaultWorkspace: creds.workspaceId ?? existingCredentials.defaultWorkspace,\n defaultWorkspaceSource: source,\n defaultOrganization: creds.organizationId ?? existingCredentials.defaultOrganization,\n expiresAt: creds.expiresAt,\n };\n\n writeSecureFile(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\nexport function clearCredentials(): void {\n if (existsSync(CREDENTIALS_FILE)) {\n writeSecureFile(CREDENTIALS_FILE, JSON.stringify({}));\n }\n}\n\nexport function hasCredentials(): boolean {\n if (process.env.MUTAGENT_API_KEY) return true;\n if (!existsSync(CREDENTIALS_FILE)) return false;\n\n const credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n return credentials?.apiKey !== undefined && credentials.apiKey !== '';\n}\n\nexport function getApiKey(): string | undefined {\n return process.env.MUTAGENT_API_KEY ?? loadConfig().apiKey;\n}\n\nexport function setDefaultWorkspace(\n workspaceId: string,\n source: WorkspaceSource = 'user'\n): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultWorkspace: workspaceId,\n // Provenance is the CALLER's to state, and defaults to 'user' because the\n // only user-facing caller is `mutagent config set workspace`. Machine\n // callers that pick a workspace FOR the user — `init`'s auto-correction to\n // workspaces[0], for instance — must pass 'login-inferred', or the gate\n // that exists to refuse a guessed workspace is handed a laundered guess.\n defaultWorkspaceSource: source,\n };\n\n writeSecureFile(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n\nexport function setDefaultOrganization(organizationId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultOrganization: organizationId,\n };\n\n writeSecureFile(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n",
@@ -15,7 +15,7 @@
15
15
  "/**\n * Shared `.mutagentrc.json` scaffolding.\n *\n * The config write used to live inline in `commands/init.ts`. It is extracted\n * here so BOTH `mutagent init` and the post-login onboarding flow write the\n * config through the SAME code path (no reimplementation, no drift).\n *\n * `scaffoldRcConfig()` is the non-interactive creation path: it derives the\n * config from `loadConfig()` — which resolves the credentials file the login\n * flow just wrote (endpoint + defaultWorkspace + defaultOrganization) — and\n * never clobbers an existing `.mutagentrc.json`.\n */\n\nimport { join } from 'path';\nimport { writeFileSync } from 'fs';\nimport { loadConfig } from './config.js';\nimport { hasRcConfig } from './framework-detection.js';\n\nexport interface MutagentRcConfig {\n defaultWorkspace?: string;\n defaultOrganization?: string;\n endpoint?: string;\n framework?: string;\n}\n\n/** Write `.mutagentrc.json` to `cwd`. Overwrites — callers guard with hasRcConfig. */\nexport function writeRcConfig(config: MutagentRcConfig, cwd: string = process.cwd()): void {\n const rcPath = join(cwd, '.mutagentrc.json');\n writeFileSync(rcPath, JSON.stringify(config, null, 2) + '\\n');\n}\n\nexport interface RcScaffoldResult {\n /** True when a new `.mutagentrc.json` was written. */\n created: boolean;\n /** True when a `.mutagentrc.json` already existed and was left untouched. */\n alreadyPresent: boolean;\n /** The config that was written (or that already-present skipped writing). */\n config: MutagentRcConfig;\n}\n\n/** Injectable seams so the fs/config path is unit-testable without real IO. */\nexport interface RcScaffoldDeps {\n loadConfig?: typeof loadConfig;\n hasRcConfig?: (cwd: string) => boolean;\n writeRcConfig?: (config: MutagentRcConfig, cwd: string) => void;\n}\n\n/**\n * Non-interactively create `.mutagentrc.json` in `cwd` from the post-login\n * config. Reads endpoint + defaultWorkspace + defaultOrganization from\n * `loadConfig()` (no re-prompt for workspace). NEVER clobbers an existing file.\n */\nexport function scaffoldRcConfig(\n cwd: string = process.cwd(),\n deps: RcScaffoldDeps = {},\n): RcScaffoldResult {\n const load = deps.loadConfig ?? loadConfig;\n const hasRc = deps.hasRcConfig ?? hasRcConfig;\n const write = deps.writeRcConfig ?? writeRcConfig;\n\n const cfg = load();\n const rcConfig: MutagentRcConfig = {\n endpoint: cfg.endpoint ?? 'https://api.mutagent.io',\n ...(cfg.defaultWorkspace ? { defaultWorkspace: cfg.defaultWorkspace } : {}),\n ...(cfg.defaultOrganization ? { defaultOrganization: cfg.defaultOrganization } : {}),\n };\n\n if (hasRc(cwd)) {\n return { created: false, alreadyPresent: true, config: rcConfig };\n }\n\n write(rcConfig, cwd);\n return { created: true, alreadyPresent: false, config: rcConfig };\n}\n",
16
16
  "import { existsSync, readFileSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm';\n\nexport interface FrameworkDetection {\n name: string;\n displayName: string;\n npmPackage: string;\n}\n\n// =============================================================================\n// Framework Detection Map\n// =============================================================================\n\n/**\n * Maps package.json dependency names to framework info.\n * Order matters: more specific packages should come first.\n *\n * Detection records the framework in `.mutagentrc.json` only. There is no\n * per-framework MutagenT package to recommend — the per-framework tracing\n * exporter packages were retired along with the observability stack.\n */\nexport const FRAMEWORK_DETECTION_MAP: Record<string, FrameworkDetection> = {\n '@mastra/core': {\n name: 'mastra',\n displayName: 'Mastra',\n npmPackage: '@mastra/core',\n },\n '@langchain/langgraph': {\n name: 'langgraph',\n displayName: 'LangGraph',\n npmPackage: '@langchain/langgraph',\n },\n 'langchain': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: 'langchain',\n },\n '@langchain/core': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: '@langchain/core',\n },\n '@ai-sdk/core': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: '@ai-sdk/core',\n },\n 'ai': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: 'ai',\n },\n '@google/genai': {\n name: 'generic',\n displayName: 'Google GenAI',\n npmPackage: '@google/genai',\n },\n 'openai': {\n name: 'openai',\n displayName: 'OpenAI SDK',\n npmPackage: 'openai',\n },\n};\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Detect the package manager by scanning lockfiles in cwd\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManager {\n if (existsSync(join(cwd, 'bun.lockb')) || existsSync(join(cwd, 'bun.lock'))) {\n return 'bun';\n }\n if (existsSync(join(cwd, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (existsSync(join(cwd, 'yarn.lock'))) {\n return 'yarn';\n }\n if (existsSync(join(cwd, 'package-lock.json'))) {\n return 'npm';\n }\n\n // Fallback: check if bun is available\n try {\n execSync('bun --version', { stdio: 'ignore' });\n return 'bun';\n } catch {\n return 'npm';\n }\n}\n\n/**\n * Build an install command for the given package manager and packages\n */\nexport function getInstallCommand(pm: PackageManager, packages: string[]): string {\n const pkgList = packages.join(' ');\n const commands: Record<PackageManager, string> = {\n bun: `bun add ${pkgList}`,\n npm: `npm install ${pkgList}`,\n yarn: `yarn add ${pkgList}`,\n pnpm: `pnpm add ${pkgList}`,\n };\n return commands[pm];\n}\n\n/**\n * Detect framework from package.json dependencies in cwd\n */\nexport function detectFrameworkFromPackageJson(cwd: string = process.cwd()): FrameworkDetection | null {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) {\n return null;\n }\n\n let pkg: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> };\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as typeof pkg;\n } catch {\n return null;\n }\n\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n\n // Check detection map in order (more specific first)\n for (const [depName, framework] of Object.entries(FRAMEWORK_DETECTION_MAP)) {\n if (depName in allDeps) {\n return framework;\n }\n }\n\n return null;\n}\n\n/**\n * Check if .mutagentrc.json already exists in cwd\n */\nexport function hasRcConfig(cwd: string = process.cwd()): boolean {\n return existsSync(join(cwd, '.mutagentrc.json'));\n}\n",
17
17
  "import { MutagentError } from './errors.js';\nimport { hasCredentials } from './config.js';\nimport { installHelix, type HelixDeps } from './installer-helix.js';\nimport { reportInstall, type TelemetryDeps } from './install-telemetry.js';\n\n// =============================================================================\n// Package + harness taxonomy\n// =============================================================================\n\n/** Packages installable via `mutagent install`. */\nexport const VALID_PACKAGES = ['helix'] as const;\nexport type ValidPackage = (typeof VALID_PACKAGES)[number];\n\n/**\n * Install targets that USED to exist and deliberately no longer do.\n *\n * Both resolved to public npm packages that were unpublished when early access\n * ended, so the old path can now only ever 404. They are rejected BY NAME,\n * ahead of the generic unknown-package check, because the two errors answer\n * different questions: \"Unknown package\" tells a user their input was invalid,\n * which is unhelpful and faintly wrong when the command they typed worked last\n * week. What they actually need is where the capability went.\n *\n * The redirect is honest rather than a polite deflection: the released helix\n * payload ships `mutagent-diagnostics/` and `mutagent-evaluator/` — the real\n * skills — alongside the `mutagent-cli` binary. Installing helix genuinely\n * delivers what someone typing `install diagnostics` came for.\n *\n * Keyed by the retired TARGET name; the value is the npm package it used to\n * resolve to, named in the error so a user searching their shell history for\n * \"@mutagent/diagnostics\" finds the explanation.\n */\nexport const RETIRED_PACKAGES: Record<string, string> = {\n diagnostics: '@mutagent/diagnostics',\n evaluator: '@mutagent/evaluator',\n};\n\n/** Target harnesses the install can be pointed at. */\nexport const VALID_HARNESSES = ['claude-code', 'codex', 'omp'] as const;\nexport type Harness = (typeof VALID_HARNESSES)[number];\n\n/**\n * CLI-pinned default version per package. `--version` overrides this.\n * All default to 'latest' today; pin here when a package needs a floor.\n */\nexport const VERSION_MATRIX: Record<ValidPackage, string> = {\n helix: 'latest',\n};\n\n// =============================================================================\n// Install pipeline\n// =============================================================================\n\nexport interface InstallDeps {\n /** Auth-gate override — defaults to config.hasCredentials. */\n isAuthed?: () => boolean;\n /**\n * Helix-path seams (broker/download/extract/init) — injected so the\n * login-brokered R2 flow is unit-testable without hitting the network.\n */\n helix?: HelixDeps;\n /**\n * Install-telemetry seams. Telemetry is fired once, for every package, from\n * the single call site at the end of `installPackage`.\n */\n telemetry?: TelemetryDeps;\n}\n\nexport interface InstallOptions {\n harness: string;\n /**\n * RETIRED (issue #1558, D8). Accepted only so the CLI can fail with an\n * explanation instead of Commander's bare \"unknown option\". Passing `true`\n * throws. Retiring it removed the user's CHOICE of scope — it did not make\n * every install project-local (npm packages still install globally).\n */\n global?: boolean;\n version?: string;\n}\n\nexport interface InstallResult {\n package: ValidPackage;\n version: string;\n harness: Harness;\n /**\n * WHERE the install actually landed. This field states an observed fact, not\n * an intention — reporting the wrong one is the same class of defect as\n * reporting a skill that was never installed.\n *\n * 'project' — ALL packages. Every install now resolves the package into a\n * versioned private prefix and runs its `init` with\n * cwd = process.cwd(), so the project claim is true everywhere.\n *\n * This was `'global'` for the npm packages until #1558 retired `npm install -g`\n * (see `installPackage` step 6 for why). It is kept as a union rather than a\n * literal so a future non-project install has somewhere honest to report.\n */\n scope: 'project' | 'global';\n /**\n * The directory the install was scoped to. Present ONLY for `scope: 'project'`\n * — there is no meaningful project directory for a global npm install, and\n * supplying one would be the fabrication this field exists to prevent.\n */\n projectPath?: string;\n /**\n * Whether a harness skill/plugin was actually installed.\n *\n * This field exists because it used to be assumed. The npm path installs the\n * package and stops; reporting a bare success there told users a skill had\n * landed when none had.\n */\n skillInstalled: boolean;\n /**\n * The exact command the user must run next, when the install is not finished.\n * Part of the documented JSON contract an agent branches on; helix completes\n * its own init, so today nothing populates it.\n */\n nextStep?: string;\n}\n\nfunction isValidPackage(pkg: string): pkg is ValidPackage {\n return (VALID_PACKAGES as readonly string[]).includes(pkg);\n}\n\nfunction isValidHarness(harness: string): harness is Harness {\n return (VALID_HARNESSES as readonly string[]).includes(harness);\n}\n\n/**\n * Login-gated install pipeline. Ordering:\n * 0. retired target → INVALID_ARGUMENTS, naming the helix route (pre-auth:\n * the answer needs no credentials, see the gate for why)\n * 1. auth gate → AUTH_REQUIRED (references `mutagent login`)\n * 2. scope gate → INVALID_ARGUMENTS when the retired `--global` is passed\n * 3. package valid → INVALID_ARGUMENTS\n * 4. harness valid → INVALID_ARGUMENTS\n * 5. helix → login-brokered R2 flow (installer-helix.ts, task CA4)\n *\n * Steps 1-4 are per issue #1191; step 0 was added when diagnostics/evaluator\n * were retired.\n *\n * There is no step 6. A public-npm branch (`npm install --prefix` + the\n * package's own `init`) lived here for `diagnostics` / `evaluator`. Retiring\n * those targets left `helix` as the only valid package, so the branch became\n * unreachable from every input the API accepts — and therefore untestable and\n * uncoverable too. It was removed rather than kept as inert scaffolding; git\n * history has it if a public-npm target ever returns.\n *\n * This function is the unit-testable core: the command action calls it, and\n * tests exercise it directly with mock helix seams + mock isAuthed.\n */\nexport async function installPackage(\n pkg: string,\n opts: InstallOptions,\n deps: InstallDeps = {},\n): Promise<InstallResult> {\n // 0. Retired targets — answered BEFORE the auth gate, deliberately.\n //\n // This is the one check here that needs no credentials to compute: the answer\n // is the same for every caller, logged in or not. Gating it behind auth would\n // make a user log in only to be told the thing they asked for no longer\n // exists — a runaround that costs them a round trip and teaches them nothing.\n // It also runs ahead of the generic unknown-package check so the error can\n // name the route that still works instead of just rejecting the input.\n const retiredNpmName = RETIRED_PACKAGES[pkg];\n if (retiredNpmName !== undefined) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `\"${pkg}\" is no longer an install target — ${retiredNpmName} is no longer published.`,\n `The ${pkg} skill now ships inside helix. Run: mutagent install helix`,\n );\n }\n\n // 1. Auth gate — before any remaining package work.\n const isAuthed = deps.isAuthed ?? hasCredentials;\n if (!isAuthed()) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n `Authentication required to install ${pkg}.`,\n 'Run: mutagent login',\n );\n }\n\n const projectPath = process.cwd();\n\n // 2. Scope gate — `--global` is retired (issue #1558, D8).\n //\n // Failing loudly beats silently ignoring the flag: a user who passes --global\n // has an explicit expectation about WHERE the install lands, and quietly doing\n // something else is how you get a bug report about files appearing in the\n // wrong place.\n //\n // The message describes BOTH paths rather than claiming everything is\n // project-local. It previously said \"installs are scoped to the current\n // project\" and named the CWD — false for diagnostics/evaluator, which npm\n // installs globally. Retiring the flag removed the user's CHOICE of scope; it\n // did not change where npm puts a `-g` install.\n if (opts.global === true) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n '--global is no longer supported: install scope is no longer selectable.',\n [\n 'Every install is project-scoped now:',\n ` the package resolves into ~/.mutagent/<pkg>/<version>, and its skill`,\n ` is installed into the current project (${projectPath}).`,\n 'Nothing is installed globally. Re-run without --global.',\n ].join('\\n'),\n );\n }\n\n // 2. Package validation.\n if (!isValidPackage(pkg)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown package \"${pkg}\". Valid: ${VALID_PACKAGES.join(', ')}`,\n 'Run: mutagent install --help',\n );\n }\n\n // 3. Harness validation.\n if (!isValidHarness(opts.harness)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown harness \"${opts.harness}\". Valid: ${VALID_HARNESSES.join(', ')}`,\n 'Run: mutagent install --help',\n );\n }\n\n const version = opts.version ?? VERSION_MATRIX[pkg];\n\n // 4. helix — login-brokered R2 install (download → sha256-verify → extract →\n // init). The CLI holds NO static R2 secret: it authenticates to the\n // Platform broker with the same x-api-key as every other API call.\n //\n // A `switch` rather than an `if`, so that adding a package to VALID_PACKAGES\n // without giving it a branch here is a COMPILE error (see the exhaustiveness\n // check below) instead of a runtime surprise. That mattered less when there\n // were three packages and a catch-all npm path to fall into; with helix the\n // only target, a missing branch would otherwise fall straight off the end.\n switch (pkg) {\n // `helix` is currently the ONLY ValidPackage, so the linter is right that\n // this case always matches. That is the invariant, not a mistake: the switch\n // exists so the `never` check below breaks the BUILD the moment a second\n // package is added without a branch. Deleting the case to satisfy the rule\n // would delete the guard along with it.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n case 'helix': {\n const { version: resolved } = await installHelix(\n { harness: opts.harness, version },\n deps.helix ?? {},\n );\n // The helix path runs the plugin's own `init` and throws unless it exits 0,\n // so a success here really does mean the skill landed.\n return finish(\n {\n package: pkg,\n version: resolved,\n harness: opts.harness,\n scope: 'project',\n projectPath,\n skillInstalled: true,\n },\n deps,\n );\n }\n default:\n // `pkg` is `never` here only while every ValidPackage has a case above.\n // Add one without a branch and this assignment stops compiling — the\n // failure lands at build time, where it is cheap, rather than on a user.\n return assertNoInstallPath(pkg);\n }\n}\n\n/**\n * Exhaustiveness guard for the install switch. Takes `never`, so it compiles\n * only while every `ValidPackage` is handled; throws if reached at runtime via\n * an untyped caller rather than returning a success that never happened.\n */\nfunction assertNoInstallPath(pkg: never): never {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `No install path is implemented for \"${String(pkg)}\".`,\n 'Run: mutagent install --help',\n );\n}\n\n/**\n * Single post-success exit path: report best-effort telemetry, then hand back\n * the result unchanged.\n *\n * Both install paths funnel through here so telemetry is fired exactly once per\n * successful install and can never diverge between packages. `reportInstall`\n * cannot throw and cannot print (see install-telemetry.ts), so the install\n * result is returned verbatim regardless of what telemetry did.\n */\nasync function finish(result: InstallResult, deps: InstallDeps): Promise<InstallResult> {\n await reportInstall(\n { pkg: result.package, version: result.version, harness: result.harness },\n deps.telemetry ?? {},\n );\n return result;\n}\n",
18
- "/**\n * Helix plugin install flow (login-brokered R2 — option A).\n *\n * The helix plugin is distributed from a PRIVATE Cloudflare R2 bucket and\n * fetched through a Platform signed-URL broker. The CLI holds NO static R2\n * secret: it authenticates to the broker with the SAME credential it uses for\n * every other API call (`x-api-key`, exactly like `commands/feedback.ts`), and\n * the broker returns a short-lived presigned URL + the tarball's sha256.\n *\n * Flow (per issue #1191, task CA4):\n * 1. Resolve auth (apiKey + apiBase + tenancy headers) from CLI config.\n * 2. GET {apiBase}/api/helix/plugin/download?version=<v|latest> → descriptor.\n * 3. Download the tgz from the presigned URL into ~/.mutagent/helix/<version>/\n * (temp file + atomic rename).\n * 4. Verify sha256 of the download against the descriptor. Mismatch → delete\n * + throw an integrity error (non-zero exit).\n * 5. Extract the tarball into ~/.mutagent/helix/<version>/.\n * 6. Locate the plugin init bin from the extracted package.json `bin`, then\n * spawn `node <bin> init` with cwd = the user's project. No scope flag is\n * forwarded: installs are always project-local (issue #1558, D8), and the\n * plugin installs every harness itself.\n *\n * Install telemetry is NOT fired here. It lives at the single post-success exit\n * point in installer.ts (`finish`), so helix and the npm packages report\n * identically and exactly once. See lib/install-telemetry.ts.\n *\n * Every side-effecting step is an injectable seam (mirroring installer.ts's\n * `CommandRunner`) so the whole path is unit-testable WITHOUT touching the\n * network. Production defaults are used when a seam is not supplied.\n */\n\nimport { spawn } from 'child_process';\nimport { createHash } from 'crypto';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from 'fs';\nimport { MutagentError } from './errors.js';\nimport { resolveApiAuth, type ApiAuth } from './install-telemetry.js';\nimport type { Harness } from './installer.js';\n\n// =============================================================================\n// Types + injectable seams\n// =============================================================================\n\n/** The broker's signed-download descriptor (mutagent/src/modules/helix/model.ts). */\nexport interface HelixBrokerResponse {\n version: string;\n sha256: string;\n url: string;\n expiresIn: number;\n}\n\n/**\n * Resolved authentication context for broker calls.\n *\n * Alias of the shared `ApiAuth` — the broker authenticates exactly like every\n * other CLI API call. Kept as a named export for callers already importing it.\n */\nexport type HelixAuth = ApiAuth;\n\n/** Narrow structural subset of the global `fetch` we rely on. */\ntype FetchLike = typeof globalThis.fetch;\n\nexport interface HelixInstallOptions {\n harness: Harness;\n version: string;\n}\n\n/**\n * Injectable seams for the helix install flow. All optional — each falls back\n * to a production default. Tests inject fakes to exercise the flow offline.\n */\nexport interface HelixDeps {\n /** `fetch` used for the broker descriptor (default: global fetch). */\n fetchImpl?: FetchLike;\n /** Resolve apiKey/apiBase/headers (default: read CLI config). */\n resolveAuth?: () => HelixAuth;\n /** Base directory for downloads (default: ~/.mutagent/helix). */\n homeDir?: string;\n /** Download `url` → `destPath` (default: fetch → file). */\n download?: (url: string, destPath: string) => Promise<void>;\n /** sha256 hex of a file (default: node crypto). */\n sha256?: (filePath: string) => Promise<string>;\n /** Extract a tgz into `destDir` (default: spawn `tar -xzf`). */\n extract?: (tgzPath: string, destDir: string) => Promise<void>;\n /** Locate the plugin init bin from an extracted dir (default: read package.json bin). */\n locateInitBin?: (extractedDir: string) => Promise<string>;\n /** Run `node <bin> init …` in `cwd` (child output → stderr). Returns exit code. */\n runInit?: (binPath: string, args: string[], cwd: string) => Promise<number>;\n}\n\n// =============================================================================\n// Orchestrator\n// =============================================================================\n\n/**\n * Execute the full login-brokered helix install. Returns the concrete resolved\n * version (the broker resolves \"latest\" to a real version). Throws MutagentError\n * on any hard failure (auth, integrity, extract, init). Telemetry failures are\n * swallowed and never fail the install.\n */\nexport async function installHelix(\n opts: HelixInstallOptions,\n deps: HelixDeps = {},\n): Promise<{ version: string }> {\n const auth = (deps.resolveAuth ?? resolveApiAuth)();\n const fetchImpl = deps.fetchImpl ?? globalThis.fetch;\n\n // 1–2. Broker call (authed like every other CLI API request).\n const descriptor = await fetchDescriptor(fetchImpl, auth, opts.version);\n\n // 3. Prepare target dir + paths.\n const baseDir = deps.homeDir ?? join(homedir(), '.mutagent', 'helix');\n const versionDir = join(baseDir, descriptor.version);\n mkdirSync(versionDir, { recursive: true });\n\n const tgzPath = join(versionDir, `helix-plugin-${descriptor.version}.tgz`);\n const tmpPath = `${tgzPath}.${String(process.pid)}.${String(Date.now())}.part`;\n\n // 3. Download to a temp file.\n const download = deps.download ?? defaultDownload;\n await download(descriptor.url, tmpPath);\n\n // 4. Integrity: verify sha256 BEFORE trusting the bytes.\n const sha256 = deps.sha256 ?? defaultSha256;\n const actual = (await sha256(tmpPath)).toLowerCase();\n const expected = descriptor.sha256.toLowerCase();\n if (actual !== expected) {\n safeRm(tmpPath);\n throw new MutagentError(\n 'INTEGRITY_ERROR',\n `Downloaded helix plugin failed sha256 verification (expected ${expected.slice(0, 12)}…, got ${actual.slice(0, 12)}…).`,\n 'The download may be corrupt or tampered with. Retry: mutagent install helix',\n );\n }\n\n // 4. Atomic promote temp → final.\n renameSync(tmpPath, tgzPath);\n\n // 5. Extract.\n const extract = deps.extract ?? defaultExtract;\n await extract(tgzPath, versionDir);\n\n // 6. Locate init bin + run it in the user's project.\n const locateInitBin = deps.locateInitBin ?? defaultLocateInitBin;\n const binPath = await locateInitBin(versionDir);\n\n // The plugin's `init` accepts ONLY --global | --yes | --force | --json. It\n // installs EVERY harness (Claude + Codex) itself, so there is no --harness to\n // forward — passing one made init exit 1 with ERR_PARSE_ARGS_UNKNOWN_OPTION.\n //\n // --global is deliberately never forwarded (issue #1558, D8). The plugin's\n // default scope is project-local, which is now the only scope the CLI offers,\n // so `init` runs with cwd set to the user's project.\n //\n // --yes is ALWAYS forwarded: init is spawned with stdin ignored (see\n // defaultRunInit), so any prompt init raises can never be answered — a\n // prompt here is a guaranteed hang, not a question. Non-interactive is the\n // only mode that exists on this path.\n const initArgs = ['init', '--yes'];\n\n const runInit = deps.runInit ?? defaultRunInit;\n const code = await runInit(binPath, initArgs, process.cwd());\n if (code !== 0) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `helix plugin init exited with code ${String(code)}.`,\n 'Re-run: mutagent install helix — or run the plugin init manually and report the error.',\n );\n }\n\n // Telemetry is fired by installer.ts once this returns — see the file header.\n return { version: descriptor.version };\n}\n\n// =============================================================================\n// Broker descriptor (auth-critical)\n// =============================================================================\n\n/**\n * GET the signed download descriptor from the broker. Authenticated with\n * `x-api-key` — the SAME scheme the CLI uses for `commands/feedback.ts`. A 401\n * means the broker rejected the credential → surface an actionable auth error.\n */\nasync function fetchDescriptor(\n fetchImpl: FetchLike,\n auth: HelixAuth,\n version: string,\n): Promise<HelixBrokerResponse> {\n if (!auth.apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required to install helix.',\n 'Run: mutagent login',\n );\n }\n\n const url = `${auth.apiBase}/api/helix/plugin/download?version=${encodeURIComponent(version)}`;\n\n let res: Response;\n try {\n res = await fetchImpl(url, {\n method: 'GET',\n headers: { 'x-api-key': auth.apiKey, ...auth.headers },\n });\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Could not reach the Mutagent plugin broker.',\n 'Check your network connection or verify the endpoint with: mutagent config show',\n );\n }\n\n if (res.status === 401) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'The plugin broker rejected your credentials.',\n 'Re-authenticate: mutagent login',\n );\n }\n\n if (!res.ok) {\n const detail = await readErrorMessage(res);\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin broker returned ${String(res.status)}.${detail ? ` ${detail}` : ''}`,\n 'Verify the requested version exists, then retry: mutagent install helix',\n );\n }\n\n const raw: unknown = await res.json();\n if (!isBrokerResponse(raw)) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n 'Plugin broker returned a malformed response (missing version/sha256/url).',\n 'Retry: mutagent install helix — if it persists, report it.',\n );\n }\n return raw;\n}\n\n// =============================================================================\n// Production defaults for the injectable seams\n// =============================================================================\n\n/** Download `url` → `destPath` via fetch, buffering the body then writing once. */\nasync function defaultDownload(url: string, destPath: string): Promise<void> {\n let res: Response;\n try {\n res = await globalThis.fetch(url);\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Failed to download the helix plugin from storage.',\n 'Check your network connection and retry: mutagent install helix',\n );\n }\n if (!res.ok) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin download failed with status ${String(res.status)}.`,\n 'The signed URL may have expired — retry: mutagent install helix',\n );\n }\n const bytes = Buffer.from(await res.arrayBuffer());\n writeFileSync(destPath, bytes);\n}\n\nasync function defaultSha256(filePath: string): Promise<string> {\n return Promise.resolve(createHash('sha256').update(readFileSync(filePath)).digest('hex'));\n}\n\n/** Extract a gzipped tarball using the system `tar` binary. */\nfunction defaultExtract(tgzPath: string, destDir: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const child = spawn('tar', ['-xzf', tgzPath, '-C', destDir], {\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n child.stderr.on('data', (chunk: Buffer) => {\n stderr += chunk.toString('utf-8');\n });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to extract the helix plugin: ${err.message}`,\n 'Ensure \"tar\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Extracting the helix plugin failed (tar exit ${String(code ?? 1)}).${stderr ? ` ${stderr.trim().slice(0, 200)}` : ''}`,\n 'The downloaded archive may be corrupt — retry: mutagent install helix',\n ),\n );\n }\n });\n });\n}\n\n/**\n * Locate the plugin's init bin from the extracted `package.json` `bin` field.\n * npm-pack tarballs unpack under `package/`; fall back to the dir root.\n */\n/**\n * Resolve a package's init binary from an on-disk package directory.\n * EXPORTED (#1558) so the npm path in installer.ts reuses the same resolution\n * helix uses, rather than growing a second, divergent copy.\n */\nexport function defaultLocateInitBin(extractedDir: string): Promise<string> {\n const pkgDir = existsSync(join(extractedDir, 'package', 'package.json'))\n ? join(extractedDir, 'package')\n : extractedDir;\n const pkgJsonPath = join(pkgDir, 'package.json');\n\n if (!existsSync(pkgJsonPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Could not find package.json under ${pkgDir}.`,\n 'The package layout is unexpected — retry the install, or report it.',\n ),\n );\n }\n\n const raw: unknown = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));\n const binRel = resolveBinField(raw);\n if (!binRel) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n 'The helix plugin package.json declares no runnable bin.',\n 'The plugin package is malformed — report: mutagent install helix',\n ),\n );\n }\n\n const binPath = join(pkgDir, binRel);\n if (!existsSync(binPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `The helix plugin bin was not found at ${binRel}.`,\n 'The plugin package is incomplete — report: mutagent install helix',\n ),\n );\n }\n return Promise.resolve(binPath);\n}\n\n/** Spawn `node <bin> <args>` in `cwd`; child output → stderr so stdout stays JSON-clean. */\n/**\n * Run a package's init binary with `cwd` set to the user's project.\n * EXPORTED (#1558) — see defaultLocateInitBin.\n */\nexport function defaultRunInit(binPath: string, args: string[], cwd: string): Promise<number> {\n return new Promise<number>((resolve, reject) => {\n // Child stdout is routed to the PARENT'S STDERR (fd 2), not stdout.\n //\n // `--json` is the mode agents are required to use, and the CLI's own stdout must\n // stay a single parseable JSON document. With `stdio: 'inherit'` the package's\n // init banner landed on stdout ahead of the JSON and `JSON.parse` threw — every\n // agent caller broken. Human users lose nothing: stderr is still displayed.\n const child = spawn('node', [binPath, ...args], { cwd, stdio: ['ignore', 2, 2] });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run the package init: ${err.message}`,\n 'Ensure \"node\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n resolve(code ?? 1);\n });\n });\n}\n\n// =============================================================================\n// Small helpers\n// =============================================================================\n\n/** Prefer the `mutagent-helix` bin; else the first bin value; supports string bin. */\nfunction resolveBinField(pkg: unknown): string | undefined {\n if (!pkg || typeof pkg !== 'object') return undefined;\n const bin = (pkg as { bin?: unknown }).bin;\n if (typeof bin === 'string') return bin;\n if (bin && typeof bin === 'object') {\n const entries = bin as Record<string, unknown>;\n const preferred = entries['mutagent-helix'];\n if (typeof preferred === 'string') return preferred;\n for (const value of Object.values(entries)) {\n if (typeof value === 'string') return value;\n }\n }\n return undefined;\n}\n\nfunction isBrokerResponse(value: unknown): value is HelixBrokerResponse {\n if (!value || typeof value !== 'object') return false;\n const v = value as Record<string, unknown>;\n return (\n typeof v.version === 'string' &&\n typeof v.sha256 === 'string' &&\n typeof v.url === 'string'\n );\n}\n\nasync function readErrorMessage(res: Response): Promise<string | undefined> {\n try {\n const body: unknown = await res.json();\n if (body && typeof body === 'object') {\n const b = body as { message?: unknown; error?: unknown };\n if (typeof b.message === 'string') return b.message;\n if (typeof b.error === 'string') return b.error;\n }\n } catch {\n // No JSON body.\n }\n return undefined;\n}\n\nfunction safeRm(path: string): void {\n try {\n rmSync(path, { force: true });\n } catch {\n // best-effort cleanup\n }\n}\n",
18
+ "/**\n * Helix plugin install flow (login-brokered R2 — option A).\n *\n * The helix plugin is distributed from a PRIVATE Cloudflare R2 bucket and\n * fetched through a Platform signed-URL broker. The CLI holds NO static R2\n * secret: it authenticates to the broker with the SAME credential it uses for\n * every other API call (`x-api-key`, exactly like `commands/feedback.ts`), and\n * the broker returns a short-lived presigned URL + the tarball's sha256.\n *\n * Flow (per issue #1191, task CA4):\n * 1. Resolve auth (apiKey + apiBase + tenancy headers) from CLI config.\n * 2. GET {apiBase}/api/helix/plugin/download?version=<v|latest> → descriptor.\n * 3. Download the tgz from the presigned URL into ~/.mutagent/helix/<version>/\n * (temp file + atomic rename).\n * 4. Verify sha256 of the download against the descriptor. Mismatch → delete\n * + throw an integrity error (non-zero exit).\n * 5. Extract the tarball into ~/.mutagent/helix/<version>/.\n * 6. Locate the plugin init bin from the extracted package.json `bin`, then\n * spawn `node <bin> init` with cwd = the user's project. No scope flag is\n * forwarded: installs are always project-local (issue #1558, D8), and the\n * plugin installs every harness itself.\n *\n * Install telemetry is NOT fired here. It lives at the single post-success exit\n * point in installer.ts (`finish`), so helix and the npm packages report\n * identically and exactly once. See lib/install-telemetry.ts.\n *\n * Every side-effecting step is an injectable seam (mirroring installer.ts's\n * `CommandRunner`) so the whole path is unit-testable WITHOUT touching the\n * network. Production defaults are used when a seam is not supplied.\n */\n\nimport { spawn } from 'child_process';\nimport { createHash } from 'crypto';\nimport { homedir } from 'os';\nimport { join, posix as posixPath, win32 as win32Path, resolve as resolvePath } from 'path';\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from 'fs';\nimport { MutagentError } from './errors.js';\nimport { resolveApiAuth, type ApiAuth } from './install-telemetry.js';\nimport type { Harness } from './installer.js';\n\n// =============================================================================\n// Types + injectable seams\n// =============================================================================\n\n/** The broker's signed-download descriptor (mutagent/src/modules/helix/model.ts). */\nexport interface HelixBrokerResponse {\n version: string;\n sha256: string;\n url: string;\n expiresIn: number;\n}\n\n/**\n * Resolved authentication context for broker calls.\n *\n * Alias of the shared `ApiAuth` — the broker authenticates exactly like every\n * other CLI API call. Kept as a named export for callers already importing it.\n */\nexport type HelixAuth = ApiAuth;\n\n/** Narrow structural subset of the global `fetch` we rely on. */\ntype FetchLike = typeof globalThis.fetch;\n\nexport interface HelixInstallOptions {\n harness: Harness;\n version: string;\n}\n\n/**\n * Injectable seams for the helix install flow. All optional — each falls back\n * to a production default. Tests inject fakes to exercise the flow offline.\n */\nexport interface HelixDeps {\n /** `fetch` used for the broker descriptor (default: global fetch). */\n fetchImpl?: FetchLike;\n /** Resolve apiKey/apiBase/headers (default: read CLI config). */\n resolveAuth?: () => HelixAuth;\n /** Base directory for downloads (default: ~/.mutagent/helix). */\n homeDir?: string;\n /** Download `url` → `destPath` (default: fetch → file). */\n download?: (url: string, destPath: string) => Promise<void>;\n /** sha256 hex of a file (default: node crypto). */\n sha256?: (filePath: string) => Promise<string>;\n /** Extract a tgz into `destDir` (default: spawn `tar -xzf`). */\n extract?: (tgzPath: string, destDir: string) => Promise<void>;\n /** Locate the plugin init bin from an extracted dir (default: read package.json bin). */\n locateInitBin?: (extractedDir: string) => Promise<string>;\n /** Run `node <bin> init …` in `cwd` (child output → stderr). Returns exit code. */\n runInit?: (binPath: string, args: string[], cwd: string) => Promise<number>;\n}\n\n// =============================================================================\n// Orchestrator\n// =============================================================================\n\n/**\n * Execute the full login-brokered helix install. Returns the concrete resolved\n * version (the broker resolves \"latest\" to a real version). Throws MutagentError\n * on any hard failure (auth, integrity, extract, init). Telemetry failures are\n * swallowed and never fail the install.\n */\nexport async function installHelix(\n opts: HelixInstallOptions,\n deps: HelixDeps = {},\n): Promise<{ version: string }> {\n const auth = (deps.resolveAuth ?? resolveApiAuth)();\n const fetchImpl = deps.fetchImpl ?? globalThis.fetch;\n\n // 1–2. Broker call (authed like every other CLI API request).\n const descriptor = await fetchDescriptor(fetchImpl, auth, opts.version);\n\n // 3. Prepare target dir + paths.\n const baseDir = deps.homeDir ?? join(homedir(), '.mutagent', 'helix');\n const versionDir = join(baseDir, descriptor.version);\n mkdirSync(versionDir, { recursive: true });\n\n const tgzPath = join(versionDir, `helix-plugin-${descriptor.version}.tgz`);\n const tmpPath = `${tgzPath}.${String(process.pid)}.${String(Date.now())}.part`;\n\n // 3. Download to a temp file.\n const download = deps.download ?? defaultDownload;\n await download(descriptor.url, tmpPath);\n\n // 4. Integrity: verify sha256 BEFORE trusting the bytes.\n const sha256 = deps.sha256 ?? defaultSha256;\n const actual = (await sha256(tmpPath)).toLowerCase();\n const expected = descriptor.sha256.toLowerCase();\n if (actual !== expected) {\n safeRm(tmpPath);\n throw new MutagentError(\n 'INTEGRITY_ERROR',\n `Downloaded helix plugin failed sha256 verification (expected ${expected.slice(0, 12)}…, got ${actual.slice(0, 12)}…).`,\n 'The download may be corrupt or tampered with. Retry: mutagent install helix',\n );\n }\n\n // 4. Atomic promote temp → final.\n renameSync(tmpPath, tgzPath);\n\n // 5. Extract.\n const extract = deps.extract ?? defaultExtract;\n await extract(tgzPath, versionDir);\n\n // 6. Locate init bin + run it in the user's project.\n const locateInitBin = deps.locateInitBin ?? defaultLocateInitBin;\n const binPath = await locateInitBin(versionDir);\n\n // The plugin's `init` accepts ONLY --global | --yes | --force | --json. It\n // installs EVERY harness (Claude + Codex) itself, so there is no --harness to\n // forward — passing one made init exit 1 with ERR_PARSE_ARGS_UNKNOWN_OPTION.\n //\n // --global is deliberately never forwarded (issue #1558, D8). The plugin's\n // default scope is project-local, which is now the only scope the CLI offers,\n // so `init` runs with cwd set to the user's project.\n //\n // --yes is ALWAYS forwarded: init is spawned with stdin ignored (see\n // defaultRunInit), so any prompt init raises can never be answered — a\n // prompt here is a guaranteed hang, not a question. Non-interactive is the\n // only mode that exists on this path.\n const initArgs = ['init', '--yes'];\n\n const runInit = deps.runInit ?? defaultRunInit;\n const code = await runInit(binPath, initArgs, process.cwd());\n if (code !== 0) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `helix plugin init exited with code ${String(code)}.`,\n 'Re-run: mutagent install helix — or run the plugin init manually and report the error.',\n );\n }\n\n // Telemetry is fired by installer.ts once this returns — see the file header.\n return { version: descriptor.version };\n}\n\n// =============================================================================\n// Broker descriptor (auth-critical)\n// =============================================================================\n\n/**\n * GET the signed download descriptor from the broker. Authenticated with\n * `x-api-key` — the SAME scheme the CLI uses for `commands/feedback.ts`. A 401\n * means the broker rejected the credential → surface an actionable auth error.\n */\nasync function fetchDescriptor(\n fetchImpl: FetchLike,\n auth: HelixAuth,\n version: string,\n): Promise<HelixBrokerResponse> {\n if (!auth.apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required to install helix.',\n 'Run: mutagent login',\n );\n }\n\n const url = `${auth.apiBase}/api/helix/plugin/download?version=${encodeURIComponent(version)}`;\n\n let res: Response;\n try {\n res = await fetchImpl(url, {\n method: 'GET',\n headers: { 'x-api-key': auth.apiKey, ...auth.headers },\n });\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Could not reach the Mutagent plugin broker.',\n 'Check your network connection or verify the endpoint with: mutagent config show',\n );\n }\n\n if (res.status === 401) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'The plugin broker rejected your credentials.',\n 'Re-authenticate: mutagent login',\n );\n }\n\n if (!res.ok) {\n const detail = await readErrorMessage(res);\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin broker returned ${String(res.status)}.${detail ? ` ${detail}` : ''}`,\n 'Verify the requested version exists, then retry: mutagent install helix',\n );\n }\n\n const raw: unknown = await res.json();\n if (!isBrokerResponse(raw)) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n 'Plugin broker returned a malformed response (missing version/sha256/url).',\n 'Retry: mutagent install helix — if it persists, report it.',\n );\n }\n return raw;\n}\n\n// =============================================================================\n// Production defaults for the injectable seams\n// =============================================================================\n\n/** Download `url` → `destPath` via fetch, buffering the body then writing once. */\nasync function defaultDownload(url: string, destPath: string): Promise<void> {\n let res: Response;\n try {\n res = await globalThis.fetch(url);\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Failed to download the helix plugin from storage.',\n 'Check your network connection and retry: mutagent install helix',\n );\n }\n if (!res.ok) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin download failed with status ${String(res.status)}.`,\n 'The signed URL may have expired — retry: mutagent install helix',\n );\n }\n const bytes = Buffer.from(await res.arrayBuffer());\n writeFileSync(destPath, bytes);\n}\n\nasync function defaultSha256(filePath: string): Promise<string> {\n return Promise.resolve(createHash('sha256').update(readFileSync(filePath)).digest('hex'));\n}\n\n/** The argv + working directory a `tar` extraction is spawned with. */\nexport interface TarExtractInvocation {\n /** Argument vector for the `tar` binary (the archive is a BARE filename). */\n args: string[];\n /** Working directory to spawn in — the directory holding the archive. */\n cwd: string;\n}\n\n/**\n * Build the argv + cwd for the system-`tar` extraction (R2.4).\n *\n * WHY the archive is passed as a BARE FILENAME with the cwd set to its\n * directory: GNU tar — which is what Git Bash / MSYS2 / Cygwin ship on Windows\n * — parses an `-f` argument containing a colon as `host:path`, i.e. a REMOTE\n * archive. A Windows temp path (`C:\\Users\\me\\.mutagent\\helix\\1.2.3\\p.tgz`)\n * therefore makes tar try to reach a host named `C`, and the install dies with\n * `Cannot connect to C: resolve failed` on a perfectly good local file.\n * Stripping the directory off the archive argument removes the colon, so no\n * tar flavour can misread it.\n *\n * WHY NOT `--force-local` (the obvious GNU-tar fix): Windows 10 1803+ ships\n * **bsdtar** as `tar.exe`, and bsdtar REJECTS that flag outright — measured on\n * libarchive 3.7.4: `tar: Option --force-local is not supported`. Adding it on\n * win32 would break the majority Windows path (built-in bsdtar) in order to fix\n * the minority one (Git Bash). The cwd form is correct on BOTH flavours, and on\n * macOS/Linux it is a no-op change in behaviour.\n *\n * `-C <destDir>` keeps its full path: only the ARCHIVE argument gets the\n * remote-host treatment, and an absolute `-C` is what keeps the destination\n * independent of the cwd we just changed. A relative `destDir` is resolved\n * against the current process cwd BEFORE the switch, for the same reason.\n *\n * Pure — no spawn, no I/O — so the Windows behaviour is testable from any host.\n *\n * @param platform `process.platform` by default; injected by tests so a\n * `C:\\`-style path is split with Windows path semantics\n * regardless of the OS the suite runs on.\n */\nexport function buildTarExtractInvocation(\n tgzPath: string,\n destDir: string,\n platform: typeof process.platform = process.platform,\n): TarExtractInvocation {\n const p = platform === 'win32' ? win32Path : posixPath;\n const cwd = p.dirname(tgzPath) || '.';\n const archive = p.basename(tgzPath);\n const dest = p.isAbsolute(destDir) ? destDir : resolvePath(destDir);\n return { args: ['-xzf', archive, '-C', dest], cwd };\n}\n\n/** Extract a gzipped tarball using the system `tar` binary. */\nfunction defaultExtract(tgzPath: string, destDir: string): Promise<void> {\n const invocation = buildTarExtractInvocation(tgzPath, destDir);\n return new Promise<void>((resolve, reject) => {\n const child = spawn('tar', invocation.args, {\n cwd: invocation.cwd,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n child.stderr.on('data', (chunk: Buffer) => {\n stderr += chunk.toString('utf-8');\n });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to extract the helix plugin: ${err.message}`,\n 'Ensure \"tar\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Extracting the helix plugin failed (tar exit ${String(code ?? 1)}).${stderr ? ` ${stderr.trim().slice(0, 200)}` : ''}`,\n 'The downloaded archive may be corrupt — retry: mutagent install helix',\n ),\n );\n }\n });\n });\n}\n\n/**\n * Locate the plugin's init bin from the extracted `package.json` `bin` field.\n * npm-pack tarballs unpack under `package/`; fall back to the dir root.\n */\n/**\n * Resolve a package's init binary from an on-disk package directory.\n * EXPORTED (#1558) so the npm path in installer.ts reuses the same resolution\n * helix uses, rather than growing a second, divergent copy.\n */\nexport function defaultLocateInitBin(extractedDir: string): Promise<string> {\n const pkgDir = existsSync(join(extractedDir, 'package', 'package.json'))\n ? join(extractedDir, 'package')\n : extractedDir;\n const pkgJsonPath = join(pkgDir, 'package.json');\n\n if (!existsSync(pkgJsonPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Could not find package.json under ${pkgDir}.`,\n 'The package layout is unexpected — retry the install, or report it.',\n ),\n );\n }\n\n const raw: unknown = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));\n const binRel = resolveBinField(raw);\n if (!binRel) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n 'The helix plugin package.json declares no runnable bin.',\n 'The plugin package is malformed — report: mutagent install helix',\n ),\n );\n }\n\n const binPath = join(pkgDir, binRel);\n if (!existsSync(binPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `The helix plugin bin was not found at ${binRel}.`,\n 'The plugin package is incomplete — report: mutagent install helix',\n ),\n );\n }\n return Promise.resolve(binPath);\n}\n\n/** Spawn `node <bin> <args>` in `cwd`; child output → stderr so stdout stays JSON-clean. */\n/**\n * Run a package's init binary with `cwd` set to the user's project.\n * EXPORTED (#1558) — see defaultLocateInitBin.\n */\nexport function defaultRunInit(binPath: string, args: string[], cwd: string): Promise<number> {\n return new Promise<number>((resolve, reject) => {\n // Child stdout is routed to the PARENT'S STDERR (fd 2), not stdout.\n //\n // `--json` is the mode agents are required to use, and the CLI's own stdout must\n // stay a single parseable JSON document. With `stdio: 'inherit'` the package's\n // init banner landed on stdout ahead of the JSON and `JSON.parse` threw — every\n // agent caller broken. Human users lose nothing: stderr is still displayed.\n const child = spawn('node', [binPath, ...args], { cwd, stdio: ['ignore', 2, 2] });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run the package init: ${err.message}`,\n 'Ensure \"node\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n resolve(code ?? 1);\n });\n });\n}\n\n// =============================================================================\n// Small helpers\n// =============================================================================\n\n/** Prefer the `mutagent-helix` bin; else the first bin value; supports string bin. */\nfunction resolveBinField(pkg: unknown): string | undefined {\n if (!pkg || typeof pkg !== 'object') return undefined;\n const bin = (pkg as { bin?: unknown }).bin;\n if (typeof bin === 'string') return bin;\n if (bin && typeof bin === 'object') {\n const entries = bin as Record<string, unknown>;\n const preferred = entries['mutagent-helix'];\n if (typeof preferred === 'string') return preferred;\n for (const value of Object.values(entries)) {\n if (typeof value === 'string') return value;\n }\n }\n return undefined;\n}\n\nfunction isBrokerResponse(value: unknown): value is HelixBrokerResponse {\n if (!value || typeof value !== 'object') return false;\n const v = value as Record<string, unknown>;\n return (\n typeof v.version === 'string' &&\n typeof v.sha256 === 'string' &&\n typeof v.url === 'string'\n );\n}\n\nasync function readErrorMessage(res: Response): Promise<string | undefined> {\n try {\n const body: unknown = await res.json();\n if (body && typeof body === 'object') {\n const b = body as { message?: unknown; error?: unknown };\n if (typeof b.message === 'string') return b.message;\n if (typeof b.error === 'string') return b.error;\n }\n } catch {\n // No JSON body.\n }\n return undefined;\n}\n\nfunction safeRm(path: string): void {\n try {\n rmSync(path, { force: true });\n } catch {\n // best-effort cleanup\n }\n}\n",
19
19
  "/**\n * Install telemetry — best-effort `package.install` reporting.\n *\n * Fired once after a SUCCESSFUL `mutagent install <package>`, for every\n * package (helix, via the R2 broker path).\n *\n * ── NON-NEGOTIABLE CONTRACT ────────────────────────────────────────────────\n * Telemetry must NEVER break, block, or slow down an install:\n *\n * 1. NEVER THROWS. `reportInstall` has no failure mode a caller can observe.\n * Every error — network, DNS, non-2xx, malformed config, a throwing\n * `fetch` implementation — is swallowed. There is no return value to\n * check, on purpose: there is nothing a caller could usefully do.\n * 2. NEVER PRINTS. No stdout, no stderr, no warnings. A user on a plane\n * sees a clean install.\n * 3. NO-OPS WHEN UNAUTHENTICATED. If no API key can be resolved, the\n * function returns immediately WITHOUT touching the network.\n * Install-then-login is a normal order of operations.\n * 4. BOUNDED LATENCY. The request is aborted after TELEMETRY_TIMEOUT_MS.\n * Worst case for an unreachable API is that one timeout, not a hang.\n *\n * \"Fire-and-forget\" is implemented as *await a bounded, self-swallowing\n * promise* rather than a floating un-awaited one. A floating promise in a CLI\n * is routinely killed when the process exits (so the event is lost anyway) and\n * risks an unhandled rejection escaping to the user's terminal — the exact\n * failure this contract forbids. Awaiting a hard-capped request gives the same\n * \"result is ignored\" semantics with deterministic, testable behaviour.\n *\n * ── PAYLOAD CONTRACT ───────────────────────────────────────────────────────\n * Sends ONLY: package name, version, harness (+ `cliVersion`, the version of\n * the CLI itself, which the endpoint has accepted since #1191 and which the\n * backend keeps to structured logs only — it is NOT part of the activation\n * event metadata). Never paths, never machine identifiers, never user content.\n */\n\nimport { getApiKey, loadConfig } from './config.js';\nimport type { Harness, ValidPackage } from './installer.js';\n\n/** Hard cap on the telemetry request. Aborted, silently, past this. */\nexport const TELEMETRY_TIMEOUT_MS = 1500;\n\n/** Narrow structural subset of the global `fetch` we rely on. */\ntype FetchLike = typeof globalThis.fetch;\n\n/** Resolved authentication context for API calls. */\nexport interface ApiAuth {\n apiBase: string;\n apiKey: string | undefined;\n /** Extra headers (tenancy scoping), mirroring the feedback POST. */\n headers: Record<string, string>;\n}\n\n/** The install telemetry body posted to the backend. */\nexport interface InstallTelemetryEvent {\n pkg: ValidPackage;\n version: string;\n harness: Harness;\n cliVersion: string;\n}\n\n/** Injectable seams so the whole path is unit-testable without a network. */\nexport interface TelemetryDeps {\n fetchImpl?: FetchLike;\n resolveAuth?: () => ApiAuth;\n /** CLI version reported alongside the install (default: CLI_VERSION env). */\n cliVersion?: string;\n timeoutMs?: number;\n}\n\n/**\n * Resolve apiKey / apiBase / tenancy headers from CLI config.\n *\n * Shared by the telemetry post and the helix plugin broker so both authenticate\n * identically (`x-api-key`, exactly like `commands/feedback.ts`).\n */\nexport function resolveApiAuth(): ApiAuth {\n const apiKey = getApiKey();\n const config = loadConfig();\n const apiBase = config.endpoint ?? 'https://api.mutagent.io';\n const headers: Record<string, string> = {};\n if (config.defaultWorkspace) headers['x-workspace-id'] = config.defaultWorkspace;\n if (config.defaultOrganization) headers['x-organization-id'] = config.defaultOrganization;\n return { apiBase, apiKey, headers };\n}\n\n/** Read the CLI version for telemetry. Never throws. */\nexport function readCliVersion(): string {\n return process.env.CLI_VERSION ?? 'unknown';\n}\n\n/**\n * Report a successful install. Best-effort: never throws, never prints,\n * never blocks beyond `timeoutMs`.\n *\n * The whole body is wrapped in a try/catch — including auth resolution, which\n * reads config files and can therefore throw on a malformed/unreadable config.\n * A broken config must not turn a good install into a failure.\n */\nexport async function reportInstall(\n event: Omit<InstallTelemetryEvent, 'cliVersion'>,\n deps: TelemetryDeps = {},\n): Promise<void> {\n try {\n const auth = (deps.resolveAuth ?? resolveApiAuth)();\n\n // Unauthenticated → report nothing, silently. No network call at all.\n if (!auth.apiKey) return;\n\n const fetchImpl = deps.fetchImpl ?? globalThis.fetch;\n const body: InstallTelemetryEvent = {\n pkg: event.pkg,\n version: event.version,\n harness: event.harness,\n cliVersion: deps.cliVersion ?? readCliVersion(),\n };\n\n await fetchImpl(`${auth.apiBase}/api/helix/installs`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': auth.apiKey,\n ...auth.headers,\n },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(deps.timeoutMs ?? TELEMETRY_TIMEOUT_MS),\n });\n } catch {\n // Non-fatal by design — see the contract at the top of this file.\n }\n}\n",
20
20
  "/**\n * Shared login action for `mutagent login` and `mutagent auth login`.\n *\n * Both commands are thin wrappers around `performLoginAction()`. The browser\n * OAuth flow (`performBrowserAuth` from lib/browser-auth.ts) is called from\n * exactly one place in this module — single source of truth for the canonical\n * signup → onboard → authorize CLI session sequence.\n *\n * Decision: .memory/design-principles.md → \"Login Unification (Decision Record)\"\n * Paper trail: .memory/key-learnings/login-unification.md\n */\n\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { saveFullCredentials, hasCredentials } from './config.js';\nimport { validateApiKey, fetchOrganizations, fetchWorkspaces } from './sdk-client.js';\nimport type { OutputFormatter } from './output.js';\nimport { MutagentError } from './errors.js';\nimport { performBrowserAuth, BrowserAuthError } from './browser-auth.js';\n\nexport interface LoginActionOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n isJson: boolean;\n output: OutputFormatter;\n}\n\nexport interface LoginActionResult {\n authenticated: boolean;\n apiKey: string;\n endpoint: string;\n workspace: { id: string; name?: string } | null;\n organization: { id: string; name?: string } | null;\n wasFirstLogin: boolean;\n}\n\ninterface AuthMethodAnswer {\n method: 'browser' | 'apiKey';\n}\n\ninterface LoginAnswers {\n apiKey: string;\n endpoint: string;\n}\n\n/**\n * Shared login entrypoint. Resolution order:\n * 1. MUTAGENT_API_KEY env var → fast path\n * 2. --browser flag → browser OAuth\n * 3. Non-interactive context → auto-browser\n * 4. Interactive TTY → method choice prompt\n */\nexport async function performLoginAction(opts: LoginActionOptions): Promise<LoginActionResult> {\n const { isJson, output } = opts;\n const wasFirstLogin = !hasCredentials();\n const envApiKey: string | undefined = process.env.MUTAGENT_API_KEY;\n const endpoint: string = process.env.MUTAGENT_ENDPOINT ?? opts.endpoint;\n\n // 1. Env var fast path\n if (envApiKey) {\n return loginWithExistingKey(envApiKey, endpoint, output, wasFirstLogin);\n }\n\n // 2. Detect non-interactive environment\n const isNonInteractive =\n opts.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n // 3. JSON + non-interactive without browser flag cannot proceed\n if (isJson && !opts.browser && isNonInteractive) {\n throw new MutagentError(\n 'INTERACTIVE_REQUIRED',\n 'No API key provided. Set MUTAGENT_API_KEY env var or add --browser for browser auth.',\n 'Run: export MUTAGENT_API_KEY=<key> or mutagent login --browser --non-interactive'\n );\n }\n\n // 4. Welcome banner for first-time interactive users\n if (!isNonInteractive && wasFirstLogin) {\n console.log('\\n' + chalk.bold.cyan(' Welcome to Mutagent CLI!') + '\\n');\n console.log(' No credentials found. Please authenticate to continue.\\n');\n }\n\n // 5. Determine method\n let useBrowserAuth = opts.browser === true;\n\n if (!useBrowserAuth && isNonInteractive) {\n output.info('Non-interactive environment detected. Using browser authentication.');\n useBrowserAuth = true;\n }\n\n if (!useBrowserAuth) {\n const methodAnswer = await inquirer.prompt<AuthMethodAnswer>([\n {\n type: 'list',\n name: 'method',\n message: 'How would you like to authenticate?',\n choices: [\n { name: 'Login (opens browser)', value: 'browser' },\n { name: 'API Key (paste existing key)', value: 'apiKey' },\n ],\n },\n ]);\n useBrowserAuth = methodAnswer.method === 'browser';\n }\n\n // 6. Execute chosen path\n if (useBrowserAuth) {\n return loginWithBrowser(endpoint, output, wasFirstLogin);\n }\n return loginWithPastedKey(endpoint, output, wasFirstLogin);\n}\n\n/**\n * Build the canonical JSON response emitted by both `mutagent login --json`\n * and `mutagent auth login --json`. Shape MUST remain byte-identical to the\n * pre-unification `auth.ts` JSON for back-compat with existing agent parsers.\n */\nexport function buildLoginJsonResponse(result: LoginActionResult): Record<string, unknown> {\n return {\n success: true,\n authenticated: result.authenticated,\n endpoint: result.endpoint,\n workspace: result.workspace,\n organization: result.organization,\n _directive: {\n instruction: 'Verify workspace. Run: mutagent workspaces list --json',\n next: ['mutagent workspaces list --json', 'mutagent usage --json'],\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\nasync function loginWithExistingKey(\n apiKey: string,\n endpoint: string,\n output: OutputFormatter,\n wasFirstLogin: boolean\n): Promise<LoginActionResult> {\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n const orgs = await fetchOrganizations(apiKey, endpoint);\n let orgId: string | undefined;\n let orgName: string | undefined;\n let wsId: string | undefined;\n let wsName: string | undefined;\n\n if (orgs.length >= 1 && orgs[0]) {\n orgId = orgs[0].id;\n orgName = orgs[0].name;\n const workspaces = await fetchWorkspaces(apiKey, endpoint, orgId);\n const defaultWs = workspaces.find(w => w.isDefault) ?? workspaces[0];\n if (defaultWs) {\n wsId = defaultWs.id;\n wsName = defaultWs.name;\n }\n }\n\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: wsId,\n organizationId: orgId,\n });\n\n return {\n authenticated: true,\n apiKey,\n endpoint,\n workspace: wsId ? { id: wsId, name: wsName } : null,\n organization: orgId ? { id: orgId, name: orgName } : null,\n wasFirstLogin,\n };\n}\n\nasync function loginWithBrowser(\n endpoint: string,\n output: OutputFormatter,\n wasFirstLogin: boolean\n): Promise<LoginActionResult> {\n // NOTE: This is the ONLY call site of performBrowserAuth in the CLI.\n const spinner = ora({ text: 'Opening browser for authentication...', spinner: 'dots' });\n try {\n spinner.start();\n const result = await performBrowserAuth(\n { endpoint, timeout: 300000, pollInterval: 2000 },\n (message) => {\n spinner.text = message;\n }\n );\n spinner.succeed('Authenticated successfully!');\n\n saveFullCredentials({\n apiKey: result.apiKey,\n endpoint,\n workspaceId: result.workspaceId,\n organizationId: result.organizationId,\n expiresAt: result.expiresAt,\n });\n\n if (result.workspaceName) output.info(`Workspace: ${result.workspaceName}`);\n if (result.organizationName) output.info(`Organization: ${result.organizationName}`);\n\n return {\n authenticated: true,\n apiKey: result.apiKey,\n endpoint,\n workspace: result.workspaceId\n ? { id: result.workspaceId, name: result.workspaceName }\n : null,\n organization: result.organizationId\n ? { id: result.organizationId, name: result.organizationName }\n : null,\n wasFirstLogin,\n };\n } catch (error) {\n spinner.fail('Authentication failed');\n if (error instanceof BrowserAuthError) {\n throw new MutagentError(error.code, error.message, error.getSuggestion());\n }\n throw error;\n }\n}\n\nasync function loginWithPastedKey(\n initialEndpoint: string,\n output: OutputFormatter,\n wasFirstLogin: boolean\n): Promise<LoginActionResult> {\n const answers = await inquirer.prompt<LoginAnswers>([\n {\n type: 'input',\n name: 'endpoint',\n message: 'Mutagent endpoint:',\n default: initialEndpoint,\n },\n {\n type: 'password',\n name: 'apiKey',\n message: 'API Key:',\n mask: '*',\n validate: (input: string): boolean | string => input.length > 0 || 'API key is required',\n },\n ]);\n\n const apiKey = answers.apiKey;\n const endpoint = answers.endpoint;\n\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n // Interactive multi-tenant picker\n let selectedOrgId: string | undefined;\n let selectedOrgName: string | undefined;\n let selectedWsId: string | undefined;\n let selectedWsName: string | undefined;\n\n const orgs = await fetchOrganizations(apiKey, endpoint);\n if (orgs.length === 1 && orgs[0]) {\n selectedOrgId = orgs[0].id;\n selectedOrgName = orgs[0].name;\n } else if (orgs.length > 1) {\n const orgAnswer = await inquirer.prompt<{ orgId: string }>([\n {\n type: 'list',\n name: 'orgId',\n message: 'Select organization:',\n choices: orgs.map(o => ({ name: o.name, value: o.id })),\n },\n ]);\n selectedOrgId = orgAnswer.orgId;\n selectedOrgName = orgs.find(o => o.id === selectedOrgId)?.name;\n }\n\n if (selectedOrgId) {\n const workspaces = await fetchWorkspaces(apiKey, endpoint, selectedOrgId);\n const defaultWs = workspaces.find(w => w.isDefault);\n if (workspaces.length === 1 && workspaces[0]) {\n selectedWsId = workspaces[0].id;\n selectedWsName = workspaces[0].name;\n } else if (defaultWs) {\n selectedWsId = defaultWs.id;\n selectedWsName = defaultWs.name;\n } else if (workspaces.length > 1) {\n const wsAnswer = await inquirer.prompt<{ wsId: string }>([\n {\n type: 'list',\n name: 'wsId',\n message: 'Select workspace:',\n choices: workspaces.map(w => ({\n name: w.name + (w.isDefault ? ' (default)' : ''),\n value: w.id,\n })),\n },\n ]);\n selectedWsId = wsAnswer.wsId;\n selectedWsName = workspaces.find(w => w.id === selectedWsId)?.name;\n }\n }\n\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: selectedWsId,\n organizationId: selectedOrgId,\n });\n\n return {\n authenticated: true,\n apiKey,\n endpoint,\n workspace: selectedWsId ? { id: selectedWsId, name: selectedWsName } : null,\n organization: selectedOrgId ? { id: selectedOrgId, name: selectedOrgName } : null,\n wasFirstLogin,\n };\n}\n",
21
21
  "/**\n * Browser Authentication Flow for CLI\n *\n * Implements the CLI token-based browser authentication flow:\n * 1. Generate unique CLI token\n * 2. Call POST /api/auth/cli/init to register pending auth\n * 3. Open browser with auth URL\n * 4. Poll GET /api/auth/cli/status until completion/timeout/error\n * 5. Return credentials on success\n */\n\nimport { hostname, platform } from 'os';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface BrowserAuthOptions {\n /** API endpoint (e.g., https://api.mutagent.io) */\n endpoint: string;\n /** Timeout in milliseconds (default: 5 minutes) */\n timeout?: number;\n /** Polling interval in milliseconds (default: 2 seconds) */\n pollInterval?: number;\n /** Skip opening browser (for test mode) */\n skipBrowserOpen?: boolean;\n}\n\nexport interface BrowserAuthResult {\n /** The workspace-scoped API key */\n apiKey: string;\n /** Workspace ID for the scoped key */\n workspaceId: string;\n /** Workspace name for display */\n workspaceName: string;\n /** Organization ID */\n organizationId: string;\n /** Organization name for display */\n organizationName: string;\n /** When the key expires (if applicable) */\n expiresAt?: string;\n}\n\nexport interface BrowserAuthInitResponse {\n /** URL to open in browser */\n authUrl: string;\n /** Expiration time in seconds */\n expiresIn: number;\n}\n\nexport type BrowserAuthStatus =\n | 'pending'\n | 'completed'\n | 'expired'\n | 'denied'\n | 'not_found';\n\nexport interface BrowserAuthStatusResponse {\n status: BrowserAuthStatus;\n apiKey?: string;\n workspaceId?: string;\n workspaceName?: string;\n organizationId?: string;\n organizationName?: string;\n expiresAt?: string;\n error?: string;\n}\n\n// =============================================================================\n// Browser Auth Implementation\n// =============================================================================\n\n/**\n * Generate a unique CLI token for authentication\n * Uses crypto.randomUUID for cryptographically secure random tokens\n */\nexport function generateCliToken(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Initialize browser authentication flow with the server\n */\nexport async function initBrowserAuth(\n endpoint: string,\n cliToken: string\n): Promise<BrowserAuthInitResponse> {\n const response = await fetch(`${endpoint}/api/auth/cli/init`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n cliToken,\n hostname: hostname(),\n platform: platform(),\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new BrowserAuthError(\n 'INIT_FAILED',\n 'Failed to initialize browser auth: ' + String(response.status) + ' ' + errorText\n );\n }\n\n const data = (await response.json()) as BrowserAuthInitResponse;\n return data;\n}\n\n/**\n * Poll the server for authentication status\n */\nexport async function pollAuthStatus(\n endpoint: string,\n cliToken: string\n): Promise<BrowserAuthStatusResponse> {\n const response = await fetch(\n `${endpoint}/api/auth/cli/status?token=${encodeURIComponent(cliToken)}`\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new BrowserAuthError(\n 'POLL_FAILED',\n 'Failed to poll auth status: ' + String(response.status) + ' ' + errorText\n );\n }\n\n const data = (await response.json()) as BrowserAuthStatusResponse;\n return data;\n}\n\n/**\n * Open a URL in the system's default browser\n * In test mode (MUTAGENT_TEST_MODE=true), outputs URL to stdout instead\n * In non-interactive mode, prints URL to stdout for AI agents to display\n */\nexport async function openBrowser(url: string): Promise<void> {\n // Test mode: output URL to stdout instead of opening browser\n if (process.env.MUTAGENT_TEST_MODE === 'true') {\n console.log(`AUTH_URL:${url}`);\n return;\n }\n\n // Dynamically import 'open' package\n try {\n const { default: open } = await import('open');\n await open(url);\n } catch {\n // If 'open' package is not available, provide manual instructions\n // In non-interactive mode, this is expected -- just print the URL\n throw new BrowserAuthError(\n 'BROWSER_OPEN_FAILED',\n `Could not open browser automatically. Please visit: ${url}`\n );\n }\n}\n\n/**\n * Sleep utility for polling\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Perform the complete browser authentication flow\n *\n * @param options - Browser auth options\n * @param onStatusUpdate - Optional callback for status updates (for spinners, etc.)\n * @returns Browser auth result with credentials\n */\nexport async function performBrowserAuth(\n options: BrowserAuthOptions,\n onStatusUpdate?: (message: string) => void\n): Promise<BrowserAuthResult> {\n const {\n endpoint,\n timeout = 300000, // 5 minutes default\n pollInterval = 2000, // 2 seconds default\n skipBrowserOpen = false,\n } = options;\n\n // 1. Generate unique CLI token\n const cliToken = generateCliToken();\n\n // 2. Register pending auth with server\n onStatusUpdate?.('Initializing browser authentication...');\n const initResponse = await initBrowserAuth(endpoint, cliToken);\n const { authUrl } = initResponse;\n\n // 3. Open browser (or output URL in test mode / non-interactive mode)\n if (!skipBrowserOpen) {\n onStatusUpdate?.('Opening browser for authentication...');\n try {\n await openBrowser(authUrl);\n } catch (error) {\n // If browser fails to open, continue but inform user\n // This is expected in non-interactive environments (CI, AI agents)\n if (error instanceof BrowserAuthError && error.code === 'BROWSER_OPEN_FAILED') {\n onStatusUpdate?.(error.message);\n } else {\n throw error;\n }\n }\n }\n\n // Always print the URL clearly for non-interactive environments (AI agents, CI)\n // This ensures the URL is visible even if the browser failed to open\n console.log('');\n console.log(' Open this URL to authenticate:');\n console.log('');\n console.log(' ' + authUrl);\n console.log('');\n\n // 4. Poll for completion\n onStatusUpdate?.('Waiting for browser authentication...');\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await sleep(pollInterval);\n\n const status = await pollAuthStatus(endpoint, cliToken);\n\n switch (status.status) {\n case 'pending':\n // Continue polling\n continue;\n\n case 'completed':\n // Success! Return credentials\n if (\n !status.apiKey ||\n !status.workspaceId ||\n !status.workspaceName ||\n !status.organizationId ||\n !status.organizationName\n ) {\n throw new BrowserAuthError(\n 'INCOMPLETE_RESPONSE',\n 'Server returned incomplete auth response'\n );\n }\n return {\n apiKey: status.apiKey,\n workspaceId: status.workspaceId,\n workspaceName: status.workspaceName,\n organizationId: status.organizationId,\n organizationName: status.organizationName,\n expiresAt: status.expiresAt,\n };\n\n case 'expired':\n throw new BrowserAuthError(\n 'AUTH_EXPIRED',\n 'Browser authentication expired. Please try again.'\n );\n\n case 'denied':\n throw new BrowserAuthError(\n 'AUTH_DENIED',\n status.error ?? 'Browser authentication was denied.'\n );\n\n case 'not_found':\n throw new BrowserAuthError(\n 'TOKEN_NOT_FOUND',\n 'Authentication token not found. Please try again.'\n );\n\n default:\n throw new BrowserAuthError(\n 'UNKNOWN_STATUS',\n 'Unknown auth status: ' + String(status.status)\n );\n }\n }\n\n // Timeout\n throw new BrowserAuthError(\n 'AUTH_TIMEOUT',\n 'Browser authentication timed out after 5 minutes. Please try again.'\n );\n}\n\n// =============================================================================\n// Error Classes\n// =============================================================================\n\nexport type BrowserAuthErrorCode =\n | 'INIT_FAILED'\n | 'POLL_FAILED'\n | 'BROWSER_OPEN_FAILED'\n | 'AUTH_EXPIRED'\n | 'AUTH_DENIED'\n | 'AUTH_TIMEOUT'\n | 'TOKEN_NOT_FOUND'\n | 'INCOMPLETE_RESPONSE'\n | 'UNKNOWN_STATUS';\n\nexport class BrowserAuthError extends Error {\n code: BrowserAuthErrorCode;\n\n constructor(code: BrowserAuthErrorCode, message: string) {\n super(message);\n this.name = 'BrowserAuthError';\n this.code = code;\n }\n\n /**\n * Get user-friendly suggestion based on error code\n */\n getSuggestion(): string {\n switch (this.code) {\n case 'INIT_FAILED':\n return 'Check your endpoint configuration and network connection.';\n case 'POLL_FAILED':\n return 'Check your network connection and try again.';\n case 'BROWSER_OPEN_FAILED':\n return 'Copy the URL above and open it manually in your browser.';\n case 'AUTH_EXPIRED':\n case 'AUTH_TIMEOUT':\n return 'Run \"mutagent auth login\" again to restart authentication.';\n case 'AUTH_DENIED':\n return 'Ensure you have access to the workspace and try again.';\n case 'TOKEN_NOT_FOUND':\n case 'INCOMPLETE_RESPONSE':\n case 'UNKNOWN_STATUS':\n return 'Please try again. If the issue persists, contact support.';\n default:\n return 'Please try again.';\n }\n }\n}\n",
@@ -47,21 +47,24 @@
47
47
  "/**\n * Registry of intentional behaviour that is commonly mistaken for a defect\n * (issue #1558, D18).\n *\n * WHY THIS EXISTS\n *\n * Four of fifteen claims in the originating report were not defects. They were\n * deliberate design decisions that, from outside the project, are\n * indistinguishable from breakage: a package that 404s on npm looks unpublished\n * whether it was withheld on purpose or dropped by accident. One reporter\n * hand-wrote a replacement CLI rather than ask, because nothing in the product\n * told him the thing he needed already shipped under another name.\n *\n * That is a documentation failure surfacing as a bug report, and the cheapest\n * place to answer it is the moment someone is typing the report.\n *\n * PROMPT, NEVER A BLOCK\n *\n * A match SURFACES context and submits anyway. It has no veto, and this is not\n * a detail to soften later: these four areas are precisely where a real\n * regression would be easiest to dismiss. If helix genuinely stopped\n * downloading, the draft would read exactly like the known-by-design entry. A\n * registry that could suppress that report would blind the product to its own\n * worst failures while feeling helpful. So the matcher returns entries and\n * nothing else — there is no refusal signal in this module's contract, and the\n * test suite pins that.\n *\n * CONTENT RULE\n *\n * Every string here reaches a user's terminal. No internal code names, no\n * private repository references, no internal organisation names. A user-facing\n * explanation that leaks internal vocabulary explains nothing and discloses\n * something.\n */\n\n/** One known-intentional behaviour, with the signals that suggest it. */\nexport interface ByDesignEntry {\n /** Stable identifier, used in tests and in `--json` output. */\n id: string;\n /** Short headline shown above the explanation. */\n title: string;\n /**\n * Draft-text signals. ANY match selects the entry. Each expression pairs the\n * subject with a symptom so that merely naming a package does not fire it —\n * a user writing \"helix installed fine\" should never be lectured about npm.\n */\n looksLike: RegExp[];\n /** The explanation shown to the user. Plain, specific, and actionable. */\n reality: string;\n}\n\n/** Symptom vocabulary shared by the \"package is not on npm\" entries. */\nconst NOT_FOUND = String.raw`404|not\\s+found|missing|unavailable|unpublished|doesn'?t\\s+exist|does\\s+not\\s+exist|no\\s+such\\s+package|cannot\\s+install|can'?t\\s+install|fails?\\s+to\\s+install`;\n\n/** Symptom vocabulary for \"this command does not exist\". */\nconst NOT_A_COMMAND = String.raw`not\\s+a\\s+command|unknown\\s+command|unrecognized|unrecognised|doesn'?t\\s+exist|does\\s+not\\s+exist|not\\s+found|missing|no\\s+such\\s+command|invalid\\s+command`;\n\n/**\n * Build the two orderings of a subject/symptom pair. Reports are written both\n * ways round (\"tools 404s\" and \"404 on tools\"), and a matcher that only handles\n * one of them fires on a coin flip.\n */\nfunction pairPatterns(subject: string, symptoms: string): RegExp[] {\n return [\n new RegExp(`${subject}[^\\\\n]{0,60}?(?:${symptoms})`, 'i'),\n new RegExp(`(?:${symptoms})[^\\\\n]{0,60}?${subject}`, 'i'),\n ];\n}\n\nconst TOOLS_PKG = String.raw`@mutagent\\/tools`;\nconst HELIX_PKG = String.raw`@mutagent\\/helix`;\n\n/**\n * The four seeded entries. Each was verified against the originating report.\n * Add an entry when a by-design behaviour draws a second mistaken report.\n */\nexport const BY_DESIGN_ENTRIES: ByDesignEntry[] = [\n {\n id: 'mutagent-tools-not-on-npm',\n title: '@mutagent/tools is not published to npm — on purpose',\n looksLike: pairPatterns(TOOLS_PKG, NOT_FOUND),\n reality:\n '@mutagent/tools is intentionally not published to the public npm registry, so a 404 there is the expected result rather than a broken release. Its functionality is compiled into the mutagent-cli binary that ships inside helix — installing helix already gives you the tooling, and there is nothing separate to install. Install it with: mutagent install helix',\n },\n {\n id: 'mutagent-helix-not-on-npm',\n title: '@mutagent/helix is not published to npm — on purpose',\n looksLike: pairPatterns(HELIX_PKG, NOT_FOUND),\n reality:\n 'Helix is not distributed through the public npm registry, so a 404 there is expected. It is delivered by the Mutagent CLI itself, which authenticates you, fetches a signed download from private storage, verifies its checksum, and initializes it into your project. Install it with: mutagent install helix',\n },\n {\n id: 'trace-lives-in-a-different-binary',\n title: 'trace is a mutagent-cli command, not a mutagent command',\n looksLike: [\n ...pairPatterns(String.raw`mutagent\\s+trace`, NOT_A_COMMAND),\n /\\btrace\\b[^\\n]{0,40}?(?:not\\s+a\\s+(?:valid\\s+)?(?:sub)?command|unknown\\s+command)/i,\n ],\n reality:\n 'trace is not a subcommand of mutagent. It lives in mutagent-cli — a different binary — which ships inside helix. Install it with: mutagent install helix, then run: mutagent-cli trace <args>',\n },\n {\n id: 'two-separate-binaries',\n title: 'mutagent and mutagent-cli are two different binaries',\n looksLike: [\n /(?:no|not|missing|can'?t\\s+find|cannot\\s+find|couldn'?t\\s+find|where\\s+is)[^\\n]{0,40}?mutagent-cli\\s+(?:binary|executable|command)/i,\n /mutagent-cli\\s+(?:binary|executable|command)[^\\n]{0,60}?(?:missing|not\\s+found|doesn'?t\\s+exist|does\\s+not\\s+exist|not\\s+installed)/i,\n new RegExp(String.raw`no\\s+mutagent-cli[^\\n]{0,40}?in\\s+@mutagent\\/cli`, 'i'),\n ],\n reality:\n 'mutagent and mutagent-cli are separate binaries that come from separate packages. @mutagent/cli provides the mutagent binary only — account, configuration, and installation commands. The mutagent-cli binary ships inside helix and carries the trace tooling. Having both installed is normal and expected.',\n },\n];\n\n/**\n * Return every registry entry whose signals appear in `draft`, in registry\n * order. An empty array means nothing matched, which is the common case and\n * carries no meaning beyond \"we have no context to add\".\n *\n * This function informs. It does not gate: callers must surface the result and\n * submit the feedback regardless.\n */\nexport function matchByDesign(draft: string): ByDesignEntry[] {\n if (!draft) return [];\n return BY_DESIGN_ENTRIES.filter((entry) =>\n entry.looksLike.some((pattern) => pattern.test(draft)),\n );\n}\n",
48
48
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { handleError } from '../../lib/errors.js';\nimport {\n installPackage,\n VALID_PACKAGES,\n VALID_HARNESSES,\n type InstallDeps,\n} from '../../lib/installer.js';\n\ninterface InstallActionOptions {\n harness: string;\n global?: boolean;\n version?: string;\n}\n\n/**\n * Create the `mutagent install <package>` meta-command.\n *\n * Surface:\n * mutagent install <package> [--harness <claude-code|codex|omp>]\n * [--version <v>] [--json]\n * where <package> ∈ { helix }.\n *\n * `diagnostics` and `evaluator` were removed as install targets when early\n * access ended and their npm packages were unpublished: an install path that\n * resolves to a package no longer on the registry can only ever 404. They are\n * not merely dropped from the list — `installer.ts` rejects them BY NAME with\n * the route that still works, because helix carries both skills (its payload\n * ships `mutagent-diagnostics/` and `mutagent-evaluator/`) along with the\n * `mutagent-cli` binary.\n *\n * Install scope is fixed, not per-invocation: helix installs into the current\n * project. `--global` is retired (issue #1558, D8) but stays REGISTERED so\n * passing it explains what actually happens, rather than Commander's bare\n * \"error: unknown option '--global'\" — which tells a user what they cannot do\n * and nothing about what happens instead.\n *\n * `deps` is injectable so tests can drive the full parse→action→exit path\n * through CommandTester with a deterministic auth gate / command runner\n * (config credential resolution is frozen at module load, so env overrides\n * alone cannot force the unauthenticated state in a test).\n */\nexport function createInstallCommand(deps?: InstallDeps): Command {\n const install = new Command('install')\n .description('Install a Mutagent package (helix)')\n .argument('<package>', `Package to install: ${VALID_PACKAGES.join(', ')}`)\n .option(\n '--harness <harness>',\n `Target harness: ${VALID_HARNESSES.join(', ')}`,\n 'claude-code',\n )\n .option('--global', '(retired) Install scope is fixed per package')\n .option('--version <version>', 'Package version to install (default: latest)')\n .addHelpText('after', `\n${chalk.bold('Arguments & flags:')}\n ${chalk.bold('<package>')} ${VALID_PACKAGES.join(' | ')}\n ${chalk.bold('--harness <h>')} ${VALID_HARNESSES.join(' | ')} ${chalk.dim('(default: claude-code)')}\n ${chalk.bold('--version <v>')} Pin a package version ${chalk.dim('(default: latest)')}\n ${chalk.bold('--json')} Structured output\n\n${chalk.bold('Install scope')} ${chalk.dim('(fixed per package — not selectable)')}:\n ${chalk.bold('helix')} → installed into the current directory\n ${chalk.dim('--global')} is retired: scope is no longer a choice.\n\n${chalk.bold('Examples:')}\n ${chalk.dim('$')} mutagent install helix\n ${chalk.dim('$')} mutagent install helix --harness codex\n ${chalk.dim('$')} mutagent install helix --version 1.2.3\n ${chalk.dim('$')} mutagent install helix --json\n\n${chalk.bold('Packages:')}\n ${chalk.bold('helix')} ${chalk.green('(available)')} — the ADLC (Agent Development Life Cycle Orchestrator). Downloaded from a private\n registry via a login-brokered signed URL, sha256-verified, then\n initialized into your project. No static secret ships in the CLI.\n ${chalk.dim('Installs every harness itself (Claude + Codex) — --harness does not apply.')}\n ${chalk.dim('Carries the diagnostics and evaluator skills, plus the mutagent-cli binary.')}\n\n${chalk.yellow('Note:')} install is login-gated. Run ${chalk.cyan('mutagent login')} first (else exits with a login directive).\n `)\n .action(async (pkg: string, options: InstallActionOptions) => {\n const isJson = getJsonFlag(install);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const result = await installPackage(\n pkg,\n { harness: options.harness, global: options.global, version: options.version },\n deps,\n );\n\n if (isJson) {\n output.output({\n success: true,\n package: result.package,\n version: result.version,\n harness: result.harness,\n scope: result.scope,\n // `projectPath` appears ONLY when the install really targeted a\n // project (helix). The global npm path reports no path at all rather\n // than inventing one.\n ...(result.projectPath ? { projectPath: result.projectPath } : {}),\n // Stated explicitly so an agent can branch on it. `success: true`\n // means \"the install step did what it does\", NOT \"you are ready\".\n skillInstalled: result.skillInstalled,\n ...(result.nextStep ? { nextStep: result.nextStep } : {}),\n _links: {\n install: 'mutagent install <package> [--harness <h>] [--version <v>]',\n login: 'mutagent login',\n },\n });\n } else if (result.skillInstalled) {\n output.success(\n `Installed ${result.package}@${result.version} for ${result.harness} in ${result.projectPath ?? 'this project'}`,\n );\n } else {\n // Not reachable today — helix runs its own init and throws unless it\n // exits 0, so a returned result always has skillInstalled:true. Kept\n // because the alternative to an honest incomplete-install message is\n // printing NOTHING for that state, which is the D7 defect returning\n // by omission. The npm-specific wording it used to carry (\"installed\n // globally\", the raw npm argv) went with the npm path.\n output.success(\n `Installed ${result.package}@${result.version}, but the skill is not in place yet`,\n );\n console.log(\n `${chalk.yellow('⚠')} No skill was installed yet — a setup step still has to run.`,\n );\n if (result.nextStep) {\n console.log(`${chalk.blue('→')} Run next: ${chalk.cyan(result.nextStep)}`);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return install;\n}\n",
49
49
  "/**\n * `mutagent trace` — a signpost, not an implementation (issue #1558, D11).\n *\n * `trace` deliberately does NOT live in this binary. It ships in `mutagent-cli`,\n * a different binary from a different package. Users reasonably assume one\n * `mutagent*` binary does everything, so `mutagent trace …` used to fail with\n * Commander's bare \"unknown command\", which reads as \"this feature does not\n * exist\" rather than \"you have the wrong binary\".\n *\n * One reporter concluded the feature was missing and hand-wrote a replacement.\n * That is the cost of an accurate-but-uninformative error.\n *\n * Registering the name lets us answer the question the user actually asked —\n * where is trace — while still exiting non-zero, because in THIS binary the\n * command genuinely did not run. It is a redirect, not a shim: no tracing work\n * happens here and none should ever be added.\n */\n\nimport { Command } from 'commander';\nimport { getJsonFlag } from '../lib/output.js';\nimport { MutagentError, handleError } from '../lib/errors.js';\n\n/**\n * The one-line explanation, shared by the command and the by-design registry so\n * the two can never drift into telling users different stories.\n */\nexport const TRACE_RELOCATION_HINT =\n 'trace lives in the `mutagent-cli` binary, which ships inside helix (install it with: mutagent install helix)';\n\nexport function createTraceCommand(): Command {\n const trace = new Command('trace')\n .description('Not in this binary — trace lives in mutagent-cli')\n // Swallow whatever flags/args the user typed for the real command; we are\n // only here to redirect, and rejecting their argv first would bury the hint\n // under a parse error about a flag that is valid in the other binary.\n .allowUnknownOption(true)\n .allowExcessArguments(true)\n .argument('[args...]', 'Arguments intended for `mutagent-cli trace`')\n .addHelpText(\n 'after',\n `\nThis binary (mutagent) does not provide trace.\n\n ${TRACE_RELOCATION_HINT}\n\nInstall one of those, then run:\n\n mutagent-cli trace <args>\n`,\n )\n .action((args: string[]) => {\n const isJson = getJsonFlag(trace);\n const forwarded = args.length > 0 ? ` ${args.join(' ')}` : ' <args>';\n handleError(\n new MutagentError(\n 'INVALID_ARGUMENTS',\n `\\`mutagent trace\\` is not a command — ${TRACE_RELOCATION_HINT}.`,\n `Run it with the other binary instead: mutagent-cli trace${forwarded}\\nIf mutagent-cli is not installed: mutagent install helix`,\n ),\n isJson,\n );\n });\n\n return trace;\n}\n",
50
- "/**\n * `mutagent helix` — spawn and drive a Helix session running in a cloud\n * sandbox, from the terminal it would run in locally.\n *\n * The whole surface is built around one asymmetry: the sandbox outlives the\n * terminal. So detaching is cheap and reversible (Ctrl-C, a dropped connection,\n * a closed laptop) while destroying takes an explicit `rm`. Everything else —\n * resume-by-sequence-number, gap reporting, stdout/stderr separation — exists to\n * make the reversible case actually reversible.\n *\n * TWO WAYS IN, AND THEY ARE NOT INTERCHANGEABLE\n *\n * `spawn` takes a DEFINITION (`--image`, `--arch`) and gives you a persistent\n * box to attach and exec against. `run` and `exec` without `--sandbox` are\n * ONE-SHOT: they start from a named PRESET, do one thing, and tear the box\n * down. The preset path exists so a caller never has to learn an image\n * reference, a registry or a region — see `helix presets`.\n *\n * NOTE: `mutagent install helix` installs the Helix TOOL locally. This group\n * runs a session REMOTELY. They are different operations on the same noun; the\n * help text below says so, because the collision is not obvious from the names.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { registerSpawnCommand } from './spawn.js';\nimport { registerAttachCommand } from './attach.js';\nimport { registerRunCommand, registerExecCommand } from './run.js';\nimport {\n registerLsCommand,\n registerPresetsCommand,\n registerRmCommand,\n registerTracesCommand,\n} from './inventory.js';\n\nexport function createHelixCommand(): Command {\n const helix = new Command('helix')\n .description('Run Helix sessions in a cloud sandbox')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix run \"fix the failing test\" --prompt \"$(cat agent.md)\"\n ${chalk.dim('$')} mutagent helix exec -- uname -m ${chalk.dim('One command, fresh box')}\n ${chalk.dim('$')} mutagent helix presets ${chalk.dim('What a one-shot can run on')}\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20 ${chalk.dim('Persistent box, then attach')}\n ${chalk.dim('$')} mutagent helix ls ${chalk.dim('What is running')}\n ${chalk.dim('$')} mutagent helix exec --sandbox sbx_1 -- bun test ${chalk.dim('Command in that box')}\n ${chalk.dim('$')} mutagent helix attach sbx_1 --since 412 ${chalk.dim('Resume after a sequence number')}\n ${chalk.dim('$')} mutagent helix traces sbx_1 --json ${chalk.dim('What the session actually did')}\n ${chalk.dim('$')} mutagent helix rm sbx_1 --force ${chalk.dim('Destroy it')}\n\nSubcommands:\n run, exec, spawn, ls, presets, attach, traces, rm\n\nOne-shot vs persistent:\n ${chalk.bold('run')} and ${chalk.bold('exec')} (without --sandbox) start from a named PRESET, do one\n thing and tear the sandbox down. Nothing to clean up, no image to know.\n ${chalk.bold('spawn')} takes an explicit --image and leaves a box running for you to\n ${chalk.bold('attach')} and ${chalk.bold('exec --sandbox')} against until you ${chalk.bold('rm')} it.\n\nLifecycle:\n A spawned sandbox outlives your terminal. Ctrl-C, a dropped connection and a\n closed terminal all DETACH — the session keeps running and can be re-attached.\n Only 'mutagent helix rm <id>' destroys a sandbox, so remember to run it when\n you are finished.\n\nAccess:\n Sandbox access is minted per WORKSPACE, so a workspace must be configured:\n ${chalk.dim('$')} mutagent config set workspace <workspace-id>\n\nOutput:\n Sandbox stdout goes to stdout, sandbox stderr goes to stderr, and anything\n this CLI says about the session goes to stderr. Redirects and pipes therefore\n behave as they would for a locally running process. Spinners and colour are\n suppressed when the output is not a terminal or NO_COLOR is set.\n\nNot to be confused with:\n 'mutagent install helix' — that installs the Helix tool on THIS machine.\n This group runs a session on a REMOTE sandbox.\n\nAI Agent Directive:\n Run 'mutagent helix ls --json' before attach, exec --sandbox, or rm.\n ONLY the streaming paths ('attach', 'spawn' without --detach, 'exec --sandbox'\n without --no-stream) emit NDJSON in --json mode — one object per line, with a\n complete summary object as the final line — because a live stream is not a\n single JSON document until it ends. Everything else returns one JSON object.\n 'run' is always blocking: it takes TWO strings, --prompt (WHO the agent is)\n and the task (WHAT to do). Never fold one into the other.\n Spawning consumes resources until removed — confirm with the user before\n 'spawn' and before 'rm'.\n `,\n );\n\n registerRunCommand(helix);\n registerExecCommand(helix);\n registerSpawnCommand(helix);\n registerLsCommand(helix);\n registerPresetsCommand(helix);\n registerAttachCommand(helix);\n registerTracesCommand(helix);\n registerRmCommand(helix);\n\n return helix;\n}\n",
51
- "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n hostArch,\n openAttachStream,\n sandboxLinks,\n spawnSandbox,\n type SandboxArch,\n type SandboxDefinition,\n type SandboxRecord,\n} from '../../lib/sandbox-api.js';\nimport { canAnimate } from '../../lib/tty.js';\nimport { attachToSandbox, reattachHint } from './session.js';\n\ninterface SpawnOptions {\n image?: string;\n arch?: string;\n name?: string;\n provider?: string;\n env?: string;\n detach?: boolean;\n}\n\nconst ARCHES: SandboxArch[] = ['x86_64', 'arm64'];\n\nexport function registerSpawnCommand(parent: Command): void {\n parent\n .command('spawn')\n .description('Spawn a Helix session in a cloud sandbox and attach to it')\n .requiredOption('--image <ref>', 'Image reference (repository:tag or @digest)')\n .option('--arch <arch>', `Image architecture: ${ARCHES.join(' | ')} (default: this host's)`)\n .option('--name <name>', 'Definition name (default: derived from the image reference)')\n .option('--provider <name>', 'Provider registry key (default: the backend default)')\n .option('--env <name>', 'Environment (secrets + variables) to load at spawn')\n .option('--detach', 'Spawn without attaching — print the ID and return')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20\n ${chalk.dim('$')} mutagent helix spawn --image ghcr.io/example/helix:latest --arch x86_64\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20 --detach --json\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20 --provider docker --env staging\n\n--image is required. A sandbox is spawned from a DEFINITION, and the definition\nnames its own image — there is no default the CLI could invent for you. To run\nsomething without knowing an image reference, use 'mutagent helix run' or\n'mutagent helix exec', which spawn from a named preset instead.\n\n--arch defaults to this host's architecture, on the assumption that you are\nrunning an image you just built. A definition whose arch does not match its\nimage is rejected at preflight rather than emulated, so set it explicitly when\nthe image was built elsewhere.\n\n--env names an Environment (a stored bundle of secrets and variables). It is a\nDIFFERENT axis from --provider, which selects the backend. Secrets never travel\non the command line.\n\nWithout --detach this spawns and immediately attaches, so the common path is a\nsingle command. Ctrl-C then DETACHES — the sandbox keeps running and the\nre-attach command is printed. Use 'mutagent helix rm <id> --force' to destroy it.\n\nAI Agent Directive:\n Prefer --detach --json for automation: it returns one JSON object with the\n sandbox id, so you can decide what to run before committing to a live stream.\n Without --detach, --json output is NDJSON and the final line is the summary.\n A spawned sandbox costs resources until 'mutagent helix rm <id>' — confirm\n with the user before spawning, and tell them the ID afterwards.\n `,\n )\n .action(async (options: SpawnOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // VALIDATE before any API call (§4.5 / HR-6). Every field below is\n // rejected by the server's schema too, but a 422 carrying an inlined\n // TypeBox schema is not an error message a person can act on.\n const definition = buildDefinition(options);\n\n const sandbox = await createSandbox(definition, isJson);\n const id = requireId(sandbox);\n\n if (options.detach) {\n reportDetached(sandbox, id, output, isJson);\n return;\n }\n\n if (isJson) {\n process.stdout.write(`${JSON.stringify({ type: 'spawned', sandbox })}\\n`);\n }\n\n const result = await attachToSandbox({\n id,\n isJson,\n announce: `Spawned sandbox ${id}. Ctrl-C detaches without destroying it.`,\n open: ({ since, signal }) => openAttachStream(id, { since, signal }),\n });\n\n if (isJson) {\n console.log(\n JSON.stringify({\n success: true,\n sandbox,\n end: result.end,\n exitCode: result.exitCode,\n lastSeq: result.lastSeq,\n reconnects: result.reconnects,\n gaps: result.gaps,\n _links: sandboxLinks(id),\n }),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nexport function buildDefinition(options: SpawnOptions): SandboxDefinition {\n const image = options.image?.trim() ?? '';\n if (image === '') {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '--image is required and cannot be empty.',\n 'Example: mutagent helix spawn --image alpine:3.20',\n );\n }\n\n const arch = resolveArch(options.arch);\n\n const definition: SandboxDefinition = {\n // `||` is deliberate and `??` would be a defect here: a whitespace-only\n // `--name` trims to '', which must fall back to the derived name. `??`\n // only catches null/undefined, so it would spawn a sandbox named ''.\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty string must fall back; see above\n name: options.name?.trim() || deriveName(image),\n image,\n arch,\n };\n if (options.provider) definition.provider = options.provider;\n if (options.env) definition.environment = options.env;\n\n return definition;\n}\n\nfunction resolveArch(requested: string | undefined): SandboxArch {\n if (requested !== undefined) {\n const value = requested.trim();\n if (!ARCHES.includes(value as SandboxArch)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--arch must be one of ${ARCHES.join(', ')}, got \"${requested}\".`,\n 'Use --arch arm64 for Apple Silicon images, --arch x86_64 for Intel/AMD.',\n );\n }\n return value as SandboxArch;\n }\n\n const detected = hostArch();\n if (detected === null) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n `This host reports architecture \"${process.arch}\", which has no sandbox equivalent.`,\n `Name it explicitly: --arch ${ARCHES.join(' | --arch ')}`,\n );\n }\n return detected;\n}\n\n/**\n * A readable definition name from the image reference.\n *\n * The name is what shows in `helix ls`, so deriving it from the image is what\n * makes a list of sandboxes readable without a lookup. Sanitised because the\n * schema caps it at 128 characters and a digest reference is longer than that.\n */\nexport function deriveName(image: string): string {\n const slug = image\n .replace(/^.*\\//, '')\n .replace(/[^A-Za-z0-9._-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 120);\n return slug === '' ? 'mutagent-cli' : slug;\n}\n\nasync function createSandbox(\n definition: SandboxDefinition,\n isJson: boolean,\n): Promise<SandboxRecord> {\n if (!canAnimate(isJson)) return spawnSandbox(definition);\n\n const { default: ora } = await import('ora');\n const spinner = ora(`Spawning ${definition.image} (${definition.arch})...`).start();\n try {\n const sandbox = await spawnSandbox(definition);\n spinner.succeed(chalk.green(`Sandbox ${sandbox.id} spawned`));\n return sandbox;\n } catch (error) {\n spinner.fail(chalk.red('Spawn failed'));\n throw error;\n }\n}\n\n/**\n * A sandbox we cannot name is a sandbox we cannot attach to, re-attach to, or\n * destroy — so a missing `id` is a hard failure with the leak called out,\n * not an `undefined` threaded into three later URLs.\n */\nfunction requireId(sandbox: SandboxRecord): string {\n if (typeof sandbox.id === 'string' && sandbox.id !== '') return sandbox.id;\n throw new MutagentError(\n 'INVALID_RESPONSE',\n 'The server created a sandbox but did not return an id.',\n 'The sandbox may still be running — check with: mutagent helix ls',\n );\n}\n\nfunction reportDetached(\n sandbox: SandboxRecord,\n id: string,\n output: OutputFormatter,\n isJson: boolean,\n): void {\n if (isJson) {\n output.output({\n success: true,\n sandbox,\n _links: sandboxLinks(id),\n _directive: {\n instruction:\n 'The sandbox is running and detached. Attach to stream its output, or destroy it when finished — a detached sandbox consumes resources until removed.',\n next: [`mutagent helix attach ${id} --json`, `mutagent helix rm ${id} --json`],\n },\n });\n return;\n }\n\n output.output({\n id,\n status: sandbox.status ?? 'unknown',\n provider: sandbox.provider ?? 'unknown',\n arch: sandbox.arch ?? 'unknown',\n definition: sandbox.definitionName ?? 'unknown',\n });\n console.log('');\n console.log(` Attach: ${reattachHint(id, 0)}`);\n console.log(` Destroy: mutagent helix rm ${id} --force`);\n}\n",
52
- "/**\n * HTTP client for the sandbox API that backs `mutagent helix`.\n *\n * WHY THIS IS NOT THE SDK CLIENT (A-4 exception, disclosed)\n *\n * `.memory/design-principles.md` A-4 says the SDK is the only API client. The\n * sandbox routes are not in `@mutagent/sdk`, and two of them are\n * `text/event-stream` — a generated JSON client has nowhere to put a stream\n * you must consume incrementally. `sdk-client.ts` already carries a private\n * `request()` helper for \"endpoints not yet in SDK\"; this is the same escape\n * hatch, made public and stream-aware. When the routes land in the SDK, the\n * non-streaming calls here should move.\n *\n * AUTH IS A TWO-STEP EXCHANGE, NOT A BEARER PASSTHROUGH (#1517, G-C9)\n *\n * The sandbox routes want `Authorization: Bearer <token>` where the token is\n * an HMAC token the SERVER minted — not a platform API key. This module used\n * to send `Bearer <platform key>`: the right header SHAPE carrying the wrong\n * CLASS of credential, which verified as garbage and made every `helix`\n * command 401. That distinction is the whole trap — the header looked correct\n * in every log and every test that only checked its shape.\n *\n * The platform key now buys a short-lived, workspace-scoped operator token via\n * `POST /api/sandbox/token` (see `sandbox-token.ts`), and THAT is what rides\n * the Bearer header. The platform key itself travels as `x-api-key` on the\n * exchange route only — the way every other MutagenT route in this CLI\n * authenticates — and never becomes a sandbox credential.\n *\n * WHY THE SERVER INSISTS. Sandbox tokens come in three classes (operator ·\n * session · task) so that code running INSIDE a box cannot mint more boxes.\n * A CLI that forwarded the platform key would hand control-plane authority to\n * the first hop and erase that boundary before it could do any work.\n *\n * `x-api-key` is deliberately NOT sent alongside the Bearer token on sandbox\n * routes: sending both would let a contract mismatch pass silently. Tenancy\n * headers are sent because sandbox resources are workspace-scoped like\n * everything else on this server.\n */\n\n/// <reference lib=\"dom\" />\n\nimport { getApiKey, loadConfig } from './config.js';\nimport {\n ApiError,\n AuthenticationError,\n MutagentError,\n NotFoundError,\n WorkspaceContextError,\n} from './errors.js';\nimport { clearCachedToken, getOperatorToken, type ExchangeDeps } from './sandbox-token.js';\n\n// ---------------------------------------------------------------------------\n// Wire shapes — mirrored from mutagent/src/modules/sandbox/model.ts\n// ---------------------------------------------------------------------------\n\n/** CPU architecture a definition targets. Required — the schema has no default. */\nexport type SandboxArch = 'x86_64' | 'arm64';\n\n/** The configuration artifact. `name`, `image` and `arch` are required. */\nexport interface SandboxDefinition {\n name: string;\n image: string;\n arch: SandboxArch;\n environment?: string;\n provider?: string;\n workdir?: string;\n timeoutMs?: number;\n}\n\n/**\n * A sandbox as the server records it.\n *\n * The status field is `status`, NOT `state`. The stream events use `state`;\n * the record uses `status`. Rendering one with the other's name yields a table\n * of \"unknown\" that looks like a server problem.\n */\nexport interface SandboxRecord {\n id: string;\n generation?: number;\n provider?: string;\n arch?: string;\n status?: string;\n definitionName?: string;\n environmentName?: string;\n createdAt?: string;\n [key: string]: unknown;\n}\n\n/** Result of an exec or a one-shot run. */\nexport interface ExecResult {\n exitCode: number;\n stdout: string;\n stderr: string;\n timedOut: boolean;\n /** One-shot only — the box the run happened in. */\n sandboxId?: string;\n preset?: string;\n tornDown?: boolean;\n}\n\nexport interface Preset {\n name: string;\n description?: string;\n arch?: string;\n provider?: string;\n environment?: string;\n}\n\nexport interface PresetList {\n presets: Preset[];\n default: string | null;\n}\n\n/** `event: stdout` / `event: stderr` payload. */\nexport interface SandboxOutputPayload {\n seq: number;\n ts: string;\n text: string;\n}\n\n/** `event: status` payload. Uses `state`, unlike the record's `status`. */\nexport interface SandboxStatusPayload {\n state: string;\n exitCode: number | null;\n}\n\nexport interface SandboxErrorPayload {\n message: string;\n}\n\n/**\n * `event: sandbox` payload — the first frame of a one-shot stream.\n *\n * It arrives before any output precisely so a run that is interrupted still\n * leaves the user with the id of the box it created.\n */\nexport interface SandboxRunPayload {\n sandboxId: string;\n preset: string;\n}\n\n/**\n * `event: result` payload — the last frame before the terminal `status` of a\n * one-shot stream.\n *\n * `exitCode` is nullable because the server refuses to synthesise one: a turn\n * whose invocation failed outright never produced an exit code, and a `0` there\n * would read as success.\n */\nexport interface SandboxResultPayload {\n sandboxId: string;\n preset: string;\n exitCode: number | null;\n timedOut: boolean;\n /** Whether the server CONFIRMED teardown. False means the box may still exist. */\n tornDown: boolean;\n /** Present only when the turn failed rather than exited. */\n error?: string;\n}\n\nexport interface ExecRequest {\n command: string[];\n cwd?: string;\n timeoutMs?: number;\n}\n\n/** Fields every one-shot request shares. No image — presets exist so a caller never learns one. */\nexport interface OneShotCommon {\n preset?: string;\n timeoutMs?: number;\n keep?: boolean;\n}\n\nexport interface AgentRunRequest extends OneShotCommon {\n /** WHO the agent is — the agent definition. */\n prompt: string;\n /** WHAT to do this turn. A different prompt from `prompt`; never concatenated. */\n task: string;\n}\n\nexport interface OneShotRunRequest extends OneShotCommon {\n command: string[];\n cwd?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Connection\n// ---------------------------------------------------------------------------\n\nexport interface SandboxConnection {\n endpoint: string;\n apiKey: string;\n workspaceId: string;\n headers: Record<string, string>;\n}\n\n/**\n * Resolve endpoint + credential + workspace the same way every other command\n * does — env, then credentials file, then rc file — so `helix` cannot drift into\n * its own notion of who you are logged in as or which workspace you are in.\n *\n * `defaultWorkspace` is the same field `sdk-client.ts` and `install-telemetry.ts`\n * read; there is deliberately no new workspace mechanism here. It is REQUIRED\n * rather than optional because the exchange mints per-workspace — without one\n * there is nothing to scope a token to, and failing here with the standard\n * remediation beats a 422 from the server.\n */\nexport function resolveConnection(): SandboxConnection {\n const apiKey = getApiKey();\n if (!apiKey) throw new AuthenticationError();\n\n const config = loadConfig();\n const configured = config.endpoint?.trim();\n const endpoint = (configured === undefined || configured === ''\n ? 'https://api.mutagent.io'\n : configured\n ).replace(/\\/+$/, '');\n\n const workspaceId = requireWorkspace(config.defaultWorkspace);\n\n const headers: Record<string, string> = { 'x-workspace-id': workspaceId };\n if (config.defaultOrganization) headers['x-organization-id'] = config.defaultOrganization;\n\n return { endpoint, apiKey, workspaceId, headers };\n}\n\n/**\n * The workspace the token exchange will be scoped to.\n *\n * Split out and exported so the rule is reachable without `loadConfig()`, which\n * reads the developer's real credentials file and therefore cannot be made to\n * report \"no workspace\" inside a test. A guard that no test can trip is a guard\n * nobody knows is broken.\n *\n * Whitespace counts as absent: `MUTAGENT_WORKSPACE_ID=\" \"` is a mistake, and\n * sending it would trade a clear local error for a confusing remote one.\n */\nexport function requireWorkspace(workspaceId: string | undefined): string {\n if (workspaceId === undefined || workspaceId.trim() === '') {\n throw new WorkspaceContextError(\n 'A workspace is required: sandbox access is minted per workspace, not per account.',\n );\n }\n return workspaceId.trim();\n}\n\n// ---------------------------------------------------------------------------\n// Authenticated transport\n// ---------------------------------------------------------------------------\n\n/** Everything `fetchWithTokenRetry` needs, injected so it can be tested. */\nexport interface RetryTransport {\n /** Perform the HTTP call. */\n doFetch: typeof fetch;\n /** Produce an `Authorization` value, minting fresh when `forceRefresh`. */\n authorization: (forceRefresh: boolean) => Promise<string>;\n /** Called once when the server refuses the token we sent. */\n onTokenRejected: () => void;\n}\n\n/**\n * Fetch a sandbox route with a valid operator token, refreshing once on a 401.\n *\n * The retry decision is made on the raw STATUS, before `toCliError` runs. Doing\n * it after would mean re-deriving \"was this a 401\" from an error class, and 401\n * maps to `AuthenticationError` — the same type `exchangeToken` throws for a bad\n * platform key, so the two would be indistinguishable and a genuinely dead key\n * would drive a retry loop.\n *\n * WHY EXACTLY ONCE. A cached token can pass the local expiry check and still be\n * refused: the server's signing secret rotated, the key was revoked, a clock\n * drifted past the skew. One refresh covers all of those. A SECOND 401 means the\n * freshly minted token was itself refused — a real failure that retrying cannot\n * fix, and looping would turn a bad credential into a request storm.\n *\n * Every dependency is injected so this can be tested without a network, a config\n * file, or the module registry (HR-12). `sandboxFetch` below is the thin\n * production wiring; this is the behaviour worth pinning.\n */\nexport async function fetchWithTokenRetry(\n url: string,\n init: RequestInit,\n baseHeaders: Record<string, string>,\n transport: RetryTransport,\n): Promise<Response> {\n const attempt = async (forceRefresh: boolean): Promise<Response> =>\n transport.doFetch(url, {\n ...init,\n headers: { ...baseHeaders, Authorization: await transport.authorization(forceRefresh) },\n });\n\n const first = await attempt(false);\n if (first.status !== 401) return first;\n\n // The token we sent is provably rejected — drop it so the next process this\n // hour does not start from the same refused credential, then mint once more.\n transport.onTokenRejected();\n\n // Whatever this returns is final. A second 401 is returned to the caller as a\n // 401, NOT retried: the token was freshly minted, so the server is refusing\n // something no further exchange will fix.\n return attempt(true);\n}\n\nasync function sandboxFetch(\n path: string,\n init: RequestInit,\n deps: ExchangeDeps = {},\n): Promise<{ response: Response; endpoint: string }> {\n const connection = resolveConnection();\n const { endpoint } = connection;\n\n try {\n const response = await fetchWithTokenRetry(\n `${endpoint}${path}`,\n init,\n { ...connection.headers, ...toHeaderRecord(init.headers) },\n {\n doFetch: fetch,\n authorization: async (forceRefresh) =>\n `Bearer ${await getOperatorToken(\n { endpoint, apiKey: connection.apiKey, workspaceId: connection.workspaceId },\n { forceRefresh },\n deps,\n )}`,\n onTokenRejected: () => {\n clearCachedToken(deps);\n },\n },\n );\n return { response, endpoint };\n } catch (error) {\n // A MutagenError is already this CLI's vocabulary — an exchange failure\n // (bad key, no workspace access) must reach the user as itself, not be\n // relabelled \"could not reach the API\".\n if (error instanceof MutagentError) throw error;\n throw toNetworkError(error, endpoint);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Error mapping\n// ---------------------------------------------------------------------------\n\nasync function toCliError(response: Response, sandboxId?: string): Promise<MutagentError> {\n const body = await response.text().catch(() => '');\n const message = extractMessage(body) || response.statusText || 'Request failed';\n\n if (response.status === 401) return new AuthenticationError();\n if (response.status === 404 && sandboxId) return new NotFoundError('Sandbox', sandboxId);\n return new ApiError(response.status, message);\n}\n\n/**\n * Pull the one actionable line out of a sandbox error body.\n *\n * The envelope is `{ error, message }` where `error` is the CODE\n * (\"Validation Error\") and `message` is the detail — so reading `error` first\n * prints a category and throws away the cause. That is exactly what happened:\n * a malformed spawn surfaced as the bare string `Error: Validation Error`.\n *\n * But `message` is not simply prose. For a schema rejection it is an ~8KB JSON\n * document with the entire TypeBox schema inlined, so printing it verbatim is\n * worse than printing the code. That document carries a one-line `summary`\n * (\"Property 'definition' is missing\") which is the sentence a user can act on,\n * so it is preferred over both.\n */\nexport function extractMessage(body: string): string {\n const outer = parseRecord(body);\n if (!outer) return body.slice(0, 300);\n\n const code = typeof outer.error === 'string' ? outer.error : '';\n const detail = typeof outer.message === 'string' ? outer.message : '';\n\n const nested = parseRecord(detail);\n const summary = nested && typeof nested.summary === 'string' ? nested.summary : '';\n if (summary !== '') {\n const property = nested && typeof nested.property === 'string' ? nested.property : '';\n const where = property === '' ? '' : ` (at ${property})`;\n return code === '' ? `${summary}${where}` : `${code}: ${summary}${where}`;\n }\n\n // Prose detail, but only when it is prose. An unparsed blob this long is a\n // dump, not a message, and the code alone is more useful than 8KB of schema.\n if (detail !== '' && detail.length <= 400) return detail;\n if (code !== '') return code;\n return body.slice(0, 300);\n}\n\n/**\n * Flatten `HeadersInit` to a plain record so it can be merged with the auth\n * headers. Spreading it directly is wrong for the array form — that spreads\n * indices, not header names — and silently drops every header it touches.\n */\nfunction toHeaderRecord(init: RequestInit['headers']): Record<string, string> {\n if (!init) return {};\n if (init instanceof Headers) {\n const record: Record<string, string> = {};\n init.forEach((value, key) => {\n record[key] = value;\n });\n return record;\n }\n if (Array.isArray(init)) return Object.fromEntries(init);\n return init;\n}\n\n/** A transport failure (DNS, refused, TLS) — never a server-sent status. */\nexport function toNetworkError(error: unknown, endpoint: string): MutagentError {\n const detail = error instanceof Error ? error.message : String(error);\n return new MutagentError(\n 'SANDBOX_UNREACHABLE',\n `Could not reach the MutagenT API at ${endpoint}: ${detail}`,\n 'Check your connection, then verify the endpoint with: mutagent config list',\n 5,\n );\n}\n\n// ---------------------------------------------------------------------------\n// JSON requests\n// ---------------------------------------------------------------------------\n\nasync function requestJson<T>(\n path: string,\n init: RequestInit & { sandboxId?: string } = {},\n): Promise<T> {\n const { sandboxId, ...requestInit } = init;\n\n const { response } = await sandboxFetch(path, {\n ...requestInit,\n headers: { 'Content-Type': 'application/json', ...toHeaderRecord(requestInit.headers) },\n });\n\n if (!response.ok) throw await toCliError(response, sandboxId);\n\n const text = await response.text();\n if (text.trim() === '') return {} as T;\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new MutagentError(\n 'INVALID_RESPONSE',\n `The server returned a non-JSON response for ${path}.`,\n 'Retry, and if it persists report it with: mutagent feedback send \"<what happened>\" --category cli',\n );\n }\n}\n\n/** `POST /api/sandbox` — body is `{ definition }`, and the reply is 201. */\nexport async function spawnSandbox(definition: SandboxDefinition): Promise<SandboxRecord> {\n return requestJson<SandboxRecord>('/api/sandbox', {\n method: 'POST',\n body: JSON.stringify({ definition }),\n });\n}\n\n/** `GET /api/sandbox` — a bare array of records. */\nexport async function listSandboxes(): Promise<SandboxRecord[]> {\n const body = await requestJson<unknown>('/api/sandbox');\n return unwrapList(body) as SandboxRecord[];\n}\n\n/**\n * Accept a bare array or the common single-key envelopes around one.\n *\n * `spans` is in this list because `GET /:id/traces` returns `{ spans: [...] }`\n * — the server's word for them, not `traces`. Omitting it made every sandbox\n * report \"no traces recorded\", which is indistinguishable from a quiet box.\n */\nexport function unwrapList(body: unknown): unknown[] {\n if (Array.isArray(body)) return body;\n if (body && typeof body === 'object') {\n for (const key of ['sandboxes', 'spans', 'traces', 'presets', 'data', 'items'] as const) {\n const value = (body as Record<string, unknown>)[key];\n if (Array.isArray(value)) return value;\n }\n }\n return [];\n}\n\n/** `GET /api/sandbox/:id` — returns `{ status }`, not a full record. */\nexport async function inspectSandbox(id: string): Promise<{ status?: string }> {\n return requestJson<{ status?: string }>(`/api/sandbox/${encodeURIComponent(id)}`, {\n sandboxId: id,\n });\n}\n\nexport async function destroySandbox(id: string): Promise<void> {\n const { response } = await sandboxFetch(`/api/sandbox/${encodeURIComponent(id)}`, {\n method: 'DELETE',\n });\n // Deleting something already gone is a success, not an error (Rule 1.5 /\n // HR-9 idempotence) — a retried teardown must not fail the second time.\n if (response.status === 404) return;\n if (!response.ok) throw await toCliError(response, id);\n}\n\n/** `POST /api/sandbox/:id/exec` — argv, not a shell string. */\nexport async function execSandbox(id: string, body: ExecRequest): Promise<ExecResult> {\n return requestJson<ExecResult>(`/api/sandbox/${encodeURIComponent(id)}/exec`, {\n method: 'POST',\n body: JSON.stringify(body),\n sandboxId: id,\n });\n}\n\n/** `POST /api/sandbox/run` — one command in a fresh box, torn down after. */\nexport async function oneShotRun(body: OneShotRunRequest): Promise<ExecResult> {\n return requestJson<ExecResult>('/api/sandbox/run', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\n/**\n * `POST /api/sandbox/agent/run` — one agent turn in a fresh box.\n *\n * Blocking: the server runs the whole turn and answers once. `openAgentRunStream`\n * is the same call watched live; this is what `--no-stream` uses.\n */\nexport async function agentRun(body: AgentRunRequest): Promise<ExecResult> {\n return requestJson<ExecResult>('/api/sandbox/agent/run', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\nexport async function listPresets(): Promise<PresetList> {\n return requestJson<PresetList>('/api/sandbox/presets');\n}\n\n/** `GET /api/sandbox/:id/traces` — returns `{ spans: [...] }`. */\nexport async function fetchSandboxTraces(id: string): Promise<unknown> {\n return requestJson<unknown>(`/api/sandbox/${encodeURIComponent(id)}/traces`, { sandboxId: id });\n}\n\n// ---------------------------------------------------------------------------\n// Stream requests\n// ---------------------------------------------------------------------------\n\nexport interface StreamRequestOptions {\n /** Resume after this sequence number. Omitted on a first connect. */\n since?: number;\n signal?: AbortSignal;\n}\n\n/** Open `GET /api/sandbox/:id/stream` (attach). */\nexport async function openAttachStream(\n id: string,\n options: StreamRequestOptions = {},\n): Promise<ReadableStream<Uint8Array>> {\n const query = options.since === undefined ? '' : `?since=${String(options.since)}`;\n return openStream(\n `/api/sandbox/${encodeURIComponent(id)}/stream${query}`,\n { id, retryHint: `Retry with: mutagent helix attach ${id}` },\n options,\n );\n}\n\n/** Open `POST /api/sandbox/:id/exec?stream=1` — scoped to this one invocation. */\nexport async function openExecStream(\n id: string,\n body: ExecRequest,\n options: StreamRequestOptions = {},\n): Promise<ReadableStream<Uint8Array>> {\n return openStream(\n `/api/sandbox/${encodeURIComponent(id)}/exec?stream=1`,\n { id, retryHint: `Retry with: mutagent helix attach ${id}` },\n options,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n },\n );\n}\n\n/**\n * Open `POST /api/sandbox/agent/run?stream=1` — one agent turn, watched live.\n *\n * NO SANDBOX ID, and that is not an omission. The box does not exist until this\n * request creates it; its id arrives on the stream as the first `sandbox` event.\n * So the retry hint cannot name one either — and must not invent one, because\n * `mutagent helix attach <something>` for a box that was never created is worse\n * advice than none.\n *\n * ⚠ CALLING THIS TWICE RUNS THE TURN TWICE. There is no resume: the server\n * releases the sandbox the moment this connection drops, so a reconnect would\n * not be picking anything back up — it would be a second spawn, a second agent\n * turn and a second bill. `run.ts` therefore opens it exactly once and does not\n * retry, unlike `helix exec`, which can fall back to the read-only attach\n * endpoint precisely because its box outlives the connection.\n */\nexport async function openAgentRunStream(\n body: AgentRunRequest,\n options: StreamRequestOptions = {},\n): Promise<ReadableStream<Uint8Array>> {\n return openStream(\n '/api/sandbox/agent/run?stream=1',\n { retryHint: 'Retry the turn, or run it blocking with: mutagent helix run ... --no-stream' },\n options,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n },\n );\n}\n\nasync function openStream(\n path: string,\n sandbox: { id?: string; retryHint: string },\n options: StreamRequestOptions,\n init: RequestInit = {},\n): Promise<ReadableStream<Uint8Array>> {\n const { response } = await sandboxFetch(path, {\n ...init,\n headers: { Accept: 'text/event-stream', ...toHeaderRecord(init.headers) },\n signal: options.signal,\n });\n\n if (!response.ok) throw await toCliError(response, sandbox.id);\n if (!response.body) {\n throw new MutagentError(\n 'EMPTY_STREAM',\n 'The server accepted the stream request but sent no body.',\n sandbox.retryHint,\n );\n }\n\n return response.body;\n}\n\n// ---------------------------------------------------------------------------\n// Links\n// ---------------------------------------------------------------------------\n\n/**\n * `_links` for a sandbox (HR-7 — mutations must carry them).\n *\n * API paths only. There is no dashboard route for a sandbox yet, and inventing\n * a plausible-looking one would hand the user a 404 dressed as a destination.\n * Add the `dashboard` key when the route actually exists.\n */\nexport function sandboxLinks(id: string): Record<string, string> {\n const base = `/api/sandbox/${encodeURIComponent(id)}`;\n return { api: base, stream: `${base}/stream`, traces: `${base}/traces` };\n}\n\n// ---------------------------------------------------------------------------\n// Payload guards\n//\n// Hand-written rather than schema-validated: these run once per output chunk on\n// a hot path, and a stream whose text field is missing should degrade to \"no\n// text\" rather than abort a live session.\n// ---------------------------------------------------------------------------\n\nexport function parseOutputPayload(data: string): SandboxOutputPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n const { seq, ts, text } = record;\n if (typeof seq !== 'number' || typeof text !== 'string') return null;\n return { seq, ts: typeof ts === 'string' ? ts : '', text };\n}\n\nexport function parseStatusPayload(data: string): SandboxStatusPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n if (typeof record.state !== 'string') return null;\n return {\n state: record.state,\n exitCode: typeof record.exitCode === 'number' ? record.exitCode : null,\n };\n}\n\nexport function parseSandboxRunPayload(data: string): SandboxRunPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n const { sandboxId, preset } = record;\n if (typeof sandboxId !== 'string' || sandboxId === '') return null;\n return { sandboxId, preset: typeof preset === 'string' ? preset : '' };\n}\n\n/**\n * `exitCode` is read as `number | null` with NO fallback to 0.\n *\n * The sibling `parseStatusPayload` coerces a missing exit code to `null` for the\n * same reason, and it matters more here: this payload is what the caller reports\n * as the turn's outcome, and defaulting a missing field to zero would turn \"the\n * server told us nothing\" into \"it succeeded\".\n */\nexport function parseSandboxResultPayload(data: string): SandboxResultPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n const { sandboxId, preset, exitCode, timedOut, tornDown, error } = record;\n if (typeof sandboxId !== 'string' || sandboxId === '') return null;\n return {\n sandboxId,\n preset: typeof preset === 'string' ? preset : '',\n exitCode: typeof exitCode === 'number' ? exitCode : null,\n timedOut: timedOut === true,\n tornDown: tornDown === true,\n ...(typeof error === 'string' ? { error } : {}),\n };\n}\n\nexport function parseErrorPayload(data: string): SandboxErrorPayload {\n const record = parseRecord(data);\n const message = record && typeof record.message === 'string' ? record.message : data.trim();\n return { message: message === '' ? 'The server reported an unspecified stream error.' : message };\n}\n\nfunction parseRecord(data: string): Record<string, unknown> | null {\n try {\n const parsed: unknown = JSON.parse(data);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n // Not JSON — the caller decides whether to skip or report.\n }\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Arch\n// ---------------------------------------------------------------------------\n\n/**\n * The architecture to spawn for when `--arch` is not given.\n *\n * The host's, because the overwhelmingly common case is running an image you\n * just built locally, and a definition whose arch does not match its image is\n * rejected at preflight rather than silently emulated. Node reports `arm64` and\n * `x64`; anything else has no honest mapping, so `--arch` becomes required\n * instead of guessing on the user's behalf.\n */\nexport function hostArch(): SandboxArch | null {\n if (process.arch === 'arm64') return 'arm64';\n if (process.arch === 'x64') return 'x86_64';\n return null;\n}\n",
50
+ "/**\n * `mutagent helix` — spawn and drive a Helix session running in a cloud\n * sandbox, from the terminal it would run in locally.\n *\n * The whole surface is built around one asymmetry: the sandbox outlives the\n * terminal. So detaching is cheap and reversible (Ctrl-C, a dropped connection,\n * a closed laptop) while destroying takes an explicit `rm`. Everything else —\n * resume-by-sequence-number, gap reporting, stdout/stderr separation — exists to\n * make the reversible case actually reversible.\n *\n * TWO WAYS IN, AND THEY ARE NOT INTERCHANGEABLE\n *\n * `spawn` takes a DEFINITION (`--image`, `--arch`) and gives you a persistent\n * box to attach and exec against. `run` and `exec` without `--sandbox` are\n * ONE-SHOT: they start from a named PRESET, do one thing, and tear the box\n * down. The preset path exists so a caller never has to learn an image\n * reference, a registry or a region — see `helix presets`.\n *\n * NOTE: `mutagent install helix` installs the Helix TOOL locally. This group\n * runs a session REMOTELY. They are different operations on the same noun; the\n * help text below says so, because the collision is not obvious from the names.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { registerSpawnCommand } from './spawn.js';\nimport { registerAttachCommand } from './attach.js';\nimport { registerSendCommand } from './send.js';\nimport { registerSessionCommand } from './session-start.js';\nimport { registerRunCommand, registerExecCommand } from './run.js';\nimport {\n registerLsCommand,\n registerPresetsCommand,\n registerRmCommand,\n registerTracesCommand,\n} from './inventory.js';\n\nexport function createHelixCommand(): Command {\n const helix = new Command('helix')\n .description('Run Helix sessions in a cloud sandbox')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix run \"fix the failing test\" --prompt \"$(cat agent.md)\"\n ${chalk.dim('$')} mutagent helix exec -- uname -m ${chalk.dim('One command, fresh box')}\n ${chalk.dim('$')} mutagent helix presets ${chalk.dim('What a one-shot can run on')}\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20 ${chalk.dim('Persistent box, then attach')}\n ${chalk.dim('$')} mutagent helix session start sbx_1 --rpc ${chalk.dim('Start an agent inside that box')}\n ${chalk.dim('$')} mutagent helix ls ${chalk.dim('What is running')}\n ${chalk.dim('$')} mutagent helix exec --sandbox sbx_1 -- bun test ${chalk.dim('Command in that box')}\n ${chalk.dim('$')} mutagent helix attach sbx_1 --since 412 ${chalk.dim('Resume after a sequence number')}\n ${chalk.dim('$')} mutagent helix send sbx_1 --session s1 \"and now\" ${chalk.dim('Talk to a running session')}\n ${chalk.dim('$')} mutagent helix traces sbx_1 --json ${chalk.dim('What the session actually did')}\n ${chalk.dim('$')} mutagent helix rm sbx_1 --force ${chalk.dim('Destroy it')}\n\nSubcommands:\n run, exec, spawn, session, ls, presets, attach, send, traces, rm\n\nOne-shot vs persistent:\n ${chalk.bold('run')} and ${chalk.bold('exec')} (without --sandbox) start from a named PRESET, do one\n thing and tear the sandbox down. Nothing to clean up, no image to know.\n ${chalk.bold('spawn')} takes an explicit --image and leaves a box running for you to\n ${chalk.bold('attach')} and ${chalk.bold('exec --sandbox')} against until you ${chalk.bold('rm')} it.\n\nBoxes vs sessions vs watching vs steering:\n ${chalk.bold('spawn')} gives you a BOX. ${chalk.bold('session start')} gives you an AGENT inside that box.\n ${chalk.bold('attach')} WATCHES that agent; it does not type into one. ${chalk.bold('send')} TYPES INTO it,\n from any terminal holding the id — so a session can be redirected without the\n terminal that started it. A box with no session is normal: that is what\n ${chalk.bold('exec')} runs against.\n\nLifecycle:\n A spawned sandbox outlives your terminal. Ctrl-C, a dropped connection and a\n closed terminal all DETACH — the session keeps running and can be re-attached.\n Only 'mutagent helix rm <id>' destroys a sandbox, so remember to run it when\n you are finished.\n\nAccess:\n Sandbox access is minted per WORKSPACE, so a workspace must be configured:\n ${chalk.dim('$')} mutagent config set workspace <workspace-id>\n\nOutput:\n Sandbox stdout goes to stdout, sandbox stderr goes to stderr, and anything\n this CLI says about the session goes to stderr. Redirects and pipes therefore\n behave as they would for a locally running process. Spinners and colour are\n suppressed when the output is not a terminal or NO_COLOR is set.\n\nNot to be confused with:\n 'mutagent install helix' — that installs the Helix tool on THIS machine.\n This group runs a session on a REMOTE sandbox.\n\nAI Agent Directive:\n Run 'mutagent helix ls --json' before attach, exec --sandbox, or rm.\n ONLY the streaming paths ('attach', 'spawn' without --detach, 'exec --sandbox'\n without --no-stream) emit NDJSON in --json mode — one object per line, with a\n complete summary object as the final line — because a live stream is not a\n single JSON document until it ends. Everything else returns one JSON object.\n 'run' is always blocking: it takes TWO strings, --prompt (WHO the agent is)\n and the task (WHAT to do). Never fold one into the other.\n Spawning consumes resources until removed — confirm with the user before\n 'spawn' and before 'rm'.\n `,\n );\n\n registerRunCommand(helix);\n registerExecCommand(helix);\n registerSpawnCommand(helix);\n registerLsCommand(helix);\n registerPresetsCommand(helix);\n registerAttachCommand(helix);\n registerSendCommand(helix);\n registerSessionCommand(helix);\n registerTracesCommand(helix);\n registerRmCommand(helix);\n\n return helix;\n}\n",
51
+ "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n hostArch,\n openAttachStream,\n sandboxLinks,\n spawnSandbox,\n type EgressPolicy,\n type EgressRule,\n type SandboxArch,\n type SandboxDefinition,\n type SandboxNetwork,\n type SandboxRecord,\n} from '../../lib/sandbox-api.js';\nimport { canAnimate } from '../../lib/tty.js';\nimport { attachToSandbox, reattachHint } from './session.js';\n\ninterface SpawnOptions {\n image?: string;\n arch?: string;\n name?: string;\n provider?: string;\n env?: string;\n egress?: string;\n egressAllow?: string[];\n detach?: boolean;\n}\n\nconst ARCHES: SandboxArch[] = ['x86_64', 'arm64'];\nconst EGRESS_POLICIES: EgressPolicy[] = ['deny', 'allowlist', 'allow'];\nconst EGRESS_KINDS: EgressRule['kind'][] = ['port', 'cidr', 'domain'];\n\nexport function registerSpawnCommand(parent: Command): void {\n parent\n .command('spawn')\n .description('Spawn a Helix session in a cloud sandbox and attach to it')\n .requiredOption('--image <ref>', 'Image reference (repository:tag or @digest)')\n .option('--arch <arch>', `Image architecture: ${ARCHES.join(' | ')} (default: this host's)`)\n .option('--name <name>', 'Definition name (default: derived from the image reference)')\n .option('--provider <name>', 'Provider registry key (default: the backend default)')\n .option('--env <name>', 'Environment (secrets + variables) to load at spawn')\n .option(\n '--egress <policy>',\n `Outbound network policy: ${EGRESS_POLICIES.join(' | ')} (default: deny)`,\n )\n .option(\n '--egress-allow <rule>',\n 'Allowance for --egress allowlist, as kind:value (repeatable)',\n collectRule,\n [],\n )\n .option('--detach', 'Spawn without attaching — print the ID and return')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20\n ${chalk.dim('$')} mutagent helix spawn --image ghcr.io/example/helix:latest --arch x86_64\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20 --detach --json\n ${chalk.dim('$')} mutagent helix spawn --image alpine:3.20 --provider docker --env staging\n ${chalk.dim('$')} mutagent helix spawn --image <helix-image> --egress allow ${chalk.dim('Required for a Helix session')}\n ${chalk.dim('$')} mutagent helix spawn --image <ref> --egress allowlist --egress-allow domain:api.anthropic.com\n\n--image is required. A sandbox is spawned from a DEFINITION, and the definition\nnames its own image — there is no default the CLI could invent for you. To run\nsomething without knowing an image reference, use 'mutagent helix run' or\n'mutagent helix exec', which spawn from a named preset instead.\n\n--arch defaults to this host's architecture, on the assumption that you are\nrunning an image you just built. A definition whose arch does not match its\nimage is rejected at preflight rather than emulated, so set it explicitly when\nthe image was built elsewhere.\n\n--env names an Environment (a stored bundle of secrets and variables). It is a\nDIFFERENT axis from --provider, which selects the backend. Secrets never travel\non the command line.\n\nNETWORK EGRESS IS DENIED BY DEFAULT, AND THAT BREAKS HELIX SESSIONS:\n A sandbox runs code we did not write, so the safe default is the default:\n nothing reaches out. That is right for a plain 'exec' box, which needs no\n network at all.\n\n It is WRONG for a Helix session, for two independent reasons — either alone\n is enough to sink it:\n 1. Under deny the container runs with --network none. Docker accepts -P and\n publishes nothing, so the in-box server on :8080 is unreachable and\n 'mutagent helix session start' fails with \"Helix is not reachable\".\n 2. An agent turn has to reach a model provider regardless.\n\n So: ${chalk.bold('--egress allow')} before 'helix session start'. Without it the failure\n presents as an unreachable box, which reads like a broken image rather than a\n policy you chose.\n\n ${chalk.bold('--egress allowlist')} narrows that to named allowances, each given explicitly\n as kind:value — 'domain:api.anthropic.com', 'port:443', 'cidr:10.0.0.0/8'. The\n kind is never inferred from the value. An allowlist with no rules denies\n everything, so it is refused rather than silently walling the box off; it also\n needs a provider with egress control, which not every backend has.\n\nWithout --detach this spawns and immediately attaches, so the common path is a\nsingle command. Ctrl-C then DETACHES — the sandbox keeps running and the\nre-attach command is printed. Use 'mutagent helix rm <id> --force' to destroy it.\n\nAI Agent Directive:\n Pass --egress allow whenever the box is for a Helix session — 'mutagent helix\n session start' CANNOT reach the in-box server under the default deny policy,\n and the error it raises names the box, not the policy. A box you only 'exec'\n in needs no egress.\n Prefer --detach --json for automation: it returns one JSON object with the\n sandbox id, so you can decide what to run before committing to a live stream.\n Without --detach, --json output is NDJSON and the final line is the summary.\n A spawned sandbox costs resources until 'mutagent helix rm <id>' — confirm\n with the user before spawning, and tell them the ID afterwards.\n `,\n )\n .action(async (options: SpawnOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // VALIDATE before any API call (§4.5 / HR-6). Every field below is\n // rejected by the server's schema too, but a 422 carrying an inlined\n // TypeBox schema is not an error message a person can act on.\n const definition = buildDefinition(options);\n\n const sandbox = await createSandbox(definition, isJson);\n const id = requireId(sandbox);\n\n if (options.detach) {\n reportDetached(sandbox, id, output, isJson);\n return;\n }\n\n if (isJson) {\n process.stdout.write(`${JSON.stringify({ type: 'spawned', sandbox })}\\n`);\n }\n\n const result = await attachToSandbox({\n id,\n isJson,\n announce: `Spawned sandbox ${id}. Ctrl-C detaches without destroying it.`,\n open: ({ since, signal }) => openAttachStream(id, { since, signal }),\n });\n\n if (isJson) {\n console.log(\n JSON.stringify({\n success: true,\n sandbox,\n end: result.end,\n exitCode: result.exitCode,\n lastSeq: result.lastSeq,\n reconnects: result.reconnects,\n gaps: result.gaps,\n _links: sandboxLinks(id),\n }),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nexport function buildDefinition(options: SpawnOptions): SandboxDefinition {\n const image = options.image?.trim() ?? '';\n if (image === '') {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '--image is required and cannot be empty.',\n 'Example: mutagent helix spawn --image alpine:3.20',\n );\n }\n\n const arch = resolveArch(options.arch);\n\n const definition: SandboxDefinition = {\n // `||` is deliberate and `??` would be a defect here: a whitespace-only\n // `--name` trims to '', which must fall back to the derived name. `??`\n // only catches null/undefined, so it would spawn a sandbox named ''.\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty string must fall back; see above\n name: options.name?.trim() || deriveName(image),\n image,\n arch,\n };\n if (options.provider) definition.provider = options.provider;\n if (options.env) definition.environment = options.env;\n\n const network = resolveNetwork(options.egress, options.egressAllow ?? []);\n if (network) definition.network = network;\n\n return definition;\n}\n\n/**\n * Turn --egress / --egress-allow into the definition's network policy.\n *\n * Validated here, before the request, because every wrong shape below fails the\n * same way at runtime: the box comes up with no network, and the next command\n * reports \"Helix is not reachable\". That message names the box, so a typo in a\n * policy name presents as a broken image and sends the reader to the wrong\n * problem entirely.\n */\nexport function resolveNetwork(\n requested: string | undefined,\n rules: string[],\n): SandboxNetwork | undefined {\n if (requested === undefined) {\n if (rules.length > 0) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n '--egress-allow only means something with --egress allowlist.',\n 'Add --egress allowlist, or drop the allowances and use --egress allow.',\n );\n }\n // No flag: say nothing and let the server's default (deny) stand, rather\n // than sending a policy the caller never chose.\n return undefined;\n }\n\n const policy = requested.trim();\n if (!EGRESS_POLICIES.includes(policy as EgressPolicy)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--egress must be one of ${EGRESS_POLICIES.join(', ')}, got \"${requested}\".`,\n \"Use --egress allow to drive a Helix session; the default, deny, leaves the box with no network at all.\",\n );\n }\n\n if (policy !== 'allowlist') {\n if (rules.length > 0) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--egress-allow is only read under \"allowlist\", so under \"${policy}\" the allowances would be silently discarded.`,\n `Use --egress allowlist to apply them, or drop them to keep --egress ${policy}.`,\n );\n }\n return { egress: policy as EgressPolicy };\n }\n\n if (rules.length === 0) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n 'An allowlist with no allowances denies everything — the same wall as --egress deny, under a name that says otherwise.',\n 'Name what may be reached: --egress-allow domain:api.anthropic.com\\nOr open it fully: --egress allow',\n );\n }\n\n return { egress: 'allowlist', allow: rules.map(parseRule) };\n}\n\n/** Commander accumulator for a repeatable option. */\nfunction collectRule(value: string, previous: string[]): string[] {\n return [...previous, value];\n}\n\n/**\n * `kind:value` — never inferred.\n *\n * \"443\" could be a port and \"10.0.0.0/8\" could be a cidr, and guessing right\n * most of the time produces a rule that is silently wrong the rest of the time.\n * A wrong allowance fails closed, so the box is unreachable and the reason is\n * invisible.\n */\nfunction parseRule(raw: string): EgressRule {\n const separator = raw.indexOf(':');\n const kind = separator === -1 ? '' : raw.slice(0, separator).trim();\n const value = separator === -1 ? '' : raw.slice(separator + 1).trim();\n\n if (!EGRESS_KINDS.includes(kind as EgressRule['kind']) || value === '') {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--egress-allow must be <kind>:<value>, got \"${raw}\".`,\n `kind is one of ${EGRESS_KINDS.join(', ')}. Examples:\\n --egress-allow domain:api.anthropic.com\\n --egress-allow port:443\\n --egress-allow cidr:10.0.0.0/8`,\n );\n }\n\n return { kind: kind as EgressRule['kind'], value };\n}\n\nfunction resolveArch(requested: string | undefined): SandboxArch {\n if (requested !== undefined) {\n const value = requested.trim();\n if (!ARCHES.includes(value as SandboxArch)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--arch must be one of ${ARCHES.join(', ')}, got \"${requested}\".`,\n 'Use --arch arm64 for Apple Silicon images, --arch x86_64 for Intel/AMD.',\n );\n }\n return value as SandboxArch;\n }\n\n const detected = hostArch();\n if (detected === null) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n `This host reports architecture \"${process.arch}\", which has no sandbox equivalent.`,\n `Name it explicitly: --arch ${ARCHES.join(' | --arch ')}`,\n );\n }\n return detected;\n}\n\n/**\n * A readable definition name from the image reference.\n *\n * The name is what shows in `helix ls`, so deriving it from the image is what\n * makes a list of sandboxes readable without a lookup. Sanitised because the\n * schema caps it at 128 characters and a digest reference is longer than that.\n */\nexport function deriveName(image: string): string {\n const slug = image\n .replace(/^.*\\//, '')\n .replace(/[^A-Za-z0-9._-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 120);\n return slug === '' ? 'mutagent-cli' : slug;\n}\n\nasync function createSandbox(\n definition: SandboxDefinition,\n isJson: boolean,\n): Promise<SandboxRecord> {\n if (!canAnimate(isJson)) return spawnSandbox(definition);\n\n const { default: ora } = await import('ora');\n const spinner = ora(`Spawning ${definition.image} (${definition.arch})...`).start();\n try {\n const sandbox = await spawnSandbox(definition);\n spinner.succeed(chalk.green(`Sandbox ${sandbox.id} spawned`));\n return sandbox;\n } catch (error) {\n spinner.fail(chalk.red('Spawn failed'));\n throw error;\n }\n}\n\n/**\n * A sandbox we cannot name is a sandbox we cannot attach to, re-attach to, or\n * destroy — so a missing `id` is a hard failure with the leak called out,\n * not an `undefined` threaded into three later URLs.\n */\nfunction requireId(sandbox: SandboxRecord): string {\n if (typeof sandbox.id === 'string' && sandbox.id !== '') return sandbox.id;\n throw new MutagentError(\n 'INVALID_RESPONSE',\n 'The server created a sandbox but did not return an id.',\n 'The sandbox may still be running — check with: mutagent helix ls',\n );\n}\n\nfunction reportDetached(\n sandbox: SandboxRecord,\n id: string,\n output: OutputFormatter,\n isJson: boolean,\n): void {\n if (isJson) {\n output.output({\n success: true,\n sandbox,\n _links: sandboxLinks(id),\n _directive: {\n instruction:\n 'The sandbox is running and detached. Attach to stream its output, or destroy it when finished — a detached sandbox consumes resources until removed.',\n next: [`mutagent helix attach ${id} --json`, `mutagent helix rm ${id} --json`],\n },\n });\n return;\n }\n\n output.output({\n id,\n status: sandbox.status ?? 'unknown',\n provider: sandbox.provider ?? 'unknown',\n arch: sandbox.arch ?? 'unknown',\n definition: sandbox.definitionName ?? 'unknown',\n });\n console.log('');\n console.log(` Attach: ${reattachHint(id, 0)}`);\n console.log(` Destroy: mutagent helix rm ${id} --force`);\n}\n",
52
+ "/**\n * HTTP client for the sandbox API that backs `mutagent helix`.\n *\n * WHY THIS IS NOT THE SDK CLIENT (A-4 exception, disclosed)\n *\n * `.memory/design-principles.md` A-4 says the SDK is the only API client. The\n * sandbox routes are not in `@mutagent/sdk`, and two of them are\n * `text/event-stream` — a generated JSON client has nowhere to put a stream\n * you must consume incrementally. `sdk-client.ts` already carries a private\n * `request()` helper for \"endpoints not yet in SDK\"; this is the same escape\n * hatch, made public and stream-aware. When the routes land in the SDK, the\n * non-streaming calls here should move.\n *\n * AUTH IS A TWO-STEP EXCHANGE, NOT A BEARER PASSTHROUGH (#1517, G-C9)\n *\n * The sandbox routes want `Authorization: Bearer <token>` where the token is\n * an HMAC token the SERVER minted — not a platform API key. This module used\n * to send `Bearer <platform key>`: the right header SHAPE carrying the wrong\n * CLASS of credential, which verified as garbage and made every `helix`\n * command 401. That distinction is the whole trap — the header looked correct\n * in every log and every test that only checked its shape.\n *\n * The platform key now buys a short-lived, workspace-scoped operator token via\n * `POST /api/sandbox/token` (see `sandbox-token.ts`), and THAT is what rides\n * the Bearer header. The platform key itself travels as `x-api-key` on the\n * exchange route only — the way every other MutagenT route in this CLI\n * authenticates — and never becomes a sandbox credential.\n *\n * WHY THE SERVER INSISTS. Sandbox tokens come in three classes (operator ·\n * session · task) so that code running INSIDE a box cannot mint more boxes.\n * A CLI that forwarded the platform key would hand control-plane authority to\n * the first hop and erase that boundary before it could do any work.\n *\n * `x-api-key` is deliberately NOT sent alongside the Bearer token on sandbox\n * routes: sending both would let a contract mismatch pass silently. Tenancy\n * headers are sent because sandbox resources are workspace-scoped like\n * everything else on this server.\n */\n\n/// <reference lib=\"dom\" />\n\nimport { getApiKey, loadConfig } from './config.js';\nimport {\n ApiError,\n AuthenticationError,\n MutagentError,\n NotFoundError,\n WorkspaceContextError,\n} from './errors.js';\nimport { clearCachedToken, getOperatorToken, type ExchangeDeps } from './sandbox-token.js';\n\n// ---------------------------------------------------------------------------\n// Wire shapes — mirrored from mutagent/src/modules/sandbox/model.ts\n// ---------------------------------------------------------------------------\n\n/** CPU architecture a definition targets. Required — the schema has no default. */\nexport type SandboxArch = 'x86_64' | 'arm64';\n\n/** The configuration artifact. `name`, `image` and `arch` are required. */\n/** Outbound policy. `deny` is the server's default — opening egress is explicit. */\nexport type EgressPolicy = 'deny' | 'allowlist' | 'allow';\n\n/** One allowance under `allowlist`. The kind is explicit; nothing is inferred. */\nexport interface EgressRule {\n kind: 'port' | 'cidr' | 'domain';\n value: string;\n}\n\nexport interface SandboxNetwork {\n egress?: EgressPolicy;\n /** Allowances, when egress is `allowlist`. Needs provider egressControl support. */\n allow?: EgressRule[];\n}\n\nexport interface SandboxDefinition {\n name: string;\n image: string;\n arch: SandboxArch;\n environment?: string;\n provider?: string;\n workdir?: string;\n timeoutMs?: number;\n network?: SandboxNetwork;\n}\n\n/**\n * A sandbox as the server records it.\n *\n * The status field is `status`, NOT `state`. The stream events use `state`;\n * the record uses `status`. Rendering one with the other's name yields a table\n * of \"unknown\" that looks like a server problem.\n */\nexport interface SandboxRecord {\n id: string;\n generation?: number;\n provider?: string;\n arch?: string;\n status?: string;\n definitionName?: string;\n environmentName?: string;\n createdAt?: string;\n [key: string]: unknown;\n}\n\n/** Result of an exec or a one-shot run. */\nexport interface ExecResult {\n exitCode: number;\n stdout: string;\n stderr: string;\n timedOut: boolean;\n /** One-shot only — the box the run happened in. */\n sandboxId?: string;\n preset?: string;\n tornDown?: boolean;\n}\n\nexport interface Preset {\n name: string;\n description?: string;\n arch?: string;\n provider?: string;\n environment?: string;\n}\n\nexport interface PresetList {\n presets: Preset[];\n default: string | null;\n}\n\n/** `event: stdout` / `event: stderr` payload. */\nexport interface SandboxOutputPayload {\n seq: number;\n ts: string;\n text: string;\n}\n\n/** `event: status` payload. Uses `state`, unlike the record's `status`. */\nexport interface SandboxStatusPayload {\n state: string;\n exitCode: number | null;\n}\n\nexport interface SandboxErrorPayload {\n message: string;\n}\n\n/**\n * `event: sandbox` payload — the first frame of a one-shot stream.\n *\n * It arrives before any output precisely so a run that is interrupted still\n * leaves the user with the id of the box it created.\n */\nexport interface SandboxRunPayload {\n sandboxId: string;\n preset: string;\n}\n\n/**\n * `event: result` payload — the last frame before the terminal `status` of a\n * one-shot stream.\n *\n * `exitCode` is nullable because the server refuses to synthesise one: a turn\n * whose invocation failed outright never produced an exit code, and a `0` there\n * would read as success.\n */\nexport interface SandboxResultPayload {\n sandboxId: string;\n preset: string;\n exitCode: number | null;\n timedOut: boolean;\n /** Whether the server CONFIRMED teardown. False means the box may still exist. */\n tornDown: boolean;\n /** Present only when the turn failed rather than exited. */\n error?: string;\n}\n\nexport interface ExecRequest {\n command: string[];\n cwd?: string;\n timeoutMs?: number;\n}\n\n/**\n * `POST /api/sandbox/:id/input` body — one NDJSON command line for a session's\n * stdin. `line` is a string, not an object, because what the harness reads is a\n * byte-exact line; re-serialising a parsed object here would let this CLI\n * silently reorder or drop fields the harness was sent.\n */\nexport interface InputRequest {\n sessionId: string;\n line: string;\n}\n\n/**\n * The reply says only that the line was WRITTEN. The harness's answer to it\n * comes back on the event stream, correlated by the `id` inside `line`.\n */\nexport interface InputResult {\n accepted: boolean;\n}\n\n/**\n * `POST /api/sandbox/:id/session` body — start a Helix session inside a box\n * that already exists.\n *\n * `args` and `env` are on the wire but no flag sets them yet: `--env` already\n * means a stored Environment on `helix spawn`, and giving the same word a\n * second meaning inside one command group is how a flag becomes a trap. They\n * are declared here so the contract is visible at the boundary, not so the\n * command layer can quietly start using them.\n */\nexport interface StartSessionRequest {\n mode?: 'oneshot' | 'rpc';\n args?: string[];\n env?: Record<string, string>;\n}\n\n/** The session's id — the handle every later `attach`/`send` needs. */\nexport interface StartSessionResult {\n sessionId: string;\n status: string;\n}\n\n/** Fields every one-shot request shares. No image — presets exist so a caller never learns one. */\nexport interface OneShotCommon {\n preset?: string;\n timeoutMs?: number;\n keep?: boolean;\n}\n\nexport interface AgentRunRequest extends OneShotCommon {\n /** WHO the agent is — the agent definition. */\n prompt: string;\n /** WHAT to do this turn. A different prompt from `prompt`; never concatenated. */\n task: string;\n}\n\nexport interface OneShotRunRequest extends OneShotCommon {\n command: string[];\n cwd?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Connection\n// ---------------------------------------------------------------------------\n\nexport interface SandboxConnection {\n endpoint: string;\n apiKey: string;\n workspaceId: string;\n headers: Record<string, string>;\n}\n\n/**\n * Resolve endpoint + credential + workspace the same way every other command\n * does — env, then credentials file, then rc file — so `helix` cannot drift into\n * its own notion of who you are logged in as or which workspace you are in.\n *\n * `defaultWorkspace` is the same field `sdk-client.ts` and `install-telemetry.ts`\n * read; there is deliberately no new workspace mechanism here. It is REQUIRED\n * rather than optional because the exchange mints per-workspace — without one\n * there is nothing to scope a token to, and failing here with the standard\n * remediation beats a 422 from the server.\n */\nexport function resolveConnection(): SandboxConnection {\n const apiKey = getApiKey();\n if (!apiKey) throw new AuthenticationError();\n\n const config = loadConfig();\n const configured = config.endpoint?.trim();\n const endpoint = (configured === undefined || configured === ''\n ? 'https://api.mutagent.io'\n : configured\n ).replace(/\\/+$/, '');\n\n const workspaceId = requireWorkspace(config.defaultWorkspace);\n\n const headers: Record<string, string> = { 'x-workspace-id': workspaceId };\n if (config.defaultOrganization) headers['x-organization-id'] = config.defaultOrganization;\n\n return { endpoint, apiKey, workspaceId, headers };\n}\n\n/**\n * The workspace the token exchange will be scoped to.\n *\n * Split out and exported so the rule is reachable without `loadConfig()`, which\n * reads the developer's real credentials file and therefore cannot be made to\n * report \"no workspace\" inside a test. A guard that no test can trip is a guard\n * nobody knows is broken.\n *\n * Whitespace counts as absent: `MUTAGENT_WORKSPACE_ID=\" \"` is a mistake, and\n * sending it would trade a clear local error for a confusing remote one.\n */\nexport function requireWorkspace(workspaceId: string | undefined): string {\n if (workspaceId === undefined || workspaceId.trim() === '') {\n throw new WorkspaceContextError(\n 'A workspace is required: sandbox access is minted per workspace, not per account.',\n );\n }\n return workspaceId.trim();\n}\n\n// ---------------------------------------------------------------------------\n// Authenticated transport\n// ---------------------------------------------------------------------------\n\n/** Everything `fetchWithTokenRetry` needs, injected so it can be tested. */\nexport interface RetryTransport {\n /** Perform the HTTP call. */\n doFetch: typeof fetch;\n /** Produce an `Authorization` value, minting fresh when `forceRefresh`. */\n authorization: (forceRefresh: boolean) => Promise<string>;\n /** Called once when the server refuses the token we sent. */\n onTokenRejected: () => void;\n}\n\n/**\n * Fetch a sandbox route with a valid operator token, refreshing once on a 401.\n *\n * The retry decision is made on the raw STATUS, before `toCliError` runs. Doing\n * it after would mean re-deriving \"was this a 401\" from an error class, and 401\n * maps to `AuthenticationError` — the same type `exchangeToken` throws for a bad\n * platform key, so the two would be indistinguishable and a genuinely dead key\n * would drive a retry loop.\n *\n * WHY EXACTLY ONCE. A cached token can pass the local expiry check and still be\n * refused: the server's signing secret rotated, the key was revoked, a clock\n * drifted past the skew. One refresh covers all of those. A SECOND 401 means the\n * freshly minted token was itself refused — a real failure that retrying cannot\n * fix, and looping would turn a bad credential into a request storm.\n *\n * Every dependency is injected so this can be tested without a network, a config\n * file, or the module registry (HR-12). `sandboxFetch` below is the thin\n * production wiring; this is the behaviour worth pinning.\n */\nexport async function fetchWithTokenRetry(\n url: string,\n init: RequestInit,\n baseHeaders: Record<string, string>,\n transport: RetryTransport,\n): Promise<Response> {\n const attempt = async (forceRefresh: boolean): Promise<Response> =>\n transport.doFetch(url, {\n ...init,\n headers: { ...baseHeaders, Authorization: await transport.authorization(forceRefresh) },\n });\n\n const first = await attempt(false);\n if (first.status !== 401) return first;\n\n // The token we sent is provably rejected — drop it so the next process this\n // hour does not start from the same refused credential, then mint once more.\n transport.onTokenRejected();\n\n // Whatever this returns is final. A second 401 is returned to the caller as a\n // 401, NOT retried: the token was freshly minted, so the server is refusing\n // something no further exchange will fix.\n return attempt(true);\n}\n\nasync function sandboxFetch(\n path: string,\n init: RequestInit,\n deps: ExchangeDeps = {},\n): Promise<{ response: Response; endpoint: string }> {\n const connection = resolveConnection();\n const { endpoint } = connection;\n\n try {\n const response = await fetchWithTokenRetry(\n `${endpoint}${path}`,\n init,\n { ...connection.headers, ...toHeaderRecord(init.headers) },\n {\n doFetch: fetch,\n authorization: async (forceRefresh) =>\n `Bearer ${await getOperatorToken(\n { endpoint, apiKey: connection.apiKey, workspaceId: connection.workspaceId },\n { forceRefresh },\n deps,\n )}`,\n onTokenRejected: () => {\n clearCachedToken(deps);\n },\n },\n );\n return { response, endpoint };\n } catch (error) {\n // A MutagenError is already this CLI's vocabulary — an exchange failure\n // (bad key, no workspace access) must reach the user as itself, not be\n // relabelled \"could not reach the API\".\n if (error instanceof MutagentError) throw error;\n throw toNetworkError(error, endpoint);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Error mapping\n// ---------------------------------------------------------------------------\n\nasync function toCliError(response: Response, sandboxId?: string): Promise<MutagentError> {\n const body = await response.text().catch(() => '');\n const message = extractMessage(body) || response.statusText || 'Request failed';\n\n if (response.status === 401) return new AuthenticationError();\n if (response.status === 404 && sandboxId) return new NotFoundError('Sandbox', sandboxId);\n return new ApiError(response.status, message);\n}\n\n/**\n * Pull the one actionable line out of a sandbox error body.\n *\n * The envelope is `{ error, message }` where `error` is the CODE\n * (\"Validation Error\") and `message` is the detail — so reading `error` first\n * prints a category and throws away the cause. That is exactly what happened:\n * a malformed spawn surfaced as the bare string `Error: Validation Error`.\n *\n * But `message` is not simply prose. For a schema rejection it is an ~8KB JSON\n * document with the entire TypeBox schema inlined, so printing it verbatim is\n * worse than printing the code. That document carries a one-line `summary`\n * (\"Property 'definition' is missing\") which is the sentence a user can act on,\n * so it is preferred over both.\n */\nexport function extractMessage(body: string): string {\n const outer = parseRecord(body);\n if (!outer) return body.slice(0, 300);\n\n const code = typeof outer.error === 'string' ? outer.error : '';\n const detail = typeof outer.message === 'string' ? outer.message : '';\n\n const nested = parseRecord(detail);\n const summary = nested && typeof nested.summary === 'string' ? nested.summary : '';\n if (summary !== '') {\n const property = nested && typeof nested.property === 'string' ? nested.property : '';\n const where = property === '' ? '' : ` (at ${property})`;\n return code === '' ? `${summary}${where}` : `${code}: ${summary}${where}`;\n }\n\n // Prose detail, but only when it is prose. An unparsed blob this long is a\n // dump, not a message, and the code alone is more useful than 8KB of schema.\n if (detail !== '' && detail.length <= 400) return detail;\n if (code !== '') return code;\n return body.slice(0, 300);\n}\n\n/**\n * Flatten `HeadersInit` to a plain record so it can be merged with the auth\n * headers. Spreading it directly is wrong for the array form — that spreads\n * indices, not header names — and silently drops every header it touches.\n */\nfunction toHeaderRecord(init: RequestInit['headers']): Record<string, string> {\n if (!init) return {};\n if (init instanceof Headers) {\n const record: Record<string, string> = {};\n init.forEach((value, key) => {\n record[key] = value;\n });\n return record;\n }\n if (Array.isArray(init)) return Object.fromEntries(init);\n return init;\n}\n\n/** A transport failure (DNS, refused, TLS) — never a server-sent status. */\nexport function toNetworkError(error: unknown, endpoint: string): MutagentError {\n const detail = error instanceof Error ? error.message : String(error);\n return new MutagentError(\n 'SANDBOX_UNREACHABLE',\n `Could not reach the MutagenT API at ${endpoint}: ${detail}`,\n 'Check your connection, then verify the endpoint with: mutagent config list',\n 5,\n );\n}\n\n// ---------------------------------------------------------------------------\n// JSON requests\n// ---------------------------------------------------------------------------\n\nasync function requestJson<T>(\n path: string,\n init: RequestInit & { sandboxId?: string } = {},\n): Promise<T> {\n const { sandboxId, ...requestInit } = init;\n\n const { response } = await sandboxFetch(path, {\n ...requestInit,\n headers: { 'Content-Type': 'application/json', ...toHeaderRecord(requestInit.headers) },\n });\n\n if (!response.ok) throw await toCliError(response, sandboxId);\n\n const text = await response.text();\n if (text.trim() === '') return {} as T;\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new MutagentError(\n 'INVALID_RESPONSE',\n `The server returned a non-JSON response for ${path}.`,\n 'Retry, and if it persists report it with: mutagent feedback send \"<what happened>\" --category cli',\n );\n }\n}\n\n/** `POST /api/sandbox` — body is `{ definition }`, and the reply is 201. */\nexport async function spawnSandbox(definition: SandboxDefinition): Promise<SandboxRecord> {\n return requestJson<SandboxRecord>('/api/sandbox', {\n method: 'POST',\n body: JSON.stringify({ definition }),\n });\n}\n\n/** `GET /api/sandbox` — a bare array of records. */\nexport async function listSandboxes(): Promise<SandboxRecord[]> {\n const body = await requestJson<unknown>('/api/sandbox');\n return unwrapList(body) as SandboxRecord[];\n}\n\n/**\n * Accept a bare array or the common single-key envelopes around one.\n *\n * `spans` is in this list because `GET /:id/traces` returns `{ spans: [...] }`\n * — the server's word for them, not `traces`. Omitting it made every sandbox\n * report \"no traces recorded\", which is indistinguishable from a quiet box.\n */\nexport function unwrapList(body: unknown): unknown[] {\n if (Array.isArray(body)) return body;\n if (body && typeof body === 'object') {\n for (const key of ['sandboxes', 'spans', 'traces', 'presets', 'data', 'items'] as const) {\n const value = (body as Record<string, unknown>)[key];\n if (Array.isArray(value)) return value;\n }\n }\n return [];\n}\n\n/** `GET /api/sandbox/:id` — returns `{ status }`, not a full record. */\nexport async function inspectSandbox(id: string): Promise<{ status?: string }> {\n return requestJson<{ status?: string }>(`/api/sandbox/${encodeURIComponent(id)}`, {\n sandboxId: id,\n });\n}\n\nexport async function destroySandbox(id: string): Promise<void> {\n const { response } = await sandboxFetch(`/api/sandbox/${encodeURIComponent(id)}`, {\n method: 'DELETE',\n });\n // Deleting something already gone is a success, not an error (Rule 1.5 /\n // HR-9 idempotence) — a retried teardown must not fail the second time.\n if (response.status === 404) return;\n if (!response.ok) throw await toCliError(response, id);\n}\n\n/** `POST /api/sandbox/:id/exec` — argv, not a shell string. */\nexport async function execSandbox(id: string, body: ExecRequest): Promise<ExecResult> {\n return requestJson<ExecResult>(`/api/sandbox/${encodeURIComponent(id)}/exec`, {\n method: 'POST',\n body: JSON.stringify(body),\n sandboxId: id,\n });\n}\n\n/**\n * `POST /api/sandbox/:id/input` — write one line to a live session's stdin.\n *\n * Fire-and-forget by design: 200 means the line reached the process, and\n * nothing more. Whether the agent accepted it is a `response` frame on the\n * stream, so a caller that needs the answer has to be attached.\n */\nexport async function postInput(id: string, body: InputRequest): Promise<InputResult> {\n return requestJson<InputResult>(`/api/sandbox/${encodeURIComponent(id)}/input`, {\n method: 'POST',\n body: JSON.stringify(body),\n sandboxId: id,\n });\n}\n\n/**\n * `POST /api/sandbox/:id/session` — start a Helix session in an existing box.\n *\n * Separate from spawning because a box and an agent are separate things: one\n * sandbox can host several sessions, and a box with no session in it is a\n * perfectly normal state to be in (that is what `exec` runs against).\n */\nexport async function startSession(\n id: string,\n body: StartSessionRequest,\n): Promise<StartSessionResult> {\n return requestJson<StartSessionResult>(`/api/sandbox/${encodeURIComponent(id)}/session`, {\n method: 'POST',\n body: JSON.stringify(body),\n sandboxId: id,\n });\n}\n\n/** `POST /api/sandbox/run` — one command in a fresh box, torn down after. */\nexport async function oneShotRun(body: OneShotRunRequest): Promise<ExecResult> {\n return requestJson<ExecResult>('/api/sandbox/run', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\n/**\n * `POST /api/sandbox/agent/run` — one agent turn in a fresh box.\n *\n * Blocking: the server runs the whole turn and answers once. `openAgentRunStream`\n * is the same call watched live; this is what `--no-stream` uses.\n */\nexport async function agentRun(body: AgentRunRequest): Promise<ExecResult> {\n return requestJson<ExecResult>('/api/sandbox/agent/run', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n}\n\nexport async function listPresets(): Promise<PresetList> {\n return requestJson<PresetList>('/api/sandbox/presets');\n}\n\n/** `GET /api/sandbox/:id/traces` — returns `{ spans: [...] }`. */\nexport async function fetchSandboxTraces(id: string): Promise<unknown> {\n return requestJson<unknown>(`/api/sandbox/${encodeURIComponent(id)}/traces`, { sandboxId: id });\n}\n\n// ---------------------------------------------------------------------------\n// Stream requests\n// ---------------------------------------------------------------------------\n\nexport interface StreamRequestOptions {\n /** Resume after this sequence number. Omitted on a first connect. */\n since?: number;\n signal?: AbortSignal;\n}\n\n/** Open `GET /api/sandbox/:id/stream` (attach). */\nexport async function openAttachStream(\n id: string,\n options: StreamRequestOptions = {},\n): Promise<ReadableStream<Uint8Array>> {\n const query = options.since === undefined ? '' : `?since=${String(options.since)}`;\n return openStream(\n `/api/sandbox/${encodeURIComponent(id)}/stream${query}`,\n { id, retryHint: `Retry with: mutagent helix attach ${id}` },\n options,\n );\n}\n\n/** Open `POST /api/sandbox/:id/exec?stream=1` — scoped to this one invocation. */\nexport async function openExecStream(\n id: string,\n body: ExecRequest,\n options: StreamRequestOptions = {},\n): Promise<ReadableStream<Uint8Array>> {\n return openStream(\n `/api/sandbox/${encodeURIComponent(id)}/exec?stream=1`,\n { id, retryHint: `Retry with: mutagent helix attach ${id}` },\n options,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n },\n );\n}\n\n/**\n * Open `POST /api/sandbox/agent/run?stream=1` — one agent turn, watched live.\n *\n * NO SANDBOX ID, and that is not an omission. The box does not exist until this\n * request creates it; its id arrives on the stream as the first `sandbox` event.\n * So the retry hint cannot name one either — and must not invent one, because\n * `mutagent helix attach <something>` for a box that was never created is worse\n * advice than none.\n *\n * ⚠ CALLING THIS TWICE RUNS THE TURN TWICE. There is no resume: the server\n * releases the sandbox the moment this connection drops, so a reconnect would\n * not be picking anything back up — it would be a second spawn, a second agent\n * turn and a second bill. `run.ts` therefore opens it exactly once and does not\n * retry, unlike `helix exec`, which can fall back to the read-only attach\n * endpoint precisely because its box outlives the connection.\n */\nexport async function openAgentRunStream(\n body: AgentRunRequest,\n options: StreamRequestOptions = {},\n): Promise<ReadableStream<Uint8Array>> {\n return openStream(\n '/api/sandbox/agent/run?stream=1',\n { retryHint: 'Retry the turn, or run it blocking with: mutagent helix run ... --no-stream' },\n options,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n },\n );\n}\n\nasync function openStream(\n path: string,\n sandbox: { id?: string; retryHint: string },\n options: StreamRequestOptions,\n init: RequestInit = {},\n): Promise<ReadableStream<Uint8Array>> {\n const { response } = await sandboxFetch(path, {\n ...init,\n headers: { Accept: 'text/event-stream', ...toHeaderRecord(init.headers) },\n signal: options.signal,\n });\n\n if (!response.ok) throw await toCliError(response, sandbox.id);\n if (!response.body) {\n throw new MutagentError(\n 'EMPTY_STREAM',\n 'The server accepted the stream request but sent no body.',\n sandbox.retryHint,\n );\n }\n\n return response.body;\n}\n\n// ---------------------------------------------------------------------------\n// Links\n// ---------------------------------------------------------------------------\n\n/**\n * `_links` for a sandbox (HR-7 — mutations must carry them).\n *\n * API paths only. There is no dashboard route for a sandbox yet, and inventing\n * a plausible-looking one would hand the user a 404 dressed as a destination.\n * Add the `dashboard` key when the route actually exists.\n */\nexport function sandboxLinks(id: string): Record<string, string> {\n const base = `/api/sandbox/${encodeURIComponent(id)}`;\n return { api: base, stream: `${base}/stream`, traces: `${base}/traces` };\n}\n\n// ---------------------------------------------------------------------------\n// Payload guards\n//\n// Hand-written rather than schema-validated: these run once per output chunk on\n// a hot path, and a stream whose text field is missing should degrade to \"no\n// text\" rather than abort a live session.\n// ---------------------------------------------------------------------------\n\nexport function parseOutputPayload(data: string): SandboxOutputPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n const { seq, ts, text } = record;\n if (typeof seq !== 'number' || typeof text !== 'string') return null;\n return { seq, ts: typeof ts === 'string' ? ts : '', text };\n}\n\nexport function parseStatusPayload(data: string): SandboxStatusPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n if (typeof record.state !== 'string') return null;\n return {\n state: record.state,\n exitCode: typeof record.exitCode === 'number' ? record.exitCode : null,\n };\n}\n\nexport function parseSandboxRunPayload(data: string): SandboxRunPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n const { sandboxId, preset } = record;\n if (typeof sandboxId !== 'string' || sandboxId === '') return null;\n return { sandboxId, preset: typeof preset === 'string' ? preset : '' };\n}\n\n/**\n * `exitCode` is read as `number | null` with NO fallback to 0.\n *\n * The sibling `parseStatusPayload` coerces a missing exit code to `null` for the\n * same reason, and it matters more here: this payload is what the caller reports\n * as the turn's outcome, and defaulting a missing field to zero would turn \"the\n * server told us nothing\" into \"it succeeded\".\n */\nexport function parseSandboxResultPayload(data: string): SandboxResultPayload | null {\n const record = parseRecord(data);\n if (!record) return null;\n const { sandboxId, preset, exitCode, timedOut, tornDown, error } = record;\n if (typeof sandboxId !== 'string' || sandboxId === '') return null;\n return {\n sandboxId,\n preset: typeof preset === 'string' ? preset : '',\n exitCode: typeof exitCode === 'number' ? exitCode : null,\n timedOut: timedOut === true,\n tornDown: tornDown === true,\n ...(typeof error === 'string' ? { error } : {}),\n };\n}\n\nexport function parseErrorPayload(data: string): SandboxErrorPayload {\n const record = parseRecord(data);\n const message = record && typeof record.message === 'string' ? record.message : data.trim();\n return { message: message === '' ? 'The server reported an unspecified stream error.' : message };\n}\n\nfunction parseRecord(data: string): Record<string, unknown> | null {\n try {\n const parsed: unknown = JSON.parse(data);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n // Not JSON — the caller decides whether to skip or report.\n }\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Arch\n// ---------------------------------------------------------------------------\n\n/**\n * The architecture to spawn for when `--arch` is not given.\n *\n * The host's, because the overwhelmingly common case is running an image you\n * just built locally, and a definition whose arch does not match its image is\n * rejected at preflight rather than silently emulated. Node reports `arm64` and\n * `x64`; anything else has no honest mapping, so `--arch` becomes required\n * instead of guessing on the user's behalf.\n */\nexport function hostArch(): SandboxArch | null {\n if (process.arch === 'arm64') return 'arm64';\n if (process.arch === 'x64') return 'x86_64';\n return null;\n}\n",
53
53
  "/**\n * The platform key → sandbox operator token exchange, client side (#1517, G-C9).\n *\n * WHY THIS EXISTS\n *\n * The sandbox routes do not accept a platform API key. They verify an HMAC\n * token minted by the server, and `mg_live_…` is not one — so sending it as\n * `Authorization: Bearer` produced a correctly-shaped header carrying the\n * wrong class of credential, and every `mutagent helix` command answered 401.\n *\n * `POST /api/sandbox/token` trades the platform key for a short-lived\n * operator token scoped to one workspace. The platform key stays a platform\n * key; only the minted token ever reaches a sandbox route.\n *\n * WHY IT IS CACHED ON DISK, NOT JUST IN MEMORY\n *\n * Every `mutagent helix …` invocation is a fresh process. An in-memory cache\n * would exchange once per COMMAND, turning a token with an hour of life into\n * one round trip per command — which is what the TTL exists to avoid. The\n * cache is keyed by (endpoint, workspaceId) so pointing at a different\n * backend, or switching workspace, can never reuse a token minted for the\n * other one.\n *\n * HOW IT IS STORED\n *\n * Through `writeSecureFile`, the same 0600 path `lib/config.ts` uses for the\n * API key — a bearer token good for an hour of control-plane authority is\n * credential material and gets credential handling. It is never passed as a\n * command-line argument and never logged, so it cannot land in shell history\n * or a process listing.\n *\n * TESTABILITY\n *\n * Transport, clock, and store are injected (HR-12: this package avoids\n * `mock.module`, whose registry-level replacement leaks across files). Tests\n * drive a fake fetch and an in-memory store; nothing touches `~/.config`.\n */\n\n/// <reference lib=\"dom\" />\n\nimport { existsSync, readFileSync, mkdirSync, rmSync } from 'fs';\nimport { homedir } from 'os';\nimport { join, dirname } from 'path';\nimport { writeSecureFile } from './secure-file.js';\nimport { AuthenticationError, MutagentError } from './errors.js';\n\n// ---------------------------------------------------------------------------\n// Cache\n// ---------------------------------------------------------------------------\n\nexport interface CachedToken {\n token: string;\n /** Epoch ms. */\n expiresAt: number;\n /** The backend this token was minted by — a token is not portable across them. */\n endpoint: string;\n /** The workspace this token authorises. */\n workspaceId: string;\n}\n\nexport interface TokenStore {\n read(): CachedToken | null;\n write(entry: CachedToken): void;\n clear(): void;\n}\n\n/**\n * Where the cached token lives.\n *\n * Resolved per call rather than frozen at import, and overridable with\n * `MUTAGENT_SANDBOX_TOKEN_FILE`. This is a CACHE LOCATION, not a second way to\n * configure credentials — the key and workspace still come only from\n * `lib/config.ts`. The override exists so a test suite (and CI) can exercise the\n * real store without writing a live bearer token into the developer's home\n * directory, which a module-level constant would force.\n */\nexport function sandboxTokenFile(): string {\n const override = process.env.MUTAGENT_SANDBOX_TOKEN_FILE;\n return override !== undefined && override !== ''\n ? override\n : join(homedir(), '.config', 'mutagent', 'sandbox-token.json');\n}\n\n/**\n * Treat a token as expired this many ms early.\n *\n * A token that passes the check and then expires in flight produces exactly the\n * 401 this module exists to prevent. Sixty seconds comfortably covers clock\n * skew between the CLI's machine and the server plus a slow request.\n */\nexport const EXPIRY_SKEW_MS = 60_000;\n\nfunction isCacheShape(value: unknown): value is CachedToken {\n if (typeof value !== 'object' || value === null) return false;\n const r = value as Record<string, unknown>;\n return (\n typeof r.token === 'string' &&\n typeof r.expiresAt === 'number' &&\n Number.isFinite(r.expiresAt) &&\n typeof r.endpoint === 'string' &&\n typeof r.workspaceId === 'string'\n );\n}\n\n/**\n * A store backed by one 0600 JSON file at `path`.\n *\n * Parameterised by path rather than closing over `SANDBOX_TOKEN_FILE` so the\n * write path — including the owner-only mode, which is the part with security\n * consequences — can be exercised against a temp file. A store whose only\n * instance points at the developer's real `~/.config` is a store whose\n * permission behaviour can only be verified by reading the source.\n */\nexport function createFileTokenStore(path: string): TokenStore {\n return {\n read(): CachedToken | null {\n if (!existsSync(path)) return null;\n try {\n const parsed: unknown = JSON.parse(readFileSync(path, 'utf-8'));\n // A cache file we cannot read is a cache MISS, never a failure — the\n // caller re-exchanges. Throwing here would let a corrupt cache brick\n // every helix command with no way out but manual file surgery.\n return isCacheShape(parsed) ? parsed : null;\n } catch {\n return null;\n }\n },\n\n write(entry: CachedToken): void {\n const dir = dirname(path);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeSecureFile(path, JSON.stringify(entry, null, 2));\n },\n\n clear(): void {\n try {\n rmSync(path, { force: true });\n } catch {\n // Best effort — a cache we cannot delete is still one we will not USE,\n // because every read is re-validated against endpoint, workspace and\n // expiry before the token is trusted.\n }\n },\n };\n}\n\n/**\n * The real store: one 0600 JSON file beside the credentials.\n *\n * Resolves its path on every call, so an override set after this module was\n * imported still takes effect — a store that captured the path at import time\n * would silently keep writing to the old location.\n */\nexport const fileTokenStore: TokenStore = {\n read: () => createFileTokenStore(sandboxTokenFile()).read(),\n write: (entry) => {\n createFileTokenStore(sandboxTokenFile()).write(entry);\n },\n clear: () => {\n createFileTokenStore(sandboxTokenFile()).clear();\n },\n};\n\n/** An in-memory store, for tests and for callers that must not touch disk. */\nexport function memoryTokenStore(initial: CachedToken | null = null): TokenStore {\n let entry = initial;\n return {\n read: () => entry,\n write: (e): void => {\n entry = e;\n },\n clear: (): void => {\n entry = null;\n },\n };\n}\n\n/**\n * True when `entry` can still be used for this exact (endpoint, workspace).\n *\n * All three legs are checked, not just expiry: a token minted for another\n * workspace is not merely useless, it is the specific confusion the server-side\n * membership gate exists to prevent, and sending it would produce a baffling\n * 403 instead of a clean re-exchange.\n */\nexport function isUsable(\n entry: CachedToken | null,\n endpoint: string,\n workspaceId: string,\n now: number\n): entry is CachedToken {\n return (\n entry !== null &&\n entry.endpoint === endpoint &&\n entry.workspaceId === workspaceId &&\n entry.expiresAt - EXPIRY_SKEW_MS > now\n );\n}\n\n// ---------------------------------------------------------------------------\n// Exchange\n// ---------------------------------------------------------------------------\n\nexport interface ExchangeDeps {\n fetchImpl?: typeof fetch;\n store?: TokenStore;\n now?: () => number;\n}\n\nexport interface ExchangeInput {\n endpoint: string;\n apiKey: string;\n workspaceId: string;\n}\n\n/** Shape of a successful `POST /api/sandbox/token`. */\ninterface TokenResponse {\n token: string;\n expiresIn: number;\n}\n\nfunction messageFrom(body: string): string {\n try {\n const parsed: unknown = JSON.parse(body);\n if (parsed && typeof parsed === 'object') {\n const { message: value } = parsed as Record<string, unknown>;\n if (typeof value === 'string' && value !== '') return value;\n }\n } catch {\n // Not JSON — fall through to the generic wording.\n }\n return '';\n}\n\n/**\n * Trade the platform key for an operator token. Always hits the network.\n *\n * The two failure statuses carry genuinely different remedies, so they are\n * reported as different errors rather than one \"auth failed\":\n *\n * 401 — the platform key itself is bad or expired. Log in again.\n * 403 — the key is FINE; this account cannot act in that workspace. Logging\n * in again will not help, and saying \"authentication failed\" here sends\n * the user down exactly the wrong path.\n */\nexport async function exchangeToken(\n input: ExchangeInput,\n deps: ExchangeDeps = {}\n): Promise<CachedToken> {\n const doFetch = deps.fetchImpl ?? fetch;\n const now = (deps.now ?? Date.now)();\n\n let response: Response;\n try {\n response = await doFetch(`${input.endpoint}/api/sandbox/token`, {\n method: 'POST',\n headers: {\n // The platform key travels as `x-api-key`, the way every other MutagenT\n // route in this CLI authenticates — this route is resolved by the same\n // global platform-key resolver, not by the sandbox Bearer verifier.\n 'x-api-key': input.apiKey,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ workspaceId: input.workspaceId }),\n });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n throw new MutagentError(\n 'SANDBOX_UNREACHABLE',\n `Could not reach the MutagenT API at ${input.endpoint}: ${detail}`,\n 'Check your connection, then verify the endpoint with: mutagent config list',\n 5\n );\n }\n\n if (response.status === 401) {\n throw new AuthenticationError(\n 'Your MutagenT API key was rejected. It may have been revoked or expired.',\n { suggestions: ['mutagent auth login --browser', 'mutagent auth status'] }\n );\n }\n\n if (response.status === 403) {\n const detail = messageFrom(await response.text().catch(() => ''));\n throw new MutagentError(\n 'SANDBOX_WORKSPACE_FORBIDDEN',\n detail !== ''\n ? detail\n : `Your API key is valid, but this account cannot use workspace \"${input.workspaceId}\".`,\n `Pick a workspace you belong to: mutagent workspaces list, then mutagent config set workspace <id>`,\n 3\n );\n }\n\n if (!response.ok) {\n const detail = messageFrom(await response.text().catch(() => ''));\n throw new MutagentError(\n 'SANDBOX_TOKEN_EXCHANGE_FAILED',\n detail !== ''\n ? detail\n : `The MutagenT API returned ${String(response.status)} when issuing a sandbox token.`,\n 'Retry, and if it persists report it with: mutagent feedback send \"<what happened>\" --category cli'\n );\n }\n\n let payload: TokenResponse;\n try {\n payload = (await response.json()) as TokenResponse;\n } catch {\n throw new MutagentError(\n 'INVALID_RESPONSE',\n 'The server returned a non-JSON response when issuing a sandbox token.',\n 'Retry, and if it persists report it with: mutagent feedback send \"<what happened>\" --category cli'\n );\n }\n\n if (typeof payload.token !== 'string' || payload.token === '') {\n throw new MutagentError(\n 'INVALID_RESPONSE',\n 'The server issued a sandbox token response with no token in it.',\n 'Retry, and if it persists report it with: mutagent feedback send \"<what happened>\" --category cli'\n );\n }\n\n // A missing or nonsensical `expiresIn` must not become an immortal cache\n // entry. Treating it as already-expired costs one extra exchange per command\n // and is self-correcting; trusting it would pin a stale token forever.\n const lifetimeMs =\n typeof payload.expiresIn === 'number' && Number.isFinite(payload.expiresIn) && payload.expiresIn > 0\n ? payload.expiresIn * 1000\n : 0;\n\n return {\n token: payload.token,\n expiresAt: now + lifetimeMs,\n endpoint: input.endpoint,\n workspaceId: input.workspaceId,\n };\n}\n\n/**\n * The cached operator token for this (endpoint, workspace), exchanging only when\n * there isn't a usable one.\n *\n * `forceRefresh` is how a 401 mid-session recovers: the cached token was\n * accepted by `isUsable` but the server disagreed (revoked key, rotated server\n * secret, a clock further out than the skew), so the caller discards it and\n * asks again exactly once.\n */\nexport async function getOperatorToken(\n input: ExchangeInput,\n options: { forceRefresh?: boolean } = {},\n deps: ExchangeDeps = {}\n): Promise<string> {\n const store = deps.store ?? fileTokenStore;\n const now = (deps.now ?? Date.now)();\n\n if (options.forceRefresh !== true) {\n const cached = store.read();\n if (isUsable(cached, input.endpoint, input.workspaceId, now)) return cached.token;\n }\n\n const fresh = await exchangeToken(input, deps);\n store.write(fresh);\n return fresh.token;\n}\n\n/** Drop the cached token — used when the server rejects it. */\nexport function clearCachedToken(deps: ExchangeDeps = {}): void {\n (deps.store ?? fileTokenStore).clear();\n}\n",
54
54
  "/**\n * Terminal-capability checks for output that streams.\n *\n * `NO_COLOR` and TTY detection are answered here rather than at each call site\n * because the streaming commands have to make the decision repeatedly, and a\n * single spinner or stray escape sequence written into a pipe corrupts the\n * captured output (Rule 1.2 / HR-8).\n */\n\n/**\n * True when output must be plain: no spinners, no ANSI, no cursor tricks.\n *\n * Any one of these is sufficient — `NO_COLOR` is a user instruction, a\n * non-TTY stdout means something is capturing the bytes, and\n * `MUTAGENT_NON_INTERACTIVE` is the flag/CI signal the root program already\n * sets in its `preAction` hook.\n */\nexport function isPlainOutput(): boolean {\n if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== '') return true;\n if (process.env.MUTAGENT_NON_INTERACTIVE === 'true') return true;\n if (process.env.CI === 'true') return true;\n return !process.stdout.isTTY;\n}\n\n/** True when a spinner would be appropriate: interactive, styled, not JSON. */\nexport function canAnimate(isJson: boolean): boolean {\n return !isJson && !isPlainOutput();\n}\n",
55
- "/**\n * The interactive half of `mutagent helix` — what an attached session looks and\n * feels like from a terminal.\n *\n * CTRL-C DETACHES. IT DOES NOT DESTROY.\n *\n * A sandbox outlives the terminal that started it. Killing the process the\n * user can see must not kill the session they cannot — losing an agent run to\n * a closed laptop lid is not a recoverable mistake, and `rm` is the only verb\n * that destroys. So SIGINT aborts the stream, prints the exact re-attach line\n * (with the resume point already filled in), and exits 0.\n */\n\nimport chalk from 'chalk';\nimport {\n runStreamSession,\n type DisconnectBehaviour,\n type RetryPolicy,\n type SessionResult,\n type StreamOpener,\n type StreamSink,\n} from '../../lib/sandbox-stream.js';\nimport type { SandboxRunPayload } from '../../lib/sandbox-api.js';\nimport { isPlainOutput } from '../../lib/tty.js';\nimport { MutagentError } from '../../lib/errors.js';\n\n/** Style a string, unless the terminal or the user asked us not to. */\nfunction dim(text: string): string {\n return isPlainOutput() ? text : chalk.dim(text);\n}\n\n/** The re-runnable command that picks the session back up where it stopped. */\nexport function reattachHint(id: string, lastSeq: number): string {\n const since = lastSeq > 0 ? ` --since ${String(lastSeq)}` : '';\n return `mutagent helix attach ${id}${since}`;\n}\n\n/**\n * Build the output sink.\n *\n * Human mode writes the sandbox's bytes through untouched so a piped run is\n * byte-identical to a local one. JSON mode emits NDJSON — one object per event\n * — because a live stream cannot be a single JSON document until it is over.\n * The final line is always a complete summary object, so `| tail -1` still\n * yields the one-object answer the JSON contract implies.\n */\nexport function createSessionSink(isJson: boolean): StreamSink {\n if (isJson) {\n return {\n stdout: (text, seq): void => {\n writeEvent('stdout', { seq, text });\n },\n stderr: (text, seq): void => {\n writeEvent('stderr', { seq, text });\n },\n notice: (message): void => {\n process.stderr.write(`${JSON.stringify({ type: 'notice', message })}\\n`);\n },\n };\n }\n\n return {\n stdout: (text): void => {\n process.stdout.write(text);\n },\n stderr: (text): void => {\n process.stderr.write(text);\n },\n notice: (message): void => {\n process.stderr.write(`${dim(`[mutagent] ${message}`)}\\n`);\n },\n };\n}\n\nfunction writeEvent(type: string, fields: Record<string, unknown>): void {\n process.stdout.write(`${JSON.stringify({ type, ...fields })}\\n`);\n}\n\nexport interface AttachOptions {\n /**\n * The sandbox being watched, when it is known up front.\n *\n * EMPTY for a one-shot streaming run: the box does not exist until the request\n * creates it, and its id arrives on the stream. `reportOutcome` prefers the id\n * the stream reported for exactly that reason.\n */\n id: string;\n open: StreamOpener;\n since?: number;\n isJson: boolean;\n /** One line printed before the first byte of output, e.g. what we attached to. */\n announce?: string;\n /**\n * What happens to the sandbox when this client goes away. Default `'survives'`.\n *\n * It is not cosmetic. Every outcome line below either offers a re-attach or\n * says the box is gone, and getting that backwards sends the user after a\n * sandbox that does not exist — or leaves them believing a billable one was\n * cleaned up when it was not.\n */\n onDisconnect?: DisconnectBehaviour;\n /** Overridden by callers that must not reconnect. See `run.ts`. */\n retry?: RetryPolicy;\n /** Fires when the stream names its sandbox — before any output. */\n onSandbox?: (sandbox: SandboxRunPayload) => void;\n}\n\n/**\n * Run an attached session to completion: stream, handle Ctrl-C, then report how\n * it ended and set the process exit code to match the sandbox's.\n */\nexport async function attachToSandbox(options: AttachOptions): Promise<SessionResult> {\n const sink = createSessionSink(options.isJson);\n const controller = new AbortController();\n\n const onSigint = (): void => {\n controller.abort();\n };\n process.on('SIGINT', onSigint);\n\n try {\n if (options.announce) sink.notice(options.announce);\n\n const result = await runStreamSession({\n open: options.open,\n sink,\n since: options.since,\n signal: controller.signal,\n ...(options.retry === undefined ? {} : { retry: options.retry }),\n ...(options.onDisconnect === undefined ? {} : { onDisconnect: options.onDisconnect }),\n ...(options.onSandbox === undefined ? {} : { onSandbox: options.onSandbox }),\n });\n\n reportOutcome(options.id, result, sink, options.onDisconnect ?? 'survives');\n return result;\n } finally {\n process.removeListener('SIGINT', onSigint);\n }\n}\n\n/**\n * Say how the session ended, and propagate the sandbox's exit code.\n *\n * `process.exitCode` rather than `process.exit()`: the stream just wrote to\n * stdout, and exiting outright can truncate that write. Setting the code lets\n * Node flush and then exit with it — which is what makes `mutagent helix run\n * <id> \"...\" && next-thing` behave the way a local command would.\n */\nfunction reportOutcome(\n id: string,\n result: SessionResult,\n sink: StreamSink,\n onDisconnect: DisconnectBehaviour,\n): void {\n // The stream's own answer wins over the caller's: a one-shot run passes no id\n // because it does not have one until the server sends it.\n const box = result.sandbox?.sandboxId ?? id;\n\n if (result.end === 'detached') {\n if (onDisconnect === 'released') {\n // The turn is over and the box is gone — the server released it the moment\n // we stopped reading. Saying \"still running\" here, or offering a\n // `--since` re-attach, would be a straightforward lie.\n sink.notice(\n box === ''\n ? 'Stopped. The turn was cancelled and the sandbox released — nothing is left running.'\n : `Stopped. The turn was cancelled and sandbox ${box} released — nothing is left running.`,\n );\n sink.notice('Run the turn again to retry, or add --keep next time to hold the sandbox open.');\n return;\n }\n sink.notice(`Detached. Sandbox ${box} is still running — nothing was destroyed.`);\n sink.notice(`Re-attach with: ${reattachHint(box, result.lastSeq)}`);\n sink.notice(`Destroy it with: mutagent helix rm ${box} --force`);\n return;\n }\n\n if (result.gaps > 0) {\n sink.notice(\n `Session ended, but ${String(result.gaps)} gap(s) occurred — the output above is not complete.`,\n );\n }\n\n // A one-shot reports what became of its box, in both directions. The `false`\n // case is the one worth printing: it means a machine may still be billing.\n if (result.result !== undefined && !result.result.tornDown) {\n sink.notice(\n `Sandbox ${result.result.sandboxId} was NOT torn down. Destroy it with: mutagent helix rm ${result.result.sandboxId} --force`,\n );\n }\n\n if (result.result?.timedOut === true) {\n sink.notice('The turn timed out.');\n }\n\n if (result.exitCode === null) {\n // No exit code is not a success. `helix run` turns this into a non-zero\n // process exit itself; here we only say what happened.\n const why = result.result?.error;\n sink.notice(\n why === undefined\n ? `Sandbox ${box} exited (no exit code reported).`\n : `The turn did not complete: ${why}`,\n );\n return;\n }\n\n sink.notice(`Sandbox ${box} exited with code ${String(result.exitCode)}.`);\n if (result.exitCode !== 0) {\n process.exitCode = result.exitCode;\n }\n}\n\n/**\n * Parse `--since`, before any socket is opened (§4.5 validate-before-action).\n *\n * A resume point is a sequence number and `seq` is monotonic from 1, so\n * anything else is a typo. Rejecting it here matters more than it looks:\n * `--since abc` coerced to `NaN` would drop the resume entirely and replay the\n * whole session, which reads as duplicated output rather than as an error.\n */\nexport function parseSince(raw: string | undefined): number | undefined {\n if (raw === undefined) return undefined;\n const value = Number(raw);\n if (!Number.isInteger(value) || value < 0) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--since must be a non-negative sequence number, got \"${raw}\".`,\n 'Sequence numbers start at 1 and are printed when a session detaches.',\n );\n }\n return value;\n}\n",
55
+ "/**\n * The interactive half of `mutagent helix` — what an attached session looks and\n * feels like from a terminal.\n *\n * CTRL-C DETACHES. IT DOES NOT DESTROY.\n *\n * A sandbox outlives the terminal that started it. Killing the process the\n * user can see must not kill the session they cannot — losing an agent run to\n * a closed laptop lid is not a recoverable mistake, and `rm` is the only verb\n * that destroys. So SIGINT aborts the stream, prints the exact re-attach line\n * (with the resume point already filled in), and exits 0.\n */\n\nimport chalk from 'chalk';\nimport {\n runStreamSession,\n type DisconnectBehaviour,\n type RetryPolicy,\n type SessionResult,\n type StreamOpener,\n type StreamSink,\n} from '../../lib/sandbox-stream.js';\nimport type { SandboxRunPayload } from '../../lib/sandbox-api.js';\nimport { isPlainOutput } from '../../lib/tty.js';\nimport { MutagentError } from '../../lib/errors.js';\nimport { FrameFeed } from './frames.js';\n\n/** Style a string, unless the terminal or the user asked us not to. */\nfunction dim(text: string): string {\n return isPlainOutput() ? text : chalk.dim(text);\n}\n\n/** The re-runnable command that picks the session back up where it stopped. */\nexport function reattachHint(id: string, lastSeq: number): string {\n const since = lastSeq > 0 ? ` --since ${String(lastSeq)}` : '';\n return `mutagent helix attach ${id}${since}`;\n}\n\n/**\n * Build the output sink.\n *\n * Human mode writes the sandbox's bytes through untouched so a piped run is\n * byte-identical to a local one. JSON mode emits NDJSON — one object per event\n * — because a live stream cannot be a single JSON document until it is over.\n * The final line is always a complete summary object, so `| tail -1` still\n * yields the one-object answer the JSON contract implies.\n *\n * WHY THE RENDERED FEED GOES TO STDERR\n *\n * An `rpc` frame is not the sandbox's stdout — it is the harness narrating\n * itself, and the CLI choosing how to say it. Everything in that category\n * already goes to stderr here, so `helix attach <id> > out.txt` still\n * captures the session's output and only that. Putting a rendered tool feed\n * on stdout would corrupt every pipe downstream of it.\n */\nexport function createSessionSink(isJson: boolean): StreamSink {\n if (isJson) {\n return {\n stdout: (text, seq): void => {\n writeEvent('stdout', { seq, text });\n },\n stderr: (text, seq): void => {\n writeEvent('stderr', { seq, text });\n },\n // The frame is re-emitted as an object, not a string, so a consumer can\n // read `.frame.type` without a second JSON.parse. Parsed, never\n // reshaped: an unreadable frame degrades to `unrecognised` rather than\n // being dropped or half-invented.\n rpc: (frame, seq): void => {\n const parsed = parseFrame(frame);\n if (parsed === null) writeEvent('unrecognised', { seq, raw: frame });\n else writeEvent('rpc', { seq, frame: parsed });\n },\n unrecognised: (raw, seq): void => {\n writeEvent('unrecognised', { seq, raw });\n },\n notice: (message): void => {\n process.stderr.write(`${JSON.stringify({ type: 'notice', message })}\\n`);\n },\n };\n }\n\n const feed = new FrameFeed();\n\n return {\n stdout: (text): void => {\n process.stdout.write(text);\n },\n stderr: (text): void => {\n process.stderr.write(text);\n },\n rpc: (frame, seq): void => {\n const line = feed.render(frame, seq);\n if (line !== null) process.stderr.write(`${line}\\n`);\n },\n unrecognised: (raw, seq): void => {\n const line = feed.renderUnrecognised(raw, seq);\n if (line !== null) process.stderr.write(`${line}\\n`);\n },\n notice: (message): void => {\n process.stderr.write(`${dim(`[mutagent] ${message}`)}\\n`);\n },\n };\n}\n\n/** One frame as an object, or null when it is not one JSON object. */\nfunction parseFrame(text: string): Record<string, unknown> | null {\n try {\n const parsed: unknown = JSON.parse(text);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n // Not JSON — reported as unrecognised by the caller.\n }\n return null;\n}\n\nfunction writeEvent(type: string, fields: Record<string, unknown>): void {\n process.stdout.write(`${JSON.stringify({ type, ...fields })}\\n`);\n}\n\nexport interface AttachOptions {\n /**\n * The sandbox being watched, when it is known up front.\n *\n * EMPTY for a one-shot streaming run: the box does not exist until the request\n * creates it, and its id arrives on the stream. `reportOutcome` prefers the id\n * the stream reported for exactly that reason.\n */\n id: string;\n open: StreamOpener;\n since?: number;\n isJson: boolean;\n /** One line printed before the first byte of output, e.g. what we attached to. */\n announce?: string;\n /**\n * What happens to the sandbox when this client goes away. Default `'survives'`.\n *\n * It is not cosmetic. Every outcome line below either offers a re-attach or\n * says the box is gone, and getting that backwards sends the user after a\n * sandbox that does not exist — or leaves them believing a billable one was\n * cleaned up when it was not.\n */\n onDisconnect?: DisconnectBehaviour;\n /** Overridden by callers that must not reconnect. See `run.ts`. */\n retry?: RetryPolicy;\n /** Fires when the stream names its sandbox — before any output. */\n onSandbox?: (sandbox: SandboxRunPayload) => void;\n}\n\n/**\n * Run an attached session to completion: stream, handle Ctrl-C, then report how\n * it ended and set the process exit code to match the sandbox's.\n */\nexport async function attachToSandbox(options: AttachOptions): Promise<SessionResult> {\n const sink = createSessionSink(options.isJson);\n const controller = new AbortController();\n\n const onSigint = (): void => {\n controller.abort();\n };\n process.on('SIGINT', onSigint);\n\n try {\n if (options.announce) sink.notice(options.announce);\n\n const result = await runStreamSession({\n open: options.open,\n sink,\n since: options.since,\n signal: controller.signal,\n ...(options.retry === undefined ? {} : { retry: options.retry }),\n ...(options.onDisconnect === undefined ? {} : { onDisconnect: options.onDisconnect }),\n ...(options.onSandbox === undefined ? {} : { onSandbox: options.onSandbox }),\n });\n\n reportOutcome(options.id, result, sink, options.onDisconnect ?? 'survives');\n return result;\n } finally {\n process.removeListener('SIGINT', onSigint);\n }\n}\n\n/**\n * Say how the session ended, and propagate the sandbox's exit code.\n *\n * `process.exitCode` rather than `process.exit()`: the stream just wrote to\n * stdout, and exiting outright can truncate that write. Setting the code lets\n * Node flush and then exit with it — which is what makes `mutagent helix run\n * <id> \"...\" && next-thing` behave the way a local command would.\n */\nfunction reportOutcome(\n id: string,\n result: SessionResult,\n sink: StreamSink,\n onDisconnect: DisconnectBehaviour,\n): void {\n // The stream's own answer wins over the caller's: a one-shot run passes no id\n // because it does not have one until the server sends it.\n const box = result.sandbox?.sandboxId ?? id;\n\n if (result.end === 'detached') {\n if (onDisconnect === 'released') {\n // The turn is over and the box is gone — the server released it the moment\n // we stopped reading. Saying \"still running\" here, or offering a\n // `--since` re-attach, would be a straightforward lie.\n sink.notice(\n box === ''\n ? 'Stopped. The turn was cancelled and the sandbox released — nothing is left running.'\n : `Stopped. The turn was cancelled and sandbox ${box} released — nothing is left running.`,\n );\n sink.notice('Run the turn again to retry, or add --keep next time to hold the sandbox open.');\n return;\n }\n sink.notice(`Detached. Sandbox ${box} is still running — nothing was destroyed.`);\n sink.notice(`Re-attach with: ${reattachHint(box, result.lastSeq)}`);\n sink.notice(`Destroy it with: mutagent helix rm ${box} --force`);\n return;\n }\n\n if (result.gaps > 0) {\n sink.notice(\n `Session ended, but ${String(result.gaps)} gap(s) occurred — the output above is not complete.`,\n );\n }\n\n // A one-shot reports what became of its box, in both directions. The `false`\n // case is the one worth printing: it means a machine may still be billing.\n if (result.result !== undefined && !result.result.tornDown) {\n sink.notice(\n `Sandbox ${result.result.sandboxId} was NOT torn down. Destroy it with: mutagent helix rm ${result.result.sandboxId} --force`,\n );\n }\n\n if (result.result?.timedOut === true) {\n sink.notice('The turn timed out.');\n }\n\n if (result.exitCode === null) {\n // No exit code is not a success. `helix run` turns this into a non-zero\n // process exit itself; here we only say what happened.\n const why = result.result?.error;\n sink.notice(\n why === undefined\n ? `Sandbox ${box} exited (no exit code reported).`\n : `The turn did not complete: ${why}`,\n );\n return;\n }\n\n sink.notice(`Sandbox ${box} exited with code ${String(result.exitCode)}.`);\n if (result.exitCode !== 0) {\n process.exitCode = result.exitCode;\n }\n}\n\n/**\n * Parse `--since`, before any socket is opened (§4.5 validate-before-action).\n *\n * A resume point is a sequence number and `seq` is monotonic from 1, so\n * anything else is a typo. Rejecting it here matters more than it looks:\n * `--since abc` coerced to `NaN` would drop the resume entirely and replay the\n * whole session, which reads as duplicated output rather than as an error.\n */\nexport function parseSince(raw: string | undefined): number | undefined {\n if (raw === undefined) return undefined;\n const value = Number(raw);\n if (!Number.isInteger(value) || value < 0) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--since must be a non-negative sequence number, got \"${raw}\".`,\n 'Sequence numbers start at 1 and are printed when a session detaches.',\n );\n }\n return value;\n}\n",
56
56
  "/**\n * Server-Sent Events decoding.\n *\n * The sandbox stream endpoints (`/api/sandbox/:id/exec?stream=1` and\n * `/api/sandbox/:id/stream`) are `text/event-stream`, and a stream is the one\n * place where \"read the whole body, then parse\" is wrong: the point is that\n * output arrives before the process finishes.\n *\n * Framing is done here, in a pure decoder with no I/O, because the parts that\n * actually bite — a `data:` line split across two TCP reads, `\\r\\n` line\n * endings, a comment line — are invisible to a test that feeds one tidy chunk.\n * Keeping the decoder separate from the transport is what makes those cases\n * cheap to write down.\n *\n * Reference: https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\n\n/** One dispatched SSE event. `event` defaults to `message` when unnamed. */\nexport interface SseEvent {\n event: string;\n data: string;\n}\n\nconst DEFAULT_EVENT_NAME = 'message';\n\n/**\n * Incremental SSE framer. Feed it string chunks in arrival order; it returns\n * whichever complete events that chunk finished. Partial lines are held.\n */\nexport class SseDecoder {\n private buffer = '';\n private eventName: string | null = null;\n private dataLines: string[] = [];\n\n /** Feed one decoded chunk; returns the events it completed (possibly none). */\n push(chunk: string): SseEvent[] {\n this.buffer += chunk;\n const dispatched: SseEvent[] = [];\n\n let newlineAt = this.buffer.indexOf('\\n');\n while (newlineAt !== -1) {\n let line = this.buffer.slice(0, newlineAt);\n this.buffer = this.buffer.slice(newlineAt + 1);\n // A CRLF stream leaves the CR on the front half of the split.\n if (line.endsWith('\\r')) line = line.slice(0, -1);\n\n const event = this.consumeLine(line);\n if (event) dispatched.push(event);\n\n newlineAt = this.buffer.indexOf('\\n');\n }\n\n return dispatched;\n }\n\n private consumeLine(line: string): SseEvent | null {\n // Blank line terminates the current event.\n if (line === '') return this.dispatch();\n\n // Comment / keep-alive line.\n if (line.startsWith(':')) return null;\n\n const colonAt = line.indexOf(':');\n const field = colonAt === -1 ? line : line.slice(0, colonAt);\n let value = colonAt === -1 ? '' : line.slice(colonAt + 1);\n // Exactly one leading space is part of the framing, not the value.\n if (value.startsWith(' ')) value = value.slice(1);\n\n if (field === 'event') {\n this.eventName = value;\n } else if (field === 'data') {\n this.dataLines.push(value);\n }\n // `id` and `retry` are meaningful to the spec but not to this contract:\n // resumption is by `?since=<seq>` from the payload, not by Last-Event-ID.\n\n return null;\n }\n\n private dispatch(): SseEvent | null {\n const name = this.eventName;\n const data = this.dataLines;\n this.eventName = null;\n this.dataLines = [];\n\n // Per spec: an empty data buffer dispatches nothing. This is what makes a\n // stray blank line — or a `:keep-alive` followed by one — a no-op rather\n // than a phantom empty event the caller has to filter out.\n if (data.length === 0) return null;\n\n return { event: name ?? DEFAULT_EVENT_NAME, data: data.join('\\n') };\n }\n}\n\n/**\n * Decode a `text/event-stream` body into events, in order.\n *\n * Yields as data arrives. Returns when the body ends; an aborted `signal`\n * surfaces as whatever the underlying reader throws, which the caller\n * classifies (a deliberate detach and a dropped connection are not the same\n * thing and must not be reported as the same thing).\n */\nexport async function* readSseEvents(\n body: ReadableStream<Uint8Array>,\n): AsyncGenerator<SseEvent, void, undefined> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n const framer = new SseDecoder();\n\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n // `stream: true` keeps a multi-byte character split across two reads\n // from decoding into a replacement character.\n for (const event of framer.push(decoder.decode(value, { stream: true }))) {\n yield event;\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n",
57
- "/**\n * The attach loop: consume a sandbox event stream and render it as if the\n * process were running locally.\n *\n * Three things here are not incidental:\n *\n * 1. **stdout goes to stdout, stderr goes to stderr.** Anything the CLI itself\n * says — \"attached\", \"reconnecting\", \"detached\" — goes to stderr, so\n * `mutagent helix attach <id> > out.txt` captures the session's output and\n * nothing else. A status line mixed into stdout silently corrupts every\n * downstream pipe.\n *\n * 2. **A dropped connection is resumed, not restarted.** Reconnect carries\n * `?since=<last seq seen>`, because a reconnect without it replays from the\n * beginning and the user reads the same output twice with no way to tell.\n *\n * 3. **A gap is announced.** `seq` is monotonic from 1, so a resumed stream\n * whose first event skips ahead proves output was lost. Printing the\n * remainder as though it were continuous would be a quiet lie about what\n * the agent did — worse than the gap itself.\n *\n * The transport is injected (`open`) rather than imported, so the reconnect,\n * backoff and gap paths are testable without a network and without mocking a\n * module registry — which in this package leaks across files (HR-12).\n */\n\nimport { readSseEvents } from './sse.js';\nimport {\n parseErrorPayload,\n parseOutputPayload,\n parseSandboxResultPayload,\n parseSandboxRunPayload,\n parseStatusPayload,\n type SandboxResultPayload,\n type SandboxRunPayload,\n} from './sandbox-api.js';\nimport { MutagentError } from './errors.js';\n\n/** Where rendered output goes. Implemented by the command layer. */\nexport interface StreamSink {\n /** Sandbox stdout — verbatim, no added newlines. */\n stdout: (text: string, seq: number) => void;\n /** Sandbox stderr — verbatim. */\n stderr: (text: string, seq: number) => void;\n /** The CLI's own commentary. Always a side channel, never stdout. */\n notice: (line: string) => void;\n}\n\n/** Opens one stream connection. Called again per reconnect. */\nexport type StreamOpener = (options: {\n since?: number;\n signal: AbortSignal;\n}) => Promise<ReadableStream<Uint8Array>>;\n\nexport interface RetryPolicy {\n /** Reconnect attempts before giving up. */\n attempts: number;\n /** First backoff step; doubles per attempt. */\n baseDelayMs: number;\n}\n\nexport const DEFAULT_RETRY: RetryPolicy = { attempts: 3, baseDelayMs: 500 };\n\n/** How the session ended. */\nexport type SessionEnd = 'exited' | 'detached';\n\n/**\n * What happens to the sandbox when THIS connection goes away.\n *\n * 'survives' — `attach` and `exec --sandbox`: the box outlives the terminal, so\n * Ctrl-C is a detach and `--since` picks the session back up. This is the\n * default because it is what every caller before the one-shot stream did.\n * 'released' — the one-shot streaming run: the server owns the box's whole life\n * and releases it the moment this connection drops. Telling the user it is\n * \"still running\" would be false, and offering a `--since` re-attach would\n * point at a sandbox that no longer exists.\n */\nexport type DisconnectBehaviour = 'survives' | 'released';\n\nexport interface SessionResult {\n end: SessionEnd;\n /** Highest sequence number seen — the resume point for a re-attach. */\n lastSeq: number;\n /** Process exit code, when the server reported one. */\n exitCode: number | null;\n reconnects: number;\n /** Discontinuities detected. Non-zero means output was lost. */\n gaps: number;\n /** One-shot streams only: which box this run created, from the opening frame. */\n sandbox?: SandboxRunPayload;\n /** One-shot streams only: the terminal report, including whether the box is gone. */\n result?: SandboxResultPayload;\n}\n\nexport interface RunSessionOptions {\n open: StreamOpener;\n sink: StreamSink;\n /** Resume point supplied by the caller (`--since`). */\n since?: number;\n /** Aborted on Ctrl-C. Abort means detach, never destroy. */\n signal: AbortSignal;\n retry?: RetryPolicy;\n /**\n * What a lost connection means for the sandbox. Default `'survives'`.\n *\n * It changes only the ADVICE given when reconnection is exhausted, and that\n * advice is the whole point: \"the sandbox is still running, resume with\n * --since\" is actively wrong for a one-shot, whose box the server has already\n * released. Wrong recovery advice is worse than none.\n */\n onDisconnect?: DisconnectBehaviour;\n /**\n * Called the moment the stream names its sandbox.\n *\n * A callback AS WELL AS `SessionResult.sandbox`, because the id is most needed\n * exactly when there is no `SessionResult` to read it from — a run that throws\n * still created a box, and the caller needs to be able to say which one.\n */\n onSandbox?: (sandbox: SandboxRunPayload) => void;\n /** Injected for tests; production uses a real timer. */\n sleep?: (ms: number, signal: AbortSignal) => Promise<void>;\n}\n\n/**\n * Consume the stream until the sandbox process exits, the caller detaches, or\n * reconnection is exhausted (which throws).\n */\nexport async function runStreamSession(options: RunSessionOptions): Promise<SessionResult> {\n const retry = options.retry ?? DEFAULT_RETRY;\n const sleep = options.sleep ?? delay;\n const { sink, signal } = options;\n\n const onDisconnect = options.onDisconnect ?? 'survives';\n\n let lastSeq = options.since ?? 0;\n let exitCode: number | null = null;\n let reconnects = 0;\n let gaps = 0;\n let attempt = 0;\n let sandbox: SandboxRunPayload | undefined;\n let result: SandboxResultPayload | undefined;\n\n const outcome = (end: SessionEnd): SessionResult => ({\n end,\n lastSeq,\n exitCode,\n reconnects,\n gaps,\n ...(sandbox === undefined ? {} : { sandbox }),\n ...(result === undefined ? {} : { result }),\n });\n const detached = (): SessionResult => outcome('detached');\n // Read through a call, not the property. `signal.aborted` is checked at the\n // top of the loop and again after every await; flow analysis narrows the\n // property to `false` for the rest of the block and flags each later check as\n // dead — but the value changes DURING those awaits, which is the entire point.\n const isAborted = (): boolean => signal.aborted;\n\n for (;;) {\n if (isAborted()) return detached();\n\n let stream: ReadableStream<Uint8Array>;\n try {\n stream = await options.open({ since: lastSeq > 0 ? lastSeq : undefined, signal });\n } catch (error) {\n if (isAborted()) return detached();\n // A failure to CONNECT on the very first attempt is not a dropped\n // connection — it is \"this sandbox stream is not available\", and\n // retrying it three times only delays a message the user needs now.\n if (reconnects === 0 && attempt === 0) throw error;\n attempt += 1;\n if (attempt > retry.attempts) throw exhausted(lastSeq, error, onDisconnect);\n reconnects += 1;\n sink.notice(reconnectNotice(attempt, retry.attempts, lastSeq));\n await sleep(backoffMs(retry.baseDelayMs, attempt), signal);\n continue;\n }\n\n let exited = false;\n try {\n for await (const event of readSseEvents(stream)) {\n // Any event proves the connection is alive; a later drop gets a full\n // retry budget rather than inheriting a spent one.\n attempt = 0;\n\n if (event.event === 'stdout' || event.event === 'stderr') {\n const payload = parseOutputPayload(event.data);\n if (!payload) continue;\n if (payload.seq > lastSeq + 1 && lastSeq > 0) {\n gaps += 1;\n sink.notice(gapNotice(lastSeq, payload.seq));\n }\n lastSeq = Math.max(lastSeq, payload.seq);\n if (event.event === 'stdout') sink.stdout(payload.text, payload.seq);\n else sink.stderr(payload.text, payload.seq);\n continue;\n }\n\n // One-shot streams only. Recorded BEFORE `status: exited` can break the\n // loop, which is why the server frames `result` ahead of it — anything\n // after the terminal status is written to a socket nobody reads again.\n if (event.event === 'sandbox') {\n const payload = parseSandboxRunPayload(event.data);\n if (payload) {\n sandbox = payload;\n options.onSandbox?.(payload);\n }\n continue;\n }\n\n if (event.event === 'result') {\n const payload = parseSandboxResultPayload(event.data);\n if (payload) result = payload;\n continue;\n }\n\n if (event.event === 'status') {\n const payload = parseStatusPayload(event.data);\n if (payload?.state === 'exited') {\n exitCode = payload.exitCode;\n exited = true;\n break;\n }\n continue;\n }\n\n if (event.event === 'error') {\n const { message } = parseErrorPayload(event.data);\n if (mentionsLostBuffer(message)) {\n gaps += 1;\n sink.notice(\n `Output before this point is unavailable: ${message}. ` +\n 'What follows is not continuous with what came before.',\n );\n } else {\n sink.notice(`Stream error: ${message}`);\n }\n continue;\n }\n\n // `ping` and anything else the server adds later: ignored on purpose.\n // An unknown event name is not an error the user can act on.\n }\n } catch (error) {\n if (isAborted()) return detached();\n attempt += 1;\n if (attempt > retry.attempts) throw exhausted(lastSeq, error, onDisconnect);\n reconnects += 1;\n sink.notice(reconnectNotice(attempt, retry.attempts, lastSeq));\n await sleep(backoffMs(retry.baseDelayMs, attempt), signal);\n continue;\n }\n\n if (exited) return outcome('exited');\n if (isAborted()) return detached();\n\n // The body ended without an `exited` status: the connection dropped\n // cleanly. Resume from where we are.\n attempt += 1;\n if (attempt > retry.attempts) throw exhausted(lastSeq, null, onDisconnect);\n reconnects += 1;\n sink.notice(reconnectNotice(attempt, retry.attempts, lastSeq));\n await sleep(backoffMs(retry.baseDelayMs, attempt), signal);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Messages\n// ---------------------------------------------------------------------------\n\nfunction backoffMs(base: number, attempt: number): number {\n return base * 2 ** (attempt - 1);\n}\n\nfunction reconnectNotice(attempt: number, max: number, lastSeq: number): string {\n return `Connection lost. Reconnecting (${String(attempt)}/${String(max)}) from seq ${String(lastSeq)}...`;\n}\n\nfunction gapNotice(lastSeq: number, nextSeq: number): string {\n const missing = nextSeq - lastSeq - 1;\n return (\n `Output gap: ${String(missing)} event(s) between seq ${String(lastSeq)} and ` +\n `${String(nextSeq)} are unavailable — the server buffer rolled past the resume point. ` +\n 'What follows is not continuous with what came before.'\n );\n}\n\nfunction exhausted(\n lastSeq: number,\n cause: unknown,\n onDisconnect: DisconnectBehaviour,\n): MutagentError {\n const detail = cause instanceof Error ? ` (${cause.message})` : '';\n // The two branches are not two phrasings of one fact — they are opposite\n // facts. Offering the `--since` re-attach to a one-shot caller sends them\n // after a sandbox the server has already released.\n const guidance =\n onDisconnect === 'released'\n ? 'This was a one-shot run: the server releases the sandbox as soon as the connection drops, so nothing is left running and there is nothing to re-attach to. Run the turn again, or use --no-stream to wait for the whole result in one reply.'\n : `The sandbox is still running — nothing was destroyed. Resume with: mutagent helix attach <id> --since ${String(lastSeq)}`;\n return new MutagentError(\n 'STREAM_DISCONNECTED',\n `Lost the sandbox stream and could not reconnect${detail}.`,\n guidance,\n 5,\n );\n}\n\n/** Does the server's error say output was dropped rather than merely failed? */\nfunction mentionsLostBuffer(message: string): boolean {\n return /buffer|rolled|expired|evicted|no longer available|too old/i.test(message);\n}\n\n/** Abortable sleep — Ctrl-C during backoff must detach immediately. */\nexport function delay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise<void>((resolve) => {\n if (signal.aborted) {\n resolve();\n return;\n }\n const timer = setTimeout(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n function onAbort(): void {\n clearTimeout(timer);\n resolve();\n }\n signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n",
57
+ "/**\n * The attach loop: consume a sandbox event stream and render it as if the\n * process were running locally.\n *\n * Three things here are not incidental:\n *\n * 1. **stdout goes to stdout, stderr goes to stderr.** Anything the CLI itself\n * says — \"attached\", \"reconnecting\", \"detached\" — goes to stderr, so\n * `mutagent helix attach <id> > out.txt` captures the session's output and\n * nothing else. A status line mixed into stdout silently corrupts every\n * downstream pipe.\n *\n * 2. **A dropped connection is resumed, not restarted.** Reconnect carries\n * `?since=<last seq seen>`, because a reconnect without it replays from the\n * beginning and the user reads the same output twice with no way to tell.\n *\n * 3. **A gap is announced.** `seq` is monotonic from 1, so a resumed stream\n * whose first event skips ahead proves output was lost. Printing the\n * remainder as though it were continuous would be a quiet lie about what\n * the agent did — worse than the gap itself.\n *\n * The transport is injected (`open`) rather than imported, so the reconnect,\n * backoff and gap paths are testable without a network and without mocking a\n * module registry — which in this package leaks across files (HR-12).\n */\n\nimport { readSseEvents } from './sse.js';\nimport {\n parseErrorPayload,\n parseOutputPayload,\n parseSandboxResultPayload,\n parseSandboxRunPayload,\n parseStatusPayload,\n type SandboxResultPayload,\n type SandboxRunPayload,\n} from './sandbox-api.js';\nimport { MutagentError } from './errors.js';\n\n/** Where rendered output goes. Implemented by the command layer. */\nexport interface StreamSink {\n /** Sandbox stdout — verbatim, no added newlines. */\n stdout: (text: string, seq: number) => void;\n /** Sandbox stderr — verbatim. */\n stderr: (text: string, seq: number) => void;\n /**\n * One structured JSON frame from the agent harness, exactly as it came off\n * the wire. NOT re-parsed here: the frame is the harness's document, and a\n * transport that reshapes it makes the CLI a second, lagging definition of\n * what a frame is. The command layer decides how to read it.\n */\n rpc: (frame: string, seq: number) => void;\n /**\n * An event this CLI has no rendering for, or a payload that did not parse.\n *\n * It exists because silently dropping server output is indistinguishable, to\n * the user, from the server having sent nothing — and the two need different\n * reactions. `seq` is 0 when the event carried no sequence number of its own.\n */\n unrecognised: (raw: string, seq: number) => void;\n /** The CLI's own commentary. Always a side channel, never stdout. */\n notice: (line: string) => void;\n}\n\n/** Opens one stream connection. Called again per reconnect. */\nexport type StreamOpener = (options: {\n since?: number;\n signal: AbortSignal;\n}) => Promise<ReadableStream<Uint8Array>>;\n\nexport interface RetryPolicy {\n /** Reconnect attempts before giving up. */\n attempts: number;\n /** First backoff step; doubles per attempt. */\n baseDelayMs: number;\n}\n\nexport const DEFAULT_RETRY: RetryPolicy = { attempts: 3, baseDelayMs: 500 };\n\n/** How the session ended. */\nexport type SessionEnd = 'exited' | 'detached';\n\n/**\n * What happens to the sandbox when THIS connection goes away.\n *\n * 'survives' — `attach` and `exec --sandbox`: the box outlives the terminal, so\n * Ctrl-C is a detach and `--since` picks the session back up. This is the\n * default because it is what every caller before the one-shot stream did.\n * 'released' — the one-shot streaming run: the server owns the box's whole life\n * and releases it the moment this connection drops. Telling the user it is\n * \"still running\" would be false, and offering a `--since` re-attach would\n * point at a sandbox that no longer exists.\n */\nexport type DisconnectBehaviour = 'survives' | 'released';\n\nexport interface SessionResult {\n end: SessionEnd;\n /** Highest sequence number seen — the resume point for a re-attach. */\n lastSeq: number;\n /** Process exit code, when the server reported one. */\n exitCode: number | null;\n reconnects: number;\n /** Discontinuities detected. Non-zero means output was lost. */\n gaps: number;\n /** One-shot streams only: which box this run created, from the opening frame. */\n sandbox?: SandboxRunPayload;\n /** One-shot streams only: the terminal report, including whether the box is gone. */\n result?: SandboxResultPayload;\n}\n\nexport interface RunSessionOptions {\n open: StreamOpener;\n sink: StreamSink;\n /** Resume point supplied by the caller (`--since`). */\n since?: number;\n /** Aborted on Ctrl-C. Abort means detach, never destroy. */\n signal: AbortSignal;\n retry?: RetryPolicy;\n /**\n * What a lost connection means for the sandbox. Default `'survives'`.\n *\n * It changes only the ADVICE given when reconnection is exhausted, and that\n * advice is the whole point: \"the sandbox is still running, resume with\n * --since\" is actively wrong for a one-shot, whose box the server has already\n * released. Wrong recovery advice is worse than none.\n */\n onDisconnect?: DisconnectBehaviour;\n /**\n * Called the moment the stream names its sandbox.\n *\n * A callback AS WELL AS `SessionResult.sandbox`, because the id is most needed\n * exactly when there is no `SessionResult` to read it from — a run that throws\n * still created a box, and the caller needs to be able to say which one.\n */\n onSandbox?: (sandbox: SandboxRunPayload) => void;\n /** Injected for tests; production uses a real timer. */\n sleep?: (ms: number, signal: AbortSignal) => Promise<void>;\n}\n\n/**\n * Consume the stream until the sandbox process exits, the caller detaches, or\n * reconnection is exhausted (which throws).\n */\nexport async function runStreamSession(options: RunSessionOptions): Promise<SessionResult> {\n const retry = options.retry ?? DEFAULT_RETRY;\n const sleep = options.sleep ?? delay;\n const { sink, signal } = options;\n\n const onDisconnect = options.onDisconnect ?? 'survives';\n\n let lastSeq = options.since ?? 0;\n let exitCode: number | null = null;\n let reconnects = 0;\n let gaps = 0;\n let attempt = 0;\n let sandbox: SandboxRunPayload | undefined;\n let result: SandboxResultPayload | undefined;\n\n const outcome = (end: SessionEnd): SessionResult => ({\n end,\n lastSeq,\n exitCode,\n reconnects,\n gaps,\n ...(sandbox === undefined ? {} : { sandbox }),\n ...(result === undefined ? {} : { result }),\n });\n const detached = (): SessionResult => outcome('detached');\n // Read through a call, not the property. `signal.aborted` is checked at the\n // top of the loop and again after every await; flow analysis narrows the\n // property to `false` for the rest of the block and flags each later check as\n // dead — but the value changes DURING those awaits, which is the entire point.\n const isAborted = (): boolean => signal.aborted;\n\n /**\n * Account for one wire sequence number, announcing a discontinuity.\n *\n * EVERY sequenced event goes through here, not just the ones that print.\n * `rpc` frames consume sequence numbers from the same counter as stdout, so a\n * branch that renders them without advancing `lastSeq` would resume from a\n * stale point and report a gap the server never left.\n */\n const noteSeq = (seq: number): void => {\n if (seq > lastSeq + 1 && lastSeq > 0) {\n gaps += 1;\n sink.notice(gapNotice(lastSeq, seq));\n }\n lastSeq = Math.max(lastSeq, seq);\n };\n\n for (;;) {\n if (isAborted()) return detached();\n\n let stream: ReadableStream<Uint8Array>;\n try {\n stream = await options.open({ since: lastSeq > 0 ? lastSeq : undefined, signal });\n } catch (error) {\n if (isAborted()) return detached();\n // A failure to CONNECT on the very first attempt is not a dropped\n // connection — it is \"this sandbox stream is not available\", and\n // retrying it three times only delays a message the user needs now.\n if (reconnects === 0 && attempt === 0) throw error;\n attempt += 1;\n if (attempt > retry.attempts) throw exhausted(lastSeq, error, onDisconnect);\n reconnects += 1;\n sink.notice(reconnectNotice(attempt, retry.attempts, lastSeq));\n await sleep(backoffMs(retry.baseDelayMs, attempt), signal);\n continue;\n }\n\n let exited = false;\n try {\n for await (const event of readSseEvents(stream)) {\n // Any event proves the connection is alive; a later drop gets a full\n // retry budget rather than inheriting a spent one.\n attempt = 0;\n\n if (event.event === 'stdout' || event.event === 'stderr') {\n const payload = parseOutputPayload(event.data);\n if (!payload) continue;\n noteSeq(payload.seq);\n if (event.event === 'stdout') sink.stdout(payload.text, payload.seq);\n else sink.stderr(payload.text, payload.seq);\n continue;\n }\n\n // One-shot streams only. Recorded BEFORE `status: exited` can break the\n // loop, which is why the server frames `result` ahead of it — anything\n // after the terminal status is written to a socket nobody reads again.\n if (event.event === 'sandbox') {\n const payload = parseSandboxRunPayload(event.data);\n if (payload) {\n sandbox = payload;\n options.onSandbox?.(payload);\n }\n continue;\n }\n\n if (event.event === 'result') {\n const payload = parseSandboxResultPayload(event.data);\n if (payload) result = payload;\n continue;\n }\n\n // A structured harness frame. Same payload envelope as stdout, so the\n // same sequence accounting — the text just happens to be JSON.\n if (event.event === 'rpc') {\n const payload = parseOutputPayload(event.data);\n if (!payload) {\n sink.unrecognised(event.data, 0);\n continue;\n }\n noteSeq(payload.seq);\n sink.rpc(payload.text, payload.seq);\n continue;\n }\n\n if (event.event === 'status') {\n const payload = parseStatusPayload(event.data);\n if (payload?.state === 'exited') {\n exitCode = payload.exitCode;\n exited = true;\n break;\n }\n continue;\n }\n\n if (event.event === 'error') {\n const { message } = parseErrorPayload(event.data);\n if (mentionsLostBuffer(message)) {\n gaps += 1;\n sink.notice(\n `Output before this point is unavailable: ${message}. ` +\n 'What follows is not continuous with what came before.',\n );\n } else {\n sink.notice(`Stream error: ${message}`);\n }\n continue;\n }\n\n // Keepalive. The one event that is genuinely nothing: routing it\n // onward would print a line every 15 seconds forever.\n if (event.event === 'ping') continue;\n\n // Everything else — the server's own `unrecognised` channel, and any\n // event name added after this CLI was built. Surfaced rather than\n // dropped: the user cannot act on the name, but they CAN see that the\n // session produced something this version does not render, which is\n // the difference between an old client and a quiet agent.\n const payload = parseOutputPayload(event.data);\n if (payload) {\n noteSeq(payload.seq);\n sink.unrecognised(payload.text, payload.seq);\n } else {\n sink.unrecognised(event.data, 0);\n }\n }\n } catch (error) {\n if (isAborted()) return detached();\n attempt += 1;\n if (attempt > retry.attempts) throw exhausted(lastSeq, error, onDisconnect);\n reconnects += 1;\n sink.notice(reconnectNotice(attempt, retry.attempts, lastSeq));\n await sleep(backoffMs(retry.baseDelayMs, attempt), signal);\n continue;\n }\n\n if (exited) return outcome('exited');\n if (isAborted()) return detached();\n\n // The body ended without an `exited` status: the connection dropped\n // cleanly. Resume from where we are.\n attempt += 1;\n if (attempt > retry.attempts) throw exhausted(lastSeq, null, onDisconnect);\n reconnects += 1;\n sink.notice(reconnectNotice(attempt, retry.attempts, lastSeq));\n await sleep(backoffMs(retry.baseDelayMs, attempt), signal);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Messages\n// ---------------------------------------------------------------------------\n\nfunction backoffMs(base: number, attempt: number): number {\n return base * 2 ** (attempt - 1);\n}\n\nfunction reconnectNotice(attempt: number, max: number, lastSeq: number): string {\n return `Connection lost. Reconnecting (${String(attempt)}/${String(max)}) from seq ${String(lastSeq)}...`;\n}\n\nfunction gapNotice(lastSeq: number, nextSeq: number): string {\n const missing = nextSeq - lastSeq - 1;\n return (\n `Output gap: ${String(missing)} event(s) between seq ${String(lastSeq)} and ` +\n `${String(nextSeq)} are unavailable — the server buffer rolled past the resume point. ` +\n 'What follows is not continuous with what came before.'\n );\n}\n\nfunction exhausted(\n lastSeq: number,\n cause: unknown,\n onDisconnect: DisconnectBehaviour,\n): MutagentError {\n const detail = cause instanceof Error ? ` (${cause.message})` : '';\n // The two branches are not two phrasings of one fact — they are opposite\n // facts. Offering the `--since` re-attach to a one-shot caller sends them\n // after a sandbox the server has already released.\n const guidance =\n onDisconnect === 'released'\n ? 'This was a one-shot run: the server releases the sandbox as soon as the connection drops, so nothing is left running and there is nothing to re-attach to. Run the turn again, or use --no-stream to wait for the whole result in one reply.'\n : `The sandbox is still running — nothing was destroyed. Resume with: mutagent helix attach <id> --since ${String(lastSeq)}`;\n return new MutagentError(\n 'STREAM_DISCONNECTED',\n `Lost the sandbox stream and could not reconnect${detail}.`,\n guidance,\n 5,\n );\n}\n\n/** Does the server's error say output was dropped rather than merely failed? */\nfunction mentionsLostBuffer(message: string): boolean {\n return /buffer|rolled|expired|evicted|no longer available|too old/i.test(message);\n}\n\n/** Abortable sleep — Ctrl-C during backoff must detach immediately. */\nexport function delay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise<void>((resolve) => {\n if (signal.aborted) {\n resolve();\n return;\n }\n const timer = setTimeout(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n function onAbort(): void {\n clearTimeout(timer);\n resolve();\n }\n signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n",
58
+ "/**\n * Turning the harness's JSON frames into a live tool-call feed.\n *\n * A cloud session emits a structured frame for everything it does. Most of them\n * are not worth a line:\n *\n * `message_update` arrives roughly FIFTY times per turn, each one carrying a\n * slightly longer partial of the same assistant message. Rendering them\n * prints the same sentence fifty times and buries the tool calls — which are\n * the part you cannot reconstruct afterwards from the final answer. So the\n * partials are dropped and the assistant's text is rendered ONCE, complete,\n * when `message_end` closes it.\n *\n * A tool call is rendered when it FINISHES, not when it starts. That is what\n * makes one call one line with a real duration on it; a start line amended\n * later is not something a terminal can do, and two lines per call doubles the\n * feed. The cost is that a long `bash` shows nothing while it runs — the turn\n * header above it is what says the session is alive.\n *\n * Nothing here writes: every method returns the line (or null for \"render\n * nothing\") so the decisions are testable without capturing a stream.\n */\n\nimport chalk from 'chalk';\nimport { isPlainOutput } from '../../lib/tty.js';\n\n/** Frame types deliberately rendered as nothing. See the header. */\nconst SILENT = new Set([\n 'message_start',\n 'message_update',\n 'message_delta',\n 'turn_end',\n 'agent_start',\n 'agent_end',\n]);\n\n/**\n * The argument worth showing, per tool, most identifying first.\n *\n * A tool call's `args` object is frequently large (a whole file body for a\n * write, a full schema for a task) and dumping it turns a one-line feed into a\n * screenful. One field answers \"what did it do this to?\", which is the question\n * a feed is for.\n */\nconst IDENTIFYING_ARG: Record<string, string[]> = {\n read: ['path', 'file_path', 'filePath'],\n write: ['path', 'file_path', 'filePath'],\n edit: ['path', 'file_path', 'filePath'],\n ls: ['path', 'dir'],\n glob: ['pattern', 'path'],\n grep: ['pattern', 'query'],\n search: ['pattern', 'query'],\n bash: ['command', 'cmd', 'script'],\n shell: ['command', 'cmd'],\n exec: ['command', 'cmd'],\n fetch: ['url'],\n webfetch: ['url'],\n task: ['description', 'prompt'],\n agent: ['description', 'prompt'],\n};\n\n/** Fallback order when the tool is not one we know by name. */\nconst GENERIC_ARG = ['path', 'file_path', 'command', 'pattern', 'url', 'query', 'name', 'id'];\n\n/** Tool-name column. Wide enough for the common ones without a ragged left edge. */\nconst TOOL_COL = 9;\n/** Where the duration starts, so a run of calls reads as a column not a stagger. */\nconst DURATION_COL = 44;\n\nconst MAX_ARG = 56;\nconst MAX_TEXT = 400;\n\ninterface PendingCall {\n toolName: string;\n arg: string;\n startedAt: number;\n}\n\n/**\n * One attached session's worth of frame state.\n *\n * Stateful because duration is the difference between two frames and the turn\n * number is not on the wire — both have to be remembered between calls.\n */\nexport class FrameFeed {\n readonly #plain: boolean;\n readonly #pending = new Map<string, PendingCall>();\n #turn = 0;\n /** Injected in tests; production reads the clock. */\n readonly #now: () => number;\n\n constructor(options: { plain?: boolean; now?: () => number } = {}) {\n this.#plain = options.plain ?? isPlainOutput();\n this.#now = options.now ?? ((): number => Date.now());\n }\n\n /**\n * Render one frame, or null when it deliberately produces no output.\n *\n * An unparseable frame is not silently swallowed — it comes back as the\n * unrecognised rendering, because \"the harness sent something this CLI cannot\n * read\" is a fact the user needs and a dropped line hides.\n */\n render(frameText: string, seq: number): string | null {\n const frame = asRecord(frameText);\n if (!frame) return this.renderUnrecognised(frameText, seq);\n\n const type = typeof frame.type === 'string' ? frame.type : '';\n\n switch (type) {\n case 'tool_execution_start':\n this.#startCall(frame);\n return null;\n case 'tool_execution_end':\n return this.#endCall(frame);\n case 'turn_start':\n this.#turn += 1;\n return this.#rule(`turn ${String(this.#turn)}`);\n case 'message_end':\n return this.#assistantText(frame);\n case 'agent_settled':\n return this.#line(this.#sym('●', '*'), this.#dim('agent settled — waiting for input'));\n case 'extension_ui_request':\n return this.#hitl(frame);\n case 'response':\n return this.#response(frame);\n default:\n if (type === '' || SILENT.has(type)) return null;\n // A frame type added after this CLI was built. One dim token, so an\n // outdated client is visible without a new frame type flooding a feed.\n return this.#line(this.#sym('·', '.'), this.#dim(type));\n }\n }\n\n /** Something off the `unrecognised` channel, or a frame that would not parse. */\n renderUnrecognised(raw: string, seq: number): string | null {\n const where = seq > 0 ? ` (seq ${String(seq)})` : '';\n const body = `unrecognised${where}: ${oneLine(raw, MAX_ARG * 2)}`;\n return this.#line(this.#sym('·', '.'), this.#dim(body));\n }\n\n // -------------------------------------------------------------------------\n // Frame handlers\n // -------------------------------------------------------------------------\n\n #startCall(frame: Record<string, unknown>): void {\n const id = typeof frame.toolCallId === 'string' ? frame.toolCallId : '';\n if (id === '') return;\n this.#pending.set(id, {\n toolName: typeof frame.toolName === 'string' ? frame.toolName : 'tool',\n arg: identifyingArg(frame.toolName, frame.args),\n startedAt: this.#now(),\n });\n }\n\n /**\n * Close a tool call and render its one line.\n *\n * An END with no matching START is rendered too, without a duration: it means\n * the attach began mid-turn, and hiding the call would misreport the session\n * as having done less than it did.\n */\n #endCall(frame: Record<string, unknown>): string {\n const id = typeof frame.toolCallId === 'string' ? frame.toolCallId : '';\n const started = id === '' ? undefined : this.#pending.get(id);\n if (id !== '') this.#pending.delete(id);\n\n const toolName =\n started?.toolName ?? (typeof frame.toolName === 'string' ? frame.toolName : 'tool');\n const arg = started?.arg ?? identifyingArg(frame.toolName, frame.args);\n const failed = isFailure(frame.result);\n const elapsed = started === undefined ? '' : formatDuration(this.#now() - started.startedAt);\n\n const name = this.#plain ? toolName : failed ? chalk.red(toolName) : chalk.cyan(toolName);\n // Two widths for the same text: one styled (what is printed) and one bare\n // (what is measured). Padding by the styled length counts ANSI bytes as\n // columns and the durations drift out of line by however much colour costs.\n const visible = arg === '' ? toolName.padEnd(TOOL_COL) : `${toolName.padEnd(TOOL_COL)} ${arg}`;\n const head = arg === '' ? pad(name, toolName, TOOL_COL) : `${pad(name, toolName, TOOL_COL)} ${arg}`;\n\n const gap = ' '.repeat(Math.max(2, DURATION_COL - visible.length));\n const tail = elapsed === '' ? '' : gap + this.#dim(elapsed);\n\n return this.#line(failed ? this.#sym('✗', 'x') : this.#sym('▸', '>'), head + tail);\n }\n\n /** The assistant's completed text for one message — the only text we print. */\n #assistantText(frame: Record<string, unknown>): string | null {\n const text = extractText(frame);\n if (text === '') return null;\n return this.#line(this.#sym('❯', '|'), oneLine(text, MAX_TEXT));\n }\n\n /**\n * A HITL request. Rendered prominently on purpose: it is the session asking\n * the operator for something, and a missed one stalls the run.\n */\n #hitl(frame: Record<string, unknown>): string {\n const method = typeof frame.method === 'string' ? frame.method : 'request';\n const key = typeof frame.statusKey === 'string' ? ` ${frame.statusKey}` : '';\n const body = `hitl ${method}${key}`;\n return this.#line(this.#sym('◆', '?'), this.#plain ? body : chalk.yellow(body));\n }\n\n /** The harness's reply to a line we sent — what `helix send` gets back. */\n #response(frame: Record<string, unknown>): string {\n const command = typeof frame.command === 'string' ? frame.command : 'command';\n const id = typeof frame.id === 'string' ? ` ${frame.id}` : '';\n const ok = frame.success !== false;\n const body = `${command}${id} ${ok ? 'accepted' : 'rejected'}`;\n if (this.#plain) return this.#line(ok ? '+' : 'x', body);\n return this.#line(ok ? '✓' : '✗', ok ? chalk.green(body) : chalk.red(body));\n }\n\n // -------------------------------------------------------------------------\n // Styling — one mechanism, the package's existing one (isPlainOutput).\n // -------------------------------------------------------------------------\n\n #line(symbol: string, body: string): string {\n return ` ${symbol} ${body}`;\n }\n\n #sym(styled: string, plain: string): string {\n return this.#plain ? plain : styled;\n }\n\n #dim(text: string): string {\n return this.#plain ? text : chalk.dim(text);\n }\n\n #rule(label: string): string {\n const dash = this.#plain ? '-' : '─';\n const body = `${dash.repeat(2)} ${label} ${dash.repeat(Math.max(2, 40 - label.length))}`;\n return ` ${this.#dim(body)}`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Pure helpers\n// ---------------------------------------------------------------------------\n\nfunction asRecord(text: string): Record<string, unknown> | null {\n try {\n const parsed: unknown = JSON.parse(text);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n // Not JSON. The caller renders it as unrecognised rather than dropping it.\n }\n return null;\n}\n\n/** Pad by the PRINTABLE width — `visible` is the same string without styling. */\nfunction pad(styled: string, visible: string, width: number): string {\n const missing = Math.max(0, width - visible.length);\n return styled + ' '.repeat(missing);\n}\n\nexport function identifyingArg(toolName: unknown, args: unknown): string {\n if (!args || typeof args !== 'object' || Array.isArray(args)) return '';\n const record = args as Record<string, unknown>;\n const name = typeof toolName === 'string' ? toolName.toLowerCase() : '';\n\n for (const key of IDENTIFYING_ARG[name] ?? GENERIC_ARG) {\n const value = record[key];\n if (typeof value === 'string' && value.trim() !== '') return oneLine(value, MAX_ARG);\n if (typeof value === 'number') return String(value);\n }\n\n // Nothing named: the first short string beats printing the whole object.\n for (const value of Object.values(record)) {\n if (typeof value === 'string' && value.trim() !== '') return oneLine(value, MAX_ARG);\n }\n return '';\n}\n\n/** Did the tool fail? Harnesses disagree on the field, so check the known ones. */\nfunction isFailure(result: unknown): boolean {\n if (!result || typeof result !== 'object' || Array.isArray(result)) return false;\n const record = result as Record<string, unknown>;\n if (record.isError === true || record.error != null) return true;\n return record.success === false;\n}\n\n/**\n * Pull the assistant's words out of a `message_end`.\n *\n * Several shapes are accepted because the frame's inner layout is the harness's\n * to change and a rendering that silently prints nothing when it does would\n * look identical to an agent that said nothing.\n */\nexport function extractText(frame: Record<string, unknown>): string {\n const candidates: unknown[] = [\n frame.text,\n frame.content,\n (frame.message as Record<string, unknown> | undefined)?.content,\n (frame.message as Record<string, unknown> | undefined)?.text,\n frame.message,\n ];\n\n for (const candidate of candidates) {\n if (typeof candidate === 'string' && candidate.trim() !== '') return candidate.trim();\n if (Array.isArray(candidate)) {\n const joined = candidate\n .map((part) => {\n if (typeof part === 'string') return part;\n if (part && typeof part === 'object' && typeof (part as { text?: unknown }).text === 'string') {\n return (part as { text: string }).text;\n }\n return '';\n })\n .join('')\n .trim();\n if (joined !== '') return joined;\n }\n }\n return '';\n}\n\n/** Collapse to one line and cap it — a feed line must stay a line. */\nexport function oneLine(text: string, max: number): string {\n const flat = text.replace(/\\s+/g, ' ').trim();\n return flat.length <= max ? flat : `${flat.slice(0, max - 1)}…`;\n}\n\n/** Human duration: milliseconds while they read as milliseconds, then seconds. */\nexport function formatDuration(ms: number): string {\n const safe = Math.max(0, Math.round(ms));\n if (safe < 1000) return `${String(safe)}ms`;\n if (safe < 60_000) return `${(safe / 1000).toFixed(1)}s`;\n const minutes = Math.floor(safe / 60_000);\n const seconds = Math.round((safe % 60_000) / 1000);\n return `${String(minutes)}m ${String(seconds).padStart(2, '0')}s`;\n}\n",
58
59
  "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getJsonFlag } from '../../lib/output.js';\nimport { handleError } from '../../lib/errors.js';\nimport { openAttachStream, sandboxLinks } from '../../lib/sandbox-api.js';\nimport { attachToSandbox, parseSince } from './session.js';\n\ninterface AttachOptions {\n since?: string;\n}\n\nexport function registerAttachCommand(parent: Command): void {\n parent\n .command('attach')\n .description('Attach to a running sandbox and stream its output')\n .argument('<id>', 'Sandbox ID')\n .option('--since <seq>', 'Resume after this sequence number instead of from the start')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix attach sbx_123\n ${chalk.dim('$')} mutagent helix attach sbx_123 --since 412\n ${chalk.dim('$')} mutagent helix attach sbx_123 --json | tail -1\n ${chalk.dim('$')} mutagent helix attach sbx_123 > session.log\n\nCtrl-C detaches. The sandbox keeps running and the exact re-attach command,\nwith the resume point filled in, is printed to stderr. Only 'mutagent helix rm <id> --force'\ndestroys a sandbox.\n\nSandbox stdout goes to stdout and sandbox stderr goes to stderr, so redirects\nand pipes behave as they would for a local process. Everything this CLI says\nabout the session goes to stderr.\n\nIf the connection drops, attach reconnects from the last sequence number seen.\nIf the server's buffer has rolled past that point, the missing range is stated\nplainly rather than being papered over.\n\nAI Agent Directive:\n Use --json. Output is NDJSON — one object per line, {\"type\":\"stdout\"|\"stderr\"|\n \"notice\", ...} — because a live stream cannot be one JSON document until it is\n over. The final line is a complete summary object; read it with 'tail -1' if\n you only need the result.\n Run 'mutagent helix ls --json' first to confirm the sandbox is running.\n `,\n )\n .action(async (id: string, options: AttachOptions) => {\n const isJson = getJsonFlag(parent);\n\n try {\n const since = parseSince(options.since);\n\n const result = await attachToSandbox({\n id,\n isJson,\n since,\n announce: `Attaching to sandbox ${id}. Ctrl-C detaches without destroying it.`,\n open: ({ since: resumeFrom, signal }) => openAttachStream(id, { since: resumeFrom, signal }),\n });\n\n if (isJson) {\n // Terminal summary line (see the NDJSON note above).\n console.log(\n JSON.stringify({\n success: true,\n sandboxId: id,\n end: result.end,\n exitCode: result.exitCode,\n lastSeq: result.lastSeq,\n reconnects: result.reconnects,\n gaps: result.gaps,\n _links: sandboxLinks(id),\n }),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
60
+ "/**\n * `helix send` — put a line into a running session's stdin.\n *\n * WHY A COMMAND AND NOT A KEYSTROKE\n *\n * `attach` streams; it does not type. The sandbox outlives the terminal, so\n * the thing that steers a session cannot be a keypress in one particular\n * terminal — it has to be a request anyone holding the id can make, from a\n * script, a second window, or an agent's subprocess. Sending and watching are\n * therefore two commands, and either can run without the other.\n *\n * TWO FORMS, AND THE FRIENDLY ONE IS THE DEFAULT\n *\n * The harness reads NDJSON commands. `--line` passes one straight through,\n * byte for byte, for a command shape this CLI has never heard of. Everything\n * else — the common case — is built here from `--type` and the message, so a\n * caller does not have to hand-write JSON to say a sentence to an agent.\n *\n * WHAT COMES BACK\n *\n * A 200 means the line was WRITTEN, and nothing more. The agent's answer is a\n * `response` frame on the event stream, correlated by the id this command\n * generates and prints. Reporting \"sent\" as \"done\" would be the lie; the help\n * text and the JSON directive both say where the answer actually appears.\n */\n\nimport type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { randomUUID } from 'crypto';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport { postInput, sandboxLinks } from '../../lib/sandbox-api.js';\n\n/** The command verbs the harness actually reads. Not an open set. */\nconst COMMAND_TYPES = ['prompt', 'steer', 'follow_up', 'abort'] as const;\ntype CommandType = (typeof COMMAND_TYPES)[number];\n\n/** `abort` is a verb, not a sentence — it is the one type with nothing to say. */\nconst NEEDS_MESSAGE = new Set<CommandType>(['prompt', 'steer', 'follow_up']);\n\ninterface SendOptions {\n session?: string;\n type?: string;\n line?: string;\n messageId?: string;\n}\n\nexport function registerSendCommand(parent: Command): void {\n parent\n .command('send')\n .description('Send a command line into a running session')\n .argument('<id>', 'Sandbox ID')\n .argument('[message...]', 'What to say to the agent')\n .requiredOption('--session <id>', 'Session ID inside the sandbox')\n .option(\n '--type <type>',\n `Command verb: ${COMMAND_TYPES.join(' | ')} (default: prompt)`,\n )\n .option('--line <json>', 'Send this exact JSON line instead of building one')\n .option('--message-id <id>', 'Correlation id to use instead of a generated one')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix send sbx_123 --session s1 \"also check the refresh path\"\n ${chalk.dim('$')} mutagent helix send sbx_123 --session s1 --type steer \"stop and re-read the spec\"\n ${chalk.dim('$')} mutagent helix send sbx_123 --session s1 --type abort\n ${chalk.dim('$')} mutagent helix send sbx_123 --session s1 --line '{\"type\":\"prompt\",\"id\":\"p7\",\"message\":\"go\"}'\n ${chalk.dim('$')} mutagent helix send sbx_123 --session s1 \"run the tests\" --json\n\nTWO FORMS:\n ${chalk.bold('The friendly form')} — a --type and a message. This command builds the JSON:\n {\"type\":\"prompt\",\"id\":\"<generated>\",\"message\":\"<your message>\"}. Use it for\n everything the four verbs cover.\n ${chalk.bold('--line')} — one raw JSON object, passed through byte for byte. It exists for\n a command shape this CLI does not know about yet. It is validated as a single\n JSON object before anything is sent, but its CONTENTS are the harness's\n business, not this CLI's. Do not combine it with --type or a message.\n\nTHE VERBS:\n prompt A new instruction to a settled agent.\n steer Redirect the turn already running.\n follow_up Continue from what the agent just said.\n abort Stop the current turn. Takes no message.\n\nSending is not watching. A 200 means the line was written to the session; the\nagent's reply arrives on the event stream as a 'response' frame carrying the id\nprinted here. Attach in another terminal to see it:\n ${chalk.dim('$')} mutagent helix attach sbx_123\n\nA session that is no longer running is refused rather than silently accepted —\n'mutagent helix ls' shows what is still up.\n\nAI Agent Directive:\n --json returns ONE object: { success, sandboxId, sessionId, type, id, line,\n accepted, _links }. 'accepted' means DELIVERED, not answered — the answer is a\n 'response' frame with the same id on 'mutagent helix attach <id> --json'.\n Attach BEFORE sending if you need the reply; this call does not wait for one.\n Use the friendly form (--type + message). Reserve --line for a command shape\n the four verbs cannot express.\n `,\n )\n .action(async (id: string, messageParts: string[], options: SendOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const sessionId = options.session?.trim() ?? '';\n if (sessionId === '') {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '--session is required — a sandbox can hold more than one session.',\n `Run: mutagent helix send ${id} --session <session-id> \"<message>\"`,\n );\n }\n\n const built = buildLine(messageParts.join(' ').trim(), options);\n const result = await postInput(id, { sessionId, line: built.line });\n\n if (isJson) {\n output.output({\n success: true,\n sandboxId: id,\n sessionId,\n type: built.type,\n id: built.id,\n line: built.line,\n accepted: result.accepted,\n _links: sandboxLinks(id),\n _directive: {\n instruction:\n 'The line was delivered, not answered. The reply is a `response` frame with this id on the event stream.',\n next: [`mutagent helix attach ${id} --json`],\n },\n });\n return;\n }\n\n output.success(`Sent ${built.type} to session ${sessionId}`);\n console.error(chalk.dim(` ${built.line}`));\n console.error(\n chalk.dim(\n ` The reply arrives on the stream, not here: mutagent helix attach ${id}`,\n ),\n );\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\ninterface BuiltLine {\n line: string;\n type: string;\n /** The correlation id, when this command generated the line. */\n id: string | null;\n}\n\n/**\n * Turn the flags into exactly one NDJSON line — or refuse, before any request.\n *\n * Validated here rather than at the server (§4.5 validate-before-action)\n * because the failure modes are silent ones: a `--line` that is two objects\n * gets half-written into a live session's stdin, and a `--type` this CLI made\n * up is accepted by the transport and ignored by the agent, which reads as the\n * agent having disregarded the user.\n */\nexport function buildLine(message: string, options: SendOptions): BuiltLine {\n const raw = options.line;\n\n if (raw !== undefined) {\n if (message !== '' || options.type !== undefined) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n '--line is the whole command already — it cannot be combined with --type or a message.',\n 'Send the raw line on its own, or drop --line and use the friendly form:\\n --type prompt \"<message>\"',\n );\n }\n return { line: requireOneJsonObject(raw), type: readType(raw), id: null };\n }\n\n const type = (options.type ?? 'prompt') as CommandType;\n if (!COMMAND_TYPES.includes(type)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown command type \"${options.type ?? ''}\".`,\n `Use one of: ${COMMAND_TYPES.join(', ')}. For anything else, pass the raw JSON with --line.`,\n );\n }\n\n if (message === '' && NEEDS_MESSAGE.has(type)) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n `A \"${type}\" carries a message — there is nothing to send without one.`,\n `Run: mutagent helix send <id> --session <session-id> --type ${type} \"<message>\"`,\n );\n }\n if (message !== '' && !NEEDS_MESSAGE.has(type)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `A \"${type}\" takes no message, so the text would be silently discarded.`,\n `Drop the message, or send it separately as a prompt.`,\n );\n }\n\n const id = options.messageId?.trim() ?? '';\n const correlationId = id === '' ? `cli_${randomUUID().slice(0, 8)}` : id;\n\n const body: Record<string, string> = { type, id: correlationId };\n if (message !== '') body.message = message;\n\n return { line: JSON.stringify(body), type, id: correlationId };\n}\n\n/**\n * Accept exactly one JSON object, and return it as the caller wrote it.\n *\n * Re-serialising would be the easy way to normalise, and it is the wrong one:\n * the harness reads fields this CLI does not model, and a round-trip through a\n * type this CLI defines is how those fields go missing. Only the outer newline\n * is this command's to add, and the transport does that.\n */\nfunction requireOneJsonObject(raw: string): string {\n const trimmed = raw.trim();\n if (trimmed.includes('\\n')) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n '--line must be ONE line — a newline inside it would be read as two commands.',\n 'Send one command per call.',\n );\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n '--line is not valid JSON.',\n `The harness reads one JSON object per line. Example:\\n --line '{\"type\":\"prompt\",\"id\":\"p1\",\"message\":\"go\"}'`,\n );\n }\n\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n '--line must be a JSON object, not an array or a bare value.',\n `Example:\\n --line '{\"type\":\"prompt\",\"id\":\"p1\",\"message\":\"go\"}'`,\n );\n }\n\n return trimmed;\n}\n\n/** The `type` a raw line declares, for reporting only. */\nfunction readType(raw: string): string {\n try {\n const parsed: unknown = JSON.parse(raw);\n if (parsed && typeof parsed === 'object' && typeof (parsed as { type?: unknown }).type === 'string') {\n return (parsed as { type: string }).type;\n }\n } catch {\n // requireOneJsonObject already rejected this path; nothing to report.\n }\n return 'raw';\n}\n",
61
+ "/**\n * `helix session start` — put an AGENT inside a box that already exists.\n *\n * THE DISTINCTION THIS COMMAND EXISTS TO MAKE\n *\n * `spawn` gives you a BOX. It is a machine with nothing running in it, and\n * that is a normal state — `exec` runs commands against exactly that. A Helix\n * SESSION is a separate thing that lives inside the box, and it has to be\n * started explicitly. Folding the two together would mean every box paid for\n * an agent it might not want, and there would be no way to run a second\n * session in a box that already has one.\n *\n * So: `spawn` creates the box, `session start` creates the agent, `attach`\n * WATCHES it, and `send` TYPES INTO it. Four verbs because they are four\n * things — the help text says so, because the names alone do not.\n *\n * WHY THIS FILE HOLDS THE GROUP\n *\n * `start` is the group's only verb today. A `session ls` needs a server route\n * that does not exist yet, and shipping a verb that 404s teaches a caller the\n * surface is broken rather than that the feature is pending. When that route\n * lands, `ls` joins the group registered here.\n *\n * NOT to be confused with `session.ts`, which is the attached session's\n * RENDERING (the sink and the Ctrl-C loop). This file is the control verb.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport { startSession, sandboxLinks, type StartSessionResult } from '../../lib/sandbox-api.js';\n\ninterface StartOptions {\n rpc?: boolean;\n}\n\nexport function registerSessionCommand(parent: Command): void {\n const session = new Command('session')\n .description('Start and inspect Helix sessions inside a sandbox')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix session start sbx_123 --rpc\n ${chalk.dim('$')} mutagent helix session start sbx_123\n ${chalk.dim('$')} mutagent helix session start sbx_123 --rpc --json\n\nA sandbox and a session are not the same thing:\n ${chalk.bold('spawn')} gives you a BOX — a machine with nothing running in it.\n ${chalk.bold('session start')} gives you an AGENT inside that box.\n ${chalk.bold('attach')} WATCHES that agent.\n ${chalk.bold('send')} TYPES INTO it.\nA box with no session is a normal state — that is what 'exec' runs against.\n\nAI Agent Directive:\n Run 'mutagent helix session start <sandbox-id> --rpc --json' before 'send':\n a session id is required and there is no default one to guess.\n `,\n );\n\n registerStart(session, parent);\n parent.addCommand(session);\n}\n\nfunction registerStart(session: Command, root: Command): void {\n session\n .command('start')\n .description('Start a Helix session inside an existing sandbox')\n .argument('<id>', 'Sandbox ID')\n .option('--rpc', 'Long-lived session you can send into (default: one-shot)')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix session start sbx_123 --rpc\n ${chalk.dim('$')} mutagent helix session start sbx_123\n ${chalk.dim('$')} mutagent helix session start sbx_123 --rpc --json\n\nTWO MODES, AND ONLY ONE OF THEM LISTENS:\n ${chalk.bold('--rpc')} A long-lived agent reading commands on its stdin. This is\n the mode 'mutagent helix send' writes into; without it there\n is nothing to write to and every send is refused.\n ${chalk.dim('(default)')} One-shot. The session takes its turn and ends. Watchable\n with 'attach', not steerable.\n\nThe box must already exist — 'mutagent helix spawn --image <ref>' makes one, and\n'mutagent helix ls' shows which are running. One sandbox can host several\nsessions, so starting one never replaces another.\n\nThe session id printed here is the handle for everything after it. Nothing else\ncan produce it, so a session started and then forgotten can only be found again\nby attaching to the box and reading the stream.\n\nAI Agent Directive:\n --json returns ONE object: { success, sandboxId, sessionId, status, mode,\n _links }. Capture 'sessionId' — 'mutagent helix send' requires it and there is\n no default. Use --rpc whenever you intend to send into the session; a one-shot\n session refuses input with a 409.\n `,\n )\n .action(async (id: string, options: StartOptions) => {\n const isJson = getJsonFlag(root);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const mode = options.rpc === true ? 'rpc' : 'oneshot';\n const result = await startSession(id, { mode });\n const sessionId = requireSessionId(result, id);\n\n if (isJson) {\n output.output({\n success: true,\n sandboxId: id,\n sessionId,\n status: result.status,\n mode,\n _links: sandboxLinks(id),\n _directive: {\n instruction:\n mode === 'rpc'\n ? 'The session is live and reading its stdin. Attach to watch it; send to steer it.'\n : 'The session takes one turn and ends. Attach to watch it; it does not accept input.',\n next:\n mode === 'rpc'\n ? [\n `mutagent helix attach ${id} --json`,\n `mutagent helix send ${id} --session ${sessionId} \"<message>\" --json`,\n ]\n : [`mutagent helix attach ${id} --json`],\n },\n });\n return;\n }\n\n output.success(`Session ${sessionId} started in ${id} (${mode})`);\n console.error(chalk.dim(` Watch it: mutagent helix attach ${id}`));\n // A one-shot session has no stdin to write to, so pointing at `send`\n // here would be pointing at a guaranteed 409.\n if (mode === 'rpc') {\n console.error(\n chalk.dim(` Talk to it: mutagent helix send ${id} --session ${sessionId} \"<message>\"`),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\n/**\n * A session with no id is a dead end, not a success.\n *\n * Every verb after this one needs the id and nothing else can produce it, so\n * reporting \"started\" without one hands the caller a session they can never\n * address again — worse than the error, because it looks like it worked.\n */\nfunction requireSessionId(result: StartSessionResult, sandboxId: string): string {\n if (typeof result.sessionId === 'string' && result.sessionId !== '') return result.sessionId;\n throw new MutagentError(\n 'INVALID_RESPONSE',\n 'The server started a session but did not return a session id.',\n `The session may be running — watch it with: mutagent helix attach ${sandboxId}`,\n );\n}\n",
59
62
  "/**\n * `helix run` — one agent turn, and `helix exec` — one command.\n *\n * WHY `run` LOST ITS SANDBOX ID\n *\n * The pinned spec was `helix run <id> <prompt...>`, which mapped onto nothing:\n * there is no endpoint that runs an agent turn inside an existing sandbox.\n * `POST /api/sandbox/agent/run` is one-shot — it spawns from a preset, takes\n * the turn, and tears the box down. So `run` keeps the name and the intent\n * (drive Helix with a prompt) and drops the argument the API cannot honour.\n *\n * WHY THERE ARE TWO PROMPTS\n *\n * `--prompt` is WHO the agent is (its definition) and the task is WHAT to do\n * this turn. The server passes them to `helix agent --prompt <who> -p <what>`\n * and never concatenates them; flattening produces a run that starts, looks\n * plausible, and answers the wrong question. Neither can be defaulted, so\n * both are required and the error says which is which.\n *\n * WHY `run` STREAMS, AND WHAT THAT COSTS\n *\n * This header used to say \"the turn is blocking and does not stream — the\n * server returns the whole result\", and that was true and is now false:\n * `POST /api/sandbox/agent/run?stream=1` delivers the turn as it happens. The\n * old sentence is kept here because it is the whole reason the flag exists —\n * an agent turn can run for minutes, and a command that shows nothing until it\n * finishes leaves a developer unable to tell work from a hang. `--no-stream`\n * is the old behaviour, unchanged.\n *\n * ONE THING IS GENUINELY WORSE WHEN STREAMING, and it is not hidden: there is\n * no reconnect. `helix exec --sandbox` can resume a dropped stream through the\n * read-only attach endpoint, because its box outlives the connection. A\n * one-shot's box does not — the server releases it the moment this connection\n * drops — so there is nothing to resume, and re-POSTing would run the turn a\n * SECOND time against a SECOND sandbox. So this opens the stream exactly once\n * and, on a drop, says plainly that the turn was lost rather than quietly\n * running it again.\n */\n\nimport type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n agentRun,\n execSandbox,\n oneShotRun,\n openAgentRunStream,\n openAttachStream,\n openExecStream,\n sandboxLinks,\n type AgentRunRequest,\n type ExecResult,\n} from '../../lib/sandbox-api.js';\nimport type { StreamOpener } from '../../lib/sandbox-stream.js';\nimport { attachToSandbox } from './session.js';\n\ninterface RunOptions {\n prompt?: string;\n preset?: string;\n keep?: boolean;\n timeoutMs?: string;\n /** Commander's `--no-stream` sets this to false; default is true. */\n stream?: boolean;\n}\n\ninterface ExecOptions {\n sandbox?: string;\n preset?: string;\n keep?: boolean;\n cwd?: string;\n timeoutMs?: string;\n /** Commander's `--no-stream` sets this to false; default is true. */\n stream?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// run — one agent turn\n// ---------------------------------------------------------------------------\n\nexport function registerRunCommand(parent: Command): void {\n parent\n .command('run')\n .description('Run one Helix agent turn in a fresh sandbox')\n .argument('<task...>', 'WHAT to do this turn')\n .requiredOption('--prompt <definition>', 'WHO the agent is — the agent definition')\n .option('--preset <name>', 'Preset to run on (default: the backend default)')\n .option('--keep', 'Keep the sandbox afterwards instead of tearing it down')\n .option('--timeout-ms <n>', 'Per-command timeout in milliseconds')\n .option('--no-stream', 'Wait for the whole turn instead of watching it happen')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix run \"summarise the failing tests\" --prompt \"You are a test triage agent.\"\n ${chalk.dim('$')} mutagent helix run fix the flaky login spec --prompt \"$(cat agent.md)\"\n ${chalk.dim('$')} mutagent helix run \"list open PRs\" --prompt \"You are a release assistant.\" --json\n ${chalk.dim('$')} mutagent helix run \"explore the repo\" --prompt \"$(cat agent.md)\" --keep\n\nTWO PROMPTS, AND THEY ARE NOT THE SAME THING:\n --prompt WHO the agent is — its definition, its standing instructions.\n <task...> WHAT to do this turn.\nThey are never concatenated. Passing the task as --prompt produces a run that\nstarts, looks plausible, and answers a different question.\n\nThis is a ONE-SHOT call: it spawns a fresh sandbox from a preset, takes the turn\nand tears the sandbox down. There is no sandbox id argument because there is no\nendpoint that runs an agent turn inside an existing box. Pass --keep to hold the\nsandbox open; the id is reported so you can attach or exec against it.\n\nThe turn STREAMS by default — output appears as the agent produces it, and the\nsandbox id is printed before the first line so you always know what is running.\nIts exit code becomes this command's exit code.\n\nCtrl-C CANCELS THE TURN. This is the one place in 'mutagent helix' where it does:\na one-shot sandbox belongs to this connection, so leaving releases it. Elsewhere\nCtrl-C detaches and the box keeps running. Use --keep if you want it to survive.\n\nThere is no reconnect on a streamed run. If the connection drops the turn is\nlost, and you are told so — retrying would spawn a second sandbox and run the\nturn again. Use --no-stream over a flaky link.\n\nSee 'mutagent helix presets' for what --preset accepts.\n\nAI Agent Directive:\n --no-stream --json returns ONE object: { success, result: { sandboxId,\n exitCode, stdout, stderr, timedOut, tornDown }, _links }. Prefer it for a\n result you intend to parse.\n --json while streaming emits NDJSON — one object per line — and the LAST line\n is a complete summary object, so '| tail -1' still yields one object. Same\n convention as 'mutagent helix exec'.\n Both --prompt and the task are required; do not fold one into the other.\n `,\n )\n .action(async (taskParts: string[], options: RunOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const task = taskParts.join(' ').trim();\n if (task === '') {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'The task is required — it is WHAT the agent should do this turn.',\n 'Run: mutagent helix run \"<what to do>\" --prompt \"<who the agent is>\"',\n );\n }\n\n const prompt = options.prompt?.trim() ?? '';\n if (prompt === '') {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '--prompt is required — it is WHO the agent is, not what it should do.',\n 'The task you already passed is the WHAT. Add the agent definition:\\n --prompt \"You are a ...\" (or --prompt \"$(cat agent.md)\")',\n );\n }\n\n const body = {\n prompt,\n task,\n ...oneShotFields(options.preset, options.keep, options.timeoutMs),\n };\n\n if (options.stream === false) {\n const result = await agentRun(body);\n reportResult(result, output, isJson, { prompt, task });\n return;\n }\n\n await streamAgentTurn(body, isJson, options.keep === true);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\n/**\n * Watch one agent turn.\n *\n * ── WHY IT REUSES `attachToSandbox` ─────────────────────────────────────────\n * The reconnect, the gap accounting, the SIGINT handling, the stdout/stderr\n * split and the NDJSON sink are all already correct in `sandbox-stream.ts` and\n * `session.ts`. A second consumer would be a second place for \"which stream does\n * a byte belong on\" to drift, and that answer is what makes a piped run\n * byte-identical to a local one.\n *\n * ── WHY IT TURNS THE RECONNECT OFF ──────────────────────────────────────────\n * `retry: { attempts: 0 }` is the one behaviour this composition must NOT\n * inherit. Reconnecting here means re-POSTing `/agent/run`, which spawns a\n * SECOND sandbox and runs the turn a SECOND time — and the user would read the\n * replacement run's output as a continuation of the first. `helix exec` can\n * reconnect because it falls back to the read-only attach endpoint; a one-shot\n * has no such endpoint to fall back to, because by then its box is gone.\n */\nasync function streamAgentTurn(\n body: AgentRunRequest,\n isJson: boolean,\n keep: boolean,\n): Promise<void> {\n let sandboxId: string | undefined;\n let opened = false;\n\n const session = await attachToSandbox({\n // Not known yet — the server names the box on the stream's first frame.\n id: '',\n isJson,\n // With `--keep` the box survives us, so the outcome lines may honestly offer\n // a re-attach. Without it, leaving releases the box and they must not.\n onDisconnect: keep ? 'survives' : 'released',\n retry: { attempts: 0, baseDelayMs: 0 },\n onSandbox: (sandbox) => {\n sandboxId = sandbox.sandboxId;\n },\n open: ({ signal }) => {\n // Belt and braces around the `attempts: 0` above. If any future change to\n // the retry policy reopens this, it must fail loudly rather than silently\n // billing a second agent turn.\n if (opened) {\n throw new MutagentError(\n 'STREAM_DISCONNECTED',\n 'The turn’s stream dropped and cannot be resumed.',\n 'A one-shot run cannot be reconnected — the server released the sandbox when the connection dropped, and re-opening would run the whole turn again in a new box. Run it again, or use --no-stream.',\n 5,\n );\n }\n opened = true;\n return openAgentRunStream(body, { signal });\n },\n });\n\n if (isJson) {\n console.log(\n JSON.stringify({\n success: true,\n prompt: body.prompt,\n task: body.task,\n sandboxId: session.result?.sandboxId ?? sandboxId ?? null,\n preset: session.result?.preset ?? session.sandbox?.preset ?? null,\n end: session.end,\n exitCode: session.exitCode,\n timedOut: session.result?.timedOut ?? false,\n tornDown: session.result?.tornDown ?? null,\n ...(session.result?.error === undefined ? {} : { error: session.result.error }),\n lastSeq: session.lastSeq,\n gaps: session.gaps,\n ...(sandboxId === undefined ? {} : { _links: sandboxLinks(sandboxId) }),\n }),\n );\n }\n\n // A turn that produced NO exit code did not succeed, and exiting 0 would say it\n // did — the same fabricated-zero mistake the server refuses to make. `session.ts`\n // already propagates a real non-zero code; this covers only the null case.\n if (session.end === 'exited' && session.exitCode === null) {\n process.exitCode = 1;\n }\n}\n\n// ---------------------------------------------------------------------------\n// exec — one command\n// ---------------------------------------------------------------------------\n\nexport function registerExecCommand(parent: Command): void {\n parent\n .command('exec')\n .description('Run a command in a sandbox — an existing one, or a fresh one')\n .argument('<argv...>', 'Command and arguments (argv, not a shell string)')\n .option('--sandbox <id>', 'Run in this existing sandbox instead of a fresh one')\n .option('--preset <name>', 'Preset for the fresh sandbox (ignored with --sandbox)')\n .option('--keep', 'Keep the fresh sandbox afterwards (ignored with --sandbox)')\n .option('--cwd <dir>', 'Working directory inside the sandbox')\n .option('--timeout-ms <n>', 'Command timeout in milliseconds')\n .option('--no-stream', 'Wait for the full result instead of streaming it')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix exec -- ls -la /workspace\n ${chalk.dim('$')} mutagent helix exec --sandbox sbx_123 -- bun test\n ${chalk.dim('$')} mutagent helix exec --sandbox sbx_123 --cwd /src -- git status\n ${chalk.dim('$')} mutagent helix exec --preset default -- uname -m --json\n\nPut ${chalk.bold('--')} before the command. Everything after it is argv and is passed through\nuntouched, so flags meant for your command are not read as flags for this one.\n\nARGV, NOT A SHELL STRING. There is no shell in the sandbox unless you name one:\n ${chalk.dim('$')} mutagent helix exec -- sh -c 'ls | wc -l' ${chalk.dim('a shell, explicitly')}\n ${chalk.dim('$')} mutagent helix exec -- 'ls | wc -l' ${chalk.dim(\"looks for a file called 'ls | wc -l'\")}\n\nWITH --sandbox runs in that box and streams as output is produced.\nWITHOUT --sandbox spawns a fresh box from a preset, runs, tears it down. That\n path is blocking, so --no-stream is redundant there and\n --preset / --keep apply only there.\n\nThe command's exit code becomes this command's exit code.\n\nAI Agent Directive:\n Use --no-stream --json (or the one-shot form, which is always blocking) for a\n result you intend to parse: one object, no NDJSON to reassemble.\n Run 'mutagent helix ls --json' first to confirm a --sandbox id is running.\n `,\n )\n .action(async (argv: string[], options: ExecOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const command = argv.filter((part) => part !== '');\n if (command.length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'A command is required.',\n 'Run: mutagent helix exec -- <command> [args...]',\n );\n }\n\n const timeoutMs = parseTimeout(options.timeoutMs);\n const id = options.sandbox?.trim();\n\n // ── One-shot: fresh box, blocking ───────────────────────────────────\n if (id === undefined || id === '') {\n const result = await oneShotRun({\n command,\n ...(options.cwd === undefined ? {} : { cwd: options.cwd }),\n ...oneShotFields(options.preset, options.keep, options.timeoutMs),\n });\n reportResult(result, output, isJson, { command });\n return;\n }\n\n // Refuse rather than ignore. A `--keep` that silently does nothing\n // teaches the wrong model of what the command did.\n rejectOneShotOnlyFlags(options);\n\n const body = {\n command,\n ...(options.cwd === undefined ? {} : { cwd: options.cwd }),\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n };\n\n if (options.stream === false) {\n const result = await execSandbox(id, body);\n reportResult(result, output, isJson, { command, sandboxId: id });\n return;\n }\n\n const session = await attachToSandbox({\n id,\n isJson,\n announce: `Running in sandbox ${id}. Ctrl-C detaches without stopping it.`,\n open: createExecOpener(id, body),\n });\n\n if (isJson) {\n console.log(\n JSON.stringify({\n success: true,\n sandboxId: id,\n command,\n end: session.end,\n exitCode: session.exitCode,\n lastSeq: session.lastSeq,\n reconnects: session.reconnects,\n gaps: session.gaps,\n _links: sandboxLinks(id),\n }),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nfunction rejectOneShotOnlyFlags(options: ExecOptions): void {\n const offenders: string[] = [];\n if (options.preset !== undefined) offenders.push('--preset');\n if (options.keep === true) offenders.push('--keep');\n if (offenders.length === 0) return;\n\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `${offenders.join(' and ')} ${offenders.length === 1 ? 'applies' : 'apply'} only to a fresh sandbox, but --sandbox names an existing one.`,\n 'Drop --sandbox to run one-shot in a fresh box, or drop these flags to run in the existing one.',\n );\n}\n\n/**\n * Open the exec stream once, then resume through the ATTACH endpoint.\n *\n * This asymmetry is the whole point. Reconnecting by re-POSTing `/exec` would\n * submit the command a SECOND time — it would run twice, and the user would see\n * a plausible-looking continuation of output that is in fact a different run.\n * The attach endpoint is the read-only view of the same session, so resuming\n * through it with `?since=` is the only safe way back in.\n */\nexport function createExecOpener(\n id: string,\n body: { command: string[]; cwd?: string; timeoutMs?: number },\n): StreamOpener {\n let submitted = false;\n return ({ since, signal }) => {\n if (!submitted) {\n submitted = true;\n return openExecStream(id, body, { signal });\n }\n return openAttachStream(id, { since, signal });\n };\n}\n\n// ---------------------------------------------------------------------------\n// Shared\n// ---------------------------------------------------------------------------\n\nfunction oneShotFields(\n preset: string | undefined,\n keep: boolean | undefined,\n timeoutMs: string | undefined,\n): { preset?: string; keep?: boolean; timeoutMs?: number } {\n const parsed = parseTimeout(timeoutMs);\n return {\n ...(preset === undefined ? {} : { preset }),\n ...(keep === true ? { keep: true } : {}),\n ...(parsed === undefined ? {} : { timeoutMs: parsed }),\n };\n}\n\nexport function parseTimeout(raw: string | undefined): number | undefined {\n if (raw === undefined) return undefined;\n const value = Number(raw);\n if (!Number.isInteger(value) || value <= 0) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `--timeout-ms must be a positive whole number of milliseconds, got \"${raw}\".`,\n 'Example: --timeout-ms 30000 for thirty seconds.',\n );\n }\n return value;\n}\n\n/**\n * Render a blocking result so it reads like a local command: the sandbox's\n * stdout on stdout, its stderr on stderr, and its exit code as ours.\n */\nfunction reportResult(\n result: ExecResult,\n output: OutputFormatter,\n isJson: boolean,\n context: Record<string, unknown>,\n): void {\n if (isJson) {\n const links = typeof result.sandboxId === 'string' ? sandboxLinks(result.sandboxId) : undefined;\n output.output({\n success: true,\n ...context,\n result,\n ...(links === undefined ? {} : { _links: links }),\n });\n } else {\n if (result.stdout) process.stdout.write(result.stdout);\n if (result.stderr) process.stderr.write(result.stderr);\n if (result.timedOut) process.stderr.write('[mutagent] The command timed out.\\n');\n if (typeof result.sandboxId === 'string' && result.tornDown === false) {\n process.stderr.write(\n `[mutagent] Sandbox ${result.sandboxId} is still running. Destroy it with: mutagent helix rm ${result.sandboxId} --force\\n`,\n );\n }\n }\n\n // Set, never exit(): the writes above still have to flush.\n if (typeof result.exitCode === 'number' && result.exitCode !== 0) {\n process.exitCode = result.exitCode;\n }\n}\n",
60
63
  "/**\n * The non-streaming verbs: `ls`, `presets`, `rm`, `traces`.\n *\n * Grouped because they share one shape — one request, one rendering, no stream\n * to manage — and separating them from the attach machinery keeps both halves\n * readable.\n */\n\nimport type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n destroySandbox,\n fetchSandboxTraces,\n listPresets,\n listSandboxes,\n sandboxLinks,\n unwrapList,\n type SandboxRecord,\n} from '../../lib/sandbox-api.js';\n\n// ---------------------------------------------------------------------------\n// ls\n// ---------------------------------------------------------------------------\n\nexport function registerLsCommand(parent: Command): void {\n parent\n .command('ls')\n .description('List your sandboxes')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix ls\n ${chalk.dim('$')} mutagent helix ls --json\n\nListing is always workspace-scoped — these are the sandboxes in the workspace\nyou are configured for, not every sandbox on the account. Change it with:\n ${chalk.dim('$')} mutagent config set workspace <workspace-id>\n\nAn empty list is a normal result, not an error: it means no sandbox is running.\n\nAI Agent Directive:\n Run this before attach, exec or rm to confirm the sandbox exists and is\n running. --json returns { sandboxes: [...], count: N }.\n `,\n )\n .action(async () => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const sandboxes = await listSandboxes();\n\n if (isJson) {\n output.output({\n sandboxes: sandboxes.map((s) => ({ ...s, _links: sandboxLinks(s.id) })),\n count: sandboxes.length,\n });\n return;\n }\n\n if (sandboxes.length === 0) {\n console.log(chalk.gray('No sandboxes running.'));\n console.log('');\n console.log(' Start one: mutagent helix spawn --image <ref>');\n return;\n }\n\n output.output(sandboxes.map(toRow));\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\n/**\n * Table columns, chosen so the row stays readable on a narrow terminal.\n *\n * The field is `status`, NOT `state` — that is the record's spelling, and the\n * stream's `state` is a different field on a different shape. Reading the wrong\n * one renders a column of \"unknown\" that looks like a server fault, and an\n * empty-list test cannot catch it because there is no row to be wrong.\n * There is no `image` on the record either: the definition holds the image, and\n * the record names the definition.\n */\nfunction toRow(sandbox: SandboxRecord): Record<string, unknown> {\n return {\n id: sandbox.id,\n status: sandbox.status ?? 'unknown',\n provider: sandbox.provider ?? '',\n arch: sandbox.arch ?? '',\n definition: sandbox.definitionName ?? '',\n created: typeof sandbox.createdAt === 'string'\n ? new Date(sandbox.createdAt).toLocaleString()\n : '',\n };\n}\n\n// ---------------------------------------------------------------------------\n// presets\n// ---------------------------------------------------------------------------\n\nexport function registerPresetsCommand(parent: Command): void {\n parent\n .command('presets')\n .description('List the presets a one-shot run can name')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix presets\n ${chalk.dim('$')} mutagent helix presets --json\n\nA preset is a named definition on the backend. It is what lets 'helix run' and\n'helix exec' start something without you knowing an image reference, a registry\nor a region. Image references are deliberately not returned — if you need\nimage-level detail you are looking for 'helix spawn --image'.\n\nAI Agent Directive:\n --json returns { presets: [...], default: <name|null>, count: N }. Read this\n before passing --preset; an unknown preset is rejected by the server.\n `,\n )\n .action(async () => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const list = await listPresets();\n const presets = list.presets;\n\n if (isJson) {\n output.output({ presets, default: list.default, count: presets.length });\n return;\n }\n\n if (presets.length === 0) {\n console.log(chalk.gray('No presets configured on this backend.'));\n console.log('');\n console.log(' Spawn with an explicit image: mutagent helix spawn --image <ref>');\n return;\n }\n\n output.output(\n presets.map((p) => ({\n name: p.name,\n default: p.name === list.default ? 'yes' : '',\n arch: p.arch ?? '',\n provider: p.provider ?? '',\n description: p.description ?? '',\n })),\n );\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\n// ---------------------------------------------------------------------------\n// rm\n// ---------------------------------------------------------------------------\n\ninterface RmOptions {\n force?: boolean;\n}\n\nexport function registerRmCommand(parent: Command): void {\n parent\n .command('rm')\n .description('Destroy a sandbox')\n .argument('<id>', 'Sandbox ID')\n .option('-f, --force', 'Skip confirmation')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix rm sbx_123 --force\n ${chalk.dim('$')} mutagent helix rm sbx_123 --json\n\nThis is the ONLY command that destroys a sandbox — detaching, Ctrl-C and a\nclosed terminal all leave it running. Removing a sandbox that is already gone\nsucceeds, so a retried teardown is safe.\n\n${chalk.dim('Note: --force is required. The CLI is non-interactive — confirm with the user via your native flow, then pass --force. --json auto-confirms.')}\n${chalk.dim('Warning: any session running in the sandbox ends immediately and cannot be recovered.')}\n\nAI Agent Directive:\n Destroying a sandbox ends any session running in it and cannot be undone.\n Confirm with the user before running it, then pass --force (or --json).\n `,\n )\n .action(async (id: string, options: RmOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Same gate as `providers delete`: refuse rather than prompt. This CLI\n // has to work identically in a terminal and in an agent's subprocess,\n // and a blocking prompt is the one thing that cannot (Rule 1.2).\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Destroying sandbox ${id} requires confirmation. Any session running in it ends immediately.`,\n `[Agent: confirm with the user first]\\nUse --force to confirm: mutagent helix rm ${id} --force`,\n );\n }\n\n await destroySandbox(id);\n\n if (isJson) {\n output.output({\n success: true,\n deletedId: id,\n _links: sandboxLinks(id),\n _directive: {\n instruction:\n 'The sandbox is destroyed. Any session it was running has ended. Spawn a new one to continue.',\n next: ['mutagent helix ls --json', 'mutagent helix spawn --image <ref> --detach --json'],\n },\n });\n return;\n }\n\n output.success(`Sandbox ${id} destroyed`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\n// ---------------------------------------------------------------------------\n// traces\n// ---------------------------------------------------------------------------\n\nexport function registerTracesCommand(parent: Command): void {\n parent\n .command('traces')\n .description('Show the spans captured for a sandbox')\n .argument('<id>', 'Sandbox ID')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent helix traces sbx_123\n ${chalk.dim('$')} mutagent helix traces sbx_123 --json\n\nSpans are what the session actually did — the record to read when the output\nalone does not explain the result. They are called spans, not traces, because\nthat is what the server returns; the command keeps the familiar name.\n\nAn empty result means no spans were captured. That is not the same as the box\nhaving done nothing: telemetry ingest has to be configured for spans to exist.\n\nAI Agent Directive:\n --json returns { spans: [...], count: N, sandboxId }. Read spans before\n concluding why a session behaved the way it did; the streamed output is only\n what was printed, not what was attempted.\n `,\n )\n .action(async (id: string) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const body = await fetchSandboxTraces(id);\n // The server's envelope is `{ spans: [...] }`. `unwrapList` knows that\n // key; looking only for `traces` reported every sandbox as empty.\n const spans = unwrapList(body);\n\n if (isJson) {\n output.output({ spans, count: spans.length, sandboxId: id, _links: sandboxLinks(id) });\n return;\n }\n\n if (spans.length === 0) {\n console.log(chalk.gray(`No spans captured for sandbox ${id}.`));\n return;\n }\n\n // The table drops `workspaceId` and `sandboxId`: the caller just typed\n // the sandbox id, and every row carries the same workspace. Rendering\n // both pushed `name` and `attributes` — the only columns that say what\n // happened — past the width of an 80-column terminal. `--json` above\n // returns the server's rows untouched, so nothing is lost, only\n // unshown.\n output.output(\n spans.map((span) => {\n // Omit-by-rest: naming these three IS the mechanism that drops\n // them from the narrow table view. `ignoreRestSiblings` covers\n // this shape, so no suppression is needed.\n const {\n workspaceId: _workspaceId,\n sandboxId: _sandboxId,\n receivedAt: _receivedAt,\n ...rest\n } = span as Record<string, unknown>;\n return rest;\n })\n );\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
61
64
  "/**\n * brand.ts — the MUTAGENT wordmark banner for the CLI header.\n *\n * Ported from `mutagent-pi/lib/brand.ts` so the CLI, the Pi launcher and the\n * Helix installer all render the SAME identity. Tokens mirror the mutagent-ui\n * design system (app.css):\n * --primary #7E47D7 (violet) --accent #45b8cc (cyan) --background #0C0A10\n *\n * Rendering is defensive by design — the banner must NEVER corrupt machine\n * output. It is suppressed unless stdout is an interactive TTY (so `--json`,\n * pipes and CI stay byte-clean), and degrades: truecolor gradient → flat cyan →\n * plain text → nothing.\n */\n\n/** Brand tokens — swap here to re-skin every surface. */\nexport const BRAND = {\n name: 'MUTAGENT',\n /** violet primary — app.css --primary */\n primary: '#7E47D7',\n /** cyan accent */\n accent: '#45b8cc',\n /** wordmark gradient endpoints — cyan → violet. NO pink/magenta. */\n gradientFrom: '#45b8cc',\n gradientTo: '#7E47D7',\n} as const;\n\n/**\n * MUTAGENT block wordmark (~82 cols). Identical art to the Pi launcher and the\n * orchestrator help-display, so the brand reads the same everywhere.\n */\nexport const WORDMARK: string[] = [\n ' ███╗ ███╗ ██╗ ██╗ ████████╗ █████╗ ██████╗ ███████╗ ███╗ ██╗ ████████╗ ',\n ' ████╗ ████║ ██║ ██║ ╚══██╔══╝ ██╔══██╗ ██╔════╝ ██╔════╝ ████╗ ██║ ╚══██╔══╝ ',\n ' ██╔████╔██║ ██║ ██║ ██║ ███████║ ██║ ███╗ █████╗ ██╔██╗ ██║ ██║ ',\n ' ██║╚██╔╝██║ ██║ ██║ ██║ ██╔══██║ ██║ ██║ ██╔══╝ ██║╚██╗██║ ██║ ',\n ' ██║ ╚═╝ ██║ ╚██████╔╝ ██║ ██║ ██║ ╚██████╔╝ ███████╗ ██║ ╚████║ ██║ ',\n ' ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═══╝ ╚═╝ ',\n];\n\n/** Minimum terminal width the block wordmark needs before we fall back. */\nexport const WORDMARK_MIN_COLUMNS = 84;\n\n// ── color helpers (truecolor ANSI) ───────────────────────────────────────────\nexport type RGB = [number, number, number];\n\nexport function hexToRgb(hex: string): RGB {\n const n = parseInt(hex.slice(1), 16);\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255];\n}\n\nconst lerp = (a: number, b: number, t: number): number => Math.round(a + (b - a) * t);\n\nexport function mix(from: RGB, to: RGB, t: number): RGB {\n return [lerp(from[0], to[0], t), lerp(from[1], to[1], t), lerp(from[2], to[2], t)];\n}\n\nexport const ansi = (r: number, g: number, b: number): string =>\n `\\x1b[38;2;${String(r)};${String(g)};${String(b)}m`;\nexport const RESET = '\\x1b[0m';\n\n/** Apply a per-column gradient across a line's non-space glyphs. */\nexport function gradientLine(line: string, from: RGB, to: RGB): string {\n const chars = Array.from(line);\n const n = chars.length;\n let out = '';\n chars.forEach((ch, i) => {\n if (ch === ' ') {\n out += ch;\n return;\n }\n const [r, g, b] = mix(from, to, n > 1 ? i / (n - 1) : 0);\n out += ansi(r, g, b) + ch;\n });\n return out + RESET;\n}\n\n/** Minimal env shape we read — avoids the NodeJS global namespace. */\nexport type EnvLike = Record<string, string | undefined>;\n\n/** True only on a 24-bit-capable terminal. */\nexport function hasTruecolor(env: EnvLike = process.env): boolean {\n return /truecolor|24bit/i.test(env.COLORTERM ?? '');\n}\n\n// ── banner ───────────────────────────────────────────────────────────────────\n\n/** Injectable environment so the banner is unit-testable without a real TTY. */\nexport interface BannerEnv {\n isTTY: boolean;\n columns: number;\n truecolor: boolean;\n /** MUTAGENT_NO_BANNER=1 opts out entirely. */\n disabled: boolean;\n}\n\n/** Read the render environment from the live process (stdout). */\nexport function detectBannerEnv(\n stream: { isTTY?: boolean; columns?: number } = process.stdout,\n env: EnvLike = process.env,\n): BannerEnv {\n return {\n isTTY: stream.isTTY === true,\n columns: stream.columns ?? 80,\n truecolor: hasTruecolor(env),\n disabled: env.MUTAGENT_NO_BANNER === '1',\n };\n}\n\n/**\n * Render the header banner. Returns '' when it must not print — not a TTY\n * (piped / `--json` / CI), or explicitly disabled. Never throws.\n */\nexport function renderBanner(env: BannerEnv = detectBannerEnv()): string {\n if (env.disabled || !env.isTTY) return '';\n\n const from = hexToRgb(BRAND.gradientFrom);\n const to = hexToRgb(BRAND.gradientTo);\n const wide = env.columns >= WORDMARK_MIN_COLUMNS;\n\n const art = wide ? WORDMARK : [` ${BRAND.name}`];\n const lines = env.truecolor\n ? art.map((l) => gradientLine(l, from, to))\n : art.map((l) => `${ansi(...from)}${l}${RESET}`);\n\n return `\\n${lines.join('\\n')}\\n`;\n}\n",
62
65
  "/**\n * Whether `-v` / `--version` in raw argv means \"print the CLI's own version\".\n *\n * ## The defect this exists to fix\n *\n * `mutagent install helix --version 0.1.0-alpha.20` printed `0.1.208` — the CLI's\n * own version — exited 0, and installed nothing. The entry point matched the flag\n * with `rawArgs.includes('--version')`, which is position-blind, so it swallowed\n * the flag before Commander ever saw the subcommand that owns it. A package\n * version could not be pinned, and there was therefore no way to roll an install\n * back to a known-good release — which is exactly the lever you want on hand when\n * a fresh release misbehaves.\n *\n * ## The rule\n *\n * The global flag wins only while argv is still options. The first non-option\n * token is the SUBCOMMAND name; from that point on, `--version` belongs to the\n * subcommand and must reach Commander untouched.\n *\n * mutagent --version → global (print CLI version)\n * mutagent -v → global\n * mutagent --json --version → global\n * mutagent --api-key K --version → global (K is a VALUE, not a subcommand)\n * mutagent install helix --version 1.2.3 → NOT global — install pins the package\n * mutagent install --version 1.2.3 helix → NOT global — same, order-independent\n *\n * Option VALUES are skipped deliberately: without that, `--api-key K --version`\n * would treat `K` as the subcommand and stop printing the CLI version — trading\n * one position bug for another.\n *\n * Kept as a pure function, separate from `bin/cli.ts`, because the entry point\n * runs its argv handling at module load and cannot be exercised by the command\n * tester. The rule is small; being able to test every case of it is not.\n */\n\n/**\n * Global options that consume the NEXT argv token as their value. `--opt=value`\n * needs no entry here — it is a single token and is already seen as an option.\n *\n * Only PROGRAM-level value options belong in this list. A subcommand's options\n * are irrelevant: once a subcommand has been named the answer is already \"not\n * global\", so nothing after it is ever inspected.\n */\nconst GLOBAL_VALUE_OPTIONS: ReadonlySet<string> = new Set(['--api-key', '--endpoint']);\n\n/** The index of the subcommand name in `rawArgs`, or -1 if argv names none. */\nexport function findSubcommandIndex(rawArgs: readonly string[]): number {\n for (let i = 0; i < rawArgs.length; i++) {\n const arg = rawArgs[i];\n if (arg === undefined) continue;\n // Everything after `--` is a positional by definition.\n if (arg === '--') return i + 1 < rawArgs.length ? i + 1 : -1;\n if (arg.startsWith('-')) {\n if (GLOBAL_VALUE_OPTIONS.has(arg)) i++; // skip the option's value\n continue;\n }\n return i;\n }\n return -1;\n}\n\n/**\n * True when `-v`/`--version` should print the CLI version and exit — i.e. it\n * appears before any subcommand. False when it belongs to a subcommand (or is\n * absent), in which case the entry point must fall through to `program.parse()`.\n */\nexport function isGlobalVersionFlag(rawArgs: readonly string[]): boolean {\n const versionAt = rawArgs.findIndex((a) => a === '-v' || a === '--version');\n if (versionAt === -1) return false;\n const subcommandAt = findSubcommandIndex(rawArgs);\n return subcommandAt === -1 || versionAt < subcommandAt;\n}\n"
63
66
  ],
64
- "mappings": "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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACZ,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACzB,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACxB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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",
65
- "debugId": "0D5785F3AE94E3BA64756E2164756E21",
67
+ "mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACZ,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACzB,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACxB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
68
+ "debugId": "9CA63CD3787CB08B64756E2164756E21",
66
69
  "names": []
67
70
  }