@vybestack/llxprt-code 0.1.19-alpha → 0.1.19-gamma
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 +49 -2
- package/dist/package.json +3 -3
- package/dist/src/auth/anthropic-oauth-provider.d.ts +33 -0
- package/dist/src/auth/anthropic-oauth-provider.js +129 -0
- package/dist/src/auth/anthropic-oauth-provider.js.map +1 -0
- package/dist/src/auth/gemini-oauth-provider.d.ts +15 -0
- package/dist/src/auth/gemini-oauth-provider.js +33 -0
- package/dist/src/auth/gemini-oauth-provider.js.map +1 -0
- package/dist/src/auth/oauth-manager.d.ts +109 -0
- package/dist/src/auth/oauth-manager.js +334 -0
- package/dist/src/auth/oauth-manager.js.map +1 -0
- package/dist/src/auth/oauth-manager.spec.d.ts +6 -0
- package/dist/src/auth/oauth-manager.spec.js +523 -0
- package/dist/src/auth/oauth-manager.spec.js.map +1 -0
- package/dist/src/auth/qwen-oauth-provider.d.ts +14 -0
- package/dist/src/auth/qwen-oauth-provider.js +75 -0
- package/dist/src/auth/qwen-oauth-provider.js.map +1 -0
- package/dist/src/auth/types.d.ts +7 -0
- package/dist/src/auth/types.js +7 -0
- package/dist/src/auth/types.js.map +1 -0
- package/dist/src/config/auth.js +11 -0
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.js +52 -30
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +66 -0
- package/dist/src/config/keyBindings.js +136 -0
- package/dist/src/config/keyBindings.js.map +1 -0
- package/dist/src/config/settings.d.ts +3 -61
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +587 -0
- package/dist/src/config/settingsSchema.js +565 -0
- package/dist/src/config/settingsSchema.js.map +1 -0
- package/dist/src/gemini.js +9 -2
- 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/providers/logging/git-stats-service-impl.d.ts +19 -0
- package/dist/src/providers/logging/git-stats-service-impl.js +25 -0
- package/dist/src/providers/logging/git-stats-service-impl.js.map +1 -0
- package/dist/src/providers/logging/git-stats.d.ts +43 -0
- package/dist/src/providers/logging/git-stats.js +137 -0
- package/dist/src/providers/logging/git-stats.js.map +1 -0
- package/dist/src/providers/providerManagerInstance.d.ts +2 -0
- package/dist/src/providers/providerManagerInstance.js +49 -5
- package/dist/src/providers/providerManagerInstance.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +4 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/todo-continuation/todoContinuationService.d.ts +172 -0
- package/dist/src/services/todo-continuation/todoContinuationService.js +387 -0
- package/dist/src/services/todo-continuation/todoContinuationService.js.map +1 -0
- package/dist/src/services/todo-continuation/todoContinuationService.spec.d.ts +6 -0
- package/dist/src/services/todo-continuation/todoContinuationService.spec.js +385 -0
- package/dist/src/services/todo-continuation/todoContinuationService.spec.js.map +1 -0
- package/dist/src/ui/App.js +153 -36
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/colors.d.ts +5 -0
- package/dist/src/ui/colors.js +51 -0
- package/dist/src/ui/colors.js.map +1 -1
- package/dist/src/ui/commands/authCommand.d.ts +11 -1
- package/dist/src/ui/commands/authCommand.js +145 -48
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +16 -0
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/diagnosticsCommand.js +94 -10
- package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +67 -31
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/keyCommand.js +32 -2
- package/dist/src/ui/commands/keyCommand.js.map +1 -1
- package/dist/src/ui/commands/keyfileCommand.js +15 -12
- package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
- package/dist/src/ui/commands/loggingCommand.d.ts +15 -0
- package/dist/src/ui/commands/loggingCommand.js +421 -0
- package/dist/src/ui/commands/loggingCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.js +21 -3
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/privacyCommand.d.ts +3 -0
- package/dist/src/ui/commands/privacyCommand.js +6 -3
- package/dist/src/ui/commands/privacyCommand.js.map +1 -1
- package/dist/src/ui/commands/providerCommand.js +52 -14
- package/dist/src/ui/commands/providerCommand.js.map +1 -1
- package/dist/src/ui/commands/setCommand.js +17 -1
- package/dist/src/ui/commands/setCommand.js.map +1 -1
- package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
- package/dist/src/ui/commands/settingsCommand.js +16 -0
- package/dist/src/ui/commands/settingsCommand.js.map +1 -0
- package/dist/src/ui/commands/toolformatCommand.js +79 -23
- package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +14 -2
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.js +15 -54
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.js +14 -2
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.d.ts +16 -0
- package/dist/src/ui/components/FolderTrustDialog.js +38 -0
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
- package/dist/src/ui/components/Footer.js +136 -16
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +1 -0
- package/dist/src/ui/components/InputPrompt.js +87 -31
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoggingDialog.d.ts +37 -0
- package/dist/src/ui/components/LoggingDialog.js +155 -0
- package/dist/src/ui/components/LoggingDialog.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
- package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/OAuthCodeDialog.d.ts +13 -0
- package/dist/src/ui/components/OAuthCodeDialog.js +54 -0
- package/dist/src/ui/components/OAuthCodeDialog.js.map +1 -0
- package/dist/src/ui/components/ProviderDialog.js +100 -26
- package/dist/src/ui/components/ProviderDialog.js.map +1 -1
- package/dist/src/ui/components/ProviderModelDialog.js +99 -27
- package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +14 -0
- package/dist/src/ui/components/SettingsDialog.js +247 -0
- package/dist/src/ui/components/SettingsDialog.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.js +4 -15
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/TodoPanel.js +93 -18
- package/dist/src/ui/components/TodoPanel.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +85 -7
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/contexts/SettingsContext.d.ts +9 -0
- package/dist/src/ui/contexts/SettingsContext.js +15 -0
- package/dist/src/ui/contexts/SettingsContext.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.js +21 -0
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -2
- package/dist/src/ui/hooks/slashCommandProcessor.js +142 -113
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +48 -2
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useConsoleMessages.js +7 -0
- package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.d.ts +11 -0
- package/dist/src/ui/hooks/useFolderTrust.js +22 -0
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +35 -10
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useResponsive.d.ts +14 -0
- package/dist/src/ui/hooks/useResponsive.js +19 -0
- package/dist/src/ui/hooks/useResponsive.js.map +1 -0
- package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
- package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
- package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
- package/dist/src/ui/hooks/useTodoContinuation.d.ts +31 -0
- package/dist/src/ui/hooks/useTodoContinuation.js +148 -0
- package/dist/src/ui/hooks/useTodoContinuation.js.map +1 -0
- package/dist/src/ui/hooks/useTodoContinuation.spec.d.ts +6 -0
- package/dist/src/ui/hooks/useTodoContinuation.spec.js +378 -0
- package/dist/src/ui/hooks/useTodoContinuation.spec.js.map +1 -0
- package/dist/src/ui/keyMatchers.d.ts +26 -0
- package/dist/src/ui/keyMatchers.js +68 -0
- package/dist/src/ui/keyMatchers.js.map +1 -0
- package/dist/src/ui/privacy/PrivacyNotice.js +10 -4
- package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
- 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/themes/semantic-resolver.d.ts +12 -0
- package/dist/src/ui/themes/semantic-resolver.js +32 -0
- package/dist/src/ui/themes/semantic-resolver.js.map +1 -0
- package/dist/src/ui/themes/semantic-tokens.d.ts +52 -0
- package/dist/src/ui/themes/semantic-tokens.js +7 -0
- package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
- package/dist/src/ui/themes/theme-compat.d.ts +34 -0
- package/dist/src/ui/themes/theme-compat.js +65 -0
- package/dist/src/ui/themes/theme-compat.js.map +1 -0
- package/dist/src/ui/themes/theme-manager.d.ts +8 -0
- package/dist/src/ui/themes/theme-manager.js +18 -0
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.d.ts +2 -1
- package/dist/src/ui/utils/CodeColorizer.js +4 -3
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +4 -2
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/responsive.d.ts +16 -0
- package/dist/src/ui/utils/responsive.js +111 -0
- package/dist/src/ui/utils/responsive.js.map +1 -0
- package/dist/src/utils/cleanup.d.ts +2 -2
- package/dist/src/utils/cleanup.js +2 -2
- package/dist/src/utils/cleanup.js.map +1 -1
- package/dist/src/utils/dialogScopeUtils.d.ts +31 -0
- package/dist/src/utils/dialogScopeUtils.js +48 -0
- package/dist/src/utils/dialogScopeUtils.js.map +1 -0
- package/dist/src/utils/privacy/ConversationDataRedactor.d.ts +75 -0
- package/dist/src/utils/privacy/ConversationDataRedactor.js +412 -0
- package/dist/src/utils/privacy/ConversationDataRedactor.js.map +1 -0
- package/dist/src/utils/privacy/PrivacyManager.d.ts +58 -0
- package/dist/src/utils/privacy/PrivacyManager.js +133 -0
- package/dist/src/utils/privacy/PrivacyManager.js.map +1 -0
- package/dist/src/utils/sandbox.js +10 -0
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.d.ts +126 -0
- package/dist/src/utils/settingsUtils.js +327 -0
- package/dist/src/utils/settingsUtils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +0 -12
- package/dist/src/ui/components/IDEContextDetailDisplay.js +0 -30
- package/dist/src/ui/components/IDEContextDetailDisplay.js.map +0 -1
@@ -0,0 +1,421 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2025 Vybestack LLC
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
5
|
+
*/
|
6
|
+
import { CommandKind, } from './types.js';
|
7
|
+
import { SettingScope } from '../../config/settings.js';
|
8
|
+
import * as fs from 'fs/promises';
|
9
|
+
import * as path from 'path';
|
10
|
+
import * as os from 'os';
|
11
|
+
function isLogEntry(obj) {
|
12
|
+
return (typeof obj === 'object' &&
|
13
|
+
obj !== null &&
|
14
|
+
'timestamp' in obj &&
|
15
|
+
'type' in obj &&
|
16
|
+
'provider' in obj &&
|
17
|
+
typeof obj.timestamp === 'string' &&
|
18
|
+
typeof obj.type === 'string' &&
|
19
|
+
typeof obj.provider === 'string');
|
20
|
+
}
|
21
|
+
export async function handleLoggingCommand(args, context) {
|
22
|
+
const subcommand = args[0];
|
23
|
+
switch (subcommand) {
|
24
|
+
case 'status':
|
25
|
+
return handleLoggingStatus(context);
|
26
|
+
case 'enable':
|
27
|
+
return handleEnableLogging(args.slice(1), context);
|
28
|
+
case 'disable':
|
29
|
+
return handleDisableLogging(context);
|
30
|
+
case 'redaction':
|
31
|
+
return handleRedactionSettings(args.slice(1), context);
|
32
|
+
case 'show':
|
33
|
+
return handleShowLogs(args.slice(1), context);
|
34
|
+
default:
|
35
|
+
return {
|
36
|
+
type: 'message',
|
37
|
+
messageType: 'error',
|
38
|
+
content: `Unknown logging subcommand: ${subcommand}. Available: status, enable, disable, redaction, show`,
|
39
|
+
};
|
40
|
+
}
|
41
|
+
}
|
42
|
+
async function handleLoggingStatus(context) {
|
43
|
+
// Read directly from settings, not from cached Config
|
44
|
+
const isLoggingEnabled = context.settings.merged.telemetry?.logConversations ?? false;
|
45
|
+
const status = `Conversation Logging: ${isLoggingEnabled ? 'Enabled' : 'Disabled'}`;
|
46
|
+
return {
|
47
|
+
type: 'message',
|
48
|
+
messageType: 'info',
|
49
|
+
content: status,
|
50
|
+
};
|
51
|
+
}
|
52
|
+
async function handleEnableLogging(_args, context) {
|
53
|
+
// Enable conversation logging through settings
|
54
|
+
const currentTelemetry = context.settings.merged.telemetry || {};
|
55
|
+
context.settings.setValue(SettingScope.User, 'telemetry', {
|
56
|
+
...currentTelemetry,
|
57
|
+
logConversations: true,
|
58
|
+
});
|
59
|
+
// Update the Config to reflect the new setting
|
60
|
+
context.config.updateTelemetrySettings({
|
61
|
+
...context.config.getTelemetrySettings(),
|
62
|
+
logConversations: true,
|
63
|
+
});
|
64
|
+
return {
|
65
|
+
type: 'message',
|
66
|
+
messageType: 'info',
|
67
|
+
content: 'Conversation logging enabled. Data stored locally only.',
|
68
|
+
};
|
69
|
+
}
|
70
|
+
async function handleDisableLogging(context) {
|
71
|
+
const currentTelemetry = context.settings.merged.telemetry || {};
|
72
|
+
context.settings.setValue(SettingScope.User, 'telemetry', {
|
73
|
+
...currentTelemetry,
|
74
|
+
logConversations: false,
|
75
|
+
});
|
76
|
+
// Update the Config to reflect the new setting
|
77
|
+
context.config.updateTelemetrySettings({
|
78
|
+
...context.config.getTelemetrySettings(),
|
79
|
+
logConversations: false,
|
80
|
+
});
|
81
|
+
return {
|
82
|
+
type: 'message',
|
83
|
+
messageType: 'info',
|
84
|
+
content: 'Conversation logging disabled. No conversation data will be collected.',
|
85
|
+
};
|
86
|
+
}
|
87
|
+
async function handleShowLogs(args, context) {
|
88
|
+
// Parse number of lines from args (default to 50)
|
89
|
+
const numLines = args[0] ? parseInt(args[0], 10) : 50;
|
90
|
+
if (isNaN(numLines) || numLines < 1) {
|
91
|
+
return {
|
92
|
+
type: 'message',
|
93
|
+
messageType: 'error',
|
94
|
+
content: 'Invalid number of lines. Please provide a positive number.',
|
95
|
+
};
|
96
|
+
}
|
97
|
+
// Get the log path from config
|
98
|
+
const logPath = context.config.getConversationLogPath();
|
99
|
+
const expandedPath = logPath.replace('~', os.homedir());
|
100
|
+
try {
|
101
|
+
// Find all log files
|
102
|
+
const files = await fs.readdir(expandedPath);
|
103
|
+
const logFiles = files
|
104
|
+
.filter((file) => file.endsWith('.jsonl'))
|
105
|
+
.sort()
|
106
|
+
.reverse();
|
107
|
+
if (logFiles.length === 0) {
|
108
|
+
return {
|
109
|
+
type: 'dialog',
|
110
|
+
dialog: 'logging',
|
111
|
+
dialogData: { entries: [] },
|
112
|
+
};
|
113
|
+
}
|
114
|
+
// Read and parse log entries from all recent files
|
115
|
+
const allEntries = [];
|
116
|
+
let remainingLines = numLines;
|
117
|
+
for (const logFile of logFiles) {
|
118
|
+
if (remainingLines <= 0)
|
119
|
+
break;
|
120
|
+
const filePath = path.join(expandedPath, logFile);
|
121
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
122
|
+
const lines = content.split('\n').filter((line) => line.trim());
|
123
|
+
// Read from the end of the file
|
124
|
+
const startIndex = Math.max(0, lines.length - remainingLines);
|
125
|
+
const fileLines = lines.slice(startIndex);
|
126
|
+
for (const line of fileLines) {
|
127
|
+
try {
|
128
|
+
const parsed = JSON.parse(line);
|
129
|
+
allEntries.push(parsed);
|
130
|
+
}
|
131
|
+
catch {
|
132
|
+
// Skip invalid JSON lines
|
133
|
+
}
|
134
|
+
}
|
135
|
+
remainingLines -= fileLines.length;
|
136
|
+
}
|
137
|
+
// Return dialog with entries
|
138
|
+
return {
|
139
|
+
type: 'dialog',
|
140
|
+
dialog: 'logging',
|
141
|
+
dialogData: { entries: allEntries.slice(-numLines) },
|
142
|
+
};
|
143
|
+
}
|
144
|
+
catch (error) {
|
145
|
+
if (error.code === 'ENOENT') {
|
146
|
+
return {
|
147
|
+
type: 'message',
|
148
|
+
messageType: 'error',
|
149
|
+
content: `Log directory not found: ${logPath}\nCreating directory and starting logging...`,
|
150
|
+
};
|
151
|
+
}
|
152
|
+
return {
|
153
|
+
type: 'message',
|
154
|
+
messageType: 'error',
|
155
|
+
content: `Error reading logs: ${error instanceof Error ? error.message : String(error)}`,
|
156
|
+
};
|
157
|
+
}
|
158
|
+
}
|
159
|
+
async function handleRedactionSettings(args, context) {
|
160
|
+
if (args.length === 0) {
|
161
|
+
// Show current redaction settings
|
162
|
+
const redactionConfig = context.config.getRedactionConfig();
|
163
|
+
const settings = [
|
164
|
+
'Current Redaction Settings:',
|
165
|
+
` • API Keys: ${redactionConfig.redactApiKeys ? 'Enabled' : 'Disabled'}`,
|
166
|
+
` • Credentials: ${redactionConfig.redactCredentials ? 'Enabled' : 'Disabled'}`,
|
167
|
+
` • File Paths: ${redactionConfig.redactFilePaths ? 'Enabled' : 'Disabled'}`,
|
168
|
+
` • URLs: ${redactionConfig.redactUrls ? 'Enabled' : 'Disabled'}`,
|
169
|
+
` • Email Addresses: ${redactionConfig.redactEmails ? 'Enabled' : 'Disabled'}`,
|
170
|
+
` • Personal Info: ${redactionConfig.redactPersonalInfo ? 'Enabled' : 'Disabled'}`,
|
171
|
+
'',
|
172
|
+
'To modify settings:',
|
173
|
+
' /logging redaction --api-keys=false',
|
174
|
+
' /logging redaction --file-paths=true',
|
175
|
+
].join('\n');
|
176
|
+
return {
|
177
|
+
type: 'message',
|
178
|
+
messageType: 'info',
|
179
|
+
content: settings,
|
180
|
+
};
|
181
|
+
}
|
182
|
+
// Parse redaction setting changes
|
183
|
+
const updates = {};
|
184
|
+
for (const arg of args) {
|
185
|
+
const [key, value] = arg.replace('--', '').split('=');
|
186
|
+
const boolValue = value === 'true';
|
187
|
+
switch (key) {
|
188
|
+
case 'api-keys':
|
189
|
+
updates.redactSensitiveData = boolValue; // Maps to existing setting
|
190
|
+
break;
|
191
|
+
case 'credentials':
|
192
|
+
updates.redactSensitiveData = boolValue; // Maps to existing setting
|
193
|
+
break;
|
194
|
+
case 'file-paths':
|
195
|
+
updates.redactFilePaths = boolValue;
|
196
|
+
break;
|
197
|
+
case 'urls':
|
198
|
+
updates.redactUrls = boolValue;
|
199
|
+
break;
|
200
|
+
case 'emails':
|
201
|
+
updates.redactEmails = boolValue;
|
202
|
+
break;
|
203
|
+
case 'personal-info':
|
204
|
+
updates.redactPersonalInfo = boolValue;
|
205
|
+
break;
|
206
|
+
default:
|
207
|
+
// Unknown key, ignore
|
208
|
+
break;
|
209
|
+
}
|
210
|
+
}
|
211
|
+
if (Object.keys(updates).length === 0) {
|
212
|
+
return {
|
213
|
+
type: 'message',
|
214
|
+
messageType: 'error',
|
215
|
+
content: 'No valid redaction settings provided. Use format: --api-keys=true',
|
216
|
+
};
|
217
|
+
}
|
218
|
+
// Update telemetry settings
|
219
|
+
const currentTelemetry = context.settings.merged.telemetry || {};
|
220
|
+
context.settings.setValue(SettingScope.User, 'telemetry', {
|
221
|
+
...currentTelemetry,
|
222
|
+
...updates,
|
223
|
+
});
|
224
|
+
const changes = Object.entries(updates)
|
225
|
+
.map(([key, value]) => ` • ${key}: ${value ? 'enabled' : 'disabled'}`)
|
226
|
+
.join('\n');
|
227
|
+
return {
|
228
|
+
type: 'message',
|
229
|
+
messageType: 'info',
|
230
|
+
content: `Redaction settings updated:\n${changes}`,
|
231
|
+
};
|
232
|
+
}
|
233
|
+
// Subcommands for logging
|
234
|
+
const statusCommand = {
|
235
|
+
name: 'status',
|
236
|
+
description: 'show current logging status',
|
237
|
+
kind: CommandKind.BUILT_IN,
|
238
|
+
action: async (context) => {
|
239
|
+
if (!context.services.config) {
|
240
|
+
context.ui.addItem({
|
241
|
+
type: 'error',
|
242
|
+
text: 'Configuration not available',
|
243
|
+
}, Date.now());
|
244
|
+
return;
|
245
|
+
}
|
246
|
+
const result = await handleLoggingStatus({
|
247
|
+
config: context.services.config,
|
248
|
+
settings: context.services.settings,
|
249
|
+
});
|
250
|
+
if (result.type === 'message') {
|
251
|
+
context.ui.addItem({
|
252
|
+
type: result.messageType,
|
253
|
+
text: result.content,
|
254
|
+
}, Date.now());
|
255
|
+
}
|
256
|
+
},
|
257
|
+
};
|
258
|
+
const enableCommand = {
|
259
|
+
name: 'enable',
|
260
|
+
description: 'enable conversation logging',
|
261
|
+
kind: CommandKind.BUILT_IN,
|
262
|
+
action: async (context, args) => {
|
263
|
+
if (!context.services.config) {
|
264
|
+
context.ui.addItem({
|
265
|
+
type: 'error',
|
266
|
+
text: 'Configuration not available',
|
267
|
+
}, Date.now());
|
268
|
+
return;
|
269
|
+
}
|
270
|
+
const argsArray = args ? args.split(/\s+/) : [];
|
271
|
+
const result = await handleEnableLogging(argsArray, {
|
272
|
+
config: context.services.config,
|
273
|
+
settings: context.services.settings,
|
274
|
+
});
|
275
|
+
if (result.type === 'message') {
|
276
|
+
context.ui.addItem({
|
277
|
+
type: result.messageType,
|
278
|
+
text: result.content,
|
279
|
+
}, Date.now());
|
280
|
+
}
|
281
|
+
},
|
282
|
+
};
|
283
|
+
const disableCommand = {
|
284
|
+
name: 'disable',
|
285
|
+
description: 'disable conversation logging',
|
286
|
+
kind: CommandKind.BUILT_IN,
|
287
|
+
action: async (context) => {
|
288
|
+
if (!context.services.config) {
|
289
|
+
context.ui.addItem({
|
290
|
+
type: 'error',
|
291
|
+
text: 'Configuration not available',
|
292
|
+
}, Date.now());
|
293
|
+
return;
|
294
|
+
}
|
295
|
+
const result = await handleDisableLogging({
|
296
|
+
config: context.services.config,
|
297
|
+
settings: context.services.settings,
|
298
|
+
});
|
299
|
+
if (result.type === 'message') {
|
300
|
+
context.ui.addItem({
|
301
|
+
type: result.messageType,
|
302
|
+
text: result.content,
|
303
|
+
}, Date.now());
|
304
|
+
}
|
305
|
+
},
|
306
|
+
};
|
307
|
+
const redactionCommand = {
|
308
|
+
name: 'redaction',
|
309
|
+
description: 'configure data redaction settings',
|
310
|
+
kind: CommandKind.BUILT_IN,
|
311
|
+
action: async (context, args) => {
|
312
|
+
if (!context.services.config) {
|
313
|
+
context.ui.addItem({
|
314
|
+
type: 'error',
|
315
|
+
text: 'Configuration not available',
|
316
|
+
}, Date.now());
|
317
|
+
return;
|
318
|
+
}
|
319
|
+
const argsArray = args ? args.split(/\s+/) : [];
|
320
|
+
const result = await handleRedactionSettings(argsArray, {
|
321
|
+
config: context.services.config,
|
322
|
+
settings: context.services.settings,
|
323
|
+
});
|
324
|
+
if (result.type === 'message') {
|
325
|
+
context.ui.addItem({
|
326
|
+
type: result.messageType,
|
327
|
+
text: result.content,
|
328
|
+
}, Date.now());
|
329
|
+
}
|
330
|
+
},
|
331
|
+
};
|
332
|
+
const showCommand = {
|
333
|
+
name: 'show',
|
334
|
+
description: 'show last N lines from conversation log (default 50)',
|
335
|
+
kind: CommandKind.BUILT_IN,
|
336
|
+
action: async (context, args) => {
|
337
|
+
if (!context.services.config) {
|
338
|
+
context.ui.addItem({
|
339
|
+
type: 'error',
|
340
|
+
text: 'Configuration not available',
|
341
|
+
}, Date.now());
|
342
|
+
return;
|
343
|
+
}
|
344
|
+
const argsArray = args ? args.split(/\s+/) : [];
|
345
|
+
const result = await handleShowLogs(argsArray, {
|
346
|
+
config: context.services.config,
|
347
|
+
settings: context.services.settings,
|
348
|
+
});
|
349
|
+
if (result.type === 'message') {
|
350
|
+
context.ui.addItem({
|
351
|
+
type: result.messageType,
|
352
|
+
text: result.content,
|
353
|
+
}, Date.now());
|
354
|
+
}
|
355
|
+
else if (result.type === 'dialog') {
|
356
|
+
// Format the log entries as text for now until dialog system is implemented
|
357
|
+
const entries = result.dialogData?.entries || [];
|
358
|
+
if (entries.length === 0) {
|
359
|
+
context.ui.addItem({
|
360
|
+
type: 'info',
|
361
|
+
text: 'No log entries found',
|
362
|
+
}, Date.now());
|
363
|
+
}
|
364
|
+
else {
|
365
|
+
// Format entries for display
|
366
|
+
const formattedEntries = entries
|
367
|
+
.filter(isLogEntry)
|
368
|
+
.map((entry, index) => {
|
369
|
+
const timestamp = new Date(entry.timestamp).toLocaleTimeString();
|
370
|
+
const typeIcon = entry.type === 'request' ? '→' : '←';
|
371
|
+
let content = '';
|
372
|
+
if (entry.type === 'request' && entry.messages) {
|
373
|
+
const lastMessage = entry.messages[entry.messages.length - 1];
|
374
|
+
if (lastMessage) {
|
375
|
+
content = lastMessage.content.substring(0, 100);
|
376
|
+
if (lastMessage.content.length > 100)
|
377
|
+
content += '...';
|
378
|
+
}
|
379
|
+
}
|
380
|
+
else if (entry.type === 'response' && entry.response) {
|
381
|
+
content = entry.response.substring(0, 100);
|
382
|
+
if (entry.response.length > 100)
|
383
|
+
content += '...';
|
384
|
+
}
|
385
|
+
return `[${index + 1}] ${timestamp} ${typeIcon} ${entry.provider}: ${content}`;
|
386
|
+
})
|
387
|
+
.join('\n');
|
388
|
+
context.ui.addItem({
|
389
|
+
type: 'info',
|
390
|
+
text: `Conversation Logs (${entries.length} entries):\n${'─'.repeat(60)}\n${formattedEntries}\n${'─'.repeat(60)}`,
|
391
|
+
}, Date.now());
|
392
|
+
}
|
393
|
+
return;
|
394
|
+
}
|
395
|
+
},
|
396
|
+
};
|
397
|
+
// Main logging command with subcommands
|
398
|
+
export const loggingCommand = {
|
399
|
+
name: 'logging',
|
400
|
+
description: 'manage conversation logging settings',
|
401
|
+
kind: CommandKind.BUILT_IN,
|
402
|
+
subCommands: [
|
403
|
+
statusCommand,
|
404
|
+
enableCommand,
|
405
|
+
disableCommand,
|
406
|
+
redactionCommand,
|
407
|
+
showCommand,
|
408
|
+
],
|
409
|
+
action: async (context, args) => {
|
410
|
+
// Default action shows status when no subcommand provided
|
411
|
+
if (!args || args.trim() === '') {
|
412
|
+
return statusCommand.action(context, '');
|
413
|
+
}
|
414
|
+
// If args provided but no subcommand matched, show help
|
415
|
+
context.ui.addItem({
|
416
|
+
type: 'info',
|
417
|
+
text: 'Available logging commands:\n status - show current status\n enable - enable logging\n disable - disable logging\n redaction - configure redaction\n show [N] - show last N lines from log (default 50)',
|
418
|
+
}, Date.now());
|
419
|
+
},
|
420
|
+
};
|
421
|
+
//# sourceMappingURL=loggingCommand.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loggingCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/loggingCommand.ts"],"names":[],"mappings":"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"}
|
@@ -26,10 +26,28 @@ export const modelCommand = {
|
|
26
26
|
? activeProvider.getCurrentModel()
|
27
27
|
: 'unknown';
|
28
28
|
if (activeProvider.setModel) {
|
29
|
+
const config = context.services.config;
|
30
|
+
const settingsService = config?.getSettingsService();
|
31
|
+
const useSettingsService = settingsService !== null;
|
29
32
|
activeProvider.setModel(modelName);
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
+
if (useSettingsService && settingsService && config) {
|
34
|
+
// Use SettingsService to update provider settings
|
35
|
+
try {
|
36
|
+
// Ensure activeProvider is set in SettingsService
|
37
|
+
settingsService.set('activeProvider', activeProvider.name);
|
38
|
+
await settingsService.updateSettings(activeProvider.name, {
|
39
|
+
model: modelName,
|
40
|
+
});
|
41
|
+
}
|
42
|
+
catch (error) {
|
43
|
+
console.error('SettingsService error, using fallback:', error);
|
44
|
+
// Keep config model in sync so /about shows correct model
|
45
|
+
config.setModel(modelName);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
else if (config) {
|
49
|
+
// Fallback to direct config update
|
50
|
+
config.setModel(modelName);
|
33
51
|
}
|
34
52
|
return {
|
35
53
|
type: 'message',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"modelCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/modelCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAY,EACkD,EAAE;QAChE,MAAM,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAE7C,yDAAyD;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,eAAe;aACxB,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe;gBACjD,CAAC,CAAC,cAAc,CAAC,eAAe,EAAE;gBAClC,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC5B,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"modelCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/modelCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAY,EACkD,EAAE;QAChE,MAAM,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAE7C,yDAAyD;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,eAAe;aACxB,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe;gBACjD,CAAC,CAAC,cAAc,CAAC,eAAe,EAAE;gBAClC,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvC,MAAM,eAAe,GAAG,MAAM,EAAE,kBAAkB,EAAE,CAAC;gBACrD,MAAM,kBAAkB,GAAG,eAAe,KAAK,IAAI,CAAC;gBAEpD,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAEnC,IAAI,kBAAkB,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;oBACpD,kDAAkD;oBAClD,IAAI,CAAC;wBACH,kDAAkD;wBAClD,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC3D,MAAM,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE;4BACxD,KAAK,EAAE,SAAS;yBACjB,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;wBAC/D,0DAA0D;wBAC1D,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,mCAAmC;oBACnC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC7B,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,iBAAiB,YAAY,OAAO,SAAS,iBAAiB,cAAc,CAAC,IAAI,GAAG;iBAC9F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,aAAa,cAAc,CAAC,IAAI,oCAAoC;iBAC9E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC7F,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
@@ -3,12 +3,15 @@
|
|
3
3
|
* Copyright 2025 Google LLC
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
5
5
|
*/
|
6
|
-
import { CommandKind } from './types.js';
|
6
|
+
import { CommandKind, } from './types.js';
|
7
|
+
/**
|
8
|
+
* Privacy command - shows Google's privacy disclosure for the Gemini API
|
9
|
+
*/
|
7
10
|
export const privacyCommand = {
|
8
11
|
name: 'privacy',
|
9
|
-
description: '
|
12
|
+
description: 'view Gemini API privacy disclosure and terms',
|
10
13
|
kind: CommandKind.BUILT_IN,
|
11
|
-
action: () => ({
|
14
|
+
action: async (_context) => ({
|
12
15
|
type: 'dialog',
|
13
16
|
dialog: 'privacy',
|
14
17
|
}),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"privacyCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/privacyCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
1
|
+
{"version":3,"file":"privacyCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/privacyCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,QAAwB,EACS,EAAE,CAAC,CAAC;QACrC,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,SAAS;KAClB,CAAC;CACH,CAAC"}
|
@@ -7,6 +7,21 @@ import { CommandKind, } from './types.js';
|
|
7
7
|
import { getProviderManager } from '../../providers/providerManagerInstance.js';
|
8
8
|
import { MessageType } from '../types.js';
|
9
9
|
import { AuthType } from '@vybestack/llxprt-code-core';
|
10
|
+
/**
|
11
|
+
* Get SettingsService instance for provider switching
|
12
|
+
*/
|
13
|
+
async function getSettingsServiceForProvider() {
|
14
|
+
try {
|
15
|
+
const { getSettingsService } = await import('@vybestack/llxprt-code-core/src/settings/settingsServiceInstance.js');
|
16
|
+
return getSettingsService();
|
17
|
+
}
|
18
|
+
catch (error) {
|
19
|
+
if (process.env.DEBUG) {
|
20
|
+
console.warn('Failed to get SettingsService for provider switching:', error);
|
21
|
+
}
|
22
|
+
throw error;
|
23
|
+
}
|
24
|
+
}
|
10
25
|
export const providerCommand = {
|
11
26
|
name: 'provider',
|
12
27
|
description: 'switch between different AI providers (openai, anthropic, etc.)',
|
@@ -38,6 +53,27 @@ export const providerCommand = {
|
|
38
53
|
// };
|
39
54
|
// Switch provider first (this will clear state from ALL providers)
|
40
55
|
providerManager.setActiveProvider(providerName);
|
56
|
+
// Clear base-url ephemeral setting when switching providers
|
57
|
+
// This prevents the old provider's base-url from affecting the new provider
|
58
|
+
const config = context.services.config;
|
59
|
+
if (config) {
|
60
|
+
config.setEphemeralSetting('base-url', undefined);
|
61
|
+
}
|
62
|
+
// Use SettingsService for provider switching
|
63
|
+
try {
|
64
|
+
const settingsService = await getSettingsServiceForProvider();
|
65
|
+
await settingsService.switchProvider(providerName);
|
66
|
+
// Also set the default model for this provider
|
67
|
+
const activeProvider = providerManager.getActiveProvider();
|
68
|
+
const defaultModel = activeProvider.getDefaultModel();
|
69
|
+
settingsService.setProviderSetting(providerName, 'model', defaultModel);
|
70
|
+
// Don't return early - continue with the rest of the setup
|
71
|
+
}
|
72
|
+
catch (error) {
|
73
|
+
if (process.env.DEBUG) {
|
74
|
+
console.warn('SettingsService provider switch failed, falling back to legacy method:', error);
|
75
|
+
}
|
76
|
+
}
|
41
77
|
// Update config if available
|
42
78
|
if (context.services.config) {
|
43
79
|
// Clear ephemeral settings when switching providers
|
@@ -66,20 +102,22 @@ export const providerCommand = {
|
|
66
102
|
context.services.config.setProvider(providerName);
|
67
103
|
// Get the active provider and ensure it uses a valid default model
|
68
104
|
const activeProvider = providerManager.getActiveProvider();
|
69
|
-
//
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
105
|
+
// Get the default model from the provider
|
106
|
+
const defaultModel = activeProvider.getDefaultModel();
|
107
|
+
let baseUrl;
|
108
|
+
// Set base URL for specific providers
|
109
|
+
if (providerName === 'qwen') {
|
110
|
+
baseUrl = 'https://portal.qwen.ai/v1';
|
111
|
+
}
|
112
|
+
// Set the base URL if needed (for qwen)
|
113
|
+
if (baseUrl) {
|
114
|
+
context.services.config.setEphemeralSetting('base-url', baseUrl);
|
115
|
+
// Also set it directly on the provider if it has the method
|
116
|
+
if ('setBaseUrl' in activeProvider &&
|
117
|
+
typeof activeProvider.setBaseUrl === 'function') {
|
118
|
+
const providerWithSetBaseUrl = activeProvider;
|
119
|
+
providerWithSetBaseUrl.setBaseUrl(baseUrl);
|
120
|
+
}
|
83
121
|
}
|
84
122
|
// Set the model on both the provider and config
|
85
123
|
if (defaultModel) {
|
@@ -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;
|
1
|
+
{"version":3,"file":"providerCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/providerCommand.ts"],"names":[],"mappings":"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"}
|