@google/gemini-cli 0.32.0-preview.0 → 0.33.0-preview.0

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 (239) hide show
  1. package/README.md +11 -9
  2. package/dist/package.json +3 -3
  3. package/dist/src/config/config.js +6 -1
  4. package/dist/src/config/config.js.map +1 -1
  5. package/dist/src/config/config.test.js +70 -1
  6. package/dist/src/config/config.test.js.map +1 -1
  7. package/dist/src/config/extension-manager.js +1 -0
  8. package/dist/src/config/extension-manager.js.map +1 -1
  9. package/dist/src/config/extension.d.ts +9 -0
  10. package/dist/src/config/extension.js.map +1 -1
  11. package/dist/src/config/sandboxConfig.js +3 -1
  12. package/dist/src/config/sandboxConfig.js.map +1 -1
  13. package/dist/src/config/settings.d.ts +0 -2
  14. package/dist/src/config/settings.js.map +1 -1
  15. package/dist/src/config/settingsSchema.d.ts +9 -13
  16. package/dist/src/config/settingsSchema.js +5 -13
  17. package/dist/src/config/settingsSchema.js.map +1 -1
  18. package/dist/src/gemini.js +1 -1
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +2 -2
  21. package/dist/src/generated/git-commit.js +2 -2
  22. package/dist/src/test-utils/render.js +5 -1
  23. package/dist/src/test-utils/render.js.map +1 -1
  24. package/dist/src/ui/AppContainer.js +1 -18
  25. package/dist/src/ui/AppContainer.js.map +1 -1
  26. package/dist/src/ui/commands/extensionsCommand.js +3 -1
  27. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  28. package/dist/src/ui/commands/extensionsCommand.test.js +45 -0
  29. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  30. package/dist/src/ui/commands/hooksCommand.js +12 -8
  31. package/dist/src/ui/commands/hooksCommand.js.map +1 -1
  32. package/dist/src/ui/commands/hooksCommand.test.js +15 -23
  33. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
  34. package/dist/src/ui/commands/planCommand.js +33 -3
  35. package/dist/src/ui/commands/planCommand.js.map +1 -1
  36. package/dist/src/ui/commands/planCommand.test.js +29 -1
  37. package/dist/src/ui/commands/planCommand.test.js.map +1 -1
  38. package/dist/src/ui/components/AgentConfigDialog.js +17 -33
  39. package/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
  40. package/dist/src/ui/components/AppHeader.d.ts +1 -1
  41. package/dist/src/ui/components/AppHeader.js +15 -8
  42. package/dist/src/ui/components/AppHeader.js.map +1 -1
  43. package/dist/src/ui/components/AppHeader.test.js +7 -0
  44. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  45. package/dist/src/ui/components/ContextUsageDisplay.d.ts +1 -1
  46. package/dist/src/ui/components/ContextUsageDisplay.js +15 -3
  47. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  48. package/dist/src/ui/components/ContextUsageDisplay.test.js +25 -19
  49. package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -1
  50. package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -6
  51. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  52. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +2 -2
  53. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
  54. package/dist/src/ui/components/DialogManager.js +3 -19
  55. package/dist/src/ui/components/DialogManager.js.map +1 -1
  56. package/dist/src/ui/components/ExitPlanModeDialog.js +2 -1
  57. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  58. package/dist/src/ui/components/ExitPlanModeDialog.test.js +2 -13
  59. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
  60. package/dist/src/ui/components/Footer.js +3 -1
  61. package/dist/src/ui/components/Footer.js.map +1 -1
  62. package/dist/src/ui/components/Footer.test.js +41 -6
  63. package/dist/src/ui/components/Footer.test.js.map +1 -1
  64. package/dist/src/ui/components/HistoryItemDisplay.js +2 -3
  65. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  66. package/dist/src/ui/components/HooksDialog.d.ts +36 -0
  67. package/dist/src/ui/components/HooksDialog.js +81 -0
  68. package/dist/src/ui/components/HooksDialog.js.map +1 -0
  69. package/dist/src/ui/components/HooksDialog.test.js +187 -0
  70. package/dist/src/ui/components/HooksDialog.test.js.map +1 -0
  71. package/dist/src/ui/components/MainContent.js +2 -1
  72. package/dist/src/ui/components/MainContent.js.map +1 -1
  73. package/dist/src/ui/components/SettingsDialog.d.ts +1 -5
  74. package/dist/src/ui/components/SettingsDialog.js +90 -254
  75. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  76. package/dist/src/ui/components/SettingsDialog.test.js +127 -105
  77. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  78. package/dist/src/ui/components/StatusDisplay.test.js +5 -4
  79. package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
  80. package/dist/src/ui/components/Tips.d.ts +1 -1
  81. package/dist/src/ui/components/Tips.js +1 -1
  82. package/dist/src/ui/components/Tips.js.map +1 -1
  83. package/dist/src/ui/components/Tips.test.d.ts +1 -1
  84. package/dist/src/ui/components/Tips.test.js +6 -7
  85. package/dist/src/ui/components/Tips.test.js.map +1 -1
  86. package/dist/src/ui/components/UserIdentity.d.ts +1 -1
  87. package/dist/src/ui/components/UserIdentity.js +10 -12
  88. package/dist/src/ui/components/UserIdentity.js.map +1 -1
  89. package/dist/src/ui/components/UserIdentity.test.js +23 -10
  90. package/dist/src/ui/components/UserIdentity.test.js.map +1 -1
  91. package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -0
  92. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  93. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  94. package/dist/src/ui/components/messages/SubagentProgressDisplay.d.ts +11 -0
  95. package/dist/src/ui/components/messages/SubagentProgressDisplay.js +73 -0
  96. package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -0
  97. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.d.ts +6 -0
  98. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +158 -0
  99. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +1 -0
  100. package/dist/src/ui/components/messages/ToolGroupMessage.js +1 -0
  101. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  102. package/dist/src/ui/components/messages/ToolResultDisplay.js +5 -0
  103. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  104. package/dist/src/ui/components/shared/BaseSettingsDialog.d.ts +5 -2
  105. package/dist/src/ui/components/shared/BaseSettingsDialog.js +3 -2
  106. package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  107. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +24 -0
  108. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
  109. package/dist/src/ui/components/views/ExtensionRegistryView.d.ts +1 -2
  110. package/dist/src/ui/constants/tips.js +1 -1
  111. package/dist/src/ui/constants/tips.js.map +1 -1
  112. package/dist/src/ui/constants.d.ts +4 -0
  113. package/dist/src/ui/constants.js +4 -0
  114. package/dist/src/ui/constants.js.map +1 -1
  115. package/dist/src/ui/contexts/SettingsContext.js +2 -1
  116. package/dist/src/ui/contexts/SettingsContext.js.map +1 -1
  117. package/dist/src/ui/contexts/UIStateContext.d.ts +0 -2
  118. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  119. package/dist/src/ui/contexts/VimModeContext.d.ts +1 -3
  120. package/dist/src/ui/contexts/VimModeContext.js +7 -16
  121. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  122. package/dist/src/ui/hooks/toolMapping.js +1 -0
  123. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  124. package/dist/src/ui/hooks/useGeminiStream.js +16 -13
  125. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  126. package/dist/src/ui/hooks/useGeminiStream.test.js +31 -2
  127. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  128. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  129. package/dist/src/ui/hooks/useLoadingIndicator.js +1 -1
  130. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  131. package/dist/src/ui/hooks/useTerminalTheme.js +6 -3
  132. package/dist/src/ui/hooks/useTerminalTheme.js.map +1 -1
  133. package/dist/src/ui/hooks/useTerminalTheme.test.js +19 -0
  134. package/dist/src/ui/hooks/useTerminalTheme.test.js.map +1 -1
  135. package/dist/src/ui/hooks/useToolScheduler.js +26 -12
  136. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  137. package/dist/src/ui/hooks/useToolScheduler.test.js +101 -8
  138. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  139. package/dist/src/ui/themes/theme-manager.d.ts +26 -4
  140. package/dist/src/ui/themes/theme-manager.js +40 -7
  141. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  142. package/dist/src/ui/themes/theme-manager.test.js +2 -1
  143. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  144. package/dist/src/ui/types.d.ts +3 -17
  145. package/dist/src/ui/types.js +0 -1
  146. package/dist/src/ui/types.js.map +1 -1
  147. package/dist/src/ui/utils/commandUtils.d.ts +6 -2
  148. package/dist/src/ui/utils/commandUtils.js +12 -5
  149. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  150. package/dist/src/ui/utils/commandUtils.test.js +21 -7
  151. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  152. package/dist/src/utils/agentSettings.d.ts +3 -11
  153. package/dist/src/utils/agentSettings.js +23 -81
  154. package/dist/src/utils/agentSettings.js.map +1 -1
  155. package/dist/src/{ui/components/SessionRetentionWarningDialog.test.d.ts → utils/agentSettings.test.d.ts} +0 -2
  156. package/dist/src/utils/agentSettings.test.js +111 -0
  157. package/dist/src/utils/agentSettings.test.js.map +1 -0
  158. package/dist/src/utils/dialogScopeUtils.d.ts +6 -2
  159. package/dist/src/utils/dialogScopeUtils.js +3 -3
  160. package/dist/src/utils/dialogScopeUtils.js.map +1 -1
  161. package/dist/src/utils/dialogScopeUtils.test.js +5 -5
  162. package/dist/src/utils/dialogScopeUtils.test.js.map +1 -1
  163. package/dist/src/utils/featureToggleUtils.d.ts +55 -0
  164. package/dist/src/utils/featureToggleUtils.js +95 -0
  165. package/dist/src/utils/featureToggleUtils.js.map +1 -0
  166. package/dist/src/utils/featureToggleUtils.test.d.ts +6 -0
  167. package/dist/src/utils/featureToggleUtils.test.js +126 -0
  168. package/dist/src/utils/featureToggleUtils.test.js.map +1 -0
  169. package/dist/src/utils/handleAutoUpdate.d.ts +7 -0
  170. package/dist/src/utils/handleAutoUpdate.js +41 -0
  171. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  172. package/dist/src/utils/handleAutoUpdate.test.js +52 -1
  173. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  174. package/dist/src/utils/processUtils.js +2 -0
  175. package/dist/src/utils/processUtils.js.map +1 -1
  176. package/dist/src/utils/processUtils.test.js +7 -1
  177. package/dist/src/utils/processUtils.test.js.map +1 -1
  178. package/dist/src/utils/sessionCleanup.js +8 -0
  179. package/dist/src/utils/sessionCleanup.js.map +1 -1
  180. package/dist/src/utils/sessionCleanup.test.js +19 -0
  181. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  182. package/dist/src/utils/settingsUtils.d.ts +18 -91
  183. package/dist/src/utils/settingsUtils.js +127 -207
  184. package/dist/src/utils/settingsUtils.js.map +1 -1
  185. package/dist/src/utils/settingsUtils.test.js +78 -264
  186. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  187. package/dist/src/utils/skillSettings.d.ts +4 -14
  188. package/dist/src/utils/skillSettings.js +32 -81
  189. package/dist/src/utils/skillSettings.js.map +1 -1
  190. package/dist/src/utils/skillSettings.test.d.ts +6 -0
  191. package/dist/src/utils/skillSettings.test.js +142 -0
  192. package/dist/src/utils/skillSettings.test.js.map +1 -0
  193. package/dist/src/zed-integration/acpResume.test.js +8 -0
  194. package/dist/src/zed-integration/acpResume.test.js.map +1 -1
  195. package/dist/src/zed-integration/commandHandler.d.ts +26 -0
  196. package/dist/src/zed-integration/commandHandler.js +102 -0
  197. package/dist/src/zed-integration/commandHandler.js.map +1 -0
  198. package/dist/src/zed-integration/commandHandler.test.d.ts +6 -0
  199. package/dist/src/zed-integration/commandHandler.test.js +25 -0
  200. package/dist/src/zed-integration/commandHandler.test.js.map +1 -0
  201. package/dist/src/zed-integration/commands/commandRegistry.d.ts +12 -0
  202. package/dist/src/zed-integration/commands/commandRegistry.js +26 -0
  203. package/dist/src/zed-integration/commands/commandRegistry.js.map +1 -0
  204. package/dist/src/zed-integration/commands/extensions.d.ts +57 -0
  205. package/dist/src/zed-integration/commands/extensions.js +320 -0
  206. package/dist/src/zed-integration/commands/extensions.js.map +1 -0
  207. package/dist/src/zed-integration/commands/init.d.ts +12 -0
  208. package/dist/src/zed-integration/commands/init.js +47 -0
  209. package/dist/src/zed-integration/commands/init.js.map +1 -0
  210. package/dist/src/zed-integration/commands/memory.d.ts +34 -0
  211. package/dist/src/zed-integration/commands/memory.js +83 -0
  212. package/dist/src/zed-integration/commands/memory.js.map +1 -0
  213. package/dist/src/zed-integration/commands/restore.d.ts +18 -0
  214. package/dist/src/zed-integration/commands/restore.js +140 -0
  215. package/dist/src/zed-integration/commands/restore.js.map +1 -0
  216. package/dist/src/zed-integration/commands/types.d.ts +31 -0
  217. package/dist/src/zed-integration/commands/types.js +7 -0
  218. package/dist/src/zed-integration/commands/types.js.map +1 -0
  219. package/dist/src/zed-integration/zedIntegration.d.ts +9 -2
  220. package/dist/src/zed-integration/zedIntegration.js +170 -8
  221. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  222. package/dist/src/zed-integration/zedIntegration.test.js +329 -2
  223. package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
  224. package/dist/tsconfig.tsbuildinfo +1 -1
  225. package/package.json +4 -4
  226. package/dist/src/ui/components/SessionRetentionWarningDialog.d.ts +0 -12
  227. package/dist/src/ui/components/SessionRetentionWarningDialog.js +0 -27
  228. package/dist/src/ui/components/SessionRetentionWarningDialog.js.map +0 -1
  229. package/dist/src/ui/components/SessionRetentionWarningDialog.test.js +0 -72
  230. package/dist/src/ui/components/SessionRetentionWarningDialog.test.js.map +0 -1
  231. package/dist/src/ui/components/views/HooksList.d.ts +0 -24
  232. package/dist/src/ui/components/views/HooksList.js +0 -28
  233. package/dist/src/ui/components/views/HooksList.js.map +0 -1
  234. package/dist/src/ui/hooks/useSessionRetentionCheck.d.ts +0 -12
  235. package/dist/src/ui/hooks/useSessionRetentionCheck.js +0 -57
  236. package/dist/src/ui/hooks/useSessionRetentionCheck.js.map +0 -1
  237. package/dist/src/ui/hooks/useSessionRetentionCheck.test.js +0 -169
  238. package/dist/src/ui/hooks/useSessionRetentionCheck.test.js.map +0 -1
  239. /package/dist/src/ui/{hooks/useSessionRetentionCheck.test.d.ts → components/HooksDialog.test.d.ts} +0 -0
@@ -26,9 +26,6 @@ export function getFlattenedSchema() {
26
26
  function clearFlattenedSchema() {
27
27
  _FLATTENED_SCHEMA = undefined;
28
28
  }
29
- /**
30
- * Get all settings grouped by category
31
- */
32
29
  export function getSettingsByCategory() {
33
30
  const categories = {};
34
31
  Object.values(getFlattenedSchema()).forEach((definition) => {
@@ -40,27 +37,18 @@ export function getSettingsByCategory() {
40
37
  });
41
38
  return categories;
42
39
  }
43
- /**
44
- * Get a setting definition by key
45
- */
46
40
  export function getSettingDefinition(key) {
47
41
  return getFlattenedSchema()[key];
48
42
  }
49
- /**
50
- * Check if a setting requires restart
51
- */
52
43
  export function requiresRestart(key) {
53
44
  return getFlattenedSchema()[key]?.requiresRestart ?? false;
54
45
  }
55
- /**
56
- * Get the default value for a setting
57
- */
58
46
  export function getDefaultValue(key) {
59
47
  return getFlattenedSchema()[key]?.default;
60
48
  }
61
49
  /**
62
50
  * Get the effective default value for a setting, checking experiment values when available.
63
- * For settings like compressionThreshold, this will return the experiment value if set,
51
+ * For settings like Context Compression Threshold, this will return the experiment value if set,
64
52
  * otherwise falls back to the schema default.
65
53
  */
66
54
  export function getEffectiveDefaultValue(key, config) {
@@ -74,72 +62,71 @@ export function getEffectiveDefaultValue(key, config) {
74
62
  }
75
63
  return getDefaultValue(key);
76
64
  }
77
- /**
78
- * Get all setting keys that require restart
79
- */
80
65
  export function getRestartRequiredSettings() {
81
66
  return Object.values(getFlattenedSchema())
82
67
  .filter((definition) => definition.requiresRestart)
83
68
  .map((definition) => definition.key);
84
69
  }
85
70
  /**
86
- * Recursively gets a value from a nested object using a key path array.
71
+ * Get restart-required setting keys that are also visible in the dialog.
72
+ * Non-dialog restart keys (e.g. parent container objects like mcpServers, tools)
73
+ * are excluded because users cannot change them through the dialog.
74
+ */
75
+ export function getDialogRestartRequiredSettings() {
76
+ return Object.values(getFlattenedSchema())
77
+ .filter((definition) => definition.requiresRestart && definition.showInDialog !== false)
78
+ .map((definition) => definition.key);
79
+ }
80
+ export function isRecord(value) {
81
+ return typeof value === 'object' && value !== null;
82
+ }
83
+ function isSettingsValue(value) {
84
+ if (value === undefined)
85
+ return true;
86
+ if (value === null)
87
+ return false;
88
+ const type = typeof value;
89
+ return (type === 'string' ||
90
+ type === 'number' ||
91
+ type === 'boolean' ||
92
+ type === 'object');
93
+ }
94
+ /**
95
+ * Gets a value from a nested object using a key path array iteratively.
87
96
  */
88
97
  export function getNestedValue(obj, path) {
89
- const [first, ...rest] = path;
90
- if (!first || !(first in obj)) {
91
- return undefined;
92
- }
93
- const value = obj[first];
94
- if (rest.length === 0) {
95
- return value;
96
- }
97
- if (value && typeof value === 'object' && value !== null) {
98
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
99
- return getNestedValue(value, rest);
98
+ let current = obj;
99
+ for (const key of path) {
100
+ if (!isRecord(current) || !(key in current)) {
101
+ return undefined;
102
+ }
103
+ current = current[key];
100
104
  }
101
- return undefined;
105
+ return current;
102
106
  }
103
107
  /**
104
- * Get the effective value for a setting, considering inheritance from higher scopes
105
- * Always returns a value (never undefined) - falls back to default if not set anywhere
108
+ * Get the effective value for a setting falling back to the default value
106
109
  */
107
- export function getEffectiveValue(key, settings, mergedSettings) {
110
+ export function getEffectiveValue(key, settings) {
108
111
  const definition = getSettingDefinition(key);
109
112
  if (!definition) {
110
113
  return undefined;
111
114
  }
112
115
  const path = key.split('.');
113
116
  // Check the current scope's settings first
114
- let value = getNestedValue(settings, path);
115
- if (value !== undefined) {
116
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
117
- return value;
118
- }
119
- // Check the merged settings for an inherited value
120
- value = getNestedValue(mergedSettings, path);
121
- if (value !== undefined) {
122
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
117
+ const value = getNestedValue(settings, path);
118
+ if (value !== undefined && isSettingsValue(value)) {
123
119
  return value;
124
120
  }
125
121
  // Return default value if no value is set anywhere
126
122
  return definition.default;
127
123
  }
128
- /**
129
- * Get all setting keys from the schema
130
- */
131
124
  export function getAllSettingKeys() {
132
125
  return Object.keys(getFlattenedSchema());
133
126
  }
134
- /**
135
- * Get settings by type
136
- */
137
127
  export function getSettingsByType(type) {
138
128
  return Object.values(getFlattenedSchema()).filter((definition) => definition.type === type);
139
129
  }
140
- /**
141
- * Get settings that require restart
142
- */
143
130
  export function getSettingsRequiringRestart() {
144
131
  return Object.values(getFlattenedSchema()).filter((definition) => definition.requiresRestart);
145
132
  }
@@ -149,20 +136,19 @@ export function getSettingsRequiringRestart() {
149
136
  export function isValidSettingKey(key) {
150
137
  return key in getFlattenedSchema();
151
138
  }
152
- /**
153
- * Get the category for a setting
154
- */
155
139
  export function getSettingCategory(key) {
156
140
  return getFlattenedSchema()[key]?.category;
157
141
  }
158
- /**
159
- * Check if a setting should be shown in the settings dialog
160
- */
161
142
  export function shouldShowInDialog(key) {
162
143
  return getFlattenedSchema()[key]?.showInDialog ?? true; // Default to true for backward compatibility
163
144
  }
145
+ export function getDialogSettingKeys() {
146
+ return Object.values(getFlattenedSchema())
147
+ .filter((definition) => definition.showInDialog !== false)
148
+ .map((definition) => definition.key);
149
+ }
164
150
  /**
165
- * Get all settings that should be shown in the dialog, grouped by category
151
+ * Get all settings that should be shown in the dialog, grouped by category like "Advanced", "General", etc.
166
152
  */
167
153
  export function getDialogSettingsByCategory() {
168
154
  const categories = {};
@@ -177,144 +163,25 @@ export function getDialogSettingsByCategory() {
177
163
  });
178
164
  return categories;
179
165
  }
180
- /**
181
- * Get settings by type that should be shown in the dialog
182
- */
183
166
  export function getDialogSettingsByType(type) {
184
167
  return Object.values(getFlattenedSchema()).filter((definition) => definition.type === type && definition.showInDialog !== false);
185
168
  }
186
- /**
187
- * Get all setting keys that should be shown in the dialog
188
- */
189
- export function getDialogSettingKeys() {
190
- return Object.values(getFlattenedSchema())
191
- .filter((definition) => definition.showInDialog !== false)
192
- .map((definition) => definition.key);
193
- }
194
- // ============================================================================
195
- // BUSINESS LOGIC UTILITIES (Higher-level utilities for setting operations)
196
- // ============================================================================
197
- /**
198
- * Get the current value for a setting in a specific scope
199
- * Always returns a value (never undefined) - falls back to default if not set anywhere
200
- */
201
- export function getSettingValue(key, settings, mergedSettings) {
202
- const definition = getSettingDefinition(key);
203
- if (!definition) {
204
- return false; // Default fallback for invalid settings
205
- }
206
- const value = getEffectiveValue(key, settings, mergedSettings);
207
- // Ensure we return a boolean value, converting from the more general type
208
- if (typeof value === 'boolean') {
209
- return value;
210
- }
211
- return false; // Final fallback
212
- }
213
- /**
214
- * Check if a setting value is modified from its default
215
- */
216
- export function isSettingModified(key, value) {
217
- const defaultValue = getDefaultValue(key);
218
- // Handle type comparison properly
219
- if (typeof defaultValue === 'boolean') {
220
- return value !== defaultValue;
221
- }
222
- // If default is not a boolean, consider it modified if value is true
223
- return value === true;
224
- }
225
- /**
226
- * Check if a setting exists in the original settings file for a scope
227
- */
228
- export function settingExistsInScope(key, scopeSettings) {
169
+ export function isInSettingsScope(key, scopeSettings) {
229
170
  const path = key.split('.');
230
171
  const value = getNestedValue(scopeSettings, path);
231
172
  return value !== undefined;
232
173
  }
233
174
  /**
234
- * Recursively sets a value in a nested object using a key path array.
235
- */
236
- function setNestedValue(obj, path, value) {
237
- const [first, ...rest] = path;
238
- if (!first) {
239
- return obj;
240
- }
241
- if (rest.length === 0) {
242
- obj[first] = value;
243
- return obj;
244
- }
245
- if (!obj[first] || typeof obj[first] !== 'object') {
246
- obj[first] = {};
247
- }
248
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
249
- setNestedValue(obj[first], rest, value);
250
- return obj;
251
- }
252
- /**
253
- * Set a setting value in the pending settings
254
- */
255
- export function setPendingSettingValue(key, value, pendingSettings) {
256
- const path = key.split('.');
257
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
258
- const newSettings = JSON.parse(JSON.stringify(pendingSettings));
259
- setNestedValue(newSettings, path, value);
260
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
261
- return newSettings;
262
- }
263
- /**
264
- * Generic setter: Set a setting value (boolean, number, string, etc.) in the pending settings
265
- */
266
- export function setPendingSettingValueAny(key, value, pendingSettings) {
267
- const path = key.split('.');
268
- const newSettings = structuredClone(pendingSettings);
269
- setNestedValue(newSettings, path, value);
270
- return newSettings;
271
- }
272
- /**
273
- * Check if any modified settings require a restart
274
- */
275
- export function hasRestartRequiredSettings(modifiedSettings) {
276
- return Array.from(modifiedSettings).some((key) => requiresRestart(key));
277
- }
278
- /**
279
- * Get the restart required settings from a set of modified settings
280
- */
281
- export function getRestartRequiredFromModified(modifiedSettings) {
282
- return Array.from(modifiedSettings).filter((key) => requiresRestart(key));
283
- }
284
- /**
285
- * Save modified settings to the appropriate scope
286
- */
287
- export function saveModifiedSettings(modifiedSettings, pendingSettings, loadedSettings, scope) {
288
- modifiedSettings.forEach((settingKey) => {
289
- const path = settingKey.split('.');
290
- const value = getNestedValue(pendingSettings, path);
291
- if (value === undefined) {
292
- return;
293
- }
294
- const existsInOriginalFile = settingExistsInScope(settingKey, loadedSettings.forScope(scope).settings);
295
- const isDefaultValue = value === getDefaultValue(settingKey);
296
- if (existsInOriginalFile || !isDefaultValue) {
297
- loadedSettings.setValue(scope, settingKey, value);
298
- }
299
- });
300
- }
301
- /**
302
- * Get the display value for a setting, showing current scope value with default change indicator
175
+ * Appends a star (*) to settings that exist in the scope
303
176
  */
304
- export function getDisplayValue(key, settings, _mergedSettings, modifiedSettings, pendingSettings) {
305
- // Prioritize pending changes if user has modified this setting
177
+ export function getDisplayValue(key, scopeSettings, _mergedSettings) {
306
178
  const definition = getSettingDefinition(key);
179
+ const existsInScope = isInSettingsScope(key, scopeSettings);
307
180
  let value;
308
- if (pendingSettings && settingExistsInScope(key, pendingSettings)) {
309
- // Show the value from the pending (unsaved) edits when it exists
310
- value = getEffectiveValue(key, pendingSettings, {});
311
- }
312
- else if (settingExistsInScope(key, settings)) {
313
- // Show the value defined at the current scope if present
314
- value = getEffectiveValue(key, settings, {});
181
+ if (existsInScope) {
182
+ value = getEffectiveValue(key, scopeSettings);
315
183
  }
316
184
  else {
317
- // Fall back to the schema default when the key is unset in this scope
318
185
  value = getDefaultValue(key);
319
186
  }
320
187
  let valueString = String(value);
@@ -322,37 +189,90 @@ export function getDisplayValue(key, settings, _mergedSettings, modifiedSettings
322
189
  const option = definition.options?.find((option) => option.value === value);
323
190
  valueString = option?.label ?? `${value}`;
324
191
  }
325
- // Check if value is different from default OR if it's in modified settings OR if there are pending changes
326
- const defaultValue = getDefaultValue(key);
327
- const isChangedFromDefault = value !== defaultValue;
328
- const isInModifiedSettings = modifiedSettings.has(key);
329
- // Mark as modified if setting exists in current scope OR is in modified settings
330
- if (settingExistsInScope(key, settings) || isInModifiedSettings) {
331
- return `${valueString}*`; // * indicates setting is set in current scope
192
+ if (definition?.unit === '%' && typeof value === 'number') {
193
+ valueString = `${value} (${Math.round(value * 100)}%)`;
194
+ }
195
+ else if (definition?.unit) {
196
+ valueString = `${valueString}${definition.unit}`;
332
197
  }
333
- if (isChangedFromDefault || isInModifiedSettings) {
334
- return `${valueString}*`; // * indicates changed from default value
198
+ if (existsInScope) {
199
+ return `${valueString}*`;
335
200
  }
336
201
  return valueString;
337
202
  }
338
- /**
339
- * Check if a setting doesn't exist in current scope (should be greyed out)
340
- */
341
- export function isDefaultValue(key, settings) {
342
- return !settingExistsInScope(key, settings);
203
+ /**Utilities for parsing Settings that can be inline edited by the user typing out values */
204
+ function tryParseJsonStringArray(input) {
205
+ try {
206
+ const parsed = JSON.parse(input);
207
+ if (Array.isArray(parsed) &&
208
+ parsed.every((item) => typeof item === 'string')) {
209
+ return parsed;
210
+ }
211
+ return null;
212
+ }
213
+ catch {
214
+ return null;
215
+ }
343
216
  }
344
- /**
345
- * Check if a setting value is inherited (not set at current scope)
346
- */
347
- export function isValueInherited(key, settings, _mergedSettings) {
348
- return !settingExistsInScope(key, settings);
217
+ function tryParseJsonObject(input) {
218
+ try {
219
+ const parsed = JSON.parse(input);
220
+ if (isRecord(parsed) && !Array.isArray(parsed)) {
221
+ return parsed;
222
+ }
223
+ return null;
224
+ }
225
+ catch {
226
+ return null;
227
+ }
349
228
  }
350
- /**
351
- * Get the effective value for display, considering inheritance
352
- * Always returns a boolean value (never undefined)
353
- */
354
- export function getEffectiveDisplayValue(key, settings, mergedSettings) {
355
- return getSettingValue(key, settings, mergedSettings);
229
+ function parseStringArrayValue(input) {
230
+ const trimmed = input.trim();
231
+ if (trimmed === '')
232
+ return [];
233
+ return (tryParseJsonStringArray(trimmed) ??
234
+ input
235
+ .split(',')
236
+ .map((p) => p.trim())
237
+ .filter((p) => p.length > 0));
238
+ }
239
+ function parseObjectValue(input) {
240
+ const trimmed = input.trim();
241
+ if (trimmed === '') {
242
+ return null;
243
+ }
244
+ return tryParseJsonObject(trimmed);
245
+ }
246
+ export function parseEditedValue(type, newValue) {
247
+ if (type === 'number') {
248
+ if (newValue.trim() === '') {
249
+ return null;
250
+ }
251
+ const numParsed = Number(newValue.trim());
252
+ if (Number.isNaN(numParsed)) {
253
+ return null;
254
+ }
255
+ return numParsed;
256
+ }
257
+ if (type === 'array') {
258
+ return parseStringArrayValue(newValue);
259
+ }
260
+ if (type === 'object') {
261
+ return parseObjectValue(newValue);
262
+ }
263
+ return newValue;
264
+ }
265
+ export function getEditValue(type, rawValue) {
266
+ if (rawValue === undefined) {
267
+ return undefined;
268
+ }
269
+ if (type === 'array' && Array.isArray(rawValue)) {
270
+ return rawValue.join(', ');
271
+ }
272
+ if (type === 'object' && rawValue !== null && typeof rawValue === 'object') {
273
+ return JSON.stringify(rawValue);
274
+ }
275
+ return undefined;
356
276
  }
357
277
  export const TEST_ONLY = { clearFlattenedSchema };
358
278
  //# sourceMappingURL=settingsUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settingsUtils.js","sourceRoot":"","sources":["../../../src/utils/settingsUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settingsUtils.js","sourceRoot":"","sources":["../../../src/utils/settingsUtils.ts"],"names":[],"mappings":"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"}