@huanlin/dsh-focus-chat 0.1.23

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 (52) hide show
  1. package/README.md +73 -0
  2. package/README.zh.md +71 -0
  3. package/cordis.patch.yml +7 -0
  4. package/lib/client.js +6051 -0
  5. package/lib/index.js +6 -0
  6. package/lib/types/client/apply.d.ts +12 -0
  7. package/lib/types/client/contract/props.d.ts +78 -0
  8. package/lib/types/client/index.d.ts +10 -0
  9. package/lib/types/client/locales.d.ts +437 -0
  10. package/lib/types/client/model/feedback-controller.d.ts +161 -0
  11. package/lib/types/client/model/flow.d.ts +76 -0
  12. package/lib/types/client/model/index.d.ts +5 -0
  13. package/lib/types/client/model/text.d.ts +42 -0
  14. package/lib/types/client/model/todo.d.ts +38 -0
  15. package/lib/types/client/model/tools.d.ts +35 -0
  16. package/lib/types/client/model/turn-slice.d.ts +38 -0
  17. package/lib/types/client/model/types.d.ts +289 -0
  18. package/lib/types/client/view/FocusView.d.ts +9 -0
  19. package/lib/types/client/view/chrome/ImageLightbox.d.ts +26 -0
  20. package/lib/types/client/view/chrome/MessageActions.d.ts +24 -0
  21. package/lib/types/client/view/chrome/MessageFeedbackActions.d.ts +46 -0
  22. package/lib/types/client/view/chrome/MessageImage.d.ts +46 -0
  23. package/lib/types/client/view/chrome/NavRail.d.ts +21 -0
  24. package/lib/types/client/view/chrome/ReferenceIcon.d.ts +17 -0
  25. package/lib/types/client/view/chrome/RunningStatus.d.ts +7 -0
  26. package/lib/types/client/view/chrome/TurnNavigator.d.ts +14 -0
  27. package/lib/types/client/view/helpers/format.d.ts +30 -0
  28. package/lib/types/client/view/helpers/icons.d.ts +9 -0
  29. package/lib/types/client/view/helpers/image-labels.d.ts +13 -0
  30. package/lib/types/client/view/helpers/message.d.ts +13 -0
  31. package/lib/types/client/view/helpers/terminal.d.ts +20 -0
  32. package/lib/types/client/view/rows/CommandRow.d.ts +12 -0
  33. package/lib/types/client/view/rows/CompactionRow.d.ts +24 -0
  34. package/lib/types/client/view/rows/ContextRow.d.ts +22 -0
  35. package/lib/types/client/view/rows/FlowRow.d.ts +20 -0
  36. package/lib/types/client/view/rows/RemoteTurnRow.d.ts +33 -0
  37. package/lib/types/client/view/rows/RetryRow.d.ts +10 -0
  38. package/lib/types/client/view/rows/SystemPromptRow.d.ts +12 -0
  39. package/lib/types/client/view/rows/ThinkRow.d.ts +16 -0
  40. package/lib/types/client/view/rows/ToolCallRow.d.ts +8 -0
  41. package/lib/types/client/view/rows/ToolGroupRow.d.ts +11 -0
  42. package/lib/types/client/view/rows/TurnFoldRow.d.ts +27 -0
  43. package/lib/types/client/view/rows/TurnTailRow.d.ts +16 -0
  44. package/lib/types/client/view/rows/TurnUsageDisclosure.d.ts +9 -0
  45. package/lib/types/client/view/rows/UserBubble.d.ts +18 -0
  46. package/lib/types/client/view/rows/group-title.d.ts +32 -0
  47. package/lib/types/client/view/rows/produced-fit.d.ts +14 -0
  48. package/lib/types/host/rpc.d.ts +63 -0
  49. package/lib/types/host/turn-index.d.ts +40 -0
  50. package/lib/types/index.d.ts +3 -0
  51. package/lib/types/protocol.d.ts +94 -0
  52. package/package.json +109 -0
package/lib/index.js ADDED
@@ -0,0 +1,6 @@
1
+ //#region src/index.ts
2
+ /** Host loader entry for the browser-only focus-view plugin. */
3
+ /** Provides no host-side behavior. */
4
+ function apply() {}
5
+ //#endregion
6
+ export { apply };
@@ -0,0 +1,12 @@
1
+ /** The focus view plugin's single assembly point: register the view tab into
2
+ * the conversation view slot (the chat plugin's apply layout). */
3
+ /** Required services: the view slot, the locale registry, sessions, the connection facts, the Conversation image resolver, and the Remote namespaces. */
4
+ export declare const inject: string[];
5
+ import type { Context } from '@deepseek-ai/cordis';
6
+ /**
7
+ * Client plugin body: register the focus view tab.
8
+ * The registration rides the slot service's effect wrapper, so plugin unload
9
+ * removes the tab.
10
+ * @param ctx - client root context.
11
+ */
12
+ export declare function apply(ctx: Context): void;
@@ -0,0 +1,78 @@
1
+ /** Shared props of the focus view entry (the contract face between the apply side and the view). */
2
+ import type { MarkdownFileMentions } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import type { ImageAttachmentRef } from '@deepseek-ai/dsh-attachment';
4
+ import type { HostObservable, InjectFace, TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
5
+ import type { MessageId } from '@deepseek-ai/dsh-client-connection/client';
6
+ import type { ConvViewProps, TurnLocation } from '@deepseek-ai/dsh-client-ui-conversation/client';
7
+ import type { MessageFeedbackActionResult, MessageFeedbackView } from '../model/feedback-controller.ts';
8
+ import type { MessageFeedbackRating } from '@deepseek-ai/dsh-message-feedback/types';
9
+ /** One reflow-resistant scroll position (the chat view's saved shape). */
10
+ export interface FocusScrollPosition {
11
+ /** Stable flow-item identity. */
12
+ anchorKey: string;
13
+ /** Anchor row top relative to the scrollport. */
14
+ anchorTop: number;
15
+ /** Raw scrollport offset at capture. */
16
+ scrollTop: number;
17
+ }
18
+ /** Owner currency of a closing assistant (the chat turn-tail owner shape). */
19
+ export interface FocusTurnTailOwner {
20
+ /** Engine-owned closing turn boundary. */
21
+ turn: TurnLocation;
22
+ /** The closing assistant's seq. */
23
+ seq: number;
24
+ /** Open a filesystem path through the Host. */
25
+ openFile: (path: string) => void;
26
+ }
27
+ /** Injected business face of the focus view entry. */
28
+ export interface FocusViewInjected {
29
+ /** Load one older page of history into the session window (chat-view semantics). */
30
+ loadOlder: () => void;
31
+ /** Resolve a session-authorized historical image for inline display. */
32
+ loadImage: (attachment: ImageAttachmentRef) => Promise<string>;
33
+ /** Open a workspace path through the Host; refusals reject so the view can surface its dialog. */
34
+ openFile: (path: string) => Promise<void>;
35
+ /** Fork the session at one message seq (turn-tail branch semantics). */
36
+ forkAt: (seq: number) => void;
37
+ /** Prose file-mention vocabulary for a closing assistant (optional service). */
38
+ fileMentions: (owner: FocusTurnTailOwner) => MarkdownFileMentions | undefined;
39
+ /** Whether the browser itself is connected over loopback (produced-chip gating). */
40
+ isLoopback: boolean;
41
+ /** Per-session scroll-position ledger (the chat view's persistence). */
42
+ scroll: {
43
+ save: (position: FocusScrollPosition | null) => void;
44
+ read: () => FocusScrollPosition | null;
45
+ };
46
+ }
47
+ /** Injected Host account home and message-feedback hooks for the view (the
48
+ * chat tool-row rule's home abbreviation source, plus the per-message
49
+ * feedback view the chat's assistant-actions strip reads — re-declared here
50
+ * because the focus view cannot take the assistant-actions slot seat). */
51
+ export interface FocusHooksInjected {
52
+ hooks: {
53
+ /** Host account home of the active connection generation, bound by the
54
+ * slot renderer; absent while reconnecting. */
55
+ hostHome: HostObservable<string | undefined>;
56
+ /** The owning Session's feedback view, shared by every message control. */
57
+ feedback: HostObservable<MessageFeedbackView>;
58
+ };
59
+ /** Load the Session's feedback once, on first interaction. */
60
+ ensureFeedback: () => Promise<MessageFeedbackActionResult>;
61
+ /** Create or replace feedback for one message. */
62
+ rateFeedback: (messageId: MessageId, rating: MessageFeedbackRating, note?: string) => Promise<MessageFeedbackActionResult>;
63
+ /** Toggle or retract one message's rating. */
64
+ toggleFeedback: (messageId: MessageId, rating: MessageFeedbackRating) => Promise<MessageFeedbackActionResult>;
65
+ /** Drop the note while keeping the rating. */
66
+ clearFeedbackNote: (messageId: MessageId) => Promise<MessageFeedbackActionResult>;
67
+ }
68
+ /**
69
+ * Full props of the focus view entry: the conversation view kit, the
70
+ * injected face (hooks bound), and the focus locale seat. Message images
71
+ * render through the view's own gallery (the chat view owns the image slot
72
+ * declaration, so a second `conversation.view` entry cannot re-declare it).
73
+ */
74
+ export type FocusViewProps = ConvViewProps & FocusViewInjected & InjectFace<FocusHooksInjected> & {
75
+ t: FocusTranslate;
76
+ };
77
+ /** The focus locale seat (the view namespace). */
78
+ export type FocusTranslate = TranslateNS<'focus'>;
@@ -0,0 +1,10 @@
1
+ import type { FocusKey } from './locales.ts';
2
+ declare module '@deepseek-ai/dsh-client-ui-slots' {
3
+ interface LocaleNamespaceMap {
4
+ /** The focus view's copy. */
5
+ focus: FocusKey;
6
+ }
7
+ }
8
+ export type { FocusKey } from './locales.ts';
9
+ export type { FocusScrollPosition, FocusTurnTailOwner, FocusViewInjected, FocusViewProps } from './contract/props.ts';
10
+ export { apply, inject } from './apply.ts';
@@ -0,0 +1,437 @@
1
+ /** `focus` namespace dictionaries (the focus view's copy). */
2
+ /** Simplified Chinese dictionary (the key-set source of truth). */
3
+ export declare const zh: {
4
+ 'view.label': string;
5
+ copy: string;
6
+ copied: string;
7
+ 'tool.group': string;
8
+ 'tool.group.one': string;
9
+ 'tool.commands': string;
10
+ 'tool.commands.one': string;
11
+ 'tool.searches': string;
12
+ 'tool.searches.one': string;
13
+ 'tool.thought': string;
14
+ 'tool.context': string;
15
+ 'tool.context.one': string;
16
+ 'tool.edits': string;
17
+ 'tool.edits.one': string;
18
+ 'tool.failedSuffix': string;
19
+ 'tool.failedAll': string;
20
+ 'tool.failed.commands.one': string;
21
+ 'tool.failed.searches.one': string;
22
+ 'tool.subagents': string;
23
+ 'tool.subagents.one': string;
24
+ 'tool.todos': string;
25
+ 'tool.todos.one': string;
26
+ 'todo.rowTitle': string;
27
+ 'todo.completed': string;
28
+ 'tool.goals': string;
29
+ 'tool.goals.one': string;
30
+ 'tool.workflows': string;
31
+ 'tool.workflows.one': string;
32
+ 'tool.skills': string;
33
+ 'tool.skills.one': string;
34
+ 'tool.questions': string;
35
+ 'tool.questions.one': string;
36
+ 'ask.rowTitle': string;
37
+ 'ask.waiting': string;
38
+ 'ask.cancelled': string;
39
+ 'ask.interrupted': string;
40
+ 'ask.answered': string;
41
+ 'tool.plans': string;
42
+ 'tool.plans.one': string;
43
+ 'tool.jobs': string;
44
+ 'tool.jobs.one': string;
45
+ worked: string;
46
+ 'turnFold.stopped': string;
47
+ 'context.fold': string;
48
+ 'tool.explored.files': string;
49
+ 'tool.explored.files.one': string;
50
+ 'tool.explored.dirs': string;
51
+ 'tool.explored.dirs.one': string;
52
+ 'tool.explored.both': string;
53
+ 'tool.others': string;
54
+ 'tool.others.one': string;
55
+ 'tool.separator': string;
56
+ 'status.diving': string;
57
+ 'duration.seconds': string;
58
+ 'duration.minutes': string;
59
+ 'tool.input': string;
60
+ 'row.running': string;
61
+ 'row.failed': string;
62
+ 'row.stopped': string;
63
+ extraBlock: string;
64
+ 'terminal.signal': string;
65
+ 'terminal.exitCode': string;
66
+ 'terminal.running': string;
67
+ 'terminal.failed': string;
68
+ 'terminal.done': string;
69
+ 'terminal.noOutput': string;
70
+ 'terminal.collapseAria': string;
71
+ 'terminal.collapse': string;
72
+ 'terminal.expandAria': string;
73
+ 'terminal.expand': string;
74
+ 'tool.expandAria': string;
75
+ 'tool.collapseAria': string;
76
+ loadOlder: string;
77
+ loading: string;
78
+ think: string;
79
+ 'thought.duration': string;
80
+ 'thought.expandAria': string;
81
+ stopped: string;
82
+ command: string;
83
+ 'command.running': string;
84
+ 'command.done': string;
85
+ 'command.failed': string;
86
+ compaction: string;
87
+ 'compaction.completed': string;
88
+ 'compaction.expand': string;
89
+ 'compaction.unavailable': string;
90
+ 'compaction.running': string;
91
+ contextInjection: string;
92
+ contextRecall: string;
93
+ 'context.instructions.loaded': string;
94
+ 'context.instructions.added': string;
95
+ 'context.instructions.updated': string;
96
+ 'context.instructions.removed': string;
97
+ 'context.catalog.replaced': string;
98
+ 'context.catalog.more': string;
99
+ 'context.snapshot.supersedes': string;
100
+ 'context.relay.from': string;
101
+ 'context.recall.counts': string;
102
+ 'context.recall.truncated': string;
103
+ unknownSurface: string;
104
+ unknownBlock: string;
105
+ 'retry.active': string;
106
+ 'retry.scheduled': string;
107
+ 'retry.started': string;
108
+ 'retry.cancelled': string;
109
+ 'retry.status': string;
110
+ 'retry.delay': string;
111
+ 'retry.failure': string;
112
+ turnError: string;
113
+ maxTokens: string;
114
+ 'maxTokens.hint': string;
115
+ loadingHistory: string;
116
+ loadError: string;
117
+ toBottom: string;
118
+ 'nav.rail': string;
119
+ ranFor: string;
120
+ ttft: string;
121
+ tokensPerSecond: string;
122
+ branch: string;
123
+ branchUnavailable: string;
124
+ 'produced.label': string;
125
+ 'produced.more': string;
126
+ 'produced.moreOne': string;
127
+ 'produced.showInFolder': string;
128
+ 'produced.open': string;
129
+ 'image.label': string;
130
+ 'image.openOriginal': string;
131
+ 'image.openOriginalLabel': string;
132
+ 'image.loading': string;
133
+ 'image.loadFailed': string;
134
+ 'image.preview': string;
135
+ 'image.closePreview': string;
136
+ 'image.serviceUnavailable': string;
137
+ 'fileOpen.title': string;
138
+ 'fileOpen.unknown': string;
139
+ 'fileOpen.folderTitle': string;
140
+ 'fileOpen.folderUnknown': string;
141
+ cancel: string;
142
+ retry: string;
143
+ close: string;
144
+ 'feedback.like': string;
145
+ 'feedback.likeActive': string;
146
+ 'feedback.dislike': string;
147
+ 'feedback.dislikeActive': string;
148
+ 'feedback.note.open': string;
149
+ 'feedback.note.dialog': string;
150
+ 'feedback.note.placeholder': string;
151
+ 'feedback.note.save': string;
152
+ 'feedback.note.cancel': string;
153
+ 'feedback.note.aria': string;
154
+ 'feedback.error.conflict': string;
155
+ 'feedback.error.load': string;
156
+ 'feedback.error.generic': string;
157
+ 'clock.md': string;
158
+ 'clock.ymd': string;
159
+ 'json.truncated': string;
160
+ empty: string;
161
+ 'diff.files': string;
162
+ 'diff.collapseAria': string;
163
+ 'diff.expandAria': string;
164
+ 'read.window': string;
165
+ 'read.collapseAria': string;
166
+ 'read.expandAria': string;
167
+ 'search.paths': string;
168
+ 'search.paths.truncated': string;
169
+ 'search.matches': string;
170
+ 'search.matches.truncated': string;
171
+ 'search.noResults': string;
172
+ 'search.collapseAria': string;
173
+ 'search.expandAria': string;
174
+ 'web.noResults': string;
175
+ 'web.sourcesTruncated': string;
176
+ 'web.http': string;
177
+ 'web.contentTruncated': string;
178
+ 'markdown.footnotes': string;
179
+ systemPrompt: string;
180
+ 'turnUsage.title': string;
181
+ 'turnUsage.summaryWithCache': string;
182
+ 'turnUsage.model': string;
183
+ 'turnUsage.input': string;
184
+ 'turnUsage.cacheRead': string;
185
+ 'turnUsage.cacheWrite': string;
186
+ 'turnUsage.output': string;
187
+ 'turnUsage.reasoning': string;
188
+ 'turnUsage.total': string;
189
+ 'turnUsage.count': string;
190
+ 'turnNavigation.label': string;
191
+ 'turnNavigation.jump': string;
192
+ 'turnNavigation.turn': string;
193
+ 'number.thousand': string;
194
+ 'number.million': string;
195
+ 'number.groupSeparator': string;
196
+ 'tool.title.search': string;
197
+ 'tool.title.read': string;
198
+ 'tool.title.bash': string;
199
+ 'tool.title.write': string;
200
+ 'tool.title.edit': string;
201
+ 'tool.title.code': string;
202
+ 'tool.title.skill': string;
203
+ 'tool.title.generic': string;
204
+ 'tool.title.inspect': string;
205
+ 'tool.title.runCordis': string;
206
+ 'tool.title.stopCordis': string;
207
+ 'tool.title.removeCordis': string;
208
+ 'tool.title.pwsh': string;
209
+ 'tool.title.jobOutput': string;
210
+ 'tool.title.jobKill': string;
211
+ 'tool.title.jobList': string;
212
+ 'tool.title.sendMessage': string;
213
+ 'tool.title.interruptAgent': string;
214
+ 'tool.title.listAgents': string;
215
+ 'tool.agents': string;
216
+ 'tool.agents.running': string;
217
+ 'tool.agents.none': string;
218
+ };
219
+ /** The focus namespace key union. */
220
+ export type FocusKey = keyof typeof zh;
221
+ /** English dictionary, checked complete against the zh key set. */
222
+ export declare const en: {
223
+ 'view.label': string;
224
+ copy: string;
225
+ copied: string;
226
+ 'tool.group': string;
227
+ 'tool.group.one': string;
228
+ 'tool.commands': string;
229
+ 'tool.commands.one': string;
230
+ 'tool.searches': string;
231
+ 'tool.searches.one': string;
232
+ 'tool.thought': string;
233
+ 'tool.context': string;
234
+ 'tool.context.one': string;
235
+ 'tool.edits': string;
236
+ 'tool.edits.one': string;
237
+ 'tool.failedSuffix': string;
238
+ 'tool.failedAll': string;
239
+ 'tool.failed.commands.one': string;
240
+ 'tool.failed.searches.one': string;
241
+ 'tool.subagents': string;
242
+ 'tool.subagents.one': string;
243
+ 'tool.todos': string;
244
+ 'tool.todos.one': string;
245
+ 'todo.rowTitle': string;
246
+ 'todo.completed': string;
247
+ 'tool.goals': string;
248
+ 'tool.goals.one': string;
249
+ 'tool.workflows': string;
250
+ 'tool.workflows.one': string;
251
+ 'tool.skills': string;
252
+ 'tool.skills.one': string;
253
+ 'tool.questions': string;
254
+ 'tool.questions.one': string;
255
+ 'ask.rowTitle': string;
256
+ 'ask.waiting': string;
257
+ 'ask.cancelled': string;
258
+ 'ask.interrupted': string;
259
+ 'ask.answered': string;
260
+ 'tool.plans': string;
261
+ 'tool.plans.one': string;
262
+ 'tool.jobs': string;
263
+ 'tool.jobs.one': string;
264
+ worked: string;
265
+ 'turnFold.stopped': string;
266
+ 'context.fold': string;
267
+ 'tool.explored.files': string;
268
+ 'tool.explored.files.one': string;
269
+ 'tool.explored.dirs': string;
270
+ 'tool.explored.dirs.one': string;
271
+ 'tool.explored.both': string;
272
+ 'tool.others': string;
273
+ 'tool.others.one': string;
274
+ 'tool.separator': string;
275
+ 'status.diving': string;
276
+ 'duration.seconds': string;
277
+ 'duration.minutes': string;
278
+ 'tool.input': string;
279
+ 'row.running': string;
280
+ 'row.failed': string;
281
+ 'row.stopped': string;
282
+ extraBlock: string;
283
+ 'terminal.signal': string;
284
+ 'terminal.exitCode': string;
285
+ 'terminal.running': string;
286
+ 'terminal.failed': string;
287
+ 'terminal.done': string;
288
+ 'terminal.noOutput': string;
289
+ 'terminal.collapseAria': string;
290
+ 'terminal.collapse': string;
291
+ 'terminal.expandAria': string;
292
+ 'terminal.expand': string;
293
+ 'tool.expandAria': string;
294
+ 'tool.collapseAria': string;
295
+ loadOlder: string;
296
+ loading: string;
297
+ think: string;
298
+ 'thought.duration': string;
299
+ 'thought.expandAria': string;
300
+ stopped: string;
301
+ command: string;
302
+ 'command.running': string;
303
+ 'command.done': string;
304
+ 'command.failed': string;
305
+ compaction: string;
306
+ 'compaction.completed': string;
307
+ 'compaction.expand': string;
308
+ 'compaction.unavailable': string;
309
+ 'compaction.running': string;
310
+ contextInjection: string;
311
+ contextRecall: string;
312
+ 'context.instructions.loaded': string;
313
+ 'context.instructions.added': string;
314
+ 'context.instructions.updated': string;
315
+ 'context.instructions.removed': string;
316
+ 'context.catalog.replaced': string;
317
+ 'context.catalog.more': string;
318
+ 'context.snapshot.supersedes': string;
319
+ 'context.relay.from': string;
320
+ 'context.recall.counts': string;
321
+ 'context.recall.truncated': string;
322
+ unknownSurface: string;
323
+ unknownBlock: string;
324
+ 'retry.active': string;
325
+ 'retry.scheduled': string;
326
+ 'retry.started': string;
327
+ 'retry.cancelled': string;
328
+ 'retry.status': string;
329
+ 'retry.delay': string;
330
+ 'retry.failure': string;
331
+ turnError: string;
332
+ maxTokens: string;
333
+ 'maxTokens.hint': string;
334
+ loadingHistory: string;
335
+ loadError: string;
336
+ toBottom: string;
337
+ 'nav.rail': string;
338
+ ranFor: string;
339
+ ttft: string;
340
+ tokensPerSecond: string;
341
+ branch: string;
342
+ branchUnavailable: string;
343
+ 'produced.label': string;
344
+ 'produced.more': string;
345
+ 'produced.moreOne': string;
346
+ 'produced.showInFolder': string;
347
+ 'produced.open': string;
348
+ 'image.label': string;
349
+ 'image.openOriginal': string;
350
+ 'image.openOriginalLabel': string;
351
+ 'image.loading': string;
352
+ 'image.loadFailed': string;
353
+ 'image.preview': string;
354
+ 'image.closePreview': string;
355
+ 'image.serviceUnavailable': string;
356
+ 'fileOpen.title': string;
357
+ 'fileOpen.unknown': string;
358
+ 'fileOpen.folderTitle': string;
359
+ 'fileOpen.folderUnknown': string;
360
+ cancel: string;
361
+ retry: string;
362
+ close: string;
363
+ 'feedback.like': string;
364
+ 'feedback.likeActive': string;
365
+ 'feedback.dislike': string;
366
+ 'feedback.dislikeActive': string;
367
+ 'feedback.note.open': string;
368
+ 'feedback.note.dialog': string;
369
+ 'feedback.note.placeholder': string;
370
+ 'feedback.note.save': string;
371
+ 'feedback.note.cancel': string;
372
+ 'feedback.note.aria': string;
373
+ 'feedback.error.conflict': string;
374
+ 'feedback.error.load': string;
375
+ 'feedback.error.generic': string;
376
+ 'clock.md': string;
377
+ 'clock.ymd': string;
378
+ 'json.truncated': string;
379
+ empty: string;
380
+ 'diff.files': string;
381
+ 'diff.collapseAria': string;
382
+ 'diff.expandAria': string;
383
+ 'read.window': string;
384
+ 'read.collapseAria': string;
385
+ 'read.expandAria': string;
386
+ 'search.paths': string;
387
+ 'search.paths.truncated': string;
388
+ 'search.matches': string;
389
+ 'search.matches.truncated': string;
390
+ 'search.noResults': string;
391
+ 'search.collapseAria': string;
392
+ 'search.expandAria': string;
393
+ 'web.noResults': string;
394
+ 'web.sourcesTruncated': string;
395
+ 'web.http': string;
396
+ 'web.contentTruncated': string;
397
+ 'markdown.footnotes': string;
398
+ systemPrompt: string;
399
+ 'turnUsage.title': string;
400
+ 'turnUsage.summaryWithCache': string;
401
+ 'turnUsage.model': string;
402
+ 'turnUsage.input': string;
403
+ 'turnUsage.cacheRead': string;
404
+ 'turnUsage.cacheWrite': string;
405
+ 'turnUsage.output': string;
406
+ 'turnUsage.reasoning': string;
407
+ 'turnUsage.total': string;
408
+ 'turnUsage.count': string;
409
+ 'turnNavigation.label': string;
410
+ 'turnNavigation.jump': string;
411
+ 'turnNavigation.turn': string;
412
+ 'number.thousand': string;
413
+ 'number.million': string;
414
+ 'number.groupSeparator': string;
415
+ 'tool.title.search': string;
416
+ 'tool.title.read': string;
417
+ 'tool.title.bash': string;
418
+ 'tool.title.write': string;
419
+ 'tool.title.edit': string;
420
+ 'tool.title.code': string;
421
+ 'tool.title.skill': string;
422
+ 'tool.title.generic': string;
423
+ 'tool.title.inspect': string;
424
+ 'tool.title.runCordis': string;
425
+ 'tool.title.stopCordis': string;
426
+ 'tool.title.removeCordis': string;
427
+ 'tool.title.pwsh': string;
428
+ 'tool.title.jobOutput': string;
429
+ 'tool.title.jobKill': string;
430
+ 'tool.title.jobList': string;
431
+ 'tool.title.sendMessage': string;
432
+ 'tool.title.interruptAgent': string;
433
+ 'tool.title.listAgents': string;
434
+ 'tool.agents': string;
435
+ 'tool.agents.running': string;
436
+ 'tool.agents.none': string;
437
+ };