Files
dev/third_party/pi/packages/coding-agent/schemas/settings.schema.json
alexion 6081e3e325 chore(vendor): import pi 1.3.0
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
2026-10-15 17:58:48 -04:00

784 lines
19 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://pi.dev/schemas/settings.schema.json",
"$comment": "This file is generated from TypeScript source. Do not edit it manually; run npm run generate:schemas.",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"description": "JSON Schema reference."
},
"lastChangelogVersion": {
"type": "string"
},
"defaultProvider": {
"type": "string"
},
"defaultModel": {
"type": "string"
},
"defaultThinkingLevel": {
"$ref": "#/$defs/ModelThinkingLevel"
},
"modelThinkingLevels": {
"type": "object",
"patternProperties": {
"^.*$": {
"$ref": "#/$defs/ModelThinkingLevel"
}
},
"description": "Per-model default thinking level overrides keyed by \"provider/modelId\"."
},
"transport": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "string",
"const": "sse"
},
{
"type": "string",
"const": "websocket"
},
{
"type": "string",
"const": "websocket-cached"
}
],
"default": "auto"
},
"sessionShareDestination": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "string",
"const": "gist"
},
{
"type": "string",
"const": "radius"
}
],
"description": "Destination used by /share. \"auto\" uses Radius when authenticated and otherwise creates a GitHub gist.",
"default": "auto"
},
"steeringMode": {
"anyOf": [
{
"type": "string",
"const": "all"
},
{
"type": "string",
"const": "one-at-a-time"
}
],
"default": "one-at-a-time"
},
"followUpMode": {
"anyOf": [
{
"type": "string",
"const": "all"
},
{
"type": "string",
"const": "one-at-a-time"
}
],
"default": "one-at-a-time"
},
"theme": {
"type": "string"
},
"compaction": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"reserveTokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"default": 16384
},
"keepRecentTokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"default": 20000
},
"modelOverrides": {
"type": "object",
"patternProperties": {
"^.*$": {
"type": "object",
"properties": {
"reserveTokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"keepRecentTokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
}
},
"description": "Per-model overrides keyed by exact \"provider/modelId\" strings."
}
}
},
"branchSummary": {
"type": "object",
"properties": {
"reserveTokens": {
"type": "number",
"description": "Tokens reserved for the prompt and LLM response.",
"default": 16384
},
"skipPrompt": {
"type": "boolean",
"description": "When true, skips the \"Summarize branch?\" prompt and defaults to no summary.",
"default": false
}
}
},
"retry": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"maxRetries": {
"type": "number",
"default": 3
},
"baseDelayMs": {
"type": "number",
"description": "Exponential backoff base delay in milliseconds: 2s, 4s, 8s.",
"default": 2000
},
"maxAgentDelayMs": {
"type": "number",
"default": 60000
},
"provider": {
"type": "object",
"properties": {
"timeoutMs": {
"type": "number",
"description": "SDK or provider request timeout in milliseconds."
},
"maxRetries": {
"type": "number",
"description": "SDK or provider retry attempts."
},
"maxRetryDelayMs": {
"type": "number",
"description": "Maximum server-requested delay before failing.",
"default": 60000
}
}
},
"maxDelayMs": {
"type": "number",
"description": "Legacy retry delay setting. Use provider.maxRetryDelayMs instead.",
"deprecated": true
}
}
},
"hideThinkingBlock": {
"type": "boolean",
"default": false
},
"showCacheMissNotices": {
"type": "boolean",
"description": "Show cache cost and provider recovery notices.",
"default": false
},
"externalEditor": {
"type": "string",
"description": "Command for Ctrl+G external editor; takes precedence over VISUAL and EDITOR."
},
"shellPath": {
"type": "string",
"description": "Custom shell path, for example for Cygwin on Windows, with support for leading ~ expansion."
},
"quietStartup": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"const": "header"
}
],
"description": "When true, hide all startup output. When \"header\", keep only the startup header.",
"default": false
},
"defaultProjectTrust": {
"anyOf": [
{
"type": "string",
"const": "ask"
},
{
"type": "string",
"const": "always"
},
{
"type": "string",
"const": "never"
}
],
"description": "Global setting only.",
"default": "ask"
},
"shellCommandPrefix": {
"type": "string",
"description": "Prefix prepended to every bash command, for example to enable shell aliases."
},
"npmCommand": {
"type": "array",
"items": {
"type": "string"
},
"description": "Command used for npm package lookup and installation, in argv form such as [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"]."
},
"collapseChangelog": {
"type": "boolean",
"description": "Show the condensed changelog after update; use /changelog for the full changelog.",
"default": false
},
"enableInstallTelemetry": {
"type": "boolean",
"description": "Send an anonymous version and update ping after changelog-detected updates.",
"default": true
},
"enableAnalytics": {
"type": "boolean",
"description": "Opt in to analytics data sharing.",
"default": false
},
"trackingId": {
"type": "string",
"description": "Analytics tracking identifier, generated when analytics is enabled."
},
"packages": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"description": "Load all resources from the package."
},
{
"type": "object",
"required": [
"source"
],
"properties": {
"source": {
"type": "string"
},
"autoload": {
"type": "boolean",
"description": "When false, start empty and only apply explicit resource patterns."
},
"extensions": {
"type": "array",
"items": {
"type": "string"
}
},
"skills": {
"type": "array",
"items": {
"type": "string"
}
},
"prompts": {
"type": "array",
"items": {
"type": "string"
}
},
"themes": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
],
"description": "Package source for npm or git packages. Use the string form to load all resources or the object form to filter resources."
},
"description": "npm or git package sources, as strings or objects with resource filtering."
},
"extensions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Local extension file paths or directories."
},
"deviceId": {
"type": "string",
"description": "Stable installation UUID, generated when authentication first needs it. Global only."
},
"skills": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "object",
"properties": {
"enableSkillCommands": {
"type": "boolean"
},
"customDirectories": {
"type": "array",
"items": {
"type": "string"
}
}
},
"deprecated": true
}
],
"description": "Local skill file paths or directories."
},
"prompts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Local prompt template file paths or directories."
},
"themes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Local theme file paths or directories."
},
"enableSkillCommands": {
"type": "boolean",
"description": "Register skills as /skill:name commands.",
"default": true
},
"terminal": {
"type": "object",
"properties": {
"showImages": {
"type": "boolean",
"description": "Show images when the terminal supports them.",
"default": true
},
"imageWidthCells": {
"type": "number",
"description": "Preferred inline image width in terminal cells.",
"default": 60
},
"clearOnShrink": {
"type": "boolean",
"description": "Clear empty rows when content shrinks.",
"default": false
},
"showTerminalProgress": {
"type": "boolean",
"description": "Show OSC 9;4 terminal progress indicators.",
"default": false
},
"hyperlinks": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"const": "auto"
}
]
},
"images": {
"anyOf": [
{
"type": "string",
"const": "kitty"
},
{
"type": "string",
"const": "iterm2"
},
{
"type": "string",
"const": "auto"
},
{
"type": "boolean",
"const": false
}
]
},
"trueColor": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"const": "auto"
}
]
}
}
},
"images": {
"type": "object",
"properties": {
"autoResize": {
"type": "boolean",
"description": "Resize images to 2000x2000 maximum for better model compatibility.",
"default": true
},
"blockImages": {
"type": "boolean",
"description": "When true, prevents all images from being sent to LLM providers.",
"default": false
}
}
},
"enabledModels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Model patterns for cycling, in the same format as the --models CLI flag."
},
"defaultTools": {
"type": "array",
"items": {
"type": "string"
},
"description": "Initial tool selection. Plain names replace the inherited selection; +name and -name entries add or remove tools."
},
"doubleEscapeAction": {
"anyOf": [
{
"type": "string",
"const": "fork"
},
{
"type": "string",
"const": "tree"
},
{
"type": "string",
"const": "none"
}
],
"description": "Action for double-escape with an empty editor.",
"default": "tree"
},
"treeFilterMode": {
"anyOf": [
{
"type": "string",
"const": "default"
},
{
"type": "string",
"const": "no-tools"
},
{
"type": "string",
"const": "user-only"
},
{
"type": "string",
"const": "labeled-only"
},
{
"type": "string",
"const": "all"
}
],
"description": "Default filter when opening /tree.",
"default": "default"
},
"thinkingBudgets": {
"type": "object",
"properties": {
"minimal": {
"type": "number"
},
"low": {
"type": "number"
},
"medium": {
"type": "number"
},
"high": {
"type": "number"
}
},
"description": "Custom token budgets for thinking levels."
},
"editorPaddingX": {
"type": "number",
"description": "Horizontal padding for the input editor.",
"default": 0
},
"outputPad": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
}
],
"description": "Horizontal padding for transcript content.",
"default": 1
},
"autocompleteMaxVisible": {
"type": "number",
"description": "Maximum visible items in the autocomplete dropdown.",
"default": 5
},
"showHardwareCursor": {
"type": "boolean",
"description": "Show the terminal cursor while still positioning it for IME."
},
"markdown": {
"type": "object",
"properties": {
"codeBlockIndent": {
"type": "string",
"default": " "
},
"mermaid": {
"anyOf": [
{
"type": "string",
"const": "off"
},
{
"type": "string",
"const": "final"
},
{
"type": "string",
"const": "streaming"
}
],
"default": "streaming"
}
}
},
"warnings": {
"type": "object",
"properties": {
"anthropicExtraUsage": {
"type": "boolean",
"default": true
}
}
},
"codemode": {
"type": "object",
"properties": {
"mode": {
"anyOf": [
{
"type": "string",
"const": "on"
},
{
"type": "string",
"const": "only"
}
],
"description": "How codemode presents tools. \"on\" keeps direct tools declared and annotates tools callable from scripts; codemode lists only tools without direct exposure. \"only\" lists every script-callable tool in codemode and does not declare active direct tools.",
"default": "on"
},
"inlineBudget": {
"type": "number",
"minimum": 0,
"description": "Estimated tokens available for inline codemode tool declarations.",
"default": 3000
}
}
},
"sessionDir": {
"type": "string",
"description": "Custom session storage directory, in the same format as the --session-dir CLI flag."
},
"httpProxy": {
"type": "string",
"description": "Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Pi-managed HTTP clients."
},
"httpIdleTimeoutMs": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "string",
"const": "disabled"
}
],
"description": "HTTP header or body idle timeout in milliseconds; 0 or \"disabled\" disables it."
},
"cacheWarming": {
"anyOf": [
{
"type": "string",
"const": "off"
},
{
"type": "string",
"const": "streaming"
},
{
"type": "string",
"const": "idle"
}
],
"description": "Cache-warming profile. \"idle\" also warms between agent runs. Global only because each refresh costs money.",
"default": "streaming"
},
"websocketConnectTimeoutMs": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "string",
"const": "disabled"
}
],
"description": "WebSocket connect or open handshake timeout in milliseconds; 0 or \"disabled\" disables it."
},
"tuiMode": {
"anyOf": [
{
"type": "string",
"const": "regular"
},
{
"type": "string",
"const": "fullscreen"
}
],
"default": "fullscreen"
},
"fullscreenExitOutput": {
"anyOf": [
{
"type": "string",
"const": "transcript"
},
{
"type": "string",
"const": "resume-hint"
}
],
"description": "No effect in regular TUI mode.",
"default": "transcript"
},
"fullscreenScrollbar": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "string",
"const": "always"
},
{
"type": "string",
"const": "hidden"
}
],
"description": "No effect in regular TUI mode.",
"default": "auto"
},
"fullscreenCopyOnSelect": {
"type": "boolean",
"description": "No effect in regular TUI mode.",
"default": true
},
"fullscreenWheelScrollLines": {
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"const": "auto"
}
],
"description": "Lines scrolled per wheel event in fullscreen mode; numeric values are clamped from 1 to 100.",
"default": "auto"
},
"queueMode": {
"anyOf": [
{
"type": "string",
"const": "all"
},
{
"type": "string",
"const": "one-at-a-time"
}
],
"description": "Legacy setting migrated to steeringMode.",
"deprecated": true
},
"websockets": {
"type": "boolean",
"description": "Legacy setting migrated to transport.",
"deprecated": true
}
},
"additionalProperties": true,
"$defs": {
"ModelThinkingLevel": {
"enum": [
"off",
"minimal",
"low",
"medium",
"high",
"xhigh",
"max"
]
}
}
}