@mutagent/cli 0.1.266 → 0.1.267

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.
@@ -8,15 +8,15 @@
8
8
  "/**\n * @fileoverview The provider create-request body, as it goes on the wire.\n * @module @mutagent/cli/lib/provider-request\n *\n * WHY THIS IS ITS OWN MODULE\n * --------------------------\n * Five credential flags once reached no server at all. `createProvider` mapped\n * them into the generated SDK's `metadata`, whose outbound schema types the\n * field `z.object({})`; zod strips unknown keys, so every one was deleted on the\n * way out. Measured: `metadata keys on wire: []`. The operator passed `--region`\n * and the server replied that a region was required.\n *\n * Nothing caught it. `tsc` could not — the generated type is `{}` and\n * `Record<string, unknown>` is assignable to it. The command tests could not —\n * they assert what the command hands the WRAPPER, and the loss happened below\n * that boundary. A 688-case suite stayed green.\n *\n * So the body construction lives here, separate from the client, for one\n * reason: the provider tests replace `lib/sdk-client.js` wholesale via\n * `mock.module()`, and a builder living inside that module could only ever be\n * asserted through its own mock. Here it is reachable unmocked, and the wire\n * shape can be asserted directly.\n */\n\nexport interface CreateProviderRequest {\n name: string;\n provider: string;\n /** Optional: the secret's wire name is per-entry (Vertex uses serviceAccountKey). */\n apiKey?: string;\n baseUrl?: string;\n isDefault?: boolean;\n /** Which hosted family a gateway configuration targets. */\n hostedFamily?: string;\n /** Per-entry credential material, keyed by the catalog's wire names. */\n credentialFields?: Record<string, unknown>;\n}\n\n/**\n * Build the exact JSON body for `POST /api/providers`.\n *\n * Matches the post-#1365 server contract: `credentialFields` and `hostedFamily`\n * are first-class, `apiKey` is optional because the secret's wire name is\n * per-entry, and there is no `scope` — the server derives the tenant from the\n * verified `x-workspace-id` header.\n */\nexport function buildCreateProviderBody(data: CreateProviderRequest): Record<string, unknown> {\n const body: Record<string, unknown> = {\n name: data.name,\n provider: data.provider,\n isDefault: data.isDefault ?? false,\n };\n\n // The secret's wire name is per-entry: ten entries call it `apiKey`, Google\n // Vertex calls it `serviceAccountKey`. The server accepts either the\n // top-level slot or the correspondingly-named key inside credentialFields.\n if (data.apiKey) body.apiKey = data.apiKey;\n if (data.baseUrl) body.baseUrl = data.baseUrl;\n if (data.hostedFamily) body.hostedFamily = data.hostedFamily;\n if (data.credentialFields && Object.keys(data.credentialFields).length > 0) {\n body.credentialFields = data.credentialFields;\n }\n\n return body;\n}\n",
9
9
  "/**\n * @fileoverview Explicit SDK → CLI mapping for every return shape (#1351)\n * @module @mutagent/cli/lib/sdk-mappers\n *\n * WHY THIS FILE EXISTS\n *\n * `sdk-client.ts` returned SDK payloads through `as unknown as <CLIType>` at ten\n * public-method return sites. A cast is not a conversion: it silences the\n * compiler and changes nothing at runtime, so the CLI's type-check carried no\n * evidence about return shapes at all.\n *\n * Measured rather than assumed (#1351): six breaking changes injected into the\n * SDK's models — `Agent.id` number→string, `Agent.name`→`title`,\n * `ProviderConfig.provider`→`kind`, `WorkspacesListWorkspace.slug`→`handle`,\n * `.isDefault`→`primary`, `TestConnectionResult.message`→`msg` — produced\n * **+0 errors** against real CLI source. A control (renaming an *uncast*\n * envelope key) fired 2, proving the harness was live. The type-check would\n * have passed against essentially any SDK preserving method names and request\n * shapes.\n *\n * `--external @mutagent/sdk` in package.json means `bun build` resolves and\n * type-checks nothing of the SDK either, so the build gate carries zero SDK\n * evidence. `type-check` was the only gate that could carry any, and it covered\n * requests only.\n *\n * Each function below reads its source fields BY NAME, so a renamed or retyped\n * SDK field is a compile error here — at one named site, in one file — instead\n * of a column silently rendering `undefined`.\n *\n * WHY A SEPARATE FILE\n *\n * `sdk-client.ts` is 680 lines against this repo's 500-line hard limit\n * (mutagent-cli/CLAUDE.md, enforced by ESLint `max-lines`). Growing it further\n * to hold these functions would trade one violation for a worse one.\n *\n * THE FOUR MISMATCHES THESE MAPPINGS RESOLVE, and why each resolves that way —\n * the server is the authority in every case:\n *\n * D1 id: CLI said `number`, SDK says `string`. The DB primary keys are\n * `text` (`provider-configs.ts`), so the CLI was wrong. `Provider.id` and\n * `Workspace.id` are now `string`. `Agent.id` stays `number` — the SDK\n * agrees it is a number there, so there was never a mismatch to fix.\n * D2 createdAt/updatedAt: CLI said `string | null`, SDK says `Date` (its zod\n * layer coerces). Mapped with `.toISOString()`, which is what the CLI's\n * own doc comments already promised (\"ISO 8601\").\n * D3 Provider.provider: CLI has a closed union, SDK an open `string`. The\n * catalog IS closed, so the narrowing is correct — done ONCE, here, with\n * an explicit unknown-value fallback rather than a blind assertion.\n * D4 The `raw.result` envelope guard on listProviders described a shape the\n * SDK does not produce (`ProviderConfigsList` has no `result`). Deleted\n * at the call site rather than mapped.\n */\n\nimport { Provider as SDKProviderEnum } from '@mutagent/sdk/models';\nimport type { Agent, Provider, ProviderTestResult, ProviderType, Workspace } from '../types/index.js';\n\n/**\n * The closed catalog set, DERIVED from the SDK's own enum rather than restated.\n *\n * `ProviderType` is an alias for that enum, so `Object.values` is exactly the\n * legal set and cannot drift from it. A hand-written copy would be one more\n * hand-maintained set with no equality check — the same shape of defect #1351\n * is about — and would silently rot the next time a provider is added.\n */\nconst PROVIDER_TYPES: readonly string[] = Object.values(SDKProviderEnum);\n\n/** Whether a raw string is one of the catalog ids this CLI knows. */\nexport function isProviderType(value: string): value is ProviderType {\n return PROVIDER_TYPES.includes(value);\n}\n\n/**\n * D3. Narrow the SDK's open `string` to the CLI's closed union, once.\n *\n * A value outside the set is passed through rather than rejected. The server\n * validates `provider` against the same closed catalog before persisting it, so\n * an unknown value here means this CLI is simply older than the server it is\n * talking to. Rendering an unfamiliar name is strictly better than crashing a\n * list command, and this function is on the read path only.\n */\nexport function narrowProviderType(value: string): ProviderType {\n return isProviderType(value) ? value : (value as ProviderType);\n}\n\n/**\n * D2. `Date` → ISO 8601 string, preserving null/undefined as null.\n *\n * The CLI's own field docs already say \"ISO 8601\"; only the type disagreed.\n */\nexport function toIsoString(value: Date | string | null | undefined): string | null {\n if (value === null || value === undefined) return null;\n return value instanceof Date ? value.toISOString() : value;\n}\n\n/** The SDK agent shape this mapper reads. Structural, so any source matching it works. */\ninterface SdkAgentLike {\n id: number;\n name: string;\n slug: string;\n description: string | null;\n systemPrompt: string;\n model: string;\n maxTurns: number | null;\n permissionMode: string | null;\n allowedTools: string[] | null;\n disallowedTools: string[] | null;\n status: string;\n isPublic: boolean;\n metadata: unknown;\n tags: string[] | null;\n createdBy: string | null;\n createdAt: Date | string | null;\n updatedAt: Date | string | null;\n}\n\nexport function toAgent(sdk: SdkAgentLike): Agent {\n return {\n id: sdk.id,\n name: sdk.name,\n slug: sdk.slug,\n description: sdk.description,\n systemPrompt: sdk.systemPrompt,\n model: sdk.model,\n maxTurns: sdk.maxTurns,\n permissionMode: sdk.permissionMode,\n allowedTools: sdk.allowedTools,\n disallowedTools: sdk.disallowedTools,\n status: sdk.status,\n isPublic: sdk.isPublic,\n metadata: sdk.metadata,\n tags: sdk.tags,\n createdBy: sdk.createdBy,\n createdAt: toIsoString(sdk.createdAt),\n updatedAt: toIsoString(sdk.updatedAt),\n };\n}\n\nexport function toAgentList(sdk: readonly SdkAgentLike[]): Agent[] {\n return sdk.map(toAgent);\n}\n\n/** The SDK workspace shape. `id` is `string` per D1. */\ninterface SdkWorkspaceLike {\n id: string;\n name: string;\n description: string | null;\n slug: string;\n isDefault: boolean;\n metadata: unknown;\n createdBy: string | null;\n createdAt: Date | string | null;\n updatedAt: Date | string | null;\n}\n\nexport function toWorkspace(sdk: SdkWorkspaceLike): Workspace {\n return {\n id: sdk.id,\n name: sdk.name,\n description: sdk.description,\n slug: sdk.slug,\n isDefault: sdk.isDefault,\n metadata: sdk.metadata,\n createdBy: sdk.createdBy,\n createdAt: toIsoString(sdk.createdAt),\n updatedAt: toIsoString(sdk.updatedAt),\n };\n}\n\nexport function toWorkspaceList(sdk: readonly SdkWorkspaceLike[]): Workspace[] {\n return sdk.map(toWorkspace);\n}\n\n/** The SDK provider-config shape. `id` is `string` per D1, `provider` open per D3. */\ninterface SdkProviderLike {\n id: string;\n name: string;\n provider: string;\n hostedFamily?: string | null;\n baseUrl: string | null;\n isActive: boolean;\n metadata: unknown;\n createdBy: string | null;\n createdAt: Date | string | null;\n updatedAt: Date | string | null;\n}\n\nexport function toProvider(sdk: SdkProviderLike): Provider {\n return {\n id: sdk.id,\n name: sdk.name,\n provider: narrowProviderType(sdk.provider),\n hostedFamily: sdk.hostedFamily ?? null,\n baseUrl: sdk.baseUrl,\n isActive: sdk.isActive,\n metadata: sdk.metadata,\n createdBy: sdk.createdBy,\n createdAt: toIsoString(sdk.createdAt),\n updatedAt: toIsoString(sdk.updatedAt),\n };\n}\n\nexport function toProviderList(sdk: readonly SdkProviderLike[]): Provider[] {\n return sdk.map(toProvider);\n}\n\n/**\n * The SDK connection-test shape.\n *\n * `message` is the field #1351 renamed to `msg` to prove the cast was blind.\n * Reading it by name here is what makes that rename a compile error.\n */\ninterface SdkProviderTestResultLike {\n success: boolean;\n provider?: string | null;\n latencyMs?: number | null;\n message: string;\n error?: string | null;\n models?: string[] | null;\n}\n\nexport function toProviderTestResult(sdk: SdkProviderTestResultLike): ProviderTestResult {\n return {\n success: sdk.success,\n provider: sdk.provider ?? undefined,\n latencyMs: sdk.latencyMs ?? undefined,\n message: sdk.message,\n error: sdk.error ?? undefined,\n models: sdk.models ?? undefined,\n };\n}\n",
10
10
  "// SDK Client wrapper for MutagenT API\n/// <reference lib=\"dom\" />\nimport { Mutagent, HTTPClient } from '@mutagent/sdk';\nimport type { Agent, CreateAgentInput, UpdateAgentInput, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig, type WorkspaceSource } from './config.js';\nimport { buildCreateProviderBody } from './provider-request.js';\n// Explicit SDK → CLI conversion replacing the return-side casts (#1351). In its\n// own file: this one is already over the 500-line limit and must not grow.\nimport { toAgent, toAgentList, toProvider, toProviderList, toProviderTestResult, toWorkspace, toWorkspaceList } from './sdk-mappers.js';\n\n/**\n * SDK Client Wrapper\n *\n * This class wraps the real @mutagent/sdk to provide a consistent interface\n * for CLI commands. It maps the SDK's method signatures to the interface\n * expected by the CLI.\n */\n/**\n * How the active workspace was arrived at.\n *\n * This exists because reads and writes tolerate different amounts of guessing.\n * Listing against a guessed workspace shows you the wrong rows; WRITING a\n * credential into a guessed workspace puts a secret somewhere you did not\n * choose, and the CLI reports success either way. So the resolution PATH is\n * recorded here and the write path refuses anything it had to guess at.\n *\n * - `configured` — came from config, or from a workspace the server marks default\n * - `sole` — the account has exactly one workspace, so there is nothing to guess\n * - `ambiguous` — several workspaces, none marked default; the first was taken\n * - `none` — no workspace could be resolved at all\n */\nexport type WorkspaceResolution = 'configured' | 'sole' | 'ambiguous' | 'none';\n\nclass SDKClientWrapper {\n private sdk: Mutagent;\n private apiKey: string;\n private endpoint: string;\n private workspaceId?: string;\n private organizationId?: string;\n private workspaceResolution: WorkspaceResolution = 'none';\n\n constructor(opts: {\n apiKey: string;\n serverURL?: string;\n workspaceId?: string;\n organizationId?: string;\n workspaceSource?: WorkspaceSource;\n }) {\n this.apiKey = opts.apiKey;\n this.endpoint = opts.serverURL ?? 'http://localhost:3003';\n this.workspaceId = opts.workspaceId;\n this.organizationId = opts.organizationId;\n // A configured id counts as CHOSEN only when the config says a human chose\n // it. Login persists `workspaces.find(isDefault) ?? workspaces[0]` into the\n // same key (auth-flow.ts:167), so treating any configured id as 'configured'\n // laundered that guess into a deliberate choice and the ambiguity gate could\n // never fire. An inferred id is left unresolved here and re-derived against\n // the account's actual workspaces by ensureContext().\n if (opts.workspaceId && opts.workspaceSource === 'user') {\n this.workspaceResolution = 'configured';\n }\n\n // Create HTTP client with tenancy header injection\n const httpClient = new HTTPClient();\n httpClient.addHook(\"beforeRequest\", (req) => {\n if (this.workspaceId) req.headers.set(\"x-workspace-id\", this.workspaceId);\n if (this.organizationId) req.headers.set(\"x-organization-id\", this.organizationId);\n return req;\n });\n\n this.sdk = new Mutagent({\n security: {\n apiKey: this.apiKey,\n },\n serverURL: this.endpoint,\n httpClient,\n });\n }\n\n /**\n * Helper to handle SDK errors and convert them to CLI errors.\n * Masks Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n * so users see clean, actionable messages instead of raw stack traces.\n */\n private handleError(error: unknown): never {\n if (error && typeof error === 'object') {\n const err = error as { statusCode?: number; message?: string; body?: string; name?: string; rawValue?: unknown; rawMessage?: string };\n\n if (err.statusCode === 401) {\n throw new AuthenticationError();\n }\n if (err.statusCode === 403) {\n throw new ApiError(403, err.message ?? err.body ?? 'Access denied');\n }\n\n // Detect workspace/org context errors from the server\n const errMessage = (err.message ?? err.body ?? '').toLowerCase();\n if (\n errMessage.includes('workspace') && (errMessage.includes('missing') || errMessage.includes('required')) ||\n errMessage.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(err.message ?? err.body ?? undefined);\n }\n\n if (err.statusCode) {\n throw new ApiError(err.statusCode, err.message ?? err.body ?? 'Unknown error');\n }\n\n // Catch Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n if (\n err.name === 'SDKValidationError' ||\n err.name === 'SDKError' ||\n err.rawValue !== undefined ||\n err.rawMessage !== undefined\n ) {\n const friendlyMessage = err.rawMessage ?? err.message ?? 'Request failed';\n throw new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n }\n }\n\n // Catch network errors (fetch failures, DNS resolution, etc.)\n if (error instanceof TypeError && typeof error.message === 'string') {\n if (error.message.includes('fetch') || error.message.includes('network') || error.message.includes('ECONNREFUSED')) {\n throw new MutagentError(\n 'NETWORK_ERROR',\n 'Unable to connect to the Mutagent server',\n 'Check your internet connection and verify the server URL with: mutagent config list'\n );\n }\n }\n\n // Last resort: wrap unknown errors in MutagentError\n if (error instanceof Error) {\n throw new MutagentError(\n 'REQUEST_FAILED',\n error.message,\n 'Run the command with --help for usage details'\n );\n }\n\n throw new MutagentError(\n 'UNKNOWN_ERROR',\n 'An unexpected error occurred',\n 'Run the command with --help for usage details'\n );\n }\n\n /**\n * Helper for direct HTTP requests (for endpoints not yet in SDK)\n */\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n // Convert Headers object to plain object if needed\n const optHeaders = options?.headers;\n let extraHeaders: Record<string, string> = {};\n if (optHeaders instanceof Headers) {\n optHeaders.forEach((value, key) => {\n extraHeaders[key] = value;\n });\n } else if (optHeaders) {\n extraHeaders = optHeaders as Record<string, string>;\n }\n\n // Build tenancy headers from stored config\n const tenancyHeaders: Record<string, string> = {};\n if (this.workspaceId) tenancyHeaders['x-workspace-id'] = this.workspaceId;\n if (this.organizationId) tenancyHeaders['x-organization-id'] = this.organizationId;\n\n const response = await fetch(`${this.endpoint}${path}`, {\n ...options,\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n ...tenancyHeaders,\n ...extraHeaders,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response.json() as Promise<T>;\n }\n\n // =========================================================================\n // AGENTS\n // =========================================================================\n\n async listAgents(filters?: { limit?: number; offset?: number; name?: string; status?: string }): Promise<{ data: Agent[]; total: number }> {\n try {\n const response = await this.sdk.agents.listAgents({\n limit: filters?.limit,\n offset: filters?.offset,\n name: filters?.name,\n status: filters?.status,\n });\n return {\n data: toAgentList(response.result.data),\n total: response.result.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getAgent(id: string): Promise<Agent> {\n try {\n const response = await this.sdk.agents.getAgent({\n id: parseInt(id, 10),\n });\n return toAgent(response);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createAgent(data: CreateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.createAgent({\n name: data.name,\n slug: data.slug,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return toAgent(response);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateAgent(id: string, data: UpdateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.updateAgent({\n id: parseInt(id, 10),\n body: {\n name: data.name ?? undefined,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n },\n });\n return toAgent(response);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteAgent(id: string): Promise<void> {\n try {\n await this.sdk.agents.deleteAgent({\n id: parseInt(id, 10),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // WORKSPACES\n // =========================================================================\n\n async listWorkspaces(filters?: { limit?: number; offset?: number }): Promise<{ data: Workspace[]; total: number }> {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({\n includeInactive: false,\n });\n // SDK returns { workspaces: [...], total } but CLI expects { data: [...], total }\n const workspaces = toWorkspaceList(response.workspaces);\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? workspaces.length;\n return {\n data: workspaces.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getWorkspace(id: string): Promise<Workspace> {\n try {\n const response = await this.sdk.workspaces.getWorkspace({\n wsId: id,\n });\n return toWorkspace(response);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // PROVIDERS\n // =========================================================================\n\n async listProviders(filters?: { limit?: number; offset?: number; type?: string }): Promise<{ data: Provider[]; total: number }> {\n try {\n // No workspaceId/organizationId here: the provider-unification epic\n // (T-2.1/T-2.2, #1384) retired the request-side scope params, so the\n // server derives the workspace from `x-workspace-id`. That header is set\n // on EVERY SDK call by the beforeRequest hook in this constructor, so\n // dropping the params changes what is sent on the wire, not which\n // workspace is read.\n const response = await this.sdk.providerConfigs.listProviders({\n provider: filters?.type,\n includeInactive: true,\n });\n // SDK (Speakeasy-generated) returns ProviderConfigsList: { configs, total }.\n // D4 (#1351): the `raw.result` envelope guard that used to sit here\n // described a shape the SDK does not produce — `ProviderConfigsList` has\n // no `result` member — and the `as any` it needed erased the real one.\n const configs = toProviderList(response.configs);\n const total: number = response.total;\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? configs.length;\n return {\n data: configs.slice(offset, offset + limit),\n total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getProvider(id: string): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.getProvider({\n id: id,\n });\n return toProvider(response);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getModelsCatalog(): Promise<{ models: { id: string; displayName: string; provider: { id: string; name: string; kind: string }; roles: string[] }[] }> {\n try {\n const wsId = this.workspaceId;\n if (!wsId) return { models: [] };\n const qs = `?workspaceId=${encodeURIComponent(wsId)}`;\n return await this.request<{ models: { id: string; displayName: string; provider: { id: string; name: string; kind: string }; roles: string[] }[] }>(`/api/providers/catalog${qs}`);\n } catch {\n return { models: [] };\n }\n }\n\n getCurrentWorkspaceId(): string | undefined {\n return this.workspaceId;\n }\n\n getCurrentOrgId(): string | undefined {\n return this.organizationId;\n }\n\n /**\n * Auto-resolve organization and workspace context when not provided via config.\n * Called once at client init so ALL commands benefit from tenancy headers.\n */\n async ensureContext(): Promise<void> {\n // A workspace whose provenance is a login-time guess must still be\n // classified against the account's real workspaces, so this cannot early-out\n // merely because an id is present — that is what let the guess through.\n const needsWorkspaceClassification =\n !this.workspaceId || this.workspaceResolution === 'none';\n if (this.organizationId && !needsWorkspaceClassification) return;\n\n if (!this.organizationId) {\n let orgs = await fetchOrganizations(this.apiKey, this.endpoint).catch(() => []);\n if (orgs.length === 0) {\n // Retry once after 1s for transient network failures\n await new Promise(r => setTimeout(r, 1000));\n orgs = await fetchOrganizations(this.apiKey, this.endpoint).catch(() => []);\n }\n if (orgs.length > 0 && orgs[0]) {\n this.organizationId = orgs[0].id;\n }\n }\n\n // Runs when no workspace is known AND when the known one is a login-time\n // guess, so the guess is re-classified rather than trusted.\n if (this.workspaceResolution === 'none' && this.organizationId) {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({ includeInactive: false });\n const workspaces = toWorkspaceList(response.workspaces);\n if (workspaces.length === 1 && workspaces[0]) {\n // Exactly one workspace — there is nothing to guess between.\n this.workspaceId = workspaces[0].id;\n this.workspaceResolution = 'sole';\n } else if (workspaces.length > 1) {\n const defaultWs = workspaces.find((ws: Workspace) => ws.isDefault);\n if (defaultWs) {\n // The server marks one default — an explicit choice, not a guess.\n this.workspaceId = defaultWs.id;\n this.workspaceResolution = 'configured';\n } else {\n // Several candidates and no stated preference. Reads tolerate the\n // first one; writes must not (see requireUnambiguousWorkspace).\n const first = workspaces[0] ?? undefined;\n if (first) {\n this.workspaceId = this.workspaceId ?? first.id;\n this.workspaceResolution = 'ambiguous';\n }\n }\n }\n } catch {\n /* best-effort */\n }\n }\n }\n\n /**\n * Resolution path of the active workspace. Reads may ignore this; writes\n * MUST NOT.\n */\n getWorkspaceResolution(): WorkspaceResolution {\n return this.workspaceResolution;\n }\n\n /**\n * Gate for every mutating provider command (FR-CLI-002).\n *\n * Returns the workspace a write will land in, or throws an actionable error\n * naming the command that sets one. A write is allowed only when the target\n * was not guessed at — see WorkspaceResolution.\n */\n requireUnambiguousWorkspace(): string {\n if (!this.workspaceId || this.workspaceResolution === 'none') {\n throw new MutagentError(\n 'WORKSPACE_REQUIRED',\n 'No workspace configured.',\n 'Set one with: mutagent config set workspace <workspace-id> (list them with: mutagent workspaces list)'\n );\n }\n\n if (this.workspaceResolution === 'ambiguous') {\n throw new MutagentError(\n 'WORKSPACE_AMBIGUOUS',\n 'Several workspaces are available and none is marked default, so the target for this write is ambiguous.',\n 'Choose one explicitly: mutagent config set workspace <workspace-id> (list them with: mutagent workspaces list)'\n );\n }\n\n return this.workspaceId;\n }\n\n async testProvider(id: string): Promise<ProviderTestResult> {\n try {\n const response = await this.sdk.providerConfigs.testProvider({\n id: id,\n });\n return toProviderTestResult(response);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n /**\n * Create a provider configuration in the active workspace.\n *\n * The caller names no tenancy level. A configuration belongs to the workspace\n * and to nothing else (FR-CORE-001), so the target is resolved here rather\n * than chosen by the command.\n */\n async createProvider(data: {\n name: string;\n provider: string;\n /** Optional: the secret's wire name is per-entry (Vertex uses serviceAccountKey). */\n apiKey?: string;\n baseUrl?: string;\n isDefault?: boolean;\n /** Hosted vendor for gateway entries (azure/vertex/bedrock); undefined for direct. */\n hostedFamily?: string;\n /** Non-secret per-entry material — region, projectId, deploymentName, endpoint. */\n credentialFields?: Record<string, unknown>;\n }): Promise<Provider> {\n // The write target. Throws an actionable error rather than guessing.\n this.requireUnambiguousWorkspace();\n\n // ── Why this does NOT go through the generated SDK ──────────────────────\n //\n // `sdk.providerConfigs.createProvider` parses the body through\n // `NameProviderApiKey$outboundSchema` before sending, and in the CURRENT\n // generated model `metadata` is typed `z.object({})`. zod strips unknown\n // keys, so every per-entry credential field mapped into `metadata` was\n // deleted on the way out — measured, `metadata keys on wire: []`. The five\n // flags reached no server at all: the flag the operator passed was the flag\n // the server then said was missing.\n //\n // That is this task's own thesis turned on itself — a field mapped to a key\n // the recipient ignores — and strictly worse than the `--scope` it replaced,\n // which at least arrived. `tsc` cannot catch it: the generated type is `{}`,\n // and `Record<string, unknown>` is assignable to `{}`.\n //\n // The generated model is also STALE against the server contract this task\n // targets. After #1365 the create body carries `credentialFields` and\n // `hostedFamily` as first-class fields and no longer carries `scope`; the\n // regenerated SDK (#1372) has none of that — it still exposes `scope`,\n // `family`, and the empty `metadata`. So there is no shape of the generated\n // call that expresses the request correctly.\n //\n // Until the SDK is regenerated against the post-#1365 contract, this posts\n // the true body directly. `request()` is the same raw path the wrapper\n // already uses for the models catalog, and it carries the tenancy headers\n // the server derives the workspace from. When the SDK catches up, this\n // reverts to a generated call and the shape below is exactly what it must\n // produce — asserted by createProvider's wire test.\n const body = buildCreateProviderBody(data);\n\n try {\n const created = await this.request<Provider>('/api/providers', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n return created;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateProvider(id: string, data: {\n name?: string;\n apiKey?: string;\n isActive?: boolean;\n isDefault?: boolean;\n baseUrl?: string | null;\n }): Promise<Provider & { workspaceId?: string }> {\n // A write — same gate as create (FR-CLI-002). The resolved target is\n // returned so the command can state where the write landed.\n const workspaceId = this.requireUnambiguousWorkspace();\n\n try {\n const response = await this.sdk.providerConfigs.updateProvider({\n id,\n body: {\n name: data.name,\n apiKey: data.apiKey,\n isActive: data.isActive,\n isDefault: data.isDefault,\n baseUrl: data.baseUrl,\n },\n });\n return { ...toProvider(response), workspaceId };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteProvider(id: string): Promise<{ workspaceId: string }> {\n // A write — same gate as create (FR-CLI-002). The resolved target is\n // returned so the command can state where the write landed.\n const workspaceId = this.requireUnambiguousWorkspace();\n\n try {\n await this.sdk.providerConfigs.deleteProvider({ id });\n return { workspaceId };\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n// Singleton SDK client\nlet sdkClient: SDKClientWrapper | null = null;\n\nexport async function getSDKClient(): Promise<SDKClientWrapper> {\n if (!sdkClient) {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const config = loadConfig();\n sdkClient = new SDKClientWrapper({\n apiKey: apiKey,\n serverURL: config.endpoint,\n workspaceId: config.defaultWorkspace,\n organizationId: config.defaultOrganization,\n workspaceSource: config.defaultWorkspaceSource,\n });\n\n // Auto-resolve org + workspace context so all commands get tenancy headers\n await sdkClient.ensureContext().catch((err: unknown) => {\n // Log to stderr (not stdout — don't pollute JSON output)\n if (process.env.MUTAGENT_DEBUG) {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(`[mutagent] Context resolution failed: ${message}\\n`);\n }\n });\n }\n\n return sdkClient;\n}\n\nexport function resetSDKClient(): void {\n sdkClient = null;\n}\n\nexport async function validateApiKey(apiKey: string, endpoint: string): Promise<boolean> {\n // Use /api/providers — works with workspace-scoped mg_live_ keys without requiring org context\n try {\n const response = await fetch(`${endpoint}/api/providers`, {\n headers: { 'x-api-key': apiKey },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Fetch organizations for the authenticated API key.\n * Returns array of { id, name } or empty array on failure.\n */\nexport async function fetchOrganizations(apiKey: string, endpoint: string): Promise<{ id: string; name: string }[]> {\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n if (!response.ok) return [];\n const data = await response.json() as { data?: { id: string; name: string }[] };\n return data.data ?? [];\n } catch {\n return [];\n }\n}\n\n/**\n * Fetch workspaces for the given organization.\n * Returns array of { id, name, isDefault } or empty array on failure.\n */\nexport async function fetchWorkspaces(apiKey: string, endpoint: string, orgId: string): Promise<{ id: string; name: string; isDefault?: boolean }[]> {\n try {\n const response = await fetch(`${endpoint}/api/workspaces`, {\n headers: { 'x-api-key': apiKey, 'x-organization-id': orgId },\n });\n if (!response.ok) return [];\n const data = await response.json() as { workspaces?: { id: string; name: string; isDefault?: boolean }[] };\n return data.workspaces ?? [];\n } catch {\n return [];\n }\n}\n\n// Export the wrapper class for type compatibility\nexport { SDKClientWrapper as MutagentSDK };\n",
11
- "#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createAuthCommand } from '../commands/auth.js';\nimport { createLoginCommand } from '../commands/login.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers/index.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { createHooksCommand } from '../commands/hooks/index.js';\nimport { createFeedbackCommand } from '../commands/feedback.js';\nimport { createInstallCommand } from '../commands/install/index.js';\nimport { createTraceCommand } from '../commands/trace.js';\nimport { createHelixCommand } from '../commands/helix/index.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\nimport { setCliVersion, getCompatMetadata } from '../lib/output.js';\nimport { renderBanner } from '../lib/brand.js';\nimport { isGlobalVersionFlag } from '../lib/global-version-flag.js';\n\n// NOTE (#1184 reduced surface): the active command surface was reduced —\n// several legacy command groups were retired. `agents` is deferred (source\n// kept dormant in ../commands/agents/, intentionally NOT registered).\n// Claude Code session telemetry is handled by `hooks` via its own\n// batch-upload endpoint (unrelated to any retired read/query surface).\n//\n// `helix` is now registered: it drives a Helix session in a REMOTE cloud\n// sandbox (spawn / attach / run / rm). That is a different operation from\n// `install helix`, which installs the Helix tool on THIS machine — both stay,\n// and both say so in their help text.\n\n/**\n * CLI Context Interface\n * Passed to all subcommands for shared state\n */\nexport interface CliContext {\n /** Output results as JSON */\n json: boolean;\n /** MutagenT API key */\n apiKey?: string;\n /** MutagenT server endpoint */\n endpoint?: string;\n /** Enable verbose logging */\n verbose: boolean;\n}\n\n// Read version: compile-time define > package.json > hardcoded fallback\nlet cliVersion = '0.1.1';\nif (process.env.CLI_VERSION) {\n cliVersion = process.env.CLI_VERSION;\n} else {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n cliVersion = pkg.version ?? cliVersion;\n } catch {\n // Fallback to hardcoded version\n }\n}\n\n// Register cliVersion for _compat metadata injection (Scope D)\nsetCliVersion(cliVersion);\n\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`Mutagent CLI - command-line client for the Mutagent platform\n\n Documentation: https://docs.mutagent.io/cli\n Dashboard: https://app.mutagent.io`)\n // `-v, --version` is deliberately NOT declared as a Commander option.\n //\n // Declaring it here made the flag GLOBAL, and a global boolean `--version`\n // SHADOWS `mutagent install <pkg> --version <v>`: Commander resolved the flag\n // against the inherited parent definition, which takes no value, so the value\n // was silently dropped and the install fell back to \"latest\". Measured: with\n // the option declared the broker was asked for \"latest\" even when a version was\n // pinned; with it removed the pin arrives intact. A version could therefore\n // never be pinned or rolled back — the one lever you want when a fresh release\n // misbehaves.\n //\n // The global form is handled BEFORE `program.parse()` by the position-aware\n // raw-argv check below (see lib/global-version-flag.ts), so `mutagent --version`\n // and `mutagent -v` never reach Commander at all and lose nothing. The flag is\n // documented in the help text instead of by an option that only shadows.\n .option('--json', 'Output results as JSON (for AI agents)')\n .option('--api-key <key>', 'Mutagent API key')\n .option('--endpoint <url>', 'Mutagent server endpoint')\n .option('--non-interactive', 'Disable interactive prompts (for CI/AI agents)')\n .configureHelp({\n sortSubcommands: true,\n showGlobalOptions: true,\n });\n\n// Brand banner — the gradient MUTAGENT wordmark, first thing on screen.\n// renderBanner() returns '' unless stdout is an interactive TTY, so piped /\n// --json / CI output stays byte-clean for coding agents.\nprogram.addHelpText('beforeAll', () => renderBanner());\n\n// Central help hub — self-contained navigation for CI/CD, coding agents, and humans\nprogram.addHelpText('after', `\n${chalk.bold.cyan('WORKFLOWS:')}\n ${chalk.bold('Setup')} mutagent login → mutagent init\n ${chalk.bold('Lifecycle Tools')} mutagent install <helix|diagnostics|evaluator> ${chalk.dim('(login-gated)')}\n ${chalk.bold('Feedback')} mutagent feedback send \"<what happened>\" --category <cli|helix|stage:<x>> ${chalk.dim('[--session <id>] [--attach-transcript]')}\n\n${chalk.dim('For CLI usage guidance for AI agents, see the Skill at')}\n${chalk.cyan('.claude/skills/mutagent-cli/SKILL.md')}\n\n${chalk.yellow('Global flags:')}\n -v, --version ${chalk.dim('Print the CLI version')} ${chalk.dim('(before a subcommand; after one it is the subcommand\\'s)')}\n --json --api-key <k> --endpoint <url> --non-interactive\n\n${chalk.yellow('Non-Interactive Mode (CI/CD & Coding Agents):')}\n export MUTAGENT_API_KEY=mt_... ${chalk.dim('or')} --api-key mt_...\n --json ${chalk.dim('for structured output')} --non-interactive ${chalk.dim('to disable prompts')}\n\n${chalk.yellow('Command Navigation:')}\n mutagent login ${chalk.dim('Login (browser OAuth — recommended)')}\n mutagent auth status ${chalk.dim('Check auth + workspace')}\n mutagent init ${chalk.dim('Initialize project (.mutagentrc.json)')}\n mutagent workspaces list --json ${chalk.dim('List workspaces (verify ID)')}\n mutagent config set workspace <id> ${chalk.dim('Set active workspace')}\n mutagent usage --json ${chalk.dim('Show account usage + provider status')}\n\n mutagent providers list --json ${chalk.dim('List configured BYOK providers')}\n mutagent providers list --models ${chalk.dim('See available models per provider')}\n\n mutagent helix run \"<task>\" --prompt \"<who>\" ${chalk.dim('One Helix agent turn in a cloud sandbox')}\n mutagent helix ls --json ${chalk.dim('List running sandboxes')}\n mutagent helix spawn --image <ref> ${chalk.dim('Persistent sandbox you attach to')}\n mutagent helix rm <id> --force ${chalk.dim('Destroy a sandbox (the only thing that does)')}\n\n mutagent install helix ${chalk.dim('Install the ADL lifecycle conductor locally (login-gated)')}\n mutagent install evaluator --version 1.2.3 ${chalk.dim('Pin a version')}\n mutagent install --help ${chalk.dim('helix | diagnostics | evaluator')}\n\n mutagent hooks --help ${chalk.dim('Hook setup for Claude Code session telemetry upload')}\n\n${chalk.bold.red('Report Issues:')}\n Hit a bug? Run: ${chalk.cyan('mutagent feedback send \"describe what went wrong\" --category cli')}\n Lifecycle-stage feedback: ${chalk.cyan('mutagent feedback send \"eval gate unclear\" --category stage:evaluate')}\n Link to a session: ${chalk.cyan('mutagent feedback send \"...\" --session <session-id>')}\n Attach your coding-agent session transcript: ${chalk.cyan('mutagent feedback send \"...\" --attach-transcript')}\n ${chalk.dim('--category accepts: cli | helix | stage:<spec|build|evaluate|diagnose|optimize>')}\n\n${chalk.yellow('Directive System:')}\n Every --json response may include:\n ${chalk.bold('_directive.display')} Type tag — 'status_card' for card-kind directives (drives test/docs guards)\n ${chalk.bold('_directive.renderedCard')} Pre-formatted card ${chalk.red('(MUST echo verbatim in chat whenever this field exists — see SKILL.md Verbatim Card Display Protocol)')}\n ${chalk.bold('_directive.instruction')} Next step for the agent (self-sufficient, no Skill required)\n ${chalk.bold('_directive.next')} Array of suggested follow-up commands\n ${chalk.bold('_links')} Dashboard/API URLs (format as markdown links)\n ${chalk.bold('_compat')} Compat metadata: cliVersion, skillVersion, skillMinCliVersion\n\n${chalk.yellow('AI Agent Rules (MANDATORY for coding agents):')}\n 1. Login (two paths):\n - CI / fully automated: export MUTAGENT_API_KEY=mt_... then mutagent login --json\n - Helping a user onboard: mutagent login --browser --json\n (CLI prints an auth URL — surface it to the user verbatim, then the CLI\n polls for up to 5 minutes while the user authorizes in their browser.\n This IS agent-compatible. --non-interactive is NOT needed with --browser.)\n 2. EVERY command MUST include --json (no exceptions)\n 3. Run <command> --help BEFORE first use of any command\n 4. Parse _directive.renderedCard and copy it into your CHAT RESPONSE verbatim\n ${chalk.red('HARD STOP')}: do NOT run further commands until the card is rendered in chat\n 5. After mutagent init, verify workspace: mutagent workspaces list --json\n 6. ALL user interaction via AskUserQuestion — CLI is non-interactive\n${!hasCredentials() ? '\\n' + chalk.yellow(' Warning: Not authenticated. Run: mutagent login') + '\\n' : ''}${!hasRcConfig() ? '\\n' + chalk.green(' Get started: mutagent init') + '\\n' : ''}`);\n\n// Handle --version early (before parse) since it's a global option, not a subcommand.\n// Commander's preAction hook only fires with subcommands — a raw argv check is needed.\n//\n// POSITION IS LOAD-BEARING, and this used to be `rawArgs.includes('--version')`,\n// which matched the flag anywhere: `mutagent install helix --version 0.1.0-alpha.20`\n// printed the CLI's own version, exited 0, and installed nothing — so a package\n// version could not be pinned and an install could not be rolled back. The flag is\n// the program's only until a subcommand is named; after that it is the\n// subcommand's, and must reach Commander untouched. See lib/global-version-flag.ts.\nconst rawArgs = process.argv.slice(2);\nif (isGlobalVersionFlag(rawArgs)) {\n if (rawArgs.includes('--json')) {\n // Scope D: include _compat metadata so the Skill can validate compatibility\n console.log(JSON.stringify({\n version: cliVersion,\n _compat: getCompatMetadata(cliVersion),\n }));\n } else {\n console.log(cliVersion);\n }\n process.exit(0);\n}\n\n// Propagate global options to env vars before subcommands run\n// This ensures --api-key, --endpoint, and --non-interactive flags are picked up\nprogram.hook('preAction', (thisCommand) => {\n const globalOpts: { apiKey?: string; endpoint?: string; nonInteractive?: boolean } = thisCommand.optsWithGlobals();\n if (globalOpts.apiKey && !process.env.MUTAGENT_API_KEY) {\n process.env.MUTAGENT_API_KEY = globalOpts.apiKey;\n }\n if (globalOpts.endpoint && !process.env.MUTAGENT_ENDPOINT) {\n process.env.MUTAGENT_ENDPOINT = globalOpts.endpoint;\n }\n if (globalOpts.nonInteractive || process.env.CI === 'true' || !process.stdin.isTTY) {\n process.env.MUTAGENT_NON_INTERACTIVE = 'true';\n }\n});\n\n// Add commands — reduced active surface (#1184)\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\nprogram.addCommand(createHooksCommand()); // Hook handlers (Claude Code telemetry)\nprogram.addCommand(createInstallCommand()); // Login-gated meta-installer (helix/diagnostics/evaluator)\nprogram.addCommand(createHelixCommand()); // Helix sessions in a cloud sandbox\nprogram.addCommand(createFeedbackCommand()); // Product feedback\n// Signpost only — trace is implemented in the separate `mutagent-cli` binary.\n// Registered so `mutagent trace` explains where it lives instead of failing\n// with Commander's bare \"unknown command\" (issue #1558, D11).\nprogram.addCommand(createTraceCommand());\n\n// Parse arguments\nprogram.parse();\n",
11
+ "#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createAuthCommand } from '../commands/auth.js';\nimport { createLoginCommand } from '../commands/login.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers/index.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { createHooksCommand } from '../commands/hooks/index.js';\nimport { createFeedbackCommand } from '../commands/feedback.js';\nimport { createInstallCommand } from '../commands/install/index.js';\nimport { createTraceCommand } from '../commands/trace.js';\nimport { createHelixCommand } from '../commands/helix/index.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\nimport { setCliVersion, getCompatMetadata } from '../lib/output.js';\nimport { renderBanner } from '../lib/brand.js';\nimport { isGlobalVersionFlag } from '../lib/global-version-flag.js';\n\n// NOTE (#1184 reduced surface): the active command surface was reduced —\n// several legacy command groups were retired. `agents` is deferred (source\n// kept dormant in ../commands/agents/, intentionally NOT registered).\n// Claude Code session telemetry is handled by `hooks` via its own\n// batch-upload endpoint (unrelated to any retired read/query surface).\n//\n// `helix` is now registered: it drives a Helix session in a REMOTE cloud\n// sandbox (spawn / attach / run / rm). That is a different operation from\n// `install helix`, which installs the Helix tool on THIS machine — both stay,\n// and both say so in their help text.\n\n/**\n * CLI Context Interface\n * Passed to all subcommands for shared state\n */\nexport interface CliContext {\n /** Output results as JSON */\n json: boolean;\n /** MutagenT API key */\n apiKey?: string;\n /** MutagenT server endpoint */\n endpoint?: string;\n /** Enable verbose logging */\n verbose: boolean;\n}\n\n// Read version: compile-time define > package.json > hardcoded fallback\nlet cliVersion = '0.1.1';\nif (process.env.CLI_VERSION) {\n cliVersion = process.env.CLI_VERSION;\n} else {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n cliVersion = pkg.version ?? cliVersion;\n } catch {\n // Fallback to hardcoded version\n }\n}\n\n// Register cliVersion for _compat metadata injection (Scope D)\nsetCliVersion(cliVersion);\n\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`Mutagent CLI - command-line client for the Mutagent platform\n\n Documentation: https://docs.mutagent.io/cli\n Dashboard: https://app.mutagent.io`)\n // `-v, --version` is deliberately NOT declared as a Commander option.\n //\n // Declaring it here made the flag GLOBAL, and a global boolean `--version`\n // SHADOWS `mutagent install <pkg> --version <v>`: Commander resolved the flag\n // against the inherited parent definition, which takes no value, so the value\n // was silently dropped and the install fell back to \"latest\". Measured: with\n // the option declared the broker was asked for \"latest\" even when a version was\n // pinned; with it removed the pin arrives intact. A version could therefore\n // never be pinned or rolled back — the one lever you want when a fresh release\n // misbehaves.\n //\n // The global form is handled BEFORE `program.parse()` by the position-aware\n // raw-argv check below (see lib/global-version-flag.ts), so `mutagent --version`\n // and `mutagent -v` never reach Commander at all and lose nothing. The flag is\n // documented in the help text instead of by an option that only shadows.\n .option('--json', 'Output results as JSON (for AI agents)')\n .option('--api-key <key>', 'Mutagent API key')\n .option('--endpoint <url>', 'Mutagent server endpoint')\n .option('--non-interactive', 'Disable interactive prompts (for CI/AI agents)')\n .configureHelp({\n sortSubcommands: true,\n showGlobalOptions: true,\n });\n\n// Brand banner — the gradient MUTAGENT wordmark, first thing on screen.\n// renderBanner() returns '' unless stdout is an interactive TTY, so piped /\n// --json / CI output stays byte-clean for coding agents.\nprogram.addHelpText('beforeAll', () => renderBanner());\n\n// Central help hub — self-contained navigation for CI/CD, coding agents, and humans\nprogram.addHelpText('after', `\n${chalk.bold.cyan('WORKFLOWS:')}\n ${chalk.bold('Setup')} mutagent login → mutagent init\n ${chalk.bold('Lifecycle Tools')} mutagent install helix ${chalk.dim('(login-gated)')}\n ${chalk.bold('Feedback')} mutagent feedback send \"<what happened>\" --category <cli|helix|stage:<x>> ${chalk.dim('[--session <id>] [--attach-transcript]')}\n\n${chalk.dim('For CLI usage guidance for AI agents, see the Skill at')}\n${chalk.cyan('.claude/skills/mutagent-cli/SKILL.md')}\n\n${chalk.yellow('Global flags:')}\n -v, --version ${chalk.dim('Print the CLI version')} ${chalk.dim('(before a subcommand; after one it is the subcommand\\'s)')}\n --json --api-key <k> --endpoint <url> --non-interactive\n\n${chalk.yellow('Non-Interactive Mode (CI/CD & Coding Agents):')}\n export MUTAGENT_API_KEY=mt_... ${chalk.dim('or')} --api-key mt_...\n --json ${chalk.dim('for structured output')} --non-interactive ${chalk.dim('to disable prompts')}\n\n${chalk.yellow('Command Navigation:')}\n mutagent login ${chalk.dim('Login (browser OAuth — recommended)')}\n mutagent auth status ${chalk.dim('Check auth + workspace')}\n mutagent init ${chalk.dim('Initialize project (.mutagentrc.json)')}\n mutagent workspaces list --json ${chalk.dim('List workspaces (verify ID)')}\n mutagent config set workspace <id> ${chalk.dim('Set active workspace')}\n mutagent usage --json ${chalk.dim('Show account usage + provider status')}\n\n mutagent providers list --json ${chalk.dim('List configured BYOK providers')}\n mutagent providers list --models ${chalk.dim('See available models per provider')}\n\n mutagent helix run \"<task>\" --prompt \"<who>\" ${chalk.dim('One Helix agent turn in a cloud sandbox')}\n mutagent helix ls --json ${chalk.dim('List running sandboxes')}\n mutagent helix spawn --image <ref> ${chalk.dim('Persistent sandbox you attach to')}\n mutagent helix rm <id> --force ${chalk.dim('Destroy a sandbox (the only thing that does)')}\n\n mutagent install helix ${chalk.dim('Install the ADL lifecycle conductor locally (login-gated)')}\n mutagent install helix --version 1.2.3 ${chalk.dim('Pin a version')}\n mutagent install --help ${chalk.dim('helix')}\n\n mutagent hooks --help ${chalk.dim('Hook setup for Claude Code session telemetry upload')}\n\n${chalk.bold.red('Report Issues:')}\n Hit a bug? Run: ${chalk.cyan('mutagent feedback send \"describe what went wrong\" --category cli')}\n Lifecycle-stage feedback: ${chalk.cyan('mutagent feedback send \"eval gate unclear\" --category stage:evaluate')}\n Link to a session: ${chalk.cyan('mutagent feedback send \"...\" --session <session-id>')}\n Attach your coding-agent session transcript: ${chalk.cyan('mutagent feedback send \"...\" --attach-transcript')}\n ${chalk.dim('--category accepts: cli | helix | stage:<spec|build|evaluate|diagnose|optimize>')}\n\n${chalk.yellow('Directive System:')}\n Every --json response may include:\n ${chalk.bold('_directive.display')} Type tag — 'status_card' for card-kind directives (drives test/docs guards)\n ${chalk.bold('_directive.renderedCard')} Pre-formatted card ${chalk.red('(MUST echo verbatim in chat whenever this field exists — see SKILL.md Verbatim Card Display Protocol)')}\n ${chalk.bold('_directive.instruction')} Next step for the agent (self-sufficient, no Skill required)\n ${chalk.bold('_directive.next')} Array of suggested follow-up commands\n ${chalk.bold('_links')} Dashboard/API URLs (format as markdown links)\n ${chalk.bold('_compat')} Compat metadata: cliVersion, skillVersion, skillMinCliVersion\n\n${chalk.yellow('AI Agent Rules (MANDATORY for coding agents):')}\n 1. Login (two paths):\n - CI / fully automated: export MUTAGENT_API_KEY=mt_... then mutagent login --json\n - Helping a user onboard: mutagent login --browser --json\n (CLI prints an auth URL — surface it to the user verbatim, then the CLI\n polls for up to 5 minutes while the user authorizes in their browser.\n This IS agent-compatible. --non-interactive is NOT needed with --browser.)\n 2. EVERY command MUST include --json (no exceptions)\n 3. Run <command> --help BEFORE first use of any command\n 4. Parse _directive.renderedCard and copy it into your CHAT RESPONSE verbatim\n ${chalk.red('HARD STOP')}: do NOT run further commands until the card is rendered in chat\n 5. After mutagent init, verify workspace: mutagent workspaces list --json\n 6. ALL user interaction via AskUserQuestion — CLI is non-interactive\n${!hasCredentials() ? '\\n' + chalk.yellow(' Warning: Not authenticated. Run: mutagent login') + '\\n' : ''}${!hasRcConfig() ? '\\n' + chalk.green(' Get started: mutagent init') + '\\n' : ''}`);\n\n// Handle --version early (before parse) since it's a global option, not a subcommand.\n// Commander's preAction hook only fires with subcommands — a raw argv check is needed.\n//\n// POSITION IS LOAD-BEARING, and this used to be `rawArgs.includes('--version')`,\n// which matched the flag anywhere: `mutagent install helix --version 0.1.0-alpha.20`\n// printed the CLI's own version, exited 0, and installed nothing — so a package\n// version could not be pinned and an install could not be rolled back. The flag is\n// the program's only until a subcommand is named; after that it is the\n// subcommand's, and must reach Commander untouched. See lib/global-version-flag.ts.\nconst rawArgs = process.argv.slice(2);\nif (isGlobalVersionFlag(rawArgs)) {\n if (rawArgs.includes('--json')) {\n // Scope D: include _compat metadata so the Skill can validate compatibility\n console.log(JSON.stringify({\n version: cliVersion,\n _compat: getCompatMetadata(cliVersion),\n }));\n } else {\n console.log(cliVersion);\n }\n process.exit(0);\n}\n\n// Propagate global options to env vars before subcommands run\n// This ensures --api-key, --endpoint, and --non-interactive flags are picked up\nprogram.hook('preAction', (thisCommand) => {\n const globalOpts: { apiKey?: string; endpoint?: string; nonInteractive?: boolean } = thisCommand.optsWithGlobals();\n if (globalOpts.apiKey && !process.env.MUTAGENT_API_KEY) {\n process.env.MUTAGENT_API_KEY = globalOpts.apiKey;\n }\n if (globalOpts.endpoint && !process.env.MUTAGENT_ENDPOINT) {\n process.env.MUTAGENT_ENDPOINT = globalOpts.endpoint;\n }\n if (globalOpts.nonInteractive || process.env.CI === 'true' || !process.stdin.isTTY) {\n process.env.MUTAGENT_NON_INTERACTIVE = 'true';\n }\n});\n\n// Add commands — reduced active surface (#1184)\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\nprogram.addCommand(createHooksCommand()); // Hook handlers (Claude Code telemetry)\nprogram.addCommand(createInstallCommand()); // Login-gated meta-installer (helix)\nprogram.addCommand(createHelixCommand()); // Helix sessions in a cloud sandbox\nprogram.addCommand(createFeedbackCommand()); // Product feedback\n// Signpost only — trace is implemented in the separate `mutagent-cli` binary.\n// Registered so `mutagent trace` explains where it lives instead of failing\n// with Commander's bare \"unknown command\" (issue #1558, D11).\nprogram.addCommand(createTraceCommand());\n\n// Parse arguments\nprogram.parse();\n",
12
12
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { clearCredentials, getApiKey, loadConfig } from '../lib/config.js';\nimport { validateApiKey } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { runPostOnboarding } from './onboarding.js';\nimport { performLoginAction, buildLoginJsonResponse } from '../lib/auth-flow.js';\n\ninterface LoginOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\nexport function createAuthCommand(): Command {\n const auth = new Command('auth')\n .description('Authenticate with Mutagent platform')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login\n ${chalk.dim('$')} mutagent auth login --browser\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth logout\n `);\n\n // Login command — back-compat alias for `mutagent login`\n // Both delegate to lib/auth-flow.ts performLoginAction.\n // See .memory/design-principles.md → \"Login Unification\".\n auth\n .command('login')\n .description('Authenticate and store API key')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login ${chalk.dim('# Interactive (choose method)')}\n ${chalk.dim('$')} mutagent auth login --browser ${chalk.dim('# Browser OAuth flow')}\n ${chalk.dim('$')} mutagent auth login --non-interactive ${chalk.dim('# Auto browser flow (AI agents)')}\n\n${chalk.dim('Note: this command is an alias for `mutagent login`.')}\n${chalk.dim('See `mutagent login --help` for full documentation.')}\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n try {\n const result = await performLoginAction({\n endpoint: options.endpoint,\n browser: options.browser,\n nonInteractive: options.nonInteractive,\n isJson,\n output,\n });\n\n if (isJson) {\n output.output(buildLoginJsonResponse(result));\n } else {\n output.success('Authenticated successfully');\n if (result.organization?.name) output.info(`Organization: ${result.organization.name}`);\n if (result.workspace?.name) output.info(`Workspace: ${result.workspace.name}`);\n output.info(`Endpoint: ${result.endpoint}`);\n output.info('Next: mutagent workspaces list --json');\n }\n\n // Post-onboarding wizard: only on first interactive login\n if (result.wasFirstLogin && process.stdin.isTTY && !isJson) {\n await runPostOnboarding();\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n process.exit(error.exitCode);\n }\n throw error;\n }\n });\n\n\n // Status command\n auth\n .command('status')\n .description('Check authentication status')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth status --json\n `)\n .action(async () => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const apiKey = getApiKey();\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n\n if (!apiKey) {\n if (isJson) {\n output.output({ authenticated: false, message: 'Not authenticated' });\n } else {\n output.error('Not authenticated');\n output.info('Run: mutagent auth login');\n }\n process.exit(0);\n }\n\n // Validate the key\n const isValid = await validateApiKey(apiKey, endpoint);\n\n // Check onboarding state\n const cwd = process.cwd();\n const hasOnboarding = existsSync(join(cwd, '.mutagentrc.json'));\n\n if (isJson) {\n const statusResult: Record<string, unknown> = {\n authenticated: isValid,\n endpoint,\n keyPrefix: `${apiKey.slice(0, 8)}...`,\n defaultWorkspace: config.defaultWorkspace,\n defaultOrganization: config.defaultOrganization,\n onboarding: hasOnboarding,\n };\n if (!isValid) {\n statusResult.message = 'Authentication invalid — run `mutagent auth login --browser`';\n statusResult.remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'export MUTAGENT_API_KEY=<key>',\n };\n }\n output.output(statusResult);\n } else {\n if (isValid) {\n output.success('Authentication: Authenticated');\n output.info(`Endpoint: ${endpoint}`);\n output.info(`Key: ${apiKey.slice(0, 8)}...`);\n if (config.defaultWorkspace) {\n output.info(`Workspace: ${config.defaultWorkspace}`);\n }\n if (config.defaultOrganization) {\n output.info(`Organization: ${config.defaultOrganization}`);\n }\n } else {\n output.error('Authentication: Invalid — run `mutagent auth login --browser`');\n console.error('');\n console.error('Authentication required. Options:');\n console.error(' Interactive: mutagent auth login --browser');\n console.error(' Non-interactive: export MUTAGENT_API_KEY=<your-key>');\n console.error(' CI/CD: export MUTAGENT_API_KEY=<key>');\n }\n\n // Onboarding status\n if (hasOnboarding) {\n output.success('Onboarding: Complete (.mutagentrc.json found)');\n } else {\n output.warn('Onboarding: Not initialized (run `mutagent init`)');\n }\n }\n\n if (!isValid) {\n process.exit(1);\n }\n });\n\n // Logout command\n auth\n .command('logout')\n .description('Clear stored credentials')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth logout\n `)\n .action(() => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n clearCredentials();\n output.success('Logged out successfully');\n });\n\n return auth;\n}\n",
13
13
  "import chalk from 'chalk';\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport type { Command } from 'commander';\nimport type { OutputFormat } from '../types/index.js';\n\n// ---------------------------------------------------------------------------\n// Compat metadata (Scope D)\n// ---------------------------------------------------------------------------\n\ninterface CompatMetadata {\n cliVersion: string;\n skillVersion: string;\n skillMinCliVersion: string;\n}\n\nlet _compatCache: CompatMetadata | null = null;\nlet _globalCliVersion = '0.0.0';\n\n/**\n * Set the global CLI version for compat metadata injection.\n * Called once from cli.ts after the version is resolved.\n */\nexport function setCliVersion(version: string): void {\n _globalCliVersion = version;\n _compatCache = null; // reset cache when version changes\n}\n\n/**\n * Build the _compat metadata block included in all --json output.\n * Reads SKILL.md frontmatter for metadata.skill_version and metadata.skill_min_cli_version.\n * Results are cached after the first call (process-lifetime cache).\n *\n * Per D4 (locked): warn-but-not-block when cliVersion < skillMinCliVersion.\n * The Skill compares these values and emits a prominent warn but continues.\n */\nexport function getCompatMetadata(cliVersion: string = _globalCliVersion): CompatMetadata {\n if (_compatCache !== null) return _compatCache;\n\n let skillVersion = 'unknown';\n let skillMinCliVersion = 'unknown';\n\n try {\n // Look for installed skill first (runtime path), then source path\n const candidatePaths = [\n join(process.cwd(), '.claude', 'skills', 'mutagent-cli', 'SKILL.md'),\n join(process.cwd(), 'mutagent-cli', '.claude', 'skills', 'mutagent-cli', 'SKILL.md'),\n ];\n for (const p of candidatePaths) {\n if (existsSync(p)) {\n const content = readFileSync(p, 'utf-8');\n // New spec shape: keys are indented under `metadata:` block, values are quoted strings.\n // Regex strips optional surrounding double-quotes from the captured value.\n const verMatch = /^\\s+skill_version:\\s+\"?([^\"\\n]+)\"?\\s*$/m.exec(content);\n const minMatch = /^\\s+skill_min_cli_version:\\s+\"?([^\"\\n]+)\"?\\s*$/m.exec(content);\n // Hard-error guard: if a `metadata:` block exists but neither key is found, throw so\n // the bug surfaces in CI rather than silently returning \"unknown\".\n if (/^metadata:/m.test(content) && !verMatch && !minMatch) {\n throw new Error(\n 'Bundled SKILL.md is missing metadata.skill_version / skill_min_cli_version' +\n ' — re-run `bun run sync-skill` to regenerate.'\n );\n }\n if (verMatch?.[1]) skillVersion = verMatch[1].trim();\n if (minMatch?.[1]) skillMinCliVersion = minMatch[1].trim();\n break;\n }\n }\n } catch (err) {\n // Pre-existing tolerance: SKILL.md may not exist in either candidate path (e.g. invoked\n // outside a project dir). That's OK — fall back to \"unknown\".\n // BUT: a `metadata:` block exists with neither expected key means sync-skill is broken.\n // Per plan D5 — fail loud so CI catches it, even if it crashes one CLI invocation.\n if (err instanceof Error && err.message.startsWith('Bundled SKILL.md is missing')) {\n throw err;\n }\n }\n\n _compatCache = { cliVersion, skillVersion, skillMinCliVersion };\n return _compatCache;\n}\n\n/**\n * Safely extract the --json flag from Commander options chain.\n * Handles the `any` type from Commander's opts() method.\n */\nexport function getJsonFlag(command: Command | undefined): boolean {\n if (!command) return false;\n // Navigate up the parent chain to find the root command options\n \n const parentOpts = command.parent ? command.parent.opts() : null;\n \n const ownOpts = command.opts();\n \n return Boolean(parentOpts?.json ?? ownOpts.json);\n}\n\nexport class OutputFormatter {\n constructor(private format: OutputFormat) {}\n\n output(data: unknown): void {\n if (this.format === 'json') {\n // Scope D: inject _compat into all directive-carrying JSON output\n let enriched = data;\n if (\n _globalCliVersion !== '0.0.0' &&\n data !== null &&\n typeof data === 'object' &&\n !Array.isArray(data) &&\n '_directive' in (data as Record<string, unknown>)\n ) {\n enriched = {\n ...(data as Record<string, unknown>),\n _compat: getCompatMetadata(_globalCliVersion),\n };\n }\n console.log(JSON.stringify(enriched, null, 2));\n } else {\n this.formatTable(data);\n }\n }\n\n private formatTable(data: unknown): void {\n if (Array.isArray(data)) {\n this.formatArray(data);\n } else if (data && typeof data === 'object') {\n this.formatObject(data as Record<string, unknown>);\n } else {\n console.log(data);\n }\n }\n\n private formatArray(data: unknown[]): void {\n if (data.length === 0) {\n console.log(chalk.gray('No results'));\n return;\n }\n\n // Get columns from first item\n const firstItem = data[0];\n if (!firstItem || typeof firstItem !== 'object') {\n data.forEach(item => { console.log(` ${String(item)}`); });\n return;\n }\n\n const keys = Object.keys(firstItem);\n \n // Helper to convert any value to display string\n const toDisplayString = (val: unknown): string => {\n if (val === null || val === undefined) return '';\n if (typeof val === 'object') return JSON.stringify(val);\n if (typeof val === 'string') return val;\n if (typeof val === 'number' || typeof val === 'boolean' || typeof val === 'bigint') {\n return val.toString();\n }\n return JSON.stringify(val);\n };\n\n // Calculate column widths\n const widths: Record<string, number> = {};\n keys.forEach(key => {\n widths[key] = Math.max(\n key.length,\n ...data.map(item => toDisplayString((item as Record<string, unknown>)[key]).length)\n );\n });\n\n // Print header\n const header = keys.map(key => chalk.bold(key.toUpperCase().padEnd(widths[key] ?? 10))).join(' ');\n console.log(header);\n console.log(keys.map(key => '-'.repeat(widths[key] ?? 10)).join(' '));\n\n // Print rows\n data.forEach(item => {\n const row = keys.map(key => {\n const value = toDisplayString((item as Record<string, unknown>)[key]);\n const width = widths[key] ?? 10;\n return value.padEnd(width).slice(0, width);\n }).join(' ');\n console.log(row);\n });\n\n console.log(chalk.gray(`\\n${String(data.length)} result(s)`));\n }\n\n private formatObject(data: Record<string, unknown>): void {\n const maxKeyLength = Math.max(...Object.keys(data).map(k => k.length));\n\n Object.entries(data).forEach(([key, value]) => {\n const formattedKey = chalk.bold(key.padEnd(maxKeyLength));\n let formattedValue: string;\n\n if (value === null || value === undefined) {\n formattedValue = '';\n } else if (typeof value === 'object') {\n formattedValue = JSON.stringify(value, null, 2);\n } else if (typeof value === 'string') {\n formattedValue = value;\n } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n formattedValue = value.toString();\n } else {\n formattedValue = JSON.stringify(value);\n }\n\n console.log(`${formattedKey} ${formattedValue}`);\n });\n }\n\n success(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ success: true, message }, null, 2));\n } else {\n console.log(chalk.green(`✓ ${message}`));\n }\n }\n\n error(message: string, code?: string, suggestedAction?: string): void {\n if (this.format === 'json') {\n const result: Record<string, unknown> = { success: false, error: message };\n if (code) result.code = code;\n if (suggestedAction) result.suggestedAction = suggestedAction;\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(chalk.red(`✗ ${message}`));\n }\n }\n\n info(message: string): void {\n if (this.format !== 'json') {\n console.log(chalk.blue(`ℹ ${message}`));\n }\n }\n\n warn(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ warning: message }, null, 2));\n } else {\n console.log(chalk.yellow(`⚠ ${message}`));\n }\n }\n}\n\ninterface Spinner {\n start: () => Promise<unknown> | undefined;\n stop?: () => void;\n succeed?: () => void;\n fail?: () => void;\n}\n\nexport function createSpinner(text: string, isJson: boolean): Spinner {\n if (isJson) {\n // No-op spinner for JSON mode - returns undefined to match interface\n const noop = (): undefined => undefined;\n return {\n start: noop,\n stop: noop,\n succeed: noop,\n fail: noop,\n };\n }\n\n // Dynamic import for ora (ESM)\n const start = async (): Promise<unknown> => {\n const { default: ora } = await import('ora');\n return ora(text).start();\n };\n\n return { start };\n}\n",
14
14
  "import chalk from 'chalk';\nimport { scaffoldRcConfig, type RcScaffoldResult } from '../lib/rc-config.js';\nimport { installPackage, type InstallOptions, type InstallResult } from '../lib/installer.js';\nimport { MutagentError } from '../lib/errors.js';\n\n/**\n * Post-onboarding flow presented after a successful first interactive login.\n *\n * Streamlined release: on first login we ALWAYS auto-create `.mutagentrc.json`\n * (no prompt — it is always needed), then present a two-option menu:\n * 1) Install Helix — runs the login-brokered helix install inline\n * 2) Exit — a short hint on how to explore the CLI\n *\n * The CLI skill is NOT installed here and is not mentioned — `mutagent skills\n * install` still exists but is no longer pushed during onboarding.\n *\n * IMPORTANT: This function is APPENDED to the auth login success handler.\n * It MUST NOT modify any auth state or credentials.\n */\n\nexport type OnboardingAction = 'helix' | 'exit';\n\nexport interface OnboardingChoice {\n name: string;\n value: OnboardingAction;\n}\n\n/** The two-option menu, numbered `1)` / `2)`. Option 1 is the default highlight. */\nexport const ONBOARDING_CHOICES: OnboardingChoice[] = [\n { name: '1) Install Helix — the Agent Development Life Cycle Orchestrator (ADLC)', value: 'helix' },\n { name: '2) Exit — explore the CLI on your own', value: 'exit' },\n];\n\n/** Injectable seams so the flow is unit-testable without prompts, fs, or network. */\nexport interface OnboardingDeps {\n /** Working directory for config creation (default: process.cwd()). */\n cwd?: string;\n /** Config-creation seam (default: real scaffoldRcConfig — fs + loadConfig). */\n scaffoldRcConfig?: (cwd: string) => RcScaffoldResult;\n /** Menu-selection seam (default: interactive inquirer list). */\n selectAction?: (choices: OnboardingChoice[]) => Promise<OnboardingAction>;\n /** Helix install seam (default: real installPackage — login-brokered R2 flow). */\n installPackage?: (\n pkg: string,\n opts: InstallOptions,\n ) => Promise<InstallResult>;\n}\n\n/** Default menu prompt — inquirer list with option 1 highlighted by default. */\nasync function defaultSelectAction(choices: OnboardingChoice[]): Promise<OnboardingAction> {\n const inquirer = (await import('inquirer')).default;\n const { action } = await inquirer.prompt<{ action: OnboardingAction }>([{\n type: 'list',\n name: 'action',\n message: 'What would you like to do next?',\n choices,\n default: 'helix',\n }]);\n return action;\n}\n\nexport async function runPostOnboarding(deps: OnboardingDeps = {}): Promise<void> {\n const cwd = deps.cwd ?? process.cwd();\n const scaffold = deps.scaffoldRcConfig ?? scaffoldRcConfig;\n const select = deps.selectAction ?? defaultSelectAction;\n const install = deps.installPackage ?? installPackage;\n\n console.log('');\n console.log(chalk.bold.cyan(' You are authenticated.'));\n console.log('');\n\n // 1. Always auto-create .mutagentrc.json (no prompt). Never clobber.\n const rc = scaffold(cwd);\n if (rc.alreadyPresent) {\n console.log(` ${chalk.green('✓')} .mutagentrc.json already present`);\n } else {\n console.log(` ${chalk.green('✓')} Created .mutagentrc.json`);\n }\n console.log('');\n\n // 2. Two-option menu.\n const action = await select(ONBOARDING_CHOICES);\n console.log('');\n\n if (action === 'helix') {\n // 3. Install Helix inline via the login-brokered installPackage path.\n console.log(chalk.bold(' Installing Helix…'));\n console.log(chalk.dim(' Downloading + verifying the plugin, then writing .claude/ + .codex/'));\n console.log('');\n try {\n await install('helix', { harness: 'claude-code', global: false });\n console.log('');\n console.log(` ${chalk.green('✓')} Helix ready — run ${chalk.cyan('*help')} inside your agent`);\n console.log('');\n } catch (error) {\n // Surface the installer's error cleanly and exit non-zero — never crash.\n console.log('');\n if (error instanceof MutagentError) {\n console.error(` ${chalk.red('✗')} Helix install failed: ${error.message}`);\n if (error.suggestion) console.error(` ${chalk.yellow('→')} ${error.suggestion}`);\n } else {\n const message = error instanceof Error ? error.message : String(error);\n console.error(` ${chalk.red('✗')} Helix install failed: ${message}`);\n }\n console.error('');\n process.exitCode = 1;\n }\n } else {\n // 4. Exit — a short hint.\n console.log(chalk.dim(` Run ${chalk.cyan('mutagent --help')} to explore the CLI.`));\n console.log(chalk.dim(' Hit a snag? Send feedback: mutagent feedback send \"what happened\"'));\n console.log('');\n }\n}\n",
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
- "import { spawn } from 'child_process';\nimport { mkdirSync, readdirSync, type Dirent } from 'fs';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport { MutagentError } from './errors.js';\nimport { hasCredentials } from './config.js';\nimport {\n installHelix,\n defaultLocateInitBin,\n defaultRunInit,\n type HelixDeps,\n} 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', 'diagnostics', 'evaluator'] as const;\nexport type ValidPackage = (typeof VALID_PACKAGES)[number];\n\n/** Packages resolved through the public npm registry (helix is self-hosted). */\nexport type NpmPackage = Exclude<ValidPackage, 'helix'>;\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 diagnostics: 'latest',\n evaluator: 'latest',\n};\n\n/** Public npm package names for the npm-installable packages. */\nexport const NPM_PACKAGES: Record<NpmPackage, string> = {\n diagnostics: '@mutagent/diagnostics',\n evaluator: '@mutagent/evaluator',\n};\n\n/**\n * The binary each npm package exposes for its own harness-init step.\n *\n * The CLI installs the package into a versioned private prefix and then runs this\n * binary's `init` against the user's project — the same shape helix uses. These\n * names are the single place to correct if a package renames its bin, and are\n * still surfaced as `nextStep` when init does not succeed.\n */\nexport const INIT_BINS: Record<NpmPackage, string> = {\n diagnostics: 'mutagent-diagnostics',\n evaluator: 'mutagent-evaluator',\n};\n\n// =============================================================================\n// Command runner (injectable for tests)\n// =============================================================================\n\nexport interface RunnerResult {\n code: number;\n stdout: string;\n stderr: string;\n}\n\n/**\n * Runs an external command. Injectable so tests can assert the exact\n * argv the installer emits without shelling out to a real npm.\n */\nexport type CommandRunner = (cmd: string, args: string[]) => Promise<RunnerResult>;\n\n/**\n * Default runner backed by child_process.spawn. Captures stdout/stderr and\n * resolves with the exit code. A spawn-level failure (e.g. npm not on PATH)\n * surfaces as an actionable MutagentError rather than an unhandled rejection.\n */\nexport const defaultRunner: CommandRunner = (cmd, args) =>\n new Promise<RunnerResult>((resolve, reject) => {\n const child = spawn(cmd, args, { stdio: ['ignore', 'pipe', 'pipe'] });\n let stdout = '';\n let stderr = '';\n child.stdout.on('data', (chunk: Buffer) => { stdout += chunk.toString('utf-8'); });\n child.stderr.on('data', (chunk: Buffer) => { stderr += chunk.toString('utf-8'); });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run ${cmd}: ${err.message}`,\n `Ensure \"${cmd}\" is installed and available on your PATH.`,\n ),\n );\n });\n child.on('close', (code) => {\n resolve({ code: code ?? 1, stdout, stderr });\n });\n });\n\n// =============================================================================\n// Install pipeline\n// =============================================================================\n\nexport interface InstallDeps {\n /** Runner override — tests inject a mock to capture argv. */\n runner?: CommandRunner;\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 /** Base install dir override (default ~/.mutagent/<pkg>). Tests point this at a tmpdir. */\n homeDir?: string;\n /** Init-bin resolution seam — defaults to the shared helper in installer-helix. */\n locateInitBin?: (pkgDir: string) => Promise<string>;\n /** Init-run seam — defaults to the shared helper in installer-helix. */\n runInit?: (binPath: string, args: string[], cwd: string) => Promise<number>;\n /**\n * Observation seam for \"did the skill actually land\". Injectable for the same\n * reason every other side effect here is: the claim must be OBSERVED, and a test\n * must be able to drive both outcomes without touching a real project.\n */\n countProjectFiles?: (root: string) => number;\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 * Where the package itself was resolved to — `~/.mutagent/<pkg>/<version>`.\n * Distinct from `projectPath`: that is where the SKILL landed, this is where\n * the PACKAGE lives. Both are knowable because the CLI chooses the directory.\n */\n installRoot?: 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 /** The exact command the user must run next, when the install is not finished. */\n nextStep?: string;\n /** The exact external command executed (npm path only). */\n command?: string;\n}\n\n/**\n * Count files the install could plausibly have written, so `skillInstalled` states an\n * OBSERVED fact. Scoped to the harness dirs a skill init writes into; bounded depth so\n * a large repo does not make the install slow.\n */\nfunction countProjectFiles(root: string): number {\n const roots = ['.claude', '.codex', '.agents'];\n let n = 0;\n const walk = (dir: string, depth: number): void => {\n if (depth > 6) return;\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n if (e.isDirectory()) walk(join(dir, e.name), depth + 1);\n else n++;\n }\n };\n for (const r of roots) walk(join(root, r), 0);\n return n;\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 (per issue #1191):\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 * 6. diagnostics/evaluator → real `npm install -g @mutagent/<pkg>@<version>`,\n * reported honestly: the package lands, the SKILL does not.\n *\n * ON REPORTING (issue #1558, D7): step 6 installs the npm package and stops.\n * The package's own `init` — which is what actually installs the harness skill —\n * is deliberately NOT invoked here. Auto-running a third-party package's init as\n * a side effect of `install` would write to the user's project without them\n * asking. So the result states plainly what happened (`skillInstalled: false`)\n * and hands back the exact command to finish the job, instead of returning a\n * bare success that describes an install that did not occur.\n *\n * This function is the unit-testable core: the command action calls it, and\n * tests exercise it directly with a mock runner + mock isAuthed.\n */\nexport async function installPackage(\n pkg: string,\n opts: InstallOptions,\n deps: InstallDeps = {},\n): Promise<InstallResult> {\n // 1. Auth gate — first, before any 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 if (pkg === '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\n // 6. npm packages → VERSIONED PRIVATE PREFIX + init, mirroring the helix path.\n //\n // This deliberately does NOT use `npm install -g` (#1558). The global install was\n // the root of four separate defects, and removing it closes all four:\n //\n // · the skill is PROJECT-scoped, so installing the package globally in order to\n // copy files into one project was the wrong shape to begin with;\n // · `-g` registers global bin names — with all three packages shipping the\n // bundled `mutagent-cli`, `npm i -g` of a second one failed EEXIST;\n // · `-g` broke `npx @mutagent/<pkg>` once a second bin key existed, because npm\n // cannot choose an executable when no bin matches the unscoped package name;\n // · the install could not report WHERE it landed without a second `npm root -g`,\n // so the response omitted the location entirely.\n //\n // Resolving into `~/.mutagent/<pkg>/<version>/` — exactly what installer-helix.ts\n // does — registers nothing globally and makes the location knowable because we\n // chose it. `init` is then run against the user's project the same way helix\n // already does, using the SAME shared helpers rather than a divergent copy.\n //\n // This supersedes the earlier \"install the package and stop\" reporting decision.\n // That decision existed because auto-running a third-party init as a side effect\n // of a GLOBAL install would write to a project the user had not named. With the\n // package resolved into a private prefix and init run explicitly against\n // `process.cwd()`, the project IS named — it is the directory the user ran the\n // command in, which is the same contract helix has always had.\n const npmPackage = NPM_PACKAGES[pkg];\n const installRoot = join(deps.homeDir ?? join(homedir(), '.mutagent', pkg), version);\n mkdirSync(installRoot, { recursive: true });\n\n const args = ['install', '--prefix', installRoot, '--no-save', `${npmPackage}@${version}`];\n const runner = deps.runner ?? defaultRunner;\n const result = await runner('npm', args);\n\n if (result.code !== 0) {\n const detail = result.stderr.trim();\n throw new MutagentError(\n 'INSTALL_FAILED',\n `npm failed to install ${npmPackage}@${version} (exit ${String(result.code)}).${detail ? ` ${detail.slice(0, 200)}` : ''}`,\n `Verify the package and version exist, and that ${installRoot} is writable.`,\n );\n }\n\n // Run the package's own init against the project. Reported honestly either way:\n // a non-zero init still returns success:true for the PACKAGE step, with\n // skillInstalled:false and the exact command to finish.\n // NOTE: `npm install --prefix <dir>` places packages in <dir>/node_modules.\n // The <dir>/lib/node_modules layout is GLOBAL-install-only (`-g --prefix`), which\n // is what this change removed — copying that path was a real defect, caught by a\n // live install because every unit test stubs `locateInitBin`.\n const pkgDir = join(installRoot, 'node_modules', npmPackage);\n const initBin = await (deps.locateInitBin ?? defaultLocateInitBin)(pkgDir);\n\n // OBSERVE whether the skill landed — do not infer it from the exit code.\n //\n // init exits 0 when it has nothing to do (no platform markers in the project), so\n // `initCode === 0` reports \"skill installed\" for a run that installed nothing. Its\n // own output says \"agents NOT installed\" while exiting 0. Deriving the claim from\n // the exit code is exactly the D7 defect this PR exists to close — a proxy reported\n // as the property — so the claim is made from the filesystem instead.\n const countFiles = deps.countProjectFiles ?? countProjectFiles;\n const before = countFiles(projectPath);\n // --yes: init is spawned with stdin ignored, so its platform-selection prompt\n // can never be answered — without the flag this call hangs forever.\n const initCode = await (deps.runInit ?? defaultRunInit)(initBin, ['init', '--yes'], projectPath);\n const landed = countFiles(projectPath) > before;\n\n return finish(\n {\n package: pkg,\n version,\n harness: opts.harness,\n scope: 'project',\n projectPath,\n installRoot,\n skillInstalled: initCode === 0 && landed,\n ...(initCode === 0 && landed ? {} : { nextStep: `${INIT_BINS[pkg]} init` }),\n command: `npm ${args.join(' ')}`,\n },\n deps,\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",
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
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",
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, diagnostics/evaluator via npm).\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",
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",
22
22
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { performLoginAction, buildLoginJsonResponse } from '../lib/auth-flow.js';\nimport { runPostOnboarding } from './onboarding.js';\n\ninterface LoginOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\n/**\n * Top-level login command — THE CANONICAL user-facing entry point.\n *\n * Delegates to lib/auth-flow.ts performLoginAction(). `mutagent auth login`\n * is preserved as a back-compat alias and uses the same shared action.\n *\n * See: .memory/design-principles.md → \"Login Unification\"\n * .memory/key-learnings/login-unification.md\n */\nexport function createLoginCommand(): Command {\n const login = new Command('login')\n .description('Login to Mutagent (browser OAuth — signup, onboard, authorize CLI in one flow)')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent login ${chalk.dim('# Browser OAuth (recommended — handles signup + onboarding)')}\n ${chalk.dim('$')} mutagent login --browser ${chalk.dim('# Force browser flow (skip method prompt)')}\n ${chalk.dim('$')} mutagent login --non-interactive ${chalk.dim('# Auto-browser for AI agents and CI')}\n\n${chalk.yellow('Browser OAuth flow (recommended for end users):')}\n Opens app.mutagent.io in your browser. You will:\n 1. Sign in or sign up with your account\n 2. Complete onboarding (workspace, provider config)\n 3. Authorize this CLI session\n The CLI polls for completion and saves credentials when you authorize.\n\n${chalk.yellow('Automation / CI / AI Agents:')}\n Set MUTAGENT_API_KEY environment variable before running:\n ${chalk.dim('$')} export MUTAGENT_API_KEY=mt_...\n ${chalk.dim('$')} mutagent login --json\n When MUTAGENT_API_KEY is set, login skips the browser flow entirely and\n validates the key directly. This is the canonical CI / agent path.\n\nEnvironment Variables:\n MUTAGENT_API_KEY Pre-existing API key (skips interactive flow)\n MUTAGENT_ENDPOINT Custom API endpoint\n MUTAGENT_NON_INTERACTIVE=true Treat environment as non-interactive\n CI=true Automatically enables non-interactive mode\n\nVerify after login:\n ${chalk.dim('$')} mutagent auth status ${chalk.dim('# Show session, workspace, org')}\n ${chalk.dim('$')} mutagent workspaces list --json ${chalk.dim('# List available workspaces')}\n\n${chalk.dim('Note: `mutagent auth login` is a back-compat alias and behaves identically.')}\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(login);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const result = await performLoginAction({\n endpoint: options.endpoint,\n browser: options.browser,\n nonInteractive: options.nonInteractive,\n isJson,\n output,\n });\n\n if (isJson) {\n output.output(buildLoginJsonResponse(result));\n } else {\n output.success('Logged in successfully');\n if (result.organization?.name) output.info(`Organization: ${result.organization.name}`);\n if (result.workspace?.name) output.info(`Workspace: ${result.workspace.name}`);\n output.info(`Endpoint: ${result.endpoint}`);\n output.info('Next: mutagent workspaces list --json');\n }\n\n // Post-onboarding wizard: only on first interactive login\n if (result.wasFirstLogin && process.stdin.isTTY && !isJson) {\n await runPostOnboarding();\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n process.exit(error.exitCode);\n }\n throw error;\n }\n });\n\n return login;\n}\n",
@@ -29,9 +29,9 @@
29
29
  "/**\n * Provider Catalog — the single authoritative definition of the provider entries\n * this product offers, and of everything each entry needs to be configured.\n *\n * DC-2: the catalog is server-owned. The dashboard, the CLI and the documentation\n * derive their entry lists, their credential forms and their model offerings from\n * this module; none of them restates the catalog (KL-8).\n *\n * Implements:\n * - FR-CORE-004: the eleven catalog entries, gateways carrying their hosted families\n * - FR-CORE-006: per-entry credential field sets\n * - FR-CORE-007: AWS Bedrock takes a bearer API key only — so every entry has exactly one secret\n * - FR-CORE-008: per-entry model allow-list policy\n *\n * This module is data plus lookups. It declares what a field must satisfy; it does\n * not itself run validation — enforcement lives in the configuration validator.\n */\n\n// ============================================================================\n// Identifiers\n// ============================================================================\n\n/**\n * The catalog entries, in the order they are presented as tiles (FR-CORE-004).\n */\nexport const PROVIDER_CATALOG_IDS = [\n 'openai',\n 'anthropic',\n 'google',\n 'moonshot',\n 'glm',\n 'deepseek',\n 'xai',\n 'azure',\n 'vertex',\n 'bedrock',\n 'custom',\n] as const;\n\nexport type ProviderCatalogId = (typeof PROVIDER_CATALOG_IDS)[number];\n\n/**\n * A direct entry talks to the vendor that trained the model. A gateway entry\n * hosts one or more model families that belong to somebody else.\n */\nexport type ProviderKind = 'direct' | 'gateway';\n\n/**\n * The model families a gateway can host. Each maps to the direct entry whose\n * allow-list it derives from — see HOSTED_FAMILY_SOURCE_ENTRY.\n */\nexport type HostedFamily = 'openai' | 'anthropic' | 'gemini';\n\n/**\n * Which direct catalog entry owns each hosted family's model allow-list.\n * A gateway's derived policy resolves through this map, so a gateway can never\n * offer a model the direct entry does not allow (FR-CORE-008).\n */\nexport const HOSTED_FAMILY_SOURCE_ENTRY: Readonly<Record<HostedFamily, ProviderCatalogId>> = {\n openai: 'openai',\n anthropic: 'anthropic',\n gemini: 'google',\n};\n\n// ============================================================================\n// Credential field descriptors (FR-CORE-006)\n// ============================================================================\n\n/**\n * How the surface must treat the value on the way in.\n *\n * `secret` — write-only: masked on input, never echoed back, encrypted at rest.\n * `plain` — an ordinary configuration value, safe to display.\n * `model-allow-list` — the same wire shape as `plain` + `string-list` (a\n * comma/newline-separated string), but the surface renders it as\n * a togglable model list instead of free text when the catalog\n * can offer known candidates for the entry (see `knownModelIdsFor`).\n * Declared distinctly from `plain` so the form renderer's branch\n * is driven by catalog data rather than a field-name string match.\n */\nexport type CredentialInputTreatment = 'secret' | 'plain' | 'model-allow-list';\n\n/**\n * What a submitted value must satisfy. Declared here, enforced by the caller.\n *\n * On the `pattern` rule, `examples` and `counterExamples` are NOT documentation\n * garnish — they are the pattern's test fixtures, carried next to it so a test\n * can execute them (see catalog.test.ts, \"every pattern accepts its own\n * examples\"). This shape exists because the Vertex `region` pattern once\n * rejected 27 of 40 real Vertex locations INCLUDING the one named in its own\n * `hint` prose. Prose examples cannot be executed, so nothing caught it. Keep\n * concrete values here, and keep `hint` describing the SHAPE rather than\n * listing instances — a hint that names values is a hint that can drift.\n */\nexport type CredentialFieldValidation =\n | { readonly rule: 'non-empty-string'; readonly minLength: number }\n | { readonly rule: 'https-url' }\n | {\n readonly rule: 'pattern';\n readonly pattern: string;\n readonly hint: string;\n /** Values the pattern MUST accept. Asserted by the catalog tests. */\n readonly examples: readonly string[];\n /** Values the pattern MUST reject. Asserted by the catalog tests. */\n readonly counterExamples: readonly string[];\n }\n | { readonly rule: 'one-of'; readonly values: readonly string[] }\n | { readonly rule: 'string-list' }\n | { readonly rule: 'json-object' };\n\nexport interface CredentialFieldDescriptor {\n /** Wire name — the key the API, the CLI flag and the form control all use. */\n readonly name: string;\n /** Human-readable label for the form control and the documentation table. */\n readonly label: string;\n /** Whether a configuration is rejected without this field. */\n readonly required: boolean;\n readonly treatment: CredentialInputTreatment;\n readonly validation: CredentialFieldValidation;\n /** One sentence explaining what the operator should put here. */\n readonly description: string;\n}\n\n// ============================================================================\n// Model allow-list policy (FR-CORE-008)\n// ============================================================================\n\n/**\n * How a gateway addresses one hosted family's models on the wire.\n *\n * `plain` — the model's own identifier, unmodified.\n * `dated` — the identifier suffixed `@YYYYMMDD`.\n * `inference-profile`— a region-prefixed cross-region inference profile ID.\n * `deployment-name` — an operator-chosen deployment label, NOT a model ID.\n */\nexport type ModelAddressingScheme = 'plain' | 'dated' | 'inference-profile' | 'deployment-name';\n\n/**\n * One family's addressing under one gateway.\n *\n * `pattern`/`examples`/`counterExamples` mirror the credential `pattern` rule\n * on purpose: they make the scheme EXECUTABLE. The scheme name alone is prose,\n * and prose is what let a gateway claim `dated` for a family that is not dated.\n * The catalog tests run every example and counter-example against `pattern`.\n */\nexport interface FamilyAddressing {\n readonly scheme: ModelAddressingScheme;\n /** Regex an addressed identifier must satisfy under this scheme. */\n readonly pattern: string;\n /** Identifiers this scheme MUST accept. Asserted by the catalog tests. */\n readonly examples: readonly string[];\n /** Identifiers this scheme MUST reject. Asserted by the catalog tests. */\n readonly counterExamples: readonly string[];\n}\n\n/**\n * How an entry decides which models it offers.\n *\n * ── What a policy is evaluated AGAINST ──────────────────────────────────────\n *\n * A policy is an admission rule applied to the models the configured provider\n * actually publishes at request time. It is NOT a bundled roster to be served\n * as-is, and it is NOT a filter to be applied over a static in-repo list.\n *\n * This distinction is the whole point. `model-registry.ts` still ships a static\n * MODEL_REGISTRY whose entries have almost entirely aged out — of its 27 IDs,\n * roughly one survives these policies. Anything that serves the intersection of\n * that registry with these policies ships a near-empty model list while passing\n * its own tests. The registry is being retired, not filtered; do not reach for\n * it here or downstream.\n *\n * ── The modes ───────────────────────────────────────────────────────────────\n *\n * `explicit` — admission is by identifier, and the set is CLOSED. `models` is\n * the whole of it. There is no floor on this variant.\n * `floor` — admission is by version: whatever the vendor publishes, at or\n * above `floor`. `knownMembers` is an ADVISORY snapshot of what\n * satisfied the floor when this was written; it is not the\n * allow-list and must never be served as one. A model published\n * later that clears the floor is admitted without editing this\n * file.\n * `derived` — a gateway admits its hosted families' rosters, resolved through\n * HOSTED_FAMILY_SOURCE_ENTRY and re-addressed PER FAMILY. A gateway\n * never widens what its source entry allows.\n * `open` — whatever the configured endpoint publishes, unfiltered.\n *\n * ── Floor parse-and-compare contract ────────────────────────────────────────\n *\n * SCOPE: dotted-numeric floors ONLY. All three floor-mode entries today are\n * dotted numerics — OpenAI `5.5`, Gemini `3.1`, xAI `4.5`. A provider whose\n * versions are not dotted numerics CANNOT be floor-mode until a comparator for\n * its scheme is written. This contract does not generalise, and pretending it\n * does is how the wrong comparator gets applied to the wrong vendor.\n *\n * PARSE: `floor` matches /^\\d+\\.\\d+$/ — MAJOR.MINOR. To extract a candidate's\n * version, take the first dotted-numeric run in its identifier:\n * `gpt-5.6-sol` → `5.6`, `gemini-3.1-pro` → `3.1`, `grok-4.5` → `4.5`.\n * An identifier with no dotted-numeric run is NOT comparable and is refused,\n * not silently admitted.\n *\n * COMPARE: numerically, component by component — MAJOR first, then MINOR.\n * Admit when candidate >= floor. It MUST NOT be a string comparison: `'5.10'\n * < '5.9'` lexicographically but 5.10 > 5.9 numerically, so a string compare\n * silently drops a whole minor series the moment a vendor reaches double\n * digits.\n *\n * WHY ANTHROPIC IS NOT FLOOR-MODE: Anthropic encodes the decimal point as a\n * HYPHEN — `claude-opus-4-8` means 4.8 — which is indistinguishable from the\n * hyphen that separates name parts, so `4-8` cannot be parsed by the rule\n * above without a vendor-specific comparator. `claude-opus-5` has no numeric\n * pair at all. Anthropic is therefore `explicit`, and Bedrock/Vertex derive\n * from it rather than flooring it.\n *\n * NO EVALUATOR LIVES HERE. This contract is what T-2.1/T-3.5 must implement;\n * this module declares, it does not evaluate.\n *\n * ── Why these are separate variants ─────────────────────────────────────────\n *\n * `explicit` carried an OPTIONAL `floor` in an earlier revision, which made\n * `if (p.mode === 'explicit') return p.models` compile, pass an exhaustive\n * `never` check, and silently ignore the floor — \"the floor governs\" existed\n * only in this comment. Splitting the variants makes that unrepresentable:\n * `explicit` has no floor to ignore, and `floor` has no `models` to return.\n */\nexport type ModelAllowListPolicy = { readonly summary: string } & (\n | { readonly mode: 'explicit'; readonly models: readonly string[] }\n | { readonly mode: 'floor'; readonly floor: string; readonly knownMembers?: readonly string[] }\n | {\n readonly mode: 'derived';\n readonly from: readonly HostedFamily[];\n /**\n * Addressing is PER HOSTED FAMILY, never one value for the gateway.\n *\n * This was a scalar in an earlier revision, and Vertex carried\n * `'dated'` across BOTH of its families. Anthropic-on-Vertex is indeed\n * `@`-dated; Gemini-on-Vertex is not — so the scalar produced\n * `gemini-3.1-pro@<date>`, which 404s. That is the same defect class as\n * a single regex asserted over a set whose members disagree: one value\n * claimed over a heterogeneous set.\n *\n * Every family listed in `from` MUST have an entry here, and no entry\n * may exist for a family not in `from`. Both are asserted by the tests.\n */\n readonly addressing: Readonly<Partial<Record<HostedFamily, FamilyAddressing>>>;\n }\n | { readonly mode: 'open' }\n);\n\n// ============================================================================\n// Entry\n// ============================================================================\n\nexport interface ProviderCatalogEntry {\n readonly id: ProviderCatalogId;\n /** Tile label, as it appears in the dashboard and the documentation. */\n readonly label: string;\n readonly kind: ProviderKind;\n /**\n * Present on gateway entries only, and never empty there. Selecting a gateway\n * tile opens a sub-choice over these families before the credential form.\n */\n readonly hostedFamilies?: readonly HostedFamily[];\n readonly credentialFields: readonly CredentialFieldDescriptor[];\n readonly modelPolicy: ModelAllowListPolicy;\n readonly description: string;\n}\n\n// ============================================================================\n// Shared field descriptors\n// ============================================================================\n\nconst apiKeyField = (description: string): CredentialFieldDescriptor => ({\n name: 'apiKey',\n label: 'API key',\n required: true,\n treatment: 'secret',\n validation: { rule: 'non-empty-string', minLength: 8 },\n description,\n});\n\nconst baseUrlOverrideField: CredentialFieldDescriptor = {\n name: 'baseUrl',\n label: 'Base URL override',\n required: false,\n treatment: 'plain',\n validation: { rule: 'https-url' },\n description: 'Route requests through a proxy or a regional endpoint instead of the default one.',\n};\n\nconst modelAllowListField: CredentialFieldDescriptor = {\n name: 'modelAllowList',\n label: 'Model allow-list',\n required: false,\n treatment: 'model-allow-list',\n validation: { rule: 'string-list' },\n description:\n 'Narrow the models this configuration offers. Entries outside the provider policy are ignored.',\n};\n\n/** The credential set every direct first-party entry shares (FR-CORE-006, row 1). */\nconst directApiKeyFields = (keyDescription: string): readonly CredentialFieldDescriptor[] => [\n apiKeyField(keyDescription),\n baseUrlOverrideField,\n modelAllowListField,\n];\n\n/** Azure's credential set is identical for both hosted families (FR-CORE-006). */\nconst azureFields: readonly CredentialFieldDescriptor[] = [\n {\n name: 'resourceEndpoint',\n label: 'Resource endpoint',\n required: true,\n treatment: 'plain',\n validation: { rule: 'https-url' },\n description: 'The Azure resource endpoint, e.g. https://my-resource.openai.azure.com.',\n },\n apiKeyField('The key issued for the Azure resource.'),\n {\n name: 'deploymentName',\n label: 'Deployment name',\n required: true,\n treatment: 'plain',\n validation: { rule: 'non-empty-string', minLength: 1 },\n description: 'Azure addresses a model by the name given to its deployment, not by model id.',\n },\n {\n name: 'apiVersion',\n label: 'API version',\n required: false,\n treatment: 'plain',\n validation: {\n rule: 'pattern',\n pattern: '^\\\\d{4}-\\\\d{2}-\\\\d{2}(-preview)?$',\n hint: 'An ISO date, optionally suffixed -preview.',\n examples: ['2024-08-01-preview', '2023-06-01', '2025-01-01'],\n counterExamples: ['2024-8-1', '24-08-01', '2024-08-01-beta', 'latest'],\n },\n description: 'Pin the Azure API version. Defaults to the current stable version when omitted.',\n },\n];\n\n/** Google Vertex's credential set is identical for both hosted families (FR-CORE-006). */\nconst vertexFields: readonly CredentialFieldDescriptor[] = [\n {\n name: 'projectId',\n label: 'Project ID',\n required: true,\n treatment: 'plain',\n validation: {\n rule: 'pattern',\n pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',\n hint: 'A Google Cloud project ID: 6 to 30 lowercase characters, starting with a letter.',\n examples: ['my-project-123', 'abcdef', 'my-gcp-project'],\n counterExamples: ['ab', 'My-Project', '1project', 'my_project'],\n },\n description: 'The Google Cloud project that holds the Vertex AI entitlement.',\n },\n {\n name: 'region',\n label: 'Region',\n required: true,\n treatment: 'plain',\n validation: {\n rule: 'pattern',\n // The continent prefix is enumerated rather than matched as `[a-z]{2}`.\n // That earlier form required exactly two letters before the hyphen, so it\n // rejected every multi-letter prefix — europe-*, asia-*, australia-*,\n // northamerica-*, southamerica-*, africa-* — which is 27 of the 40 real\n // Vertex locations, i.e. every European and Asian deployment, while still\n // admitting nonsense like `zz-qqqqqq9`. Enumerating the prefixes rejects\n // the nonsense and accepts all 40. GCP adding a continent means adding a\n // word here; the counterExamples below pin the nonsense out.\n pattern:\n '^(global|(?:us|europe|asia|australia|northamerica|southamerica|africa|me)-[a-z]+\\\\d+)$',\n hint: 'A Vertex location: a continent prefix, a direction and an index — or `global`.',\n examples: [\n 'us-central1',\n 'europe-west4',\n 'europe-west12',\n 'asia-northeast1',\n 'northamerica-northeast1',\n 'southamerica-east1',\n 'australia-southeast1',\n 'africa-south1',\n 'me-central2',\n 'global',\n ],\n counterExamples: ['zz-qqqqqq9', 'us-central', 'US-CENTRAL1', 'us_central1', '1-west1'],\n },\n description: 'The Vertex location the models are served from.',\n },\n {\n name: 'serviceAccountKey',\n label: 'Service-account credential',\n required: true,\n treatment: 'secret',\n validation: { rule: 'json-object' },\n description: 'The service-account key JSON granting Vertex AI access to the project.',\n },\n modelAllowListField,\n];\n\n// ============================================================================\n// The catalog (FR-CORE-004)\n// ============================================================================\n\nexport const PROVIDER_CATALOG: readonly ProviderCatalogEntry[] = [\n {\n id: 'openai',\n label: 'OpenAI',\n kind: 'direct',\n credentialFields: directApiKeyFields('An OpenAI API key, issued from the OpenAI platform.'),\n modelPolicy: {\n mode: 'floor',\n floor: '5.5',\n knownMembers: ['gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna', 'gpt-5.5'],\n summary:\n 'GPT models at or above 5.5. FR-CORE-008 states the floor and then enumerates the members current at writing; the floor is the rule, the enumeration is the snapshot.',\n },\n description: 'GPT models served directly by OpenAI.',\n },\n {\n id: 'anthropic',\n label: 'Anthropic',\n kind: 'direct',\n credentialFields: directApiKeyFields(\n 'An Anthropic API key, issued from the Anthropic console.'\n ),\n modelPolicy: {\n mode: 'explicit',\n models: [\n 'claude-opus-5',\n 'claude-sonnet-5',\n 'claude-fable-5',\n 'claude-opus-4-8',\n 'claude-haiku-4-5',\n ],\n summary: 'The Claude 5 family, plus Opus 4.8 and Haiku 4.5.',\n },\n description: 'Claude models served directly by Anthropic.',\n },\n {\n id: 'google',\n label: 'Google Gemini',\n kind: 'direct',\n credentialFields: directApiKeyFields('A Google AI Studio API key.'),\n modelPolicy: {\n mode: 'floor',\n floor: '3.1',\n summary: 'Gemini 3.1 Pro and above. The floor is 3.1; nothing older is offered.',\n },\n description: 'Gemini models served directly by Google AI Studio.',\n },\n {\n id: 'moonshot',\n label: 'Moonshot AI',\n kind: 'direct',\n credentialFields: directApiKeyFields('A Moonshot AI platform API key.'),\n modelPolicy: {\n mode: 'explicit',\n models: ['kimi-k3'],\n summary:\n 'Kimi K3, the 1M-context model. The 256K models are all K2-generation and are not offered.',\n },\n description: 'Kimi models served directly by Moonshot AI.',\n },\n {\n id: 'glm',\n label: 'z.ai (GLM)',\n kind: 'direct',\n credentialFields: directApiKeyFields('A z.ai API key.'),\n modelPolicy: {\n mode: 'explicit',\n models: ['glm-5.2'],\n summary: 'GLM-5.2.',\n },\n description: 'GLM models served directly by z.ai.',\n },\n {\n id: 'deepseek',\n label: 'DeepSeek',\n kind: 'direct',\n credentialFields: directApiKeyFields('A DeepSeek platform API key.'),\n modelPolicy: {\n mode: 'explicit',\n models: ['deepseek-v4-flash', 'deepseek-v4-pro'],\n summary: 'The DeepSeek V4 pair — Flash and Pro.',\n },\n description: 'DeepSeek models served directly by DeepSeek.',\n },\n {\n id: 'xai',\n label: 'xAI',\n kind: 'direct',\n credentialFields: directApiKeyFields('An xAI API key.'),\n modelPolicy: {\n mode: 'floor',\n floor: '4.5',\n summary: 'Grok 4.5 and above. The floor is 4.5; nothing older is offered.',\n },\n description: 'Grok models served directly by xAI.',\n },\n {\n id: 'azure',\n label: 'Azure',\n kind: 'gateway',\n hostedFamilies: ['openai', 'anthropic'],\n credentialFields: azureFields,\n modelPolicy: {\n mode: 'derived',\n from: ['openai', 'anthropic'],\n // Azure is the one gateway whose two families genuinely share a scheme —\n // both are reached by deployment name. Stated per family anyway, so the\n // shape cannot quietly become a scalar again.\n addressing: {\n openai: {\n scheme: 'deployment-name',\n pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$',\n examples: ['my-gpt-5-6-deployment', 'prod_gpt', 'gpt56sol'],\n // A raw model id is the classic Azure mistake: dots are not legal in\n // a deployment name, so passing `gpt-5.6-sol` straight through fails.\n counterExamples: ['gpt-5.6-sol', 'claude-opus-5@20260115', 'has space', ''],\n },\n anthropic: {\n scheme: 'deployment-name',\n pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$',\n examples: ['my-claude-deployment', 'prod_claude'],\n counterExamples: ['claude-opus-5@20260115', 'gpt-5.6-sol', 'has space', ''],\n },\n },\n summary:\n 'The OpenAI and Anthropic rosters, each model addressed by the name of its Azure deployment.',\n },\n description:\n 'Azure AI Foundry, hosting OpenAI and Anthropic models. One configuration per hosted family.',\n },\n {\n id: 'vertex',\n label: 'Google Vertex',\n kind: 'gateway',\n hostedFamilies: ['gemini', 'anthropic'],\n credentialFields: vertexFields,\n modelPolicy: {\n mode: 'derived',\n from: ['gemini', 'anthropic'],\n // THE TWO FAMILIES DISAGREE, which is why this is not one value.\n // Anthropic-on-Vertex is @-dated; Gemini-on-Vertex is not. A single\n // 'dated' across both produced `gemini-3.1-pro@<date>` → 404.\n addressing: {\n gemini: {\n scheme: 'plain',\n // No `@` anywhere: Gemini on Vertex is addressed by its own id.\n pattern: '^(?!.*@)[a-zA-Z0-9][a-zA-Z0-9.\\\\-]*$',\n examples: ['gemini-3.1-pro', 'gemini-3.1-flash', 'gemini-3.1-pro-preview'],\n counterExamples: [\n // The exact string the scalar 'dated' would have produced.\n 'gemini-3.1-pro@20260115',\n 'us.anthropic.claude-opus-5-v1:0',\n 'has space',\n '',\n ],\n },\n anthropic: {\n scheme: 'dated',\n pattern: '^[a-zA-Z0-9][a-zA-Z0-9.\\\\-]*@\\\\d{8}$',\n examples: ['claude-opus-5@20260115', 'claude-sonnet-5@20251022'],\n counterExamples: [\n 'claude-opus-5',\n 'claude-opus-5@',\n 'claude-opus-5@2026',\n 'gemini-3.1-pro',\n ],\n },\n },\n summary:\n 'The Gemini and Anthropic rosters. Anthropic models are @-dated on Vertex; Gemini models are not.',\n },\n description:\n 'Google Vertex AI, hosting Gemini and Anthropic models. One configuration per hosted family.',\n },\n {\n id: 'bedrock',\n label: 'AWS Bedrock',\n kind: 'gateway',\n hostedFamilies: ['anthropic'],\n credentialFields: [\n {\n name: 'region',\n label: 'Region',\n required: true,\n treatment: 'plain',\n validation: {\n rule: 'pattern',\n // AWS genuinely does use two-letter geography codes (us, eu, ap, sa,\n // ca, me, af, il, mx), so `[a-z]{2}` is correct here — unlike Vertex,\n // whose prefixes are full words. The examples pin that difference.\n pattern: '^[a-z]{2}(-gov)?-[a-z]+-\\\\d+$',\n hint: 'An AWS region: a two-letter geography, a direction and an index.',\n examples: [\n 'us-east-1',\n 'eu-central-1',\n 'ap-southeast-1',\n 'sa-east-1',\n 'me-south-1',\n 'af-south-1',\n 'il-central-1',\n 'mx-central-1',\n 'us-gov-west-1',\n ],\n counterExamples: ['us-east', 'US-EAST-1', 'useast1', 'europe-west4'],\n },\n description: 'The AWS region the Bedrock models are invoked in.',\n },\n {\n name: 'apiKey',\n label: 'Bearer API key',\n required: true,\n treatment: 'secret',\n // FR-CORE-007 / D-5: a long-lived access-key pair arrives as \"AKIA…\" or as\n // \"ACCESS_KEY_ID:SECRET\". Both shapes are refused here, at the catalog, so\n // every surface rejects them identically.\n validation: {\n rule: 'pattern',\n pattern: '^(?!AKIA)[^\\\\s:]+$',\n hint: 'A single opaque bearer token. Long-lived AWS access key and secret pairs are not accepted.',\n examples: ['bedrock-api-key-abc123', 'ABSKQmVkcm9ja0FQSUtleQ=='],\n counterExamples: [\n 'AKIAIOSFODNN7EXAMPLE',\n 'AKIAIOSFODNN7EXAMPLE:wJalrXUtnFEMI/K7MDENG',\n 'someid:somesecret',\n 'has space',\n ],\n },\n description:\n 'A Bedrock bearer API key. This is the only credential type Bedrock accepts here.',\n },\n {\n name: 'inferenceProfile',\n label: 'Inference profile',\n required: false,\n treatment: 'plain',\n validation: { rule: 'non-empty-string', minLength: 1 },\n description:\n 'Pin a cross-region inference profile. Defaults to the profile for the configured region.',\n },\n ],\n modelPolicy: {\n mode: 'derived',\n from: ['anthropic'],\n addressing: {\n anthropic: {\n scheme: 'inference-profile',\n // The leading region prefix is what makes it a cross-region profile\n // rather than a bare model id; without it Bedrock rejects the call.\n pattern: '^(us|eu|apac)\\\\.[a-z0-9-]+\\\\.[a-zA-Z0-9.\\\\-]+(:\\\\d+)?$',\n examples: [\n 'us.anthropic.claude-opus-5-v1:0',\n 'eu.anthropic.claude-sonnet-5-v1:0',\n 'apac.anthropic.claude-haiku-4-5-v1:0',\n ],\n counterExamples: [\n 'anthropic.claude-opus-5-v1:0',\n 'claude-opus-5',\n 'claude-opus-5@20260115',\n ],\n },\n },\n summary: 'The Anthropic roster, addressed as region-prefixed inference-profile IDs.',\n },\n description: 'AWS Bedrock, hosting Anthropic models. Bearer API key only.',\n },\n {\n id: 'custom',\n /**\n * THE LABEL NAMES BOTH API FORMATS BECAUSE THE ENTRY SERVES BOTH.\n *\n * This read `Custom (OpenAI-compatible)` while `apiFormat` below has always\n * accepted `'anthropic'`. The label, the entry description and the `baseUrl`\n * help text all said OpenAI, so three strings contradicted the field sitting\n * between them, and a user looking for an Anthropic-compatible endpoint\n * concluded the product did not support one and stopped.\n *\n * NOT SPLIT INTO TWO CATALOG ENTRIES. `PROVIDER_TYPES` in\n * `schema/postgres/tenancy/provider-configs.ts` is assigned\n * `PROVIDER_CATALOG_IDS` verbatim, and `model.ts:26` builds the API's\n * `provider` enum from the same array — so a twelfth entry is a storage enum\n * change plus an API schema change plus a regeneration of both SDK\n * `openapi.json` files. The complaint is that the capability is invisible,\n * not that it is missing; naming it costs none of that.\n */\n label: 'Custom (OpenAI or Anthropic compatible)',\n kind: 'direct',\n credentialFields: [\n {\n name: 'baseUrl',\n label: 'Base URL',\n required: true,\n treatment: 'plain',\n validation: { rule: 'https-url' },\n description: 'The endpoint serving the API. Pick its API format below.',\n },\n apiKeyField('The key the endpoint expects, sent as a bearer token.'),\n {\n // Named for the operator-facing question — which API does this endpoint\n // speak? — matching the CLI's public `--api-format` flag.\n name: 'apiFormat',\n label: 'API format',\n required: false,\n treatment: 'plain',\n validation: { rule: 'one-of', values: ['openai', 'anthropic'] },\n description:\n \"Whether the endpoint speaks the OpenAI or the Anthropic request shape. Defaults to OpenAI when left unset — an endpoint that expects Anthropic's shape needs this set to 'anthropic'.\",\n },\n modelAllowListField,\n ],\n modelPolicy: {\n mode: 'open',\n summary: 'Whatever the configured endpoint publishes.',\n },\n description:\n 'Any endpoint speaking an OpenAI-compatible or Anthropic-compatible API — self-hosted or third-party.',\n },\n];\n\n// ============================================================================\n// Lookups\n// ============================================================================\n\nconst CATALOG_BY_ID: ReadonlyMap<string, ProviderCatalogEntry> = new Map(\n PROVIDER_CATALOG.map((entry) => [entry.id, entry])\n);\n\n/**\n * Narrow an arbitrary string to a catalog identifier.\n */\nexport function isProviderCatalogId(value: string): value is ProviderCatalogId {\n return CATALOG_BY_ID.has(value);\n}\n\n/**\n * Look an entry up by identifier. Returns undefined for anything not in the catalog.\n */\nexport function getProviderCatalogEntry(id: string): ProviderCatalogEntry | undefined {\n return CATALOG_BY_ID.get(id);\n}\n\n/**\n * Look a single credential field up by its wire name.\n */\nexport function getCredentialField(\n entry: ProviderCatalogEntry,\n name: string\n): CredentialFieldDescriptor | undefined {\n return entry.credentialFields.find((field) => field.name === name);\n}\n\n/**\n * The one secret an entry carries. Every entry has exactly one (FR-CORE-007),\n * which is what lets a configuration hold a single encrypted credential.\n */\nexport function getSecretCredentialField(entry: ProviderCatalogEntry): CredentialFieldDescriptor {\n const secrets = entry.credentialFields.filter((field) => field.treatment === 'secret');\n if (secrets.length !== 1) {\n throw new Error(\n `Catalog entry '${entry.id}' declares ${secrets.length} secret fields; exactly one is required.`\n );\n }\n return secrets[0]!;\n}\n\n/**\n * The model ids the catalog can offer as toggle candidates for `modelAllowList`,\n * WITHOUT a live call to the provider — there is no configuration id to call\n * `GET /providers/:id/models` with until a configuration exists, and the model\n * allow-list field renders during BOTH create and edit.\n *\n * Deliberately partial, not a live discovery substitute:\n * - `explicit` — the closed set IS the whole answer. Returned as-is.\n * - `floor` — `knownMembers` is an ADVISORY snapshot (see `ModelAllowListPolicy`\n * doc), not the allow-list. Returned when present; `[]` when the entry\n * declares none (e.g. Google, xAI), which the caller must render as \"no\n * known candidates\" rather than as \"this provider has no models\".\n * - `derived` — empty. Producing a gateway's roster requires resolving through\n * `HOSTED_FAMILY_SOURCE_ENTRY` and re-addressing PER FAMILY\n * (`FamilyAddressing`), which is server-side evaluation logic this\n * module deliberately does not perform (see the \"NO EVALUATOR LIVES\n * HERE\" note on `ModelAllowListPolicy`). A gateway's `modelAllowList`\n * field falls back to free text.\n * - `open` — empty by construction: an open policy admits whatever the endpoint\n * publishes, so the catalog has no roster to offer at all.\n */\nexport function knownModelIdsFor(entry: ProviderCatalogEntry): readonly string[] {\n const policy = entry.modelPolicy;\n switch (policy.mode) {\n case 'explicit':\n return policy.models;\n case 'floor':\n return policy.knownMembers ?? [];\n case 'derived':\n case 'open':\n return [];\n default: {\n const never: never = policy;\n return never;\n }\n }\n}\n\n/**\n * Resolve which hosted family a gateway configuration targets.\n *\n * A multi-family gateway with no stated family is REFUSED rather than defaulted.\n * Defaulting is a false green of the worst kind: an Azure configuration meant for\n * Anthropic, with no family stated, would be treated as Azure OpenAI — against a\n * real endpoint, with a real key, succeeding — and would then serve the wrong\n * vendor's models. Unlike a wrong endpoint, which fails loudly, this one succeeds\n * wrongly.\n *\n * A single-family gateway (Bedrock) is unambiguous, so it resolves without one,\n * and a direct entry has no family to resolve at all. The rule is therefore\n * ARITY, never a list of entry ids: an entry that gains a second hosted family\n * starts requiring an explicit choice with no code change here or in any caller.\n *\n * Hoisted from `connection-test.ts` (T-2.3), which declared it privately. Both\n * the pre-persistence probe and the write-boundary validator (T-2.1) need the\n * same answer, and a catalog fact belongs beside the catalog rather than inside\n * whichever feature module needed it first.\n */\nexport function resolveHostedFamily(\n entry: ProviderCatalogEntry,\n submitted: string | null | undefined\n): { family: HostedFamily | null } | { ambiguous: readonly HostedFamily[] } {\n const families = entry.hostedFamilies ?? [];\n if (families.length === 0) return { family: null };\n\n const match = families.find((family) => family === submitted);\n if (match) return { family: match };\n\n // A STATED family the entry does not host is refused at every arity.\n //\n // The arity check used to come first, so a single-family gateway COERCED\n // whatever was submitted to its only family: `bedrock` hosts anthropic alone,\n // so `hostedFamily: 'openai'` was silently rewritten to 'anthropic' and the\n // row was stored as if the caller had asked for it. Deriving a value nobody\n // supplied is a convenience; overwriting a value somebody DID supply with a\n // different one is a lie about what was configured — and it is invisible,\n // because the row then connects and serves successfully under the wrong\n // family.\n //\n // Derivation stays exactly where it was justified: an ABSENT value with one\n // legal choice.\n if (submitted != null && submitted !== '') return { ambiguous: families };\n\n if (families.length === 1) return { family: families[0]! };\n\n return { ambiguous: families };\n}\n",
30
30
  "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n providerLinks,\n providerLink,\n renderPlainCard,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\n\ninterface UpdateOptions {\n name?: string;\n apiKey?: string;\n active?: string;\n setDefault?: boolean;\n baseUrl?: string;\n}\n\nexport function registerUpdateCommand(parent: Command): void {\n parent\n .command('update')\n .description('Update an existing provider configuration')\n .argument('<id>', 'Provider ID (from: mutagent providers list)')\n .option('-n, --name <name>', 'Updated display name')\n .option('-k, --api-key <key>', 'Updated API key (will be re-encrypted)')\n .option('--active <bool>', 'Activate or deactivate (true|false)')\n .option('--set-default', 'Set as the default provider of its kind')\n .option('--base-url <url>', 'Updated base URL (use \"\" to clear)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers update <id> --name \"New Name\"\n ${chalk.dim('$')} mutagent providers update <id> --api-key $NEW_KEY --json\n ${chalk.dim('$')} mutagent providers update <id> --active false\n ${chalk.dim('$')} mutagent providers update <id> --set-default --json\n\nPATCH semantics — only provided fields are updated.\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Build update payload — only include provided fields\n const updateData: {\n name?: string;\n apiKey?: string;\n isActive?: boolean;\n isDefault?: boolean;\n baseUrl?: string | null;\n } = {};\n\n let hasUpdates = false;\n\n if (options.name !== undefined) {\n updateData.name = options.name;\n hasUpdates = true;\n }\n if (options.apiKey !== undefined) {\n updateData.apiKey = options.apiKey;\n hasUpdates = true;\n }\n if (options.active !== undefined) {\n if (options.active !== 'true' && options.active !== 'false') {\n throw new MutagentError(\n 'INVALID_OPTION',\n `Invalid --active value: ${options.active}`,\n 'Use --active true or --active false'\n );\n }\n updateData.isActive = options.active === 'true';\n hasUpdates = true;\n }\n if (options.setDefault) {\n updateData.isDefault = true;\n hasUpdates = true;\n }\n if (options.baseUrl !== undefined) {\n updateData.baseUrl = options.baseUrl === '' ? null : options.baseUrl;\n hasUpdates = true;\n }\n\n if (!hasUpdates) {\n throw new MutagentError(\n 'NO_UPDATES',\n 'No update fields provided',\n 'Provide at least one of: --name, --api-key, --active, --set-default, --base-url'\n );\n }\n\n const client = await getSDKClient();\n const updated = await client.updateProvider(id, updateData);\n\n if (isJson) {\n const directive = buildProviderUpdatedDirective(updated, id);\n echoDirectiveToStderr(directive);\n output.output({\n success: true,\n ...updated,\n _links: providerLinks(updated.id ?? id),\n _directive: directive,\n });\n } else {\n output.success(`Provider updated: ${String(updated.name ?? id)}`);\n console.log(` ID: ${String(updated.id ?? id)}`);\n // Every write states the workspace it resolved to (FR-CLI-002).\n if (updated.workspaceId) {\n console.log(` Workspace: ${updated.workspaceId}`);\n }\n console.log(` URL: ${providerLink(updated.id ?? id)}`);\n if (options.apiKey) {\n console.log(chalk.dim(' API key re-encrypted server-side.'));\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nfunction buildProviderUpdatedDirective(\n provider: { id?: number | string; name?: string },\n requestId: string,\n) {\n const id = provider.id ?? requestId;\n const title = `Provider Updated — ${provider.name ?? String(id)}`;\n const dashboardUrl = providerLink(id);\n const apiUrl = `/api/providers/${String(id)}`;\n const rows = [\n { label: 'Provider ID', value: String(id) },\n ...(provider.name ? [{ label: 'Name', value: provider.name }] : []),\n ];\n const links = [\n { label: 'Settings', url: dashboardUrl },\n { label: 'API', url: apiUrl },\n ];\n const next = [\n `mutagent providers get ${String(id)} --json`,\n `mutagent providers test ${String(id)} --json`,\n ];\n return {\n display: 'status_card' as const,\n template: 'provider_updated',\n title,\n fields: { providerId: String(id), name: provider.name },\n links: { settings: dashboardUrl, api: apiUrl },\n next,\n instruction: 'MANDATORY: Display this card to the user before proceeding.',\n renderedCard: renderPlainCard({ title, icon: '~', rows, links, next }),\n };\n}\n",
31
31
  "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport {\n providerSettingsLink,\n renderPlainCard,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\n\ninterface DeleteOptions {\n force?: boolean;\n}\n\nexport function registerDeleteCommand(parent: Command): void {\n parent\n .command('delete')\n .description('Delete a provider configuration')\n .argument('<id>', 'Provider ID (from: mutagent providers list)')\n .option('-f, --force', 'Skip confirmation prompt')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers delete <id>\n ${chalk.dim('$')} mutagent providers delete <id> --force\n ${chalk.dim('$')} mutagent providers delete <id> --force --json\n\n${chalk.dim('Note: --force is required. The CLI is non-interactive — confirm with the user via your native flow, then pass --force.')}\n${chalk.dim('Warning: API keys are AES-256-GCM encrypted and irrecoverable after deletion. Agents referencing this provider will lose their model config.')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation (agent controls flow).\n // Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting provider ${id} requires confirmation. ` +\n 'Warning: encrypted API keys are irrecoverable after deletion.',\n 'Run: mutagent providers delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent providers delete ${id} --force`\n );\n }\n\n const client = await getSDKClient();\n // The workspace this delete resolved to — stated in the output so a\n // misconfigured default is visible at the moment it matters.\n let deletedFrom: string | undefined;\n\n try {\n deletedFrom = (await client.deleteProvider(id)).workspaceId;\n } catch (error) {\n // 404 = already deleted = idempotent success\n if (error instanceof ApiError && error.statusCode === 404) {\n if (isJson) {\n const directive = buildProviderDeletedDirective(id);\n output.output({\n success: true,\n deletedId: id,\n _links: { providers: providerSettingsLink() },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Provider ${id} already deleted (idempotent)`);\n }\n return;\n }\n throw error;\n }\n\n if (isJson) {\n const directive = buildProviderDeletedDirective(id);\n echoDirectiveToStderr(directive);\n output.output({\n success: true,\n deletedId: id,\n _links: { providers: providerSettingsLink() },\n _directive: directive,\n });\n } else {\n output.success(`Deleted provider: ${id}`);\n if (deletedFrom) {\n console.log(` Workspace: ${deletedFrom}`);\n }\n console.log(` Settings: ${providerSettingsLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nfunction buildProviderDeletedDirective(id: string) {\n const title = `Provider Deleted — ${id}`;\n const settingsUrl = providerSettingsLink();\n const rows = [{ label: 'Provider ID', value: id }];\n const links = [{ label: 'Settings', url: settingsUrl }];\n const next = [`mutagent providers list --json`];\n return {\n display: 'status_card' as const,\n template: 'provider_deleted',\n title,\n fields: { providerId: id },\n links: { settings: settingsUrl },\n next,\n instruction: 'MANDATORY: Display this card to the user before proceeding.',\n renderedCard: renderPlainCard({ title, icon: 'x', rows, links, next }),\n };\n}\n",
32
- "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { hasCredentials, loadConfig, getApiKey, setDefaultWorkspace } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { hasRcConfig } from '../lib/framework-detection.js';\nimport { writeRcConfig, type MutagentRcConfig } from '../lib/rc-config.js';\nimport { installCliSkill, SKILL_DIR } from './skills.js';\nimport type { fetchOrganizations, fetchWorkspaces } from '../lib/sdk-client.js';\n\n// Re-export for backwards compatibility (src/bin/cli.ts imports it from here)\nexport { hasRcConfig } from '../lib/framework-detection.js';\n\nconst LOGIN_GUIDANCE =\n 'Run: mutagent login — sign-up happens in the browser. Then re-run mutagent init.';\n\ninterface InitOptions {\n nonInteractive?: boolean;\n}\n\n/**\n * Injectable seams for tests — same convention as createInstallCommand(deps).\n * Production callers pass nothing; tests inject fakes so no real fs/home-dir\n * credential state or network is touched.\n */\nexport interface InitDeps {\n hasCredentials?: typeof hasCredentials;\n loadConfig?: typeof loadConfig;\n getApiKey?: typeof getApiKey;\n setDefaultWorkspace?: typeof setDefaultWorkspace;\n fetchOrganizations?: typeof fetchOrganizations;\n fetchWorkspaces?: typeof fetchWorkspaces;\n installSkill?: (cwd: string) => void;\n}\n\nexport function createInitCommand(deps: InitDeps = {}): Command {\n const init = new Command('init')\n .description('Initialize Mutagent in your project')\n .option('--non-interactive', 'No-op kept for back-compat (init never prompts)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent init # Write .mutagentrc.json + install the CLI skill\n\nWhat it does:\n 1. Writes .mutagentrc.json (endpoint / workspace / org) — skipped if present\n 2. Installs the Mutagent CLI skill into ${SKILL_DIR}/\n `)\n .action(async (options: InitOptions) => {\n const isJson = getJsonFlag(init);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n void options; // --non-interactive is a back-compat no-op — no prompts exist\n\n try {\n const cwd = process.cwd();\n\n // Step 1: existing config → note it, skip creation (no prompt)\n const rcExists = hasRcConfig(cwd);\n if (rcExists && !isJson) {\n output.info('.mutagentrc.json already exists — already initialized. Leaving it untouched.');\n }\n\n // Step 2: auth gate — clean exit (not an error) with login guidance\n if (!(deps.hasCredentials ?? hasCredentials)()) {\n if (isJson) {\n output.output({\n success: false,\n authenticated: false,\n message: `Not authenticated. ${LOGIN_GUIDANCE}`,\n nextSteps: ['mutagent login', 'mutagent init'],\n });\n } else {\n output.warn('Not authenticated.');\n output.info(LOGIN_GUIDANCE);\n }\n return;\n }\n\n // Step 3: resolve + write .mutagentrc.json (endpoint/workspace/org only)\n let rcConfig: MutagentRcConfig;\n if (rcExists) {\n try {\n rcConfig = JSON.parse(readFileSync(join(cwd, '.mutagentrc.json'), 'utf-8')) as MutagentRcConfig;\n } catch {\n rcConfig = {};\n }\n } else {\n const config = (deps.loadConfig ?? loadConfig)();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n let workspace = config.defaultWorkspace;\n\n // Best-effort: validate workspace against API (never blocks init)\n let workspaceValidation: { id: string; name: string; validated: boolean; corrected: boolean } | undefined;\n let resolvedOrgId: string | undefined;\n try {\n const apiKey = (deps.getApiKey ?? getApiKey)();\n if (apiKey) {\n const sdk = await import('../lib/sdk-client.js');\n const fetchOrgs = deps.fetchOrganizations ?? sdk.fetchOrganizations;\n const fetchWs = deps.fetchWorkspaces ?? sdk.fetchWorkspaces;\n let orgId = config.defaultOrganization;\n if (!orgId) {\n const orgs = await fetchOrgs(apiKey, endpoint);\n orgId = orgs[0]?.id;\n }\n if (orgId) {\n resolvedOrgId = orgId;\n const workspaces = await fetchWs(apiKey, endpoint, orgId);\n if (workspaces.length > 0) {\n const found = workspace ? workspaces.find(w => w.id === workspace) : undefined;\n if (found) {\n workspaceValidation = { id: found.id, name: found.name, validated: true, corrected: false };\n } else if (workspaces[0]) {\n const first = workspaces[0];\n // A machine-chosen fallback, not a user choice — stamped as\n // inferred so a provider write re-verifies it rather than\n // trusting it (FR-CLI-002).\n (deps.setDefaultWorkspace ?? setDefaultWorkspace)(first.id, 'login-inferred');\n workspace = first.id;\n workspaceValidation = { id: first.id, name: first.name, validated: true, corrected: true };\n }\n }\n }\n }\n } catch {\n // Best-effort — don't block init on network failure\n }\n\n rcConfig = {\n endpoint,\n ...(workspace ? { defaultWorkspace: workspace } : {}),\n ...(resolvedOrgId ? { defaultOrganization: resolvedOrgId } : {}),\n };\n\n writeRcConfig(rcConfig, cwd);\n if (!isJson) {\n output.success('Created .mutagentrc.json');\n if (workspaceValidation) {\n if (workspaceValidation.corrected) {\n output.warn(`Workspace auto-corrected to: ${workspaceValidation.name} (${workspaceValidation.id})`);\n } else {\n output.info(`Workspace: ${workspaceValidation.name} (${workspaceValidation.id})`);\n }\n }\n }\n }\n\n // Step 4: install the CLI skill into the project (same writer as\n // `mutagent skills install`, targeted at the cwd)\n (deps.installSkill ?? installCliSkill)(cwd);\n if (!isJson) {\n output.success(`Installed the Mutagent CLI skill → ${SKILL_DIR}/`);\n }\n\n // Step 5: outro\n if (isJson) {\n output.output({\n success: true,\n configFile: '.mutagentrc.json',\n config: rcConfig,\n skillInstalled: true,\n skillPath: `${SKILL_DIR}/`,\n nextSteps: ['mutagent install helix'],\n });\n } else {\n console.log('');\n console.log(chalk.bold(` What's next:`));\n console.log(` ${chalk.cyan('mutagent install helix'.padEnd(30))}${chalk.dim('# the ADL lifecycle conductor')}`);\n console.log(` ${chalk.cyan('mutagent install diagnostics'.padEnd(30))}${chalk.dim('# trace diagnosis (optional)')}`);\n console.log(` ${chalk.cyan('mutagent install evaluator'.padEnd(30))}${chalk.dim('# eval mining + judging (optional)')}`);\n console.log('');\n console.log(chalk.dim(' Your coding agent now knows these workflows — restart it to pick up'));\n console.log(chalk.dim(' the skill, then just say \"set up Mutagent on this project\".'));\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return init;\n}\n",
32
+ "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { hasCredentials, loadConfig, getApiKey, setDefaultWorkspace } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { hasRcConfig } from '../lib/framework-detection.js';\nimport { writeRcConfig, type MutagentRcConfig } from '../lib/rc-config.js';\nimport { installCliSkill, SKILL_DIR } from './skills.js';\nimport type { fetchOrganizations, fetchWorkspaces } from '../lib/sdk-client.js';\n\n// Re-export for backwards compatibility (src/bin/cli.ts imports it from here)\nexport { hasRcConfig } from '../lib/framework-detection.js';\n\nconst LOGIN_GUIDANCE =\n 'Run: mutagent login — sign-up happens in the browser. Then re-run mutagent init.';\n\ninterface InitOptions {\n nonInteractive?: boolean;\n}\n\n/**\n * Injectable seams for tests — same convention as createInstallCommand(deps).\n * Production callers pass nothing; tests inject fakes so no real fs/home-dir\n * credential state or network is touched.\n */\nexport interface InitDeps {\n hasCredentials?: typeof hasCredentials;\n loadConfig?: typeof loadConfig;\n getApiKey?: typeof getApiKey;\n setDefaultWorkspace?: typeof setDefaultWorkspace;\n fetchOrganizations?: typeof fetchOrganizations;\n fetchWorkspaces?: typeof fetchWorkspaces;\n installSkill?: (cwd: string) => void;\n}\n\nexport function createInitCommand(deps: InitDeps = {}): Command {\n const init = new Command('init')\n .description('Initialize Mutagent in your project')\n .option('--non-interactive', 'No-op kept for back-compat (init never prompts)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent init # Write .mutagentrc.json + install the CLI skill\n\nWhat it does:\n 1. Writes .mutagentrc.json (endpoint / workspace / org) — skipped if present\n 2. Installs the Mutagent CLI skill into ${SKILL_DIR}/\n `)\n .action(async (options: InitOptions) => {\n const isJson = getJsonFlag(init);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n void options; // --non-interactive is a back-compat no-op — no prompts exist\n\n try {\n const cwd = process.cwd();\n\n // Step 1: existing config → note it, skip creation (no prompt)\n const rcExists = hasRcConfig(cwd);\n if (rcExists && !isJson) {\n output.info('.mutagentrc.json already exists — already initialized. Leaving it untouched.');\n }\n\n // Step 2: auth gate — clean exit (not an error) with login guidance\n if (!(deps.hasCredentials ?? hasCredentials)()) {\n if (isJson) {\n output.output({\n success: false,\n authenticated: false,\n message: `Not authenticated. ${LOGIN_GUIDANCE}`,\n nextSteps: ['mutagent login', 'mutagent init'],\n });\n } else {\n output.warn('Not authenticated.');\n output.info(LOGIN_GUIDANCE);\n }\n return;\n }\n\n // Step 3: resolve + write .mutagentrc.json (endpoint/workspace/org only)\n let rcConfig: MutagentRcConfig;\n if (rcExists) {\n try {\n rcConfig = JSON.parse(readFileSync(join(cwd, '.mutagentrc.json'), 'utf-8')) as MutagentRcConfig;\n } catch {\n rcConfig = {};\n }\n } else {\n const config = (deps.loadConfig ?? loadConfig)();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n let workspace = config.defaultWorkspace;\n\n // Best-effort: validate workspace against API (never blocks init)\n let workspaceValidation: { id: string; name: string; validated: boolean; corrected: boolean } | undefined;\n let resolvedOrgId: string | undefined;\n try {\n const apiKey = (deps.getApiKey ?? getApiKey)();\n if (apiKey) {\n const sdk = await import('../lib/sdk-client.js');\n const fetchOrgs = deps.fetchOrganizations ?? sdk.fetchOrganizations;\n const fetchWs = deps.fetchWorkspaces ?? sdk.fetchWorkspaces;\n let orgId = config.defaultOrganization;\n if (!orgId) {\n const orgs = await fetchOrgs(apiKey, endpoint);\n orgId = orgs[0]?.id;\n }\n if (orgId) {\n resolvedOrgId = orgId;\n const workspaces = await fetchWs(apiKey, endpoint, orgId);\n if (workspaces.length > 0) {\n const found = workspace ? workspaces.find(w => w.id === workspace) : undefined;\n if (found) {\n workspaceValidation = { id: found.id, name: found.name, validated: true, corrected: false };\n } else if (workspaces[0]) {\n const first = workspaces[0];\n // A machine-chosen fallback, not a user choice — stamped as\n // inferred so a provider write re-verifies it rather than\n // trusting it (FR-CLI-002).\n (deps.setDefaultWorkspace ?? setDefaultWorkspace)(first.id, 'login-inferred');\n workspace = first.id;\n workspaceValidation = { id: first.id, name: first.name, validated: true, corrected: true };\n }\n }\n }\n }\n } catch {\n // Best-effort — don't block init on network failure\n }\n\n rcConfig = {\n endpoint,\n ...(workspace ? { defaultWorkspace: workspace } : {}),\n ...(resolvedOrgId ? { defaultOrganization: resolvedOrgId } : {}),\n };\n\n writeRcConfig(rcConfig, cwd);\n if (!isJson) {\n output.success('Created .mutagentrc.json');\n if (workspaceValidation) {\n if (workspaceValidation.corrected) {\n output.warn(`Workspace auto-corrected to: ${workspaceValidation.name} (${workspaceValidation.id})`);\n } else {\n output.info(`Workspace: ${workspaceValidation.name} (${workspaceValidation.id})`);\n }\n }\n }\n }\n\n // Step 4: install the CLI skill into the project (same writer as\n // `mutagent skills install`, targeted at the cwd)\n (deps.installSkill ?? installCliSkill)(cwd);\n if (!isJson) {\n output.success(`Installed the Mutagent CLI skill → ${SKILL_DIR}/`);\n }\n\n // Step 5: outro\n if (isJson) {\n output.output({\n success: true,\n configFile: '.mutagentrc.json',\n config: rcConfig,\n skillInstalled: true,\n skillPath: `${SKILL_DIR}/`,\n nextSteps: ['mutagent install helix'],\n });\n } else {\n console.log('');\n console.log(chalk.bold(` What's next:`));\n console.log(` ${chalk.cyan('mutagent install helix'.padEnd(30))}${chalk.dim('# the ADL lifecycle conductor')}`);\n console.log('');\n console.log(chalk.dim(' Your coding agent now knows these workflows — restart it to pick up'));\n console.log(chalk.dim(' the skill, then just say \"set up Mutagent on this project\".'));\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return init;\n}\n",
33
33
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { execSync } from 'child_process';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { SKILL_CONTENT, SKILL_FILES } from '../generated/skill-content.js';\n\n// Re-export so tests and external callers can still import SKILL_CONTENT\n// from this module (backward compat with pre-R4 imports).\nexport { SKILL_CONTENT };\n\n/**\n * Find the git repository root directory.\n * Falls back to process.cwd() if not inside a git repo.\n */\nexport function findRepoRoot(): string {\n try {\n return execSync('git rev-parse --show-toplevel', {\n encoding: 'utf-8',\n stdio: ['pipe', 'pipe', 'pipe'],\n }).trim();\n } catch {\n return process.cwd();\n }\n}\n\n// =============================================================================\n// Skill Content\n// =============================================================================\n//\n// The canonical source of truth for the skill content is a real markdown\n// file living in the CLI package's own Claude Code workspace:\n//\n// mutagent-cli/.claude/skills/mutagent-cli/SKILL.md\n//\n// A prebuild/pretest/prelint/pretype-check hook (`scripts/sync-skill.ts`)\n// reads that file and regenerates `src/generated/skill-content.ts`,\n// exporting the raw markdown as `SKILL_CONTENT`. Keeping the source as\n// a real .md file (not a hardcoded TypeScript string) makes it\n// maintainable; the generated TS module is a build implementation detail.\n//\n// TWO `.claude/` dirs, at TWO different levels:\n// - SOURCE: `mutagent-cli/.claude/skills/mutagent-cli/SKILL.md`\n// (this package's own Claude Code workspace — package-local)\n// - DESTINATION: `<user-cwd>/.claude/skills/mutagent-cli/SKILL.md`\n// (the end user's top-level project .claude/, where `skills install`\n// WRITES on the user's machine — SKILL_DIR below)\n// Same relative path, different levels, never collide.\n//\n// If `SKILL_CONTENT` is missing or empty at runtime, the command throws\n// LOUDLY — there is no fallback, by design. The skill dump pipeline\n// either ships the real content or fails the build.\n\nexport const SKILL_DIR = '.claude/skills/mutagent-cli';\nconst SKILL_ENTRY_FILE = 'SKILL.md';\n\nfunction assertSkillFilesValid(): void {\n if (Object.keys(SKILL_FILES).length === 0) {\n throw new Error(\n 'SKILL_FILES is missing or empty. This indicates a broken build: ' +\n 'scripts/sync-skill.ts must regenerate src/generated/skill-content.ts ' +\n 'from .claude/skills/mutagent-cli/ before build/test. ' +\n 'Run `bun run sync-skill` to debug.',\n );\n }\n const entry = SKILL_FILES[SKILL_ENTRY_FILE];\n if (typeof entry !== 'string' || entry.trim().length === 0) {\n throw new Error(\n `SKILL_FILES[\"${SKILL_ENTRY_FILE}\"] is missing or empty. ` +\n 'Check .claude/skills/mutagent-cli/SKILL.md and run `bun run sync-skill`.',\n );\n }\n if (!entry.startsWith('---')) {\n throw new Error(\n `SKILL_FILES[\"${SKILL_ENTRY_FILE}\"] is malformed: expected YAML frontmatter (\"---\") at start.`,\n );\n }\n}\n\n/**\n * Returns the canonical skill entry content (SKILL.md). Exported for tests\n * and back-compat with pre-R4 callers. New code should use\n * `getSkillFiles()` to walk the full tree including workflows/ and concepts/.\n */\nexport function getSkillContent(): string {\n assertSkillFilesValid();\n return SKILL_FILES[SKILL_ENTRY_FILE] ?? '';\n}\n\n/**\n * Returns the full skill file tree as a map keyed by path relative to the\n * skill root (e.g. `SKILL.md`, `workflows/setup.md`,\n * `workflows/install.md`). Exported for tests so the pipeline can be\n * asserted from outside the command action.\n */\nexport function getSkillFiles(): Record<string, string> {\n assertSkillFilesValid();\n return SKILL_FILES;\n}\n\n// =============================================================================\n// Skill Install Writer (shared by `skills install` and `init`)\n// =============================================================================\n\nexport interface InstalledSkillFile {\n /** Path relative to the skill root, e.g. `SKILL.md`, `workflows/setup.md`. */\n relPath: string;\n /** Absolute destination path that was written. */\n destPath: string;\n bytes: number;\n}\n\nexport interface SkillInstallResult {\n skillDir: string;\n files: InstalledSkillFile[];\n totalBytes: number;\n}\n\n/**\n * Write the full skill tree (source of truth: package-local\n * `.claude/skills/mutagent-cli/**`, synced into src/generated/skill-content.ts\n * at build time) into `<targetRoot>/.claude/skills/mutagent-cli/`.\n *\n * THE single writer — `mutagent skills install` targets the repo root,\n * `mutagent init` targets the cwd. Never duplicate this loop.\n */\nexport function installCliSkill(targetRoot: string): SkillInstallResult {\n const files = getSkillFiles();\n const skillDir = join(targetRoot, SKILL_DIR);\n const writtenFiles: InstalledSkillFile[] = [];\n let totalBytes = 0;\n\n // Stable sorted traversal — entry file first for tree rendering.\n const sortedKeys = Object.keys(files).sort((a, b) => {\n if (a === SKILL_ENTRY_FILE) return -1;\n if (b === SKILL_ENTRY_FILE) return 1;\n return a.localeCompare(b);\n });\n\n for (const relPath of sortedKeys) {\n const destPath = join(skillDir, relPath);\n const parentDir = dirname(destPath);\n if (!existsSync(parentDir)) {\n mkdirSync(parentDir, { recursive: true });\n }\n const raw = files[relPath] ?? '';\n const finalContent = raw.endsWith('\\n') ? raw : `${raw}\\n`;\n writeFileSync(destPath, finalContent, 'utf-8');\n writtenFiles.push({ relPath, destPath, bytes: finalContent.length });\n totalBytes += finalContent.length;\n }\n\n return { skillDir, files: writtenFiles, totalBytes };\n}\n\n// =============================================================================\n// Skills Command\n// =============================================================================\n\nexport function createSkillsCommand(): Command {\n const skills = new Command('skills').description(\n 'Manage Mutagent CLI skills for coding agents',\n );\n\n skills\n .command('install')\n .description('Install Mutagent CLI skill for Claude Code')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent skills install\n\nThis creates a Claude Code skill at .claude/skills/mutagent-cli/SKILL.md\nthat teaches coding agents how to use the Mutagent CLI effectively.\n `,\n )\n .action((_options: Record<string, unknown>, cmd: Command) => {\n const parentCmd = cmd.parent?.parent;\n const isJson = parentCmd ? getJsonFlag(parentCmd) : false;\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const repoRoot = findRepoRoot();\n const result = installCliSkill(repoRoot);\n\n if (isJson) {\n output.output({\n installed: true,\n name: 'mutagent-cli',\n skillDir: result.skillDir,\n files: result.files.map(f => ({ path: f.destPath, bytes: f.bytes })),\n totalBytes: result.totalBytes,\n });\n } else {\n output.success(`Installed Mutagent CLI skill`);\n console.log(` ${chalk.dim('Dir:')} ${result.skillDir}`);\n console.log('');\n // Render a simple tree of written files\n for (let i = 0; i < result.files.length; i++) {\n const entry = result.files[i];\n if (!entry) continue;\n const isLast = i === result.files.length - 1;\n const prefix = isLast ? '└─' : '├─';\n console.log(\n ` ${chalk.dim(prefix)} ${entry.relPath} ${chalk.dim(`(${String(entry.bytes)} bytes)`)}`,\n );\n }\n console.log('');\n console.log(\n ` ${chalk.dim(`${String(result.files.length)} file(s), ${String(result.totalBytes)} bytes total.`)}`,\n );\n console.log(\n ` ${chalk.dim('This skill teaches coding agents how to use the Mutagent CLI.')}`,\n );\n console.log(\n ` ${chalk.dim('It will be automatically loaded by Claude Code when relevant triggers match.')}`,\n );\n }\n });\n\n return skills;\n}\n",
34
- "/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n *\n * Regenerate via: bun run sync-skill\n * Source of truth: mutagent-cli/.claude/skills/mutagent-cli/**\\/*.md\n *\n * This file is gitignored. Every lint/type-check/build/test run\n * regenerates it from the canonical skill tree so the two cannot drift.\n */\n\nexport const SKILL_FILES: Record<string, string> = {\n \"SKILL.md\": \"---\\nname: mutagent-cli\\ndescription: |\\n Mutagent CLI - the command-line client for the Mutagent platform.\\n Guides coding agents through setup (login, init, providers, workspaces),\\n installing Mutagent packages (helix, diagnostics, evaluator), and sending\\n product feedback.\\n Triggers: \\\"mutagent\\\", \\\"mutagent cli\\\", \\\"mutagent login\\\", \\\"set up mutagent\\\",\\n \\\"install diagnostics\\\", \\\"install evaluator\\\", \\\"install helix\\\", \\\"mutagent install\\\",\\n \\\"send feedback\\\", \\\"mutagent feedback\\\", \\\"report a bug\\\", \\\"usage\\\", \\\"quota\\\",\\n \\\"install skill\\\", \\\"install hooks\\\".\\nlicense: MIT\\nmetadata:\\n skill_version: \\\"1.2.0\\\"\\n skill_min_cli_version: \\\"0.1.163\\\"\\n---\\n\\n# Mutagent CLI Skill\\n\\n> **Canonical source**: `mutagent-cli/.claude/skills/mutagent-cli/SKILL.md`\\n> Packed into the CLI binary via `scripts/sync-skill.ts`. Installed to end-user\\n> dev environments via `mutagent skills install`. Edit this file, not the installed copy.\\n\\n---\\n\\n## CLI Prerequisite Check (RUN FIRST)\\n\\nBefore executing ANY workflow step, verify the CLI is installed and version-compatible:\\n\\n**Step 1 -- Check CLI presence:**\\n```bash\\nmutagent --version --json\\n```\\n\\n**Step 2 -- If command not found (error / not on PATH):**\\n\\nThis is the **Path 2 onboarding case**: the Skill was installed first (e.g. from a skill registry, manually, or bundled in someone else's CLAUDE.md), but the CLI itself isn't installed yet. Do NOT just dump install instructions and stop -- proactively **offer to install it**.\\n\\n**2a. Detect the user's package manager** (best-effort — check in this order):\\n```bash\\n# In the user's project root (cwd):\\ntest -f bun.lockb && echo \\\"bun\\\"\\ntest -f pnpm-lock.yaml && echo \\\"pnpm\\\"\\ntest -f yarn.lock && echo \\\"yarn\\\"\\ntest -f package-lock.json && echo \\\"npm\\\"\\n# Fallback: which bun || which pnpm || which yarn || which npm\\n```\\nIf multiple lockfiles exist, prefer in order: `bun > pnpm > yarn > npm`.\\nIf no lockfile and the user is in a non-JS project (e.g. Python, Go), ask which they prefer.\\n\\n**2b. Ask the user via AskUserQuestion** (do NOT auto-install without consent):\\n\\n> \\\"The Mutagent CLI is not installed yet. I can install it globally via `<detected-pm>`. Proceed?\\\"\\n\\nOptions to present:\\n1. **Yes, install globally with `<detected-pm>`** (Recommended) -- runs `<pm> add -g @mutagent/cli` (or `npm install -g @mutagent/cli` for npm)\\n2. **Yes, but use a different package manager** -- prompt for choice (npm / bun / pnpm / yarn)\\n3. **No, I'll install it myself** -- show the four install commands as a verbatim block; STOP and wait for the user to install\\n4. **Skip — I have it installed via a different path** -- ask the user to add it to PATH and re-invoke\\n\\n**2c. On user approval (option 1 or 2)**, run the install command in a Bash tool call:\\n```bash\\n# bun\\nbun add -g @mutagent/cli\\n# npm\\nnpm install -g @mutagent/cli\\n# pnpm\\npnpm add -g @mutagent/cli\\n# yarn\\nyarn global add @mutagent/cli\\n```\\nShow the install output to the user verbatim. After it completes, **re-run Step 1** (`mutagent --version --json`) to confirm the CLI is now on PATH. If the post-install version check still fails (e.g. global bin not on PATH), tell the user:\\n> \\\"Install succeeded but `mutagent` isn't on PATH yet. Common fixes:\\n> - bun: `export PATH=\\\\\\\"$HOME/.bun/bin:$PATH\\\\\\\"`\\n> - npm: check `npm config get prefix` and add `<prefix>/bin` to PATH\\n> - pnpm: `pnpm setup` then restart your shell\\n> - yarn: `yarn global bin` and add that path to PATH\\\"\\n> Then ask the user to restart their shell or source the relevant rc file, and re-invoke me.\\n\\n**2d. On rejection (option 3 or 4)**, output the four install commands as a verbatim block and STOP. Do NOT proceed with any workflow until the user confirms the CLI is installed and re-invokes the skill.\\n\\n```bash\\n# Pick one (Recommended in order: bun > pnpm > yarn > npm)\\nbun add -g @mutagent/cli\\npnpm add -g @mutagent/cli\\nyarn global add @mutagent/cli\\nnpm install -g @mutagent/cli\\n```\\n\\n**Why proactive install (not just \\\"stop and tell\\\")**: a user invoking this Skill has already shown intent to use Mutagent. Forcing them to context-switch to a separate terminal, copy-paste an install command, and re-invoke the agent is friction that often loses the user. Asking once + installing on consent is the smoother path. The opt-out (option 3/4) preserves user control.\\n\\n**Step 3 -- Version compatibility check:**\\nParse `_compat.cliVersion` from the `--version --json` output and compare against\\n`metadata.skill_min_cli_version` (above in this file's frontmatter, currently `0.1.163`).\\n\\n- If `cliVersion >= metadata.skill_min_cli_version`: all good, proceed normally.\\n- If `cliVersion < metadata.skill_min_cli_version`: emit a **PROMINENT PERSISTENT WARN** to the user:\\n\\n > Warning: **CLI version mismatch**: Your `mutagent` CLI is `{cliVersion}` but this Skill\\n > requires `>= 0.1.163`. Some features may not work correctly.\\n > Upgrade: `npm install -g @mutagent/cli@latest`\\n\\n **DO NOT BLOCK** -- proceed with the requested workflow after showing the warn.\\n Re-emit this warn at the start of every subsequent Skill invocation until the user upgrades.\\n\\n**Per decision D4 (locked 2026-05-03)**: version mismatch is warn-only, never a hard block.\\n\\n---\\n\\n## Login (RUN SECOND — most commands are login-gated)\\n\\nInstall, feedback, usage, workspaces, and providers commands all require\\nan authenticated session. Establish it early:\\n\\n- **CI / automated**: `export MUTAGENT_API_KEY=mt_... && mutagent login --json` -- no browser, no prompts.\\n- **Onboarding a user**: `mutagent login --browser --json` -- CLI prints auth URL to stdout, polls 5 min. **Surface the URL verbatim to the user.** `--non-interactive` is NOT needed when `--browser` is set.\\n\\n`mutagent login` is canonical. `mutagent auth login` is a back-compat alias. Both delegate to a single shared implementation; they are thin wrappers and stay that way by design.\\n\\nCheck current state anytime with `mutagent auth status --json`.\\n\\n---\\n\\n## Command Surface (active commands)\\n\\nRun `mutagent <command> --help` for the authoritative, current flag list — this\\nskill never inlines flags. The active surface:\\n\\n| Command | Purpose | Workflow |\\n|---|---|---|\\n| `login` / `auth` | Authenticate; check/clear session | [workflows/setup.md](./workflows/setup.md) |\\n| `init` | Interactive project setup wizard | [workflows/setup.md](./workflows/setup.md) |\\n| `config` | View/set local CLI config | [workflows/setup.md](./workflows/setup.md) |\\n| `workspaces` | List/select active workspace | [workflows/setup.md](./workflows/setup.md) |\\n| `providers` | List providers + model catalog | [workflows/setup.md](./workflows/setup.md) |\\n| `usage` | Show usage + quota | [workflows/setup.md](./workflows/setup.md) |\\n| `skills install` | Install this skill into a project | [workflows/setup.md](./workflows/setup.md) |\\n| `hooks install` | Install Claude Code telemetry hooks | [workflows/setup.md](./workflows/setup.md) |\\n| `install <pkg>` | Install helix / diagnostics / evaluator | [workflows/install.md](./workflows/install.md) |\\n| `feedback send` | Send product feedback | [workflows/feedback.md](./workflows/feedback.md) |\\n\\n---\\n\\n## Core Rules -- NON-NEGOTIABLE\\n\\n1. **`--json` on EVERY command.** No exceptions. Agents use JSON mode exclusively.\\n2. **`<command> --help` BEFORE first use of any command.** The CLI is the source of truth for flags -- this skill never inlines them.\\n3. **Login before login-gated commands.** install, feedback, usage, workspaces, and providers require an authenticated session. Run `mutagent login` (or set `MUTAGENT_API_KEY`) first.\\n4. **Show command output to the user.** Command output appears in bash blocks the user may not see -- always present the key results in your chat reply.\\n5. **Confirm before writing to the user's machine or spending.** `install`, `skills install`, and `hooks install` write files or install packages -- state what will happen and get confirmation first.\\n\\n---\\n\\n## Task Router -- route by user intent\\n\\nMatch the user's first request. Load ONLY the matching subfile per the table. Do NOT preload the whole set.\\n\\n| User said / signal detected | Load subfile | Why |\\n|---|---|---|\\n| \\\"log in\\\", \\\"authenticate\\\", \\\"set up mutagent\\\", \\\"init\\\", \\\"which workspace\\\", \\\"what models\\\", \\\"usage\\\", \\\"quota\\\", \\\"install the skill\\\", \\\"install hooks\\\" | [workflows/setup.md](./workflows/setup.md) | Auth + project setup + discovery commands |\\n| \\\"install helix\\\", \\\"install diagnostics\\\", \\\"install evaluator\\\", \\\"add mutagent package\\\" | [workflows/install.md](./workflows/install.md) | Login-gated meta-installer |\\n| \\\"send feedback\\\", \\\"report a bug\\\", \\\"file feedback\\\", \\\"the CLI crashed\\\" | [workflows/feedback.md](./workflows/feedback.md) | Product feedback (+ optional transcript) |\\n| Unclear / first time | run `mutagent --help --json` then reroute | Discover the surface before acting |\\n\\n---\\n\\n## Subfile Map\\n\\n| File | WHEN to load | WHY |\\n|---|---|---|\\n| [workflows/setup.md](./workflows/setup.md) | User is onboarding: login, init, config, workspaces, providers, usage, skill/hooks install | Auth + configuration + discovery |\\n| [workflows/install.md](./workflows/install.md) | User wants to install a Mutagent package | `install <helix\\\\|diagnostics\\\\|evaluator>` meta-command |\\n| [workflows/feedback.md](./workflows/feedback.md) | User wants to send feedback or report a bug | `feedback send` + `--attach-transcript` |\\n\\n---\\n\\n## MANDATORY: Verbatim Card Display Protocol\\n\\nIf a mutagent CLI response contains `_directive.renderedCard`, your FIRST action\\nMUST be to copy that text byte-for-byte into your chat reply BEFORE running any\\nfurther command, asking any question, or doing any other work.\\n\\nThe card also appears on stderr (auto-echoed by the CLI via `echoDirectiveToStderr`)\\nbut you MUST STILL render it in chat -- bash/stderr blocks may be collapsed in the\\nuser's UI and they cannot read them.\\n\\n- Do NOT summarize, paraphrase, or truncate any line of the card.\\n- Do NOT skip the card to \\\"save tokens.\\\"\\n- Do NOT delay rendering until \\\"after the next step.\\\"\\n- This applies whether `_directive.display` is `'status_card'` or absent -- the\\n trigger is the presence of `renderedCard`, not the display tag.\\n- Failure to display the card verbatim = protocol violation.\\n\\n---\\n\\n## Anti-patterns -- NEVER do these\\n\\n- Run any command without `--json`\\n- Inline CLI flags from memory -- always read `--help` first\\n- Skip showing command output results to the user\\n- Run a login-gated command before establishing a session\\n- Install a package or write skill/hooks files without user confirmation\\n\\n---\\n\\n## Error Recovery -- Agent-Aware Bug Reporting\\n\\nWhen ANY mutagent CLI command returns a non-zero exit code or an error response:\\n\\n1. **Show the error to the user** (always) -- reproduce the exact command and output.\\n2. **ASK the user** if they want to file a bug report.\\n3. **On user approval**, send the feedback — **without a transcript**:\\n ```bash\\n mutagent feedback send \\\"<one-line summary of the failure>\\\" \\\\\\n --category cli --json\\n ```\\n - Use `--category stage:<spec|build|evaluate|diagnose|optimize>` when the failure is about a specific lifecycle stage rather than the CLI itself.\\n\\n**Do NOT pass `--attach-transcript` unless the user explicitly asks for it.** It uploads\\nthe coding-agent session JSONL — source code, absolute paths (including their username),\\nbranch and repository names, internal hostnames, and the business context of their prompts.\\nCredentials are scanned for and redacted, but detection is **best-effort**.\\n\\nApproval to \\\"file a bug report\\\" is **NOT** approval to upload a session. They are separate\\nquestions and must be asked separately. If you believe the transcript would genuinely help,\\nsay exactly what it contains and ask a second time.\\n\\nSee [workflows/feedback.md](./workflows/feedback.md) for the full feedback surface.\\n\\n### If `mutagent feedback send` itself fails\\n\\nIf the feedback command returns a non-zero exit code, DO NOT retry silently. Show the user:\\n\\n1. The output of `mutagent auth status` (confirms login state).\\n2. The fallback: open https://app.mutagent.io and use the in-app feedback form.\\n\\n---\\n\\n## Extensibility\\n\\nAdd `workflows/custom-<name>.md` with a markdown heading (or frontmatter\\n`triggers: [\\\"phrase\\\"]`) -- auto-discovered by the sync pipeline. No rebuild of the\\nCLI source needed; just re-run `bun run sync-skill`.\\n\",\n \"workflows/feedback.md\": \"---\\nname: mutagent-cli-workflows-feedback\\ndescription: |\\n Product feedback workflow. Sends feedback about the CLI, Helix, or a lifecycle\\n stage via `mutagent feedback send`. Optionally attaches the coding-agent\\n session transcript as a separate context artifact. Login-gated.\\ntriggers:\\n - \\\"send feedback\\\"\\n - \\\"mutagent feedback\\\"\\n - \\\"report a bug\\\"\\n - \\\"file feedback\\\"\\n - \\\"the cli crashed\\\"\\n - \\\"feedback about\\\"\\n---\\n\\n# Workflow — Feedback\\n\\n> **Scope**: sends a feedback message (and optionally your session transcript)\\n> to the Mutagent platform. Login-gated.\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- **Login-gated** — run `mutagent login` first\\n\\n---\\n\\n## Surface\\n\\n```bash\\nmutagent feedback send --help # authoritative flags — read before first use\\n\\nmutagent feedback send \\\"<feedback body>\\\" \\\\\\n [--title \\\"<5-8 word summary>\\\"] \\\\\\n [--category <cli|helix|stage:<spec|build|evaluate|diagnose|optimize>>] \\\\\\n [--session <id>] \\\\\\n [--attach-transcript [path]] \\\\\\n [--json]\\n```\\n\\n- **Positional `<feedback body>`** — the feedback text (required, max 10000 chars).\\n- **`--title`** — optional short (5–8 word) summary of the session timeline.\\n- **`--category`** — one of:\\n - `cli` (default) — feedback about the CLI itself\\n - `helix` — feedback about Helix\\n - `stage:<x>` — feedback about a lifecycle stage/skill, where `<x>` ∈ `spec | build | evaluate | diagnose | optimize`\\n- **`--session <id>`** — link this feedback to a specific session id, so the team can correlate it with that run. Optional.\\n- **`--attach-transcript [path]`** — upload the coding-agent session JSONL as context. This is a **SEPARATE artifact** from the feedback text. Bare flag auto-detects the newest session (across claude-code, codex, omp) and tail-caps it; or pass an explicit path.\\n- **`--json`** — structured output (Rule 1: always use).\\n\\nAuto-captured context (harness, CLI version, platform, OS, node version) is\\nattached automatically — you never set it manually.\\n\\n---\\n\\n## Steps\\n\\n```\\n1. mutagent auth status --json\\n → feedback is login-gated; confirm session or run login first\\n\\n2. mutagent feedback send --help\\n → read the current flags (Rule 2)\\n\\n3. Compose the feedback body from the user's own words\\n → pick --category (default cli; use stage:<x> for a lifecycle stage)\\n → do NOT offer --attach-transcript unless the user explicitly asks for it (see Transcript safety below)\\n\\n4. mutagent feedback send \\\"<body>\\\" --category <c> --json\\n → show the returned id + category + transcriptAttached to the user\\n```\\n\\n---\\n\\n## Examples\\n\\n```bash\\nmutagent feedback send \\\"Optimizer results were great\\\" --json\\nmutagent feedback send \\\"Eval gate was confusing\\\" --category stage:evaluate --json\\nmutagent feedback send \\\"CLI crashed on login\\\" --category cli \\\\\\n --title \\\"login crash on first run\\\" --json\\nmutagent feedback send \\\"Diagnose loop stalled\\\" --category stage:diagnose \\\\\\n --session run_abc123 --json\\n\\n# ONLY when the operator explicitly asked to attach their session — see Transcript safety:\\nmutagent feedback send \\\"CLI crashed on login\\\" --category cli --attach-transcript --json\\n```\\n\\n---\\n\\n## Bug reporting (agent-aware)\\n\\nWhen a mutagent command fails, this is the canonical bug-report path:\\n\\n1. Show the user the failed command + error.\\n2. ASK if they want to file a report.\\n3. On approval, send the feedback — WITHOUT a transcript:\\n ```bash\\n mutagent feedback send \\\"<one-line failure summary>\\\" --category cli --json\\n ```\\n Approval to \\\"file a report\\\" is NOT approval to upload a session. See Transcript safety.\\n\\n---\\n\\n## Output handling\\n\\n- On success (`{ success: true, id, category, transcriptAttached }`): confirm the feedback id and whether a transcript was attached.\\n- If `--attach-transcript` (bare) finds no session: the CLI warns and continues without a transcript — tell the user the text was sent but no transcript was found, and offer to pass an explicit path.\\n- On an auth error: route to login, then retry.\\n\\n---\\n\\n## Common pitfalls\\n\\n- Passing an invalid `--category` (only `cli`, `helix`, `stage:<x>` are valid).\\n- Confusing the feedback body with the transcript — the body is your message; the transcript is a separate uploaded artifact.\\n- Sending before login (feedback is login-gated).\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Error Recovery\\n- [workflows/setup.md](./setup.md) → login (prerequisite for feedback)\\n\\n\\n## Transcript safety (`--attach-transcript`)\\n\\n**Never pass this flag on your own initiative.** Only when the operator explicitly asks to\\nattach their session.\\n\\nA session JSONL contains **source code, absolute paths including their username, branch and\\nrepository names, internal hostnames, and the business context of every prompt**. It is a\\nseparate artifact from the feedback text and is uploaded whole (last-200KB tail).\\n\\nCredentials are scanned for and redacted before upload, and the byte size + source path are\\nprinted before the network call — but **detection is best-effort**. If the session handled\\nsecrets, do not attach it.\\n\\n\\\"Yes, file a bug report\\\" is **not** consent to upload a session. Ask separately, state what\\nthe file contains, and accept no as the default.\\n\\n**Response fields** when a transcript IS attached: `transcriptAttached`, `transcriptBytes`,\\n`transcriptSource`, and `redactions`. **Always surface `redactions` to the operator** — it is\\nhow they learn something sensitive was in the file at all.\\n\",\n \"workflows/install.md\": \"---\\nname: mutagent-cli-workflows-install\\ndescription: |\\n Meta-installer workflow. Installs a Mutagent package (helix, diagnostics, or\\n evaluator) into the user's environment via `mutagent install <package>`.\\n Login-gated. diagnostics/evaluator come from public npm; helix is fetched\\n from a private registry via a login-brokered signed URL (no static secret).\\ntriggers:\\n - \\\"install diagnostics\\\"\\n - \\\"install evaluator\\\"\\n - \\\"install helix\\\"\\n - \\\"mutagent install\\\"\\n - \\\"add mutagent package\\\"\\n - \\\"set up diagnostics\\\"\\n - \\\"set up evaluator\\\"\\n---\\n\\n# Workflow — Install (Meta-Installer)\\n\\n> **Scope differs by package** — read `scope` in the response, never assume:\\n> - `helix` → installed into the CURRENT project directory (`scope: \\\"project\\\"`).\\n> - `diagnostics` / `evaluator` → **npm installs the package GLOBALLY**\\n> (`scope: \\\"global\\\"`, literally `npm install -g`). It does NOT go in the\\n> user's project. Its skill init is the part you later run in the project.\\n>\\n> This WRITES to the user's machine — confirm before running (Core Rule 5).\\n>\\n> **`success: true` does NOT mean the user is ready to go.** For `diagnostics`\\n> and `evaluator` it means the npm package landed; the skill still needs the\\n> package's own init. Branch on `skillInstalled` — see *Output handling* below.\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- **Login-gated** — run `mutagent login` first\\n- Confirm before installing (writes to the user's machine)\\n\\n---\\n\\n## Surface\\n\\n```bash\\nmutagent install --help # authoritative flags — read before first use\\n\\nmutagent install <package> [--harness <claude-code|codex|omp>] \\\\\\n [--version <v>] [--json]\\n```\\n\\nWhere `<package>` is one of:\\n\\n| Package | Source | Notes |\\n|---|---|---|\\n| `diagnostics` | public npm `@mutagent/diagnostics` | Ready to install |\\n| `evaluator` | public npm `@mutagent/evaluator` | Ready to install |\\n| `helix` | private registry via login-brokered signed URL | Ready to install — login-gated download, sha256-verified, then initialized into your project |\\n\\n**Flags** (verify against `--help`):\\n- `--harness <claude-code|codex|omp>` -- target coding-agent harness (default `claude-code`).\\n- Install scope is FIXED PER PACKAGE and is not selectable: `helix` installs into the current directory; `diagnostics`/`evaluator` are installed GLOBALLY by npm. `--global` is retired: passing it fails and explains both paths.\\n- `--version <v>` -- pin a specific version (default: latest).\\n- `--json` -- structured output (Rule 1).\\n\\n---\\n\\n## Steps\\n\\n```\\n1. mutagent auth status --json\\n → confirm the user is logged in (install is login-gated)\\n → if not authenticated, run the login workflow first\\n\\n2. mutagent install --help\\n → read the current packages + flags (Rule 2)\\n\\n3. Confirm with the user WHAT will be installed and WHERE\\n → state the REAL destination for the package being installed, e.g.\\n helix: \\\"I'll install helix into <current directory>. Proceed?\\\"\\n diagnostics: \\\"I'll install @mutagent/diagnostics GLOBALLY via npm, then\\n you'll run its init inside your project. Proceed?\\\"\\n\\n4. mutagent install <package> [--harness <h>] [--version <v>] --json\\n → run the install\\n → show the command output to the user: package, version, harness, and\\n `scope`. Surface `projectPath` ONLY when `scope` is `\\\"project\\\"` — it is\\n ABSENT from the response on the global npm path.\\n\\n5. CHECK `skillInstalled` in the JSON response — do NOT stop at `success: true`\\n → skillInstalled === true → done; the skill is installed and usable\\n → skillInstalled === false → NOT done. Tell the user plainly that the npm\\n package is installed but the skill is not, then surface `nextStep`\\n (e.g. `mutagent-diagnostics init`) as the command to run next.\\n Confirm before running it — it writes to their project (Core Rule 5).\\n```\\n\\n---\\n\\n## Examples\\n\\n```bash\\nmutagent install helix --json\\nmutagent install helix --harness codex --json\\nmutagent install diagnostics --json\\nmutagent install evaluator --version 1.2.3 --json\\nmutagent install diagnostics --harness codex --json\\n```\\n\\n---\\n\\n## Output handling\\n\\nSuccess shape:\\n\\n```json\\n{\\n \\\"success\\\": true,\\n \\\"package\\\": \\\"diagnostics\\\",\\n \\\"version\\\": \\\"1.2.3\\\",\\n \\\"harness\\\": \\\"claude-code\\\",\\n \\\"scope\\\": \\\"global\\\",\\n \\\"skillInstalled\\\": false,\\n \\\"nextStep\\\": \\\"mutagent-diagnostics init\\\",\\n \\\"_links\\\": { \\\"install\\\": \\\"...\\\", \\\"login\\\": \\\"...\\\" }\\n}\\n```\\n\\n`helix` instead returns `\\\"scope\\\": \\\"project\\\"` with `\\\"projectPath\\\"`, and\\n`\\\"skillInstalled\\\": true`.\\n\\n- **`skillInstalled` is the field to branch on — NOT `success`.** `success: true`\\n reports that the install step did its job, not that the user is ready.\\n `nextStep` is present only when work remains.\\n- `skillInstalled: false` (npm packages — `diagnostics`, `evaluator`): the npm\\n package is installed; the harness skill is **not**. Say so explicitly and give\\n the user `nextStep`. Reporting only \\\"installed\\\" here is a known past defect —\\n users were told a skill had landed when none had.\\n- `skillInstalled: true` (`helix`): the CLI resolved a signed download URL from\\n the login broker, downloaded + sha256-verified the plugin, and ran its init\\n into the project. Nothing further is needed. An `INTEGRITY_ERROR` means the\\n download failed checksum verification — retry.\\n- **`scope` tells you WHERE it went. Read it; do not assume.**\\n - `\\\"global\\\"` (`diagnostics`, `evaluator`) — npm installed the package into its\\n GLOBAL root (`npm install -g`). The package is **not** in the user's project;\\n never tell the user it is. No path is reported — run `npm root -g` if the\\n user needs the directory.\\n - `\\\"project\\\"` (`helix`) — installed into `projectPath`. Surface it so the user\\n can confirm the location.\\n- On an auth error (including a broker `AUTH_REQUIRED`): route to the login\\n workflow, then retry.\\n- On `INVALID_ARGUMENTS` naming `--global`: the flag is retired. Re-run without\\n it, or `cd` to the intended project first — the error names the path that\\n would have been used.\\n\\n---\\n\\n## Common pitfalls\\n\\n- **Treating `success: true` as \\\"the user is ready\\\".** For `diagnostics` and\\n `evaluator` it is not — check `skillInstalled` and surface `nextStep`. Stopping\\n at `success` leaves the user with a package and no skill, believing it works.\\n- **Telling the user a globally-installed package is in their project.**\\n `diagnostics` and `evaluator` install globally (`npm install -g`). Report the\\n location from `scope`, never from the directory you ran in.\\n- Running before login → auth error (install is login-gated).\\n- Assuming `helix` installs from public npm — it is fetched from a private registry via a login-brokered signed URL (the CLI holds no static secret).\\n- Installing without confirming with the user first (Core Rule 5).\\n- Passing `--global` — retired; scope is fixed per package and is not selectable.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Task Router\\n- [workflows/setup.md](./setup.md) → login (prerequisite for install)\\n\",\n \"workflows/setup.md\": \"---\\nname: mutagent-cli-workflows-setup\\ndescription: |\\n Onboarding + configuration workflow. Covers login/auth, the init wizard,\\n config, workspaces, providers (incl. model catalog), usage/quota, and\\n installing this skill + Claude Code telemetry hooks.\\ntriggers:\\n - \\\"log in\\\"\\n - \\\"authenticate\\\"\\n - \\\"set up mutagent\\\"\\n - \\\"mutagent init\\\"\\n - \\\"which workspace\\\"\\n - \\\"what models\\\"\\n - \\\"check usage\\\"\\n - \\\"install the skill\\\"\\n - \\\"install hooks\\\"\\n---\\n\\n# Workflow — Setup (Auth, Config, Discovery)\\n\\n> **Scope**: authentication, local configuration, discovery, and installing the\\n> skill/hooks. `skills install` and `hooks install` write files into the user's\\n> project — confirm first (Core Rule 5).\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- Login before login-gated commands\\n\\n---\\n\\n## 1. Login / auth\\n\\n`mutagent login` is canonical; `mutagent auth login` is a back-compat alias (both\\ndelegate to one shared implementation).\\n\\n```bash\\n# CI / automated (no browser)\\nexport MUTAGENT_API_KEY=mt_...\\nmutagent login --json\\n\\n# Onboarding a real user (browser)\\nmutagent login --browser --json # prints an auth URL to stdout, polls 5 min\\n # → surface the URL to the user VERBATIM\\n\\nmutagent auth status --json # check session state\\nmutagent auth logout --json # clear stored credentials\\n```\\n\\n---\\n\\n## 2. init (config + skill install)\\n\\n```bash\\nmutagent init --help\\nmutagent init --json # writes .mutagentrc.json + installs this skill\\n```\\n\\n`init` writes `.mutagentrc.json` (endpoint / workspace / org — skipped if\\npresent) and installs the Mutagent CLI skill into `.claude/skills/mutagent-cli/`.\\nIt never prompts. If the user is not logged in, it prints login guidance and\\nexits — run `mutagent login` first, then re-run `mutagent init`.\\n\\n---\\n\\n## 3. config\\n\\n```bash\\nmutagent config list --json # show all config\\nmutagent config get <key> --json # keys: apiKey, endpoint, format, timeout,\\n # defaultWorkspace, defaultOrganization\\nmutagent config set workspace <id> --json # set default workspace\\nmutagent config set org <id> --json # set default organization\\n```\\n\\n---\\n\\n## 4. workspaces (read-only)\\n\\n```bash\\nmutagent workspaces list --json # list workspaces\\nmutagent workspaces get <id> --json # workspace details\\n```\\n\\nTo make a workspace the default, use `mutagent config set workspace <id>`.\\n\\n---\\n\\n## 5. providers (BYOK + model catalog)\\n\\n```bash\\nmutagent providers list --json # configured providers\\nmutagent providers list --models --json # available models per provider (/providers/catalog)\\nmutagent providers get <id> --json # provider details\\nmutagent providers test <id> --json # test connectivity\\n```\\n\\nUse `providers list --models` to discover which models are available before\\nselecting one for any downstream tool.\\n\\n---\\n\\n## 6. usage / quota\\n\\n```bash\\nmutagent usage --json # resource counts + quota\\n```\\n\\nShow the usage output to the user so spend/quota is transparent.\\n\\n---\\n\\n## 7. Install the skill + hooks\\n\\n```bash\\n# Install THIS skill into the current project's .claude/skills/\\nmutagent skills install --json\\n\\n# Install Claude Code telemetry hooks (safe merge into .claude/settings.local.json —\\n# never overwrites existing hooks). These emit session telemetry to the platform.\\nmutagent hooks install --json\\n```\\n\\nBoth commands write into the user's project — state what will be written and\\nconfirm before running (Core Rule 5).\\n\\n---\\n\\n## Common pitfalls\\n\\n- Running login-gated commands (providers, usage, workspaces) before `mutagent login`.\\n- Forgetting `--json` (Rule 1).\\n- Running `hooks install` / `skills install` without telling the user what files change.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Task Router\\n- [workflows/install.md](./install.md) → install helix / diagnostics / evaluator packages\\n\",\n};\n\n/**\n * Backward-compat alias for callers that still import `SKILL_CONTENT`.\n * Points at the entry file (SKILL.md). New code should prefer\n * `SKILL_FILES` to access the full tree including workflows/ and concepts/.\n */\nexport const SKILL_CONTENT: string = SKILL_FILES[\"SKILL.md\"] ?? '';\n",
34
+ "/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n *\n * Regenerate via: bun run sync-skill\n * Source of truth: mutagent-cli/.claude/skills/mutagent-cli/**\\/*.md\n *\n * This file is gitignored. Every lint/type-check/build/test run\n * regenerates it from the canonical skill tree so the two cannot drift.\n */\n\nexport const SKILL_FILES: Record<string, string> = {\n \"SKILL.md\": \"---\\nname: mutagent-cli\\ndescription: |\\n Mutagent CLI - the command-line client for the Mutagent platform.\\n Guides coding agents through setup (login, init, providers, workspaces),\\n installing Mutagent packages (helix), and sending\\n product feedback.\\n Triggers: \\\"mutagent\\\", \\\"mutagent cli\\\", \\\"mutagent login\\\", \\\"set up mutagent\\\",\\n \\\"install diagnostics\\\", \\\"install evaluator\\\", \\\"install helix\\\", \\\"mutagent install\\\",\\n \\\"send feedback\\\", \\\"mutagent feedback\\\", \\\"report a bug\\\", \\\"usage\\\", \\\"quota\\\",\\n \\\"install skill\\\", \\\"install hooks\\\".\\nlicense: MIT\\nmetadata:\\n skill_version: \\\"1.2.0\\\"\\n skill_min_cli_version: \\\"0.1.163\\\"\\n---\\n\\n# Mutagent CLI Skill\\n\\n> **Canonical source**: `mutagent-cli/.claude/skills/mutagent-cli/SKILL.md`\\n> Packed into the CLI binary via `scripts/sync-skill.ts`. Installed to end-user\\n> dev environments via `mutagent skills install`. Edit this file, not the installed copy.\\n\\n---\\n\\n## CLI Prerequisite Check (RUN FIRST)\\n\\nBefore executing ANY workflow step, verify the CLI is installed and version-compatible:\\n\\n**Step 1 -- Check CLI presence:**\\n```bash\\nmutagent --version --json\\n```\\n\\n**Step 2 -- If command not found (error / not on PATH):**\\n\\nThis is the **Path 2 onboarding case**: the Skill was installed first (e.g. from a skill registry, manually, or bundled in someone else's CLAUDE.md), but the CLI itself isn't installed yet. Do NOT just dump install instructions and stop -- proactively **offer to install it**.\\n\\n**2a. Detect the user's package manager** (best-effort — check in this order):\\n```bash\\n# In the user's project root (cwd):\\ntest -f bun.lockb && echo \\\"bun\\\"\\ntest -f pnpm-lock.yaml && echo \\\"pnpm\\\"\\ntest -f yarn.lock && echo \\\"yarn\\\"\\ntest -f package-lock.json && echo \\\"npm\\\"\\n# Fallback: which bun || which pnpm || which yarn || which npm\\n```\\nIf multiple lockfiles exist, prefer in order: `bun > pnpm > yarn > npm`.\\nIf no lockfile and the user is in a non-JS project (e.g. Python, Go), ask which they prefer.\\n\\n**2b. Ask the user via AskUserQuestion** (do NOT auto-install without consent):\\n\\n> \\\"The Mutagent CLI is not installed yet. I can install it globally via `<detected-pm>`. Proceed?\\\"\\n\\nOptions to present:\\n1. **Yes, install globally with `<detected-pm>`** (Recommended) -- runs `<pm> add -g @mutagent/cli` (or `npm install -g @mutagent/cli` for npm)\\n2. **Yes, but use a different package manager** -- prompt for choice (npm / bun / pnpm / yarn)\\n3. **No, I'll install it myself** -- show the four install commands as a verbatim block; STOP and wait for the user to install\\n4. **Skip — I have it installed via a different path** -- ask the user to add it to PATH and re-invoke\\n\\n**2c. On user approval (option 1 or 2)**, run the install command in a Bash tool call:\\n```bash\\n# bun\\nbun add -g @mutagent/cli\\n# npm\\nnpm install -g @mutagent/cli\\n# pnpm\\npnpm add -g @mutagent/cli\\n# yarn\\nyarn global add @mutagent/cli\\n```\\nShow the install output to the user verbatim. After it completes, **re-run Step 1** (`mutagent --version --json`) to confirm the CLI is now on PATH. If the post-install version check still fails (e.g. global bin not on PATH), tell the user:\\n> \\\"Install succeeded but `mutagent` isn't on PATH yet. Common fixes:\\n> - bun: `export PATH=\\\\\\\"$HOME/.bun/bin:$PATH\\\\\\\"`\\n> - npm: check `npm config get prefix` and add `<prefix>/bin` to PATH\\n> - pnpm: `pnpm setup` then restart your shell\\n> - yarn: `yarn global bin` and add that path to PATH\\\"\\n> Then ask the user to restart their shell or source the relevant rc file, and re-invoke me.\\n\\n**2d. On rejection (option 3 or 4)**, output the four install commands as a verbatim block and STOP. Do NOT proceed with any workflow until the user confirms the CLI is installed and re-invokes the skill.\\n\\n```bash\\n# Pick one (Recommended in order: bun > pnpm > yarn > npm)\\nbun add -g @mutagent/cli\\npnpm add -g @mutagent/cli\\nyarn global add @mutagent/cli\\nnpm install -g @mutagent/cli\\n```\\n\\n**Why proactive install (not just \\\"stop and tell\\\")**: a user invoking this Skill has already shown intent to use Mutagent. Forcing them to context-switch to a separate terminal, copy-paste an install command, and re-invoke the agent is friction that often loses the user. Asking once + installing on consent is the smoother path. The opt-out (option 3/4) preserves user control.\\n\\n**Step 3 -- Version compatibility check:**\\nParse `_compat.cliVersion` from the `--version --json` output and compare against\\n`metadata.skill_min_cli_version` (above in this file's frontmatter, currently `0.1.163`).\\n\\n- If `cliVersion >= metadata.skill_min_cli_version`: all good, proceed normally.\\n- If `cliVersion < metadata.skill_min_cli_version`: emit a **PROMINENT PERSISTENT WARN** to the user:\\n\\n > Warning: **CLI version mismatch**: Your `mutagent` CLI is `{cliVersion}` but this Skill\\n > requires `>= 0.1.163`. Some features may not work correctly.\\n > Upgrade: `npm install -g @mutagent/cli@latest`\\n\\n **DO NOT BLOCK** -- proceed with the requested workflow after showing the warn.\\n Re-emit this warn at the start of every subsequent Skill invocation until the user upgrades.\\n\\n**Per decision D4 (locked 2026-05-03)**: version mismatch is warn-only, never a hard block.\\n\\n---\\n\\n## Login (RUN SECOND — most commands are login-gated)\\n\\nInstall, feedback, usage, workspaces, and providers commands all require\\nan authenticated session. Establish it early:\\n\\n- **CI / automated**: `export MUTAGENT_API_KEY=mt_... && mutagent login --json` -- no browser, no prompts.\\n- **Onboarding a user**: `mutagent login --browser --json` -- CLI prints auth URL to stdout, polls 5 min. **Surface the URL verbatim to the user.** `--non-interactive` is NOT needed when `--browser` is set.\\n\\n`mutagent login` is canonical. `mutagent auth login` is a back-compat alias. Both delegate to a single shared implementation; they are thin wrappers and stay that way by design.\\n\\nCheck current state anytime with `mutagent auth status --json`.\\n\\n---\\n\\n## Command Surface (active commands)\\n\\nRun `mutagent <command> --help` for the authoritative, current flag list — this\\nskill never inlines flags. The active surface:\\n\\n| Command | Purpose | Workflow |\\n|---|---|---|\\n| `login` / `auth` | Authenticate; check/clear session | [workflows/setup.md](./workflows/setup.md) |\\n| `init` | Interactive project setup wizard | [workflows/setup.md](./workflows/setup.md) |\\n| `config` | View/set local CLI config | [workflows/setup.md](./workflows/setup.md) |\\n| `workspaces` | List/select active workspace | [workflows/setup.md](./workflows/setup.md) |\\n| `providers` | List providers + model catalog | [workflows/setup.md](./workflows/setup.md) |\\n| `usage` | Show usage + quota | [workflows/setup.md](./workflows/setup.md) |\\n| `skills install` | Install this skill into a project | [workflows/setup.md](./workflows/setup.md) |\\n| `hooks install` | Install Claude Code telemetry hooks | [workflows/setup.md](./workflows/setup.md) |\\n| `install <pkg>` | Install helix (diagnostics / evaluator are retired) | [workflows/install.md](./workflows/install.md) |\\n| `feedback send` | Send product feedback | [workflows/feedback.md](./workflows/feedback.md) |\\n\\n---\\n\\n## Core Rules -- NON-NEGOTIABLE\\n\\n1. **`--json` on EVERY command.** No exceptions. Agents use JSON mode exclusively.\\n2. **`<command> --help` BEFORE first use of any command.** The CLI is the source of truth for flags -- this skill never inlines them.\\n3. **Login before login-gated commands.** install, feedback, usage, workspaces, and providers require an authenticated session. Run `mutagent login` (or set `MUTAGENT_API_KEY`) first.\\n4. **Show command output to the user.** Command output appears in bash blocks the user may not see -- always present the key results in your chat reply.\\n5. **Confirm before writing to the user's machine or spending.** `install`, `skills install`, and `hooks install` write files or install packages -- state what will happen and get confirmation first.\\n\\n---\\n\\n## Task Router -- route by user intent\\n\\nMatch the user's first request. Load ONLY the matching subfile per the table. Do NOT preload the whole set.\\n\\n| User said / signal detected | Load subfile | Why |\\n|---|---|---|\\n| \\\"log in\\\", \\\"authenticate\\\", \\\"set up mutagent\\\", \\\"init\\\", \\\"which workspace\\\", \\\"what models\\\", \\\"usage\\\", \\\"quota\\\", \\\"install the skill\\\", \\\"install hooks\\\" | [workflows/setup.md](./workflows/setup.md) | Auth + project setup + discovery commands |\\n| \\\"install helix\\\", \\\"install diagnostics\\\", \\\"install evaluator\\\", \\\"add mutagent package\\\" | [workflows/install.md](./workflows/install.md) | Login-gated meta-installer (diagnostics/evaluator are retired → helix) |\\n| \\\"send feedback\\\", \\\"report a bug\\\", \\\"file feedback\\\", \\\"the CLI crashed\\\" | [workflows/feedback.md](./workflows/feedback.md) | Product feedback (+ optional transcript) |\\n| Unclear / first time | run `mutagent --help --json` then reroute | Discover the surface before acting |\\n\\n---\\n\\n## Subfile Map\\n\\n| File | WHEN to load | WHY |\\n|---|---|---|\\n| [workflows/setup.md](./workflows/setup.md) | User is onboarding: login, init, config, workspaces, providers, usage, skill/hooks install | Auth + configuration + discovery |\\n| [workflows/install.md](./workflows/install.md) | User wants to install a Mutagent package | `install helix` meta-command |\\n| [workflows/feedback.md](./workflows/feedback.md) | User wants to send feedback or report a bug | `feedback send` + `--attach-transcript` |\\n\\n---\\n\\n## MANDATORY: Verbatim Card Display Protocol\\n\\nIf a mutagent CLI response contains `_directive.renderedCard`, your FIRST action\\nMUST be to copy that text byte-for-byte into your chat reply BEFORE running any\\nfurther command, asking any question, or doing any other work.\\n\\nThe card also appears on stderr (auto-echoed by the CLI via `echoDirectiveToStderr`)\\nbut you MUST STILL render it in chat -- bash/stderr blocks may be collapsed in the\\nuser's UI and they cannot read them.\\n\\n- Do NOT summarize, paraphrase, or truncate any line of the card.\\n- Do NOT skip the card to \\\"save tokens.\\\"\\n- Do NOT delay rendering until \\\"after the next step.\\\"\\n- This applies whether `_directive.display` is `'status_card'` or absent -- the\\n trigger is the presence of `renderedCard`, not the display tag.\\n- Failure to display the card verbatim = protocol violation.\\n\\n---\\n\\n## Anti-patterns -- NEVER do these\\n\\n- Run any command without `--json`\\n- Inline CLI flags from memory -- always read `--help` first\\n- Skip showing command output results to the user\\n- Run a login-gated command before establishing a session\\n- Install a package or write skill/hooks files without user confirmation\\n\\n---\\n\\n## Error Recovery -- Agent-Aware Bug Reporting\\n\\nWhen ANY mutagent CLI command returns a non-zero exit code or an error response:\\n\\n1. **Show the error to the user** (always) -- reproduce the exact command and output.\\n2. **ASK the user** if they want to file a bug report.\\n3. **On user approval**, send the feedback — **without a transcript**:\\n ```bash\\n mutagent feedback send \\\"<one-line summary of the failure>\\\" \\\\\\n --category cli --json\\n ```\\n - Use `--category stage:<spec|build|evaluate|diagnose|optimize>` when the failure is about a specific lifecycle stage rather than the CLI itself.\\n\\n**Do NOT pass `--attach-transcript` unless the user explicitly asks for it.** It uploads\\nthe coding-agent session JSONL — source code, absolute paths (including their username),\\nbranch and repository names, internal hostnames, and the business context of their prompts.\\nCredentials are scanned for and redacted, but detection is **best-effort**.\\n\\nApproval to \\\"file a bug report\\\" is **NOT** approval to upload a session. They are separate\\nquestions and must be asked separately. If you believe the transcript would genuinely help,\\nsay exactly what it contains and ask a second time.\\n\\nSee [workflows/feedback.md](./workflows/feedback.md) for the full feedback surface.\\n\\n### If `mutagent feedback send` itself fails\\n\\nIf the feedback command returns a non-zero exit code, DO NOT retry silently. Show the user:\\n\\n1. The output of `mutagent auth status` (confirms login state).\\n2. The fallback: open https://app.mutagent.io and use the in-app feedback form.\\n\\n---\\n\\n## Extensibility\\n\\nAdd `workflows/custom-<name>.md` with a markdown heading (or frontmatter\\n`triggers: [\\\"phrase\\\"]`) -- auto-discovered by the sync pipeline. No rebuild of the\\nCLI source needed; just re-run `bun run sync-skill`.\\n\",\n \"workflows/feedback.md\": \"---\\nname: mutagent-cli-workflows-feedback\\ndescription: |\\n Product feedback workflow. Sends feedback about the CLI, Helix, or a lifecycle\\n stage via `mutagent feedback send`. Optionally attaches the coding-agent\\n session transcript as a separate context artifact. Login-gated.\\ntriggers:\\n - \\\"send feedback\\\"\\n - \\\"mutagent feedback\\\"\\n - \\\"report a bug\\\"\\n - \\\"file feedback\\\"\\n - \\\"the cli crashed\\\"\\n - \\\"feedback about\\\"\\n---\\n\\n# Workflow — Feedback\\n\\n> **Scope**: sends a feedback message (and optionally your session transcript)\\n> to the Mutagent platform. Login-gated.\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- **Login-gated** — run `mutagent login` first\\n\\n---\\n\\n## Surface\\n\\n```bash\\nmutagent feedback send --help # authoritative flags — read before first use\\n\\nmutagent feedback send \\\"<feedback body>\\\" \\\\\\n [--title \\\"<5-8 word summary>\\\"] \\\\\\n [--category <cli|helix|stage:<spec|build|evaluate|diagnose|optimize>>] \\\\\\n [--session <id>] \\\\\\n [--attach-transcript [path]] \\\\\\n [--json]\\n```\\n\\n- **Positional `<feedback body>`** — the feedback text (required, max 10000 chars).\\n- **`--title`** — optional short (5–8 word) summary of the session timeline.\\n- **`--category`** — one of:\\n - `cli` (default) — feedback about the CLI itself\\n - `helix` — feedback about Helix\\n - `stage:<x>` — feedback about a lifecycle stage/skill, where `<x>` ∈ `spec | build | evaluate | diagnose | optimize`\\n- **`--session <id>`** — link this feedback to a specific session id, so the team can correlate it with that run. Optional.\\n- **`--attach-transcript [path]`** — upload the coding-agent session JSONL as context. This is a **SEPARATE artifact** from the feedback text. Bare flag auto-detects the newest session (across claude-code, codex, omp) and tail-caps it; or pass an explicit path.\\n- **`--json`** — structured output (Rule 1: always use).\\n\\nAuto-captured context (harness, CLI version, platform, OS, node version) is\\nattached automatically — you never set it manually.\\n\\n---\\n\\n## Steps\\n\\n```\\n1. mutagent auth status --json\\n → feedback is login-gated; confirm session or run login first\\n\\n2. mutagent feedback send --help\\n → read the current flags (Rule 2)\\n\\n3. Compose the feedback body from the user's own words\\n → pick --category (default cli; use stage:<x> for a lifecycle stage)\\n → do NOT offer --attach-transcript unless the user explicitly asks for it (see Transcript safety below)\\n\\n4. mutagent feedback send \\\"<body>\\\" --category <c> --json\\n → show the returned id + category + transcriptAttached to the user\\n```\\n\\n---\\n\\n## Examples\\n\\n```bash\\nmutagent feedback send \\\"Optimizer results were great\\\" --json\\nmutagent feedback send \\\"Eval gate was confusing\\\" --category stage:evaluate --json\\nmutagent feedback send \\\"CLI crashed on login\\\" --category cli \\\\\\n --title \\\"login crash on first run\\\" --json\\nmutagent feedback send \\\"Diagnose loop stalled\\\" --category stage:diagnose \\\\\\n --session run_abc123 --json\\n\\n# ONLY when the operator explicitly asked to attach their session — see Transcript safety:\\nmutagent feedback send \\\"CLI crashed on login\\\" --category cli --attach-transcript --json\\n```\\n\\n---\\n\\n## Bug reporting (agent-aware)\\n\\nWhen a mutagent command fails, this is the canonical bug-report path:\\n\\n1. Show the user the failed command + error.\\n2. ASK if they want to file a report.\\n3. On approval, send the feedback — WITHOUT a transcript:\\n ```bash\\n mutagent feedback send \\\"<one-line failure summary>\\\" --category cli --json\\n ```\\n Approval to \\\"file a report\\\" is NOT approval to upload a session. See Transcript safety.\\n\\n---\\n\\n## Output handling\\n\\n- On success (`{ success: true, id, category, transcriptAttached }`): confirm the feedback id and whether a transcript was attached.\\n- If `--attach-transcript` (bare) finds no session: the CLI warns and continues without a transcript — tell the user the text was sent but no transcript was found, and offer to pass an explicit path.\\n- On an auth error: route to login, then retry.\\n\\n---\\n\\n## Common pitfalls\\n\\n- Passing an invalid `--category` (only `cli`, `helix`, `stage:<x>` are valid).\\n- Confusing the feedback body with the transcript — the body is your message; the transcript is a separate uploaded artifact.\\n- Sending before login (feedback is login-gated).\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Error Recovery\\n- [workflows/setup.md](./setup.md) → login (prerequisite for feedback)\\n\\n\\n## Transcript safety (`--attach-transcript`)\\n\\n**Never pass this flag on your own initiative.** Only when the operator explicitly asks to\\nattach their session.\\n\\nA session JSONL contains **source code, absolute paths including their username, branch and\\nrepository names, internal hostnames, and the business context of every prompt**. It is a\\nseparate artifact from the feedback text and is uploaded whole (last-200KB tail).\\n\\nCredentials are scanned for and redacted before upload, and the byte size + source path are\\nprinted before the network call — but **detection is best-effort**. If the session handled\\nsecrets, do not attach it.\\n\\n\\\"Yes, file a bug report\\\" is **not** consent to upload a session. Ask separately, state what\\nthe file contains, and accept no as the default.\\n\\n**Response fields** when a transcript IS attached: `transcriptAttached`, `transcriptBytes`,\\n`transcriptSource`, and `redactions`. **Always surface `redactions` to the operator** — it is\\nhow they learn something sensitive was in the file at all.\\n\",\n \"workflows/install.md\": \"---\\nname: mutagent-cli-workflows-install\\ndescription: |\\n Meta-installer workflow. Installs helix into the user's environment via\\n `mutagent install helix`. Login-gated. helix is fetched from a private\\n registry via a login-brokered signed URL (no static secret ships in the CLI).\\n `diagnostics` and `evaluator` are RETIRED as install targets — both skills\\n now ship inside helix.\\ntriggers:\\n - \\\"install helix\\\"\\n - \\\"mutagent install\\\"\\n - \\\"add mutagent package\\\"\\n - \\\"install diagnostics\\\"\\n - \\\"install evaluator\\\"\\n - \\\"set up diagnostics\\\"\\n - \\\"set up evaluator\\\"\\n---\\n\\n# Workflow — Install (Meta-Installer)\\n\\n> **`helix` is the only install target.** It installs into the CURRENT project\\n> directory (`scope: \\\"project\\\"`).\\n>\\n> `diagnostics` and `evaluator` are **retired** — their npm packages are no\\n> longer published. Both skills ship *inside* the helix payload, so a user\\n> asking for either one needs `mutagent install helix`. The CLI says so itself:\\n> `mutagent install diagnostics` fails with `INVALID_ARGUMENTS` and names helix\\n> as the route. Do not work around that error — follow it.\\n>\\n> This WRITES to the user's machine — confirm before running (Core Rule 5).\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- **Login-gated** — run `mutagent login` first\\n- Confirm before installing (writes to the user's machine)\\n\\n---\\n\\n## Surface\\n\\n```bash\\nmutagent install --help # authoritative flags — read before first use\\n\\nmutagent install helix [--harness <claude-code|codex|omp>] \\\\\\n [--version <v>] [--json]\\n```\\n\\nWhere `<package>` is:\\n\\n| Package | Source | Notes |\\n|---|---|---|\\n| `helix` | private registry via login-brokered signed URL | Ready to install — login-gated download, sha256-verified, then initialized into your project. Carries the diagnostics + evaluator skills and the `mutagent-cli` binary. |\\n\\nRetired — these are rejected by name, they do not fall through to a generic error:\\n\\n| Retired target | Was | Use instead |\\n|---|---|---|\\n| `diagnostics` | public npm `@mutagent/diagnostics` | `mutagent install helix` |\\n| `evaluator` | public npm `@mutagent/evaluator` | `mutagent install helix` |\\n\\n**Flags** (verify against `--help`):\\n- `--harness <claude-code|codex|omp>` -- target coding-agent harness (default `claude-code`). helix installs every harness itself, so this does not change what lands.\\n- `--version <v>` -- pin a specific version (default: latest).\\n- `--json` -- structured output (Rule 1).\\n- Install scope is NOT selectable: helix installs into the current directory. `--global` is retired — passing it fails and explains what happens instead.\\n\\n---\\n\\n## Steps\\n\\n```\\n1. mutagent auth status --json\\n → confirm the user is logged in (install is login-gated)\\n → if not authenticated, run the login workflow first\\n\\n2. mutagent install --help\\n → read the current packages + flags (Rule 2)\\n\\n3. Confirm with the user WHAT will be installed and WHERE\\n → \\\"I'll install helix into <current directory>. Proceed?\\\"\\n\\n4. mutagent install helix [--harness <h>] [--version <v>] --json\\n → run the install\\n → show the output: package, version, harness, scope, and projectPath\\n\\n5. CHECK `skillInstalled` in the JSON response — do NOT stop at `success: true`\\n → skillInstalled === true → done; the skill is installed and usable\\n → skillInstalled === false → NOT done. Say so plainly and surface `nextStep`\\n as the command to run next. Confirm before running it — it writes to\\n their project (Core Rule 5).\\n```\\n\\n---\\n\\n## Examples\\n\\n```bash\\nmutagent install helix --json\\nmutagent install helix --harness codex --json\\nmutagent install helix --version 1.2.3 --json\\n```\\n\\n---\\n\\n## Output handling\\n\\nSuccess shape:\\n\\n```json\\n{\\n \\\"success\\\": true,\\n \\\"package\\\": \\\"helix\\\",\\n \\\"version\\\": \\\"0.1.0-alpha.25\\\",\\n \\\"harness\\\": \\\"claude-code\\\",\\n \\\"scope\\\": \\\"project\\\",\\n \\\"projectPath\\\": \\\"/path/to/the/users/project\\\",\\n \\\"skillInstalled\\\": true,\\n \\\"_links\\\": { \\\"install\\\": \\\"...\\\", \\\"login\\\": \\\"...\\\" }\\n}\\n```\\n\\n- **`skillInstalled` is the field to branch on — NOT `success`.** `success: true`\\n reports that the install step did its job, not that the user is ready.\\n `nextStep` is present only when work remains; on a completed helix install it\\n is absent.\\n- `skillInstalled: true`: the CLI resolved a signed download URL from the login\\n broker, downloaded + sha256-verified the plugin, and ran its init into the\\n project. Nothing further is needed. An `INTEGRITY_ERROR` means the download\\n failed checksum verification — retry.\\n- **`scope` tells you WHERE it went. Read it; do not assume.** It is `\\\"project\\\"`,\\n and `projectPath` is the directory. Surface it so the user can confirm the\\n location.\\n- On an auth error (including a broker `AUTH_REQUIRED`): route to the login\\n workflow, then retry.\\n- On `INVALID_ARGUMENTS` naming a retired target (`diagnostics`, `evaluator`):\\n the package is gone from npm and the skill ships inside helix. Tell the user\\n that, then offer `mutagent install helix`. Do NOT suggest `npm install\\n @mutagent/diagnostics` as a fallback — it will 404.\\n- On `INVALID_ARGUMENTS` naming `--global`: the flag is retired. Re-run without\\n it, or `cd` to the intended project first — the error names the path that\\n would have been used.\\n\\n---\\n\\n## Common pitfalls\\n\\n- **Telling the user to `npm install @mutagent/diagnostics` or\\n `@mutagent/evaluator`.** Both are unpublished; the install 404s. The skills\\n are inside helix.\\n- **Treating a retired-target error as a typo.** `mutagent install diagnostics`\\n is a command that used to work. The user is not confused about spelling —\\n they want diagnostics. Route them to helix, which has it.\\n- **Treating `success: true` as \\\"the user is ready\\\".** Check `skillInstalled`.\\n- Running before login → auth error (install is login-gated).\\n- Assuming `helix` installs from public npm — it is fetched from a private registry via a login-brokered signed URL (the CLI holds no static secret).\\n- Installing without confirming with the user first (Core Rule 5).\\n- Passing `--global` — retired; scope is not selectable.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Task Router\\n- [workflows/setup.md](./setup.md) → login (prerequisite for install)\\n\",\n \"workflows/setup.md\": \"---\\nname: mutagent-cli-workflows-setup\\ndescription: |\\n Onboarding + configuration workflow. Covers login/auth, the init wizard,\\n config, workspaces, providers (incl. model catalog), usage/quota, and\\n installing this skill + Claude Code telemetry hooks.\\ntriggers:\\n - \\\"log in\\\"\\n - \\\"authenticate\\\"\\n - \\\"set up mutagent\\\"\\n - \\\"mutagent init\\\"\\n - \\\"which workspace\\\"\\n - \\\"what models\\\"\\n - \\\"check usage\\\"\\n - \\\"install the skill\\\"\\n - \\\"install hooks\\\"\\n---\\n\\n# Workflow — Setup (Auth, Config, Discovery)\\n\\n> **Scope**: authentication, local configuration, discovery, and installing the\\n> skill/hooks. `skills install` and `hooks install` write files into the user's\\n> project — confirm first (Core Rule 5).\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- Login before login-gated commands\\n\\n---\\n\\n## 1. Login / auth\\n\\n`mutagent login` is canonical; `mutagent auth login` is a back-compat alias (both\\ndelegate to one shared implementation).\\n\\n```bash\\n# CI / automated (no browser)\\nexport MUTAGENT_API_KEY=mt_...\\nmutagent login --json\\n\\n# Onboarding a real user (browser)\\nmutagent login --browser --json # prints an auth URL to stdout, polls 5 min\\n # → surface the URL to the user VERBATIM\\n\\nmutagent auth status --json # check session state\\nmutagent auth logout --json # clear stored credentials\\n```\\n\\n---\\n\\n## 2. init (config + skill install)\\n\\n```bash\\nmutagent init --help\\nmutagent init --json # writes .mutagentrc.json + installs this skill\\n```\\n\\n`init` writes `.mutagentrc.json` (endpoint / workspace / org — skipped if\\npresent) and installs the Mutagent CLI skill into `.claude/skills/mutagent-cli/`.\\nIt never prompts. If the user is not logged in, it prints login guidance and\\nexits — run `mutagent login` first, then re-run `mutagent init`.\\n\\n---\\n\\n## 3. config\\n\\n```bash\\nmutagent config list --json # show all config\\nmutagent config get <key> --json # keys: apiKey, endpoint, format, timeout,\\n # defaultWorkspace, defaultOrganization\\nmutagent config set workspace <id> --json # set default workspace\\nmutagent config set org <id> --json # set default organization\\n```\\n\\n---\\n\\n## 4. workspaces (read-only)\\n\\n```bash\\nmutagent workspaces list --json # list workspaces\\nmutagent workspaces get <id> --json # workspace details\\n```\\n\\nTo make a workspace the default, use `mutagent config set workspace <id>`.\\n\\n---\\n\\n## 5. providers (BYOK + model catalog)\\n\\n```bash\\nmutagent providers list --json # configured providers\\nmutagent providers list --models --json # available models per provider (/providers/catalog)\\nmutagent providers get <id> --json # provider details\\nmutagent providers test <id> --json # test connectivity\\n```\\n\\nUse `providers list --models` to discover which models are available before\\nselecting one for any downstream tool.\\n\\n---\\n\\n## 6. usage / quota\\n\\n```bash\\nmutagent usage --json # resource counts + quota\\n```\\n\\nShow the usage output to the user so spend/quota is transparent.\\n\\n---\\n\\n## 7. Install the skill + hooks\\n\\n```bash\\n# Install THIS skill into the current project's .claude/skills/\\nmutagent skills install --json\\n\\n# Install Claude Code telemetry hooks (safe merge into .claude/settings.local.json —\\n# never overwrites existing hooks). These emit session telemetry to the platform.\\nmutagent hooks install --json\\n```\\n\\nBoth commands write into the user's project — state what will be written and\\nconfirm before running (Core Rule 5).\\n\\n---\\n\\n## Common pitfalls\\n\\n- Running login-gated commands (providers, usage, workspaces) before `mutagent login`.\\n- Forgetting `--json` (Rule 1).\\n- Running `hooks install` / `skills install` without telling the user what files change.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Task Router\\n- [workflows/install.md](./install.md) → install helix / diagnostics / evaluator packages\\n\",\n};\n\n/**\n * Backward-compat alias for callers that still import `SKILL_CONTENT`.\n * Points at the entry file (SKILL.md). New code should prefer\n * `SKILL_FILES` to access the full tree including workflows/ and concepts/.\n */\nexport const SKILL_CONTENT: string = SKILL_FILES[\"SKILL.md\"] ?? '';\n",
35
35
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getApiKey } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag, createSpinner } from '../lib/output.js';\nimport { handleError, AuthenticationError } from '../lib/errors.js';\nimport { getSDKClient } from '../lib/sdk-client.js';\n\nconst PROVIDERS_URL = 'https://app.mutagent.io/settings/providers';\n\nexport function createUsageCommand(): Command {\n const usage = new Command('usage')\n .description('Show account resource counts (providers, workspaces) and provider status')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent usage\n ${chalk.dim('$')} mutagent usage --json\n `);\n\n usage.action(async () => {\n const isJson = getJsonFlag(usage);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const spinner = await createSpinner('Fetching usage data...', isJson).start();\n\n const client = await getSDKClient();\n\n // Fetch provider and workspace counts in parallel\n const [providers, workspaces] = await Promise.all([\n client.listProviders().catch(() => ({ data: [] as unknown[], total: 0 })),\n client.listWorkspaces().catch(() => ({ data: [] as unknown[], total: 0 })),\n ]);\n const providerCount = providers.total || providers.data.length;\n const workspaceCount = workspaces.total || workspaces.data.length;\n\n if (spinner && typeof (spinner as { stop?: () => void }).stop === 'function') {\n (spinner as { stop: () => void }).stop();\n }\n\n if (isJson) {\n output.output({\n resources: {\n providers: providerCount,\n workspaces: workspaceCount,\n },\n _links: {\n providers: PROVIDERS_URL,\n dashboard: 'https://app.mutagent.io',\n },\n });\n } else {\n console.log('');\n console.log(chalk.bold('📊 Mutagent Usage'));\n console.log(chalk.dim('─'.repeat(45)));\n console.log('');\n console.log(chalk.bold('Resources:'));\n console.log(` Providers: ${chalk.cyan(String(providerCount))}`);\n console.log(` Workspaces: ${chalk.cyan(String(workspaceCount))}`);\n console.log('');\n console.log(` Manage providers: ${chalk.underline(PROVIDERS_URL)}`);\n console.log('');\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return usage;\n}\n",
36
36
  "/**\n * Hooks Command — Claude Code Session Telemetry\n *\n * Hook handlers invoked by AI coding assistants (Claude Code) to send\n * lightweight session telemetry to the MutagenT API using the traces/spans model.\n *\n * All handlers are non-blocking: failures print a warning to stderr and exit 0.\n *\n * Usage (configured in .claude/settings.local.json):\n * mutagent hooks claude-code session-start # stdin: { session_id }\n * mutagent hooks claude-code session-end # stdin: { session_id }\n * mutagent hooks claude-code pre-tool-use # stdin: { session_id, tool_name, tool_input }\n * mutagent hooks claude-code post-tool-use # stdin: { session_id, tool_name, tool_result }\n * mutagent hooks claude-code post-tool-use-failure # stdin: { session_id, tool_name, error }\n * mutagent hooks claude-code user-prompt-submit # stdin: { session_id, prompt }\n * mutagent hooks claude-code subagent-start # stdin: { session_id, agent_type, agent_id }\n * mutagent hooks claude-code subagent-stop # stdin: { session_id }\n * mutagent hooks claude-code pre-compact # stdin: { session_id }\n * mutagent hooks claude-code post-compact # stdin: { session_id, summary }\n */\n\nimport { readFileSync } from 'node:fs';\nimport { basename } from 'node:path';\nimport { Command } from 'commander';\nimport { convertTranscript, parseTranscript } from './import-transcript.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { sendBatchTrace } from './api.js';\nimport {\n safeExecute,\n handleSessionStart,\n handleSessionEnd,\n handlePreToolUse,\n handlePostToolUse,\n} from './handlers-core.js';\nimport {\n handlePostToolUseFailure,\n handleUserPromptSubmit,\n handleStop,\n handleSubagentStart,\n handleSubagentStop,\n handlePreCompact,\n handlePostCompact,\n} from './handlers-v2.js';\nimport { installHooks, SettingsParseError } from './install.js';\n\nexport { installHooks, mergeHooksIntoSettings, hasCommand, migrateV1Hooks, SettingsParseError } from './install.js';\nexport type { ClaudeHookEntry, ClaudeHookMatcher, ClaudeSettingsHooks, ClaudeSettings } from './install.js';\n\n// Re-export internals for testing\nexport {\n readStdin as _readStdin,\n safeExecute as _safeExecute,\n getString as _getString,\n serializePayload as _serializePayload,\n handleSessionStart as _handleSessionStart,\n handleSessionEnd as _handleSessionEnd,\n handlePreToolUse as _handlePreToolUse,\n handlePostToolUse as _handlePostToolUse,\n} from './handlers-core.js';\n\nexport {\n handlePostToolUseFailure as _handlePostToolUseFailure,\n handleUserPromptSubmit as _handleUserPromptSubmit,\n handleStop as _handleStop,\n handleSubagentStart as _handleSubagentStart,\n handleSubagentStop as _handleSubagentStop,\n handlePreCompact as _handlePreCompact,\n handlePostCompact as _handlePostCompact,\n} from './handlers-v2.js';\n\nexport {\n readState as _readState,\n writeState as _writeState,\n deleteState as _deleteState,\n stateFilePath as _stateFilePath,\n pushParent as _pushParent,\n popParent as _popParent,\n peekParent as _peekParent,\n peekParentKind as _peekParentKind,\n} from './state.js';\n\nexport { sendBatchTrace as _sendBatchTrace } from './api.js';\n\nexport {\n installHooks as _installHooks,\n mergeHooksIntoSettings as _mergeHooksIntoSettings,\n migrateV1Hooks as _migrateV1Hooks,\n} from './install.js';\n\nexport type { HookState, TracePayload, SpanPayload, OpenSpan } from './state.js';\n\n// ============================================================================\n// Command definition\n// ============================================================================\n\nexport function createHooksCommand(): Command {\n const hooks = new Command('hooks')\n .description('Hook handlers for AI coding assistants')\n .addHelpText('after', `\nClaude Code Session Telemetry:\n Sends lightweight session activity to the Mutagent traces API for observability.\n\n Install by adding to .claude/settings.local.json:\n\n {\n \"hooks\": {\n \"SessionStart\": [{\"matcher\": \"startup\", \"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code session-start\"}]}],\n \"Stop\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code session-end\"}]}],\n \"PreToolUse\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code pre-tool-use\"}]}],\n \"PostToolUse\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code post-tool-use\"}]}],\n \"UserPromptSubmit\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code user-prompt-submit\"}]}],\n \"SubagentStart\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code subagent-start\"}]}],\n \"SubagentStop\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code subagent-stop\"}]}],\n \"PreCompact\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code pre-compact\"}]}],\n \"PostCompact\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code post-compact\"}]}],\n \"PostToolUseFailure\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code post-tool-use-failure\"}]}]\n }\n }\n\n Or run: mutagent hooks install\n `);\n\n // Import subcommand — after-the-fact sourcing, as opposed to live capture.\n hooks\n .command('import')\n .argument('<files...>', 'Session transcript files (.jsonl)')\n .description('Import harness session transcripts as traces')\n .option('--max-spans <n>', 'Cap spans per session', '200')\n .option('--dry-run', 'Convert and report, but do not send')\n .addHelpText('after', `\nSources traces from transcripts already on disk, rather than capturing them\nlive. mutagent-pi discovers these same files for its own /trace viewer; this\nships them to the backend instead.\n\nWhere they live:\n ~/.mutagent/sessions* Helix\n ~/Library/Caches/mutagent/helix Helix (cache)\n\nExamples:\n mutagent hooks import ~/.mutagent/sessions-rc/*.jsonl\n mutagent hooks import session.jsonl --dry-run\n\nAI Agent Directive: use --dry-run first; it reports span counts and any\nunparseable lines without sending anything.\n `)\n .action(async (files: string[], opts: { maxSpans?: string; dryRun?: boolean }) => {\n // HR-3: every command returns a parseable JSON object under --json. The\n // per-file progress lines below are for a human reading a terminal; in\n // JSON mode they are replaced by one object carrying the same facts, so a\n // caller never has to scrape stderr to learn what was imported.\n const isJson = getJsonFlag(hooks);\n const report: {\n file: string;\n traceId?: string;\n sessionId?: string;\n spans?: number;\n unparseableLines?: number;\n recordsIgnored?: number;\n skipped?: string;\n }[] = [];\n const say = (msg: string): void => {\n if (!isJson) process.stderr.write(msg);\n };\n const maxSpans = Number.parseInt(opts.maxSpans ?? '200', 10);\n if (!Number.isFinite(maxSpans) || maxSpans < 1) {\n if (isJson) {\n new OutputFormatter('json').output({\n error: 'InvalidOption',\n message: '--max-spans must be a positive integer',\n });\n } else {\n process.stderr.write('[mutagent hooks] --max-spans must be a positive integer\\n');\n }\n process.exitCode = 2;\n return;\n }\n const batch = [];\n for (const file of files) {\n let raw: string;\n try {\n raw = readFileSync(file, 'utf8');\n } catch (err) {\n // One unreadable file must not abandon the rest of the import.\n const why = err instanceof Error ? err.message : String(err);\n report.push({ file: basename(file), skipped: why });\n say(`[mutagent hooks] skipped ${file}: ${why}\\n`);\n continue;\n }\n const { records, skipped } = parseTranscript(raw);\n const { trace, ignored } = convertTranscript(records, {\n fileName: basename(file),\n maxSpans,\n skipped,\n });\n if (trace === null) {\n report.push({ file: basename(file), skipped: 'no session record' });\n say(`[mutagent hooks] ${basename(file)}: no session record, skipped\\n`);\n continue;\n }\n report.push({\n file: basename(file),\n traceId: trace.traceId,\n ...(trace.sessionId !== undefined ? { sessionId: trace.sessionId } : {}),\n spans: trace.spans.length,\n unparseableLines: skipped,\n recordsIgnored: ignored,\n });\n say(\n `[mutagent hooks] ${basename(file)}: ${String(trace.spans.length)} spans` +\n `${skipped > 0 ? `, ${String(skipped)} unparseable lines` : ''}` +\n `${ignored > 0 ? `, ${String(ignored)} records ignored` : ''}\\n`\n );\n batch.push(trace);\n }\n const emit = (imported: number, dryRun: boolean): void => {\n if (!isJson) return;\n new OutputFormatter('json').output({\n imported,\n dryRun,\n sessions: report,\n count: report.length,\n });\n };\n\n if (batch.length === 0) {\n say('[mutagent hooks] nothing to import\\n');\n emit(0, opts.dryRun === true);\n process.exitCode = 1;\n return;\n }\n if (opts.dryRun === true) {\n say(`[mutagent hooks] --dry-run: ${String(batch.length)} trace(s) not sent\\n`);\n emit(0, true);\n return;\n }\n await sendBatchTrace(batch);\n say(`[mutagent hooks] imported ${String(batch.length)} session(s)\\n`);\n emit(batch.length, false);\n });\n\n // Install subcommand\n hooks\n .command('install')\n .description('Install Mutagent hooks into .claude/settings.local.json (safe merge — never overwrites existing hooks)')\n .option('--cwd <dir>', 'Target directory (defaults to cwd)', process.cwd())\n .addHelpText('after', `\nReads existing .claude/settings.local.json (if present) and deep-merges\nMutagent telemetry hooks into each event array (all 10 events). Skips any\nhook already present (checked by command string) so running this multiple\ntimes is safe.\n `)\n .action((opts: { cwd?: string; json?: boolean }) => {\n const targetDir = opts.cwd ?? process.cwd();\n const isJson = Boolean(opts.json);\n\n let result: ReturnType<typeof installHooks>;\n try {\n result = installHooks(targetDir);\n } catch (err) {\n if (err instanceof SettingsParseError) {\n if (isJson) {\n process.stdout.write(JSON.stringify({\n success: false,\n error: err.message,\n backupPath: err.backupPath,\n settingsPath: err.settingsPath,\n }) + '\\n');\n } else {\n process.stderr.write(`[mutagent hooks install] ERROR: ${err.message}\\n`);\n }\n process.exit(1);\n }\n throw err;\n }\n\n for (const { event, command } of result.migrated) {\n process.stderr.write(\n `[mutagent hooks install] ⚠️ Migrated v1 hook: removed '${event} → ${command}' (v2 wires this as 'SessionEnd')\\n`\n );\n }\n\n if (result.added.length === 0 && result.alreadyPresent.length === 0) {\n process.stdout.write(JSON.stringify({\n success: true,\n settingsPath: result.settingsPath,\n added: [],\n alreadyPresent: [],\n message: 'No hooks to install.',\n }) + '\\n');\n return;\n }\n\n // Surface user warning when hooks were actually added\n if (result.userWarning) {\n if (isJson) {\n // In --json mode, the warning appears in the response body as warnings[]\n // (surfaced below in the JSON output)\n } else {\n process.stderr.write(`⚠ ${result.userWarning}\\n`);\n }\n }\n\n const jsonResponse: Record<string, unknown> = {\n success: true,\n settingsPath: result.settingsPath,\n existed: result.existed,\n added: result.added,\n alreadyPresent: result.alreadyPresent,\n message: result.added.length > 0\n ? `Installed ${String(result.added.length)} hook(s). ${String(result.alreadyPresent.length)} already present.`\n : `All hooks already present (${String(result.alreadyPresent.length)}).`,\n };\n\n if (result.userWarning && isJson) {\n jsonResponse.warnings = [result.userWarning];\n }\n\n process.stdout.write(JSON.stringify(jsonResponse) + '\\n');\n });\n\n const claudeCode = hooks\n .command('claude-code')\n .description('Claude Code session telemetry');\n\n // Original 4 hooks\n claudeCode\n .command('session-start')\n .description('Handle session start event')\n .action(async () => { await safeExecute(handleSessionStart); });\n\n claudeCode\n .command('session-end')\n .description('Handle session end event')\n .action(async () => { await safeExecute(handleSessionEnd); });\n\n claudeCode\n .command('pre-tool-use')\n .description('Handle pre-tool-use event')\n .action(async () => { await safeExecute(handlePreToolUse); });\n\n claudeCode\n .command('post-tool-use')\n .description('Handle post-tool-use event')\n .action(async () => { await safeExecute(handlePostToolUse); });\n\n // New 6 hooks (v2)\n claudeCode\n .command('user-prompt-submit')\n .description('Handle user prompt submit event (creates turn span)')\n .action(async () => { await safeExecute(handleUserPromptSubmit); });\n\n claudeCode\n .command('stop')\n .description('Handle stop event (closes current turn span)')\n .action(async () => { await safeExecute(handleStop); });\n\n claudeCode\n .command('subagent-start')\n .description('Handle subagent start event (creates nested agent span)')\n .action(async () => { await safeExecute(handleSubagentStart); });\n\n claudeCode\n .command('subagent-stop')\n .description('Handle subagent stop event (closes subagent span)')\n .action(async () => { await safeExecute(handleSubagentStop); });\n\n claudeCode\n .command('pre-compact')\n .description('Handle pre-compact event (opens compaction span)')\n .action(async () => { await safeExecute(handlePreCompact); });\n\n claudeCode\n .command('post-compact')\n .description('Handle post-compact event (closes compaction span with summary)')\n .action(async () => { await safeExecute(handlePostCompact); });\n\n claudeCode\n .command('post-tool-use-failure')\n .description('Handle post-tool-use-failure event (closes failed span with error status)')\n .action(async () => { await safeExecute(handlePostToolUseFailure); });\n\n return hooks;\n}\n",
37
37
  "/**\n * Turn a harness session transcript on disk into a trace batch.\n *\n * WHY THIS EXISTS. `mutagent-pi` already SOURCES traces — `extensions/tracer/\n * core/sources.ts` discovers session transcripts for `pi | omp | claude | helix`\n * and renders them in its own `/trace` viewer. It just never ships them\n * anywhere. Meanwhile the backend ingests traces at `/api/traces/batch`. The\n * only missing piece was the conversion between the two, and it belongs here\n * rather than in pi: reading a file needs no change to the harness that wrote\n * it.\n *\n * Proven against a real 504-message Helix session before this module existed:\n * 40 spans posted, 40 read back with content intact.\n *\n * The parsing is deliberately TOLERANT. A transcript is an append-only log\n * written by a live agent; it can be truncated mid-line by a crash, and its\n * record shapes differ across harnesses and versions. A converter that throws on\n * the first surprise imports nothing from the sessions most worth importing.\n * Unparseable lines are counted and skipped, never fatal.\n */\nimport type { SpanPayload, TracePayload } from './state.js';\n\n/** A transcript record, as loosely as we are willing to assume. */\nexport interface TranscriptRecord {\n type?: string;\n id?: string;\n uuid?: string;\n timestamp?: string;\n cwd?: string;\n version?: string;\n role?: string;\n message?: { role?: string; content?: unknown };\n}\n\nexport interface ConvertResult {\n trace: TracePayload | null;\n /** Lines that did not parse as JSON. Reported, never thrown. */\n skipped: number;\n /** Records seen that produced no span (session header, model_change, …). */\n ignored: number;\n}\n\nconst MAX_SPAN_TEXT = 4000;\n\n/** Flatten a message's `content` to text without assuming its shape. */\nexport function contentToText(content: unknown): string {\n if (typeof content === 'string') return content.slice(0, MAX_SPAN_TEXT);\n if (Array.isArray(content)) {\n return content\n .map((part) =>\n part !== null && typeof part === 'object' && 'text' in part\n ? String((part as { text: unknown }).text)\n : ''\n )\n .filter(Boolean)\n .join(' ')\n .slice(0, MAX_SPAN_TEXT);\n }\n return '';\n}\n\n/**\n * Convert transcript records into one trace.\n *\n * `maxSpans` bounds the batch: a long session is tens of thousands of messages\n * and the server caps a request. Truncation is reported by the caller rather\n * than hidden — an import that silently dropped 90% of a session would look\n * identical to one that worked.\n */\nexport function convertTranscript(\n records: readonly TranscriptRecord[],\n opts: { fileName: string; maxSpans?: number; skipped?: number }\n): ConvertResult {\n const maxSpans = opts.maxSpans ?? 200;\n const session = records.find((r) => r.type === 'session');\n if (session === undefined || typeof session.id !== 'string' || session.id === '') {\n return { trace: null, skipped: opts.skipped ?? 0, ignored: records.length };\n }\n\n const spans: SpanPayload[] = [];\n let ignored = 0;\n let lastTs = session.timestamp ?? new Date().toISOString();\n\n for (const r of records) {\n if (r.type !== 'message' && r.type !== 'custom_message') {\n ignored += 1;\n continue;\n }\n if (spans.length >= maxSpans) {\n ignored += 1;\n continue;\n }\n const role = r.message?.role ?? r.role ?? r.type;\n const startTime = r.timestamp ?? lastTs;\n lastTs = startTime;\n const text = contentToText(r.message?.content);\n const span: SpanPayload = {\n spanId: String(r.id ?? r.uuid ?? `span-${String(spans.length)}`).slice(0, 128),\n name: `helix.${role}`,\n kind: role === 'assistant' ? 'llm' : 'message',\n startTime,\n status: 'ok',\n };\n if (text !== '') span.output = text;\n spans.push(span);\n }\n\n return {\n trace: {\n traceId: `helix-${session.id}`.slice(0, 128),\n sessionId: session.id.slice(0, 256),\n name: 'helix.session',\n source: 'helix',\n startTime: session.timestamp ?? lastTs,\n endTime: lastTs,\n status: 'ok',\n spans,\n metadata: {\n harness: 'helix',\n transcript: opts.fileName,\n ...(session.cwd !== undefined ? { cwd: session.cwd } : {}),\n ...(session.version !== undefined ? { version: session.version } : {}),\n },\n },\n skipped: opts.skipped ?? 0,\n ignored,\n };\n}\n\n/** Parse JSONL tolerantly: bad lines are counted, not thrown. */\nexport function parseTranscript(raw: string): { records: TranscriptRecord[]; skipped: number } {\n const records: TranscriptRecord[] = [];\n let skipped = 0;\n for (const line of raw.split('\\n')) {\n const t = line.trim();\n if (t === '') continue;\n try {\n records.push(JSON.parse(t) as TranscriptRecord);\n } catch {\n skipped += 1;\n }\n }\n return { records, skipped };\n}\n",
@@ -44,9 +44,9 @@
44
44
  "/**\n * Coding-agent transcript resolution for `mutagent feedback send --attach-transcript`.\n *\n * The transcript is the coding-agent SESSION JSONL — a SEPARATE artifact from the\n * feedback body. It is uploaded raw (last-N-bytes tail only, NO client-side\n * summarization) so the product team can reconstruct the session that produced\n * the feedback.\n *\n * Resolution modes (driven by the Commander optional-value option `--attach-transcript [path]`):\n * undefined / false → flag NOT passed → returns null (no transcript, no warning)\n * string (a path) → explicit path → tail that file (throws if missing)\n * true (bare flag) → auto-detect newest-by-mtime *.jsonl across the known harness globs\n *\n * All external effects (fs, os, glob, stderr) are injectable via `deps` so the\n * resolver is unit-testable without touching the real filesystem or network.\n */\n\nimport { homedir as osHomedir } from 'os';\nimport { join } from 'path';\nimport {\n existsSync as fsExistsSync,\n statSync as fsStatSync,\n readFileSync,\n readdirSync,\n openSync,\n readSync,\n closeSync,\n type Dirent,\n} from 'fs';\nimport chalk from 'chalk';\nimport { MutagentError } from './errors.js';\n\n/** Fixed tail size: only the last 200 000 bytes of a transcript are uploaded. */\nexport const TAIL_BYTES = 200000;\n\n/**\n * A resolved transcript artifact, ready to embed under context.feedbackV2.transcript.\n * `content` is the raw utf-8 tail (byte-length ≤ TAIL_BYTES). `truncated` is true\n * when the source file was larger than TAIL_BYTES (i.e. content is a tail, not the whole file).\n */\nexport interface TranscriptResult {\n harness: string;\n sourcePath: string;\n tailBytes: number;\n truncated: boolean;\n content: string;\n}\n\n/** A harness source: a directory root to scan recursively for *.jsonl. */\ninterface TranscriptSource {\n harness: string;\n dir: string;\n}\n\n/**\n * Injectable dependencies. All default to real implementations; tests override\n * the pieces they need (typically `env` + `homedir`, or `scan`/`readTail` for\n * pure unit tests).\n */\nexport interface TranscriptDeps {\n env?: Record<string, string | undefined>;\n homedir?: () => string;\n existsSync?: (p: string) => boolean;\n statSync?: (p: string) => { mtimeMs: number; size: number };\n scan?: (dir: string) => string[];\n readTail?: (p: string, tailBytes: number) => { content: string; truncated: boolean };\n warn?: (message: string) => void;\n}\n\n/**\n * Read only the LAST `tailBytes` bytes of a file (utf-8). Reads the whole file\n * when it is already within the cap; otherwise seeks to the tail so we never\n * pull a multi-megabyte session into memory.\n */\nfunction defaultReadTail(path: string, tailBytes: number): { content: string; truncated: boolean } {\n const { size } = fsStatSync(path);\n if (size <= tailBytes) {\n return { content: readFileSync(path, 'utf-8'), truncated: false };\n }\n const fd = openSync(path, 'r');\n try {\n const buf = Buffer.alloc(tailBytes);\n readSync(fd, buf, 0, tailBytes, size - tailBytes);\n return { content: buf.toString('utf-8'), truncated: true };\n } finally {\n closeSync(fd);\n }\n}\n\n/**\n * Default scan: recursively collect every `*.jsonl` under `dir`, returning\n * absolute paths. Missing/unreadable directory → empty list (not an error).\n */\nfunction defaultScan(dir: string): string[] {\n if (!fsExistsSync(dir)) return [];\n const out: string[] = [];\n const walk = (current: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(current, { withFileTypes: true });\n } catch {\n return; // unreadable dir — skip\n }\n for (const entry of entries) {\n const full = join(current, entry.name);\n if (entry.isDirectory()) walk(full);\n else if (entry.isFile() && entry.name.endsWith('.jsonl')) out.push(full);\n }\n };\n walk(dir);\n return out;\n}\n\n/**\n * Build the ordered list of auto-detect sources. The omp base honours\n * `PI_CODING_AGENT_DIR` (falling back to `~/.omp/agent`), matching the OMP\n * harness convention.\n */\nfunction buildSources(env: Record<string, string | undefined>, home: string): TranscriptSource[] {\n const ompBase = env.PI_CODING_AGENT_DIR ?? join(home, '.omp', 'agent');\n return [\n { harness: 'claude-code', dir: join(home, '.claude', 'projects') },\n { harness: 'codex', dir: join(home, '.codex', 'sessions') },\n { harness: 'omp', dir: join(ompBase, 'sessions') },\n ];\n}\n\n/**\n * Resolve the `--attach-transcript` value to a transcript artifact (or null).\n *\n * @param attach The Commander option value: `undefined`/`false` (not passed),\n * a non-empty `string` (explicit path), or `true` (bare flag → auto-detect).\n * @param deps Injectable effects for testing.\n * @returns The resolved transcript, or `null` when there is nothing to attach.\n * @throws MutagentError('INVALID_ARGUMENTS') when an explicit path does not exist.\n */\nexport function resolveTranscript(\n attach: string | boolean | undefined,\n deps: TranscriptDeps = {},\n): TranscriptResult | null {\n const env = deps.env ?? process.env;\n const home = (deps.homedir ?? osHomedir)();\n const existsSync = deps.existsSync ?? fsExistsSync;\n const statSync = deps.statSync ?? fsStatSync;\n const scan = deps.scan ?? defaultScan;\n const readTail = deps.readTail ?? defaultReadTail;\n const warn = deps.warn ?? ((message: string): void => { console.error(message); });\n\n // Flag not passed → nothing to do, no warning.\n if (attach === undefined || attach === false) return null;\n\n // Explicit path → tail that specific file.\n if (typeof attach === 'string' && attach.length > 0) {\n if (!existsSync(attach)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Transcript file not found: ${attach}`,\n `Verify the path exists: ls -la \"${attach}\"\\nOr omit the path to auto-detect the newest coding-agent session.`,\n );\n }\n const { content, truncated } = readTail(attach, TAIL_BYTES);\n return { harness: 'unknown', sourcePath: attach, tailBytes: TAIL_BYTES, truncated, content };\n }\n\n // Bare flag → auto-detect the newest-by-mtime *.jsonl across the harness globs.\n let newest: { harness: string; path: string; mtimeMs: number } | null = null;\n for (const src of buildSources(env, home)) {\n for (const file of scan(src.dir)) {\n const { mtimeMs } = statSync(file);\n if (!newest || mtimeMs > newest.mtimeMs) {\n newest = { harness: src.harness, path: file, mtimeMs };\n }\n }\n }\n\n if (!newest) {\n warn(chalk.yellow('⚠ No coding-agent transcript found; sending feedback without one.'));\n return null;\n }\n\n const { content, truncated } = readTail(newest.path, TAIL_BYTES);\n return {\n harness: newest.harness,\n sourcePath: newest.path,\n tailBytes: TAIL_BYTES,\n truncated,\n content,\n };\n}\n",
45
45
  "/**\n * Pre-upload safety layer for `feedback send` (issue #1558, D12 + D18).\n *\n * WHAT THIS COVERS AND WHAT IT DOES NOT\n *\n * `lib/transcript.ts` already caps an attached session at a 200KB tail\n * (`TAIL_BYTES`). That cap is tested, it works, and it is neither duplicated\n * nor modified here — this module is the caller-side layer that inspects\n * CONTENT, which the transcript resolver has never done.\n *\n * A byte cap answers \"how much leaves\". It says nothing about \"what leaves\".\n * An external reporter found a plaintext API key in his own session and\n * declined to send it — twice. The cap was working perfectly the whole time.\n *\n * WHY REDACT RATHER THAN REFUSE\n *\n * Refusing on detection protects the secret and loses the bug report, which\n * punishes exactly the users who attach the most useful evidence. Redacting\n * keeps the report, keeps its diagnostic value (the surrounding line survives,\n * so the product team still sees that an auth step happened there), and the\n * secret never reaches the network. The user is told precisely what was\n * removed, so an unexpected redaction is still visible to them.\n *\n * Detection is imperfect by construction (see lib/secret-scan.ts), so the\n * warning + preview below exist to put an informed human in front of the\n * upload regardless of whether the scanner found anything.\n */\n\nimport chalk from 'chalk';\nimport type { TranscriptResult } from './transcript.js';\nimport { redactSecrets, type SecretMatch } from './secret-scan.js';\nimport { matchByDesign, type ByDesignEntry } from './by-design.js';\n\n/** A transcript that has been through content inspection. */\nexport interface SafeTranscript {\n /** The transcript with every detected credential replaced. */\n transcript: TranscriptResult;\n /** What was removed. Empty when the session was clean. */\n redactions: SecretMatch[];\n}\n\n/** Byte size + file count shown to the user before the network call. */\nexport interface TranscriptPreview {\n fileCount: number;\n bytes: number;\n sourcePath: string;\n truncated: boolean;\n}\n\n/**\n * Scrub credentials out of a resolved transcript.\n *\n * Returns a NEW TranscriptResult — `lib/transcript.ts` is not modified and its\n * output is not mutated in place, so the resolver stays a pure producer.\n */\nexport function sanitizeTranscript(transcript: TranscriptResult): SafeTranscript {\n const { content, matches } = redactSecrets(transcript.content);\n return {\n transcript: { ...transcript, content },\n redactions: matches,\n };\n}\n\n/** Describe exactly what is about to be uploaded. */\nexport function buildPreview(transcript: TranscriptResult): TranscriptPreview {\n return {\n fileCount: 1,\n bytes: Buffer.byteLength(transcript.content, 'utf-8'),\n sourcePath: transcript.sourcePath,\n truncated: transcript.truncated,\n };\n}\n\n/**\n * The disclosure shown before an attached transcript is uploaded.\n *\n * It names the CATEGORIES of content a session JSONL carries. Users consent to\n * \"attach my session\" without a concrete model of what a session contains; the\n * specifics are what make the consent real. This is deliberately concrete\n * rather than a generic \"may contain sensitive data\" — the latter is ignorable\n * precisely because it describes nothing.\n */\nexport function buildTranscriptWarning(preview: TranscriptPreview): string {\n const kb = (preview.bytes / 1024).toFixed(1);\n return [\n chalk.yellow('⚠ About to upload your coding-agent session transcript.'),\n ` ${chalk.bold('Source:')} ${preview.sourcePath}`,\n ` ${chalk.bold('Sending:')} ${String(preview.fileCount)} file, ${kb} KB${preview.truncated ? ' (tail only)' : ''}`,\n '',\n ' A session transcript typically contains:',\n ' • source code and file contents you or the agent opened',\n ' • absolute file paths, including your username and directory layout',\n ' • branch names, commit messages, and repository names',\n ' • internal hostnames, service names, and URLs',\n ' • business context from your prompts and the agent replies',\n '',\n ` ${chalk.dim('Credentials are scanned for and redacted automatically, but detection')}`,\n ` ${chalk.dim('is best-effort — review the source file if the session touched secrets.')}`,\n ` ${chalk.dim('Omit --attach-transcript to send feedback without it.')}`,\n ].join('\\n');\n}\n\n/** Render the redaction report. Empty string when nothing was redacted. */\nexport function buildRedactionReport(redactions: SecretMatch[]): string {\n if (redactions.length === 0) return '';\n\n const byKind = new Map<string, number>();\n for (const match of redactions) {\n byKind.set(match.label, (byKind.get(match.label) ?? 0) + 1);\n }\n\n const lines = [\n chalk.green(\n `✓ Redacted ${String(redactions.length)} credential${redactions.length === 1 ? '' : 's'} from the transcript before upload:`,\n ),\n ];\n for (const [label, count] of byKind) {\n lines.push(` • ${label} ×${String(count)}`);\n }\n lines.push(chalk.dim(' These were replaced with [REDACTED:…] markers and never left your machine.'));\n return lines.join('\\n');\n}\n\n/**\n * Surface known-intentional behaviour matching the draft.\n *\n * PROMPT, NEVER A BLOCK. The caller shows this and submits anyway. Four of\n * fifteen claims in the originating report were by-design behaviour that looked\n * broken — but a genuine regression in one of those same areas would produce an\n * identical-looking draft, so suppressing the report would blind the product\n * exactly where it can least afford it. Context is added; nothing is withheld.\n */\nexport function buildByDesignNotice(entries: ByDesignEntry[]): string {\n if (entries.length === 0) return '';\n\n const lines = [\n chalk.cyan('ℹ Heads up — this may describe intended behaviour:'),\n '',\n ];\n for (const entry of entries) {\n lines.push(` ${chalk.bold(entry.title)}`);\n for (const line of wrap(entry.reality, 76)) {\n lines.push(` ${line}`);\n }\n lines.push('');\n }\n lines.push(\n chalk.dim(' Sending anyway — if this is a regression rather than the design,'),\n chalk.dim(' your report is exactly what we need. Nothing was withheld.'),\n );\n return lines.join('\\n');\n}\n\n/** Find by-design entries for a draft. Thin re-export so callers need one import. */\nexport function findByDesignMatches(draft: string): ByDesignEntry[] {\n return matchByDesign(draft);\n}\n\n/** Greedy word wrap for terminal output. */\nfunction wrap(text: string, width: number): string[] {\n const words = text.split(/\\s+/);\n const lines: string[] = [];\n let current = '';\n for (const word of words) {\n if (current.length === 0) {\n current = word;\n } else if (current.length + 1 + word.length <= width) {\n current += ` ${word}`;\n } else {\n lines.push(current);\n current = word;\n }\n }\n if (current.length > 0) lines.push(current);\n return lines;\n}\n",
46
46
  "/**\n * Credential scanning for outbound transcript uploads (issue #1558, D12).\n *\n * `feedback send --attach-transcript` uploads a coding-agent session JSONL. A\n * session transcript contains whatever passed through the user's terminal —\n * including live credentials they pasted or echoed. An external reporter found a\n * plaintext API key in his own session and declined to send it, twice. That is a\n * reporter doing our job for us, and only because he happened to look.\n *\n * SCOPE — this module adds the CONTENT layer that was missing. `lib/transcript.ts`\n * already caps the upload at a 200KB tail (`TAIL_BYTES`), that cap is tested and\n * works, and it is deliberately NOT duplicated or modified here. A byte cap and a\n * content inspection answer different questions: \"how much leaves\" versus \"what\n * leaves\". The tail was never the protection.\n *\n * DESIGN — precision over recall, deliberately.\n *\n * A scanner that cries wolf is worse than no scanner: users learn to skip the\n * warning, and the one time it matters they skip that too. So detection is\n * anchored on published, structurally distinctive credential formats, and every\n * candidate must additionally clear an entropy floor. `sk-xxxxxxxxxxxxxxxxxxxx`\n * in a doc example is shaped exactly like a key and is not one.\n *\n * The cost of a miss is bounded by the surrounding UX: the caller warns about\n * what a transcript contains and shows a preview before the network call, so a\n * missed secret still meets an informed human. The cost of a false positive is\n * an ignored warning, which is unbounded.\n */\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/** A single credential occurrence found in scanned content. */\nexport interface SecretMatch {\n /** Stable identifier for the credential family, e.g. 'anthropic-api-key'. */\n kind: string;\n /** Human-readable label for terminal output. */\n label: string;\n /** 1-indexed line number within the scanned content. */\n line: number;\n /** Masked excerpt — safe to print. NEVER contains the full secret. */\n preview: string;\n}\n\ninterface SecretPattern {\n kind: string;\n label: string;\n /**\n * Must carry the `g` flag. When the expression declares a capture group, the\n * group delimits the secret itself and the rest of the match is context (an\n * assignment prefix, say) that should not be redacted.\n */\n regex: RegExp;\n}\n\n// =============================================================================\n// Patterns — most specific first; `generic-assignment` is the fallback\n// =============================================================================\n\n/**\n * Order is significant. Overlapping matches are resolved first-wins, so a\n * specific family (anthropic) claims its span before the generic assignment\n * rule can also report it. Without that, one key would be reported twice.\n */\nconst PATTERNS: SecretPattern[] = [\n {\n kind: 'private-key',\n label: 'Private key block',\n // Matches the WHOLE PEM block, not just the BEGIN banner (#1558).\n //\n // The original pattern was `/-----BEGIN(?: [A-Z]+)* PRIVATE KEY-----/g`, which\n // matched only the banner line. `redactSecrets` replaces exactly the matched span,\n // so the banner was redacted and the base64 key material on the following lines was\n // uploaded verbatim — it matches no other pattern (no `key=` prefix, so\n // `generic-assignment` never fires). The user was then told \"Redacted 1 credential\".\n //\n // That is strictly worse than not scanning: it leaked the secret AND asserted safety.\n // The `[\\s\\S]*?` is lazy and the END anchor is required, so an unterminated banner\n // matches nothing rather than swallowing the rest of the transcript.\n regex: /-----BEGIN(?: [A-Z]+)* PRIVATE KEY-----[\\s\\S]*?-----END(?: [A-Z]+)* PRIVATE KEY-----/g,\n },\n {\n kind: 'anthropic-api-key',\n label: 'Anthropic API key',\n regex: /sk-ant-[A-Za-z0-9_-]{16,}/g,\n },\n {\n kind: 'openai-api-key',\n label: 'OpenAI API key',\n regex: /sk-(?!ant-)(?:proj-)?[A-Za-z0-9_-]{20,}/g,\n },\n {\n kind: 'aws-access-key-id',\n label: 'AWS access key ID',\n regex: /\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b/g,\n },\n {\n kind: 'github-token',\n label: 'GitHub token',\n regex: /\\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\\b|\\bgithub_pat_[A-Za-z0-9_]{22,}\\b/g,\n },\n {\n kind: 'google-api-key',\n label: 'Google API key',\n regex: /\\bAIza[0-9A-Za-z_-]{35}\\b/g,\n },\n {\n kind: 'slack-token',\n label: 'Slack token',\n regex: /\\bxox[baprs]-[A-Za-z0-9-]{10,}\\b/g,\n },\n {\n kind: 'mutagent-api-key',\n label: 'Mutagent API key',\n regex: /\\bmt_[A-Za-z0-9]{16,}\\b/g,\n },\n {\n kind: 'bearer-token',\n label: 'Bearer token',\n regex: /\\bBearer\\s+([A-Za-z0-9._-]{20,})/g,\n },\n {\n kind: 'generic-assignment',\n label: 'Credential assignment',\n regex:\n /(?:api[_-]?key|apikey|secret|password|passwd|token|access[_-]?key)[\"']?\\s*[:=]\\s*[\"']?([A-Za-z0-9._/+-]{16,})/gi,\n },\n];\n\n// =============================================================================\n// Entropy floor\n// =============================================================================\n\n/**\n * Reject low-variety candidates: placeholders, redaction bars, repeated filler.\n *\n * `sk-xxxxxxxxxxxxxxxxxxxx` and `token=<your-token-here>` are shaped like keys\n * and are not keys. Real credentials are near-random and comfortably clear this\n * floor; documentation placeholders essentially never do.\n */\nfunction hasCredentialEntropy(candidate: string): boolean {\n if (candidate.length < 16) return false;\n const distinct = new Set(candidate).size;\n if (distinct < 8) return false;\n // A run of one character covering most of the token is filler, not entropy.\n return !/(.)\\1{7,}/.test(candidate);\n}\n\n/** Mask a secret for display: keep a short head, hide the rest. */\nfunction maskSecret(secret: string): string {\n const head = secret.slice(0, 6);\n return `${head}${'*'.repeat(Math.min(12, Math.max(4, secret.length - head.length)))}`;\n}\n\n// =============================================================================\n// Scanning\n// =============================================================================\n\ninterface RawHit {\n kind: string;\n label: string;\n start: number;\n end: number;\n secret: string;\n}\n\n/**\n * Collect non-overlapping credential hits across the whole content, in document\n * order. Earlier patterns win a contested span (see PATTERNS ordering).\n */\nfunction collectHits(content: string): RawHit[] {\n const accepted: RawHit[] = [];\n\n const overlaps = (start: number, end: number): boolean =>\n accepted.some((hit) => start < hit.end && end > hit.start);\n\n for (const pattern of PATTERNS) {\n // Fresh instance per scan: `lastIndex` on a shared /g regex is stateful and\n // would make results depend on what was scanned before.\n const regex = new RegExp(pattern.regex.source, pattern.regex.flags);\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(content)) !== null) {\n // Zero-length matches would spin forever.\n if (match[0].length === 0) {\n regex.lastIndex += 1;\n continue;\n }\n\n // A capture group, when present, isolates the secret from its context.\n const captured = match[1];\n const secret = captured ?? match[0];\n const start = captured === undefined ? match.index : match.index + match[0].indexOf(captured);\n const end = start + secret.length;\n\n // Private-key banners are structural markers, not high-entropy strings.\n const exemptFromEntropy = pattern.kind === 'private-key';\n if (!exemptFromEntropy && !hasCredentialEntropy(secret)) continue;\n if (overlaps(start, end)) continue;\n\n accepted.push({ kind: pattern.kind, label: pattern.label, start, end, secret });\n }\n }\n\n return accepted.sort((a, b) => a.start - b.start);\n}\n\n/** Map an absolute offset to a 1-indexed line number. */\nfunction lineOf(content: string, offset: number): number {\n let line = 1;\n for (let i = 0; i < offset && i < content.length; i++) {\n if (content[i] === '\\n') line++;\n }\n return line;\n}\n\n/**\n * Find credentials in `content`. Returns an empty array when the content is\n * clean. Never throws — a scanner that can fail closed would block feedback.\n */\nexport function scanForSecrets(content: string): SecretMatch[] {\n if (!content) return [];\n return collectHits(content).map((hit) => ({\n kind: hit.kind,\n label: hit.label,\n line: lineOf(content, hit.start),\n preview: maskSecret(hit.secret),\n }));\n}\n\n/**\n * Replace every detected credential with a `[REDACTED:<kind>]` marker, leaving\n * the surrounding line intact.\n *\n * Context is preserved on purpose: `ANTHROPIC_API_KEY=[REDACTED:anthropic-api-key]`\n * still tells the product team that an auth step happened at that point in the\n * session, which is exactly the diagnostic value the transcript exists for.\n * Dropping the whole line would cost that for no additional safety.\n */\nexport function redactSecrets(content: string): { content: string; matches: SecretMatch[] } {\n if (!content) return { content, matches: [] };\n\n const hits = collectHits(content);\n if (hits.length === 0) return { content, matches: [] };\n\n let out = '';\n let cursor = 0;\n for (const hit of hits) {\n out += content.slice(cursor, hit.start);\n out += `[REDACTED:${hit.kind}]`;\n cursor = hit.end;\n }\n out += content.slice(cursor);\n\n return {\n content: out,\n matches: hits.map((hit) => ({\n kind: hit.kind,\n label: hit.label,\n line: lineOf(content, hit.start),\n preview: maskSecret(hit.secret),\n })),\n };\n}\n",
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 with the diagnostics and evaluator packages — installing either one already gives you the tooling, and there is nothing separate to install.',\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 is installed alongside @mutagent/diagnostics, @mutagent/evaluator, or helix. 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 with the diagnostics and evaluator packages 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
- "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, diagnostics, evaluator }.\n *\n * Install scope is FIXED PER PACKAGE, not per invocation: helix installs into\n * the current project; the diagnostics/evaluator npm packages install globally\n * (`npm install -g`). `--global` is retired (issue #1558, D8) but stays\n * REGISTERED so passing it explains what each package actually does, rather than\n * Commander's bare \"error: unknown option '--global'\" — which tells a user what\n * they cannot do 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, diagnostics, evaluator)')\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.bold('diagnostics')} | ${chalk.bold('evaluator')} → ${chalk.yellow('installed GLOBALLY')} by npm; run the\n package's own init from your project afterwards.\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 diagnostics\n ${chalk.dim('$')} mutagent install evaluator --version 1.2.3\n ${chalk.dim('$')} mutagent install diagnostics --harness codex --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.bold('diagnostics')} Public npm package @mutagent/diagnostics ${chalk.green('(available)')}\n ${chalk.bold('evaluator')} Public npm package @mutagent/evaluator ${chalk.green('(available)')}\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 // Report what actually happened, then what remains. Saying only\n // \"Installed\" here is the defect this replaces: the package is on\n // disk, the skill is not, and the user has no way to know that.\n //\n // \"globally\" is stated outright this is `npm install -g`, and an\n // earlier version of this line let an agent tell users the package was\n // in their project directory when it never was.\n output.success(\n `Installed npm package ${result.package}@${result.version} globally` +\n (result.command ? ` (${result.command})` : ''),\n );\n console.log(\n `${chalk.yellow('⚠')} No skill was installed yet — the package ships its own setup step.`,\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
- "/**\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, installed with @mutagent/diagnostics, @mutagent/evaluator or 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 diagnostics`,\n ),\n isJson,\n );\n });\n\n return trace;\n}\n",
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
+ "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
+ "/**\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
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
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 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 ${String(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
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\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/** `POST /api/sandbox/agent/run` — one agent turn in a fresh box. Blocking; no stream. */\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(`/api/sandbox/${encodeURIComponent(id)}/stream${query}`, id, options);\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(`/api/sandbox/${encodeURIComponent(id)}/exec?stream=1`, id, options, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n}\n\nasync function openStream(\n path: string,\n sandboxId: 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, sandboxId);\n if (!response.body) {\n throw new MutagentError(\n 'EMPTY_STREAM',\n 'The server accepted the stream request but sent no body.',\n `Retry with: mutagent helix attach ${sandboxId}`,\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 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",
@@ -61,7 +61,7 @@
61
61
  "/**\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 => `\\x1b[38;2;${r};${g};${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
62
  "/**\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
63
  ],
64
- "mappings": "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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AA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",
65
- "debugId": "335186A30A7070F164756E2164756E21",
64
+ "mappings": "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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAA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",
65
+ "debugId": "8A72E382D57F3D0964756E2164756E21",
66
66
  "names": []
67
67
  }