@vybestack/llxprt-code 0.1.15 → 0.1.16-nightly.250805.82080ee4

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 (163) hide show
  1. package/README.md +37 -2
  2. package/dist/package.json +3 -3
  3. package/dist/src/config/config.d.ts +4 -1
  4. package/dist/src/config/config.js +151 -54
  5. package/dist/src/config/config.js.map +1 -1
  6. package/dist/src/config/settings.d.ts +11 -2
  7. package/dist/src/config/settings.js +84 -23
  8. package/dist/src/config/settings.js.map +1 -1
  9. package/dist/src/gemini.d.ts +2 -0
  10. package/dist/src/gemini.js +177 -21
  11. package/dist/src/gemini.js.map +1 -1
  12. package/dist/src/generated/git-commit.d.ts +1 -1
  13. package/dist/src/generated/git-commit.js +1 -1
  14. package/dist/src/generated/git-commit.js.map +1 -1
  15. package/dist/src/integration-tests/GITHUB_ACTIONS_README.md +41 -0
  16. package/dist/src/integration-tests/test-utils.d.ts +68 -0
  17. package/dist/src/integration-tests/test-utils.js +167 -0
  18. package/dist/src/integration-tests/test-utils.js.map +1 -0
  19. package/dist/src/nonInteractiveCli.js +24 -66
  20. package/dist/src/nonInteractiveCli.js.map +1 -1
  21. package/dist/src/providers/IFileSystem.d.ts +42 -0
  22. package/dist/src/providers/IFileSystem.js +46 -0
  23. package/dist/src/providers/IFileSystem.js.map +1 -0
  24. package/dist/src/providers/providerConfigUtils.d.ts +0 -4
  25. package/dist/src/providers/providerConfigUtils.js +21 -52
  26. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  27. package/dist/src/providers/providerManagerInstance.d.ts +6 -1
  28. package/dist/src/providers/providerManagerInstance.js +117 -82
  29. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  30. package/dist/src/services/BuiltinCommandLoader.js +11 -0
  31. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  32. package/dist/src/ui/App.js +61 -48
  33. package/dist/src/ui/App.js.map +1 -1
  34. package/dist/src/ui/commands/aboutCommand.js +2 -5
  35. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  36. package/dist/src/ui/commands/baseurlCommand.js +54 -9
  37. package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
  38. package/dist/src/ui/commands/diagnosticsCommand.d.ts +10 -0
  39. package/dist/src/ui/commands/diagnosticsCommand.js +122 -0
  40. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -0
  41. package/dist/src/ui/commands/directoryCommand.d.ts +8 -0
  42. package/dist/src/ui/commands/directoryCommand.js +116 -0
  43. package/dist/src/ui/commands/directoryCommand.js.map +1 -0
  44. package/dist/src/ui/commands/ideCommand.js +101 -105
  45. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  46. package/dist/src/ui/commands/initCommand.js +63 -31
  47. package/dist/src/ui/commands/initCommand.js.map +1 -1
  48. package/dist/src/ui/commands/keyCommand.js +75 -11
  49. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  50. package/dist/src/ui/commands/keyfileCommand.js +54 -13
  51. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  52. package/dist/src/ui/commands/memoryCommand.js +2 -1
  53. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  54. package/dist/src/ui/commands/modelCommand.js +2 -5
  55. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  56. package/dist/src/ui/commands/profileCommand.d.ts +10 -0
  57. package/dist/src/ui/commands/profileCommand.js +592 -0
  58. package/dist/src/ui/commands/profileCommand.js.map +1 -0
  59. package/dist/src/ui/commands/providerCommand.js +46 -3
  60. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  61. package/dist/src/ui/commands/setCommand.d.ts +7 -0
  62. package/dist/src/ui/commands/setCommand.js +431 -0
  63. package/dist/src/ui/commands/setCommand.js.map +1 -0
  64. package/dist/src/ui/commands/setupGithubCommand.d.ts +7 -0
  65. package/dist/src/ui/commands/setupGithubCommand.js +49 -0
  66. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
  67. package/dist/src/ui/commands/types.d.ts +1 -1
  68. package/dist/src/ui/commands/types.js.map +1 -1
  69. package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
  70. package/dist/src/ui/components/DebugProfiler.js +26 -0
  71. package/dist/src/ui/components/DebugProfiler.js.map +1 -0
  72. package/dist/src/ui/components/Footer.d.ts +1 -0
  73. package/dist/src/ui/components/Footer.js +5 -4
  74. package/dist/src/ui/components/Footer.js.map +1 -1
  75. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +2 -1
  76. package/dist/src/ui/components/IDEContextDetailDisplay.js +3 -3
  77. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
  78. package/dist/src/ui/components/InputPrompt.js +123 -12
  79. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  80. package/dist/src/ui/components/LoadProfileDialog.d.ts +13 -0
  81. package/dist/src/ui/components/LoadProfileDialog.js +57 -0
  82. package/dist/src/ui/components/LoadProfileDialog.js.map +1 -0
  83. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  84. package/dist/src/ui/components/PrepareLabel.js +16 -0
  85. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  86. package/dist/src/ui/components/ProviderModelDialog.js +75 -28
  87. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  88. package/dist/src/ui/components/SecureKeyInput.d.ts +15 -0
  89. package/dist/src/ui/components/SecureKeyInput.js +58 -0
  90. package/dist/src/ui/components/SecureKeyInput.js.map +1 -0
  91. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  92. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  93. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  94. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -4
  95. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  96. package/dist/src/ui/components/messages/UserMessage.js +4 -1
  97. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  98. package/dist/src/ui/components/shared/text-buffer.js +9 -14
  99. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  100. package/dist/src/ui/containers/SessionController.js +14 -15
  101. package/dist/src/ui/containers/SessionController.js.map +1 -1
  102. package/dist/src/ui/editors/editorSettingsManager.js +2 -0
  103. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
  104. package/dist/src/ui/hooks/atCommandProcessor.js +56 -48
  105. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  106. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  107. package/dist/src/ui/hooks/slashCommandProcessor.js +13 -3
  108. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  109. package/dist/src/ui/hooks/useAuthCommand.js +9 -0
  110. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  111. package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
  112. package/dist/src/ui/hooks/useCompletion.js +7 -407
  113. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  114. package/dist/src/ui/hooks/useGeminiStream.js +61 -10
  115. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  116. package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +27 -0
  117. package/dist/src/ui/hooks/useLoadProfileDialog.js +138 -0
  118. package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -0
  119. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  120. package/dist/src/ui/hooks/useReverseSearchCompletion.js +54 -0
  121. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  122. package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
  123. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  124. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  125. package/dist/src/ui/hooks/useSlashCompletion.d.ts +24 -0
  126. package/dist/src/ui/hooks/useSlashCompletion.js +451 -0
  127. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  128. package/dist/src/ui/reducers/appReducer.d.ts +3 -2
  129. package/dist/src/ui/reducers/appReducer.js +1 -0
  130. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  131. package/dist/src/ui/utils/renderLoopDetector.js +3 -3
  132. package/dist/src/ui/utils/renderLoopDetector.js.map +1 -1
  133. package/dist/src/ui/utils/secureInputHandler.d.ts +46 -0
  134. package/dist/src/ui/utils/secureInputHandler.js +128 -0
  135. package/dist/src/ui/utils/secureInputHandler.js.map +1 -0
  136. package/dist/src/ui/utils/updateCheck.js +57 -12
  137. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  138. package/dist/src/utils/gitUtils.d.ts +10 -0
  139. package/dist/src/utils/gitUtils.js +24 -0
  140. package/dist/src/utils/gitUtils.js.map +1 -0
  141. package/dist/src/utils/handleAutoUpdate.d.ts +2 -1
  142. package/dist/src/utils/handleAutoUpdate.js +8 -4
  143. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  144. package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
  145. package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
  146. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
  147. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
  148. package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
  149. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
  150. package/dist/src/utils/sandbox.d.ts +2 -2
  151. package/dist/src/utils/sandbox.js +35 -11
  152. package/dist/src/utils/sandbox.js.map +1 -1
  153. package/dist/src/utils/spawnWrapper.d.ts +7 -0
  154. package/dist/src/utils/spawnWrapper.js +8 -0
  155. package/dist/src/utils/spawnWrapper.js.map +1 -0
  156. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  157. package/dist/src/validateNonInterActiveAuth.js +31 -5
  158. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  159. package/dist/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +3 -3
  161. package/dist/src/providers/enhanceConfigWithProviders.d.ts +0 -12
  162. package/dist/src/providers/enhanceConfigWithProviders.js +0 -16
  163. package/dist/src/providers/enhanceConfigWithProviders.js.map +0 -1
@@ -40,11 +40,54 @@ export const providerCommand = {
40
40
  providerManager.setActiveProvider(providerName);
41
41
  // Update config if available
42
42
  if (context.services.config) {
43
+ // Clear ephemeral settings when switching providers
44
+ // Get current ephemeral settings and clear them one by one
45
+ const ephemeralKeys = [
46
+ 'auth-key',
47
+ 'auth-keyfile',
48
+ 'base-url',
49
+ 'context-limit',
50
+ 'compression-threshold',
51
+ 'tool-format',
52
+ 'api-version',
53
+ 'custom-headers',
54
+ ];
55
+ for (const key of ephemeralKeys) {
56
+ context.services.config.setEphemeralSetting(key, undefined);
57
+ }
58
+ // Clear model parameters on the new provider
59
+ const newProvider = providerManager.getActiveProvider();
60
+ if (newProvider.setModelParams) {
61
+ newProvider.setModelParams({});
62
+ }
43
63
  // Ensure provider manager is set on config
44
64
  context.services.config.setProviderManager(providerManager);
45
- // Update model to match the new provider's default
46
- const newModel = providerManager.getActiveProvider().getCurrentModel?.() || '';
47
- context.services.config.setModel(newModel);
65
+ // Update the provider in config
66
+ context.services.config.setProvider(providerName);
67
+ // Get the active provider and ensure it uses a valid default model
68
+ const activeProvider = providerManager.getActiveProvider();
69
+ // Determine the correct default model for this provider
70
+ let defaultModel = '';
71
+ switch (providerName) {
72
+ case 'gemini':
73
+ defaultModel = 'gemini-2.5-pro';
74
+ break;
75
+ case 'openai':
76
+ defaultModel = 'gpt-4.1';
77
+ break;
78
+ case 'anthropic':
79
+ defaultModel = 'claude-sonnet-4-latest';
80
+ break;
81
+ default:
82
+ defaultModel = activeProvider.getCurrentModel?.() || '';
83
+ }
84
+ // Set the model on both the provider and config
85
+ if (defaultModel) {
86
+ if (activeProvider.setModel) {
87
+ activeProvider.setModel(defaultModel);
88
+ }
89
+ context.services.config.setModel(defaultModel);
90
+ }
48
91
  // Clear conversation history BEFORE switching to prevent tool call ID mismatches
49
92
  const geminiClient = context.services.config.getGeminiClient();
50
93
  if (geminiClient && geminiClient.isInitialized()) {
@@ -1 +1 @@
1
- {"version":3,"file":"providerCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/providerCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providerCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/providerCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SlashCommand } from './types.js';
7
+ export declare const setCommand: SlashCommand;
@@ -0,0 +1,431 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CommandKind, } from './types.js';
7
+ // Subcommand for /set unset - removes ephemeral settings or model parameters
8
+ const unsetCommand = {
9
+ name: 'unset',
10
+ description: 'remove an ephemeral setting or model parameter',
11
+ kind: CommandKind.BUILT_IN,
12
+ action: async (context, args) => {
13
+ const parts = args?.trim().split(/\s+/);
14
+ if (!parts || parts.length === 0 || !parts[0]) {
15
+ return {
16
+ type: 'message',
17
+ messageType: 'error',
18
+ content: 'Usage: /set unset <key> [subkey]\nExamples:\n /set unset context-limit\n /set unset custom-headers Authorization\n /set unset modelparam max_tokens',
19
+ };
20
+ }
21
+ const key = parts[0];
22
+ const subkey = parts[1];
23
+ // Get the config
24
+ const config = context.services.config;
25
+ if (!config) {
26
+ return {
27
+ type: 'message',
28
+ messageType: 'error',
29
+ content: 'No configuration available',
30
+ };
31
+ }
32
+ // Handle unset for model parameters
33
+ if (key === 'modelparam' && subkey) {
34
+ const providerManager = config.getProviderManager();
35
+ const activeProvider = providerManager?.getActiveProvider();
36
+ if (!activeProvider) {
37
+ return {
38
+ type: 'message',
39
+ messageType: 'error',
40
+ content: 'No active provider',
41
+ };
42
+ }
43
+ if ('getModelParams' in activeProvider &&
44
+ typeof activeProvider.getModelParams === 'function') {
45
+ const modelParams = activeProvider.getModelParams();
46
+ if (!modelParams || !(subkey in modelParams)) {
47
+ return {
48
+ type: 'message',
49
+ messageType: 'error',
50
+ content: `Model parameter '${subkey}' is not set`,
51
+ };
52
+ }
53
+ if ('setModelParams' in activeProvider &&
54
+ typeof activeProvider.setModelParams === 'function') {
55
+ activeProvider.setModelParams({ [subkey]: undefined });
56
+ return {
57
+ type: 'message',
58
+ messageType: 'info',
59
+ content: `Model parameter '${subkey}' has been removed`,
60
+ };
61
+ }
62
+ }
63
+ return {
64
+ type: 'message',
65
+ messageType: 'error',
66
+ content: 'Provider does not support model parameters',
67
+ };
68
+ }
69
+ // Handle nested unset for custom-headers
70
+ if (key === 'custom-headers' && subkey) {
71
+ const currentHeaders = config.getEphemeralSetting('custom-headers');
72
+ if (!currentHeaders || !(subkey in currentHeaders)) {
73
+ return {
74
+ type: 'message',
75
+ messageType: 'error',
76
+ content: `Custom header '${subkey}' is not set`,
77
+ };
78
+ }
79
+ // Remove the specific header
80
+ const updatedHeaders = { ...currentHeaders };
81
+ delete updatedHeaders[subkey];
82
+ // If no headers left, remove the entire setting
83
+ if (Object.keys(updatedHeaders).length === 0) {
84
+ config.setEphemeralSetting('custom-headers', undefined);
85
+ return {
86
+ type: 'message',
87
+ messageType: 'info',
88
+ content: `Removed custom header '${subkey}' and cleared custom-headers setting`,
89
+ };
90
+ }
91
+ else {
92
+ config.setEphemeralSetting('custom-headers', updatedHeaders);
93
+ return {
94
+ type: 'message',
95
+ messageType: 'info',
96
+ content: `Removed custom header '${subkey}'`,
97
+ };
98
+ }
99
+ }
100
+ // Handle regular unset (non-nested)
101
+ if (subkey) {
102
+ return {
103
+ type: 'message',
104
+ messageType: 'error',
105
+ content: `Setting '${key}' does not support nested unset. Use: /set unset ${key}`,
106
+ };
107
+ }
108
+ // Check if the setting exists
109
+ const currentValue = config.getEphemeralSetting(key);
110
+ if (currentValue === undefined) {
111
+ return {
112
+ type: 'message',
113
+ messageType: 'error',
114
+ content: `Ephemeral setting '${key}' is not set`,
115
+ };
116
+ }
117
+ // Clear the ephemeral setting
118
+ config.setEphemeralSetting(key, undefined);
119
+ // Special handling for context-limit and compression-threshold
120
+ if (key === 'context-limit' || key === 'compression-threshold') {
121
+ const geminiClient = config.getGeminiClient();
122
+ if (geminiClient) {
123
+ // Reset to defaults by passing undefined
124
+ geminiClient.setCompressionSettings(key === 'compression-threshold'
125
+ ? undefined
126
+ : config.getEphemeralSetting('compression-threshold'), key === 'context-limit'
127
+ ? undefined
128
+ : config.getEphemeralSetting('context-limit'));
129
+ }
130
+ }
131
+ return {
132
+ type: 'message',
133
+ messageType: 'info',
134
+ content: `Ephemeral setting '${key}' has been removed`,
135
+ };
136
+ },
137
+ completion: async (_context, partialArg) => {
138
+ // Get all current ephemeral settings
139
+ const config = _context.services.config;
140
+ if (!config)
141
+ return [];
142
+ const ephemeralSettings = config.getEphemeralSettings();
143
+ const ephemeralKeys = Object.keys(ephemeralSettings).filter((key) => ephemeralSettings[key] !== undefined);
144
+ // Add 'modelparam' as a completion option
145
+ const specialKeys = ['modelparam'];
146
+ const allKeys = [...ephemeralKeys, ...specialKeys];
147
+ if (partialArg) {
148
+ const parts = partialArg.split(/\s+/);
149
+ // If user typed "modelparam " (with space), offer model param names
150
+ if (parts.length === 2 && parts[0] === 'modelparam') {
151
+ const providerManager = config.getProviderManager();
152
+ const activeProvider = providerManager?.getActiveProvider();
153
+ if (activeProvider &&
154
+ 'getModelParams' in activeProvider &&
155
+ typeof activeProvider.getModelParams === 'function') {
156
+ const modelParams = activeProvider.getModelParams();
157
+ if (modelParams) {
158
+ const paramNames = Object.keys(modelParams);
159
+ if (parts[1]) {
160
+ return paramNames.filter((name) => name.startsWith(parts[1]));
161
+ }
162
+ return paramNames;
163
+ }
164
+ }
165
+ return [];
166
+ }
167
+ // If user typed "custom-headers " (with space), offer header names
168
+ if (parts.length === 2 && parts[0] === 'custom-headers') {
169
+ const headers = ephemeralSettings['custom-headers'];
170
+ if (headers) {
171
+ const headerNames = Object.keys(headers);
172
+ if (parts[1]) {
173
+ return headerNames.filter((name) => name.startsWith(parts[1]));
174
+ }
175
+ return headerNames;
176
+ }
177
+ return [];
178
+ }
179
+ // Otherwise, complete the setting key
180
+ return allKeys.filter((key) => key.startsWith(parts[0]));
181
+ }
182
+ return allKeys;
183
+ },
184
+ };
185
+ // Subcommand for /set modelparam
186
+ const modelParamCommand = {
187
+ name: 'modelparam',
188
+ description: 'set model parameters like temperature, max_tokens, etc',
189
+ kind: CommandKind.BUILT_IN,
190
+ action: async (context, args) => {
191
+ const parts = args?.trim().split(/\s+/);
192
+ if (!parts || parts.length < 2) {
193
+ return {
194
+ type: 'message',
195
+ messageType: 'error',
196
+ content: 'Usage: /set modelparam <key> <value>\nExample: /set modelparam temperature 0.7',
197
+ };
198
+ }
199
+ const key = parts[0];
200
+ const value = parts.slice(1).join(' ');
201
+ // Get provider manager from config
202
+ const config = context.services.config;
203
+ if (!config) {
204
+ return {
205
+ type: 'message',
206
+ messageType: 'error',
207
+ content: 'No configuration available',
208
+ };
209
+ }
210
+ const providerManager = config.getProviderManager();
211
+ if (!providerManager) {
212
+ return {
213
+ type: 'message',
214
+ messageType: 'error',
215
+ content: 'Provider manager not initialized',
216
+ };
217
+ }
218
+ const activeProvider = providerManager.getActiveProvider();
219
+ if (!activeProvider) {
220
+ return {
221
+ type: 'message',
222
+ messageType: 'error',
223
+ content: 'No active provider',
224
+ };
225
+ }
226
+ // Check if provider supports setModelParams
227
+ if (!('setModelParams' in activeProvider) ||
228
+ typeof activeProvider.setModelParams !== 'function') {
229
+ return {
230
+ type: 'message',
231
+ messageType: 'error',
232
+ content: `Provider '${activeProvider.name}' does not support model parameters`,
233
+ };
234
+ }
235
+ // Parse the value
236
+ const parsedValue = parseValue(value);
237
+ // Set the model parameter
238
+ try {
239
+ await activeProvider.setModelParams({ [key]: parsedValue });
240
+ return {
241
+ type: 'message',
242
+ messageType: 'info',
243
+ content: `Model parameter '${key}' set to ${JSON.stringify(parsedValue)} (use /profile save to persist)`,
244
+ };
245
+ }
246
+ catch (error) {
247
+ return {
248
+ type: 'message',
249
+ messageType: 'error',
250
+ content: `Failed to set model parameter: ${error instanceof Error ? error.message : String(error)}`,
251
+ };
252
+ }
253
+ },
254
+ completion: async (_context, partialArg) => {
255
+ // Common model parameters across providers
256
+ const commonParams = [
257
+ 'temperature',
258
+ 'max_tokens',
259
+ 'maxOutputTokens',
260
+ 'top_p',
261
+ 'top_k',
262
+ 'presence_penalty',
263
+ 'frequency_penalty',
264
+ 'stop_sequences',
265
+ 'seed',
266
+ 'enable_thinking',
267
+ ];
268
+ // If user has typed part of a parameter name, filter suggestions
269
+ if (partialArg) {
270
+ const parts = partialArg.split(/\s+/);
271
+ if (parts.length === 1) {
272
+ // Still typing the parameter name
273
+ return commonParams.filter((param) => param.startsWith(parts[0]));
274
+ }
275
+ }
276
+ return [];
277
+ },
278
+ };
279
+ /**
280
+ * Implementation for the /set command that handles both:
281
+ * - /set modelparam <key> <value>
282
+ * - /set <ephemeral-key> <value>
283
+ */
284
+ // Help text for ephemeral settings - these are session-only and saved only via profiles
285
+ const ephemeralSettingHelp = {
286
+ 'context-limit': 'Maximum number of tokens for the context window (e.g., 100000)',
287
+ 'compression-threshold': 'Fraction of context limit that triggers compression (0.0-1.0, e.g., 0.7 for 70%)',
288
+ 'base-url': 'Base URL for API requests',
289
+ 'tool-format': 'Tool format override for the provider',
290
+ 'api-version': 'API version to use',
291
+ 'custom-headers': 'Custom HTTP headers as JSON object',
292
+ };
293
+ export const setCommand = {
294
+ name: 'set',
295
+ description: 'set model parameters or ephemeral settings',
296
+ kind: CommandKind.BUILT_IN,
297
+ subCommands: [modelParamCommand, unsetCommand],
298
+ action: async (context, args) => {
299
+ // This handles direct ephemeral settings: /set <ephemeral-key> <value>
300
+ const trimmedArgs = args?.trim();
301
+ if (!trimmedArgs) {
302
+ return {
303
+ type: 'message',
304
+ messageType: 'error',
305
+ content: 'Usage: /set <ephemeral-key> <value>\nExample: /set context-limit 100000\n\nFor model parameters use: /set modelparam <key> <value>',
306
+ };
307
+ }
308
+ const parts = trimmedArgs.split(/\s+/);
309
+ const key = parts[0];
310
+ // If only key is provided, show help for that key
311
+ if (parts.length === 1) {
312
+ if (ephemeralSettingHelp[key]) {
313
+ return {
314
+ type: 'message',
315
+ messageType: 'info',
316
+ content: `${key}: ${ephemeralSettingHelp[key]}`,
317
+ };
318
+ }
319
+ return {
320
+ type: 'message',
321
+ messageType: 'error',
322
+ content: `Usage: /set ${key} <value>\n\nValid ephemeral keys:\n${Object.entries(ephemeralSettingHelp)
323
+ .map(([k, v]) => ` ${k}: ${v}`)
324
+ .join('\n')}`,
325
+ };
326
+ }
327
+ const value = parts.slice(1).join(' '); // Join remaining parts as value
328
+ // List of valid ephemeral settings from the specification
329
+ const validEphemeralKeys = Object.keys(ephemeralSettingHelp);
330
+ // Check if it's a valid ephemeral key
331
+ if (!validEphemeralKeys.includes(key)) {
332
+ return {
333
+ type: 'message',
334
+ messageType: 'error',
335
+ content: `Invalid setting key: ${key}. Valid keys are: ${validEphemeralKeys.join(', ')}`,
336
+ };
337
+ }
338
+ // Parse the value
339
+ const parsedValue = parseValue(value);
340
+ // Validate specific settings
341
+ if (key === 'compression-threshold') {
342
+ const numValue = parsedValue;
343
+ if (typeof numValue !== 'number' || numValue <= 0 || numValue > 1) {
344
+ return {
345
+ type: 'message',
346
+ messageType: 'error',
347
+ content: `compression-threshold must be a decimal between 0 and 1 (e.g., 0.7 for 70%)`,
348
+ };
349
+ }
350
+ }
351
+ if (key === 'context-limit') {
352
+ const numValue = parsedValue;
353
+ if (typeof numValue !== 'number' ||
354
+ numValue <= 0 ||
355
+ !Number.isInteger(numValue)) {
356
+ return {
357
+ type: 'message',
358
+ messageType: 'error',
359
+ content: `context-limit must be a positive integer (e.g., 100000)`,
360
+ };
361
+ }
362
+ }
363
+ // Get the config to apply settings
364
+ const config = context.services.config;
365
+ if (!config) {
366
+ return {
367
+ type: 'message',
368
+ messageType: 'error',
369
+ content: 'No configuration available',
370
+ };
371
+ }
372
+ // Apply settings to GeminiClient for context-limit and compression-threshold
373
+ if (key === 'context-limit' || key === 'compression-threshold') {
374
+ const geminiClient = config.getGeminiClient();
375
+ if (geminiClient) {
376
+ const contextLimit = key === 'context-limit' ? parsedValue : undefined;
377
+ const compressionThreshold = key === 'compression-threshold' ? parsedValue : undefined;
378
+ geminiClient.setCompressionSettings(compressionThreshold, contextLimit);
379
+ }
380
+ }
381
+ // Store ephemeral settings in memory only
382
+ // They will be saved only when user explicitly saves a profile
383
+ config.setEphemeralSetting(key, parsedValue);
384
+ return {
385
+ type: 'message',
386
+ messageType: 'info',
387
+ content: `Ephemeral setting '${key}' set to ${JSON.stringify(parsedValue)} (session only, use /profile save to persist)`,
388
+ };
389
+ },
390
+ completion: async (_context, partialArg) => {
391
+ // Provide completions for ephemeral settings
392
+ const ephemeralKeys = Object.keys(ephemeralSettingHelp);
393
+ if (partialArg) {
394
+ const parts = partialArg.split(/\s+/);
395
+ if (parts.length === 1) {
396
+ // Still typing the key
397
+ return ephemeralKeys.filter((key) => key.startsWith(parts[0]));
398
+ }
399
+ }
400
+ return ephemeralKeys;
401
+ },
402
+ };
403
+ /**
404
+ * Parse a string value into the appropriate type.
405
+ * Handles numbers, booleans, and JSON objects/arrays.
406
+ */
407
+ function parseValue(value) {
408
+ // Try to parse as number
409
+ if (/^-?\d+(\.\d+)?$/.test(value)) {
410
+ const num = Number(value);
411
+ if (!isNaN(num)) {
412
+ return num;
413
+ }
414
+ }
415
+ // Try to parse as boolean
416
+ if (value.toLowerCase() === 'true') {
417
+ return true;
418
+ }
419
+ if (value.toLowerCase() === 'false') {
420
+ return false;
421
+ }
422
+ // Try to parse as JSON
423
+ try {
424
+ return JSON.parse(value);
425
+ }
426
+ catch {
427
+ // If all parsing fails, return as string
428
+ return value;
429
+ }
430
+ }
431
+ //# sourceMappingURL=setCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/setCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIL,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,6EAA6E;AAC7E,MAAM,YAAY,GAAiB;IACjC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,gDAAgD;IAC7D,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAY,EACkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EACL,wJAAwJ;aAC3J,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAExB,iBAAiB;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,GAAG,KAAK,YAAY,IAAI,MAAM,EAAE,CAAC;YACnC,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACpD,MAAM,cAAc,GAAG,eAAe,EAAE,iBAAiB,EAAE,CAAC;YAE5D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,oBAAoB;iBAC9B,CAAC;YACJ,CAAC;YAED,IACE,gBAAgB,IAAI,cAAc;gBAClC,OAAO,cAAc,CAAC,cAAc,KAAK,UAAU,EACnD,CAAC;gBACD,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC;gBACpD,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,EAAE,CAAC;oBAC7C,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,OAAO;wBACpB,OAAO,EAAE,oBAAoB,MAAM,cAAc;qBAClD,CAAC;gBACJ,CAAC;gBAED,IACE,gBAAgB,IAAI,cAAc;oBAClC,OAAO,cAAc,CAAC,cAAc,KAAK,UAAU,EACnD,CAAC;oBACD,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;oBACvD,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,MAAM;wBACnB,OAAO,EAAE,oBAAoB,MAAM,oBAAoB;qBACxD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,4CAA4C;aACtD,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,GAAG,KAAK,gBAAgB,IAAI,MAAM,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAErD,CAAC;YACd,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,IAAI,cAAc,CAAC,EAAE,CAAC;gBACnD,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,kBAAkB,MAAM,cAAc;iBAChD,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,MAAM,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;YAC7C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;YAE9B,gDAAgD;YAChD,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBACxD,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,0BAA0B,MAAM,sCAAsC;iBAChF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;gBAC7D,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,0BAA0B,MAAM,GAAG;iBAC7C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,YAAY,GAAG,oDAAoD,GAAG,EAAE;aAClF,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,sBAAsB,GAAG,cAAc;aACjD,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE3C,+DAA+D;QAC/D,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;YAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9C,IAAI,YAAY,EAAE,CAAC;gBACjB,yCAAyC;gBACzC,YAAY,CAAC,sBAAsB,CACjC,GAAG,KAAK,uBAAuB;oBAC7B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAE,MAAM,CAAC,mBAAmB,CAAC,uBAAuB,CAErC,EAClB,GAAG,KAAK,eAAe;oBACrB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAE,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAE7B,CACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,sBAAsB,GAAG,oBAAoB;SACvD,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,QAAwB,EAAE,UAAkB,EAAE,EAAE;QACjE,qCAAqC;QACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACzD,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,SAAS,CAC9C,CAAC;QAEF,0CAA0C;QAC1C,MAAM,WAAW,GAAG,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,WAAW,CAAC,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEtC,oEAAoE;YACpE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;gBACpD,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACpD,MAAM,cAAc,GAAG,eAAe,EAAE,iBAAiB,EAAE,CAAC;gBAC5D,IACE,cAAc;oBACd,gBAAgB,IAAI,cAAc;oBAClC,OAAO,cAAc,CAAC,cAAc,KAAK,UAAU,EACnD,CAAC;oBACD,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC;oBACpD,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC5C,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;4BACb,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChE,CAAC;wBACD,OAAO,UAAU,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,mEAAmE;YACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;gBACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,CAErC,CAAC;gBACd,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACb,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjE,CAAC;oBACD,OAAO,WAAW,CAAC;gBACrB,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,sCAAsC;YACtC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,iCAAiC;AACjC,MAAM,iBAAiB,GAAiB;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,wDAAwD;IACrE,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAY,EACkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EACL,gFAAgF;aACnF,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvC,mCAAmC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,kCAAkC;aAC5C,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAe,CAAC;QACxE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,oBAAoB;aAC9B,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IACE,CAAC,CAAC,gBAAgB,IAAI,cAAc,CAAC;YACrC,OAAO,cAAc,CAAC,cAAc,KAAK,UAAU,EACnD,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,aAAa,cAAc,CAAC,IAAI,qCAAqC;aAC/E,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5D,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,oBAAoB,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,iCAAiC;aACzG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACpG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,QAAwB,EAAE,UAAkB,EAAE,EAAE;QACjE,2CAA2C;QAC3C,MAAM,YAAY,GAAG;YACnB,aAAa;YACb,YAAY;YACZ,iBAAiB;YACjB,OAAO;YACP,OAAO;YACP,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,MAAM;YACN,iBAAiB;SAClB,CAAC;QAEF,iEAAiE;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,kCAAkC;gBAClC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,wFAAwF;AACxF,MAAM,oBAAoB,GAA2B;IACnD,eAAe,EACb,gEAAgE;IAClE,uBAAuB,EACrB,kFAAkF;IACpF,UAAU,EAAE,2BAA2B;IACvC,aAAa,EAAE,uCAAuC;IACtD,aAAa,EAAE,oBAAoB;IACnC,gBAAgB,EAAE,oCAAoC;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,4CAA4C;IACzD,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,WAAW,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;IAC9C,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAY,EACkB,EAAE;QAChC,uEAAuE;QACvE,MAAM,WAAW,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EACL,oIAAoI;aACvI,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAErB,kDAAkD;QAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,GAAG,GAAG,KAAK,oBAAoB,CAAC,GAAG,CAAC,EAAE;iBAChD,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,eAAe,GAAG,sCAAsC,MAAM,CAAC,OAAO,CAC7E,oBAAoB,CACrB;qBACE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;qBAC/B,IAAI,CAAC,IAAI,CAAC,EAAE;aAChB,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC;QAExE,0DAA0D;QAC1D,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE7D,sCAAsC;QACtC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,wBAAwB,GAAG,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACzF,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,6BAA6B;QAC7B,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,WAAqB,CAAC;YACvC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAClE,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,6EAA6E;iBACvF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,WAAqB,CAAC;YACvC,IACE,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,QAAQ,IAAI,CAAC;gBACb,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC3B,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,yDAAyD;iBACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;YAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;YAC9C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,GAChB,GAAG,KAAK,eAAe,CAAC,CAAC,CAAE,WAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChE,MAAM,oBAAoB,GACxB,GAAG,KAAK,uBAAuB,CAAC,CAAC,CAAE,WAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxE,YAAY,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,+DAA+D;QAC/D,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,sBAAsB,GAAG,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,+CAA+C;SACzH,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,QAAwB,EAAE,UAAkB,EAAE,EAAE;QACjE,6CAA6C;QAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAExD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,uBAAuB;gBACvB,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,yBAAyB;IACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SlashCommand } from './types.js';
7
+ export declare const setupGithubCommand: SlashCommand;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import path from 'path';
7
+ import { execSync } from 'child_process';
8
+ import { isGitHubRepository } from '../../utils/gitUtils.js';
9
+ import { CommandKind, } from './types.js';
10
+ export const setupGithubCommand = {
11
+ name: 'setup-github',
12
+ description: 'Set up GitHub Actions',
13
+ kind: CommandKind.BUILT_IN,
14
+ action: () => {
15
+ const gitRootRepo = execSync('git rev-parse --show-toplevel', {
16
+ encoding: 'utf-8',
17
+ }).trim();
18
+ if (!isGitHubRepository()) {
19
+ throw new Error('Unable to determine the Git root directory.');
20
+ }
21
+ // TODO(#5198): pin workflow versions for release controls
22
+ const version = 'main';
23
+ const workflowBaseUrl = `https://raw.githubusercontent.com/google-github-actions/run-gemini-cli/refs/heads/${version}/workflows/`;
24
+ const workflows = [
25
+ 'gemini-cli/gemini-cli.yml',
26
+ 'issue-triage/gemini-issue-automated-triage.yml',
27
+ 'issue-triage/gemini-issue-scheduled-triage.yml',
28
+ 'pr-review/gemini-pr-review.yml',
29
+ ];
30
+ const command = [
31
+ 'set -e',
32
+ `mkdir -p "${gitRootRepo}/.github/workflows"`,
33
+ ...workflows.map((workflow) => {
34
+ const fileName = path.basename(workflow);
35
+ return `curl -fsSL -o "${gitRootRepo}/.github/workflows/${fileName}" "${workflowBaseUrl}/${workflow}"`;
36
+ }),
37
+ 'echo "Workflows downloaded successfully."',
38
+ ].join(' && ');
39
+ return {
40
+ type: 'tool',
41
+ toolName: 'run_shell_command',
42
+ toolArgs: {
43
+ description: 'Setting up GitHub Actions to triage issues and review PRs with Gemini.',
44
+ command,
45
+ },
46
+ };
47
+ },
48
+ };
49
+ //# sourceMappingURL=setupGithubCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupGithubCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/setupGithubCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,WAAW,GAGZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,GAA6B,EAAE;QACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,+BAA+B,EAAE;YAC5D,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,0DAA0D;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC;QACvB,MAAM,eAAe,GAAG,qFAAqF,OAAO,aAAa,CAAC;QAElI,MAAM,SAAS,GAAG;YAChB,2BAA2B;YAC3B,gDAAgD;YAChD,gDAAgD;YAChD,gCAAgC;SACjC,CAAC;QAEF,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,aAAa,WAAW,qBAAqB;YAC7C,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzC,OAAO,kBAAkB,WAAW,sBAAsB,QAAQ,MAAM,eAAe,IAAI,QAAQ,GAAG,CAAC;YACzG,CAAC,CAAC;YACF,2CAA2C;SAC5C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACf,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,mBAAmB;YAC7B,QAAQ,EAAE;gBACR,WAAW,EACT,wEAAwE;gBAC1E,OAAO;aACR;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -91,7 +91,7 @@ export interface MessageActionReturn {
91
91
  */
92
92
  export interface OpenDialogActionReturn {
93
93
  type: 'dialog';
94
- dialog: 'help' | 'auth' | 'theme' | 'editor' | 'privacy' | 'provider' | 'providerModel';
94
+ dialog: 'help' | 'auth' | 'theme' | 'loadProfile' | 'editor' | 'privacy' | 'provider' | 'providerModel';
95
95
  }
96
96
  /**
97
97
  * The return type for a command action that results in replacing
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ui/commands/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyJH,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,wCAAyB,CAAA;AAC3B,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ui/commands/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0JH,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,wCAAyB,CAAA;AAC3B,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const DebugProfiler: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,26 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { Text, useInput } from 'ink';
8
+ import { useEffect, useRef, useState } from 'react';
9
+ import { Colors } from '../colors.js';
10
+ export const DebugProfiler = () => {
11
+ const numRenders = useRef(0);
12
+ const [showNumRenders, setShowNumRenders] = useState(false);
13
+ useEffect(() => {
14
+ numRenders.current++;
15
+ });
16
+ useInput((input, key) => {
17
+ if (key.ctrl && input === 'b') {
18
+ setShowNumRenders((prev) => !prev);
19
+ }
20
+ });
21
+ if (!showNumRenders) {
22
+ return null;
23
+ }
24
+ return (_jsxs(Text, { color: Colors.AccentYellow, children: ["Renders: ", numRenders.current, " "] }));
25
+ };
26
+ //# sourceMappingURL=DebugProfiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugProfiler.js","sourceRoot":"","sources":["../../../../src/ui/components/DebugProfiler.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,0BAAY,UAAU,CAAC,OAAO,SAAS,CACxE,CAAC;AACJ,CAAC,CAAC"}