@best-agent/cli 0.0.2-beta.8 → 0.0.3-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -181
  3. package/dist/launcher.js +32 -0
  4. package/package.json +15 -27
  5. package/dist/best-agent-native-bridge.d.ts +0 -389
  6. package/dist/best-agent-native-bridge.js +0 -4645
  7. package/dist/cli-storage.d.ts +0 -5
  8. package/dist/cli-storage.js +0 -7
  9. package/dist/dimsdk/ask-user.d.ts +0 -21
  10. package/dist/dimsdk/ask-user.js +0 -131
  11. package/dist/dimsdk/cli/version.d.ts +0 -6
  12. package/dist/dimsdk/cli/version.js +0 -36
  13. package/dist/dimsdk/compat/archships/dim-agent/runtime-host.d.ts +0 -49
  14. package/dist/dimsdk/compat/archships/dim-agent/runtime-host.js +0 -215
  15. package/dist/dimsdk/compat/runtime-host.d.ts +0 -2
  16. package/dist/dimsdk/compat/runtime-host.js +0 -2
  17. package/dist/dimsdk/core/debug-log.d.ts +0 -8
  18. package/dist/dimsdk/core/debug-log.js +0 -100
  19. package/dist/dimsdk/core/env.d.ts +0 -26
  20. package/dist/dimsdk/core/env.js +0 -130
  21. package/dist/dimsdk/core/markdown/sanitize.d.ts +0 -2
  22. package/dist/dimsdk/core/markdown/sanitize.js +0 -43
  23. package/dist/dimsdk/core/markdown/wrap.d.ts +0 -9
  24. package/dist/dimsdk/core/markdown/wrap.js +0 -139
  25. package/dist/dimsdk/core/markdown.d.ts +0 -18
  26. package/dist/dimsdk/core/markdown.js +0 -62
  27. package/dist/dimsdk/core/model.d.ts +0 -273
  28. package/dist/dimsdk/core/model.js +0 -16
  29. package/dist/dimsdk/core/observability/perf-log.d.ts +0 -18
  30. package/dist/dimsdk/core/observability/perf-log.js +0 -236
  31. package/dist/dimsdk/core/store/agent-event-mappers.d.ts +0 -26
  32. package/dist/dimsdk/core/store/agent-event-mappers.js +0 -109
  33. package/dist/dimsdk/core/store/message-mutations.d.ts +0 -105
  34. package/dist/dimsdk/core/store/message-mutations.js +0 -1528
  35. package/dist/dimsdk/core/store/semantic-readers.d.ts +0 -2
  36. package/dist/dimsdk/core/store/semantic-readers.js +0 -4
  37. package/dist/dimsdk/core/store/transcript-projector.d.ts +0 -164
  38. package/dist/dimsdk/core/store/transcript-projector.js +0 -580
  39. package/dist/dimsdk/core/tool-metadata.d.ts +0 -12
  40. package/dist/dimsdk/core/tool-metadata.js +0 -70
  41. package/dist/dimsdk/core/transcript-part-id.d.ts +0 -6
  42. package/dist/dimsdk/core/transcript-part-id.js +0 -22
  43. package/dist/dimsdk/i18n/index.d.ts +0 -18
  44. package/dist/dimsdk/i18n/index.js +0 -141
  45. package/dist/dimsdk/i18n/locales/en.d.ts +0 -988
  46. package/dist/dimsdk/i18n/locales/en.js +0 -987
  47. package/dist/dimsdk/i18n/locales/index.d.ts +0 -1976
  48. package/dist/dimsdk/i18n/locales/index.js +0 -8
  49. package/dist/dimsdk/i18n/locales/zh-CN.d.ts +0 -988
  50. package/dist/dimsdk/i18n/locales/zh-CN.js +0 -987
  51. package/dist/dimsdk/i18n/types.d.ts +0 -13
  52. package/dist/dimsdk/i18n/types.js +0 -2
  53. package/dist/dimsdk/shared/value-normalizers.d.ts +0 -7
  54. package/dist/dimsdk/shared/value-normalizers.js +0 -48
  55. package/dist/dimsdk-tui.bundle-size.json +0 -169
  56. package/dist/dimsdk-tui.bundle.js +0 -330756
  57. package/dist/goatchain-adapter.d.ts +0 -41
  58. package/dist/goatchain-adapter.js +0 -499
  59. package/dist/index.d.ts +0 -3
  60. package/dist/index.js +0 -1405
  61. package/dist/native-runtime-bridge.d.ts +0 -387
  62. package/dist/native-runtime-bridge.js +0 -4624
  63. package/dist/provider-config-env.d.ts +0 -7
  64. package/dist/provider-config-env.js +0 -286
  65. package/dist/provider-model-limit-index.generated.d.ts +0 -3
  66. package/dist/provider-model-limit-index.generated.js +0 -7818
  67. package/dist/provider-model-limits.d.ts +0 -8
  68. package/dist/provider-model-limits.js +0 -43
  69. package/dist/runtime.d.ts +0 -47
  70. package/dist/runtime.js +0 -516
@@ -1,987 +0,0 @@
1
- export default {
2
- common: {
3
- apply: "Apply",
4
- cancel: "Cancel",
5
- close: "Close",
6
- copy: "Copy",
7
- confirm: "Confirm",
8
- refresh: "Refresh",
9
- yes: "Yes",
10
- no: "No",
11
- exit: "Exit",
12
- back: "Back",
13
- next: "Next",
14
- save: "Save",
15
- empty: "—",
16
- unknownError: "Unknown error",
17
- inputClearTip: "Ctrl+C clear",
18
- },
19
- configDialog: {
20
- title: "Settings",
21
- hint: "Tab/Shift+Tab switch field • Enter Apply • Esc Cancel",
22
- modelsTitle: "Models (custom)",
23
- modelsPlaceholder: "model-a, model-b",
24
- contextWindowTitle: "Context Window",
25
- contextWindowLocked: "Context Window (model-defined)",
26
- contextWindowPlaceholder: "128000",
27
- temperatureTitle: "Temperature",
28
- temperaturePlaceholder: "0.7",
29
- temperatureValidationError: 'Temperature: only numbers and "."',
30
- maxTokensTitle: "Max Output Tokens",
31
- maxTokensPlaceholder: "8192",
32
- baseUrlTitle: "Base URL (OpenAI-compatible)",
33
- baseUrlPlaceholder: "https://api.openai.com/v1",
34
- apiKeyCurrentPrefix: "Current:",
35
- apiKeyNotSet: "(not set)",
36
- apiKeyTitle: "API Key",
37
- apiKeyPlaceholder: "Paste a new key to update (leave empty to keep)",
38
- interleavedThinkingTitle: "Interleaved Thinking (Press Space toggle)",
39
- interleavedThinkingLocked: "Interleaved Thinking (model-defined)",
40
- interleavedThinkingOpen: "Open",
41
- interleavedThinkingClose: "Close",
42
- tipIntensityTitle: "Tip Intensity",
43
- tipIntensityOff: "Off",
44
- tipIntensityLow: "Low",
45
- tipIntensityStandard: "Standard",
46
- shortcutsTitle: "Shortcuts",
47
- shortcutCommandsLabel: "Commands",
48
- shortcutTimelineLabel: "Timeline",
49
- shortcutNewSessionLabel: "New session",
50
- shortcutsPlaceholder: "e.g. mod+p",
51
- shortcutsHint: "Use mod/ctrl/alt/shift + key (a-z, 0-9, F1-F12).",
52
- },
53
- languageDialog: {
54
- title: "Language",
55
- hint: "Enter Apply • Esc Cancel",
56
- languageTitle: "Language",
57
- languageEnglish: "English",
58
- languageChinese: "简体中文",
59
- },
60
- toolSettingsDialog: {
61
- title: "Tool Settings",
62
- hint: "Enter Apply • Esc Cancel",
63
- websearchTitle: "WebSearch API Key",
64
- apiKeyCurrentPrefix: "Current:",
65
- apiKeyNotSet: "(not set)",
66
- apiKeyPlaceholder: "Paste Serper API key",
67
- },
68
- pluginsDialog: {
69
- title: "Plugins",
70
- hint: "Select a plugin to configure • Esc Close",
71
- serperSearch: "Serper Search",
72
- serperSearchDetail: "Web search via Serper API",
73
- configured: "Configured",
74
- notConfigured: "Not configured",
75
- serperConfigTitle: "Serper Search Settings",
76
- serperConfigHint: "Enter Apply • Esc Cancel",
77
- },
78
- mcpSettingsDialog: {
79
- title: "MCP",
80
- hint: "Edit the mcp.json file to configure MCP servers • Esc Close",
81
- configFileLabel: "Config file:",
82
- noServersHint: "No MCP servers configured yet.",
83
- serverCount: "{count} server(s) configured",
84
- guideText: "Edit the file above to add or modify MCP servers.",
85
- openFile: "Open File",
86
- reload: "Reload",
87
- close: "Close",
88
- reloaded: "MCP config reloaded.",
89
- reloadFailed: "Failed to reload: {error}",
90
- status: "Status",
91
- toolCount: "Tools",
92
- disabled: "disabled",
93
- testConnection: "Test",
94
- testing: "Testing connections...",
95
- testComplete: "Test complete.",
96
- testPartial: "Test complete with errors.",
97
- testFailed: "Connection failed: {error}",
98
- invalidJson: "Invalid JSON: {error}",
99
- invalidShape: 'Invalid MCP JSON: expected "mcpServers".',
100
- invalidServer: "Invalid MCP server: {name}",
101
- noServers: "No MCP servers found.",
102
- lintOk: "JSON syntax OK",
103
- lintAt: "{error} (line {line}, col {column})",
104
- lintUnclosed: "Unclosed {char} (line {line}, col {column})",
105
- lintInvalid: "{error}",
106
- exampleFormat: "Example format:",
107
- },
108
- toolApprovalsDialog: {
109
- title: "Tool Approvals",
110
- useAlways: "Always",
111
- useAuto: "Auto",
112
- useNormal: "Normal",
113
- useStrict: "Strict",
114
- close: "Close",
115
- focusedTitleAlways: "ALWAYS",
116
- focusedTitleAuto: "AUTO",
117
- focusedTitleNormal: "NORMAL",
118
- focusedTitleStrict: "STRICT",
119
- focusedTitleClose: "CLOSE",
120
- focusedDescAlways: "Auto-approve approval requests with reusable scopes. Sensitive one-time requests still prompt.",
121
- focusedDescAuto: "Auto-approve non-high-risk approvals. Prompt for high-risk approvals.",
122
- focusedDescNormal: "Auto-approve read-only tools. Prompt before write/execute tools.",
123
- focusedDescStrict: "Require confirmation for every tool call (safest, slowest).",
124
- focusedDescClose: "Close this dialog without changing the current setting.",
125
- currentPrefix: "Current: {mode}",
126
- tip: "Tip: use ↑/↓ to move, Enter to confirm, Esc to close.",
127
- },
128
- settingsDialog: {
129
- pendingApproval: "Resolve the pending approval before changing settings.",
130
- invalidShortcut: "Invalid shortcut for {label}: {value}",
131
- shortcutCommands: "Commands shortcut",
132
- shortcutTimeline: "Timeline shortcut",
133
- shortcutNewSession: "New session shortcut",
134
- toolApprovalsApplied: "Tool approvals: {mode}",
135
- applied: "Settings applied.",
136
- },
137
- exitAppDialog: {
138
- title: "Exit DimCode",
139
- confirm: "Exit now?",
140
- warning: "An agent response is still in progress. Exiting will interrupt it.",
141
- reasonPrefix: "Reason: {reason}",
142
- },
143
- approvalDialog: {
144
- title: "Approve Tool Permission",
145
- toolLabel: "Tool: {tool}{suffix}",
146
- toolLabelSuffix: " ({description})",
147
- permissionLabel: "Permission: {permission} ({risk})",
148
- descriptionLabel: "Description: {description}",
149
- commandLabel: "Command:",
150
- inlineActionHint: "↑/← Prev ↓/→ Next Enter Confirm 1/2/3 Choose",
151
- inlineActionHintCompact: "←/→ Move Enter Confirm 1/2/3 Choose",
152
- buttons: {
153
- approve: "Approve",
154
- alwaysApprove: "Always approve",
155
- deny: "Deny",
156
- always: "Always",
157
- ok: "OK",
158
- no: "No",
159
- y: "Y",
160
- all: "All",
161
- n: "N",
162
- },
163
- },
164
- askUserDialog: {
165
- noQuestionsTitle: "No Questions",
166
- noQuestionsBody: "No questions to answer.",
167
- title: "Question {index}/{total}: {header}",
168
- defaultHeader: "Question",
169
- prev: "Prev",
170
- next: "Next",
171
- submit: "Submit",
172
- otherOption: "Other",
173
- otherDetail: "Provide a custom answer",
174
- inlineHintOptions: "Keys: ↑↓ to move options, ←→ to switch buttons, Enter to activate.",
175
- inlineHintMulti: "Multi-select: Space toggles checked state.",
176
- inlineHintButtons: "Tab to buttons, ←→ to switch, Enter to activate, ↑ returns to options.",
177
- inlineHintNav: "Ctrl+Left / Ctrl+Right (or Ctrl+A / Ctrl+E) to switch questions.",
178
- inlineHintSubmit: "Ctrl+Enter submits, Esc cancels.",
179
- inlineButtonPrev: "[Prev]",
180
- inlineButtonNext: "[Next]",
181
- inlineButtonSubmit: "[Submit]",
182
- inlineButtonCancel: "[Cancel]",
183
- inlineActionHint: "Space Select ←/→ Buttons Enter Activate Esc Cancel",
184
- inlineActionHintCompact: "←/→ Buttons Enter Activate Esc Cancel",
185
- optionsSummaryAll: "{count} options",
186
- optionsSummaryVisibleMore: "{count} options ({start}-{end}) ↓ more",
187
- multiSelectHint: "[Multi-select] Space to toggle, Enter to confirm",
188
- singleSelectHint: "[Single-select] Use arrows, Enter to confirm",
189
- customAnswerLabel: "Custom answer:",
190
- customAnswerPlaceholder: "Type your answer...",
191
- otherPlaceholder: "Other selected — type your answer and press Enter to fill.",
192
- },
193
- nextApiOAuthDialog: {
194
- title: "DimCode OAuth Login",
195
- copyUrl: "Copy URL",
196
- submitCallback: "Submit callback",
197
- refreshModels: "Refresh models",
198
- refreshingModels: "Refreshing...",
199
- login: "Login",
200
- logout: "Logout",
201
- statusTitle: "Status",
202
- statusAuthenticated: "✓ Logged in as {email}",
203
- statusLoading: "⏳ Authenticating...",
204
- statusNotLoggedIn: "✗ Not logged in",
205
- instructionAuthenticated: "Use ↑↓/1-9 to choose a model, ←→ buttons, Enter to confirm",
206
- instructionLoading: "Press C to copy the URL below if browser did not open",
207
- instructionNeedsSetup: "Check the DimCode OAuth client redirect_uri, scopes, and enabled state, then try again",
208
- instructionWithUrl: "Press C to copy the OAuth URL, Enter to open browser, or paste the callback below",
209
- instructionUnauthed: "Press Enter to login with DimCode OAuth, or Esc to close",
210
- oauthUrlTitleLoading: "OAuth URL (copy if browser did not open)",
211
- oauthUrlTitleReady: "OAuth URL (ready to use)",
212
- callbackUrlTitle: "Callback URL",
213
- callbackPlaceholder: "Paste the final localhost callback URL or raw code",
214
- callbackEmpty: "Paste the callback URL or authorization code.",
215
- callbackParseFailed: "Could not parse the pasted callback URL.",
216
- callbackMissingCode: "Pasted callback is missing the code parameter.",
217
- callbackStateMismatch: "OAuth state mismatch. Restart sign-in.",
218
- scrollIndicator: " [{start}-{end} of {total}]",
219
- selectModelTitle: "Select Model (↑↓/1-9, Confirm to apply){indicator}",
220
- aboutTitle: "About DimCode OAuth",
221
- setupTitle: "OAuth login error",
222
- aboutBulletOne: "• Uses the built-in DimCode OAuth client",
223
- aboutBulletTwo: "• Fetches relay models after login and stores provider config",
224
- aboutBulletThree: "• Uses OAuth refresh tokens instead of a long-lived API key",
225
- viewAllPlans: "View All Plans →",
226
- defaultAccount: "DimCode Account",
227
- toast: {
228
- generatingUrl: "Generating OAuth URL...",
229
- urlReady: "OAuth URL ready! Copy it or press Enter to open browser.",
230
- generateUrlFailed: "Failed to generate OAuth URL: {error}",
231
- localCallbackUnavailable: "Local OAuth callback unavailable: {error}. Paste callback manually.",
232
- startingLogin: "Starting OAuth login...",
233
- browserOpened: "Browser opened. If not, copy the URL from the dialog.",
234
- copyUrlToLogin: "Copy the OAuth URL from the dialog to login.",
235
- urlCopied: "OAuth URL copied to clipboard.",
236
- urlCopyFailed: "Failed to copy OAuth URL.",
237
- callbackRejected: "OAuth callback rejected: {error}",
238
- authSuccess: "Successfully authenticated with DimCode OAuth!",
239
- loginFailed: "OAuth login failed: {error}",
240
- loggedOut: "Logged out from DimCode OAuth",
241
- loggedOutWithRemoteWarning: "Logged out from DimCode OAuth, but remote revoke failed: {error}",
242
- logoutFailed: "Logout failed: {error}",
243
- initFailed: "Dialog initialization error: {error}",
244
- modelSwitched: "Model switched to {model}",
245
- selectModelFailed: "Failed to select model: {error}",
246
- modelsRefreshed: "Refreshed {count} models.",
247
- modelsRefreshFailed: "Failed to refresh models: {error}",
248
- },
249
- },
250
- debugTryDialog: {
251
- titleDebug: "Debug",
252
- titleDebugging: "Debugging",
253
- copy: "copy",
254
- proceed: "proceed",
255
- fixed: "fixed",
256
- body: "I’ve added debug logs (and possibly a fix). Please try to reproduce the issue now, then choose an outcome.",
257
- },
258
- exitSessionDialog: {
259
- title: "Exit Session",
260
- confirm: "Exit the current session and return to Home?",
261
- note: "Next message will start a new session.",
262
- },
263
- messageActionsDialog: {
264
- title: "Message Actions",
265
- revert: "Revert messages",
266
- revertWithFiles: "Revert messages and file changes",
267
- revertKeepFiles: "Revert messages (keep file changes)",
268
- revertFilesOnly: "Revert file changes only",
269
- copy: "Copy message text to clipboard",
270
- fork: "Fork create a new session",
271
- pin: "Pin message",
272
- unpin: "Unpin message",
273
- },
274
- pathPickerDialog: {
275
- hint: "↑/↓ select • Tab complete • Enter confirm • Esc close",
276
- },
277
- providerConnectDialog: {
278
- title: "Connect {provider}",
279
- providerFallback: "Provider",
280
- hint: "Tab switch • Ctrl+C clear • Enter Apply",
281
- hintOpenAI: "Tab switch • Ctrl+C clear • Enter Apply",
282
- hintGemini: "Tab switch • Ctrl+C clear • Enter Apply",
283
- hintAnthropic: "Tab switch • Ctrl+C clear • Enter Apply",
284
- hintGeneric: "Tab switch • Ctrl+C clear • Enter Apply",
285
- applyingHint: "Testing connection, please wait...",
286
- applyingButton: "Applying...",
287
- testConnection: "Test connection",
288
- baseUrlStatusAutoFix: "Auto-fix: {value}",
289
- baseUrlStatusInvalid: "Base URL must be http(s)",
290
- baseUrlTitle: "Base URL",
291
- baseUrlPlaceholder: "https://api.example.com/v1",
292
- apiKeyTitle: "API Key",
293
- apiKeyPlaceholder: "Paste a new key to update (leave empty to keep)",
294
- apiKeyCurrent: "Current: {value}",
295
- apiKeyNotSet: "Current: (not set)",
296
- clearKey: "Delete",
297
- useDetectedKey: "Use {name}",
298
- },
299
- redoConfirmDialog: {
300
- title: "Confirm Redo",
301
- body: "Are you sure you want to restore the reverted messages?",
302
- },
303
- renameSessionDialog: {
304
- title: "Rename session",
305
- label: "Session name",
306
- placeholder: "e.g. Planning notes",
307
- },
308
- sessionsDialog: {
309
- timeNow: "now",
310
- timeMinutes: "{count} min",
311
- timeHours: "{count} hr",
312
- timeDays: "{count} d",
313
- newSession: "New session",
314
- title: "Sessions ({count})",
315
- titleScoped: "Sessions ({count}/{total})",
316
- scope: "Scope: {cwd}",
317
- loading: "Loading…",
318
- confirmDelete: "Confirm delete: press Delete again",
319
- header: "{count} sessions • Arrow keys to navigate • Enter selects{range}{activity}",
320
- headerRange: " • Showing {start}-{end}",
321
- runningCount: "{count} running",
322
- pausedCount: "{count} waiting confirmation",
323
- hint: "Type to jump • ←/→ buttons • Enter confirm • Esc close",
324
- focusPrefix: "Focus: {focus}",
325
- focusList: "List",
326
- focusButtons: "Buttons",
327
- noSessionsCwd: "No sessions in this cwd",
328
- noSessions: "No saved sessions yet",
329
- nodeOnly: "Sessions are only available in Node/CLI mode.",
330
- newSessionTitle: "New Session",
331
- newSessionTarget: "a new session",
332
- busy: {
333
- agentResponding: "Agent is still responding",
334
- awaitingAskUser: "Awaiting AskUser answers",
335
- awaitingToolApproval: "Awaiting tool approval",
336
- pendingApproval: "Pending approval",
337
- },
338
- buttons: {
339
- open: "Open",
340
- delete: "Delete",
341
- deleteConfirm: "Delete (confirm)",
342
- scope: "Scope: {scope}",
343
- scopeCwd: "CWD",
344
- scopeAll: "All",
345
- refresh: "Refresh",
346
- },
347
- },
348
- switchSessionDialog: {
349
- title: "Switch Session",
350
- confirm: "Switch & Interrupt",
351
- target: "Switch to {target}?",
352
- fallback: "Switch sessions now?",
353
- warning: "This will interrupt the current response/flow in the active session.",
354
- reason: "Reason: {reason}",
355
- },
356
- themeDialog: {
357
- title: "Theme",
358
- hint: "Enter Apply • Esc Cancel",
359
- mode: "Mode",
360
- light: "Light",
361
- dark: "Dark",
362
- tip: "Tip: default follows system theme.",
363
- },
364
- commandPalette: {
365
- searchPlaceholder: "Search…",
366
- noMatches: "No matches",
367
- hint: "Type to filter • Enter: open • Esc: close",
368
- title: "Commands",
369
- },
370
- help: {
371
- title: "Help",
372
- modeLabel: "Mode: {mode}",
373
- modeDetail: "Current assistant mode.",
374
- shortcutsLabel: "Shortcuts",
375
- onboarding: 'Welcome! Quick start:\n1) /connect: connect a provider\n2) /models: pick a model\n3) send "hello" to start chatting\nTip: {commandsKey} opens command palette.',
376
- items: {
377
- help: "Help and shortcuts (F1)",
378
- commands: "Command palette (Ctrl+P)",
379
- back: "Back to the previous jump",
380
- status: "Toggle status details",
381
- },
382
- },
383
- commands: {
384
- help: {
385
- label: "Help",
386
- detail: "Shortcuts + common commands (F1)",
387
- },
388
- sessions: {
389
- label: "Sessions",
390
- detail: "Pick or create a session (/sessions)",
391
- },
392
- timeline: {
393
- label: "Timeline",
394
- detail: "Jump to a user message (/timeline)",
395
- },
396
- trace: {
397
- label: "Request Trace",
398
- detail: "Inspect the current session request trace (/trace)",
399
- },
400
- newSession: {
401
- label: "New Session",
402
- detail: "Start a new session (/new)",
403
- },
404
- connectProvider: {
405
- label: "Connect Provider",
406
- detail: "Connect a provider (/connect)",
407
- },
408
- models: {
409
- label: "Models",
410
- detail: "Select a model (/models)",
411
- },
412
- toolApprovals: {
413
- label: "Tool Approvals",
414
- detail: "Configure approvals (/approvals)",
415
- },
416
- toolSettings: {
417
- label: "Tool Settings",
418
- detail: "Configure tool-specific settings (/tool-settings)",
419
- },
420
- mcpHub: {
421
- label: "MCP",
422
- detail: "Manage MCP connectors and settings (/mcp)",
423
- },
424
- plugins: {
425
- label: "Plugins",
426
- detail: "Manage plugins (/plugins)",
427
- },
428
- mcpSettings: {
429
- label: "MCP (Advanced JSON)",
430
- detail: "Configure raw MCP server JSON (/mcp-settings)",
431
- },
432
- language: {
433
- label: "Language",
434
- detail: "Switch UI language (/language)",
435
- },
436
- settings: {
437
- label: "Settings",
438
- detail: "Custom provider settings (/settings, Ctrl+K)",
439
- },
440
- },
441
- homePage: {
442
- multilineTitle: "Multiline Text",
443
- multilineTitleWithCount: "Multiline Text ({count} lines)",
444
- providerCustom: "Custom",
445
- reviewPrompt: "help me review the code changes",
446
- footerCwd: "cwd {cwd}",
447
- hints: {
448
- switchMode: "switch mode",
449
- commands: "commands",
450
- },
451
- tips: {
452
- greeting: "Welcome back! Use {commandsKey} for commands, or /connect to set up a provider.",
453
- commandsAlias: "Tip: {key} opens the command palette.",
454
- },
455
- prompts: {
456
- help: "Help & shortcuts (F1)",
457
- sessions: "List/pick sessions",
458
- connect: "Connect a provider",
459
- models: "Select a model",
460
- newSession: "Start a new session",
461
- approvals: "Configure tool approvals (auto/normal/strict)",
462
- commands: "Open command palette",
463
- toolSettings: "Configure tool-specific settings",
464
- mcpSettings: "Open MCP",
465
- plugins: "Manage plugins",
466
- language: "Switch UI language",
467
- theme: "Select a theme",
468
- status: "Toggle status details",
469
- review: "Review code changes",
470
- skills: "List loaded skills",
471
- exit: "Exit the application",
472
- debug: "Debug dialog (chat)",
473
- settings: "Custom provider settings",
474
- },
475
- commandPalette: {
476
- connect: "Connect a provider",
477
- models: "Select a model",
478
- },
479
- commands: {
480
- debugLabel: "Debug",
481
- debugDetail: "Runtime stats (/debug)",
482
- },
483
- toast: {
484
- approvalsUsage: "Use /approvals (no on/off).",
485
- customProviderOnly: "Settings only for custom providers.",
486
- redoChatOnly: "Redo is only available in the chat view.",
487
- retryChatOnly: "Retry is only available in the chat view.",
488
- pinsChatOnly: "Pins are only available in the chat view.",
489
- renameChatOnly: "Rename is only available in the chat view (/rename <title>).",
490
- commandRemoved: "This command is no longer available: {command}",
491
- helpAliasRemoved: "Press F1 for help.",
492
- deleteConfirm: "Press Delete again to confirm.",
493
- themeToggled: "Theme: {mode}",
494
- pasteImagePending: "Image is still processing. Please wait.",
495
- },
496
- },
497
- chatPage: {
498
- placeholder: "Ask anything... (newline: Shift+Enter or Ctrl+J)",
499
- placeholderAwaitingApproval: "Blocked by approval: select Approve / Deny to continue.",
500
- reviewPrompt: "help me review the code changes",
501
- notification: {
502
- approvalTitle: "[Approval Required] Tool Permission",
503
- approvalMessage: "DimCode is waiting for tool approval: {tool}.",
504
- askUserTitle: "[Action Required] Question",
505
- askUserMessage: "DimCode is waiting for your answer in the active terminal.",
506
- doneTitle: "[Task Complete]",
507
- doneMessage: "DimCode finished this task.",
508
- doneMessageWithDuration: "DimCode finished this task in {duration}.",
509
- doneMessageWithTools: "DimCode finished this task after {tools} tool call(s).",
510
- doneMessageWithToolsAndDuration: "DimCode finished this task in {duration} with {tools} tool call(s).",
511
- },
512
- headerStats: "{messages} msgs · {tokens} tok",
513
- contextChip: "≈{pct}% / {tokens} tok",
514
- contextChipCompact: "{pct}%",
515
- thinkingWords: "Coalescing,Thinking,Reasoning,Planning,Analyzing,Synthesizing,Refining,Composing",
516
- modelFallback: "model",
517
- mode: {
518
- plan: "plan",
519
- agent: "agent",
520
- debug: "debug",
521
- },
522
- status: {
523
- approvalsAuto: "AUTO",
524
- approvalsAll: "ALL",
525
- blockedByApproval: "Blocked by approval",
526
- awaitingApprovalAction: "Waiting for your approval: choose Approve / Deny to continue.",
527
- },
528
- footer: {
529
- dragSelect: "drag to select",
530
- openLink: "Ctrl+Click to open files or links",
531
- esc: "esc",
532
- approvalPaused: "⏸ Paused",
533
- approvalPausedHint: "Waiting for approval (Enter to choose).",
534
- shortcuts: "Ctrl+K: config Ctrl+O: expand/collapse tools & thinking Cmd+Delete/Ctrl+W: clear input Tab: switch mode {commandsKey}: commands",
535
- shortcutsCompact: "Ctrl+K: config Ctrl+O: tools/thinking Cmd+Delete/Ctrl+W: clear Tab: switch mode {commandsKey}: commands",
536
- shortcutsMicro: "Ctrl+O: tools {commandsKey}: commands",
537
- shortcutsMini: "{commandsKey}: commands",
538
- },
539
- session: {
540
- new: "new",
541
- },
542
- restore: {
543
- loading: "Restoring session...",
544
- error: "Failed to restore this session.",
545
- },
546
- timeline: {
547
- title: "Timeline",
548
- empty: "(empty)",
549
- filterAll: "All messages",
550
- filterUser: "User messages",
551
- filterTool: "Tool calls",
552
- },
553
- pins: {
554
- title: "Pinned",
555
- empty: "(empty)",
556
- },
557
- jumpToBottom: {
558
- button: "↓",
559
- },
560
- prompts: {
561
- help: "Help & shortcuts (F1)",
562
- newSession: "Start a new session",
563
- resume: "Resume the paused queue",
564
- sessions: "List/pick sessions",
565
- timeline: "Jump to a user message",
566
- trace: "Inspect the current session request/event trace",
567
- pins: "Open pinned messages",
568
- pin: "Pin the last message",
569
- back: "Back to previous jump",
570
- connect: "Connect a provider",
571
- models: "Select a model",
572
- theme: "Switch UI theme",
573
- approvals: "Configure tool approvals (auto/normal/strict)",
574
- commands: "Open command palette",
575
- toolSettings: "Configure tool-specific settings",
576
- mcpSettings: "Open MCP",
577
- plugins: "Manage plugins",
578
- language: "Switch UI language",
579
- status: "Toggle status details",
580
- review: "Review code changes",
581
- retry: "Retry the last user message",
582
- compact: "Compact session context",
583
- rename: "Rename current session",
584
- skills: "List loaded skills",
585
- exit: "Exit the application",
586
- debug: "Debug dialog",
587
- settings: "Custom provider settings",
588
- },
589
- commands: {
590
- pinsLabel: "Pins",
591
- pinsDetail: "Open pinned messages",
592
- backLabel: "Back",
593
- backDetail: "Return to the previous jump",
594
- debugLabel: "Debug",
595
- debugDetail: "Runtime stats (/debug)",
596
- statusLabel: "Status",
597
- statusDetail: "Toggle status details",
598
- themeLabel: "Theme",
599
- themeDetail: "Switch color theme",
600
- },
601
- tips: {
602
- contextWarn: "Tip: Context is getting full. Consider /compact or /new to keep replies sharp.",
603
- contextCritical: "Tip: You are near the context limit. Start a new session with /new (or /compact first).",
604
- timeline: "Tip: Long chat? Use /tl to jump back to a specific user message.",
605
- timelineAlias: "Tip: /tl is a short alias for /timeline.",
606
- commandsAlias: "Tip: {key} opens the command palette.",
607
- errorRecovery: "Tip: If something failed, try /compact or /new.",
608
- greeting: "Welcome back! Use {commandsKey} for commands, or /connect to set up a provider.",
609
- compactDelight: "Nice! Keeping context lean helps.",
610
- addTests: "All set! Want me to add tests? Reply “yes” or “ok”.",
611
- },
612
- trace: {
613
- title: "Session Trace",
614
- loading: "Loading session trace...",
615
- empty: "No request trace is available for this session yet.",
616
- error: "Failed to load session trace.",
617
- summary: "{requests} requests · {events} events · {processes} processes",
618
- hint: "Arrow keys switch requests · Refresh reloads · Esc closes",
619
- sessionEvents: "Session-level events",
620
- requestFallback: "(empty prompt)",
621
- counts: "{events} events · {runs} runs · {tools} tools · {children} child tasks · {compactions} compactions",
622
- processes: "Processes: {count}",
623
- noProcesses: "No managed process sessions for this request.",
624
- moreProcesses: "… {count} more processes",
625
- moreEvents: "… {count} more events",
626
- },
627
- subagent: {
628
- title: "Subagent",
629
- titleWithName: "Subagent: {name}",
630
- loading: "Loading subagent...",
631
- empty: "No subagent transcript is available yet.",
632
- error: "Failed to load subagent.",
633
- summary: "{status} · {tools} tools · {messages} messages · {events} events · {thread}",
634
- hint: "Scroll to inspect child chat · Refresh reloads · Esc closes",
635
- running: "Subagent is running...",
636
- sending: "Sending...",
637
- send: "Send",
638
- messageLabel: "Message this running subagent:",
639
- pausedReadonly: "Subagent is paused for approval or user input. Resolve it in the main UI.",
640
- readonly: "This subagent is not running. Input is read-only.",
641
- messagePlaceholder: "Send a message to this subagent...",
642
- readonlyPlaceholder: "Subagent is read-only",
643
- },
644
- confirm: {
645
- addTests: "Please add tests for the changes we just made.",
646
- },
647
- toast: {
648
- customProviderOnly: "Settings only for custom providers.",
649
- renameNodeOnly: "Rename is only available in Node/CLI mode.",
650
- noActiveSession: "No active session to rename.",
651
- sessionNameEmpty: "Session name cannot be empty.",
652
- sessionRenamed: "Renamed session to: {title}",
653
- renameFailed: "Failed to rename session.",
654
- linkOpenHint: "Tip: Ctrl+Click to open files or links.",
655
- copySuccess: "Copied",
656
- copyFailed: "Copy failed",
657
- forkFailed: "Failed to fork session.",
658
- backEmpty: "No previous jump to return to.",
659
- pinsEmpty: "No pinned messages yet.",
660
- pinEmpty: "No message to pin yet.",
661
- pinned: "Pinned message.",
662
- unpinned: "Unpinned message.",
663
- debugUnavailable: "Debug server is unavailable.",
664
- approvalsUsage: "Use /approvals (no on/off).",
665
- debugDialogOpened: "Debug dialog opened.",
666
- debugDialogClosed: "Debug dialog closed.",
667
- traceUnavailable: "Session trace is unavailable in this runtime.",
668
- subagentUnavailable: "Subagent inspect is unavailable in this runtime.",
669
- subagentReadonly: "This subagent cannot receive messages now.",
670
- subagentSteerSent: "Subagent steer accepted.",
671
- subagentSteerFailed: "Failed to message subagent.",
672
- renameUsage: "Usage: /rename <title>",
673
- themeToggled: "Theme: {mode}",
674
- statusCompactOn: "Status: compact",
675
- statusCompactOff: "Status: detailed",
676
- compactingSession: "Compacting session...",
677
- compactSuccess: "Session compacted: {message}",
678
- compactWarning: "Session compacted with limited gain: {message}",
679
- compactSuccessDetailWithTokens: "Folded the first {count} history messages into a summary. Estimated input {before} -> {after} tokens, saving about {saved} tokens.",
680
- compactSuccessDetailNotReduced: "Folded the first {count} history messages into a summary, but the estimated input changed from {before} to {after} tokens, so this did not reduce request size.",
681
- compactSuccessDetailCountOnly: "Folded the first {count} history messages into a summary.",
682
- compactSuccessDetailSummaryOnly: "Generated a fresh conversation summary.",
683
- compactAlreadyCurrent: "Session already compacted; no new history to fold.",
684
- compactFailed: "Failed to compact session: {error}",
685
- compactFailedTokenLimit: "Compaction failed due to insufficient context budget. Set DIMCODE_CONTEXT_WINDOW correctly, switch to a larger-context model, or use /new. Detail: {error}",
686
- retryEmpty: "No previous user message to retry.",
687
- commandRemoved: "This command is no longer available: {command}",
688
- helpAliasRemoved: "Press F1 for help.",
689
- waitForResponse: "Please wait for the current response to complete, or press Esc to interrupt.",
690
- pasteImagePending: "Image is still processing. Please wait.",
691
- pendingApproval: "Please handle tool_approve first.",
692
- awaitingApprovalAction: "Paused: action needed. Choose Approve / Always approve / Deny in the permission card.",
693
- awaitingApprovalStillWaiting: "Still waiting for approval ({seconds}s). The model will not continue until you approve or deny.",
694
- pendingAskUser: "Please handle ask_user first.",
695
- sessionBusyElsewhere: "Another window is still running this session. Wait for it to finish before sending here.",
696
- notificationSessionBusy: "This notification belongs to another busy session. Finish that work or switch sessions manually first.",
697
- notificationSessionUnavailable: "Cannot open the session for this notification here.",
698
- notificationSessionSwitchFailed: "Failed to open the session for this notification.",
699
- approvalNotActive: "This approval is queued. Resolve the active one first.",
700
- askUserNotActive: "This ask_user request is no longer active.",
701
- },
702
- },
703
- chatQueue: {
704
- label: "Queue ({count})",
705
- labelCompact: "Queue {count}",
706
- more: "+{count} more…",
707
- resumeToken: "/resume",
708
- resumePlainToken: "resume",
709
- resumeLegacyToken: "resume queue",
710
- state: {
711
- idle: "Pending",
712
- running: "Running",
713
- paused: "Paused",
714
- error: "Error",
715
- },
716
- item: {
717
- steerAction: "Steer",
718
- steerReady: "First",
719
- steerPending: "Next",
720
- steerPaused: "Paused",
721
- },
722
- toast: {
723
- enqueued: "Added to queue (#{count}).",
724
- full: "Queue is full (max 5). Delete one or start /new.",
725
- cleared: "Cleared {count} queued item(s).",
726
- deleted: "Deleted {count} queued item(s). Ctrl+Z to undo.",
727
- steerPromoted: "Upgraded to steer. It will run first when the queue resumes.",
728
- steerQueued: "Steer cannot be injected immediately. It was promoted and will run first on the next round.",
729
- steerSent: "Steer accepted. It will be injected before the next model call in this round.",
730
- undo: "Queue delete undone.",
731
- pausedTip: "Queue paused. Use {resume} or {resumeText} to continue, or send a new message to choose what to do.",
732
- stale: "Queue paused: request looks stuck.",
733
- },
734
- confirm: {
735
- title: "Continue queued messages?",
736
- description: "Previous request did not finish. {count} queued message(s) waiting.",
737
- hint: "Continue to send the next item, or pause the queue.",
738
- continue: "Continue",
739
- pause: "Pause",
740
- reason: "Reason: {reason}",
741
- },
742
- reason: {
743
- network_error: "Network error.",
744
- timeout: "Request timed out.",
745
- canceled_by_user: "Canceled by user.",
746
- rate_limited: "Rate limited.",
747
- config_unavailable: "Saved config unavailable.",
748
- unknown: "Request failed.",
749
- },
750
- draftDecision: {
751
- title: "Queue is paused",
752
- description: "{count} queued message(s) are still waiting. Decide what to do with your new input.",
753
- previewLabel: "New input:",
754
- continue: "Continue queue",
755
- append: "Append to queue",
756
- replace: "Discard queue & send",
757
- },
758
- },
759
- chatStatus: {
760
- done: "Done.",
761
- error: "Error.",
762
- interrupted: "Interrupted.",
763
- permissionDenied: "Permission denied.",
764
- planning: "Planning…",
765
- drafting: "Drafting…",
766
- runningTool: "Running {tool}…",
767
- runningTools: "Running {count} tools…",
768
- approvalPendingOther: "Another approval is pending ({permission})…",
769
- awaitingApproval: "Awaiting approval…",
770
- awaitingApprovalWithPerm: "Awaiting approval ({permission})…",
771
- awaitingApprovalWithRisk: "Awaiting approval ({risk})…",
772
- awaitingAnswers: "Awaiting answers…",
773
- resumingApproved: "Approved. Resuming…",
774
- resumingDenied: "Denied. Resuming…",
775
- resuming: "Resuming…",
776
- autoApprovingWithRisk: "Auto-approving ({risk})…",
777
- riskFallback: "risk",
778
- toolFallback: "tool",
779
- thinking: "Thinking…",
780
- autoCompactionRequired: "Context is near the limit. Compaction is required first.",
781
- autoCompactionRequiredDetailed: "Context is near the limit · the next request is estimated at {estimated} tokens, and auto-compaction starts at {threshold} tokens, so compaction is required first.",
782
- compressed: "Context compacted · folded {removed} older messages into a summary, saving an estimated {saved} input tokens ({elapsed}ms)",
783
- autoCompactedDetailed: "Auto-compaction completed · folded {removed} older messages into a summary, estimated input {before} -> {after} tokens, saving about {saved} tokens",
784
- autoCompactedNotReduced: "Auto-compaction completed · folded {removed} older messages into a summary, but the estimated input changed from {before} to {after} tokens, so this did not reduce request size",
785
- autoCompactedSaved: "Auto-compaction completed · folded {removed} older messages into a summary, saving about {saved} tokens",
786
- autoCompactedCountOnly: "Auto-compaction completed · folded {removed} older messages into a summary",
787
- interruptedMarkdown: "> **Interrupted** · Response canceled by user (`Esc`).",
788
- awaitingApprovalPrefix: "Awaiting approval",
789
- awaitingAnswersPrefix: "Awaiting answers",
790
- approvalPendingPrefix: "Another approval is pending",
791
- autoApprovingPrefix: "Auto-approving",
792
- },
793
- chatParts: {
794
- thinking: "Thinking",
795
- plan: "Plan",
796
- todo: "Todo",
797
- },
798
- chatRender: {
799
- userLabel: "user",
800
- outputLabel: "↳ output",
801
- outputLabelShort: "out:",
802
- canceled: "canceled",
803
- inputLabel: "in:",
804
- collapse: "... (collapse)",
805
- moreLines: "... ({count} more lines)",
806
- moreLinesOmitted: "... ({count} more lines omitted; set {envVar} to increase)",
807
- streamingTail: "… (streaming: showing last {shown} chars; {omitted} omitted)",
808
- copy: "Copy",
809
- userResponses: "User responses:",
810
- approvalQueued: "Waiting for earlier approval...",
811
- proposedPlan: {
812
- title: "Proposed Plan",
813
- },
814
- llmMeta: {
815
- changedFiles: "Changed {count} file(s): {files}",
816
- changedFilesMore: "+{count} more",
817
- revertHint: "Tip: Click this message -> Revert messages to undo this turn.",
818
- changedFilesCardTitle: "changed {count} files:",
819
- revertButton: "Revert",
820
- },
821
- toolName: {
822
- explore: "Explore",
823
- subagent: "Subagent",
824
- },
825
- toolSuffix: {
826
- offset: "offset {value}",
827
- limit: "limit {value}",
828
- matches: "{count} matches",
829
- todos: "{count} todos",
830
- results: "{count} results",
831
- results_one: "{count} result",
832
- },
833
- toolGroup: {
834
- readFiles: "Read {count} files",
835
- writeFiles: "Write {count} files",
836
- editFiles: "Edit {count} files",
837
- globPatterns: "Glob {count} patterns",
838
- globSingle: "Glob {pattern}",
839
- grepPatterns: "Grep {count} patterns",
840
- bashCommands: "Run {count} commands",
841
- searchQueries: "Search {count} queries",
842
- summarySeparator: ", ",
843
- editedFilesDone: "Edited {count} files",
844
- searchesDone: "{count} searches",
845
- bashCommandsDone: "ran {count} commands",
846
- fetchUrlsDone: "fetched {count} URLs",
847
- subagentsDone: "{count} subagents",
848
- taskCount: "{name} x{count}",
849
- generic: "{name} x{count}",
850
- },
851
- },
852
- toolApproval: {
853
- reason: {
854
- search: "Search may access the network.",
855
- bash: "Bash can execute commands.",
856
- edit: "File changes can modify local files.",
857
- grep: "Grep may read local files.",
858
- },
859
- inlineHint: "Keys: ↑↓←→ to move, Enter to select.",
860
- awaitingUserAction: "Waiting for your action: choose Approve / Always approve / Deny.",
861
- decision: {
862
- userDenied: "User denied approval",
863
- },
864
- denied: {
865
- title: "# Tool permission denied",
866
- toolLine: "- tool: `{tool}`",
867
- permissionLine: "- permission: `{permission}`",
868
- hint: "You can re-select the tool_call and try again.",
869
- },
870
- summary: {
871
- title: "# Approved + executed tool",
872
- permissionLine: "Permission `{permission}` approved for `{tool}`.",
873
- },
874
- required: "Approval required ({risk}).",
875
- args: {
876
- commandWithDescription: "Command: {command} - {description}",
877
- command: "Command: {command}",
878
- description: "Description: {description}",
879
- raw: "Args: {args}",
880
- },
881
- },
882
- pathPicker: {
883
- titleWorkspace: "Select Workspace",
884
- titleFile: "Select File",
885
- placeholderWorkspace: "Type a path (../ etc). Tab to complete. Enter selects a directory.",
886
- placeholderFile: "Type a path (../ etc). Tab to complete. Enter selects a file.",
887
- },
888
- providerDialogs: {
889
- customLabel: "Custom",
890
- customDetail: "custom",
891
- nextApiOAuthLabel: "DimCode OAuth",
892
- nextApiOAuthDetail: "Login with DimCode OAuth",
893
- addCustomLabel: "Add custom provider",
894
- addCustomDetail: "add custom provider",
895
- providerFallback: "Provider",
896
- adapter: {
897
- openai: "OpenAI",
898
- openaiOpenRouter: "OpenAI-compatible (OpenRouter)",
899
- openaiLocal: "OpenAI-compatible (Local endpoint)",
900
- openaiResponses: "OpenAI Responses",
901
- gemini: "Gemini",
902
- anthropic: "Anthropic",
903
- },
904
- status: {
905
- configured: "Configured",
906
- notConfigured: "Not configured",
907
- },
908
- manage: {
909
- title: "Custom provider: {provider}",
910
- connect: "Connect",
911
- connectDetail: "Edit API key / Base URL",
912
- rename: "Rename",
913
- renameDetail: "Edit provider name",
914
- models: "Edit models",
915
- modelsDetail: "Update available model IDs",
916
- delete: "Delete",
917
- deleteDetail: "Remove this provider",
918
- },
919
- deleteConfirm: {
920
- title: "Delete {provider}?",
921
- confirm: "Delete (confirm)",
922
- confirmDetail: "This cannot be undone",
923
- cancelDetail: "Keep provider",
924
- },
925
- nameDialog: {
926
- title: "Name custom provider",
927
- label: "Provider name",
928
- placeholder: "e.g. DeepSeek (Proxy)",
929
- },
930
- modelsDialog: {
931
- title: "Custom provider models",
932
- modelsTitle: "Models",
933
- modelsPlaceholder: "Model IDs (, or new lines)",
934
- hint: ", / newline • Shift+Enter newline • Enter Apply",
935
- fetch: "Fetch models",
936
- fetching: "Fetching models…",
937
- },
938
- modelsFetchDialog: {
939
- title: "Select models",
940
- searchPlaceholder: "Filter models",
941
- hint: "Space toggle • Enter confirm • Esc cancel",
942
- },
943
- toast: {
944
- modelSet: "Model set to {provider} / {model}.",
945
- noModels: "No models available yet. Connect a provider first (/connect).",
946
- connectFirst: "Please connect a provider first (/connect) before sending your first message.",
947
- apiKeyRequired: "API key is required.",
948
- baseUrlRequired: "Base URL is required.",
949
- baseUrlInvalid: "Base URL must start with http:// or https://",
950
- connected: "Connected to {provider}.",
951
- connectedSelectModel: "Connected to {provider}. Choose a model.",
952
- connectedCheckFailed: "Connected to {provider}, but self-check failed: {reason}",
953
- connectionTestPassed: "Connection test passed: {provider}.",
954
- connectionTestFailed: "Connection test failed: {provider} - {reason}",
955
- connectionActionUpdateKey: "Action: reopen Connect and update API key, then test again.",
956
- connectionActionFixBaseUrl: "Action: check Base URL path (usually ends with /v1), then test again.",
957
- connectionActionSwitchKey: "Action: wait a moment or switch to another key/provider.",
958
- connectionActionRetryTest: "Action: check network/proxy and run Test connection again.",
959
- noModelsFetching: "No models yet. Fetching model list…",
960
- firstUseGuide: 'Quick start: 1) /connect 2) /models 3) send "hello"',
961
- firstUseSendHello: 'Next step: send your first message (for example: "hello").',
962
- connectionCheckUnauthorized: "401 Unauthorized: check API key and provider type.",
963
- connectionCheckForbidden: "403 Forbidden: your key may not have access to this provider/model.",
964
- connectionCheckNotFound: "404 Not Found: check Base URL path (OpenAI-compatible usually ends with /v1).",
965
- connectionCheckRateLimited: "429 Rate limited: wait and retry, or switch to another key/provider.",
966
- connectionCheckTimeout: "Connection timed out: check network/proxy and retry.",
967
- connectionCheckNetwork: "Network connection failed: check DNS/proxy/Base URL.",
968
- connectionCheckFailed: "Connection check failed: {error}",
969
- apiKeyCleared: "API key cleared for {provider}.",
970
- customAdded: "Custom provider added: {provider}.",
971
- customRenamed: "Custom provider renamed: {provider}.",
972
- customModelsUpdated: "Custom provider models updated: {provider}.",
973
- customDeleted: "Custom provider deleted: {provider}.",
974
- modelsRequired: "Add at least one model.",
975
- modelsEmpty: "No models found.",
976
- modelsFetchFailed: "Failed to fetch models: {error}",
977
- modelsFetchChatCompletions: "Model list not supported for /chat/completions or /responses base URL.",
978
- manualModelsRequired: "This endpoint doesn't support automatic model discovery. Please manually enter model names in the models configuration.",
979
- nameRequired: "Provider name is required.",
980
- nameConflict: "Provider name already exists.",
981
- },
982
- },
983
- copyToast: {
984
- copiedToClipboard: "Copied to clipboard",
985
- },
986
- };
987
- //# sourceMappingURL=en.js.map