snow-ai 0.4.8 → 0.4.10
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/dist/app.js +30 -12
- package/dist/cli.js +6 -0
- package/dist/i18n/lang/en.js +21 -0
- package/dist/i18n/lang/es.js +21 -0
- package/dist/i18n/lang/ja.js +21 -0
- package/dist/i18n/lang/ko.js +21 -0
- package/dist/i18n/lang/zh-TW.js +21 -0
- package/dist/i18n/lang/zh.js +21 -0
- package/dist/i18n/types.d.ts +21 -0
- package/dist/mcp/todo.js +1 -1
- package/dist/ui/components/AgentPickerPanel.js +8 -6
- package/dist/ui/components/ChatInput.js +23 -21
- package/dist/ui/components/CommandPanel.js +7 -5
- package/dist/ui/components/DiffViewer.js +6 -4
- package/dist/ui/components/FileList.js +8 -6
- package/dist/ui/components/Menu.d.ts +1 -1
- package/dist/ui/components/Menu.js +8 -6
- package/dist/ui/components/PendingMessages.js +7 -5
- package/dist/ui/components/TodoPickerPanel.js +12 -10
- package/dist/ui/components/TodoTree.js +7 -5
- package/dist/ui/components/ToolConfirmation.js +14 -12
- package/dist/ui/components/ToolResultPreview.js +17 -3
- package/dist/ui/contexts/ThemeContext.d.ts +13 -0
- package/dist/ui/contexts/ThemeContext.js +28 -0
- package/dist/ui/pages/ChatScreen.js +21 -19
- package/dist/ui/pages/CodeBaseConfigScreen.js +30 -28
- package/dist/ui/pages/ConfigScreen.js +76 -74
- package/dist/ui/pages/CustomHeadersScreen.js +33 -31
- package/dist/ui/pages/LanguageSettingsScreen.js +6 -4
- package/dist/ui/pages/ProxyConfigScreen.js +15 -13
- package/dist/ui/pages/SensitiveCommandConfigScreen.js +12 -10
- package/dist/ui/pages/SubAgentConfigScreen.js +12 -10
- package/dist/ui/pages/SubAgentListScreen.js +11 -9
- package/dist/ui/pages/SystemPromptConfigScreen.js +21 -19
- package/dist/ui/pages/ThemeSettingsScreen.d.ts +7 -0
- package/dist/ui/pages/ThemeSettingsScreen.js +106 -0
- package/dist/ui/pages/WelcomeScreen.js +11 -1
- package/dist/ui/themes/index.d.ts +23 -0
- package/dist/ui/themes/index.js +140 -0
- package/dist/utils/configManager.js +11 -3
- package/dist/utils/logger.d.ts +9 -3
- package/dist/utils/logger.js +28 -3
- package/dist/utils/mcpToolsManager.d.ts +1 -1
- package/dist/utils/mcpToolsManager.js +13 -9
- package/dist/utils/themeConfig.d.ts +21 -0
- package/dist/utils/themeConfig.js +61 -0
- package/dist/utils/toolExecutor.js +11 -1
- package/package.json +3 -2
|
@@ -5,6 +5,7 @@ import { Alert } from '@inkjs/ui';
|
|
|
5
5
|
import TextInput from 'ink-text-input';
|
|
6
6
|
import { loadCodebaseConfig, saveCodebaseConfig, } from '../../utils/codebaseConfig.js';
|
|
7
7
|
import { useI18n } from '../../i18n/index.js';
|
|
8
|
+
import { useTheme } from '../contexts/ThemeContext.js';
|
|
8
9
|
const focusEventTokenRegex = /(?:\x1b)?\[[0-9;]*[IO]/g;
|
|
9
10
|
const isFocusEventInput = (value) => {
|
|
10
11
|
if (!value) {
|
|
@@ -39,6 +40,7 @@ const stripFocusArtifacts = (value) => {
|
|
|
39
40
|
};
|
|
40
41
|
export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
41
42
|
const { t } = useI18n();
|
|
43
|
+
const { theme } = useTheme();
|
|
42
44
|
// Configuration state
|
|
43
45
|
const [enabled, setEnabled] = useState(false);
|
|
44
46
|
const [enableAgentReview, setEnableAgentReview] = useState(true);
|
|
@@ -146,21 +148,21 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
146
148
|
switch (field) {
|
|
147
149
|
case 'enabled':
|
|
148
150
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
149
|
-
React.createElement(Text, { color: isActive ?
|
|
151
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
150
152
|
isActive ? '❯ ' : ' ',
|
|
151
153
|
t.codebaseConfig.codebaseEnabled),
|
|
152
154
|
React.createElement(Box, { marginLeft: 3 },
|
|
153
|
-
React.createElement(Text, { color:
|
|
155
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
154
156
|
enabled ? t.codebaseConfig.enabled : t.codebaseConfig.disabled,
|
|
155
157
|
' ',
|
|
156
158
|
t.codebaseConfig.toggleHint))));
|
|
157
159
|
case 'enableAgentReview':
|
|
158
160
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
159
|
-
React.createElement(Text, { color: isActive ?
|
|
161
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
160
162
|
isActive ? '❯ ' : ' ',
|
|
161
163
|
t.codebaseConfig.agentReview),
|
|
162
164
|
React.createElement(Box, { marginLeft: 3 },
|
|
163
|
-
React.createElement(Text, { color:
|
|
165
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
164
166
|
enableAgentReview
|
|
165
167
|
? t.codebaseConfig.enabled
|
|
166
168
|
: t.codebaseConfig.disabled,
|
|
@@ -168,43 +170,43 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
168
170
|
t.codebaseConfig.toggleHint))));
|
|
169
171
|
case 'embeddingModelName':
|
|
170
172
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
171
|
-
React.createElement(Text, { color: isActive ?
|
|
173
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
172
174
|
isActive ? '❯ ' : ' ',
|
|
173
175
|
t.codebaseConfig.embeddingModelName),
|
|
174
176
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
175
|
-
React.createElement(Text, { color:
|
|
177
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
176
178
|
React.createElement(TextInput, { value: embeddingModelName, onChange: value => setEmbeddingModelName(stripFocusArtifacts(value)), onSubmit: () => setIsEditing(false) })))),
|
|
177
179
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
178
|
-
React.createElement(Text, { color:
|
|
180
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, embeddingModelName || t.codebaseConfig.notSet)))));
|
|
179
181
|
case 'embeddingBaseUrl':
|
|
180
182
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
181
|
-
React.createElement(Text, { color: isActive ?
|
|
183
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
182
184
|
isActive ? '❯ ' : ' ',
|
|
183
185
|
t.codebaseConfig.embeddingBaseUrl),
|
|
184
186
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
185
|
-
React.createElement(Text, { color:
|
|
187
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
186
188
|
React.createElement(TextInput, { value: embeddingBaseUrl, onChange: value => setEmbeddingBaseUrl(stripFocusArtifacts(value)), onSubmit: () => setIsEditing(false) })))),
|
|
187
189
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
188
|
-
React.createElement(Text, { color:
|
|
190
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, embeddingBaseUrl || t.codebaseConfig.notSet)))));
|
|
189
191
|
case 'embeddingApiKey':
|
|
190
192
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
191
|
-
React.createElement(Text, { color: isActive ?
|
|
193
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
192
194
|
isActive ? '❯ ' : ' ',
|
|
193
195
|
t.codebaseConfig.embeddingApiKeyOptional),
|
|
194
196
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
195
|
-
React.createElement(Text, { color:
|
|
197
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
196
198
|
React.createElement(TextInput, { value: embeddingApiKey, onChange: value => setEmbeddingApiKey(stripFocusArtifacts(value)), onSubmit: () => setIsEditing(false), mask: "*" })))),
|
|
197
199
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
198
|
-
React.createElement(Text, { color:
|
|
200
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, embeddingApiKey
|
|
199
201
|
? t.codebaseConfig.masked
|
|
200
202
|
: t.codebaseConfig.notSet)))));
|
|
201
203
|
case 'embeddingDimensions':
|
|
202
204
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
203
|
-
React.createElement(Text, { color: isActive ?
|
|
205
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
204
206
|
isActive ? '❯ ' : ' ',
|
|
205
207
|
t.codebaseConfig.embeddingDimensions),
|
|
206
208
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
207
|
-
React.createElement(Text, { color:
|
|
209
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
208
210
|
React.createElement(TextInput, { value: embeddingDimensions.toString(), onChange: value => {
|
|
209
211
|
const num = parseInt(stripFocusArtifacts(value) || '0');
|
|
210
212
|
if (!isNaN(num)) {
|
|
@@ -212,14 +214,14 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
212
214
|
}
|
|
213
215
|
}, onSubmit: () => setIsEditing(false) })))),
|
|
214
216
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
215
|
-
React.createElement(Text, { color:
|
|
217
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, embeddingDimensions)))));
|
|
216
218
|
case 'batchMaxLines':
|
|
217
219
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
218
|
-
React.createElement(Text, { color: isActive ?
|
|
220
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
219
221
|
isActive ? '❯ ' : ' ',
|
|
220
222
|
t.codebaseConfig.batchMaxLines),
|
|
221
223
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
222
|
-
React.createElement(Text, { color:
|
|
224
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
223
225
|
React.createElement(TextInput, { value: batchMaxLines.toString(), onChange: value => {
|
|
224
226
|
const num = parseInt(stripFocusArtifacts(value) || '0');
|
|
225
227
|
if (!isNaN(num)) {
|
|
@@ -227,14 +229,14 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
227
229
|
}
|
|
228
230
|
}, onSubmit: () => setIsEditing(false) })))),
|
|
229
231
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
230
|
-
React.createElement(Text, { color:
|
|
232
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, batchMaxLines)))));
|
|
231
233
|
case 'batchConcurrency':
|
|
232
234
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
233
|
-
React.createElement(Text, { color: isActive ?
|
|
235
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
234
236
|
isActive ? '❯ ' : ' ',
|
|
235
237
|
t.codebaseConfig.batchConcurrency),
|
|
236
238
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
237
|
-
React.createElement(Text, { color:
|
|
239
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
238
240
|
React.createElement(TextInput, { value: batchConcurrency.toString(), onChange: value => {
|
|
239
241
|
const num = parseInt(stripFocusArtifacts(value) || '0');
|
|
240
242
|
if (!isNaN(num)) {
|
|
@@ -242,7 +244,7 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
242
244
|
}
|
|
243
245
|
}, onSubmit: () => setIsEditing(false) })))),
|
|
244
246
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
245
|
-
React.createElement(Text, { color:
|
|
247
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, batchConcurrency)))));
|
|
246
248
|
default:
|
|
247
249
|
return null;
|
|
248
250
|
}
|
|
@@ -307,19 +309,19 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
307
309
|
}
|
|
308
310
|
});
|
|
309
311
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
310
|
-
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor:
|
|
312
|
+
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor: theme.colors.menuInfo, paddingX: 2 },
|
|
311
313
|
React.createElement(Box, { flexDirection: "column" },
|
|
312
314
|
React.createElement(Gradient, { name: "rainbow" }, t.codebaseConfig.title),
|
|
313
|
-
React.createElement(Text, { color:
|
|
315
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, t.codebaseConfig.subtitle)))),
|
|
314
316
|
React.createElement(Box, { marginBottom: 1 },
|
|
315
|
-
React.createElement(Text, { color:
|
|
317
|
+
React.createElement(Text, { color: theme.colors.warning, bold: true },
|
|
316
318
|
t.codebaseConfig.settingsPosition,
|
|
317
319
|
" (",
|
|
318
320
|
currentFieldIndex + 1,
|
|
319
321
|
"/",
|
|
320
322
|
totalFields,
|
|
321
323
|
")"),
|
|
322
|
-
totalFields > MAX_VISIBLE_FIELDS && (React.createElement(Text, { color:
|
|
324
|
+
totalFields > MAX_VISIBLE_FIELDS && (React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
323
325
|
' ',
|
|
324
326
|
t.codebaseConfig.scrollHint))),
|
|
325
327
|
React.createElement(Box, { flexDirection: "column" }, (() => {
|
|
@@ -340,8 +342,8 @@ export default function CodeBaseConfigScreen({ onBack, onSave, inlineMode = fals
|
|
|
340
342
|
return visibleFields.map(field => renderField(field));
|
|
341
343
|
})()),
|
|
342
344
|
errors.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
|
|
343
|
-
React.createElement(Text, { color:
|
|
344
|
-
errors.map((error, index) => (React.createElement(Text, { key: index, color:
|
|
345
|
+
React.createElement(Text, { color: theme.colors.error, bold: true }, t.codebaseConfig.errors),
|
|
346
|
+
errors.map((error, index) => (React.createElement(Text, { key: index, color: theme.colors.error },
|
|
345
347
|
"\u2022 ",
|
|
346
348
|
error))))),
|
|
347
349
|
React.createElement(Box, { flexDirection: "column", marginTop: 1 }, isEditing ? (React.createElement(Alert, { variant: "info" }, t.codebaseConfig.editingHint)) : (React.createElement(Alert, { variant: "info" }, t.codebaseConfig.navigationHint)))));
|
|
@@ -7,6 +7,7 @@ import { getOpenAiConfig, updateOpenAiConfig, validateApiConfig, } from '../../u
|
|
|
7
7
|
import { fetchAvailableModels, filterModels, } from '../../api/models.js';
|
|
8
8
|
import { getActiveProfileName, getAllProfiles, switchProfile, createProfile, deleteProfile, saveProfile, } from '../../utils/configManager.js';
|
|
9
9
|
import { useI18n } from '../../i18n/index.js';
|
|
10
|
+
import { useTheme } from '../contexts/ThemeContext.js';
|
|
10
11
|
const focusEventTokenRegex = /(?:\x1b)?\[[0-9;]*[IO]/g;
|
|
11
12
|
const isFocusEventInput = (value) => {
|
|
12
13
|
if (!value) {
|
|
@@ -41,6 +42,7 @@ const stripFocusArtifacts = (value) => {
|
|
|
41
42
|
};
|
|
42
43
|
export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
43
44
|
const { t } = useI18n();
|
|
45
|
+
const { theme } = useTheme();
|
|
44
46
|
// Profile management
|
|
45
47
|
const [profiles, setProfiles] = useState([]);
|
|
46
48
|
const [activeProfile, setActiveProfile] = useState('');
|
|
@@ -428,129 +430,129 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
428
430
|
switch (field) {
|
|
429
431
|
case 'profile':
|
|
430
432
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
431
|
-
React.createElement(Text, { color: isActive ?
|
|
433
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
432
434
|
isActive ? '❯ ' : ' ',
|
|
433
435
|
t.configScreen.profile),
|
|
434
436
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
435
|
-
React.createElement(Text, { color:
|
|
437
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, profiles.find(p => p.name === activeProfile)?.displayName ||
|
|
436
438
|
activeProfile)))));
|
|
437
439
|
case 'baseUrl':
|
|
438
440
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
439
|
-
React.createElement(Text, { color: isActive ?
|
|
441
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
440
442
|
isActive ? '❯ ' : ' ',
|
|
441
443
|
t.configScreen.baseUrl),
|
|
442
444
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
443
445
|
React.createElement(TextInput, { value: baseUrl, onChange: value => setBaseUrl(stripFocusArtifacts(value)), placeholder: "https://api.openai.com/v1" }))),
|
|
444
446
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
445
|
-
React.createElement(Text, { color:
|
|
447
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, baseUrl || t.configScreen.notSet)))));
|
|
446
448
|
case 'apiKey':
|
|
447
449
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
448
|
-
React.createElement(Text, { color: isActive ?
|
|
450
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
449
451
|
isActive ? '❯ ' : ' ',
|
|
450
452
|
t.configScreen.apiKey),
|
|
451
453
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
452
454
|
React.createElement(TextInput, { value: apiKey, onChange: value => setApiKey(stripFocusArtifacts(value)), placeholder: "sk-...", mask: "*" }))),
|
|
453
455
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
454
|
-
React.createElement(Text, { color:
|
|
456
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, apiKey ? '*'.repeat(Math.min(apiKey.length, 20)) : t.configScreen.notSet)))));
|
|
455
457
|
case 'requestMethod':
|
|
456
458
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
457
|
-
React.createElement(Text, { color: isActive ?
|
|
459
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
458
460
|
isActive ? '❯ ' : ' ',
|
|
459
461
|
t.configScreen.requestMethod),
|
|
460
462
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
461
|
-
React.createElement(Text, { color:
|
|
463
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, requestMethodOptions.find(opt => opt.value === requestMethod)
|
|
462
464
|
?.label || t.configScreen.notSet)))));
|
|
463
465
|
case 'anthropicBeta':
|
|
464
466
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
465
|
-
React.createElement(Text, { color: isActive ?
|
|
467
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
466
468
|
isActive ? '❯ ' : ' ',
|
|
467
469
|
t.configScreen.anthropicBeta),
|
|
468
470
|
React.createElement(Box, { marginLeft: 3 },
|
|
469
|
-
React.createElement(Text, { color:
|
|
471
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
470
472
|
anthropicBeta ? t.configScreen.enabled : t.configScreen.disabled,
|
|
471
473
|
" ",
|
|
472
474
|
t.configScreen.toggleHint))));
|
|
473
475
|
case 'enablePromptOptimization':
|
|
474
476
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
475
|
-
React.createElement(Text, { color: isActive ?
|
|
477
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
476
478
|
isActive ? '❯ ' : ' ',
|
|
477
479
|
t.configScreen.enablePromptOptimization),
|
|
478
480
|
React.createElement(Box, { marginLeft: 3 },
|
|
479
|
-
React.createElement(Text, { color:
|
|
481
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
480
482
|
enablePromptOptimization ? t.configScreen.enabled : t.configScreen.disabled,
|
|
481
483
|
" ",
|
|
482
484
|
t.configScreen.toggleHint))));
|
|
483
485
|
case 'enableAutoCompress':
|
|
484
486
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
485
|
-
React.createElement(Text, { color: isActive ?
|
|
487
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
486
488
|
isActive ? '❯ ' : ' ',
|
|
487
489
|
t.configScreen.enableAutoCompress),
|
|
488
490
|
React.createElement(Box, { marginLeft: 3 },
|
|
489
|
-
React.createElement(Text, { color:
|
|
491
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
490
492
|
enableAutoCompress ? t.configScreen.enabled : t.configScreen.disabled,
|
|
491
493
|
" ",
|
|
492
494
|
t.configScreen.toggleHint))));
|
|
493
495
|
case 'thinkingEnabled':
|
|
494
496
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
495
|
-
React.createElement(Text, { color: isActive ?
|
|
497
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
496
498
|
isActive ? '❯ ' : ' ',
|
|
497
499
|
t.configScreen.thinkingEnabled),
|
|
498
500
|
React.createElement(Box, { marginLeft: 3 },
|
|
499
|
-
React.createElement(Text, { color:
|
|
501
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
500
502
|
thinkingEnabled ? t.configScreen.enabled : t.configScreen.disabled,
|
|
501
503
|
" ",
|
|
502
504
|
t.configScreen.toggleHint))));
|
|
503
505
|
case 'thinkingBudgetTokens':
|
|
504
506
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
505
|
-
React.createElement(Text, { color: isActive ?
|
|
507
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
506
508
|
isActive ? '❯ ' : ' ',
|
|
507
509
|
t.configScreen.thinkingBudgetTokens),
|
|
508
510
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
509
|
-
React.createElement(Text, { color:
|
|
511
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
510
512
|
t.configScreen.enterValue,
|
|
511
513
|
" ",
|
|
512
514
|
thinkingBudgetTokens))),
|
|
513
515
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
514
|
-
React.createElement(Text, { color:
|
|
516
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, thinkingBudgetTokens)))));
|
|
515
517
|
case 'geminiThinkingEnabled':
|
|
516
518
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
517
|
-
React.createElement(Text, { color: isActive ?
|
|
519
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
518
520
|
isActive ? '❯ ' : ' ',
|
|
519
521
|
t.configScreen.geminiThinkingEnabled),
|
|
520
522
|
React.createElement(Box, { marginLeft: 3 },
|
|
521
|
-
React.createElement(Text, { color:
|
|
523
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
522
524
|
geminiThinkingEnabled ? t.configScreen.enabled : t.configScreen.disabled,
|
|
523
525
|
" ",
|
|
524
526
|
t.configScreen.toggleHint))));
|
|
525
527
|
case 'geminiThinkingBudget':
|
|
526
528
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
527
|
-
React.createElement(Text, { color: isActive ?
|
|
529
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
528
530
|
isActive ? '❯ ' : ' ',
|
|
529
531
|
t.configScreen.geminiThinkingBudget),
|
|
530
532
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
531
|
-
React.createElement(Text, { color:
|
|
533
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
532
534
|
t.configScreen.enterValue,
|
|
533
535
|
" ",
|
|
534
536
|
geminiThinkingBudget))),
|
|
535
537
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
536
|
-
React.createElement(Text, { color:
|
|
538
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, geminiThinkingBudget)))));
|
|
537
539
|
case 'responsesReasoningEnabled':
|
|
538
540
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
539
|
-
React.createElement(Text, { color: isActive ?
|
|
541
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
540
542
|
isActive ? '❯ ' : ' ',
|
|
541
543
|
t.configScreen.responsesReasoningEnabled),
|
|
542
544
|
React.createElement(Box, { marginLeft: 3 },
|
|
543
|
-
React.createElement(Text, { color:
|
|
545
|
+
React.createElement(Text, { color: theme.colors.menuSecondary },
|
|
544
546
|
responsesReasoningEnabled ? t.configScreen.enabled : t.configScreen.disabled,
|
|
545
547
|
' ',
|
|
546
548
|
t.configScreen.toggleHint))));
|
|
547
549
|
case 'responsesReasoningEffort':
|
|
548
550
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
549
|
-
React.createElement(Text, { color: isActive ?
|
|
551
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
550
552
|
isActive ? '❯ ' : ' ',
|
|
551
553
|
t.configScreen.responsesReasoningEffort),
|
|
552
554
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
553
|
-
React.createElement(Text, { color:
|
|
555
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, responsesReasoningEffort.toUpperCase()))),
|
|
554
556
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
555
557
|
React.createElement(Select, { options: [
|
|
556
558
|
{ label: t.configScreen.low, value: 'low' },
|
|
@@ -562,49 +564,49 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
562
564
|
} })))));
|
|
563
565
|
case 'advancedModel':
|
|
564
566
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
565
|
-
React.createElement(Text, { color: isActive ?
|
|
567
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
566
568
|
isActive ? '❯ ' : ' ',
|
|
567
569
|
t.configScreen.advancedModel),
|
|
568
570
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
569
|
-
React.createElement(Text, { color:
|
|
571
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, advancedModel || t.configScreen.notSet)))));
|
|
570
572
|
case 'basicModel':
|
|
571
573
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
572
|
-
React.createElement(Text, { color: isActive ?
|
|
574
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
573
575
|
isActive ? '❯ ' : ' ',
|
|
574
576
|
t.configScreen.basicModel),
|
|
575
577
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
576
|
-
React.createElement(Text, { color:
|
|
578
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, basicModel || t.configScreen.notSet)))));
|
|
577
579
|
case 'compactModelName':
|
|
578
580
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
579
|
-
React.createElement(Text, { color: isActive ?
|
|
581
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
580
582
|
isActive ? '❯ ' : ' ',
|
|
581
583
|
t.configScreen.compactModel),
|
|
582
584
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
583
|
-
React.createElement(Text, { color:
|
|
585
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, compactModelName || t.configScreen.notSet)))));
|
|
584
586
|
case 'maxContextTokens':
|
|
585
587
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
586
|
-
React.createElement(Text, { color: isActive ?
|
|
588
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
587
589
|
isActive ? '❯ ' : ' ',
|
|
588
590
|
t.configScreen.maxContextTokens),
|
|
589
591
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
590
|
-
React.createElement(Text, { color:
|
|
592
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
591
593
|
t.configScreen.enterValue,
|
|
592
594
|
" ",
|
|
593
595
|
maxContextTokens))),
|
|
594
596
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
595
|
-
React.createElement(Text, { color:
|
|
597
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, maxContextTokens)))));
|
|
596
598
|
case 'maxTokens':
|
|
597
599
|
return (React.createElement(Box, { key: field, flexDirection: "column" },
|
|
598
|
-
React.createElement(Text, { color: isActive ?
|
|
600
|
+
React.createElement(Text, { color: isActive ? theme.colors.menuSelected : theme.colors.menuNormal },
|
|
599
601
|
isActive ? '❯ ' : ' ',
|
|
600
602
|
t.configScreen.maxTokens),
|
|
601
603
|
isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
602
|
-
React.createElement(Text, { color:
|
|
604
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
603
605
|
t.configScreen.enterValue,
|
|
604
606
|
" ",
|
|
605
607
|
maxTokens))),
|
|
606
608
|
!isCurrentlyEditing && (React.createElement(Box, { marginLeft: 3 },
|
|
607
|
-
React.createElement(Text, { color:
|
|
609
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, maxTokens)))));
|
|
608
610
|
default:
|
|
609
611
|
return null;
|
|
610
612
|
}
|
|
@@ -910,93 +912,93 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
910
912
|
// Render profile creation mode
|
|
911
913
|
if (profileMode === 'creating') {
|
|
912
914
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
913
|
-
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor:
|
|
915
|
+
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor: theme.colors.menuInfo, paddingX: 2 },
|
|
914
916
|
React.createElement(Box, { flexDirection: "column" },
|
|
915
917
|
React.createElement(Gradient, { name: "rainbow" }, t.configScreen.createNewProfile),
|
|
916
|
-
React.createElement(Text, { color:
|
|
918
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.enterProfileName)))),
|
|
917
919
|
React.createElement(Box, { flexDirection: "column" },
|
|
918
|
-
React.createElement(Text, { color:
|
|
920
|
+
React.createElement(Text, { color: theme.colors.menuInfo }, "Profile Name:"),
|
|
919
921
|
React.createElement(Box, { marginLeft: 2 },
|
|
920
922
|
React.createElement(TextInput, { value: newProfileName, onChange: value => setNewProfileName(stripFocusArtifacts(value)), placeholder: t.configScreen.profileNamePlaceholder }))),
|
|
921
923
|
errors.length > 0 && (React.createElement(Box, { marginTop: 1 },
|
|
922
|
-
React.createElement(Text, { color:
|
|
924
|
+
React.createElement(Text, { color: theme.colors.error }, errors[0]))),
|
|
923
925
|
React.createElement(Box, { marginTop: 1 },
|
|
924
926
|
React.createElement(Alert, { variant: "info" }, t.configScreen.createHint))));
|
|
925
927
|
}
|
|
926
928
|
// Render profile deletion confirmation
|
|
927
929
|
if (profileMode === 'deleting') {
|
|
928
930
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
929
|
-
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor:
|
|
931
|
+
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor: theme.colors.menuInfo, paddingX: 2 },
|
|
930
932
|
React.createElement(Box, { flexDirection: "column" },
|
|
931
933
|
React.createElement(Gradient, { name: "rainbow" }, t.configScreen.deleteProfile),
|
|
932
|
-
React.createElement(Text, { color:
|
|
934
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.confirmDelete)))),
|
|
933
935
|
React.createElement(Box, { flexDirection: "column" },
|
|
934
|
-
React.createElement(Text, { color:
|
|
936
|
+
React.createElement(Text, { color: theme.colors.warning },
|
|
935
937
|
"Are you sure you want to delete the profile \"",
|
|
936
938
|
activeProfile,
|
|
937
939
|
"\"?"),
|
|
938
|
-
React.createElement(Text, { color:
|
|
940
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.deleteWarning)),
|
|
939
941
|
errors.length > 0 && (React.createElement(Box, { marginTop: 1 },
|
|
940
|
-
React.createElement(Text, { color:
|
|
942
|
+
React.createElement(Text, { color: theme.colors.error }, errors[0]))),
|
|
941
943
|
React.createElement(Box, { marginTop: 1 },
|
|
942
944
|
React.createElement(Alert, { variant: "warning" }, t.configScreen.confirmHint))));
|
|
943
945
|
}
|
|
944
946
|
if (loading) {
|
|
945
947
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
946
|
-
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor:
|
|
948
|
+
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor: theme.colors.menuInfo, paddingX: 2 },
|
|
947
949
|
React.createElement(Box, { flexDirection: "column" },
|
|
948
950
|
React.createElement(Gradient, { name: "rainbow" }, t.configScreen.title),
|
|
949
|
-
React.createElement(Text, { color:
|
|
951
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.loadingMessage)))),
|
|
950
952
|
React.createElement(Box, { flexDirection: "column" },
|
|
951
953
|
React.createElement(Box, null,
|
|
952
954
|
React.createElement(Spinner, { type: "dots" }),
|
|
953
|
-
React.createElement(Text, { color:
|
|
955
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
954
956
|
" ",
|
|
955
957
|
t.configScreen.fetchingModels)),
|
|
956
958
|
React.createElement(Box, { marginLeft: 2 },
|
|
957
|
-
React.createElement(Text, { color:
|
|
959
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.fetchingHint))),
|
|
958
960
|
React.createElement(Box, { flexDirection: "column", marginTop: 1 },
|
|
959
961
|
React.createElement(Alert, { variant: "info" }, t.configScreen.loadingCancelHint))));
|
|
960
962
|
}
|
|
961
963
|
if (manualInputMode) {
|
|
962
964
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
963
|
-
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor:
|
|
965
|
+
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor: theme.colors.menuInfo, paddingX: 2 },
|
|
964
966
|
React.createElement(Box, { flexDirection: "column" },
|
|
965
967
|
React.createElement(Gradient, { name: "rainbow" }, t.configScreen.manualInputTitle),
|
|
966
|
-
React.createElement(Text, { color:
|
|
968
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.manualInputSubtitle)))),
|
|
967
969
|
loadError && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
968
|
-
React.createElement(Text, { color:
|
|
969
|
-
React.createElement(Text, { color:
|
|
970
|
+
React.createElement(Text, { color: theme.colors.warning }, t.configScreen.loadingError),
|
|
971
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, loadError))),
|
|
970
972
|
React.createElement(Box, { flexDirection: "column" },
|
|
971
|
-
React.createElement(Text, { color:
|
|
973
|
+
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
972
974
|
currentField === 'advancedModel' && t.configScreen.advancedModel,
|
|
973
975
|
currentField === 'basicModel' && t.configScreen.basicModel,
|
|
974
976
|
currentField === 'compactModelName' && t.configScreen.compactModel),
|
|
975
977
|
React.createElement(Box, { marginLeft: 2 },
|
|
976
|
-
React.createElement(Text, { color:
|
|
978
|
+
React.createElement(Text, { color: theme.colors.menuSelected },
|
|
977
979
|
`> ${manualInputValue}`,
|
|
978
|
-
React.createElement(Text, { color:
|
|
980
|
+
React.createElement(Text, { color: theme.colors.menuNormal }, "_")))),
|
|
979
981
|
React.createElement(Box, { flexDirection: "column", marginTop: 1 },
|
|
980
982
|
React.createElement(Alert, { variant: "info" }, t.configScreen.manualInputHint))));
|
|
981
983
|
}
|
|
982
984
|
return (React.createElement(Box, { flexDirection: "column", padding: 1 },
|
|
983
|
-
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor:
|
|
985
|
+
!inlineMode && (React.createElement(Box, { marginBottom: 1, borderStyle: "double", borderColor: theme.colors.menuInfo, paddingX: 2 },
|
|
984
986
|
React.createElement(Box, { flexDirection: "column" },
|
|
985
987
|
React.createElement(Gradient, { name: "rainbow" }, t.configScreen.title),
|
|
986
|
-
React.createElement(Text, { color:
|
|
987
|
-
activeProfile && (React.createElement(Text, { color:
|
|
988
|
+
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.subtitle),
|
|
989
|
+
activeProfile && (React.createElement(Text, { color: theme.colors.menuInfo, dimColor: true },
|
|
988
990
|
t.configScreen.activeProfile,
|
|
989
991
|
" ",
|
|
990
992
|
activeProfile))))),
|
|
991
993
|
React.createElement(Box, { marginBottom: 1 },
|
|
992
|
-
React.createElement(Text, { color:
|
|
994
|
+
React.createElement(Text, { color: theme.colors.warning, bold: true },
|
|
993
995
|
t.configScreen.settingsPosition,
|
|
994
996
|
" (",
|
|
995
997
|
currentFieldIndex + 1,
|
|
996
998
|
"/",
|
|
997
999
|
totalFields,
|
|
998
1000
|
")"),
|
|
999
|
-
totalFields > MAX_VISIBLE_FIELDS && (React.createElement(Text, { color:
|
|
1001
|
+
totalFields > MAX_VISIBLE_FIELDS && (React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, t.configScreen.scrollHint))),
|
|
1000
1002
|
isEditing &&
|
|
1001
1003
|
(currentField === 'profile' ||
|
|
1002
1004
|
currentField === 'requestMethod' ||
|
|
@@ -1004,7 +1006,7 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
1004
1006
|
currentField === 'basicModel' ||
|
|
1005
1007
|
currentField === 'compactModelName' ||
|
|
1006
1008
|
currentField === 'responsesReasoningEffort') ? (React.createElement(Box, { flexDirection: "column" },
|
|
1007
|
-
React.createElement(Text, { color:
|
|
1009
|
+
React.createElement(Text, { color: theme.colors.menuSelected },
|
|
1008
1010
|
"\u276F ",
|
|
1009
1011
|
currentField === 'profile' && t.configScreen.profile.replace(':', ''),
|
|
1010
1012
|
currentField === 'requestMethod' && t.configScreen.requestMethod.replace(':', ''),
|
|
@@ -1015,7 +1017,7 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
1015
1017
|
t.configScreen.responsesReasoningEffort.replace(':', '')),
|
|
1016
1018
|
React.createElement(Box, { marginLeft: 3, marginTop: 1 },
|
|
1017
1019
|
currentField === 'profile' && (React.createElement(Box, { flexDirection: "column" },
|
|
1018
|
-
profiles.length > 1 && (React.createElement(Text, { color:
|
|
1020
|
+
profiles.length > 1 && (React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, "Scroll to see more profiles (\u2191\u2193)")),
|
|
1019
1021
|
React.createElement(Select, { options: profiles.map(p => ({
|
|
1020
1022
|
label: `${p.displayName}${p.isActive ? ' (Active)' : ''}`,
|
|
1021
1023
|
value: p.name,
|
|
@@ -1027,11 +1029,11 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
1027
1029
|
} }),
|
|
1028
1030
|
React.createElement(Box, { flexDirection: "row", marginTop: 1 },
|
|
1029
1031
|
React.createElement(Box, { marginRight: 2 },
|
|
1030
|
-
React.createElement(Text, { color:
|
|
1031
|
-
React.createElement(Text, { color:
|
|
1032
|
+
React.createElement(Text, { color: theme.colors.menuSelected }, t.configScreen.newProfile),
|
|
1033
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, " (n)")),
|
|
1032
1034
|
React.createElement(Box, null,
|
|
1033
|
-
React.createElement(Text, { color:
|
|
1034
|
-
React.createElement(Text, { color:
|
|
1035
|
+
React.createElement(Text, { color: theme.colors.error }, t.configScreen.deleteProfileShort),
|
|
1036
|
+
React.createElement(Text, { color: theme.colors.menuSecondary }, " (d)"))))),
|
|
1035
1037
|
currentField === 'requestMethod' && (React.createElement(Select, { options: requestMethodOptions, defaultValue: requestMethod, onChange: value => {
|
|
1036
1038
|
setRequestMethod(value);
|
|
1037
1039
|
setIsEditing(false);
|
|
@@ -1039,7 +1041,7 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
1039
1041
|
(currentField === 'advancedModel' ||
|
|
1040
1042
|
currentField === 'basicModel' ||
|
|
1041
1043
|
currentField === 'compactModelName') && (React.createElement(Box, { flexDirection: "column" },
|
|
1042
|
-
searchTerm && React.createElement(Text, { color:
|
|
1044
|
+
searchTerm && React.createElement(Text, { color: theme.colors.menuInfo },
|
|
1043
1045
|
"Filter: ",
|
|
1044
1046
|
searchTerm),
|
|
1045
1047
|
React.createElement(Select, { options: getCurrentOptions(), defaultValue: getCurrentValue(), onChange: handleModelChange }))),
|
|
@@ -1080,8 +1082,8 @@ export default function ConfigScreen({ onBack, onSave, inlineMode = false, }) {
|
|
|
1080
1082
|
return visibleFields.map(field => renderField(field));
|
|
1081
1083
|
})())),
|
|
1082
1084
|
errors.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
|
|
1083
|
-
React.createElement(Text, { color:
|
|
1084
|
-
errors.map((error, index) => (React.createElement(Text, { key: index, color:
|
|
1085
|
+
React.createElement(Text, { color: theme.colors.error, bold: true }, t.configScreen.errors),
|
|
1086
|
+
errors.map((error, index) => (React.createElement(Text, { key: index, color: theme.colors.error },
|
|
1085
1087
|
"\u2022 ",
|
|
1086
1088
|
error))))),
|
|
1087
1089
|
!(isEditing &&
|