lsd-pi 1.3.2 → 1.3.7

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 (205) hide show
  1. package/dist/cli.js +2 -1
  2. package/dist/lsd-settings-manager.d.ts +2 -0
  3. package/dist/lsd-settings-manager.js +5 -0
  4. package/dist/resource-loader.js +33 -3
  5. package/dist/resources/extensions/browser-tools/tools/codegen.js +5 -5
  6. package/dist/resources/extensions/browser-tools/tools/navigation.js +107 -178
  7. package/dist/resources/extensions/browser-tools/tools/network-mock.js +112 -167
  8. package/dist/resources/extensions/browser-tools/tools/pages.js +182 -234
  9. package/dist/resources/extensions/browser-tools/tools/refs.js +202 -461
  10. package/dist/resources/extensions/browser-tools/tools/session.js +176 -323
  11. package/dist/resources/extensions/browser-tools/tools/state-persistence.js +91 -154
  12. package/dist/resources/extensions/browser-tools/utils.js +1 -1
  13. package/dist/resources/extensions/cache-timer/index.js +3 -2
  14. package/dist/resources/extensions/slash-commands/extension-manifest.json +2 -2
  15. package/dist/resources/extensions/slash-commands/fast.js +73 -0
  16. package/dist/resources/extensions/slash-commands/index.js +2 -0
  17. package/dist/resources/extensions/slash-commands/plan.js +37 -12
  18. package/dist/resources/extensions/subagent/background-job-manager.js +13 -0
  19. package/dist/resources/extensions/subagent/in-process-runner.js +387 -0
  20. package/dist/resources/extensions/subagent/index.js +278 -626
  21. package/dist/resources/extensions/subagent/legacy-runner.js +503 -0
  22. package/dist/resources/extensions/voice/index.js +96 -36
  23. package/dist/resources/extensions/voice/push-to-talk.js +26 -0
  24. package/dist/welcome-screen.js +2 -2
  25. package/package.json +1 -1
  26. package/packages/pi-agent-core/dist/agent.d.ts +19 -0
  27. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  28. package/packages/pi-agent-core/dist/agent.js +16 -0
  29. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  30. package/packages/pi-agent-core/src/agent.ts +32 -2
  31. package/packages/pi-ai/dist/providers/openai-codex-responses.d.ts +34 -1
  32. package/packages/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  33. package/packages/pi-ai/dist/providers/openai-codex-responses.js +32 -4
  34. package/packages/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  35. package/packages/pi-ai/dist/providers/openai-codex-responses.test.js +127 -16
  36. package/packages/pi-ai/dist/providers/openai-codex-responses.test.js.map +1 -1
  37. package/packages/pi-ai/dist/providers/openai-responses.d.ts +8 -1
  38. package/packages/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  39. package/packages/pi-ai/dist/providers/openai-responses.fast-mode.test.d.ts +2 -0
  40. package/packages/pi-ai/dist/providers/openai-responses.fast-mode.test.d.ts.map +1 -0
  41. package/packages/pi-ai/dist/providers/openai-responses.fast-mode.test.js +67 -0
  42. package/packages/pi-ai/dist/providers/openai-responses.fast-mode.test.js.map +1 -0
  43. package/packages/pi-ai/dist/providers/openai-responses.js +21 -3
  44. package/packages/pi-ai/dist/providers/openai-responses.js.map +1 -1
  45. package/packages/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
  46. package/packages/pi-ai/dist/providers/simple-options.js +2 -0
  47. package/packages/pi-ai/dist/providers/simple-options.js.map +1 -1
  48. package/packages/pi-ai/dist/types.d.ts +5 -0
  49. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  50. package/packages/pi-ai/dist/types.js.map +1 -1
  51. package/packages/pi-ai/src/providers/openai-codex-responses.test.ts +143 -20
  52. package/packages/pi-ai/src/providers/openai-codex-responses.ts +47 -4
  53. package/packages/pi-ai/src/providers/openai-responses.fast-mode.test.ts +73 -0
  54. package/packages/pi-ai/src/providers/openai-responses.ts +26 -3
  55. package/packages/pi-ai/src/providers/simple-options.ts +2 -0
  56. package/packages/pi-ai/src/types.ts +5 -0
  57. package/packages/pi-coding-agent/dist/core/keybindings.d.ts +1 -1
  58. package/packages/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  59. package/packages/pi-coding-agent/dist/core/keybindings.js +2 -0
  60. package/packages/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  61. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  62. package/packages/pi-coding-agent/dist/core/sdk.js +4 -2
  63. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  64. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.d.ts +2 -0
  65. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.d.ts.map +1 -0
  66. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.js +35 -0
  67. package/packages/pi-coding-agent/dist/core/settings-manager.collapse-tool-calls.test.js.map +1 -0
  68. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +12 -0
  69. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  70. package/packages/pi-coding-agent/dist/core/settings-manager.fast-mode.test.d.ts +2 -0
  71. package/packages/pi-coding-agent/dist/core/settings-manager.fast-mode.test.d.ts.map +1 -0
  72. package/packages/pi-coding-agent/dist/core/settings-manager.fast-mode.test.js +35 -0
  73. package/packages/pi-coding-agent/dist/core/settings-manager.fast-mode.test.js.map +1 -0
  74. package/packages/pi-coding-agent/dist/core/settings-manager.js +24 -0
  75. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  76. package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  77. package/packages/pi-coding-agent/dist/core/slash-commands.js +1 -0
  78. package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  79. package/packages/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  80. package/packages/pi-coding-agent/dist/core/system-prompt.js +6 -1
  81. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  82. package/packages/pi-coding-agent/dist/core/tool-priority.d.ts +4 -0
  83. package/packages/pi-coding-agent/dist/core/tool-priority.d.ts.map +1 -0
  84. package/packages/pi-coding-agent/dist/core/tool-priority.js +18 -0
  85. package/packages/pi-coding-agent/dist/core/tool-priority.js.map +1 -0
  86. package/packages/pi-coding-agent/dist/core/tool-priority.test.d.ts +2 -0
  87. package/packages/pi-coding-agent/dist/core/tool-priority.test.d.ts.map +1 -0
  88. package/packages/pi-coding-agent/dist/core/tool-priority.test.js +27 -0
  89. package/packages/pi-coding-agent/dist/core/tool-priority.test.js.map +1 -0
  90. package/packages/pi-coding-agent/dist/core/tools/edit-diff.d.ts +5 -0
  91. package/packages/pi-coding-agent/dist/core/tools/edit-diff.d.ts.map +1 -1
  92. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js +21 -0
  93. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  94. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js +16 -1
  95. package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js.map +1 -1
  96. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-summary-line.test.d.ts +2 -0
  97. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-summary-line.test.d.ts.map +1 -0
  98. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-summary-line.test.js +34 -0
  99. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-summary-line.test.js.map +1 -0
  100. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.d.ts +45 -0
  101. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.d.ts.map +1 -0
  102. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.js +314 -0
  103. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.js.map +1 -0
  104. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.test.d.ts +2 -0
  105. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.test.d.ts.map +1 -0
  106. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.test.js +122 -0
  107. package/packages/pi-coding-agent/dist/modes/interactive/components/btw-overlay.test.js.map +1 -0
  108. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.d.ts +7 -5
  109. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.d.ts.map +1 -1
  110. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js +86 -28
  111. package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js.map +1 -1
  112. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts +4 -0
  113. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  114. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +23 -10
  115. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  116. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +8 -0
  117. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  118. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +52 -6
  119. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  120. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +19 -0
  121. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  122. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +127 -14
  123. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  124. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.d.ts +14 -0
  125. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.d.ts.map +1 -0
  126. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.js +93 -0
  127. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-summary-line.js.map +1 -0
  128. package/packages/pi-coding-agent/dist/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.d.ts +2 -0
  129. package/packages/pi-coding-agent/dist/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.d.ts.map +1 -0
  130. package/packages/pi-coding-agent/dist/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.js +328 -0
  131. package/packages/pi-coding-agent/dist/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.js.map +1 -0
  132. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  133. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +123 -0
  134. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  135. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js +1 -1
  136. package/packages/pi-coding-agent/dist/modes/interactive/controllers/extension-ui-controller.js.map +1 -1
  137. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
  138. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js +7 -0
  139. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js.map +1 -1
  140. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +4 -0
  141. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  142. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  143. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +9 -1
  144. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  145. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +103 -23
  146. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  147. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
  148. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +41 -0
  149. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
  150. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +4 -4
  151. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
  152. package/packages/pi-coding-agent/package.json +1 -1
  153. package/packages/pi-coding-agent/src/core/keybindings.ts +4 -1
  154. package/packages/pi-coding-agent/src/core/sdk.ts +4 -2
  155. package/packages/pi-coding-agent/src/core/settings-manager.collapse-tool-calls.test.ts +46 -0
  156. package/packages/pi-coding-agent/src/core/settings-manager.fast-mode.test.ts +46 -0
  157. package/packages/pi-coding-agent/src/core/settings-manager.ts +36 -0
  158. package/packages/pi-coding-agent/src/core/slash-commands.ts +1 -0
  159. package/packages/pi-coding-agent/src/core/system-prompt.ts +6 -1
  160. package/packages/pi-coding-agent/src/core/tool-priority.test.ts +30 -0
  161. package/packages/pi-coding-agent/src/core/tool-priority.ts +17 -0
  162. package/packages/pi-coding-agent/src/core/tools/edit-diff.test.ts +20 -0
  163. package/packages/pi-coding-agent/src/core/tools/edit-diff.ts +26 -0
  164. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-summary-line.test.ts +41 -0
  165. package/packages/pi-coding-agent/src/modes/interactive/components/btw-overlay.test.ts +172 -0
  166. package/packages/pi-coding-agent/src/modes/interactive/components/btw-overlay.ts +402 -0
  167. package/packages/pi-coding-agent/src/modes/interactive/components/diff.ts +105 -28
  168. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +21 -6
  169. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +63 -6
  170. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +1262 -1138
  171. package/packages/pi-coding-agent/src/modes/interactive/components/tool-summary-line.ts +120 -0
  172. package/packages/pi-coding-agent/src/modes/interactive/controllers/__tests__/chat-controller.collapsed-tool-summary.test.ts +396 -0
  173. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +530 -398
  174. package/packages/pi-coding-agent/src/modes/interactive/controllers/extension-ui-controller.ts +1 -1
  175. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.ts +7 -0
  176. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +4 -0
  177. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +109 -23
  178. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +60 -1
  179. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +4 -4
  180. package/packages/pi-tui/dist/components/editor.js +3 -3
  181. package/packages/pi-tui/dist/components/editor.js.map +1 -1
  182. package/packages/pi-tui/src/components/editor.ts +3 -3
  183. package/pkg/dist/modes/interactive/theme/themes.js +4 -4
  184. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
  185. package/pkg/package.json +1 -1
  186. package/src/resources/extensions/browser-tools/tools/codegen.ts +5 -5
  187. package/src/resources/extensions/browser-tools/tools/navigation.ts +118 -196
  188. package/src/resources/extensions/browser-tools/tools/network-mock.ts +114 -205
  189. package/src/resources/extensions/browser-tools/tools/pages.ts +183 -237
  190. package/src/resources/extensions/browser-tools/tools/refs.ts +193 -507
  191. package/src/resources/extensions/browser-tools/tools/session.ts +182 -321
  192. package/src/resources/extensions/browser-tools/tools/state-persistence.ts +94 -172
  193. package/src/resources/extensions/browser-tools/utils.ts +1 -1
  194. package/src/resources/extensions/cache-timer/index.ts +3 -2
  195. package/src/resources/extensions/slash-commands/extension-manifest.json +2 -2
  196. package/src/resources/extensions/slash-commands/fast.ts +89 -0
  197. package/src/resources/extensions/slash-commands/index.ts +2 -0
  198. package/src/resources/extensions/slash-commands/plan.ts +42 -12
  199. package/src/resources/extensions/subagent/background-job-manager.ts +28 -0
  200. package/src/resources/extensions/subagent/in-process-runner.ts +534 -0
  201. package/src/resources/extensions/subagent/index.ts +489 -799
  202. package/src/resources/extensions/subagent/legacy-runner.ts +607 -0
  203. package/src/resources/extensions/voice/index.ts +308 -238
  204. package/src/resources/extensions/voice/push-to-talk.ts +42 -0
  205. package/src/resources/extensions/voice/tests/push-to-talk.test.ts +109 -0
@@ -41,7 +41,9 @@ export interface SettingsConfig {
41
41
  enableSkillCommands: boolean;
42
42
  toolProfile: "balanced" | "standard" | "full";
43
43
  codexRotate: boolean;
44
+ fastMode: boolean;
44
45
  cacheTimer: boolean;
46
+ verboseFooter: boolean;
45
47
  pinLastPrompt: boolean;
46
48
  steeringMode: "all" | "one-at-a-time";
47
49
  followUpMode: "all" | "one-at-a-time";
@@ -66,10 +68,12 @@ export interface SettingsConfig {
66
68
  clearOnShrink: boolean;
67
69
  timestampFormat: "date-time-iso" | "date-time-us";
68
70
  toolOutputMode: "minimal" | "normal";
71
+ collapseToolCalls: boolean;
69
72
  rtk: boolean;
70
73
  editorScheme: "auto" | "vscode" | "cursor" | "zed" | "jetbrains" | "sublime" | "file";
71
74
  autoDream: boolean;
72
75
  autoMemory: boolean;
76
+ notificationSound: boolean;
73
77
  telegramLiveRelayAutoConnect: boolean;
74
78
  sandboxEnabled?: boolean;
75
79
  sandboxNetworkMode?: "allow" | "ask" | "deny";
@@ -96,6 +100,7 @@ export interface SettingsCallbacks {
96
100
  onAutoSwitchPlanModelChange: (enabled: boolean) => void;
97
101
  onAutoDreamChange: (enabled: boolean) => void;
98
102
  onAutoMemoryChange: (enabled: boolean) => void;
103
+ onNotificationSoundChange: (enabled: boolean) => void;
99
104
  onTelegramLiveRelayAutoConnectChange: (enabled: boolean) => void;
100
105
  onSandboxEnabledChange?: (enabled: boolean) => void;
101
106
  onSandboxNetworkModeChange?: (mode: "allow" | "ask" | "deny") => void;
@@ -105,7 +110,9 @@ export interface SettingsCallbacks {
105
110
  onEnableSkillCommandsChange: (enabled: boolean) => void;
106
111
  onToolProfileChange: (profile: "balanced" | "standard" | "full") => void;
107
112
  onCodexRotateChange: (enabled: boolean) => void;
113
+ onFastModeChange: (enabled: boolean) => void;
108
114
  onCacheTimerChange: (enabled: boolean) => void;
115
+ onVerboseFooterChange: (enabled: boolean) => void;
109
116
  onPinLastPromptChange: (enabled: boolean) => void;
110
117
  onSteeringModeChange: (mode: "all" | "one-at-a-time") => void;
111
118
  onFollowUpModeChange: (mode: "all" | "one-at-a-time") => void;
@@ -128,6 +135,7 @@ export interface SettingsCallbacks {
128
135
  onClearOnShrinkChange: (enabled: boolean) => void;
129
136
  onTimestampFormatChange: (format: "date-time-iso" | "date-time-us") => void;
130
137
  onToolOutputModeChange: (mode: "minimal" | "normal") => void;
138
+ onCollapseToolCallsChange: (enabled: boolean) => void;
131
139
  onRtkChange: (enabled: boolean) => void;
132
140
  onEditorSchemeChange: (scheme: "auto" | "vscode" | "cursor" | "zed" | "jetbrains" | "sublime" | "file") => void;
133
141
  onCancel: () => void;
@@ -314,6 +322,13 @@ export class SettingsSelectorComponent extends Container {
314
322
  currentValue: config.hideThinkingBlock ? "true" : "false",
315
323
  values: ["true", "false"],
316
324
  },
325
+ {
326
+ id: "collapse-tool-calls",
327
+ label: "Collapse tool calls",
328
+ description: "Group low-priority tool calls into collapsed summary lines",
329
+ currentValue: config.collapseToolCalls ? "true" : "false",
330
+ values: ["true", "false"],
331
+ },
317
332
  {
318
333
  id: "tool-output-mode",
319
334
  label: "Tool output mode",
@@ -513,9 +528,19 @@ export class SettingsSelectorComponent extends Container {
513
528
  values: ["true", "false"],
514
529
  });
515
530
 
516
- // Cache timer toggle (insert after codex-rotate)
531
+ // Fast mode toggle (insert after codex-rotate)
517
532
  const codexRotateIndex = items.findIndex((item) => item.id === "codex-rotate");
518
533
  items.splice(codexRotateIndex + 1, 0, {
534
+ id: "fast-mode",
535
+ label: "Fast mode",
536
+ description: "OpenAI/Codex supported models use priority service tier",
537
+ currentValue: config.fastMode ? "true" : "false",
538
+ values: ["true", "false"],
539
+ });
540
+
541
+ // Cache timer toggle (insert after fast-mode)
542
+ const fastModeIndex = items.findIndex((item) => item.id === "fast-mode");
543
+ items.splice(fastModeIndex + 1, 0, {
519
544
  id: "cache-timer",
520
545
  label: "Cache timer",
521
546
  description: "Show elapsed time since last response in the footer (tracks 5-min cache window)",
@@ -523,9 +548,19 @@ export class SettingsSelectorComponent extends Container {
523
548
  values: ["true", "false"],
524
549
  });
525
550
 
526
- // Pin last prompt toggle (insert after cache-timer)
551
+ // Verbose footer toggle (insert after cache-timer)
527
552
  const cacheTimerIdx = items.findIndex((item) => item.id === "cache-timer");
528
553
  items.splice(cacheTimerIdx + 1, 0, {
554
+ id: "verbose-footer",
555
+ label: "Verbose footer",
556
+ description: "Show extra footer stats like input, output, and cache tokens",
557
+ currentValue: config.verboseFooter ? "true" : "false",
558
+ values: ["true", "false"],
559
+ });
560
+
561
+ // Pin last prompt toggle (insert after verbose-footer)
562
+ const verboseFooterIdx = items.findIndex((item) => item.id === "verbose-footer");
563
+ items.splice(verboseFooterIdx + 1, 0, {
529
564
  id: "pin-last-prompt",
530
565
  label: "Pin last prompt",
531
566
  description: "Show your last sent message above the editor so you remember the topic",
@@ -553,9 +588,19 @@ export class SettingsSelectorComponent extends Container {
553
588
  values: ["true", "false"],
554
589
  });
555
590
 
556
- // Telegram relay auto-connect toggle (insert after auto-memory)
591
+ // Notification sound toggle (insert after auto-memory)
557
592
  const autoMemoryIdx = items.findIndex((item) => item.id === "auto-memory");
558
593
  items.splice(autoMemoryIdx + 1, 0, {
594
+ id: "notification-sound",
595
+ label: "Notification sound",
596
+ description: "Play a terminal bell when the agent finishes responding",
597
+ currentValue: config.notificationSound ? "true" : "false",
598
+ values: ["true", "false"],
599
+ });
600
+
601
+ // Telegram relay auto-connect toggle (insert after notification-sound)
602
+ const notificationSoundIdx = items.findIndex((item) => item.id === "notification-sound");
603
+ items.splice(notificationSoundIdx + 1, 0, {
559
604
  id: "telegram-live-relay-autoconnect",
560
605
  label: "Telegram autoconnect",
561
606
  description: "Auto-run /lsd telegram connect on startup",
@@ -563,9 +608,9 @@ export class SettingsSelectorComponent extends Container {
563
608
  values: ["true", "false"],
564
609
  });
565
610
 
566
- // RTK toggle (insert after cache-timer)
567
- const cacheTimerIndex = items.findIndex((item) => item.id === "cache-timer");
568
- items.splice(cacheTimerIndex + 1, 0, {
611
+ // RTK toggle (insert after verbose-footer)
612
+ const verboseFooterIndex = items.findIndex((item) => item.id === "verbose-footer");
613
+ items.splice(verboseFooterIndex + 1, 0, {
569
614
  id: "rtk",
570
615
  label: "RTK",
571
616
  description: "Enable RTK shell-command compression (requires restart)",
@@ -703,9 +748,15 @@ export class SettingsSelectorComponent extends Container {
703
748
  case "codex-rotate":
704
749
  callbacks.onCodexRotateChange(newValue === "true");
705
750
  break;
751
+ case "fast-mode":
752
+ callbacks.onFastModeChange(newValue === "true");
753
+ break;
706
754
  case "cache-timer":
707
755
  callbacks.onCacheTimerChange(newValue === "true");
708
756
  break;
757
+ case "verbose-footer":
758
+ callbacks.onVerboseFooterChange(newValue === "true");
759
+ break;
709
760
  case "pin-last-prompt":
710
761
  callbacks.onPinLastPromptChange(newValue === "true");
711
762
  break;
@@ -715,6 +766,9 @@ export class SettingsSelectorComponent extends Container {
715
766
  case "auto-memory":
716
767
  callbacks.onAutoMemoryChange(newValue === "true");
717
768
  break;
769
+ case "notification-sound":
770
+ callbacks.onNotificationSoundChange(newValue === "true");
771
+ break;
718
772
  case "telegram-live-relay-autoconnect":
719
773
  callbacks.onTelegramLiveRelayAutoConnectChange(newValue === "true");
720
774
  break;
@@ -739,6 +793,9 @@ export class SettingsSelectorComponent extends Container {
739
793
  case "hide-thinking":
740
794
  callbacks.onHideThinkingBlockChange(newValue === "true");
741
795
  break;
796
+ case "collapse-tool-calls":
797
+ callbacks.onCollapseToolCallsChange(newValue === "true");
798
+ break;
742
799
  case "tool-output-mode":
743
800
  callbacks.onToolOutputModeChange(newValue as "minimal" | "normal");
744
801
  break;