@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.
- package/README.md +37 -2
- package/dist/package.json +3 -3
- package/dist/src/config/config.d.ts +4 -1
- package/dist/src/config/config.js +151 -54
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.d.ts +11 -2
- package/dist/src/config/settings.js +84 -23
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.d.ts +2 -0
- package/dist/src/gemini.js +177 -21
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/integration-tests/GITHUB_ACTIONS_README.md +41 -0
- package/dist/src/integration-tests/test-utils.d.ts +68 -0
- package/dist/src/integration-tests/test-utils.js +167 -0
- package/dist/src/integration-tests/test-utils.js.map +1 -0
- package/dist/src/nonInteractiveCli.js +24 -66
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/providers/IFileSystem.d.ts +42 -0
- package/dist/src/providers/IFileSystem.js +46 -0
- package/dist/src/providers/IFileSystem.js.map +1 -0
- package/dist/src/providers/providerConfigUtils.d.ts +0 -4
- package/dist/src/providers/providerConfigUtils.js +21 -52
- package/dist/src/providers/providerConfigUtils.js.map +1 -1
- package/dist/src/providers/providerManagerInstance.d.ts +6 -1
- package/dist/src/providers/providerManagerInstance.js +117 -82
- package/dist/src/providers/providerManagerInstance.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +11 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/ui/App.js +61 -48
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +2 -5
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/baseurlCommand.js +54 -9
- package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
- package/dist/src/ui/commands/diagnosticsCommand.d.ts +10 -0
- package/dist/src/ui/commands/diagnosticsCommand.js +122 -0
- package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -0
- package/dist/src/ui/commands/directoryCommand.d.ts +8 -0
- package/dist/src/ui/commands/directoryCommand.js +116 -0
- package/dist/src/ui/commands/directoryCommand.js.map +1 -0
- package/dist/src/ui/commands/ideCommand.js +101 -105
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/initCommand.js +63 -31
- package/dist/src/ui/commands/initCommand.js.map +1 -1
- package/dist/src/ui/commands/keyCommand.js +75 -11
- package/dist/src/ui/commands/keyCommand.js.map +1 -1
- package/dist/src/ui/commands/keyfileCommand.js +54 -13
- package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +2 -1
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +2 -5
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/profileCommand.d.ts +10 -0
- package/dist/src/ui/commands/profileCommand.js +592 -0
- package/dist/src/ui/commands/profileCommand.js.map +1 -0
- package/dist/src/ui/commands/providerCommand.js +46 -3
- package/dist/src/ui/commands/providerCommand.js.map +1 -1
- package/dist/src/ui/commands/setCommand.d.ts +7 -0
- package/dist/src/ui/commands/setCommand.js +431 -0
- package/dist/src/ui/commands/setCommand.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.d.ts +7 -0
- package/dist/src/ui/commands/setupGithubCommand.js +49 -0
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +1 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
- package/dist/src/ui/components/DebugProfiler.js +26 -0
- package/dist/src/ui/components/DebugProfiler.js.map +1 -0
- package/dist/src/ui/components/Footer.d.ts +1 -0
- package/dist/src/ui/components/Footer.js +5 -4
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +2 -1
- package/dist/src/ui/components/IDEContextDetailDisplay.js +3 -3
- package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +123 -12
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadProfileDialog.d.ts +13 -0
- package/dist/src/ui/components/LoadProfileDialog.js +57 -0
- package/dist/src/ui/components/LoadProfileDialog.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
- package/dist/src/ui/components/PrepareLabel.js +16 -0
- package/dist/src/ui/components/PrepareLabel.js.map +1 -0
- package/dist/src/ui/components/ProviderModelDialog.js +75 -28
- package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
- package/dist/src/ui/components/SecureKeyInput.d.ts +15 -0
- package/dist/src/ui/components/SecureKeyInput.js +58 -0
- package/dist/src/ui/components/SecureKeyInput.js.map +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -4
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +4 -1
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +9 -14
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/containers/SessionController.js +14 -15
- package/dist/src/ui/containers/SessionController.js.map +1 -1
- package/dist/src/ui/editors/editorSettingsManager.js +2 -0
- package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +56 -48
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +13 -3
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +9 -0
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
- package/dist/src/ui/hooks/useCompletion.js +7 -407
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +61 -10
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +27 -0
- package/dist/src/ui/hooks/useLoadProfileDialog.js +138 -0
- package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +54 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
- package/dist/src/ui/hooks/useShellHistory.js +30 -7
- package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +24 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +451 -0
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
- package/dist/src/ui/reducers/appReducer.d.ts +3 -2
- package/dist/src/ui/reducers/appReducer.js +1 -0
- package/dist/src/ui/reducers/appReducer.js.map +1 -1
- package/dist/src/ui/utils/renderLoopDetector.js +3 -3
- package/dist/src/ui/utils/renderLoopDetector.js.map +1 -1
- package/dist/src/ui/utils/secureInputHandler.d.ts +46 -0
- package/dist/src/ui/utils/secureInputHandler.js +128 -0
- package/dist/src/ui/utils/secureInputHandler.js.map +1 -0
- package/dist/src/ui/utils/updateCheck.js +57 -12
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/gitUtils.d.ts +10 -0
- package/dist/src/utils/gitUtils.js +24 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/handleAutoUpdate.d.ts +2 -1
- package/dist/src/utils/handleAutoUpdate.js +8 -4
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
- package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
- package/dist/src/utils/sandbox.d.ts +2 -2
- package/dist/src/utils/sandbox.js +35 -11
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/spawnWrapper.d.ts +7 -0
- package/dist/src/utils/spawnWrapper.js +8 -0
- package/dist/src/utils/spawnWrapper.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
- package/dist/src/validateNonInterActiveAuth.js +31 -5
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/providers/enhanceConfigWithProviders.d.ts +0 -12
- package/dist/src/providers/enhanceConfigWithProviders.js +0 -16
- 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
|
46
|
-
|
47
|
-
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,IAAI,EAAE,UAAU;IAChB,WAAW,EACT,iEAAiE;IACnE,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAY,EACkD,EAAE;QAChE,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,6CAA6C;YAC7C,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;YAEhE,oCAAoC;YACpC,IAAI,YAAY,KAAK,eAAe,EAAE,CAAC;gBACrC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,2BAA2B,eAAe,EAAE;iBACtD,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,eAAe,IAAI,MAAM,CAAC;YAE/C,mDAAmD;YACnD,kCAAkC;YAClC,oEAAoE;YACpE,KAAK;YAEL,mEAAmE;YACnE,eAAe,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEhD,6BAA6B;YAC7B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC5B,2CAA2C;gBAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;gBAE5D,
|
1
|
+
{"version":3,"file":"providerCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/providerCommand.ts"],"names":[],"mappings":"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"}
|
@@ -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":"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"}
|
@@ -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;
|
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,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"}
|