snow-ai 0.3.36 → 0.4.0

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 (97) hide show
  1. package/dist/agents/codebaseIndexAgent.js +1 -0
  2. package/dist/agents/codebaseReviewAgent.d.ts +61 -0
  3. package/dist/agents/codebaseReviewAgent.js +301 -0
  4. package/dist/agents/promptOptimizeAgent.d.ts +54 -0
  5. package/dist/agents/promptOptimizeAgent.js +268 -0
  6. package/dist/api/anthropic.js +1 -0
  7. package/dist/api/chat.js +1 -0
  8. package/dist/api/embedding.js +1 -0
  9. package/dist/api/gemini.js +2 -1
  10. package/dist/api/responses.js +1 -0
  11. package/dist/api/systemPrompt.d.ts +1 -5
  12. package/dist/api/systemPrompt.js +168 -100
  13. package/dist/app.js +14 -6
  14. package/dist/cli.js +1 -1
  15. package/dist/hooks/useCommandPanel.js +48 -46
  16. package/dist/hooks/useConversation.d.ts +2 -1
  17. package/dist/hooks/useConversation.js +116 -30
  18. package/dist/hooks/useGlobalExit.js +4 -2
  19. package/dist/hooks/useStreamingState.d.ts +9 -0
  20. package/dist/hooks/useStreamingState.js +3 -0
  21. package/dist/i18n/I18nContext.d.ts +14 -0
  22. package/dist/i18n/I18nContext.js +24 -0
  23. package/dist/i18n/index.d.ts +3 -0
  24. package/dist/i18n/index.js +2 -0
  25. package/dist/i18n/lang/en.d.ts +2 -0
  26. package/dist/i18n/lang/en.js +483 -0
  27. package/dist/i18n/lang/es.d.ts +2 -0
  28. package/dist/i18n/lang/es.js +483 -0
  29. package/dist/i18n/lang/ja.d.ts +2 -0
  30. package/dist/i18n/lang/ja.js +483 -0
  31. package/dist/i18n/lang/ko.d.ts +2 -0
  32. package/dist/i18n/lang/ko.js +483 -0
  33. package/dist/i18n/lang/zh-TW.d.ts +2 -0
  34. package/dist/i18n/lang/zh-TW.js +483 -0
  35. package/dist/i18n/lang/zh.d.ts +2 -0
  36. package/dist/i18n/lang/zh.js +483 -0
  37. package/dist/i18n/translations.d.ts +2 -0
  38. package/dist/i18n/translations.js +14 -0
  39. package/dist/i18n/types.d.ts +459 -0
  40. package/dist/i18n/types.js +1 -0
  41. package/dist/mcp/aceCodeSearch.d.ts +17 -48
  42. package/dist/mcp/aceCodeSearch.js +24 -56
  43. package/dist/mcp/bash.js +8 -1
  44. package/dist/mcp/codebaseSearch.d.ts +1 -1
  45. package/dist/mcp/codebaseSearch.js +159 -30
  46. package/dist/mcp/filesystem.d.ts +3 -80
  47. package/dist/mcp/filesystem.js +23 -103
  48. package/dist/mcp/subagent.d.ts +2 -1
  49. package/dist/mcp/subagent.js +54 -5
  50. package/dist/ui/components/ChatInput.js +22 -25
  51. package/dist/ui/components/CommandPanel.d.ts +1 -1
  52. package/dist/ui/components/CommandPanel.js +20 -13
  53. package/dist/ui/components/DiffViewer.d.ts +1 -1
  54. package/dist/ui/components/DiffViewer.js +101 -91
  55. package/dist/ui/components/FileList.js +22 -11
  56. package/dist/ui/components/HelpPanel.js +47 -21
  57. package/dist/ui/components/Menu.js +6 -2
  58. package/dist/ui/components/MessageList.d.ts +6 -0
  59. package/dist/ui/components/MessageList.js +1 -1
  60. package/dist/ui/components/ToolConfirmation.d.ts +4 -1
  61. package/dist/ui/components/ToolConfirmation.js +28 -2
  62. package/dist/ui/components/ToolResultPreview.d.ts +2 -1
  63. package/dist/ui/components/ToolResultPreview.js +41 -25
  64. package/dist/ui/pages/ChatScreen.js +177 -56
  65. package/dist/ui/pages/CodeBaseConfigScreen.js +54 -30
  66. package/dist/ui/pages/ConfigScreen.js +138 -98
  67. package/dist/ui/pages/CustomHeadersScreen.js +75 -69
  68. package/dist/ui/pages/LanguageSettingsScreen.d.ts +7 -0
  69. package/dist/ui/pages/LanguageSettingsScreen.js +89 -0
  70. package/dist/ui/pages/ProxyConfigScreen.js +27 -23
  71. package/dist/ui/pages/SensitiveCommandConfigScreen.js +32 -25
  72. package/dist/ui/pages/SubAgentConfigScreen.js +88 -75
  73. package/dist/ui/pages/SystemPromptConfigScreen.js +31 -26
  74. package/dist/ui/pages/WelcomeScreen.js +40 -26
  75. package/dist/utils/apiConfig.d.ts +2 -0
  76. package/dist/utils/codebaseConfig.d.ts +1 -5
  77. package/dist/utils/codebaseConfig.js +2 -10
  78. package/dist/utils/codebaseSearchEvents.d.ts +16 -0
  79. package/dist/utils/codebaseSearchEvents.js +13 -0
  80. package/dist/utils/commands/agent.js +2 -2
  81. package/dist/utils/commands/init.js +1 -1
  82. package/dist/utils/configManager.js +26 -5
  83. package/dist/utils/contextCompressor.js +1 -1
  84. package/dist/utils/languageConfig.d.ts +21 -0
  85. package/dist/utils/languageConfig.js +61 -0
  86. package/dist/utils/mcpToolsManager.js +0 -9
  87. package/dist/utils/notebookManager.js +11 -4
  88. package/dist/utils/sessionConverter.js +13 -3
  89. package/dist/utils/sessionManager.d.ts +1 -0
  90. package/dist/utils/subAgentConfig.d.ts +10 -5
  91. package/dist/utils/subAgentConfig.js +112 -19
  92. package/dist/utils/subAgentExecutor.d.ts +9 -1
  93. package/dist/utils/subAgentExecutor.js +122 -9
  94. package/dist/utils/toolExecutor.d.ts +2 -1
  95. package/dist/utils/toolExecutor.js +1 -2
  96. package/dist/utils/usageLogger.js +18 -3
  97. package/package.json +2 -1
@@ -0,0 +1,483 @@
1
+ export const en = {
2
+ welcome: {
3
+ title: '❆ SNOW AI CLI',
4
+ subtitle: 'Intelligent Command Line Assistant',
5
+ startChat: 'Start',
6
+ startChatInfo: 'Start a new chat conversation',
7
+ apiSettings: 'API & Model Settings',
8
+ apiSettingsInfo: 'Configure API settings, AI models, and manage profiles',
9
+ proxySettings: 'Proxy & Browser Settings',
10
+ proxySettingsInfo: 'Configure system proxy and browser for web search and fetch',
11
+ codebaseSettings: 'CodeBase Settings',
12
+ codebaseSettingsInfo: 'Configure codebase indexing with embedding models',
13
+ systemPromptSettings: 'System Prompt Settings',
14
+ systemPromptSettingsInfo: 'Configure custom system prompt (overrides default)',
15
+ customHeadersSettings: 'Custom Headers Settings',
16
+ customHeadersSettingsInfo: 'Configure custom HTTP headers for API requests',
17
+ mcpSettings: 'MCP Settings',
18
+ mcpSettingsInfo: 'Configure Model Context Protocol servers',
19
+ subAgentSettings: 'Sub-Agent Settings',
20
+ subAgentSettingsInfo: 'Configure sub-agents with custom tool permissions',
21
+ sensitiveCommands: 'Sensitive Commands',
22
+ sensitiveCommandsInfo: 'Configure commands that require confirmation even in YOLO mode',
23
+ languageSettings: 'Language Settings',
24
+ languageSettingsInfo: 'Switch application language',
25
+ exit: 'Exit',
26
+ exitInfo: 'Exit the application',
27
+ },
28
+ menu: {
29
+ navigate: 'Use ↑↓ keys to navigate, press Enter to select:',
30
+ },
31
+ proxyConfig: {
32
+ title: 'Proxy Configuration',
33
+ subtitle: 'Configure system proxy for web search and fetch',
34
+ enableProxy: 'Enable Proxy:',
35
+ enabled: '[✓] Enabled',
36
+ disabled: '[ ] Disabled',
37
+ toggleHint: '(Press Enter to toggle)',
38
+ proxyPort: 'Proxy Port:',
39
+ notSet: 'Not set',
40
+ browserPath: 'Browser Path (Optional):',
41
+ autoDetect: 'Auto-detect',
42
+ errors: 'Errors:',
43
+ editingHint: 'Editing mode: Press Enter to save and exit editing (Make your changes and press Enter when done)',
44
+ navigationHint: 'Use ↑↓ to navigate between fields, press Enter to edit/toggle, and press Ctrl+S or Esc to save and return',
45
+ browserExamplesTitle: 'Browser Path Examples:',
46
+ browserExamplesFooter: 'Leave empty to auto-detect system browser (Edge/Chrome)',
47
+ portValidationError: 'Port must be a number between 1 and 65535',
48
+ portPlaceholder: '7890',
49
+ browserPathPlaceholder: 'Leave empty for auto-detect',
50
+ windowsExample: '• Windows: C:\\Program Files(x86)\\Microsoft\\Edge\\Application\\msedge.exe',
51
+ macosExample: '• macOS: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
52
+ linuxExample: '• Linux: /usr/bin/chromium-browser',
53
+ },
54
+ codebaseConfig: {
55
+ title: 'CodeBase Configuration',
56
+ subtitle: 'Configure codebase indexing and search settings',
57
+ settingsPosition: 'Settings',
58
+ scrollHint: '· ↑↓ to scroll',
59
+ codebaseEnabled: 'CodeBase Enabled:',
60
+ agentReview: 'Agent Review:',
61
+ enabled: '[✓] Enabled',
62
+ disabled: '[ ] Disabled',
63
+ toggleHint: '(Press Enter to toggle)',
64
+ embeddingModelName: 'Embedding Model Name:',
65
+ embeddingBaseUrl: 'Embedding Base URL:',
66
+ embeddingApiKey: 'Embedding API Key:',
67
+ embeddingApiKeyOptional: 'Embedding API Key (Optional for local):',
68
+ embeddingDimensions: 'Embedding Dimensions:',
69
+ batchMaxLines: 'Batch Max Lines:',
70
+ batchConcurrency: 'Batch Concurrency:',
71
+ notSet: 'Not set',
72
+ masked: '••••••••',
73
+ errors: 'Errors:',
74
+ editingHint: 'Editing mode: Type to edit, Enter to save, Esc to cancel',
75
+ navigationHint: 'Use ↑↓ to navigate, Enter to edit/toggle, Ctrl+S or Esc to save',
76
+ validationModelNameRequired: 'Embedding model name is required when enabled',
77
+ validationBaseUrlRequired: 'Embedding base URL is required when enabled',
78
+ validationDimensionsPositive: 'Embedding dimensions must be greater than 0',
79
+ validationMaxLinesPositive: 'Batch max lines must be greater than 0',
80
+ validationConcurrencyPositive: 'Batch concurrency must be greater than 0',
81
+ saveError: 'Failed to save configuration',
82
+ },
83
+ systemPromptConfig: {
84
+ title: 'System Prompt Management',
85
+ subtitle: 'Manage multiple system prompts and switch between them',
86
+ activePrompt: 'Active Prompt:',
87
+ none: 'None',
88
+ noPromptsConfigured: 'No system prompts configured. Press Enter to add one.',
89
+ availablePrompts: 'Available Prompts:',
90
+ actions: 'Actions:',
91
+ activate: 'Activate',
92
+ deactivate: 'Deactivate',
93
+ edit: 'Edit',
94
+ delete: 'Delete',
95
+ addNew: 'Add New',
96
+ escBack: '[ESC] Back',
97
+ navigationHint: 'Use ↑↓ to select prompt, ←→ to select action, Enter to confirm',
98
+ addNewTitle: 'Add New System Prompt',
99
+ editTitle: 'Edit System Prompt',
100
+ nameLabel: 'Name:',
101
+ contentLabel: 'Content:',
102
+ enterPromptName: 'Enter prompt name',
103
+ enterPromptContent: 'Enter prompt content',
104
+ notSet: 'Not set',
105
+ editingHint: '↑↓: Navigate fields | Enter: Edit | Ctrl+S: Save | ESC: Cancel',
106
+ confirmDelete: 'Confirm Delete',
107
+ deleteConfirmMessage: 'Are you sure you want to delete',
108
+ confirmHint: 'Press Y to confirm, N or ESC to cancel',
109
+ saveError: 'Failed to save',
110
+ },
111
+ configScreen: {
112
+ title: 'API & Model Configuration',
113
+ subtitle: 'Configure your API settings and AI models',
114
+ activeProfile: 'Active Profile:',
115
+ settingsPosition: 'Settings',
116
+ scrollHint: '· ↑↓ to scroll',
117
+ profile: 'Profile:',
118
+ baseUrl: 'Base URL:',
119
+ apiKey: 'API Key:',
120
+ requestMethod: 'Request Method:',
121
+ anthropicBeta: 'Anthropic Beta:',
122
+ enablePromptOptimization: 'Enable Prompt Optimization:',
123
+ enableAutoCompress: 'Enable Auto Compression:',
124
+ thinkingEnabled: 'Thinking Enabled:',
125
+ thinkingBudgetTokens: 'Thinking Budget Tokens:',
126
+ geminiThinkingEnabled: 'Gemini Thinking Enabled:',
127
+ geminiThinkingBudget: 'Gemini Thinking Budget:',
128
+ responsesReasoningEnabled: 'Responses Reasoning Enabled:',
129
+ responsesReasoningEffort: 'Responses Reasoning Effort:',
130
+ advancedModel: 'Advanced Model:',
131
+ basicModel: 'Basic Model:',
132
+ compactModel: 'Compact Model:',
133
+ maxContextTokens: 'Max Context Tokens:',
134
+ maxTokens: 'Max Tokens:',
135
+ notSet: 'Not set',
136
+ enabled: '[✓] Enabled',
137
+ disabled: '[ ] Disabled',
138
+ toggleHint: '(Press Enter to toggle)',
139
+ enterValue: 'Enter value:',
140
+ low: 'Low',
141
+ medium: 'Medium',
142
+ high: 'High',
143
+ createNewProfile: 'Create New Profile',
144
+ enterProfileName: 'Enter a name for the new configuration profile',
145
+ profileNamePlaceholder: 'e.g., work, personal, test',
146
+ createHint: 'Press Enter to create, Esc to cancel',
147
+ deleteProfile: 'Delete Profile',
148
+ confirmDelete: 'Confirm profile deletion',
149
+ deleteWarning: 'This action cannot be undone. You will be switched to the default profile.',
150
+ confirmHint: 'Press Y to confirm, N or Esc to cancel',
151
+ loadingModels: 'API & Model Configuration',
152
+ loadingMessage: 'Loading available models...',
153
+ loadingCancelHint: 'Press Esc to cancel and return to configuration',
154
+ manualInputTitle: 'Manual Input Model',
155
+ manualInputSubtitle: 'Enter model name manually',
156
+ manualInputHint: 'Press Enter to confirm, Esc to cancel',
157
+ loadingError: '⚠ Failed to load models from API',
158
+ requestMethodChat: 'Chat Completions - Modern chat API (GPT-4, GPT-3.5-turbo)',
159
+ requestMethodResponses: 'Responses - New responses API (2025, with built-in tools)',
160
+ requestMethodGemini: 'Gemini - Google Gemini API',
161
+ requestMethodAnthropic: 'Anthropic - Claude API',
162
+ manualInputOption: 'Manual Input (Enter model name)',
163
+ errors: 'Errors:',
164
+ cannotDeleteDefault: 'Cannot delete the default profile',
165
+ profileNameEmpty: 'Profile name cannot be empty',
166
+ navigationHint: 'Use ↑↓ to navigate, Enter to edit, M for manual input, Ctrl+S or Esc to save',
167
+ editingHintNumeric: 'Type to edit, Enter to save',
168
+ editingHintGeneral: 'Press Enter to save and exit editing',
169
+ modelFilterHint: 'Type to filter, ↑↓ to select, Enter to confirm, Esc to cancel',
170
+ effortSelectHint: '↑↓ to select, Enter to confirm, Esc to cancel',
171
+ profileSelectHint: '↑↓ to select profile, N to create new, D to delete, Enter to confirm, Esc to cancel',
172
+ requestMethodSelectHint: '↑↓ to select, Enter to confirm, Esc to cancel',
173
+ newProfile: '+ New',
174
+ deleteProfileShort: '🆇 Delete',
175
+ fetchingModels: 'Fetching models from API...',
176
+ fetchingHint: 'This may take a few seconds depending on your network connection',
177
+ },
178
+ customHeaders: {
179
+ title: 'Custom Headers Management',
180
+ subtitle: 'Manage multiple header schemes and switch between them',
181
+ activeScheme: 'Active Scheme:',
182
+ none: 'None',
183
+ noSchemesConfigured: 'No header schemes configured. Press Enter to add one.',
184
+ availableSchemes: 'Available Schemes:',
185
+ actions: 'Actions:',
186
+ activate: 'Activate',
187
+ deactivate: 'Deactivate',
188
+ edit: 'Edit',
189
+ delete: 'Delete',
190
+ addNew: 'Add New',
191
+ escBack: '[ESC] Back',
192
+ navigationHint: 'Use ↑↓ to select scheme, ←→ to select action, Enter to confirm',
193
+ addNewTitle: 'Add New Header Scheme',
194
+ editTitle: 'Edit Header Scheme',
195
+ nameLabel: 'Name:',
196
+ headersLabel: 'Headers',
197
+ headersConfigured: 'configured',
198
+ enterSchemeName: 'Enter scheme name',
199
+ notSet: 'Not set',
200
+ pressEnterToEdit: 'Press Enter to edit headers →',
201
+ editingHint: '↑↓: Navigate fields | Enter: Edit | Ctrl+S: Save | ESC: Cancel',
202
+ confirmDelete: 'Confirm Delete',
203
+ deleteConfirmMessage: 'Are you sure you want to delete',
204
+ confirmHint: 'Press Y to confirm, N or ESC to cancel',
205
+ saveError: 'Failed to save',
206
+ editHeadersTitle: 'Edit Headers',
207
+ headerList: 'Header List:',
208
+ noHeadersConfigured: 'No headers configured. Press Enter to add one.',
209
+ addNewHeader: '[+] Add new header',
210
+ headerNavigationHint: '↑↓: Navigate | Enter: Edit/Add | D: Delete | ESC: Finish',
211
+ keyLabel: 'Key:',
212
+ valueLabel: 'Value:',
213
+ headerKeyPlaceholder: 'Header key (e.g., X-API-Key)',
214
+ headerValuePlaceholder: 'Header value',
215
+ headerEditingHint: '↑↓: Navigate fields | Enter: Edit | Ctrl+S: Save | ESC: Cancel',
216
+ },
217
+ subAgentConfig: {
218
+ title: 'Sub-Agent Configuration',
219
+ titleEdit: 'Edit',
220
+ titleNew: 'New',
221
+ subtitle: 'Configure sub-agents with custom tool permissions',
222
+ agentName: 'Agent Name:',
223
+ description: 'Description:',
224
+ role: 'Role:',
225
+ roleOptional: 'Role (Optional):',
226
+ toolSelection: 'Tool Selection:',
227
+ agentNamePlaceholder: 'Enter agent name...',
228
+ descriptionPlaceholder: 'Enter agent description...',
229
+ rolePlaceholder: 'Specify agent role to guide output and focus...',
230
+ selectedTools: 'Selected:',
231
+ toolsCount: 'tools',
232
+ loadingMCP: 'Loading MCP services...',
233
+ mcpLoadError: '⚠',
234
+ categoryCount: '({selected}/{total})',
235
+ categoryMCP: '(MCP)',
236
+ navigationHint: '↑↓: Navigate | ←→: Switch category | Space: Toggle | A: Toggle all | Enter: Save | Esc: Back',
237
+ saveSuccess: 'Sub-agent saved successfully!',
238
+ saveSuccessEdit: 'updated',
239
+ saveSuccessCreate: 'created',
240
+ saveError: 'Failed to save sub-agent',
241
+ validationFailed: 'Validation failed',
242
+ filesystemTools: 'Filesystem Tools',
243
+ aceTools: 'ACE Code Search Tools',
244
+ codebaseTools: 'Codebase Search Tools',
245
+ terminalTools: 'Terminal Tools',
246
+ todoTools: 'TODO Management Tools',
247
+ webSearchTools: 'Web Search Tools',
248
+ ideTools: 'IDE Diagnostics Tools',
249
+ },
250
+ sensitiveCommandConfig: {
251
+ title: 'Sensitive Command Protection',
252
+ subtitle: 'Configure commands that require confirmation even in YOLO/Always-Approved mode',
253
+ noCommands: 'No commands configured',
254
+ custom: 'custom',
255
+ enabled: 'Enabled',
256
+ disabled: 'Disabled',
257
+ customLabel: 'Custom',
258
+ // Add view
259
+ addTitle: 'Add Custom Sensitive Command',
260
+ patternLabel: 'Pattern (supports wildcards, e.g., "rm*"):',
261
+ patternPlaceholder: 'e.g., rm -rf, sudo, etc.',
262
+ descriptionLabel: 'Description:',
263
+ addEditingHint: 'Tab: Switch • Enter: Submit • Esc: Cancel',
264
+ // List view actions
265
+ addedMessage: 'Added: {pattern}',
266
+ enabledMessage: 'Enabled: {pattern}',
267
+ disabledMessage: 'Disabled: {pattern}',
268
+ deletedMessage: 'Deleted: {pattern}',
269
+ resetMessage: 'Reset to default commands',
270
+ // Confirmation messages
271
+ confirmDeleteMessage: '⚠️ Press D again to confirm deletion of "{pattern}"',
272
+ confirmResetMessage: '⚠️ Press R again to confirm reset to default commands',
273
+ confirmHint: 'Press the same key again to confirm • Esc: Cancel',
274
+ // Navigation hints
275
+ listNavigationHint: '↑↓: Navigate • Space: Toggle • A: Add • D: Delete • R: Reset • Esc: Back',
276
+ },
277
+ helpPanel: {
278
+ title: '🔰 Keyboard Shortcuts & Help',
279
+ textEditingTitle: '📝 Text Editing:',
280
+ deleteToStart: 'Ctrl+L - Delete from cursor to start',
281
+ deleteToEnd: 'Ctrl+R - Delete from cursor to end',
282
+ pasteImages: '{pasteKey} - Paste images from clipboard',
283
+ quickAccessTitle: '🔍 Quick Access:',
284
+ insertFiles: '@ - Insert files from project',
285
+ searchContent: '@@ - Search file content',
286
+ showCommands: '/ - Show available commands',
287
+ navigationTitle: '📋 Navigation:',
288
+ navigateHistory: '↑/↓ - Navigate command/message history',
289
+ selectItem: 'Tab/Enter - Select item in pickers',
290
+ cancelClose: 'ESC - Cancel/close pickers or interrupt AI response',
291
+ toggleYolo: 'Shift+Tab - Toggle YOLO mode (auto-approve tools)',
292
+ tipsTitle: '💡 Tips:',
293
+ tipUseHelp: 'Use /help anytime to see this information',
294
+ tipShowCommands: 'Type / to see all available commands',
295
+ tipInterrupt: 'Press ESC during AI response to interrupt',
296
+ closeHint: 'Press ESC to close this help panel',
297
+ },
298
+ commandPanel: {
299
+ title: 'Command Panel',
300
+ availableCommands: 'Available Commands',
301
+ processingMessage: 'Please wait for the conversation to complete before using commands',
302
+ scrollHint: '↑↓ to scroll',
303
+ moreHidden: '{count} more hidden',
304
+ commands: {
305
+ help: 'Show keyboard shortcuts and help information',
306
+ clear: 'Clear chat context and conversation history',
307
+ resume: 'Resume a conversation',
308
+ mcp: 'Show Model Context Protocol services and tools',
309
+ yolo: 'Toggle unattended mode (auto-approve all tools)',
310
+ init: 'Analyze project and generate/update SNOW.md documentation',
311
+ ide: 'Connect to VSCode editor and sync context',
312
+ compact: 'Compress conversation history using compact model',
313
+ home: 'Return to welcome screen to modify settings',
314
+ review: 'Review git changes and identify potential issues. Support: /review [optional note]',
315
+ role: 'Open or create ROLE.md file to customize AI assistant role',
316
+ usage: 'View token usage statistics with interactive charts',
317
+ export: 'Export chat conversation to text file with save dialog',
318
+ agent: 'Select and use a sub-agent to handle specific tasks',
319
+ todo: 'Search and select TODO comments from project files',
320
+ },
321
+ },
322
+ hooks: {
323
+ pressCtrlCAgain: 'Press Ctrl+C again to exit',
324
+ },
325
+ chatScreen: {
326
+ // Header
327
+ headerTitle: 'Programming efficiency x10!',
328
+ headerSubtitle: '❆ SNOW AI CLI',
329
+ headerExplanations: 'Ask for code explanations and debugging help',
330
+ headerInterrupt: 'Press ESC during response to interrupt',
331
+ headerYolo: 'Press Shift+Tab: toggle YOLO',
332
+ headerShortcuts: "Shortcuts: Ctrl+L (delete to start) • Ctrl+R (delete to end) • {pasteKey} (paste images) • '@' (files) • '@@' (search content) • '/' (commands)",
333
+ headerWorkingDirectory: 'Working directory: {directory}',
334
+ // Status messages
335
+ statusThinking: 'Thinking...',
336
+ statusDeepThinking: 'Deep thinking...',
337
+ statusWriting: 'Writing...',
338
+ statusStreaming: 'Streaming',
339
+ statusWorking: 'Working',
340
+ statusIndexing: 'Indexing codebase...',
341
+ statusWatcherActive: 'File watcher active - monitoring code changes',
342
+ statusFileUpdated: 'Updated: {file}',
343
+ statusCreating: 'Creating...',
344
+ statusSaving: 'Saving...',
345
+ statusCompressing: 'Compressing...',
346
+ statusConnecting: 'Connecting to IDE...',
347
+ statusConnected: 'IDE Connected',
348
+ statusConnectionFailed: 'Connection Failed - Make sure Snow CLI plugin is installed and active in your IDE',
349
+ // Tool execution
350
+ toolCall: 'Tool call',
351
+ toolThinking: 'Thinking',
352
+ toolReading: 'Reading',
353
+ toolWriting: 'Writing',
354
+ toolSearching: 'Searching',
355
+ toolExecuting: 'Executing',
356
+ toolSuccess: '✓ Success',
357
+ toolFailed: '✗ Failed',
358
+ toolRejected: '✗ Rejected',
359
+ // Parallel execution
360
+ parallelStart: '┌─ Parallel execution',
361
+ parallelEnd: '└─ End parallel execution',
362
+ // Messages
363
+ userMessage: 'You',
364
+ assistantMessage: 'Assistant',
365
+ commandMessage: 'Command',
366
+ discontinuedMessage: '└─ user discontinue',
367
+ // File operations
368
+ fileCreated: 'Created',
369
+ fileModified: 'Modified',
370
+ fileRead: 'Read',
371
+ fileDeleted: 'Deleted',
372
+ fileCount: '{count} files',
373
+ fileNotFound: 'file not found',
374
+ fileLine: 'line',
375
+ fileLines: 'lines',
376
+ // Images
377
+ imageAttached: '[image #{index}]',
378
+ // Token usage
379
+ tokenTotal: 'Total tokens',
380
+ tokenInput: 'Input tokens',
381
+ tokenOutput: 'Output tokens',
382
+ tokenCached: 'Cached tokens',
383
+ tokenCacheCreation: 'Cache creation',
384
+ tokenCacheRead: 'Cache read',
385
+ // Time
386
+ timeElapsed: 'Elapsed',
387
+ timeSeconds: '{count}s',
388
+ timeMinutes: '{count}m',
389
+ timeHours: '{count}h',
390
+ // Errors
391
+ errorGeneric: 'Error: {message}',
392
+ errorApi: 'API Error: {message}',
393
+ errorNetwork: 'Network Error: {message}',
394
+ errorConfig: 'Configuration Error: {message}',
395
+ errorCompression: 'Compression Error: {message}',
396
+ errorCompressionFailed: 'Auto-compression Failed',
397
+ errorLoadSession: 'Failed to load session',
398
+ errorRollback: 'Failed to rollback',
399
+ // Warnings
400
+ terminalTooSmall: '⚠ Terminal Too Small',
401
+ terminalResizePrompt: 'Your terminal height is {current} lines, but at least {required} lines are required.',
402
+ terminalMinHeight: 'Please resize your terminal window to continue.',
403
+ // Compression
404
+ compressionAuto: '✵ Auto-compressing context due to token limit...',
405
+ compressionInProgress: 'Compressing conversation history...',
406
+ compressionSuccess: 'Compression complete',
407
+ compressionFailed: '✗ Compression failed: {error}',
408
+ // Retry
409
+ retryAttempt: 'Retry {current}/{max}',
410
+ retryIn: 'in {seconds}s...',
411
+ retryResending: '⟳ Resending... (Attempt {current}/{max})',
412
+ retryError: '✗ Error: {message}',
413
+ // Codebase
414
+ codebaseIndexing: 'Indexing codebase... {processed}/{total} files',
415
+ codebaseProgress: '{chunks} chunks',
416
+ codebaseChunks: 'chunks',
417
+ codebaseSearching: '⏏ Codebase Search (Attempt {current}/{max})',
418
+ codebaseSearchAttempt: 'Attempt {current}/{max}',
419
+ codebaseSearchComplete: 'Codebase search complete',
420
+ // IDE
421
+ ideConnecting: 'Connecting to IDE...',
422
+ ideConnected: 'IDE Connected',
423
+ ideDisconnected: 'IDE Disconnected',
424
+ ideError: 'Connection Failed - Make sure Snow CLI plugin is installed and active in your IDE',
425
+ ideActiveFile: '| {file}',
426
+ ideSelectedText: '| {count} chars selected',
427
+ // Input
428
+ inputPlaceholder: 'Ask me anything about coding...',
429
+ inputProcessing: 'Processing...',
430
+ inputDisabled: 'Input disabled',
431
+ // Shortcuts
432
+ shortcutPasteImage: 'Paste images',
433
+ shortcutFileReference: 'Reference files',
434
+ shortcutSearchContent: 'Search content',
435
+ shortcutCommands: 'Commands',
436
+ shortcutDeleteToStart: 'Delete to start',
437
+ shortcutDeleteToEnd: 'Delete to end',
438
+ shortcutCancel: 'Cancel (ESC)',
439
+ shortcutRegenerate: 'Regenerate (Ctrl+R)',
440
+ shortcutToggleYolo: 'Toggle YOLO (Shift+Tab)',
441
+ // Rollback
442
+ rollbackConfirm: 'Confirm rollback',
443
+ rollbackFiles: 'Rollback files',
444
+ rollbackConversation: 'Rollback conversation only',
445
+ rollbackWarning: '{count} files will be affected',
446
+ // Session
447
+ sessionCreating: 'Create the first dialogue record file...',
448
+ sessionLoading: 'Loading session...',
449
+ sessionSaving: 'Saving session...',
450
+ sessionDeleting: 'Deleting session...',
451
+ // Rejection
452
+ rejectionReason: 'Rejection reason:',
453
+ rejectionNoReason: 'No reason provided',
454
+ // Batch operations
455
+ batchFile: 'File {index}: {path}',
456
+ batchEditResults: 'Batch edit results',
457
+ // Pending
458
+ pendingMessageWaiting: 'Pending message waiting...',
459
+ pendingToolConfirmation: 'Tool confirmation required',
460
+ // Press keys hints
461
+ pressEscToClose: 'Press ESC to close',
462
+ pressEnterToToggle: 'Press Enter to toggle',
463
+ pressCtrlC: 'Ctrl+C to cancel',
464
+ pressCtrlR: 'Ctrl+R to regenerate',
465
+ pressCtrlS: 'Ctrl+S to save',
466
+ // Context
467
+ contextUsage: 'Context usage: {percentage}%',
468
+ contextPercentage: '{percentage}%',
469
+ contextLimit: 'Token limit reached',
470
+ // ChatInput
471
+ waitingForResponse: 'Waiting for response...',
472
+ moreAbove: '↑ {count} more above...',
473
+ moreBelow: '↓ {count} more below...',
474
+ historyNavigateHint: '↑↓ navigate · Enter select · ESC close',
475
+ typeToFilterCommands: 'Type to filter commands',
476
+ contentSearchHint: 'Content search • Tab/Enter to select • ESC to cancel',
477
+ fileSearchHint: 'Type to filter files • Tab/Enter to select • ESC to cancel',
478
+ yoloModeActive: '❁ YOLO MODE ACTIVE - All tools will be auto-approved without confirmation',
479
+ tokens: ' tokens',
480
+ cached: 'cached',
481
+ newCache: 'new cache',
482
+ },
483
+ };
@@ -0,0 +1,2 @@
1
+ import type { TranslationKeys } from '../types.js';
2
+ export declare const es: TranslationKeys;