lsd-pi 1.3.6 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +82 -0
  2. package/dist/cli.js +2 -1
  3. package/dist/lsd-settings-manager.d.ts +2 -0
  4. package/dist/lsd-settings-manager.js +5 -0
  5. package/dist/resource-loader.js +33 -3
  6. package/dist/resources/extensions/cache-timer/index.js +3 -2
  7. package/dist/resources/extensions/mcp-client/index.js +72 -4
  8. package/dist/resources/extensions/slash-commands/plan.js +5 -5
  9. package/dist/resources/extensions/usage/index.js +34 -2
  10. package/dist/resources/extensions/voice/index.js +1 -0
  11. package/dist/resources/extensions/voice/push-to-talk.js +2 -0
  12. package/dist/welcome-screen.js +2 -2
  13. package/package.json +1 -1
  14. package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.d.ts +2 -0
  15. package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.d.ts.map +1 -0
  16. package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.js +72 -0
  17. package/packages/pi-coding-agent/dist/core/agent-session.context-usage.test.js.map +1 -0
  18. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +4 -0
  19. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  20. package/packages/pi-coding-agent/dist/core/agent-session.js +29 -2
  21. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  22. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  23. package/packages/pi-coding-agent/dist/core/extensions/runner.js +1 -0
  24. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  25. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +2 -0
  26. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  27. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  28. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.d.ts +2 -0
  29. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.d.ts.map +1 -0
  30. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.js +35 -0
  31. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.js.map +1 -0
  32. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +6 -0
  33. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  34. package/packages/pi-coding-agent/dist/core/settings-manager.js +12 -0
  35. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  36. package/packages/pi-coding-agent/dist/core/tool-priority.js +1 -1
  37. package/packages/pi-coding-agent/dist/core/tool-priority.js.map +1 -1
  38. package/packages/pi-coding-agent/dist/core/tools/edit-diff.d.ts +5 -0
  39. package/packages/pi-coding-agent/dist/core/tools/edit-diff.d.ts.map +1 -1
  40. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js +21 -0
  41. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  42. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js +16 -1
  43. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js.map +1 -1
  44. package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
  45. package/packages/pi-coding-agent/dist/main.js +1 -0
  46. package/packages/pi-coding-agent/dist/main.js.map +1 -1
  47. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-summary-line.test.js +12 -4
  48. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-summary-line.test.js.map +1 -1
  49. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.d.ts +7 -5
  50. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.d.ts.map +1 -1
  51. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js +86 -28
  52. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js.map +1 -1
  53. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts +2 -0
  54. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  55. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +16 -10
  56. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  57. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  58. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  59. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +26 -4
  60. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  61. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +16 -1
  62. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  63. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +128 -13
  64. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  65. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.d.ts +1 -0
  66. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.d.ts.map +1 -1
  67. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.js +48 -4
  68. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.js.map +1 -1
  69. package/packages/pi-coding-agent/dist/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.js +137 -6
  70. package/packages/pi-coding-agent/dist/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.js.map +1 -1
  71. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  72. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +64 -15
  73. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  74. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -1
  75. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js +2 -1
  76. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -1
  77. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +1 -0
  78. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  79. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  80. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +5 -1
  81. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  82. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +73 -27
  83. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  84. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +4 -4
  85. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  86. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  87. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +3 -0
  88. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  89. package/packages/pi-coding-agent/package.json +1 -1
  90. package/packages/pi-coding-agent/src/core/agent-session.context-usage.test.ts +87 -0
  91. package/packages/pi-coding-agent/src/core/agent-session.ts +40 -2
  92. package/packages/pi-coding-agent/src/core/extensions/runner.ts +1 -0
  93. package/packages/pi-coding-agent/src/core/extensions/types.ts +3 -0
  94. package/packages/pi-coding-agent/src/core/settings-manager.collapse-tool-calls.test.ts +46 -0
  95. package/packages/pi-coding-agent/src/core/settings-manager.ts +18 -0
  96. package/packages/pi-coding-agent/src/core/tool-priority.ts +1 -1
  97. package/packages/pi-coding-agent/src/core/tools/edit-diff.test.ts +20 -0
  98. package/packages/pi-coding-agent/src/core/tools/edit-diff.ts +26 -0
  99. package/packages/pi-coding-agent/src/main.ts +1 -0
  100. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-summary-line.test.ts +14 -4
  101. package/packages/pi-coding-agent/src/modes/interactive/components/diff.ts +105 -28
  102. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +13 -6
  103. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +31 -4
  104. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +137 -14
  105. package/packages/pi-coding-agent/src/modes/interactive/components/tool-summary-line.ts +60 -4
  106. package/packages/pi-coding-agent/src/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.ts +174 -6
  107. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +73 -15
  108. package/packages/pi-coding-agent/src/modes/interactive/controllers/extension-ui-controller.ts +2 -1
  109. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +1 -0
  110. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +76 -27
  111. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +4 -4
  112. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +4 -0
  113. package/packages/pi-tui/dist/components/editor.js +3 -3
  114. package/packages/pi-tui/dist/components/editor.js.map +1 -1
  115. package/packages/pi-tui/src/components/editor.ts +3 -3
  116. package/pkg/dist/modes/interactive/theme/themes.js +4 -4
  117. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  118. package/pkg/package.json +1 -1
  119. package/src/resources/extensions/cache-timer/index.ts +3 -2
  120. package/src/resources/extensions/mcp-client/index.ts +83 -4
  121. package/src/resources/extensions/mcp-client/tests/server-name-spaces.test.ts +16 -0
  122. package/src/resources/extensions/slash-commands/plan.ts +6 -6
  123. package/src/resources/extensions/usage/index.ts +40 -2
  124. package/src/resources/extensions/voice/index.ts +1 -0
  125. package/src/resources/extensions/voice/push-to-talk.ts +3 -0
  126. package/src/resources/extensions/voice/tests/push-to-talk.test.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@gsd/pi-agent-core\";\nimport type { Transport } from \"@gsd/pi-ai\";\nimport {\n\ttype Component,\n\tContainer,\n\tgetCapabilities,\n\ttype SelectItem,\n\tSelectList,\n\ttype SettingItem,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@gsd/pi-tui\";\nimport { getSelectListTheme, getSettingsListTheme, getThemeAccentInfo, getThemeAccentLabel, theme } from \"../theme/theme.js\";\nimport { DynamicBorder } from \"./dynamic-border.js\";\n\nexport const THINKING_DESCRIPTIONS: Record<ThinkingLevel, string> = {\n\toff: \"No reasoning\",\n\tadaptive: \"Automatically adapt per turn (client or provider resolved)\",\n\tlow: \"Light reasoning (~2k tokens)\",\n\tmedium: \"Moderate reasoning (~8k tokens)\",\n\thigh: \"Deep reasoning (~16k tokens)\",\n\txhigh: \"Maximum reasoning (~32k tokens)\",\n};\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tautoCompactThresholdPercent: number;\n\tdefaultModel: string;\n\tclassifierModel: string;\n\tadaptiveClassifierModel: string;\n\tbudgetSubagentModel: string;\n\tplanModeReasoningModel: string;\n\tplanModeReviewModel: string;\n\tplanModeCodingModel: string;\n\tautoSuggestPlanMode: boolean;\n\tautoSwitchPlanModel: boolean;\n\tshowImages: boolean;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\ttoolProfile: \"balanced\" | \"standard\" | \"full\";\n\tcodexRotate: boolean;\n\tfastMode: boolean;\n\tcacheTimer: boolean;\n\tpinLastPrompt: boolean;\n\tsteeringMode: \"all\" | \"one-at-a-time\";\n\tfollowUpMode: \"all\" | \"one-at-a-time\";\n\ttransport: Transport;\n\tthinkingLevel: ThinkingLevel;\n\tanthropicAdaptiveByDefault: boolean;\n\tclientAdaptiveByDefault: boolean;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tcurrentTheme: string;\n\tavailableThemes: string[];\n\tcurrentThemeAccent: string;\n\tavailableThemeAccents: string[];\n\thideThinkingBlock: boolean;\n\tcollapseChangelog: boolean;\n\tdoubleEscapeAction: \"fork\" | \"tree\" | \"none\";\n\ttreeFilterMode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\tshowHardwareCursor: boolean;\n\teditorPaddingX: number;\n\tautocompleteMaxVisible: number;\n\trespectGitignoreInPicker: boolean;\n\tquietStartup: boolean;\n\tclearOnShrink: boolean;\n\ttimestampFormat: \"date-time-iso\" | \"date-time-us\";\n\ttoolOutputMode: \"minimal\" | \"normal\";\n\trtk: boolean;\n\teditorScheme: \"auto\" | \"vscode\" | \"cursor\" | \"zed\" | \"jetbrains\" | \"sublime\" | \"file\";\n\tautoDream: boolean;\n\tautoMemory: boolean;\n\tnotificationSound: boolean;\n\ttelegramLiveRelayAutoConnect: boolean;\n\tsandboxEnabled?: boolean;\n\tsandboxNetworkMode?: \"allow\" | \"ask\" | \"deny\";\n\tdefaultModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tclassifierModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tadaptiveClassifierModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tbudgetSubagentModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tplanModeReasoningModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tplanModeReviewModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tplanModeCodingModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonAutoCompactThresholdPercentChange: (percent: number) => void;\n\tonDefaultModelChange: (modelRef: string) => void;\n\tonClassifierModelChange: (modelRef: string) => void;\n\tonAdaptiveClassifierModelChange: (modelRef: string) => void;\n\tonBudgetSubagentModelChange: (modelRef: string) => void;\n\tonPlanModeReasoningModelChange: (modelRef: string) => void;\n\tonPlanModeReviewModelChange: (modelRef: string) => void;\n\tonPlanModeCodingModelChange: (modelRef: string) => void;\n\tonAutoSuggestPlanModeChange: (enabled: boolean) => void;\n\tonAutoSwitchPlanModelChange: (enabled: boolean) => void;\n\tonAutoDreamChange: (enabled: boolean) => void;\n\tonAutoMemoryChange: (enabled: boolean) => void;\n\tonNotificationSoundChange: (enabled: boolean) => void;\n\tonTelegramLiveRelayAutoConnectChange: (enabled: boolean) => void;\n\tonSandboxEnabledChange?: (enabled: boolean) => void;\n\tonSandboxNetworkModeChange?: (mode: \"allow\" | \"ask\" | \"deny\") => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonToolProfileChange: (profile: \"balanced\" | \"standard\" | \"full\") => void;\n\tonCodexRotateChange: (enabled: boolean) => void;\n\tonFastModeChange: (enabled: boolean) => void;\n\tonCacheTimerChange: (enabled: boolean) => void;\n\tonPinLastPromptChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: \"all\" | \"one-at-a-time\") => void;\n\tonFollowUpModeChange: (mode: \"all\" | \"one-at-a-time\") => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonAnthropicAdaptiveByDefaultChange: (enabled: boolean) => void;\n\tonClientAdaptiveByDefaultChange: (enabled: boolean) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonThemeAccentChange: (accent: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonDoubleEscapeActionChange: (action: \"fork\" | \"tree\" | \"none\") => void;\n\tonTreeFilterModeChange: (mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\") => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonRespectGitignoreInPickerChange: (enabled: boolean) => void;\n\tonQuietStartupChange: (enabled: boolean) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonTimestampFormatChange: (format: \"date-time-iso\" | \"date-time-us\") => void;\n\tonToolOutputModeChange: (mode: \"minimal\" | \"normal\") => void;\n\tonRtkChange: (enabled: boolean) => void;\n\tonEditorSchemeChange: (scheme: \"auto\" | \"vscode\" | \"cursor\" | \"zed\" | \"jetbrains\" | \"sublime\" | \"file\") => void;\n\tonCancel: () => void;\n}\n\n/**\n * A submenu component for selecting from a list of options.\n */\nexport class SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t) {\n\t\tsuper();\n\n\t\t// Title\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\t// Description\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\t// Spacer\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Select list\n\t\tthis.selectList = new SelectList(options, Math.min(options.length, 10), getSelectListTheme());\n\n\t\t// Pre-select current value\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.addChild(this.selectList);\n\n\t\t// Hint\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" Enter to select · Esc to go back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): void {\n\t\tthis.selectList.handleInput(data);\n\t}\n}\n\n/**\n * Main settings selector component.\n */\nexport class SettingsSelectorComponent extends Container {\n\tprivate settingsList: SettingsList;\n\n\tconstructor(config: SettingsConfig, callbacks: SettingsCallbacks) {\n\t\tsuper();\n\n\t\tconst supportsImages = getCapabilities().images;\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"autocompact\",\n\t\t\t\tlabel: \"Auto-compact\",\n\t\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"autocompact-threshold\",\n\t\t\t\tlabel: \"Auto-compact threshold\",\n\t\t\t\tdescription: \"Trigger auto-compaction when context usage reaches this percentage\",\n\t\t\t\tcurrentValue: String(config.autoCompactThresholdPercent),\n\t\t\t\tvalues: [\"70\", \"75\", \"80\", \"85\", \"90\", \"95\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"default-model\",\n\t\t\t\tlabel: \"Default model\",\n\t\t\t\tdescription: \"Model LSD should use by default when opening a new session\",\n\t\t\t\tcurrentValue: config.defaultModel,\n\t\t\t\tsubmenu: config.defaultModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"classifier-model\",\n\t\t\t\tlabel: \"Classifier model\",\n\t\t\t\tdescription: \"Model used for Auto permission mode approvals\",\n\t\t\t\tcurrentValue: config.classifierModel,\n\t\t\t\tsubmenu: config.classifierModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"adaptive-classifier-model\",\n\t\t\t\tlabel: \"Adaptive classifier model\",\n\t\t\t\tdescription: \"LLM used to pick reasoning level when adaptive mode is on (required for non-Anthropic models)\",\n\t\t\t\tcurrentValue: config.adaptiveClassifierModel,\n\t\t\t\tsubmenu: config.adaptiveClassifierModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"budget-subagent-model\",\n\t\t\t\tlabel: \"Budget subagent model\",\n\t\t\t\tdescription: \"Cheap model alias for subagents like scout\",\n\t\t\t\tcurrentValue: config.budgetSubagentModel,\n\t\t\t\tsubmenu: config.budgetSubagentModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"plan-mode-reasoning-model\",\n\t\t\t\tlabel: \"Plan reasoning model\",\n\t\t\t\tdescription: \"Optional provider/id model to switch to after plan approval\",\n\t\t\t\tcurrentValue: config.planModeReasoningModel,\n\t\t\t\tsubmenu: config.planModeReasoningModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"plan-mode-review-model\",\n\t\t\t\tlabel: \"Plan review model\",\n\t\t\t\tdescription: \"Optional provider/id model for the other-agent plan review step\",\n\t\t\t\tcurrentValue: config.planModeReviewModel,\n\t\t\t\tsubmenu: config.planModeReviewModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"plan-mode-coding-model\",\n\t\t\t\tlabel: \"Plan coding model\",\n\t\t\t\tdescription: \"Optional provider/id model for subagent plan execution\",\n\t\t\t\tcurrentValue: config.planModeCodingModel,\n\t\t\t\tsubmenu: config.planModeCodingModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"auto-suggest-plan-mode\",\n\t\t\t\tlabel: \"Auto-suggest plan mode\",\n\t\t\t\tdescription: \"Ask the LLM to suggest plan mode for large/complex tasks\",\n\t\t\t\tcurrentValue: config.autoSuggestPlanMode ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"auto-switch-plan-model\",\n\t\t\t\tlabel: \"OpusPlan mode\",\n\t\t\t\tdescription: \"On plan entry: auto-switch to Plan reasoning model (must be set). On approval: offer new session with Plan coding model + worker agent\",\n\t\t\t\tcurrentValue: config.autoSwitchPlanModel ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"steering-mode\",\n\t\t\t\tlabel: \"Steering mode\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.\",\n\t\t\t\tcurrentValue: config.steeringMode,\n\t\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"follow-up-mode\",\n\t\t\t\tlabel: \"Follow-up mode\",\n\t\t\t\tdescription:\n\t\t\t\t\t`${process.platform === \"darwin\" ? \"⌥Enter\" : \"Alt+Enter\"} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,\n\t\t\t\tcurrentValue: config.followUpMode,\n\t\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"transport\",\n\t\t\t\tlabel: \"Transport\",\n\t\t\t\tdescription: \"Preferred transport for providers that support multiple transports\",\n\t\t\t\tcurrentValue: config.transport,\n\t\t\t\tvalues: [\"sse\", \"websocket\", \"auto\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"hide-thinking\",\n\t\t\t\tlabel: \"Hide thinking\",\n\t\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"tool-output-mode\",\n\t\t\t\tlabel: \"Tool output mode\",\n\t\t\t\tdescription: \"Minimal hides collapsed previews until Ctrl+O. Normal shows collapsed previews.\",\n\t\t\t\tcurrentValue: config.toolOutputMode,\n\t\t\t\tvalues: [\"minimal\", \"normal\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"sandbox-enabled\",\n\t\t\t\tlabel: \"Sandbox\",\n\t\t\t\tdescription: \"Enable OS-level sandboxing for bash execution on supported platforms\",\n\t\t\t\tcurrentValue: (config.sandboxEnabled ?? true) ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"sandbox-network\",\n\t\t\t\tlabel: \"Sandbox network\",\n\t\t\t\tdescription: \"Allow, ask, or deny network access for sandboxed bash commands\",\n\t\t\t\tcurrentValue: config.sandboxNetworkMode ?? \"ask\",\n\t\t\t\tvalues: [\"ask\", \"allow\", \"deny\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"collapse-changelog\",\n\t\t\t\tlabel: \"Collapse changelog\",\n\t\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"quiet-startup\",\n\t\t\t\tlabel: \"Quiet startup\",\n\t\t\t\tdescription: \"Disable verbose printing at startup\",\n\t\t\t\tcurrentValue: config.quietStartup ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"double-escape-action\",\n\t\t\t\tlabel: \"Double-escape action\",\n\t\t\t\tdescription: \"Action when pressing Escape twice with empty editor\",\n\t\t\t\tcurrentValue: config.doubleEscapeAction,\n\t\t\t\tvalues: [\"tree\", \"fork\", \"none\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"tree-filter-mode\",\n\t\t\t\tlabel: \"Tree filter mode\",\n\t\t\t\tdescription: \"Default filter when opening /tree\",\n\t\t\t\tcurrentValue: config.treeFilterMode,\n\t\t\t\tvalues: [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"thinking\",\n\t\t\t\tlabel: \"Thinking level\",\n\t\t\t\tdescription: \"Reasoning depth for thinking-capable models\",\n\t\t\t\tcurrentValue: config.thinkingLevel,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Thinking Level\",\n\t\t\t\t\t\t\"Select reasoning depth for thinking-capable models\",\n\t\t\t\t\t\tconfig.availableThinkingLevels.map((level) => ({\n\t\t\t\t\t\t\tvalue: level,\n\t\t\t\t\t\t\tlabel: level,\n\t\t\t\t\t\t\tdescription: THINKING_DESCRIPTIONS[level],\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThinkingLevelChange(value as ThinkingLevel);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => done(),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"anthropic-adaptive-default\",\n\t\t\t\tlabel: \"Anthropic adaptive\",\n\t\t\t\tdescription: \"Default to adaptive thinking for supported Anthropic models\",\n\t\t\t\tcurrentValue: config.anthropicAdaptiveByDefault ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"client-adaptive-default\",\n\t\t\t\tlabel: \"Adaptive by default\",\n\t\t\t\tdescription: \"Default to adaptive thinking for all reasoning-capable models\",\n\t\t\t\tcurrentValue: config.clientAdaptiveByDefault ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"theme\",\n\t\t\t\tlabel: \"Theme\",\n\t\t\t\tdescription: \"Color theme for the interface\",\n\t\t\t\tcurrentValue: config.currentTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Theme\",\n\t\t\t\t\t\t\"Select color theme\",\n\t\t\t\t\t\tconfig.availableThemes.map((t) => ({\n\t\t\t\t\t\t\tvalue: t,\n\t\t\t\t\t\t\tlabel: t,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThemeChange(value);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// Restore original theme on cancel\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(currentValue);\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t// Preview theme on selection change\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"theme-accent\",\n\t\t\t\tlabel: \"Main accent\",\n\t\t\t\tdescription: \"Primary accent color used by the interface\",\n\t\t\t\tcurrentValue: config.currentThemeAccent,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Main Accent\",\n\t\t\t\t\t\t\"Select the primary accent color\",\n\t\t\t\t\t\tconfig.availableThemeAccents.map((accent) => ({\n\t\t\t\t\t\t\tvalue: accent,\n\t\t\t\t\t\t\tlabel: getThemeAccentLabel(accent as Parameters<typeof getThemeAccentInfo>[0]),\n\t\t\t\t\t\t\tdescription: getThemeAccentInfo(accent as Parameters<typeof getThemeAccentInfo>[0]).description,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThemeAccentChange(value);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => done(),\n\t\t\t\t\t),\n\t\t\t},\n\t\t];\n\n\t\t// Only show image toggle if terminal supports it\n\t\tif (supportsImages) {\n\t\t\t// Insert after autocompact threshold\n\t\t\titems.splice(2, 0, {\n\t\t\t\tid: \"show-images\",\n\t\t\t\tlabel: \"Show images\",\n\t\t\t\tdescription: \"Render images inline in terminal\",\n\t\t\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t});\n\t\t}\n\n\t\t// Image auto-resize toggle (always available, affects both attached and read images)\n\t\titems.splice(supportsImages ? 3 : 2, 0, {\n\t\t\tid: \"auto-resize-images\",\n\t\t\tlabel: \"Auto-resize images\",\n\t\t\tdescription: \"Resize large images to 2000x2000 max for better model compatibility\",\n\t\t\tcurrentValue: config.autoResizeImages ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Block images toggle (always available, insert after auto-resize-images)\n\t\tconst autoResizeIndex = items.findIndex((item) => item.id === \"auto-resize-images\");\n\t\titems.splice(autoResizeIndex + 1, 0, {\n\t\t\tid: \"block-images\",\n\t\t\tlabel: \"Block images\",\n\t\t\tdescription: \"Prevent images from being sent to LLM providers\",\n\t\t\tcurrentValue: config.blockImages ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Skill commands toggle (insert after block-images)\n\t\tconst blockImagesIndex = items.findIndex((item) => item.id === \"block-images\");\n\t\titems.splice(blockImagesIndex + 1, 0, {\n\t\t\tid: \"skill-commands\",\n\t\t\tlabel: \"Skill commands\",\n\t\t\tdescription: \"Register skills as /skill:name commands\",\n\t\t\tcurrentValue: config.enableSkillCommands ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Tool profile selector (insert after skill-commands)\n\t\tconst skillCommandsIndex = items.findIndex((item) => item.id === \"skill-commands\");\n\t\titems.splice(skillCommandsIndex + 1, 0, {\n\t\t\tid: \"tool-profile\",\n\t\t\tlabel: \"Tool profile\",\n\t\t\tdescription: \"Choose the default active tool set: balanced for day-to-day coding, standard for broader coverage, full to enable all available tools\",\n\t\t\tcurrentValue: config.toolProfile,\n\t\t\tvalues: [\"balanced\", \"standard\", \"full\"],\n\t\t});\n\n\t\t// Codex rotate toggle (insert after tool-profile)\n\t\tconst toolProfileIndex = items.findIndex((item) => item.id === \"tool-profile\");\n\t\titems.splice(toolProfileIndex + 1, 0, {\n\t\t\tid: \"codex-rotate\",\n\t\t\tlabel: \"Codex rotate\",\n\t\t\tdescription: \"Enable automatic Codex account rotation extension\",\n\t\t\tcurrentValue: config.codexRotate ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Fast mode toggle (insert after codex-rotate)\n\t\tconst codexRotateIndex = items.findIndex((item) => item.id === \"codex-rotate\");\n\t\titems.splice(codexRotateIndex + 1, 0, {\n\t\t\tid: \"fast-mode\",\n\t\t\tlabel: \"Fast mode\",\n\t\t\tdescription: \"OpenAI/Codex supported models use priority service tier\",\n\t\t\tcurrentValue: config.fastMode ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Cache timer toggle (insert after fast-mode)\n\t\tconst fastModeIndex = items.findIndex((item) => item.id === \"fast-mode\");\n\t\titems.splice(fastModeIndex + 1, 0, {\n\t\t\tid: \"cache-timer\",\n\t\t\tlabel: \"Cache timer\",\n\t\t\tdescription: \"Show elapsed time since last response in the footer (tracks 5-min cache window)\",\n\t\t\tcurrentValue: config.cacheTimer ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Pin last prompt toggle (insert after cache-timer)\n\t\tconst cacheTimerIdx = items.findIndex((item) => item.id === \"cache-timer\");\n\t\titems.splice(cacheTimerIdx + 1, 0, {\n\t\t\tid: \"pin-last-prompt\",\n\t\t\tlabel: \"Pin last prompt\",\n\t\t\tdescription: \"Show your last sent message above the editor so you remember the topic\",\n\t\t\tcurrentValue: config.pinLastPrompt ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Auto-dream toggle (insert after pin-last-prompt)\n\t\tconst pinLastPromptIdx = items.findIndex((item) => item.id === \"pin-last-prompt\");\n\t\titems.splice(pinLastPromptIdx + 1, 0, {\n\t\t\tid: \"auto-dream\",\n\t\t\tlabel: \"Auto dream\",\n\t\t\tdescription: \"Automatically consolidate and refine memory after sessions\",\n\t\t\tcurrentValue: config.autoDream ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Auto-memory toggle (insert after auto-dream)\n\t\tconst autoDreamIdx = items.findIndex((item) => item.id === \"auto-dream\");\n\t\titems.splice(autoDreamIdx + 1, 0, {\n\t\t\tid: \"auto-memory\",\n\t\t\tlabel: \"Auto memory\",\n\t\t\tdescription: \"Automatically extract and save memories from session transcripts\",\n\t\t\tcurrentValue: config.autoMemory ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Notification sound toggle (insert after auto-memory)\n\t\tconst autoMemoryIdx = items.findIndex((item) => item.id === \"auto-memory\");\n\t\titems.splice(autoMemoryIdx + 1, 0, {\n\t\t\tid: \"notification-sound\",\n\t\t\tlabel: \"Notification sound\",\n\t\t\tdescription: \"Play a terminal bell when the agent finishes responding\",\n\t\t\tcurrentValue: config.notificationSound ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Telegram relay auto-connect toggle (insert after notification-sound)\n\t\tconst notificationSoundIdx = items.findIndex((item) => item.id === \"notification-sound\");\n\t\titems.splice(notificationSoundIdx + 1, 0, {\n\t\t\tid: \"telegram-live-relay-autoconnect\",\n\t\t\tlabel: \"Telegram autoconnect\",\n\t\t\tdescription: \"Auto-run /lsd telegram connect on startup\",\n\t\t\tcurrentValue: config.telegramLiveRelayAutoConnect ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// RTK toggle (insert after cache-timer)\n\t\tconst cacheTimerIndex = items.findIndex((item) => item.id === \"cache-timer\");\n\t\titems.splice(cacheTimerIndex + 1, 0, {\n\t\t\tid: \"rtk\",\n\t\t\tlabel: \"RTK\",\n\t\t\tdescription: \"Enable RTK shell-command compression (requires restart)\",\n\t\t\tcurrentValue: config.rtk ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Hardware cursor toggle (insert after rtk)\n\t\tconst rtkIndex = items.findIndex((item) => item.id === \"rtk\");\n\t\titems.splice(rtkIndex + 1, 0, {\n\t\t\tid: \"show-hardware-cursor\",\n\t\t\tlabel: \"Show hardware cursor\",\n\t\t\tdescription: \"Show the terminal cursor while still positioning it for IME support\",\n\t\t\tcurrentValue: config.showHardwareCursor ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Editor padding toggle (insert after show-hardware-cursor)\n\t\tconst hardwareCursorIndex = items.findIndex((item) => item.id === \"show-hardware-cursor\");\n\t\titems.splice(hardwareCursorIndex + 1, 0, {\n\t\t\tid: \"editor-padding\",\n\t\t\tlabel: \"Editor padding\",\n\t\t\tdescription: \"Horizontal padding for input editor (0-3)\",\n\t\t\tcurrentValue: String(config.editorPaddingX),\n\t\t\tvalues: [\"0\", \"1\", \"2\", \"3\"],\n\t\t});\n\n\t\t// Autocomplete max visible toggle (insert after editor-padding)\n\t\tconst editorPaddingIndex = items.findIndex((item) => item.id === \"editor-padding\");\n\t\titems.splice(editorPaddingIndex + 1, 0, {\n\t\t\tid: \"autocomplete-max-visible\",\n\t\t\tlabel: \"Autocomplete max items\",\n\t\t\tdescription: \"Max visible items in autocomplete dropdown (3-20)\",\n\t\t\tcurrentValue: String(config.autocompleteMaxVisible),\n\t\t\tvalues: [\"3\", \"5\", \"7\", \"10\", \"15\", \"20\"],\n\t\t});\n\n\t\t// Clear on shrink toggle (insert after autocomplete-max-visible)\n\t\tconst autocompleteIndex = items.findIndex((item) => item.id === \"autocomplete-max-visible\");\n\t\titems.splice(autocompleteIndex + 1, 0, {\n\t\t\tid: \"clear-on-shrink\",\n\t\t\tlabel: \"Clear on shrink\",\n\t\t\tdescription: \"Clear empty rows when content shrinks (may cause flicker)\",\n\t\t\tcurrentValue: config.clearOnShrink ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Respect .gitignore in file picker toggle (insert after clear-on-shrink)\n\t\tconst clearOnShrinkIndex = items.findIndex((item) => item.id === \"clear-on-shrink\");\n\t\titems.splice(clearOnShrinkIndex + 1, 0, {\n\t\t\tid: \"respect-gitignore-in-picker\",\n\t\t\tlabel: \"Respect .gitignore in file picker\",\n\t\t\tdescription: \"When false, @ file picker shows gitignored files too\",\n\t\t\tcurrentValue: config.respectGitignoreInPicker ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Timestamp format (insert after respect-gitignore-in-picker)\n\t\tconst gitignoreIndex = items.findIndex((item) => item.id === \"respect-gitignore-in-picker\");\n\t\titems.splice(gitignoreIndex + 1, 0, {\n\t\t\tid: \"timestamp-format\",\n\t\t\tlabel: \"Timestamp format\",\n\t\t\tdescription: \"Time format for message timestamps\",\n\t\t\tcurrentValue: config.timestampFormat,\n\t\t\tvalues: [\"date-time-iso\", \"date-time-us\"],\n\t\t});\n\n\t\t// Editor link scheme (insert after timestamp-format)\n\t\tconst timestampIndex = items.findIndex((item) => item.id === \"timestamp-format\");\n\t\titems.splice(timestampIndex + 1, 0, {\n\t\t\tid: \"editor-scheme\",\n\t\t\tlabel: \"Editor link scheme\",\n\t\t\tdescription: \"URI scheme for Cmd+click file path links (auto detects from $VISUAL/$EDITOR)\",\n\t\t\tcurrentValue: config.editorScheme,\n\t\t\tvalues: [\"auto\", \"vscode\", \"cursor\", \"zed\", \"jetbrains\", \"sublime\", \"file\"],\n\t\t});\n\n\t\t// Add borders\n\t\tthis.addChild(new DynamicBorder());\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\t10,\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"autocompact\":\n\t\t\t\t\t\tcallbacks.onAutoCompactChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"autocompact-threshold\":\n\t\t\t\t\t\tcallbacks.onAutoCompactThresholdPercentChange(parseInt(newValue, 10));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"default-model\":\n\t\t\t\t\t\tcallbacks.onDefaultModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"classifier-model\":\n\t\t\t\t\t\tcallbacks.onClassifierModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"adaptive-classifier-model\":\n\t\t\t\t\t\tcallbacks.onAdaptiveClassifierModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"budget-subagent-model\":\n\t\t\t\t\t\tcallbacks.onBudgetSubagentModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"plan-mode-reasoning-model\":\n\t\t\t\t\t\tcallbacks.onPlanModeReasoningModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"plan-mode-review-model\":\n\t\t\t\t\t\tcallbacks.onPlanModeReviewModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"plan-mode-coding-model\":\n\t\t\t\t\t\tcallbacks.onPlanModeCodingModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-suggest-plan-mode\":\n\t\t\t\t\t\tcallbacks.onAutoSuggestPlanModeChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-switch-plan-model\":\n\t\t\t\t\t\tcallbacks.onAutoSwitchPlanModelChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"show-images\":\n\t\t\t\t\t\tcallbacks.onShowImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-resize-images\":\n\t\t\t\t\t\tcallbacks.onAutoResizeImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"block-images\":\n\t\t\t\t\t\tcallbacks.onBlockImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"skill-commands\":\n\t\t\t\t\t\tcallbacks.onEnableSkillCommandsChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tool-profile\":\n\t\t\t\t\t\tcallbacks.onToolProfileChange(newValue as \"balanced\" | \"standard\" | \"full\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"codex-rotate\":\n\t\t\t\t\t\tcallbacks.onCodexRotateChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"fast-mode\":\n\t\t\t\t\t\tcallbacks.onFastModeChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"cache-timer\":\n\t\t\t\t\t\tcallbacks.onCacheTimerChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"pin-last-prompt\":\n\t\t\t\t\t\tcallbacks.onPinLastPromptChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-dream\":\n\t\t\t\t\t\tcallbacks.onAutoDreamChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-memory\":\n\t\t\t\t\t\tcallbacks.onAutoMemoryChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"notification-sound\":\n\t\t\t\t\t\tcallbacks.onNotificationSoundChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"telegram-live-relay-autoconnect\":\n\t\t\t\t\t\tcallbacks.onTelegramLiveRelayAutoConnectChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"rtk\":\n\t\t\t\t\t\tcallbacks.onRtkChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"steering-mode\":\n\t\t\t\t\t\tcallbacks.onSteeringModeChange(newValue as \"all\" | \"one-at-a-time\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"follow-up-mode\":\n\t\t\t\t\t\tcallbacks.onFollowUpModeChange(newValue as \"all\" | \"one-at-a-time\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"transport\":\n\t\t\t\t\t\tcallbacks.onTransportChange(newValue as Transport);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"anthropic-adaptive-default\":\n\t\t\t\t\t\tcallbacks.onAnthropicAdaptiveByDefaultChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"client-adaptive-default\":\n\t\t\t\t\t\tcallbacks.onClientAdaptiveByDefaultChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"hide-thinking\":\n\t\t\t\t\t\tcallbacks.onHideThinkingBlockChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tool-output-mode\":\n\t\t\t\t\t\tcallbacks.onToolOutputModeChange(newValue as \"minimal\" | \"normal\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"sandbox-enabled\":\n\t\t\t\t\t\tcallbacks.onSandboxEnabledChange?.(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"sandbox-network\":\n\t\t\t\t\t\tcallbacks.onSandboxNetworkModeChange?.(newValue as \"allow\" | \"ask\" | \"deny\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"collapse-changelog\":\n\t\t\t\t\t\tcallbacks.onCollapseChangelogChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"quiet-startup\":\n\t\t\t\t\t\tcallbacks.onQuietStartupChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"double-escape-action\":\n\t\t\t\t\t\tcallbacks.onDoubleEscapeActionChange(newValue as \"fork\" | \"tree\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tree-filter-mode\":\n\t\t\t\t\t\tcallbacks.onTreeFilterModeChange(\n\t\t\t\t\t\t\tnewValue as \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"show-hardware-cursor\":\n\t\t\t\t\t\tcallbacks.onShowHardwareCursorChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"editor-padding\":\n\t\t\t\t\t\tcallbacks.onEditorPaddingXChange(parseInt(newValue, 10));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"autocomplete-max-visible\":\n\t\t\t\t\t\tcallbacks.onAutocompleteMaxVisibleChange(parseInt(newValue, 10));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"clear-on-shrink\":\n\t\t\t\t\t\tcallbacks.onClearOnShrinkChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"respect-gitignore-in-picker\":\n\t\t\t\t\t\tcallbacks.onRespectGitignoreInPickerChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"timestamp-format\":\n\t\t\t\t\t\tcallbacks.onTimestampFormatChange(newValue as \"date-time-iso\" | \"date-time-us\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"editor-scheme\":\n\t\t\t\t\t\tcallbacks.onEditorSchemeChange(\n\t\t\t\t\t\t\tnewValue as \"auto\" | \"vscode\" | \"cursor\" | \"zed\" | \"jetbrains\" | \"sublime\" | \"file\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcallbacks.onCancel,\n\t\t\t{ enableSearch: true },\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSettingsList(): SettingsList {\n\t\treturn this.settingsList;\n\t}\n}\n"]}
1
+ {"version":3,"file":"settings-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@gsd/pi-agent-core\";\nimport type { Transport } from \"@gsd/pi-ai\";\nimport {\n\ttype Component,\n\tContainer,\n\tgetCapabilities,\n\ttype SelectItem,\n\tSelectList,\n\ttype SettingItem,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@gsd/pi-tui\";\nimport { getSelectListTheme, getSettingsListTheme, getThemeAccentInfo, getThemeAccentLabel, theme } from \"../theme/theme.js\";\nimport { DynamicBorder } from \"./dynamic-border.js\";\n\nexport const THINKING_DESCRIPTIONS: Record<ThinkingLevel, string> = {\n\toff: \"No reasoning\",\n\tadaptive: \"Automatically adapt per turn (client or provider resolved)\",\n\tlow: \"Light reasoning (~2k tokens)\",\n\tmedium: \"Moderate reasoning (~8k tokens)\",\n\thigh: \"Deep reasoning (~16k tokens)\",\n\txhigh: \"Maximum reasoning (~32k tokens)\",\n};\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tautoCompactThresholdPercent: number;\n\tdefaultModel: string;\n\tclassifierModel: string;\n\tadaptiveClassifierModel: string;\n\tbudgetSubagentModel: string;\n\tplanModeReasoningModel: string;\n\tplanModeReviewModel: string;\n\tplanModeCodingModel: string;\n\tautoSuggestPlanMode: boolean;\n\tautoSwitchPlanModel: boolean;\n\tshowImages: boolean;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\ttoolProfile: \"balanced\" | \"standard\" | \"full\";\n\tcodexRotate: boolean;\n\tfastMode: boolean;\n\tcacheTimer: boolean;\n\tverboseFooter: boolean;\n\tpinLastPrompt: boolean;\n\tsteeringMode: \"all\" | \"one-at-a-time\";\n\tfollowUpMode: \"all\" | \"one-at-a-time\";\n\ttransport: Transport;\n\tthinkingLevel: ThinkingLevel;\n\tanthropicAdaptiveByDefault: boolean;\n\tclientAdaptiveByDefault: boolean;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tcurrentTheme: string;\n\tavailableThemes: string[];\n\tcurrentThemeAccent: string;\n\tavailableThemeAccents: string[];\n\thideThinkingBlock: boolean;\n\tcollapseChangelog: boolean;\n\tdoubleEscapeAction: \"fork\" | \"tree\" | \"none\";\n\ttreeFilterMode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\tshowHardwareCursor: boolean;\n\teditorPaddingX: number;\n\tautocompleteMaxVisible: number;\n\trespectGitignoreInPicker: boolean;\n\tquietStartup: boolean;\n\tclearOnShrink: boolean;\n\ttimestampFormat: \"date-time-iso\" | \"date-time-us\";\n\ttoolOutputMode: \"minimal\" | \"normal\";\n\tcollapseToolCalls: boolean;\n\trtk: boolean;\n\teditorScheme: \"auto\" | \"vscode\" | \"cursor\" | \"zed\" | \"jetbrains\" | \"sublime\" | \"file\";\n\tautoDream: boolean;\n\tautoMemory: boolean;\n\tnotificationSound: boolean;\n\ttelegramLiveRelayAutoConnect: boolean;\n\tsandboxEnabled?: boolean;\n\tsandboxNetworkMode?: \"allow\" | \"ask\" | \"deny\";\n\tdefaultModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tclassifierModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tadaptiveClassifierModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tbudgetSubagentModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tplanModeReasoningModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tplanModeReviewModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n\tplanModeCodingModelSubmenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonAutoCompactThresholdPercentChange: (percent: number) => void;\n\tonDefaultModelChange: (modelRef: string) => void;\n\tonClassifierModelChange: (modelRef: string) => void;\n\tonAdaptiveClassifierModelChange: (modelRef: string) => void;\n\tonBudgetSubagentModelChange: (modelRef: string) => void;\n\tonPlanModeReasoningModelChange: (modelRef: string) => void;\n\tonPlanModeReviewModelChange: (modelRef: string) => void;\n\tonPlanModeCodingModelChange: (modelRef: string) => void;\n\tonAutoSuggestPlanModeChange: (enabled: boolean) => void;\n\tonAutoSwitchPlanModelChange: (enabled: boolean) => void;\n\tonAutoDreamChange: (enabled: boolean) => void;\n\tonAutoMemoryChange: (enabled: boolean) => void;\n\tonNotificationSoundChange: (enabled: boolean) => void;\n\tonTelegramLiveRelayAutoConnectChange: (enabled: boolean) => void;\n\tonSandboxEnabledChange?: (enabled: boolean) => void;\n\tonSandboxNetworkModeChange?: (mode: \"allow\" | \"ask\" | \"deny\") => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonToolProfileChange: (profile: \"balanced\" | \"standard\" | \"full\") => void;\n\tonCodexRotateChange: (enabled: boolean) => void;\n\tonFastModeChange: (enabled: boolean) => void;\n\tonCacheTimerChange: (enabled: boolean) => void;\n\tonVerboseFooterChange: (enabled: boolean) => void;\n\tonPinLastPromptChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: \"all\" | \"one-at-a-time\") => void;\n\tonFollowUpModeChange: (mode: \"all\" | \"one-at-a-time\") => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonAnthropicAdaptiveByDefaultChange: (enabled: boolean) => void;\n\tonClientAdaptiveByDefaultChange: (enabled: boolean) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonThemeAccentChange: (accent: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonDoubleEscapeActionChange: (action: \"fork\" | \"tree\" | \"none\") => void;\n\tonTreeFilterModeChange: (mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\") => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonRespectGitignoreInPickerChange: (enabled: boolean) => void;\n\tonQuietStartupChange: (enabled: boolean) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonTimestampFormatChange: (format: \"date-time-iso\" | \"date-time-us\") => void;\n\tonToolOutputModeChange: (mode: \"minimal\" | \"normal\") => void;\n\tonCollapseToolCallsChange: (enabled: boolean) => void;\n\tonRtkChange: (enabled: boolean) => void;\n\tonEditorSchemeChange: (scheme: \"auto\" | \"vscode\" | \"cursor\" | \"zed\" | \"jetbrains\" | \"sublime\" | \"file\") => void;\n\tonCancel: () => void;\n}\n\n/**\n * A submenu component for selecting from a list of options.\n */\nexport class SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t) {\n\t\tsuper();\n\n\t\t// Title\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\t// Description\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\t// Spacer\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Select list\n\t\tthis.selectList = new SelectList(options, Math.min(options.length, 10), getSelectListTheme());\n\n\t\t// Pre-select current value\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.addChild(this.selectList);\n\n\t\t// Hint\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" Enter to select · Esc to go back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): void {\n\t\tthis.selectList.handleInput(data);\n\t}\n}\n\n/**\n * Main settings selector component.\n */\nexport class SettingsSelectorComponent extends Container {\n\tprivate settingsList: SettingsList;\n\n\tconstructor(config: SettingsConfig, callbacks: SettingsCallbacks) {\n\t\tsuper();\n\n\t\tconst supportsImages = getCapabilities().images;\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"autocompact\",\n\t\t\t\tlabel: \"Auto-compact\",\n\t\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"autocompact-threshold\",\n\t\t\t\tlabel: \"Auto-compact threshold\",\n\t\t\t\tdescription: \"Trigger auto-compaction when context usage reaches this percentage\",\n\t\t\t\tcurrentValue: String(config.autoCompactThresholdPercent),\n\t\t\t\tvalues: [\"70\", \"75\", \"80\", \"85\", \"90\", \"95\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"default-model\",\n\t\t\t\tlabel: \"Default model\",\n\t\t\t\tdescription: \"Model LSD should use by default when opening a new session\",\n\t\t\t\tcurrentValue: config.defaultModel,\n\t\t\t\tsubmenu: config.defaultModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"classifier-model\",\n\t\t\t\tlabel: \"Classifier model\",\n\t\t\t\tdescription: \"Model used for Auto permission mode approvals\",\n\t\t\t\tcurrentValue: config.classifierModel,\n\t\t\t\tsubmenu: config.classifierModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"adaptive-classifier-model\",\n\t\t\t\tlabel: \"Adaptive classifier model\",\n\t\t\t\tdescription: \"LLM used to pick reasoning level when adaptive mode is on (required for non-Anthropic models)\",\n\t\t\t\tcurrentValue: config.adaptiveClassifierModel,\n\t\t\t\tsubmenu: config.adaptiveClassifierModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"budget-subagent-model\",\n\t\t\t\tlabel: \"Budget subagent model\",\n\t\t\t\tdescription: \"Cheap model alias for subagents like scout\",\n\t\t\t\tcurrentValue: config.budgetSubagentModel,\n\t\t\t\tsubmenu: config.budgetSubagentModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"plan-mode-reasoning-model\",\n\t\t\t\tlabel: \"Plan reasoning model\",\n\t\t\t\tdescription: \"Optional provider/id model to switch to after plan approval\",\n\t\t\t\tcurrentValue: config.planModeReasoningModel,\n\t\t\t\tsubmenu: config.planModeReasoningModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"plan-mode-review-model\",\n\t\t\t\tlabel: \"Plan review model\",\n\t\t\t\tdescription: \"Optional provider/id model for the other-agent plan review step\",\n\t\t\t\tcurrentValue: config.planModeReviewModel,\n\t\t\t\tsubmenu: config.planModeReviewModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"plan-mode-coding-model\",\n\t\t\t\tlabel: \"Plan coding model\",\n\t\t\t\tdescription: \"Optional provider/id model for subagent plan execution\",\n\t\t\t\tcurrentValue: config.planModeCodingModel,\n\t\t\t\tsubmenu: config.planModeCodingModelSubmenu,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"auto-suggest-plan-mode\",\n\t\t\t\tlabel: \"Auto-suggest plan mode\",\n\t\t\t\tdescription: \"Ask the LLM to suggest plan mode for large/complex tasks\",\n\t\t\t\tcurrentValue: config.autoSuggestPlanMode ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"auto-switch-plan-model\",\n\t\t\t\tlabel: \"OpusPlan mode\",\n\t\t\t\tdescription: \"On plan entry: auto-switch to Plan reasoning model (must be set). On approval: offer new session with Plan coding model + worker agent\",\n\t\t\t\tcurrentValue: config.autoSwitchPlanModel ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"steering-mode\",\n\t\t\t\tlabel: \"Steering mode\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.\",\n\t\t\t\tcurrentValue: config.steeringMode,\n\t\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"follow-up-mode\",\n\t\t\t\tlabel: \"Follow-up mode\",\n\t\t\t\tdescription:\n\t\t\t\t\t`${process.platform === \"darwin\" ? \"⌥Enter\" : \"Alt+Enter\"} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,\n\t\t\t\tcurrentValue: config.followUpMode,\n\t\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"transport\",\n\t\t\t\tlabel: \"Transport\",\n\t\t\t\tdescription: \"Preferred transport for providers that support multiple transports\",\n\t\t\t\tcurrentValue: config.transport,\n\t\t\t\tvalues: [\"sse\", \"websocket\", \"auto\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"hide-thinking\",\n\t\t\t\tlabel: \"Hide thinking\",\n\t\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"collapse-tool-calls\",\n\t\t\t\tlabel: \"Collapse tool calls\",\n\t\t\t\tdescription: \"Group low-priority tool calls into collapsed summary lines\",\n\t\t\t\tcurrentValue: config.collapseToolCalls ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"tool-output-mode\",\n\t\t\t\tlabel: \"Tool output mode\",\n\t\t\t\tdescription: \"Minimal hides collapsed previews until Ctrl+O. Normal shows collapsed previews.\",\n\t\t\t\tcurrentValue: config.toolOutputMode,\n\t\t\t\tvalues: [\"minimal\", \"normal\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"sandbox-enabled\",\n\t\t\t\tlabel: \"Sandbox\",\n\t\t\t\tdescription: \"Enable OS-level sandboxing for bash execution on supported platforms\",\n\t\t\t\tcurrentValue: (config.sandboxEnabled ?? true) ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"sandbox-network\",\n\t\t\t\tlabel: \"Sandbox network\",\n\t\t\t\tdescription: \"Allow, ask, or deny network access for sandboxed bash commands\",\n\t\t\t\tcurrentValue: config.sandboxNetworkMode ?? \"ask\",\n\t\t\t\tvalues: [\"ask\", \"allow\", \"deny\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"collapse-changelog\",\n\t\t\t\tlabel: \"Collapse changelog\",\n\t\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"quiet-startup\",\n\t\t\t\tlabel: \"Quiet startup\",\n\t\t\t\tdescription: \"Disable verbose printing at startup\",\n\t\t\t\tcurrentValue: config.quietStartup ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"double-escape-action\",\n\t\t\t\tlabel: \"Double-escape action\",\n\t\t\t\tdescription: \"Action when pressing Escape twice with empty editor\",\n\t\t\t\tcurrentValue: config.doubleEscapeAction,\n\t\t\t\tvalues: [\"tree\", \"fork\", \"none\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"tree-filter-mode\",\n\t\t\t\tlabel: \"Tree filter mode\",\n\t\t\t\tdescription: \"Default filter when opening /tree\",\n\t\t\t\tcurrentValue: config.treeFilterMode,\n\t\t\t\tvalues: [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"thinking\",\n\t\t\t\tlabel: \"Thinking level\",\n\t\t\t\tdescription: \"Reasoning depth for thinking-capable models\",\n\t\t\t\tcurrentValue: config.thinkingLevel,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Thinking Level\",\n\t\t\t\t\t\t\"Select reasoning depth for thinking-capable models\",\n\t\t\t\t\t\tconfig.availableThinkingLevels.map((level) => ({\n\t\t\t\t\t\t\tvalue: level,\n\t\t\t\t\t\t\tlabel: level,\n\t\t\t\t\t\t\tdescription: THINKING_DESCRIPTIONS[level],\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThinkingLevelChange(value as ThinkingLevel);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => done(),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"anthropic-adaptive-default\",\n\t\t\t\tlabel: \"Anthropic adaptive\",\n\t\t\t\tdescription: \"Default to adaptive thinking for supported Anthropic models\",\n\t\t\t\tcurrentValue: config.anthropicAdaptiveByDefault ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"client-adaptive-default\",\n\t\t\t\tlabel: \"Adaptive by default\",\n\t\t\t\tdescription: \"Default to adaptive thinking for all reasoning-capable models\",\n\t\t\t\tcurrentValue: config.clientAdaptiveByDefault ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"theme\",\n\t\t\t\tlabel: \"Theme\",\n\t\t\t\tdescription: \"Color theme for the interface\",\n\t\t\t\tcurrentValue: config.currentTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Theme\",\n\t\t\t\t\t\t\"Select color theme\",\n\t\t\t\t\t\tconfig.availableThemes.map((t) => ({\n\t\t\t\t\t\t\tvalue: t,\n\t\t\t\t\t\t\tlabel: t,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThemeChange(value);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// Restore original theme on cancel\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(currentValue);\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t// Preview theme on selection change\n\t\t\t\t\t\t\tcallbacks.onThemePreview?.(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"theme-accent\",\n\t\t\t\tlabel: \"Main accent\",\n\t\t\t\tdescription: \"Primary accent color used by the interface\",\n\t\t\t\tcurrentValue: config.currentThemeAccent,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tnew SelectSubmenu(\n\t\t\t\t\t\t\"Main Accent\",\n\t\t\t\t\t\t\"Select the primary accent color\",\n\t\t\t\t\t\tconfig.availableThemeAccents.map((accent) => ({\n\t\t\t\t\t\t\tvalue: accent,\n\t\t\t\t\t\t\tlabel: getThemeAccentLabel(accent as Parameters<typeof getThemeAccentInfo>[0]),\n\t\t\t\t\t\t\tdescription: getThemeAccentInfo(accent as Parameters<typeof getThemeAccentInfo>[0]).description,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tcallbacks.onThemeAccentChange(value);\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => done(),\n\t\t\t\t\t),\n\t\t\t},\n\t\t];\n\n\t\t// Only show image toggle if terminal supports it\n\t\tif (supportsImages) {\n\t\t\t// Insert after autocompact threshold\n\t\t\titems.splice(2, 0, {\n\t\t\t\tid: \"show-images\",\n\t\t\t\tlabel: \"Show images\",\n\t\t\t\tdescription: \"Render images inline in terminal\",\n\t\t\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t});\n\t\t}\n\n\t\t// Image auto-resize toggle (always available, affects both attached and read images)\n\t\titems.splice(supportsImages ? 3 : 2, 0, {\n\t\t\tid: \"auto-resize-images\",\n\t\t\tlabel: \"Auto-resize images\",\n\t\t\tdescription: \"Resize large images to 2000x2000 max for better model compatibility\",\n\t\t\tcurrentValue: config.autoResizeImages ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Block images toggle (always available, insert after auto-resize-images)\n\t\tconst autoResizeIndex = items.findIndex((item) => item.id === \"auto-resize-images\");\n\t\titems.splice(autoResizeIndex + 1, 0, {\n\t\t\tid: \"block-images\",\n\t\t\tlabel: \"Block images\",\n\t\t\tdescription: \"Prevent images from being sent to LLM providers\",\n\t\t\tcurrentValue: config.blockImages ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Skill commands toggle (insert after block-images)\n\t\tconst blockImagesIndex = items.findIndex((item) => item.id === \"block-images\");\n\t\titems.splice(blockImagesIndex + 1, 0, {\n\t\t\tid: \"skill-commands\",\n\t\t\tlabel: \"Skill commands\",\n\t\t\tdescription: \"Register skills as /skill:name commands\",\n\t\t\tcurrentValue: config.enableSkillCommands ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Tool profile selector (insert after skill-commands)\n\t\tconst skillCommandsIndex = items.findIndex((item) => item.id === \"skill-commands\");\n\t\titems.splice(skillCommandsIndex + 1, 0, {\n\t\t\tid: \"tool-profile\",\n\t\t\tlabel: \"Tool profile\",\n\t\t\tdescription: \"Choose the default active tool set: balanced for day-to-day coding, standard for broader coverage, full to enable all available tools\",\n\t\t\tcurrentValue: config.toolProfile,\n\t\t\tvalues: [\"balanced\", \"standard\", \"full\"],\n\t\t});\n\n\t\t// Codex rotate toggle (insert after tool-profile)\n\t\tconst toolProfileIndex = items.findIndex((item) => item.id === \"tool-profile\");\n\t\titems.splice(toolProfileIndex + 1, 0, {\n\t\t\tid: \"codex-rotate\",\n\t\t\tlabel: \"Codex rotate\",\n\t\t\tdescription: \"Enable automatic Codex account rotation extension\",\n\t\t\tcurrentValue: config.codexRotate ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Fast mode toggle (insert after codex-rotate)\n\t\tconst codexRotateIndex = items.findIndex((item) => item.id === \"codex-rotate\");\n\t\titems.splice(codexRotateIndex + 1, 0, {\n\t\t\tid: \"fast-mode\",\n\t\t\tlabel: \"Fast mode\",\n\t\t\tdescription: \"OpenAI/Codex supported models use priority service tier\",\n\t\t\tcurrentValue: config.fastMode ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Cache timer toggle (insert after fast-mode)\n\t\tconst fastModeIndex = items.findIndex((item) => item.id === \"fast-mode\");\n\t\titems.splice(fastModeIndex + 1, 0, {\n\t\t\tid: \"cache-timer\",\n\t\t\tlabel: \"Cache timer\",\n\t\t\tdescription: \"Show elapsed time since last response in the footer (tracks 5-min cache window)\",\n\t\t\tcurrentValue: config.cacheTimer ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Verbose footer toggle (insert after cache-timer)\n\t\tconst cacheTimerIdx = items.findIndex((item) => item.id === \"cache-timer\");\n\t\titems.splice(cacheTimerIdx + 1, 0, {\n\t\t\tid: \"verbose-footer\",\n\t\t\tlabel: \"Verbose footer\",\n\t\t\tdescription: \"Show extra footer stats like input, output, and cache tokens\",\n\t\t\tcurrentValue: config.verboseFooter ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Pin last prompt toggle (insert after verbose-footer)\n\t\tconst verboseFooterIdx = items.findIndex((item) => item.id === \"verbose-footer\");\n\t\titems.splice(verboseFooterIdx + 1, 0, {\n\t\t\tid: \"pin-last-prompt\",\n\t\t\tlabel: \"Pin last prompt\",\n\t\t\tdescription: \"Show your last sent message above the editor so you remember the topic\",\n\t\t\tcurrentValue: config.pinLastPrompt ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Auto-dream toggle (insert after pin-last-prompt)\n\t\tconst pinLastPromptIdx = items.findIndex((item) => item.id === \"pin-last-prompt\");\n\t\titems.splice(pinLastPromptIdx + 1, 0, {\n\t\t\tid: \"auto-dream\",\n\t\t\tlabel: \"Auto dream\",\n\t\t\tdescription: \"Automatically consolidate and refine memory after sessions\",\n\t\t\tcurrentValue: config.autoDream ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Auto-memory toggle (insert after auto-dream)\n\t\tconst autoDreamIdx = items.findIndex((item) => item.id === \"auto-dream\");\n\t\titems.splice(autoDreamIdx + 1, 0, {\n\t\t\tid: \"auto-memory\",\n\t\t\tlabel: \"Auto memory\",\n\t\t\tdescription: \"Automatically extract and save memories from session transcripts\",\n\t\t\tcurrentValue: config.autoMemory ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Notification sound toggle (insert after auto-memory)\n\t\tconst autoMemoryIdx = items.findIndex((item) => item.id === \"auto-memory\");\n\t\titems.splice(autoMemoryIdx + 1, 0, {\n\t\t\tid: \"notification-sound\",\n\t\t\tlabel: \"Notification sound\",\n\t\t\tdescription: \"Play a terminal bell when the agent finishes responding\",\n\t\t\tcurrentValue: config.notificationSound ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Telegram relay auto-connect toggle (insert after notification-sound)\n\t\tconst notificationSoundIdx = items.findIndex((item) => item.id === \"notification-sound\");\n\t\titems.splice(notificationSoundIdx + 1, 0, {\n\t\t\tid: \"telegram-live-relay-autoconnect\",\n\t\t\tlabel: \"Telegram autoconnect\",\n\t\t\tdescription: \"Auto-run /lsd telegram connect on startup\",\n\t\t\tcurrentValue: config.telegramLiveRelayAutoConnect ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// RTK toggle (insert after verbose-footer)\n\t\tconst verboseFooterIndex = items.findIndex((item) => item.id === \"verbose-footer\");\n\t\titems.splice(verboseFooterIndex + 1, 0, {\n\t\t\tid: \"rtk\",\n\t\t\tlabel: \"RTK\",\n\t\t\tdescription: \"Enable RTK shell-command compression (requires restart)\",\n\t\t\tcurrentValue: config.rtk ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Hardware cursor toggle (insert after rtk)\n\t\tconst rtkIndex = items.findIndex((item) => item.id === \"rtk\");\n\t\titems.splice(rtkIndex + 1, 0, {\n\t\t\tid: \"show-hardware-cursor\",\n\t\t\tlabel: \"Show hardware cursor\",\n\t\t\tdescription: \"Show the terminal cursor while still positioning it for IME support\",\n\t\t\tcurrentValue: config.showHardwareCursor ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Editor padding toggle (insert after show-hardware-cursor)\n\t\tconst hardwareCursorIndex = items.findIndex((item) => item.id === \"show-hardware-cursor\");\n\t\titems.splice(hardwareCursorIndex + 1, 0, {\n\t\t\tid: \"editor-padding\",\n\t\t\tlabel: \"Editor padding\",\n\t\t\tdescription: \"Horizontal padding for input editor (0-3)\",\n\t\t\tcurrentValue: String(config.editorPaddingX),\n\t\t\tvalues: [\"0\", \"1\", \"2\", \"3\"],\n\t\t});\n\n\t\t// Autocomplete max visible toggle (insert after editor-padding)\n\t\tconst editorPaddingIndex = items.findIndex((item) => item.id === \"editor-padding\");\n\t\titems.splice(editorPaddingIndex + 1, 0, {\n\t\t\tid: \"autocomplete-max-visible\",\n\t\t\tlabel: \"Autocomplete max items\",\n\t\t\tdescription: \"Max visible items in autocomplete dropdown (3-20)\",\n\t\t\tcurrentValue: String(config.autocompleteMaxVisible),\n\t\t\tvalues: [\"3\", \"5\", \"7\", \"10\", \"15\", \"20\"],\n\t\t});\n\n\t\t// Clear on shrink toggle (insert after autocomplete-max-visible)\n\t\tconst autocompleteIndex = items.findIndex((item) => item.id === \"autocomplete-max-visible\");\n\t\titems.splice(autocompleteIndex + 1, 0, {\n\t\t\tid: \"clear-on-shrink\",\n\t\t\tlabel: \"Clear on shrink\",\n\t\t\tdescription: \"Clear empty rows when content shrinks (may cause flicker)\",\n\t\t\tcurrentValue: config.clearOnShrink ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Respect .gitignore in file picker toggle (insert after clear-on-shrink)\n\t\tconst clearOnShrinkIndex = items.findIndex((item) => item.id === \"clear-on-shrink\");\n\t\titems.splice(clearOnShrinkIndex + 1, 0, {\n\t\t\tid: \"respect-gitignore-in-picker\",\n\t\t\tlabel: \"Respect .gitignore in file picker\",\n\t\t\tdescription: \"When false, @ file picker shows gitignored files too\",\n\t\t\tcurrentValue: config.respectGitignoreInPicker ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t});\n\n\t\t// Timestamp format (insert after respect-gitignore-in-picker)\n\t\tconst gitignoreIndex = items.findIndex((item) => item.id === \"respect-gitignore-in-picker\");\n\t\titems.splice(gitignoreIndex + 1, 0, {\n\t\t\tid: \"timestamp-format\",\n\t\t\tlabel: \"Timestamp format\",\n\t\t\tdescription: \"Time format for message timestamps\",\n\t\t\tcurrentValue: config.timestampFormat,\n\t\t\tvalues: [\"date-time-iso\", \"date-time-us\"],\n\t\t});\n\n\t\t// Editor link scheme (insert after timestamp-format)\n\t\tconst timestampIndex = items.findIndex((item) => item.id === \"timestamp-format\");\n\t\titems.splice(timestampIndex + 1, 0, {\n\t\t\tid: \"editor-scheme\",\n\t\t\tlabel: \"Editor link scheme\",\n\t\t\tdescription: \"URI scheme for Cmd+click file path links (auto detects from $VISUAL/$EDITOR)\",\n\t\t\tcurrentValue: config.editorScheme,\n\t\t\tvalues: [\"auto\", \"vscode\", \"cursor\", \"zed\", \"jetbrains\", \"sublime\", \"file\"],\n\t\t});\n\n\t\t// Add borders\n\t\tthis.addChild(new DynamicBorder());\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\t10,\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"autocompact\":\n\t\t\t\t\t\tcallbacks.onAutoCompactChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"autocompact-threshold\":\n\t\t\t\t\t\tcallbacks.onAutoCompactThresholdPercentChange(parseInt(newValue, 10));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"default-model\":\n\t\t\t\t\t\tcallbacks.onDefaultModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"classifier-model\":\n\t\t\t\t\t\tcallbacks.onClassifierModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"adaptive-classifier-model\":\n\t\t\t\t\t\tcallbacks.onAdaptiveClassifierModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"budget-subagent-model\":\n\t\t\t\t\t\tcallbacks.onBudgetSubagentModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"plan-mode-reasoning-model\":\n\t\t\t\t\t\tcallbacks.onPlanModeReasoningModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"plan-mode-review-model\":\n\t\t\t\t\t\tcallbacks.onPlanModeReviewModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"plan-mode-coding-model\":\n\t\t\t\t\t\tcallbacks.onPlanModeCodingModelChange(newValue);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-suggest-plan-mode\":\n\t\t\t\t\t\tcallbacks.onAutoSuggestPlanModeChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-switch-plan-model\":\n\t\t\t\t\t\tcallbacks.onAutoSwitchPlanModelChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"show-images\":\n\t\t\t\t\t\tcallbacks.onShowImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-resize-images\":\n\t\t\t\t\t\tcallbacks.onAutoResizeImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"block-images\":\n\t\t\t\t\t\tcallbacks.onBlockImagesChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"skill-commands\":\n\t\t\t\t\t\tcallbacks.onEnableSkillCommandsChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tool-profile\":\n\t\t\t\t\t\tcallbacks.onToolProfileChange(newValue as \"balanced\" | \"standard\" | \"full\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"codex-rotate\":\n\t\t\t\t\t\tcallbacks.onCodexRotateChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"fast-mode\":\n\t\t\t\t\t\tcallbacks.onFastModeChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"cache-timer\":\n\t\t\t\t\t\tcallbacks.onCacheTimerChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"verbose-footer\":\n\t\t\t\t\t\tcallbacks.onVerboseFooterChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"pin-last-prompt\":\n\t\t\t\t\t\tcallbacks.onPinLastPromptChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-dream\":\n\t\t\t\t\t\tcallbacks.onAutoDreamChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"auto-memory\":\n\t\t\t\t\t\tcallbacks.onAutoMemoryChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"notification-sound\":\n\t\t\t\t\t\tcallbacks.onNotificationSoundChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"telegram-live-relay-autoconnect\":\n\t\t\t\t\t\tcallbacks.onTelegramLiveRelayAutoConnectChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"rtk\":\n\t\t\t\t\t\tcallbacks.onRtkChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"steering-mode\":\n\t\t\t\t\t\tcallbacks.onSteeringModeChange(newValue as \"all\" | \"one-at-a-time\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"follow-up-mode\":\n\t\t\t\t\t\tcallbacks.onFollowUpModeChange(newValue as \"all\" | \"one-at-a-time\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"transport\":\n\t\t\t\t\t\tcallbacks.onTransportChange(newValue as Transport);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"anthropic-adaptive-default\":\n\t\t\t\t\t\tcallbacks.onAnthropicAdaptiveByDefaultChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"client-adaptive-default\":\n\t\t\t\t\t\tcallbacks.onClientAdaptiveByDefaultChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"hide-thinking\":\n\t\t\t\t\t\tcallbacks.onHideThinkingBlockChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"collapse-tool-calls\":\n\t\t\t\t\t\tcallbacks.onCollapseToolCallsChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tool-output-mode\":\n\t\t\t\t\t\tcallbacks.onToolOutputModeChange(newValue as \"minimal\" | \"normal\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"sandbox-enabled\":\n\t\t\t\t\t\tcallbacks.onSandboxEnabledChange?.(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"sandbox-network\":\n\t\t\t\t\t\tcallbacks.onSandboxNetworkModeChange?.(newValue as \"allow\" | \"ask\" | \"deny\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"collapse-changelog\":\n\t\t\t\t\t\tcallbacks.onCollapseChangelogChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"quiet-startup\":\n\t\t\t\t\t\tcallbacks.onQuietStartupChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"double-escape-action\":\n\t\t\t\t\t\tcallbacks.onDoubleEscapeActionChange(newValue as \"fork\" | \"tree\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tree-filter-mode\":\n\t\t\t\t\t\tcallbacks.onTreeFilterModeChange(\n\t\t\t\t\t\t\tnewValue as \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"show-hardware-cursor\":\n\t\t\t\t\t\tcallbacks.onShowHardwareCursorChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"editor-padding\":\n\t\t\t\t\t\tcallbacks.onEditorPaddingXChange(parseInt(newValue, 10));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"autocomplete-max-visible\":\n\t\t\t\t\t\tcallbacks.onAutocompleteMaxVisibleChange(parseInt(newValue, 10));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"clear-on-shrink\":\n\t\t\t\t\t\tcallbacks.onClearOnShrinkChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"respect-gitignore-in-picker\":\n\t\t\t\t\t\tcallbacks.onRespectGitignoreInPickerChange(newValue === \"true\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"timestamp-format\":\n\t\t\t\t\t\tcallbacks.onTimestampFormatChange(newValue as \"date-time-iso\" | \"date-time-us\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"editor-scheme\":\n\t\t\t\t\t\tcallbacks.onEditorSchemeChange(\n\t\t\t\t\t\t\tnewValue as \"auto\" | \"vscode\" | \"cursor\" | \"zed\" | \"jetbrains\" | \"sublime\" | \"file\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcallbacks.onCancel,\n\t\t\t{ enableSearch: true },\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSettingsList(): SettingsList {\n\t\treturn this.settingsList;\n\t}\n}\n"]}
@@ -27,10 +27,13 @@ export declare class ToolExecutionComponent extends Container {
27
27
  private result?;
28
28
  private editDiffPreview?;
29
29
  private editDiffArgsKey?;
30
+ private writeDiffPreview?;
31
+ private writeDiffArgsKey?;
30
32
  private convertedImages;
31
33
  private writeHighlightCache?;
32
34
  private hideComponent;
33
35
  private manuallyHidden;
36
+ private indented;
34
37
  private startTime;
35
38
  private spinnerTimer;
36
39
  private spinnerFrame;
@@ -41,6 +44,8 @@ export declare class ToolExecutionComponent extends Container {
41
44
  * or the toolDefinition doesn't provide custom renderers.
42
45
  */
43
46
  private shouldUseBuiltInRenderer;
47
+ private setPrimaryContent;
48
+ private getDiffTextToRender;
44
49
  updateArgs(args: any): void;
45
50
  private highlightSingleLine;
46
51
  private refreshWriteHighlightPrefix;
@@ -51,6 +56,11 @@ export declare class ToolExecutionComponent extends Container {
51
56
  * This triggers diff computation for edit tool.
52
57
  */
53
58
  setArgsComplete(): void;
59
+ /**
60
+ * Compute write diff preview when we have complete args.
61
+ * This runs async and updates display when done.
62
+ */
63
+ private maybeComputeWriteDiff;
54
64
  /**
55
65
  * Compute edit diff preview when we have complete args.
56
66
  * This runs async and updates display when done.
@@ -73,9 +83,10 @@ export declare class ToolExecutionComponent extends Container {
73
83
  private maybeConvertImagesForKitty;
74
84
  setExpanded(expanded: boolean): void;
75
85
  setHidden(hidden: boolean): void;
86
+ setIndented(indented: boolean): void;
76
87
  isHidden(): boolean;
77
88
  getElapsed(): number;
78
- shouldHideWhenCollapsed(): boolean;
89
+ shouldHideWhenCollapsed(collapseToolCalls?: boolean): boolean;
79
90
  setRenderMode(mode: "minimal" | "normal"): void;
80
91
  setEditorScheme(scheme: EditorScheme): void;
81
92
  setShowImages(show: boolean): void;
@@ -83,6 +94,10 @@ export declare class ToolExecutionComponent extends Container {
83
94
  invalidate(): void;
84
95
  render(width: number): string[];
85
96
  private updateDisplay;
97
+ /**
98
+ * Render built-in edit/write diff blocks with width-aware full-line backgrounds.
99
+ */
100
+ private renderBuiltInDiffContent;
86
101
  /**
87
102
  * Render bash content using visual line truncation (like bash-execution.ts)
88
103
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAMT,KAAK,GAAG,EAEX,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AASxE,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,yBAAyB,CAAC;AA4DxE,MAAM,WAAW,oBAAoB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAUD;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,SAAS;IACjD,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAIb;IAEF,OAAO,CAAC,eAAe,CAAC,CAAiC;IACzD,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,OAAO,CAAC,eAAe,CAA8D;IAErF,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAElD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAc;IAG/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,YAAY,CAAK;gBAGrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,oBAAoB,YAAK,EAClC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,EAAE,EAAE,GAAG,EACP,GAAG,GAAE,MAAsB;IA2B/B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAMhC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAQ3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,8BAA8B;IAkBtC,OAAO,CAAC,oCAAoC;IAyD5C;;;OAGG;IACH,eAAe,IAAI,IAAI;IAWvB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA6B5B,YAAY,CACR,MAAM,EAAE;QACJ,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClF,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;KACpB,EACD,SAAS,UAAQ,GAClB,IAAI;IAgBP;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA2BlC,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKpC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAKhC,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,MAAM;IAIpB,uBAAuB,IAAI,OAAO;IAIlC,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI;IAO/C,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAK3C,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKlC,OAAO,IAAI,IAAI;IAON,UAAU,IAAI,IAAI;IAKlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAOxC,OAAO,CAAC,aAAa;IAuLrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiHzB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,mBAAmB;CAya9B"}
1
+ {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Box, Container, getCapabilities, Image, imageFallback, Spacer, Text, truncateToWidth, } from "@gsd/pi-tui";
2
2
  import stripAnsi from "strip-ansi";
3
- import { computeEditDiff } from "../../../core/tools/edit-diff.js";
3
+ import { computeEditDiff, computeWriteDiff, } from "../../../core/tools/edit-diff.js";
4
4
  import { allTools } from "../../../core/tools/index.js";
5
5
  import { shouldCollapse } from "../../../core/tool-priority.js";
6
6
  import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize } from "../../../core/tools/truncate.js";
@@ -10,7 +10,7 @@ import { renderTerminalText } from "../../../utils/terminal-serializer.js";
10
10
  import { getLanguageFromPath, highlightCode, theme } from "../theme/theme.js";
11
11
  import { editorLink } from "../utils/editor-link.js";
12
12
  import { shortenPath } from "../utils/shorten-path.js";
13
- import { renderDiff } from "./diff.js";
13
+ import { renderDiff, renderDiffLines } from "./diff.js";
14
14
  import { truncateToVisualLines } from "./visual-truncate.js";
15
15
  // Preview line limit for bash when not expanded
16
16
  const BASH_PREVIEW_LINES = 5;
@@ -82,6 +82,7 @@ export class ToolExecutionComponent extends Container {
82
82
  // When true, this component intentionally renders no lines
83
83
  this.hideComponent = false;
84
84
  this.manuallyHidden = false;
85
+ this.indented = false;
85
86
  this.startTime = Date.now();
86
87
  // Tool status spinner state
87
88
  this.spinnerTimer = null;
@@ -117,6 +118,40 @@ export class ToolExecutionComponent extends Container {
117
118
  const hasCustomRenderers = this.toolDefinition?.renderCall || this.toolDefinition?.renderResult;
118
119
  return isBuiltInName && !hasCustomRenderers;
119
120
  }
121
+ setPrimaryContent(useBox) {
122
+ const hasBox = this.children.includes(this.contentBox);
123
+ const hasText = this.children.includes(this.contentText);
124
+ if (useBox) {
125
+ if (hasText)
126
+ this.removeChild(this.contentText);
127
+ if (!hasBox)
128
+ this.addChild(this.contentBox);
129
+ }
130
+ else {
131
+ if (hasBox)
132
+ this.removeChild(this.contentBox);
133
+ if (!hasText)
134
+ this.addChild(this.contentText);
135
+ }
136
+ }
137
+ getDiffTextToRender() {
138
+ if (this.toolName === "write") {
139
+ if (!this.isPartial && this.writeDiffPreview && !("error" in this.writeDiffPreview) && this.writeDiffPreview.diff) {
140
+ return this.writeDiffPreview.diff;
141
+ }
142
+ return undefined;
143
+ }
144
+ if (this.toolName !== "edit" || this.result?.isError) {
145
+ return undefined;
146
+ }
147
+ if (this.result?.details?.diff) {
148
+ return this.result.details.diff;
149
+ }
150
+ if (this.editDiffPreview && !("error" in this.editDiffPreview) && this.editDiffPreview.diff) {
151
+ return this.editDiffPreview.diff;
152
+ }
153
+ return undefined;
154
+ }
120
155
  updateArgs(args) {
121
156
  this.args = args;
122
157
  if (this.toolName === "write" && this.isPartial) {
@@ -212,9 +247,33 @@ export class ToolExecutionComponent extends Container {
212
247
  if (rawPath !== null && fileContent !== null) {
213
248
  this.rebuildWriteHighlightCacheFull(rawPath, fileContent);
214
249
  }
250
+ this.maybeComputeWriteDiff();
215
251
  }
216
252
  this.maybeComputeEditDiff();
217
253
  }
254
+ /**
255
+ * Compute write diff preview when we have complete args.
256
+ * This runs async and updates display when done.
257
+ */
258
+ maybeComputeWriteDiff() {
259
+ if (this.toolName !== "write")
260
+ return;
261
+ const path = this.args?.path ?? this.args?.file_path;
262
+ const content = this.args?.content;
263
+ if (!path || content === undefined)
264
+ return;
265
+ const argsKey = JSON.stringify({ path, content });
266
+ if (this.writeDiffArgsKey === argsKey)
267
+ return;
268
+ this.writeDiffArgsKey = argsKey;
269
+ computeWriteDiff(path, content, this.cwd).then((result) => {
270
+ if (this.writeDiffArgsKey === argsKey) {
271
+ this.writeDiffPreview = result;
272
+ this.updateDisplay();
273
+ this.ui.requestRender();
274
+ }
275
+ });
276
+ }
218
277
  /**
219
278
  * Compute edit diff preview when we have complete args.
220
279
  * This runs async and updates display when done.
@@ -298,14 +357,18 @@ export class ToolExecutionComponent extends Container {
298
357
  this.manuallyHidden = hidden;
299
358
  this.updateDisplay();
300
359
  }
360
+ setIndented(indented) {
361
+ this.indented = indented;
362
+ this.updateDisplay();
363
+ }
301
364
  isHidden() {
302
365
  return this.hideComponent;
303
366
  }
304
367
  getElapsed() {
305
368
  return Date.now() - this.startTime;
306
369
  }
307
- shouldHideWhenCollapsed() {
308
- return !this.isPartial && shouldCollapse(this.toolName, this.result?.isError ?? false);
370
+ shouldHideWhenCollapsed(collapseToolCalls = true) {
371
+ return collapseToolCalls && !this.isPartial && shouldCollapse(this.toolName, this.result?.isError ?? false);
309
372
  }
310
373
  setRenderMode(mode) {
311
374
  if (this.renderMode !== mode) {
@@ -335,7 +398,18 @@ export class ToolExecutionComponent extends Container {
335
398
  if (this.hideComponent) {
336
399
  return [];
337
400
  }
338
- return [...super.render(width), ""];
401
+ const lines = super.render(width);
402
+ if (this.indented) {
403
+ const gutter = theme.fg("dim", "│");
404
+ return lines.map((line, i) => {
405
+ if (i === lines.length - 1 && line === "") {
406
+ // Trailing empty spacer line → gutter only
407
+ return gutter;
408
+ }
409
+ return gutter + " " + theme.fg("dim", line);
410
+ });
411
+ }
412
+ return [...lines, ""];
339
413
  }
340
414
  updateDisplay() {
341
415
  // Status indicator with circle
@@ -370,15 +444,23 @@ export class ToolExecutionComponent extends Container {
370
444
  }
371
445
  }
372
446
  const useBuiltInRenderer = this.shouldUseBuiltInRenderer();
447
+ const diffTextToRender = this.getDiffTextToRender();
373
448
  let customRendererHasContent = false;
374
449
  // Use built-in rendering for built-in tools (or overrides without custom renderers)
375
450
  if (useBuiltInRenderer) {
451
+ const useDiffBox = !!diffTextToRender && !this.shouldHideCollapsedPreview();
452
+ this.setPrimaryContent(this.toolName === "bash" || useDiffBox);
376
453
  if (this.toolName === "bash") {
377
454
  // Bash uses Box with visual line truncation - no background
378
455
  this.contentBox.setBgFn((text) => text);
379
456
  this.contentBox.clear();
380
457
  this.renderBashContent(statusIndicator);
381
458
  }
459
+ else if (useDiffBox && diffTextToRender) {
460
+ this.contentBox.setBgFn((text) => text);
461
+ this.contentBox.clear();
462
+ this.renderBuiltInDiffContent(statusIndicator, diffTextToRender);
463
+ }
382
464
  else {
383
465
  // Other built-in tools: use Text directly with caching - no background
384
466
  this.contentText.setCustomBgFn((text) => text);
@@ -507,6 +589,20 @@ export class ToolExecutionComponent extends Container {
507
589
  const computedHidden = !useBuiltInRenderer && this.toolDefinition ? !customRendererHasContent && this.imageComponents.length === 0 : false;
508
590
  this.hideComponent = this.manuallyHidden || computedHidden;
509
591
  }
592
+ /**
593
+ * Render built-in edit/write diff blocks with width-aware full-line backgrounds.
594
+ */
595
+ renderBuiltInDiffContent(statusIndicator, diffText) {
596
+ const header = this.formatToolExecution(statusIndicator).split("\n\n", 1)[0] ?? "";
597
+ this.contentBox.addChild(new Text(header, 0, 0));
598
+ this.contentBox.addChild({
599
+ render: (width) => {
600
+ const contentWidth = Math.max(1, width - 2);
601
+ return ["", ...renderDiffLines(diffText, contentWidth).map((line) => ` ${line} `)];
602
+ },
603
+ invalidate: () => { },
604
+ });
605
+ }
510
606
  /**
511
607
  * Render bash content using visual line truncation (like bash-execution.ts)
512
608
  */
@@ -726,14 +822,40 @@ export class ToolExecutionComponent extends Container {
726
822
  const rawPath = str(this.args?.file_path ?? this.args?.path);
727
823
  const fileContent = str(this.args?.content);
728
824
  const path = rawPath !== null ? shortenPath(rawPath) : null;
825
+ const firstChangedLine = this.writeDiffPreview && "firstChangedLine" in this.writeDiffPreview
826
+ ? this.writeDiffPreview.firstChangedLine
827
+ : undefined;
729
828
  let writePathDisplay = path === null ? invalidArg : path ? theme.fg("accent", path) : theme.fg("toolOutput", "...");
730
829
  if (rawPath && path) {
731
- writePathDisplay = editorLink(rawPath, writePathDisplay, { cwd: this.cwd, scheme: this.editorScheme });
830
+ writePathDisplay = editorLink(rawPath, writePathDisplay, {
831
+ cwd: this.cwd,
832
+ line: firstChangedLine ?? undefined,
833
+ scheme: this.editorScheme,
834
+ });
835
+ }
836
+ if (firstChangedLine) {
837
+ writePathDisplay += theme.fg("warning", `:${firstChangedLine}`);
732
838
  }
733
839
  text = `${statusIndicator} ${theme.fg("toolTitle", theme.bold("write"))} ${writePathDisplay}`;
734
840
  if (fileContent === null) {
735
841
  text += `\n\n${theme.fg("error", "[invalid content arg - expected string]")}`;
736
842
  }
843
+ else if (this.result?.isError) {
844
+ const errorText = this.getTextOutput();
845
+ if (errorText) {
846
+ text += `\n\n${theme.fg("error", errorText)}`;
847
+ }
848
+ }
849
+ else if (!this.isPartial && this.writeDiffPreview) {
850
+ if ("error" in this.writeDiffPreview) {
851
+ text += `\n\n${theme.fg("error", this.writeDiffPreview.error)}`;
852
+ }
853
+ else if (this.writeDiffPreview.diff) {
854
+ text += hideCollapsedPreview
855
+ ? this.collapsedHintWithPrefix()
856
+ : `\n\n${renderDiff(this.writeDiffPreview.diff, { filePath: rawPath ?? undefined })}`;
857
+ }
858
+ }
737
859
  else if (fileContent) {
738
860
  const lang = rawPath ? getLanguageFromPath(rawPath) : undefined;
739
861
  let lines;
@@ -775,13 +897,6 @@ export class ToolExecutionComponent extends Container {
775
897
  }
776
898
  }
777
899
  }
778
- // Show error if tool execution failed
779
- if (this.result?.isError) {
780
- const errorText = this.getTextOutput();
781
- if (errorText) {
782
- text += `\n\n${theme.fg("error", errorText)}`;
783
- }
784
- }
785
900
  }
786
901
  else if (this.toolName === "edit") {
787
902
  const rawPath = str(this.args?.file_path ?? this.args?.path);