| Cannot continue: no messages in context | exception | error | agent-loop, precondition, empty-context, sync-throw |
| Cannot continue from message role: assistant | exception | error | agent-loop, precondition, message-role, assistant |
| Agent is already processing. Wait for completion before rese | exception | error | agent, lifecycle, reset, concurrency, race-condition |
| Agent is already processing a prompt. Use steer() or followU | exception | error | agent, prompt, concurrency, queueing, race-condition |
| Agent is already processing. Wait for completion before cont | exception | error | agent, continue, concurrency, race-condition |
| No messages to continue from | exception | error | agent, continue, empty-transcript, precondition |
| Cannot continue from message role: assistant | exception | error | agent, continue, message-role, queueing |
| AgentHarness.create.restore is not implemented yet | exception | error | harness, not-implemented, session-restore, wip |
invalid_entry Entry ${current} not found | error_code | error | |
syntax is not valid JSON | validation | error | |
schema is not a JSON object | validation | error | |
invalid_payload Session id must be non-empty, contain only alphanumeric characters, '-', '_', an | validation | error | |
not_found Session not found: ${metadata.id} | error_code | error | |
invalid_entry Session id does not match header: ${metadata.id} | error_code | error | |
already_exists Session already exists: ${destination.id} | error_code | error | |
storage Lane ${newRecord.lane} already has an open operation ${currentOpenOperationId} | exception | error | |
storage Lane ${newRecord.lane} already has an open operation ${currentOpenOperationId} | exception | error | |
already_exists Session already exists: ${id} | exception | error | |
not_found Session not found: ${id} | exception | error | session, in-memory, not-found, lifecycle |
invalid_payload Durable payload ${reason} | exception | error | serialization, json, validation, session |
invalid_query limit must be a positive integer | validation | error | query, pagination, validation, session |
invalid_lane Lane not found: ${lane} | exception | error | lane, session, not-found, tree |
invalid_entry Invalid session mutation: ${message} | exception | critical | internal, invariant, storage, replay, session |
invalid_query limit must be a positive integer | validation | error | query, pagination, validation, storage, session |
invalid_lane Lane not found: ${lane} | exception | error | lane, session, not-found, storage |
already_exists Lane already exists: ${lane} | exception | error | session, lanes, duplicate, session-state |
not_found Entry not found: ${targetId} | exception | error | session, entries, not-found, ids |
invalid_fork_target Fork target is not a message entry: ${selectedEntryId} | exception | error | session, fork, entry-type, validation |
| Invalid timeout: must be a finite number of seconds | validation | error | bash, timeout, argument-validation, tool-input |
| Invalid timeout: maximum is ${MAX_TIMEOUT_SECONDS} seconds | validation | error | bash, timeout, unit-confusion, tool-input |
| Command aborted | exception | warning | bash, abort, cancellation, tool-execution |
| Command timed out after ${timeout} seconds | exception | error | |
| Command exited with code ${capture.exitCode} | exception | error | |
| Replacement range is outside the base content. | exception | error | |
| Cannot preserve unchanged lines because the base content has | exception | error | |
| edits[${previous.editIndex}] and edits[${current.editIndex}] | exception | error | |
| Edit tool input is invalid. edits must contain at least one | validation | error | |
| Operation aborted | exception | error | |
| Could not edit file: ${path}. Path is not a file. | exception | error | |
| Offset ${offset} is beyond end of file (${allLines.length} l | exception | error | read-tool, offset, out-of-bounds, line-numbers, pagination |
| Operation aborted | exception | info | abort, cancellation, abortsignal, write-tool, filesystem |
| Proxy error: ${response.status} ${response.statusText} | exception | error | proxy, http-status, authentication, streaming, network |
| Request aborted by user | exception | info | abort, cancellation, abortsignal, sse, streaming, proxy |
| No default stream function configured. Pass streamFn explici | exception | error | configuration, initialization, agent-loop, stream-fn, dependency-injection |
| No API key for provider: ${provider} | exception | error | api-key, authentication, anthropic, configuration, headers, missing-env-var |
| Request was aborted | exception | error | |
| ${sse.data} | exception | error | |
| Could not parse Anthropic SSE event ${sse.event}: ${message} | exception | error | |
| Anthropic stream ended before message_stop | exception | error | |
| Anthropic stream ended without a stop reason | exception | error | |
| An unknown error occurred | exception | error | |
| Unhandled stop reason: ${reason} | exception | error | |
| No API key for provider: ${model.provider} | exception | error | |
| Request was aborted | exception | error | |
| Azure OpenAI Responses stream ended without a stop reason | exception | error | |
| An unknown error occurred | exception | error | |
| Invalid Azure OpenAI base URL: ${baseUrl} | exception | error | |
| Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL | exception | error | |
| Request was aborted | exception | error | |
| Bedrock stream ended without a stop reason | exception | error | |
| An unknown error occurred | exception | error | |
| Unknown image type: ${mimeType} | exception | error | |
| createGatewayBindingFetch: ${method} ${url} is outside the c | exception | error | |
| createGatewayBindingFetch: cannot express ${method} ${url} a | exception | error | |
| boolean schemas are unsupported | exception | error | |
| ${key} schemas are unsupported | exception | error | |
| anyOf must contain at least one schema | exception | error | |
| object and array unions are unsupported | exception | error | |
| tuple schemas are unsupported | exception | error | |
| properties require type object | exception | error | |
| schema-valued or true additionalProperties is unsupported | exception | error | |
| object properties must be a schema map | exception | error | |
| object required must be a string array | exception | error | |
| required contains an unknown property | exception | error | |
| root schema must have type object | exception | error | |
| Grammar tool call "${toolName}" requires argument "${inputPr | exception | error | |
| grammar tool input for property "${inputProperty}" changed a | exception | error | |
| grammar tool input for property "${inputProperty}" changed n | exception | error | |
| grammar constrained sampling requires an object parameter sc | exception | error | |
| grammar constrained sampling requires exactly one required s | exception | error | |
| grammar constrained sampling requires a properties entry for | exception | error | |
| grammar constrained sampling property ${inputProperty} must | exception | error | |
| Tool "${tool.name}" requires JSON-schema constrained samplin | exception | error | |
| Tool "${tool.name}" requires JSON-schema constrained samplin | exception | error | |
| Tool "${tool.name}" cannot use grammar constrained sampling: | exception | error | |
| Tool "${tool.name}" cannot use grammar constrained sampling: | exception | error | |
| Custom fetch is not supported by the Google Generative AI ad | exception | error | |
| No API key for provider: ${model.provider} | exception | error | |
| Request was aborted | exception | error | |
| Google stream ended without a finish reason | exception | error | |
| Provider stopped with: ${output.rawStopReason} | exception | error | |
| Request aborted | exception | error | |
| Unsupported Google thinking level mapping for ${model.provid | exception | error | |
| Custom fetch is not supported by the Google Vertex adapter | exception | error | |
| Request was aborted | exception | error | |
| Google Vertex stream ended without a finish reason | exception | error | |
| Provider stopped with: ${output.rawStopReason} | exception | error | |
| Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GC | exception | error | |
| Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or | exception | error | |
| Request aborted | exception | error | |
| API cannot cancel deferred responses | exception | error | |
| No API key for provider: ${model.provider} | validation | error | |
| Request was aborted | exception | error | |
| Mistral stream ended without a finish reason | exception | error | |
| output.errorMessage || "An unknown error occurred" | exception | error | |
| statusText || `Request failed with status ${statusCode}` | http | error | |
| Mistral response has no body | exception | error | |
| Invalid Mistral streaming event | exception | error | |
| Codex stream ended without a stop reason | exception | error | |
| output.errorMessage || "An unknown error occurred" | exception | error | |
| Server requested ${Math.ceil(delayMs / 1000)}s retry delay ( | exception | error | |
| Invalid timeoutMs: ${String(value)} | validation | error | |
| No API key for provider: ${model.provider} | validation | error | |
| Request was aborted | exception | error | |
| Codex SSE response headers timed out after ${httpTimeoutMs}m | exception | error | |
| info.friendlyMessage || info.message | http | error | |
| No response body | exception | error | |
| Codex error: ${message || code || JSON.stringify(event)} | exception | error | |
| message || "Codex response failed" | exception | error | |
| Invalid Codex SSE JSON: ${formatThrownValue(cause)} | exception | error | |
| WebSocket transport is not available in this runtime | exception | error | |
| WebSocket stream closed before response.completed | exception | error | |
| Failed to extract accountId from token | exception | error | |
| No API key for provider: ${provider} | validation | error | |
| Request was aborted | exception | error | |
| output.errorMessage || "Provider returned an error stop reas | exception | error | |
| Stream ended without finish_reason | exception | error | |
| Error Code ${event.code}: ${event.message} | exception | error | |
| ${error.code || "unknown"}: ${error.message || "no message"} | exception | error | |
| OpenAI Responses stream ended before a terminal response eve | exception | error | |
| Unhandled stop reason: ${_exhaustive} | exception | error | |
| No API key for provider: ${provider} | exception | error | |
| Request was aborted | exception | error | |
| OpenAI Responses stream ended without a stop reason | exception | error | |
| output.errorMessage || "An unknown error occurred" | exception | error | |
| No API key for provider: ${model.provider} | exception | error | |
| No API key provided for provider "${model.provider}" | exception | error | |
| ${model.provider} response has no body | exception | error | |
| ${model.provider} stream ended without a terminal event | exception | error | |
| Anthropic OAuth is only available in Node.js environments | exception | error | |
| HTTP request failed. status=${response.status}; url=${url}; | exception | error | |
| Token exchange request failed. url=${TOKEN_URL}; redirect_ur | exception | error | |
| Token exchange returned invalid JSON. url=${TOKEN_URL}; body | exception | error | |
| OAuth state mismatch | exception | error | |
| Missing authorization code | exception | error | |
| Missing OAuth state | exception | error | |
| Anthropic token refresh request failed. url=${TOKEN_URL}; de | exception | error | |
| Anthropic token refresh returned invalid JSON. url=${TOKEN_U | exception | error | |
| Login cancelled | exception | error | |
| ${result.message} | exception | error | |
| Device flow timed out | exception | error | |
| Device flow timed out after one or more slow_down responses. | exception | error | |
| Invalid Copilot models response | exception | error | |
| ${response.status} ${response.statusText}: ${await response. | exception | error | |
| ${response.status} ${response.statusText}: ${text} | exception | error | |
| Invalid device code response | exception | error | |
| Invalid device code response fields | exception | error | |
| Untrusted verification_uri in device code response | exception | error | |
| Invalid Copilot token response | exception | error | |
| Invalid Copilot token response fields | exception | error | |
| Login cancelled | exception | error | |
| Invalid GitHub Enterprise URL/domain | exception | error | |
| Kimi Code device authorization failed with status ${response | exception | error | |
| Invalid Kimi Code device authorization response: ${JSON.stri | exception | error | |
| Kimi Code token ${operation} response missing fields: ${JSON | exception | error | |
| Kimi Code token refresh aborted | exception | error | |
| Kimi Code token refresh unauthorized (status ${response.stat | exception | error | |
| Kimi Code token refresh failed with status ${response.status | exception | error | |
| OpenAI Codex OAuth is only available in Node.js environments | exception | error | |
| Login cancelled | exception | error | |
| OpenAI Codex token ${operation} failed (${response.status}): | exception | error | |
| OpenAI Codex token ${operation} response missing fields: ${J | exception | error | |
| OpenAI Codex token refresh error: ${error instanceof Error ? | exception | error | |
| OpenAI Codex device code login is not enabled for this serve | exception | error | |
| OpenAI Codex device code request failed with status ${respon | exception | error | |
| Invalid OpenAI Codex device code response: ${JSON.stringify( | exception | error | |
| Failed to extract accountId from token | exception | error | |
| State mismatch | exception | error | |
| Missing authorization code | exception | error | |
| Unknown OpenAI Codex login method: ${method} | exception | error | |
| Login cancelled | exception | error | |
| OpenRouter OAuth returned invalid JSON | exception | error | |
| OpenRouter OAuth token exchange timed out | exception | error | |
| OpenRouter OAuth key exchange failed (HTTP ${response.status | exception | error | |
| OpenRouter OAuth response carries no "key" | exception | error | |
| Could not determine the OpenRouter OAuth callback port | exception | error | |
| Missing authorization code | exception | error | |
| Could not load Radius OAuth config from ${gateway}: ${respon | exception | error | |
| Invalid Radius OAuth config from ${gateway} | exception | error | |
| Login cancelled | exception | error | |
| Radius OAuth is only available in Node.js environments | exception | error | |
| OAuth callback did not complete. | exception | error | |
| Radius OAuth device authorization response is missing requir | exception | error | |
| Unknown ${options.name} sign-in method: ${loginMethod} | exception | error | |
| Invalid xAI OAuth response field: ${field} | exception | error | |
| Untrusted verification URI in xAI OAuth response | exception | error | |
| Login cancelled | exception | error | |
| xAI OAuth returned invalid JSON (HTTP ${response.status}) | exception | error | |
oauth OAuth refresh failed for ${providerId} | exception | error | |
auth Credential store modify failed for ${providerId} | exception | error | |
| Invalid selection | exception | error | |
| Unknown provider: ${providerId} | exception | error | |
| Unknown provider: ${providerId ?? ""} | exception | error | |
| Unknown command: ${command} | exception | error | |
| No API provider registered for api: ${api} | exception | error | |
model_source Model refresh failed for ${provider} | exception | error | |
provider Unknown provider: ${model.provider} | exception | error | |
| No API provider registered for api: ${api} | exception | error | |
auth Credential store read failed for ${providerId} | exception | error | |
provider Unknown provider: ${providerId} | exception | error | |
stream Provider ${input.id} has no API implementation for "${model.api}" | exception | error | |
| Unknown Amazon Bedrock auth method: ${method} | exception | error | |
| Unknown Google Vertex AI auth method: ${method} | exception | error | |
| Could not load Radius config from ${gateway}: ${response.sta | exception | error | |
| Invalid Radius config from ${gateway} | exception | error | |
| Failed to cleanup session resources | exception | error | |
| Invalid proxy URL ${JSON.stringify(proxy)}: ${error instance | validation | error | |
| Unsupported proxy protocol. SOCKS and PAC proxy URLs are not | validation | error | |
| Server requested ${Math.ceil(delayMs / 1000)}s retry delay ( | exception | error | |
| Tool "${toolCall.name}" not found | validation | error | |
| Validation failed for tool "${toolCall.name}":
${errors}
Re | validation | error | |
| Pi client is disconnected | exception | error | |
| Session ${sessionId} is not attached | exception | error | |
| Pi client is disposed | exception | error | |
| Session ${sessionId} already has an active lease | exception | error | |
| Session ${sessionId} has an exclusive lease | exception | error | |
| PiClient maxFrameLength must be an integer between 1 and 429 | validation | error | |
| Pi client is disconnected | exception | error | |
| Unix transport path must not be empty | validation | error | |
| Unix transport path is too long; maximum is ${MAX_UNIX_SOCKE | validation | error | |
| Unix transport maxPendingBytes must be a positive safe integ | validation | error | |
| Unix transport is not supported on Windows | exception | error | |
| Unable to resolve model "${cliModel}" | validation | error | |
| Unable to resolve an auth provider | validation | error | |
| Unknown auth command "${args[1] ?? ""}". Use "pi auth print- | validation | error | |
| --min-expiry is only supported by print-bearer-token | validation | error | |
| --min-expiry must use a duration such as 30m or 1h | validation | error | |
| ${arg} is only supported by auth check | validation | error | |
| Unknown option --${option} for "${getAuthCommandName(kind)}" | validation | error | |
| Auth commands only accept --provider and --model | validation | error | |
| Auth checks require --provider <provider> or --model <model> | validation | error | |
| Credential printing requires --provider <provider> or --mode | validation | error | |
| Unknown provider "${cliProvider}". Use --list-models to see | validation | error | |
| Unable to resolve the requested provider/model | validation | error | |
| Model "${cliModel}" not found. Use --list-models to see avai | validation | error | |
| Provider "${providerId}" is configured with OAuth, not an AP | validation | error | |
| Provider "${providerId}" is not configured with an OAuth bea | validation | error | |
| No usable ${kind === "api_key" ? "API key" : "OAuth bearer t | validation | error | |
| Multiple configured providers matched (${credentials.map(({ | validation | error | |
| Failed to dispose remote session | exception | error | |
| Session cannot accept input during ${this.phase ?? "unknown" | exception | error | |
| Cannot ${operation} a session while session is ${this.phase | exception | error | |
| Session ${next.id} did not provide a snapshot | exception | error | |
| Failed to replace remote session attachment | exception | error | |
| Cannot ${description} while session is ${this.phase ?? "unav | exception | error | |
| Remote session is disposed | exception | error | |
| Session ${handle.id} did not provide a snapshot | exception | error | |
| No remote session is attached | exception | error | |
| Remote session is busy with ${this.#lifecycle.operation} | exception | error | |
| Failed to run ${[command, ...args].join(" ")}: ${reason} | exception | error | |
| Invalid entry ID for forking | exception | error | |
| Persisted session is missing a session file | exception | error | |
| This session has not been saved yet. Wait for the first assi | exception | error | |
| Failed to create forked session | exception | error | |
| File not found: ${filePath} | exception | error | |
| No API key found for ${provider}.
Use /login to log into a | exception | error | |
| Authentication failed for "${model.provider}". Credentials m | exception | error | |
| Extension failed, blocking execution: ${String(err)} | exception | error | |
| Cannot submit a prompt while compaction is in progress. Wait | exception | error | |
| Agent is already processing. Specify streamingBehavior ('ste | exception | error | |
| No model selected.
Use /login to log into a provider via OA | exception | error | |
| Authentication failed for "${this.model.provider}". Credenti | exception | error | |
| Extension command "/${commandName}" cannot be queued. Use pr | exception | error | |
| No API key for ${model.provider}/${model.id} | exception | error | |
| Already compacted | exception | error | |
| Nothing to compact (session too small) | exception | error | |
| Compaction cancelled | exception | error | |
| Wait for the current response to finish before navigating th | exception | error | |
| No model available for summarization | exception | error | |
| Entry ${targetId} not found | exception | error | |
| Failed to read auth.json: ${error instanceof Error ? error.m | exception | error | |
| Invalid auth.json: expected an object | exception | error | |
| Invalid auth.json credential for provider "${providerId}" | exception | error | |
| Read-only credential storage cannot modify auth.json | exception | error | |
| Summarization failed: ${response.errorMessage || "Unknown er | exception | error | |
| Summarization attempted to call a tool | exception | error | |
| First kept entry has no UUID - session may need migration | exception | error | |
| Turn prefix summarization failed: ${response.errorMessage || | exception | error | |
| Turn prefix summarization attempted to call a tool | exception | error | |
| Cannot export in-memory session to HTML | exception | error | |
| Nothing to export yet - start a conversation first | exception | error | |
| File not found: ${resolvedInputPath} | exception | error | |
| Extension runtime not initialized. Action methods cannot be | exception | error | |
| ${state.staleMessage} | exception | error | |
| Extension "${extension.path}" failed to load and its API is | exception | error | |
| Invalid default for flag "${name}": expected ${options.type} | exception | error | |
| Provider config is required when registering by name | exception | error | |
| ${this.staleMessage} | exception | error | |
| Invalid HTTP idle timeout: ${String(timeoutMs)} | exception | error | |
| Provider config is required when registering by name | exception | error | |
| Credential ${operation} committed for ${providerId}, but loc | exception | error | |
provider Unknown provider: ${model.provider} | exception | error | |
auth Provider is not configured: ${model.provider} | exception | error | |
| Provider id must not be empty. | validation | error | |
| Path does not exist: ${resolved} | validation | error | |
| No matching package found for ${source} | validation | error | |
| Missing source: ${resolvedSource} | exception | error | |
| Project is not trusted; refusing to access project package s | validation | error | |
| Invalid npmCommand: first array entry must be a non-empty co | validation | error | |
| Refusing to use path outside package install root: ${resolve | validation | error | |
| Failed to run ${command} ${args.join(" ")}: ${result.error?. | exception | error | |
| Provider ${providerId}, model ${definition.id}: no "api" spe | validation | error | |
| Provider ${providerId}: "baseUrl" is required when defining | validation | error | |
| Provider ${providerId}, model ${definition.id}: invalid cont | validation | error | |
| Provider ${providerId}, model ${definition.id}: invalid maxT | validation | error | |
| Provider ${providerId}: "baseUrl" is required when "oauth" i | validation | error | |
| Provider ${providerId}: must specify "baseUrl", "headers", " | validation | error | |
| authHeader requires a resolved API key | validation | error | |
| Provider ${providerId}: "api" is required when registering s | validation | error | |
| Provider ${providerId}: no authentication method configured. | validation | error | |
| No API provider registered for api: ${model.api} | exception | error | |
| Invalid model catalog for provider "${providerId}" | validation | error | |
| Model catalog request failed for ${provider.id}: ${response. | exception | error | |
| Failed to resolve ${description} from shell command: ${refer | validation | error | |
| Failed to resolve ${description} from environment variable: | validation | error | |
| Failed to resolve ${description} from environment variables: | validation | error | |
| Failed to resolve ${description} | validation | error | |
| Stored session working directory does not exist: ${issue.ses | exception | error | |
| Session id must be non-empty, contain only alphanumeric char | validation | error | |
| Session header exceeds ${MAX_SESSION_HEADER_SCAN_BYTES}-byte | exception | error | |
| Session file is not a valid ${APP_NAME} session: ${explicitP | validation | error | |
| Entry ${targetId} not found | exception | error | |
| Entry ${branchFromId} not found | exception | error | |
| Entry ${leafId} not found | exception | error | |
| Cannot fork: source session file is empty or invalid: ${reso | exception | error | |
| Cannot fork: source session has no header: ${resolvedSourceP | exception | error | |
| Invalid ${settingName} setting: ${String(value)} | validation | error | |
| Project is not trusted; refusing to write project settings | exception | error | |
| Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)} | validation | error | |
| Invalid timeout: must be a finite number of seconds | validation | error | |
| Invalid timeout: maximum is ${MAX_TIMEOUT_SECONDS} seconds | validation | error | |
| Working directory does not exist: ${cwd}
Cannot execute bash | exception | error | |
| Command aborted | exception | error | |
| Command timed out after ${timeoutSecs} seconds | exception | error | |
| Command exited with code ${exitCode} | exception | error | |
| Replacement range is outside the base content. | exception | error | |
| Cannot preserve unchanged lines because the base content has | exception | error | |
| edits[${previous.editIndex}] and edits[${current.editIndex}] | validation | error | |
| Edit tool input is invalid. edits must contain at least one | validation | error | |
| Operation aborted | exception | error | |
| Could not edit file: ${path}. ${errorMessage}. | exception | error | |
| Unknown tool name: ${toolName} | validation | error | |
| Offset ${offset} is beyond end of file (${allLines.length} l | validation | error | |
| Operation aborted | exception | error | |
| Failed to read trust store ${path}: ${message} | exception | error | |
| Invalid trust store ${path}: expected an object | validation | error | |
| Invalid trust store ${path}: value for ${JSON.stringify(key) | validation | error | |
| Failed to acquire trust store lock | exception | error | |
| Server URL must use http or https | validation | error | |
| llama.cpp returned HTTP ${response.status} | http | error | |
| llama.cpp returned an invalid model catalog | exception | error | |
| Server is not running in llama.cpp router mode | exception | error | |
| llama.cpp SSE returned HTTP ${response.status} | http | error | |
| Model failed to load | exception | error | |
| Download failed | exception | error | |
| Hugging Face rate limit reached | http | error | |
| Hugging Face returned HTTP ${response.status} | http | error | |
| Hugging Face returned invalid search results | exception | error | |
| Hugging Face returned invalid model details | exception | error | |
| Model catalog refresh timed out. | exception | error | |
| parsed.diagnostics.map((diagnostic) => diagnostic.message).j | exception | error | |
| Login cancelled | exception | error | |
| Invalid hex color: ${hex} | validation | error | |
| Invalid color value: ${color} | validation | error | |
| Circular variable reference detected: ${value} | validation | error | |
| Variable reference not found: ${value} | validation | error | |
| Invalid theme name "${name}": theme names cannot contain "/" | validation | error | |
| Invalid theme "${label}": | validation | error | |
| Failed to parse theme ${label}: ${error} | validation | error | |
| Theme "${name}" does not have a source path for export | exception | error | |
| Theme not found: ${name} | exception | error | |
| Managed install marker is missing or invalid: ${markerPath} | exception | error | |
| Could not download managed installer ${label} from ${url}: H | http | error | |
| npm ${args.join(" ")} exited with code ${code ?? "unknown"} | exception | error | |
| Could not verify managed Pi ${expectedVersion}: ${reason} | exception | error | |
| Managed Pi smoke test returned version ${installedVersion}; | exception | error | |
| Invalid managed release version: ${version} | validation | error | |
| Another managed Pi update is already running. | exception | error | |
| Model catalog refresh timed out. | exception | error | |
| Could not refresh model catalogs: ${details} | exception | error | |
| Could not determine latest ${APP_NAME} version: ${formatVers | exception | error | |
| Could not determine latest ${APP_NAME} version. | exception | error | |
| Failed to copy to clipboard | exception | error | |
| Custom shell path not found: ${customShellPath} | exception | error | |
| No bash shell found. Options:
1. Install Git for Windows: | exception | error | |
| GitHub API error: ${response.status} | http | error | |
| Failed to download: ${response.status} | http | error | |
| No response body | exception | error | |
| Failed to extract ${assetName}: ${failure} | exception | error | |
| Failed to extract ${assetName}: ${failures.join("; ")} | exception | error | |
| Unsupported platform: ${plat}/${architecture} | exception | error | |
| Unsupported archive format: ${assetName} | exception | error | |
| Binary not found in archive: expected ${binaryFileName} unde | exception | error | |
| Select a harness model explicitly or set both PI_PROVIDER an | exception | error | |
| Agent run completed without an assistant message. | exception | error | |
| Agent run ended with unexpected stop reason: ${assistant.sto | exception | error | |
| Agent run produced no assistant text. | exception | error | |
| Eval model not found: ${selection.provider}/${selection.id} | exception | error | |
| Transformed eval system prompt must not be empty. | exception | error | |
| Pi eval input must include at least one prompt step. | exception | error | |
| Agent run failed and cleanup also failed. | exception | error | |
| Agent cleanup failed. | exception | error | |
| Invalid eval artifact name: ${attachment.name} | validation | error | |
| Eval input must contain only finite numbers. | validation | error | |
| Eval input must be JSON-serializable. | validation | error | |
| Eval input must not contain circular references. | validation | error | |
| Eval input arrays must not be sparse. | validation | error | |
| Eval input must contain only plain objects and arrays. | validation | error | |
| evalSet must not be empty. | validation | error | |
| At least one candidate harness is required. | validation | error | |
| Harness names must be unique within an eval set. | validation | error | |
| repetitions must be a positive integer. | validation | error | |
| CBOR payload contains trailing data | exception | error | |
| CBOR nesting depth exceeds configured limit of ${this.option | exception | error | |
| Decoded CBOR integer is outside the safe range | exception | error | |
| CBOR text string contains invalid UTF-8 | exception | error | |
| CBOR map keys must be strings | exception | error | |
| CBOR map contains a duplicate key | exception | error | |
| CBOR tags are not supported | exception | error | |
| Malformed CBOR major type | exception | error | |
| Decoded CBOR number must be finite | exception | error | |
| CBOR break marker is not supported | exception | error | |
| Unsupported CBOR simple value or floating-point width | exception | error | |
| Indefinite-length CBOR ${kind}s are not supported | exception | error | |
| CBOR ${kind} length exceeds configured limit of ${limit} | exception | error | |
| Decoded CBOR integer or length is outside the safe range | exception | error | |
| Indefinite-length CBOR items are not supported | exception | error | |
| Malformed CBOR additional information | exception | error | |
| Truncated CBOR payload | exception | error | |
| CBOR input must be a Uint8Array | exception | error | |
| CBOR byte length exceeds configured limit of ${resolved.maxB | exception | error | |
| CBOR byte length exceeds configured limit of ${this.maxByteL | exception | error | |
| CBOR text string length exceeds configured limit of ${option | exception | error | |
| CBOR text strings must contain valid Unicode scalar values | exception | error | |
| CBOR nesting depth exceeds configured limit of ${options.max | exception | error | |
| CBOR numbers must be finite | exception | error | |
| CBOR integers must be safe JavaScript integers | exception | error | |
| CBOR byte string length exceeds configured limit of ${option | exception | error | |
| CBOR values must not contain cycles | exception | error | |
| CBOR array length exceeds configured limit of ${options.maxC | exception | error | |
| CBOR arrays must not contain holes or undefined values | exception | error | |
| CBOR map keys must be strings | exception | error | |
| CBOR map length exceeds configured limit of ${options.maxCon | exception | error | |
| Unsupported CBOR value type: ${typeof value} | exception | error | |
| ${name} must be an integer between 0 and ${maximum} | exception | error | |
| Invalid client protocol message | exception | error | |
| Invalid server protocol message | exception | error | |
| Unable to encode ${kind} protocol message: ${boundedErrorMes | exception | error | |
| ${this.kind} message decoder has failed | exception | error | |
| Invalid ${this.kind} protocol frame: ${boundedErrorMessage(e | exception | error | |
| Invalid ${this.kind} protocol framing: ${boundedErrorMessage | exception | error | |
| maxFrameLength must be an integer between 0 and ${MAX_UINT32 | exception | error | |
| Frame payload must be a Uint8Array | exception | error | |
| Frame payload exceeds the unsigned 32-bit length limit | exception | error | |
| Frame must be a Uint8Array | exception | error | |
| Frame does not contain a complete length prefix | exception | error | |
| Frame length ${length} exceeds configured limit of ${maxFram | exception | error | |
| Frame must contain exactly one complete payload | exception | error | |
| Frame decoder has ended | exception | error | |
| Frame decoder has failed | exception | error | |
| Frame chunk must be a Uint8Array | validation | error | |
| Frame length ${frameLength} exceeds configured limit of ${th | exception | error | |
| Truncated frame at end of stream | exception | error | |
| ${label} must be a non-empty string | validation | error | |
| Protocol timestamps must be non-negative integers | validation | error | |
| Protocol JSON numbers must be finite | validation | error | |
| Unsupported protocol JSON value: ${typeof value} | validation | error | |
| Protocol JSON values must not contain circular references | validation | error | |
| Protocol JSON objects must be plain objects | validation | error | |
| Deferred assistant messages are not supported by protocol v1 | validation | error | |
| Assistant error messages must not be empty | validation | error | |
| Tool result ${message.toolCallId} does not match tool call $ | validation | error | |
| Tool result ${message.toolName} does not match tool call ${c | validation | error | |
| PiServer listeners must be an array | validation | error | |
| PiServer serverId must not be empty | validation | error | |
| PiServer maxFrameLength must be an integer between 1 and ${M | validation | error | |
| PiServer handshakeTimeoutMs must be an integer between 1 and | validation | error | |
session_locked Session runtime is terminating: ${id} | error_code | error | |
invalid_request Service returned session ${snapshot.id} for server-assigned session ${id} | error_code | error | |
not_found Session is not live: ${sessionId} | error_code | error | |
busy A prompt is already running | error_code | error | |
session_locked Session already exists | error_code | error | |
not_found Unknown session: ${sessionId} | error_code | error | |
| ${description} must not be empty | validation | error | |
| ${description} is too long; maximum is ${MAX_UNIX_SOCKET_PAT | validation | error | |
| Unix listener is already started | exception | error | |
| Unix listener is closing or closed | exception | error | |
| Unix listener path is not a socket after binding: ${ownedBin | exception | error | |
| Unix listener path changed during cleanup; preserved replace | exception | error | |
| Refusing to remove non-socket Unix listener path: ${path} | exception | error | |
| Unix listener is already running: ${path} | exception | error | |
| Unix listener path changed while checking for a stale socket | exception | error | |
| PiServer Unix socket mode must be an integer between 0 and 0 | validation | error | |
| PiServer maxFrameLength must be an integer between 1 and ${M | validation | error | |
| PiServer maxPendingBytes must be a safe integer at least max | validation | error | |
| PiServer gracefulCloseTimeoutMs must be an integer between 1 | validation | error | |
| SQLite transaction callbacks must be synchronous | validation | error | |
storage Failed to build SQLite branch cache at entry ${leafId} | error_code | error | |
invalid_entry Branch tip ${parentId} changed during append | error_code | error | |
| writerLease.ttlMs must be positive | validation | error | |
| writerLease.heartbeatIntervalMs must be positive and less th | validation | error | |
| ${message}: ${result.error.message} | error_code | error | |
invalid_entry Invalid SQLite session entry ${row.id}: failed to decode entry ${row.id} | error_code | error | |
storage Invalid SQLite session record at sequence ${row.seq}: failed to decode payload | error_code | error | |
already_exists ID already exists: ${id} | error_code | error | |
not_found Session not found: ${sessionId} | error_code | error | |
invalid_lane Lane not found: ${lane} | error_code | error | |
invalid_fork_target Fork target is not a message entry: ${selectedEntryId} | exception | error | |
| ${message}: ${result.error.message} | exception | error | |
invalid_entry Invalid SQLite session entry ${row.id}: failed to decode entry ${row.id} | exception | error | |
storage Lane ${row.lane} points at missing entry ${row.leaf_id} | exception | error | |
invalid_lane Lane not found: ${lane} | exception | error | |
storage Lane ${lane} points at missing open operation ${laneRow.open_operation_id} | exception | error | |
storage Missing sequence row for session ${sessionId} | exception | error | |
storage Missing stats row for session ${sessionId} | exception | error | |
storage Invalid SQLite session ${sessionId}: metadata is not valid JSON | exception | error | |
invalid_payload SQLite session metadata must be an object | exception | error | |
| Rendered line ${i} exceeds terminal width (${visibleWidth(li | exception | error | |
| ${command} failed with exit code ${result.status ?? 1} | exception | error | |
| No Windows cross-compiler found for ${target.arch}. Install | exception | error | |
| PI_TUI_WIN32_TOOLCHAIN must be either 'msvc' or 'mingw' | exception | error | |
| Microsoft C++ Build Tools not found. Install the Visual Stud | exception | error | |
| Callback route not found. | http | error | |
| Anthropic authentication did not complete. | http | error | |
| Missing code or state parameter. | http | error | |
| State mismatch. | http | error | |
| Internal error | http | error | |
aborted Branch summary aborted | error_code | error | |
summarization_failed Branch summary failed: ${response.errorMessage || "Unknown error"} | error_code | error | |
aborted Summarization aborted | error_code | error | |
summarization_failed Summarization failed: ${response.errorMessage || "Unknown error"} | error_code | error | |
timeout Invalid timeout: must be a finite number of seconds | validation | error | |
invalid Unsupported file type | error_code | error | |
aborted aborted | error_code | error | |
shell_unavailable Custom shell path not found: ${customShellPath} | error_code | error | |
spawn_error Working directory does not exist: ${cwd}
Cannot execute bash commands. | error_code | error | |
unknown Full output path was not created | error_code | error | |
| Unhandled proxy event type: ${(proxyEvent as any).type} | console | error | |
| Warning: ${diagnostic.message} | console | error | |
| Deprecation warning: ${message} | console | error | |
invalid_entry Invalid JSONL v4 session ${path}: line 1 is missing a header | exception | error | |
| oldText must not be empty in ${path}. | validation | error | |
| edits[${editIndex}].oldText must not be empty in ${path}. | validation | error | |
| Could not find the exact text in ${path}. The old text must | validation | error | |
| Could not find edits[${editIndex}] in ${path}. The oldText m | validation | error | |
| Found ${occurrences} occurrences of the text in ${path}. The | validation | error | |
| Found ${occurrences} occurrences of edits[${editIndex}] in $ | validation | error | |
| No changes made to ${path}. The replacement produced identic | validation | error | |
| No changes made to ${path}. The replacements produced identi | validation | error | |
| Could not edit file: ${path}. Error code: ${error.code}. | exception | error | |
| ${response.status} ${response.statusText}: ${suffix}${codeSu | http | error | |
| xAI OAuth device authorization failed (HTTP ${response.statu | http | error | |
| xAI OAuth token refresh failed (HTTP ${response.status})${de | exception | error | |
| Request aborted | exception | error | |
| oldText must not be empty in ${path}. | exception | error | |
| Could not find the exact text in ${path}. The old text must | exception | error | |
| Found ${occurrences} occurrences of the text in ${path}. The | exception | error | |
| No changes made to ${path}. The replacement produced identic | exception | error | |