@ouraihub/aether-ui 0.1.1 → 0.1.2
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/package.json +2 -2
- package/src/chat/ChatComposer.svelte +47 -5
- package/src/chat/ChatPanel.css +380 -380
- package/src/chat/ChatPanel.svelte +48 -51
- package/src/chat/ChatPanelComposer.svelte +44 -25
- package/src/chat/ChatPanelHeader.svelte +1 -25
- package/src/chat/ChatPanelMode.svelte +3 -3
- package/src/chat/ChatPanelToolbar.svelte +14 -3
- package/src/chat/ContextUsageStatus.svelte +97 -0
- package/src/chat/ModelEffortPicker.svelte +326 -0
- package/src/chat/PickerEffort.svelte +71 -0
- package/src/chat/ReasoningControl.svelte +10 -112
- package/src/chat/ReasoningSlider.svelte +174 -0
- package/src/chat/SkillPicker.svelte +1 -0
- package/src/chat/UsageControl.svelte +12 -5
- package/src/chat/UsageDetails.svelte +19 -3
- package/src/chat/chat-attachments.svelte.ts +9 -5
- package/src/chat/chat-panel-models.svelte.ts +97 -0
- package/src/chat/chat-panel-props.ts +6 -0
- package/src/chat/context-status.ts +101 -0
- package/src/chat/icons/LICENSE-REMIX +186 -0
- package/src/chat/icons/LICENSE-SIMPLE-ICONS +30 -0
- package/src/chat/icons/PathIcon.svelte +8 -0
- package/src/chat/icons/effort-icons.ts +65 -0
- package/src/chat/icons/status-icons.ts +105 -0
- package/src/chat/index.ts +20 -0
- package/src/chat/model-effort.ts +177 -0
- package/src/chat/test-support/chat-fixture.ts +16 -0
- package/src/i18n/en-chat.d.ts +1 -0
- package/src/i18n/en-chat.js +201 -0
- package/src/i18n/en.ts +24 -174
- package/src/i18n/zh-CN-chat.d.ts +1 -0
- package/src/i18n/zh-CN-chat.js +190 -0
- package/src/i18n/zh-CN.ts +2 -158
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
export const enChat = {
|
|
2
|
+
'chat.usageEntry': 'Usage',
|
|
3
|
+
'chat.networkOn': 'Web search on · click to turn off',
|
|
4
|
+
'chat.networkOff': 'Web search off · click to turn on',
|
|
5
|
+
'chat.title': 'Chat',
|
|
6
|
+
'chat.history': 'Conversation',
|
|
7
|
+
'chat.historyFailed': 'Could not load conversations',
|
|
8
|
+
'chat.newConversation': 'New conversation',
|
|
9
|
+
'chat.close': 'Close',
|
|
10
|
+
'chat.messages': 'Messages',
|
|
11
|
+
'chat.input': 'Message',
|
|
12
|
+
'chat.placeholder': 'Type a message, Ctrl/Cmd+Enter to send',
|
|
13
|
+
'chat.send': 'Send',
|
|
14
|
+
'chat.stop': 'Stop',
|
|
15
|
+
'chat.regenerate': 'Regenerate',
|
|
16
|
+
'chat.stopped': 'Stopped',
|
|
17
|
+
'chat.interrupted': 'Interrupted: the app closed during this reply',
|
|
18
|
+
'chat.exhausted': 'Reached the tool call round limit',
|
|
19
|
+
'chat.copy': 'Copy',
|
|
20
|
+
'chat.copied': 'Copied',
|
|
21
|
+
'chat.copyFailed': 'Could not copy',
|
|
22
|
+
'chat.insert': 'Insert',
|
|
23
|
+
'chat.retry': 'Retry',
|
|
24
|
+
'chat.more': 'More actions',
|
|
25
|
+
'chat.translationReply': 'Translation',
|
|
26
|
+
'chat.noSourceModel': 'Source model unknown',
|
|
27
|
+
'chat.switchModel': 'Switch model',
|
|
28
|
+
'chat.translate': 'Translate',
|
|
29
|
+
'chat.editReply': 'Edit',
|
|
30
|
+
'chat.replyText': 'Reply Markdown',
|
|
31
|
+
'chat.replyModel': 'Reply model',
|
|
32
|
+
'chat.targetLanguage': 'Target language',
|
|
33
|
+
'chat.branch': 'Branch',
|
|
34
|
+
'chat.copyConversation': 'Copy as new conversation',
|
|
35
|
+
'chat.save': 'Save',
|
|
36
|
+
'chat.saveFile': 'Save to local file',
|
|
37
|
+
'chat.export': 'Export',
|
|
38
|
+
'chat.exportMarkdown': 'Export as Markdown',
|
|
39
|
+
'chat.exportFailed': 'Could not download Markdown',
|
|
40
|
+
'chat.saveNote': 'Save to note',
|
|
41
|
+
'chat.saveNoteFailed': 'Could not save the note',
|
|
42
|
+
'chat.useContext': 'Set as context',
|
|
43
|
+
'chat.deleteReply': 'Delete',
|
|
44
|
+
'chat.deleteReplyTitle': 'Delete this message?',
|
|
45
|
+
'chat.deleteReparentBody':
|
|
46
|
+
'Later turns will attach to the previous reply. This cannot be undone.',
|
|
47
|
+
'chat.sourceModelUnavailable': 'The source model is unavailable. Use @ to pick another model.',
|
|
48
|
+
'chat.candidateHint':
|
|
49
|
+
'The original reply is retained. Click 👍 to set a candidate as context and continue from it.',
|
|
50
|
+
'chat.editReplyHint':
|
|
51
|
+
'Edits only replace this reply. A concurrent change will reject the edit and keep your draft.',
|
|
52
|
+
'chat.replyRefreshFailed': 'Could not reload the saved replies.',
|
|
53
|
+
'chat.delete': 'Delete conversation',
|
|
54
|
+
'chat.deleteTitle': 'Delete this conversation?',
|
|
55
|
+
'chat.network': 'Web search',
|
|
56
|
+
'chat.sources': 'Sources',
|
|
57
|
+
'chat.networkPrivacy':
|
|
58
|
+
'External search sends this question; preferred native search may send conversation ' +
|
|
59
|
+
'and attached note context to the model provider.',
|
|
60
|
+
'chat.searching': 'Searching the web…',
|
|
61
|
+
'chat.searchResults': '{count} results found',
|
|
62
|
+
'chat.reasoning': 'Reasoning',
|
|
63
|
+
'chat.toolProcess': 'Tool activity',
|
|
64
|
+
'chat.showMore': 'Show more',
|
|
65
|
+
'chat.showLess': 'Show less',
|
|
66
|
+
'chat.reasoningEffort': 'Reasoning effort',
|
|
67
|
+
'chat.reasoningStrength': 'Strength',
|
|
68
|
+
'chat.reasoningFaster': 'Faster',
|
|
69
|
+
'chat.reasoningSmarter': 'Smarter',
|
|
70
|
+
'chat.resetReasoning': 'Reset to default',
|
|
71
|
+
'chat.reasoningDefaultHint':
|
|
72
|
+
'Default sends no reasoning control; the provider decides. Choose an effort to override it.',
|
|
73
|
+
'chat.reasoningUnconfigured':
|
|
74
|
+
'No reasoning capabilities are configured for this model. ' +
|
|
75
|
+
'Turn on “Reasoning” in model settings and choose its supported efforts to enable the slider.',
|
|
76
|
+
'chat.unknown': 'Unknown',
|
|
77
|
+
'chat.contextUsage': 'Context usage',
|
|
78
|
+
'chat.usage': 'Token usage',
|
|
79
|
+
'chat.usageSettings': 'Usage and settings',
|
|
80
|
+
'chat.runSettings': 'Run settings',
|
|
81
|
+
'chat.reported': 'Measured',
|
|
82
|
+
'chat.estimated': 'Estimated',
|
|
83
|
+
'chat.modelsFailed': 'Could not load model capabilities',
|
|
84
|
+
'chat.modelsLoading': 'Loading models…',
|
|
85
|
+
'chat.retryModels': 'Retry loading models',
|
|
86
|
+
'chat.historyLoading': 'Loading conversations…',
|
|
87
|
+
'chat.retryHistory': 'Retry conversation operation',
|
|
88
|
+
'chat.rename': 'Rename conversation',
|
|
89
|
+
'chat.conversationTitle': 'Conversation title',
|
|
90
|
+
'chat.expandInput': 'Expand input',
|
|
91
|
+
'chat.collapseInput': 'Collapse input',
|
|
92
|
+
'chat.backToBottom': 'Back to bottom',
|
|
93
|
+
'chat.draftRecoverable':
|
|
94
|
+
'Your unsent message is available to restore after clearing the current draft.',
|
|
95
|
+
'chat.restoreDraft': 'Restore unsent message',
|
|
96
|
+
'chat.tools': 'More tools',
|
|
97
|
+
'chat.uploadAttachment': 'Upload attachment',
|
|
98
|
+
'chat.generateImage': 'Generate image',
|
|
99
|
+
'chat.generateImageOff': 'Turn off image generation',
|
|
100
|
+
'chat.quickPanel': 'Quick panel',
|
|
101
|
+
'chat.toolbarCustomize': 'Customize toolbar',
|
|
102
|
+
'chat.toolbarRestore': 'Restore default',
|
|
103
|
+
'chat.toolbarDrag': 'Drag or use ↑/↓ to reorder {name}',
|
|
104
|
+
'chat.paintingUnconfigured': 'Choose a painting model in settings first',
|
|
105
|
+
'chat.toolsUnsupported': 'The current model does not support tools',
|
|
106
|
+
'chat.generatedImages': 'Generated images',
|
|
107
|
+
'chat.openGeneratedImage': 'Open generated image {index}',
|
|
108
|
+
'chat.removeImage': 'Remove image {index}',
|
|
109
|
+
'chat.openImage': 'Open image {index}',
|
|
110
|
+
'chat.imageExpired': 'Image expired',
|
|
111
|
+
'chat.visionUnsupported': 'The current model does not support images',
|
|
112
|
+
'chat.imageLimit': 'Up to {max} images per message',
|
|
113
|
+
'chat.imageType': 'Only PNG, JPEG, WebP and GIF images are supported',
|
|
114
|
+
'chat.imageSize': 'Each image must be 4 MiB or smaller',
|
|
115
|
+
'chat.currentUsage': 'This turn',
|
|
116
|
+
'chat.totalUsage': 'Known conversation total',
|
|
117
|
+
'chat.usage.inputTokens': 'Input',
|
|
118
|
+
'chat.usage.outputTokens': 'Output',
|
|
119
|
+
'chat.usage.cacheReadTokens': 'Cache read',
|
|
120
|
+
'chat.usage.cacheWriteTokens': 'Cache write',
|
|
121
|
+
'chat.usage.reasoningTokens': 'Reasoning tokens',
|
|
122
|
+
'chat.usageHint':
|
|
123
|
+
'Cache is included in input; reasoning is included in output. ' +
|
|
124
|
+
'Unknown counts are not treated as zero.',
|
|
125
|
+
'chat.cost': 'Cost',
|
|
126
|
+
'chat.effort.default': 'Default',
|
|
127
|
+
'chat.effort.none': 'None',
|
|
128
|
+
'chat.effort.auto': 'Auto',
|
|
129
|
+
'chat.effort.minimal': 'Minimal',
|
|
130
|
+
'chat.effort.low': 'Low',
|
|
131
|
+
'chat.effort.medium': 'Medium',
|
|
132
|
+
'chat.effort.high': 'High',
|
|
133
|
+
'chat.effort.xhigh': 'Very high',
|
|
134
|
+
'chat.effort.max': 'Maximum',
|
|
135
|
+
'chat.effortHint.default': 'Use the provider default',
|
|
136
|
+
'chat.effortHint.none': 'No reasoning — fastest and cheapest',
|
|
137
|
+
'chat.effortHint.auto': 'The provider decides the depth',
|
|
138
|
+
'chat.effortHint.minimal': 'Minimal reasoning',
|
|
139
|
+
'chat.effortHint.low': 'Light reasoning — fastest',
|
|
140
|
+
'chat.effortHint.medium': 'Balanced reasoning',
|
|
141
|
+
'chat.effortHint.high': 'Deep reasoning',
|
|
142
|
+
'chat.effortHint.xhigh': 'Very deep reasoning',
|
|
143
|
+
'chat.effortHint.max': 'Maximum reasoning',
|
|
144
|
+
'chat.picker.search': 'Search models… (add a level: opus high)',
|
|
145
|
+
'chat.picker.searchLabel': 'Search models, optionally with a level',
|
|
146
|
+
'chat.picker.trigger': 'Model and reasoning: {name} · {effort}',
|
|
147
|
+
'chat.picker.choose': 'Choose model',
|
|
148
|
+
'chat.picker.keyed': 'API key',
|
|
149
|
+
'chat.picker.price': '{currency} {input} / {output} per 1M tokens from',
|
|
150
|
+
'chat.picker.context': '{size} context',
|
|
151
|
+
'chat.picker.group': 'Model group {provider}, {state}',
|
|
152
|
+
'chat.picker.expanded': 'expanded',
|
|
153
|
+
'chat.picker.collapsed': 'collapsed',
|
|
154
|
+
'chat.picker.select': 'Select {name} · {provider}',
|
|
155
|
+
'chat.picker.effortFor': 'Effort · {name}',
|
|
156
|
+
'chat.picker.setDefault': 'Set as default',
|
|
157
|
+
'chat.picker.resetOff': 'Reset to off',
|
|
158
|
+
'chat.picker.refresh': 'Refresh',
|
|
159
|
+
'chat.picker.refreshing': 'Updating…',
|
|
160
|
+
'chat.picker.empty': 'No models available; configure a provider first',
|
|
161
|
+
'chat.picker.noMatch': 'No matching models',
|
|
162
|
+
'chat.picker.reloaded': 'Reloaded local catalog: {count} chat models',
|
|
163
|
+
'chat.status.label': '{platform} context usage: {summary} · {spending}. View usage details',
|
|
164
|
+
'chat.mode.label': 'Permission mode',
|
|
165
|
+
'chat.mode.default': 'Ask each time',
|
|
166
|
+
'chat.mode.defaultHint': 'Follow each tool’s approval setting.',
|
|
167
|
+
'chat.mode.plan': 'Plan only',
|
|
168
|
+
'chat.mode.planHint': 'Read and plan without changes.',
|
|
169
|
+
'chat.mode.accept_edits': 'Accept edits',
|
|
170
|
+
'chat.mode.accept_editsHint': 'Approve edits; other actions follow their rules.',
|
|
171
|
+
'chat.mode.auto': 'Smart approval',
|
|
172
|
+
'chat.mode.autoHint': 'Approve app tools; rules may require a prompt.',
|
|
173
|
+
'chat.mode.full_access': 'Full access',
|
|
174
|
+
'chat.mode.full_accessHint': 'No prompts for this run; blocked tools stay blocked.',
|
|
175
|
+
'chat.mode.planBadge': 'Plan only',
|
|
176
|
+
'chat.mode.fullAccessTitle': 'Allow full access for this run?',
|
|
177
|
+
'chat.mode.fullAccessBody':
|
|
178
|
+
'For this run only, tools may change data and execute commands without asking. ' +
|
|
179
|
+
'Blocked tools stay blocked. This choice is not saved.',
|
|
180
|
+
'chat.mode.ruleNotice':
|
|
181
|
+
'Rules can miss risks and are not a sandbox. MCP tools keep their approval settings.',
|
|
182
|
+
'chat.mode.navigate': 'Select',
|
|
183
|
+
'chat.mode.confirm': 'Confirm',
|
|
184
|
+
'chat.mode.close': 'Close',
|
|
185
|
+
'chat.deleteBody': 'Its messages cannot be restored.',
|
|
186
|
+
'chat.deleteFailed': 'Could not delete the conversation',
|
|
187
|
+
'chat.empty': 'Ask anything to start',
|
|
188
|
+
'chat.noModels': 'No chat model yet. Add a provider and its models first.',
|
|
189
|
+
'chat.openSettings': 'Open settings',
|
|
190
|
+
'chat.context.remove': 'Do not send {label} with the next message',
|
|
191
|
+
'chat.tool.calling': 'Calling {name}',
|
|
192
|
+
'chat.tool.ok': '{name}: {summary}',
|
|
193
|
+
'chat.tool.error': '{name} failed: {summary}',
|
|
194
|
+
'chat.tool.denied': '{name}: denied',
|
|
195
|
+
'chat.tool.unknown': '{name}: result unknown, it may have run',
|
|
196
|
+
'chat.approval.title': 'Allow {name}?',
|
|
197
|
+
'chat.approval.host': 'App tool',
|
|
198
|
+
'chat.approval.mcp': 'MCP server {server}',
|
|
199
|
+
'chat.approval.allow': 'Allow once',
|
|
200
|
+
'chat.approval.deny': 'Deny',
|
|
201
|
+
}
|
package/src/i18n/en.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { KitErrorCode } from '../ports'
|
|
2
|
+
import { enChat } from './en-chat.js'
|
|
2
3
|
|
|
3
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Every `errors.<code>` must exist, so a new KitErrorCode fails typecheck until it is translated;
|
|
6
|
+
* other keys are free-form (`pnpm kit:i18n` checks them).
|
|
7
|
+
*/
|
|
4
8
|
export type Messages = Record<
|
|
5
9
|
`errors.${KitErrorCode}` | 'common.confirm' | 'common.cancel',
|
|
6
10
|
string
|
|
@@ -8,6 +12,7 @@ export type Messages = Record<
|
|
|
8
12
|
Record<string, string>
|
|
9
13
|
|
|
10
14
|
export const en: Messages = {
|
|
15
|
+
...enChat,
|
|
11
16
|
'common.confirm': 'OK',
|
|
12
17
|
'common.cancel': 'Cancel',
|
|
13
18
|
'skills.add.title': 'Add skill',
|
|
@@ -16,7 +21,8 @@ export const en: Messages = {
|
|
|
16
21
|
'skills.add.system': 'Search this computer',
|
|
17
22
|
'skills.add.local': 'Import local file or folder',
|
|
18
23
|
'skills.add.review_notice':
|
|
19
|
-
'Nothing is installed until you review the full skill and confirm.
|
|
24
|
+
'Nothing is installed until you review the full skill and confirm. ' +
|
|
25
|
+
'Scripts never run automatically.',
|
|
20
26
|
'skills.add.query': 'Keywords or GitHub URL',
|
|
21
27
|
'skills.add.query_hint': 'Search skills or paste a GitHub repository / skill URL',
|
|
22
28
|
'skills.add.search': 'Search',
|
|
@@ -27,12 +33,15 @@ export const en: Messages = {
|
|
|
27
33
|
'skills.add.rescan': 'Scan home folders',
|
|
28
34
|
'skills.add.pick_search_directory': 'Choose skill folder',
|
|
29
35
|
'skills.add.local_hint':
|
|
30
|
-
'Choose SKILL.md, a .zip package, or a skill folder.
|
|
36
|
+
'Choose SKILL.md, a .zip package, or a skill folder. ' +
|
|
37
|
+
'Packaged references and scripts are included in the preview.',
|
|
31
38
|
'skills.add.pick_directory': 'Choose folder',
|
|
32
39
|
'skills.add.model': 'Model',
|
|
33
40
|
'skills.add.choose_model': 'Choose a configured chat model before sending',
|
|
34
41
|
'skills.add.authoring_notice':
|
|
35
|
-
'This assistant can create and test skill files with tools running as your current user.
|
|
42
|
+
'This assistant can create and test skill files with tools running as your current user. ' +
|
|
43
|
+
'Its working directory is not a sandbox. Review each permission request; ' +
|
|
44
|
+
'nothing is installed until you preview the package and confirm.',
|
|
36
45
|
'skills.add.creator_review': 'Review the built-in skill-creator before starting',
|
|
37
46
|
'skills.add.review_creator': 'Review skill-creator',
|
|
38
47
|
'skills.add.confirm_creator': 'Confirm skill-creator and start',
|
|
@@ -40,159 +49,11 @@ export const en: Messages = {
|
|
|
40
49
|
'skills.add.authoring_input': 'Message to the skill creation assistant',
|
|
41
50
|
'skills.add.preview_artifact': 'Preview artifact',
|
|
42
51
|
'skills.add.tool_warning':
|
|
43
|
-
'Arguments preview. Allowing this tool grants current-user filesystem and network permissions,
|
|
52
|
+
'Arguments preview. Allowing this tool grants current-user filesystem and network permissions, ' +
|
|
53
|
+
'not sandboxed access. Allow only a call you trust.',
|
|
44
54
|
'skills.add.working': 'Working…',
|
|
45
55
|
'skills.add.no_results': 'No skills found.',
|
|
46
56
|
'skills.add.ignored': 'Files not imported',
|
|
47
|
-
'chat.networkOn': 'Web search on · click to turn off',
|
|
48
|
-
'chat.networkOff': 'Web search off · click to turn on',
|
|
49
|
-
'chat.title': 'Chat',
|
|
50
|
-
'chat.history': 'Conversation',
|
|
51
|
-
'chat.historyFailed': 'Could not load conversations',
|
|
52
|
-
'chat.newConversation': 'New conversation',
|
|
53
|
-
'chat.close': 'Close',
|
|
54
|
-
'chat.messages': 'Messages',
|
|
55
|
-
'chat.input': 'Message',
|
|
56
|
-
'chat.placeholder': 'Type a message, Ctrl/Cmd+Enter to send',
|
|
57
|
-
'chat.send': 'Send',
|
|
58
|
-
'chat.stop': 'Stop',
|
|
59
|
-
'chat.regenerate': 'Regenerate',
|
|
60
|
-
'chat.stopped': 'Stopped',
|
|
61
|
-
'chat.interrupted': 'Interrupted: the app closed during this reply',
|
|
62
|
-
'chat.exhausted': 'Reached the tool call round limit',
|
|
63
|
-
'chat.copy': 'Copy',
|
|
64
|
-
'chat.copied': 'Copied',
|
|
65
|
-
'chat.copyFailed': 'Could not copy',
|
|
66
|
-
'chat.insert': 'Insert',
|
|
67
|
-
'chat.retry': 'Retry',
|
|
68
|
-
'chat.more': 'More actions',
|
|
69
|
-
'chat.translationReply': 'Translation',
|
|
70
|
-
'chat.noSourceModel': 'Source model unknown',
|
|
71
|
-
'chat.switchModel': 'Switch model',
|
|
72
|
-
'chat.translate': 'Translate',
|
|
73
|
-
'chat.editReply': 'Edit',
|
|
74
|
-
'chat.replyText': 'Reply Markdown',
|
|
75
|
-
'chat.replyModel': 'Reply model',
|
|
76
|
-
'chat.targetLanguage': 'Target language',
|
|
77
|
-
'chat.branch': 'Branch',
|
|
78
|
-
'chat.copyConversation': 'Copy as new conversation',
|
|
79
|
-
'chat.save': 'Save',
|
|
80
|
-
'chat.saveFile': 'Save to local file',
|
|
81
|
-
'chat.export': 'Export',
|
|
82
|
-
'chat.exportMarkdown': 'Export as Markdown',
|
|
83
|
-
'chat.exportFailed': 'Could not download Markdown',
|
|
84
|
-
'chat.saveNote': 'Save to note',
|
|
85
|
-
'chat.saveNoteFailed': 'Could not save the note',
|
|
86
|
-
'chat.useContext': 'Set as context',
|
|
87
|
-
'chat.deleteReply': 'Delete',
|
|
88
|
-
'chat.deleteReplyTitle': 'Delete this message?',
|
|
89
|
-
'chat.deleteReparentBody':
|
|
90
|
-
'Later turns will attach to the previous reply. This cannot be undone.',
|
|
91
|
-
'chat.sourceModelUnavailable': 'The source model is unavailable. Use @ to pick another model.',
|
|
92
|
-
'chat.candidateHint':
|
|
93
|
-
'The original reply is retained. Click 👍 to set a candidate as context and continue from it.',
|
|
94
|
-
'chat.editReplyHint':
|
|
95
|
-
'Edits only replace this reply. A concurrent change will reject the edit and keep your draft.',
|
|
96
|
-
'chat.replyRefreshFailed': 'Could not reload the saved replies.',
|
|
97
|
-
'chat.delete': 'Delete conversation',
|
|
98
|
-
'chat.deleteTitle': 'Delete this conversation?',
|
|
99
|
-
'chat.network': 'Web search',
|
|
100
|
-
'chat.sources': 'Sources',
|
|
101
|
-
'chat.networkPrivacy':
|
|
102
|
-
'External search sends this question; preferred native search may send conversation and attached note context to the model provider.',
|
|
103
|
-
'chat.searching': 'Searching the web…',
|
|
104
|
-
'chat.searchResults': '{count} results found',
|
|
105
|
-
'chat.reasoning': 'Reasoning',
|
|
106
|
-
'chat.toolProcess': 'Tool activity',
|
|
107
|
-
'chat.showMore': 'Show more',
|
|
108
|
-
'chat.showLess': 'Show less',
|
|
109
|
-
'chat.reasoningEffort': 'Reasoning effort',
|
|
110
|
-
'chat.reasoningStrength': 'Strength',
|
|
111
|
-
'chat.reasoningFaster': 'Faster',
|
|
112
|
-
'chat.reasoningSmarter': 'Smarter',
|
|
113
|
-
'chat.resetReasoning': 'Reset to default',
|
|
114
|
-
'chat.reasoningDefaultHint':
|
|
115
|
-
'Default sends no reasoning control; the provider decides. Choose an effort to override it.',
|
|
116
|
-
'chat.reasoningUnconfigured':
|
|
117
|
-
'No reasoning capabilities are configured for this model. Turn on “Reasoning” in model settings and choose its supported efforts to enable the slider.',
|
|
118
|
-
'chat.unknown': 'Unknown',
|
|
119
|
-
'chat.contextUsage': 'Context usage',
|
|
120
|
-
'chat.usage': 'Token usage',
|
|
121
|
-
'chat.usageSettings': 'Usage and settings',
|
|
122
|
-
'chat.runSettings': 'Run settings',
|
|
123
|
-
'chat.reported': 'Measured',
|
|
124
|
-
'chat.estimated': 'Estimated',
|
|
125
|
-
'chat.modelsFailed': 'Could not load model capabilities',
|
|
126
|
-
'chat.modelsLoading': 'Loading models…',
|
|
127
|
-
'chat.retryModels': 'Retry loading models',
|
|
128
|
-
'chat.historyLoading': 'Loading conversations…',
|
|
129
|
-
'chat.retryHistory': 'Retry conversation operation',
|
|
130
|
-
'chat.rename': 'Rename conversation',
|
|
131
|
-
'chat.conversationTitle': 'Conversation title',
|
|
132
|
-
'chat.expandInput': 'Expand input',
|
|
133
|
-
'chat.collapseInput': 'Collapse input',
|
|
134
|
-
'chat.backToBottom': 'Back to bottom',
|
|
135
|
-
'chat.draftRecoverable':
|
|
136
|
-
'Your unsent message is available to restore after clearing the current draft.',
|
|
137
|
-
'chat.restoreDraft': 'Restore unsent message',
|
|
138
|
-
'chat.tools': 'More tools',
|
|
139
|
-
'chat.uploadAttachment': 'Upload attachment',
|
|
140
|
-
'chat.generateImage': 'Generate image',
|
|
141
|
-
'chat.generateImageOff': 'Turn off image generation',
|
|
142
|
-
'chat.quickPanel': 'Quick panel',
|
|
143
|
-
'chat.toolbarCustomize': 'Customize toolbar',
|
|
144
|
-
'chat.toolbarRestore': 'Restore default',
|
|
145
|
-
'chat.toolbarDrag': 'Drag or use ↑/↓ to reorder {name}',
|
|
146
|
-
'chat.paintingUnconfigured': 'Choose a painting model in settings first',
|
|
147
|
-
'chat.toolsUnsupported': 'The current model does not support tools',
|
|
148
|
-
'chat.generatedImages': 'Generated images',
|
|
149
|
-
'chat.openGeneratedImage': 'Open generated image {index}',
|
|
150
|
-
'chat.removeImage': 'Remove image {index}',
|
|
151
|
-
'chat.openImage': 'Open image {index}',
|
|
152
|
-
'chat.imageExpired': 'Image expired',
|
|
153
|
-
'chat.visionUnsupported': 'The current model does not support images',
|
|
154
|
-
'chat.imageLimit': 'Up to {max} images per message',
|
|
155
|
-
'chat.imageType': 'Only PNG, JPEG, WebP and GIF images are supported',
|
|
156
|
-
'chat.imageSize': 'Each image must be 4 MiB or smaller',
|
|
157
|
-
'chat.currentUsage': 'This turn',
|
|
158
|
-
'chat.totalUsage': 'Known conversation total',
|
|
159
|
-
'chat.usage.inputTokens': 'Input',
|
|
160
|
-
'chat.usage.outputTokens': 'Output',
|
|
161
|
-
'chat.usage.cacheReadTokens': 'Cache read',
|
|
162
|
-
'chat.usage.cacheWriteTokens': 'Cache write',
|
|
163
|
-
'chat.usage.reasoningTokens': 'Reasoning tokens',
|
|
164
|
-
'chat.usageHint':
|
|
165
|
-
'Cache is included in input; reasoning is included in output. Unknown counts are not treated as zero.',
|
|
166
|
-
'chat.cost': 'Cost',
|
|
167
|
-
'chat.effort.default': 'Default',
|
|
168
|
-
'chat.effort.none': 'None',
|
|
169
|
-
'chat.effort.auto': 'Auto',
|
|
170
|
-
'chat.effort.minimal': 'Minimal',
|
|
171
|
-
'chat.effort.low': 'Low',
|
|
172
|
-
'chat.effort.medium': 'Medium',
|
|
173
|
-
'chat.effort.high': 'High',
|
|
174
|
-
'chat.effort.xhigh': 'Very high',
|
|
175
|
-
'chat.effort.max': 'Maximum',
|
|
176
|
-
'chat.mode.label': 'Permission mode',
|
|
177
|
-
'chat.mode.default': 'Ask each time',
|
|
178
|
-
'chat.mode.defaultHint': 'Follow each tool’s approval setting.',
|
|
179
|
-
'chat.mode.plan': 'Plan only',
|
|
180
|
-
'chat.mode.planHint': 'Read and plan without changes.',
|
|
181
|
-
'chat.mode.accept_edits': 'Accept edits',
|
|
182
|
-
'chat.mode.accept_editsHint': 'Approve edits; other actions follow their rules.',
|
|
183
|
-
'chat.mode.auto': 'Smart approval',
|
|
184
|
-
'chat.mode.autoHint': 'Approve app tools; rules may require a prompt.',
|
|
185
|
-
'chat.mode.full_access': 'Full access',
|
|
186
|
-
'chat.mode.full_accessHint': 'No prompts for this run; blocked tools stay blocked.',
|
|
187
|
-
'chat.mode.planBadge': 'Plan only',
|
|
188
|
-
'chat.mode.fullAccessTitle': 'Allow full access for this run?',
|
|
189
|
-
'chat.mode.fullAccessBody':
|
|
190
|
-
'For this run only, tools may change data and execute commands without asking. Blocked tools stay blocked. This choice is not saved.',
|
|
191
|
-
'chat.mode.ruleNotice':
|
|
192
|
-
'Rules can miss risks and are not a sandbox. MCP tools keep their approval settings.',
|
|
193
|
-
'chat.mode.navigate': 'Select',
|
|
194
|
-
'chat.mode.confirm': 'Confirm',
|
|
195
|
-
'chat.mode.close': 'Close',
|
|
196
57
|
'providers.max_output': 'Maximum output (tokens)',
|
|
197
58
|
'search.search': 'Web search',
|
|
198
59
|
'search.fetch': 'Read webpage',
|
|
@@ -224,7 +85,6 @@ export const en: Messages = {
|
|
|
224
85
|
'search.pageUrl': 'URL',
|
|
225
86
|
'search.password': 'Password',
|
|
226
87
|
'search.read': 'Read',
|
|
227
|
-
'chat.deleteBody': 'Its messages cannot be restored.',
|
|
228
88
|
'search.manageKeys': 'Manage keys',
|
|
229
89
|
'search.newKey': 'New key',
|
|
230
90
|
'search.addKey': 'Add key',
|
|
@@ -241,23 +101,10 @@ export const en: Messages = {
|
|
|
241
101
|
'search.blacklist': 'Blacklist (one rule per line)',
|
|
242
102
|
'search.nativePreferred': 'Prefer native model web search',
|
|
243
103
|
'search.nativePrivacy':
|
|
244
|
-
'Declared compatible models can use native search; others use the selected external provider.
|
|
104
|
+
'Declared compatible models can use native search; others use the selected external provider. ' +
|
|
105
|
+
'Native search may send conversation and note context to the model provider. ' +
|
|
106
|
+
'Local blacklist and cutoff do not control provider-native search.',
|
|
245
107
|
'providers.nativeWebSearch': 'Model supports native web search',
|
|
246
|
-
'chat.deleteFailed': 'Could not delete the conversation',
|
|
247
|
-
'chat.empty': 'Ask anything to start',
|
|
248
|
-
'chat.noModels': 'No chat model yet. Add a provider and its models first.',
|
|
249
|
-
'chat.openSettings': 'Open settings',
|
|
250
|
-
'chat.context.remove': 'Do not send {label} with the next message',
|
|
251
|
-
'chat.tool.calling': 'Calling {name}',
|
|
252
|
-
'chat.tool.ok': '{name}: {summary}',
|
|
253
|
-
'chat.tool.error': '{name} failed: {summary}',
|
|
254
|
-
'chat.tool.denied': '{name}: denied',
|
|
255
|
-
'chat.tool.unknown': '{name}: result unknown, it may have run',
|
|
256
|
-
'chat.approval.title': 'Allow {name}?',
|
|
257
|
-
'chat.approval.host': 'App tool',
|
|
258
|
-
'chat.approval.mcp': 'MCP server {server}',
|
|
259
|
-
'chat.approval.allow': 'Allow once',
|
|
260
|
-
'chat.approval.deny': 'Deny',
|
|
261
108
|
'logs.title': 'Logs',
|
|
262
109
|
'logs.problemsOnly': 'Problems only',
|
|
263
110
|
'logs.openDir': 'Open folder',
|
|
@@ -524,7 +371,8 @@ export const en: Messages = {
|
|
|
524
371
|
'mcp.server.revokeBody': 'Clients using “{name}” lose access immediately.',
|
|
525
372
|
'mcp.client.title': 'External MCP servers',
|
|
526
373
|
'mcp.client.hint':
|
|
527
|
-
'Tools of enabled and trusted servers are offered to the in-app AI;
|
|
374
|
+
'Tools of enabled and trusted servers are offered to the in-app AI; ' +
|
|
375
|
+
'each call follows its approval setting.',
|
|
528
376
|
'mcp.client.add': 'Add server',
|
|
529
377
|
'mcp.client.editTitle': 'Edit server',
|
|
530
378
|
'mcp.client.empty': 'No MCP servers yet',
|
|
@@ -542,7 +390,8 @@ export const en: Messages = {
|
|
|
542
390
|
'mcp.client.allowPrivate': 'Allow private network',
|
|
543
391
|
'mcp.client.trustTitle': 'Trust this server?',
|
|
544
392
|
'mcp.client.trustBody':
|
|
545
|
-
'The AI will see the tools of “{name}” and may call them;
|
|
393
|
+
'The AI will see the tools of “{name}” and may call them; ' +
|
|
394
|
+
'calls still follow each tool’s approval.',
|
|
546
395
|
'mcp.client.privateTitle': 'Allow a private-network address?',
|
|
547
396
|
'mcp.client.privateBody':
|
|
548
397
|
'Requests to {url} will be allowed even though it is on the local network.',
|
|
@@ -641,5 +490,6 @@ export const en: Messages = {
|
|
|
641
490
|
'skills.file_kind.asset': 'Asset',
|
|
642
491
|
'skills.file_size': '{size} B',
|
|
643
492
|
'skills.scripts_notice':
|
|
644
|
-
'Contains scripts. This app never runs them automatically;
|
|
493
|
+
'Contains scripts. This app never runs them automatically; ' +
|
|
494
|
+
'the host may run them after you approve.',
|
|
645
495
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const zhCNChat: Readonly<Record<string, string>>
|