@achasoft/dsh-advanced-sidebar 0.1.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.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/cordis.patch.yml +158 -0
- package/lib/client.js +24890 -0
- package/lib/client.js.map +1 -0
- package/lib/host.js +3156 -0
- package/lib/index.js +20 -0
- package/lib/remote.js +1994 -0
- package/lib/typert.host.js +2000 -0
- package/package.json +136 -0
- package/types/client/ActionMenu.d.ts +36 -0
- package/types/client/Glyphs.d.ts +49 -0
- package/types/client/PanelHost.d.ts +24 -0
- package/types/client/Seats.d.ts +16 -0
- package/types/client/SettingsCard.d.ts +22 -0
- package/types/client/contract.d.ts +358 -0
- package/types/client/controller.d.ts +224 -0
- package/types/client/cx.d.ts +16 -0
- package/types/client/index.d.ts +39 -0
- package/types/client/locales.d.ts +474 -0
- package/types/client/panels/ChangesPanel.d.ts +22 -0
- package/types/client/panels/FilesPanel.d.ts +16 -0
- package/types/client/panels/PreviewPanel.d.ts +27 -0
- package/types/client/panels/TasksPanel.d.ts +28 -0
- package/types/client/panels/TerminalPanel.d.ts +40 -0
- package/types/client/panels/shared.d.ts +65 -0
- package/types/client/target.d.ts +23 -0
- package/types/client/terminal-screen.d.ts +95 -0
- package/types/client/ui/Alert.d.ts +30 -0
- package/types/client/ui/Badge.d.ts +24 -0
- package/types/client/ui/Button.d.ts +28 -0
- package/types/client/ui/Calendar.d.ts +65 -0
- package/types/client/ui/DatePicker.d.ts +41 -0
- package/types/client/ui/Dialog.d.ts +61 -0
- package/types/client/ui/DropdownMenu.d.ts +98 -0
- package/types/client/ui/Input.d.ts +25 -0
- package/types/client/ui/Layer.d.ts +56 -0
- package/types/client/ui/Select.d.ts +49 -0
- package/types/client/ui/Separator.d.ts +15 -0
- package/types/client/ui/Tabs.d.ts +49 -0
- package/types/client/ui/Toggle.d.ts +57 -0
- package/types/client/ui/Tooltip.d.ts +22 -0
- package/types/client/ui/anchor.d.ts +92 -0
- package/types/client/ui/index.d.ts +42 -0
- package/types/client/use-capability.d.ts +27 -0
- package/types/host/deletion.d.ts +57 -0
- package/types/host/files.d.ts +43 -0
- package/types/host/git.d.ts +198 -0
- package/types/host/index.d.ts +210 -0
- package/types/host/open-in.d.ts +93 -0
- package/types/host/paths.d.ts +55 -0
- package/types/host/porcelain.d.ts +51 -0
- package/types/host/preview.d.ts +185 -0
- package/types/host/run.d.ts +72 -0
- package/types/host/tasks.d.ts +80 -0
- package/types/host/terminals.d.ts +86 -0
- package/types/host/types.d.ts +877 -0
- package/types/index.d.ts +17 -0
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `advancedSidebar` namespace dictionaries.
|
|
3
|
+
*
|
|
4
|
+
* Simplified Chinese is the key-set source of truth and English is checked complete against it, so
|
|
5
|
+
* a key added to one and forgotten in the other is a compile error rather than a string that
|
|
6
|
+
* silently falls back to its own name at runtime.
|
|
7
|
+
*
|
|
8
|
+
* Operator diagnostics — a git stderr line, a spawn error, a missing executable — are NOT in here.
|
|
9
|
+
* They arrive from the Host already phrased, stay English, and are rendered verbatim: translating a
|
|
10
|
+
* substring of someone's stderr would make it unsearchable.
|
|
11
|
+
* @module @achasoft/dsh-advanced-sidebar/client/locales
|
|
12
|
+
*/
|
|
13
|
+
/** Simplified Chinese dictionary (the key-set source of truth). */
|
|
14
|
+
export declare const zh: {
|
|
15
|
+
'menu.trigger': string;
|
|
16
|
+
'menu.aria': string;
|
|
17
|
+
'menu.section.session': string;
|
|
18
|
+
'menu.changes': string;
|
|
19
|
+
'menu.terminal': string;
|
|
20
|
+
'menu.files': string;
|
|
21
|
+
'menu.tasks': string;
|
|
22
|
+
'menu.openIn': string;
|
|
23
|
+
'menu.openIn.newWindow': string;
|
|
24
|
+
'menu.archive': string;
|
|
25
|
+
'menu.preview': string;
|
|
26
|
+
'menu.delete': string;
|
|
27
|
+
'menu.empty': string;
|
|
28
|
+
'menu.noSession': string;
|
|
29
|
+
'menu.noDirectory': string;
|
|
30
|
+
'panel.close': string;
|
|
31
|
+
'panel.refresh': string;
|
|
32
|
+
'panel.retry': string;
|
|
33
|
+
'panel.loading': string;
|
|
34
|
+
'panel.session': string;
|
|
35
|
+
'panel.resize': string;
|
|
36
|
+
'changes.title': string;
|
|
37
|
+
'changes.empty': string;
|
|
38
|
+
'changes.group.staged': string;
|
|
39
|
+
'changes.group.unstaged': string;
|
|
40
|
+
'changes.group.untracked': string;
|
|
41
|
+
'changes.group.conflicted': string;
|
|
42
|
+
'changes.branch.detached': string;
|
|
43
|
+
'changes.branch.unborn': string;
|
|
44
|
+
'changes.ahead': string;
|
|
45
|
+
'changes.behind': string;
|
|
46
|
+
'changes.truncated': string;
|
|
47
|
+
'changes.diff.empty': string;
|
|
48
|
+
'changes.diff.binary': string;
|
|
49
|
+
'changes.diff.truncated': string;
|
|
50
|
+
'changes.diff.copy': string;
|
|
51
|
+
'changes.diff.copied': string;
|
|
52
|
+
'changes.stage': string;
|
|
53
|
+
'changes.unstage': string;
|
|
54
|
+
'changes.stage.all': string;
|
|
55
|
+
'changes.unstage.all': string;
|
|
56
|
+
'changes.commit': string;
|
|
57
|
+
'changes.push': string;
|
|
58
|
+
'changes.push.hint': string;
|
|
59
|
+
'changes.push.upToDate': string;
|
|
60
|
+
'changes.push.done': string;
|
|
61
|
+
'changes.publish': string;
|
|
62
|
+
'changes.publish.hint': string;
|
|
63
|
+
'changes.push.published': string;
|
|
64
|
+
'changes.commit.suggest': string;
|
|
65
|
+
'changes.commit.suggest.hint': string;
|
|
66
|
+
'changes.commit.suggest.truncated': string;
|
|
67
|
+
'changes.commit.message': string;
|
|
68
|
+
'changes.commit.placeholder': string;
|
|
69
|
+
'changes.commit.amend': string;
|
|
70
|
+
'changes.commit.count.one': string;
|
|
71
|
+
'changes.commit.count.other': string;
|
|
72
|
+
'changes.commit.nothing': string;
|
|
73
|
+
'changes.commit.done': string;
|
|
74
|
+
'changes.commit.author': string;
|
|
75
|
+
'changes.commit.noIdentity': string;
|
|
76
|
+
'changes.commit.working': string;
|
|
77
|
+
'changes.readOnly': string;
|
|
78
|
+
'changes.reveal': string;
|
|
79
|
+
'changes.count': string;
|
|
80
|
+
'terminal.title': string;
|
|
81
|
+
'terminal.starting': string;
|
|
82
|
+
'terminal.exited': string;
|
|
83
|
+
'terminal.exitedSignal': string;
|
|
84
|
+
'terminal.restart': string;
|
|
85
|
+
'terminal.interrupt': string;
|
|
86
|
+
'terminal.clear': string;
|
|
87
|
+
'terminal.lossy': string;
|
|
88
|
+
'terminal.inputAria': string;
|
|
89
|
+
'terminal.hint': string;
|
|
90
|
+
'terminal.tabs': string;
|
|
91
|
+
'terminal.tab': string;
|
|
92
|
+
'terminal.new': string;
|
|
93
|
+
'terminal.limit': string;
|
|
94
|
+
'files.title': string;
|
|
95
|
+
'files.empty': string;
|
|
96
|
+
'files.up': string;
|
|
97
|
+
'files.preview.binary': string;
|
|
98
|
+
'files.preview.truncated': string;
|
|
99
|
+
'files.preview.pick': string;
|
|
100
|
+
'files.open': string;
|
|
101
|
+
'files.reveal': string;
|
|
102
|
+
'files.size': string;
|
|
103
|
+
'tasks.title': string;
|
|
104
|
+
'tasks.empty': string;
|
|
105
|
+
'tasks.status.running': string;
|
|
106
|
+
'tasks.status.stopping': string;
|
|
107
|
+
'tasks.status.completed': string;
|
|
108
|
+
'tasks.status.killed': string;
|
|
109
|
+
'tasks.status.failed': string;
|
|
110
|
+
'tasks.stop': string;
|
|
111
|
+
'tasks.stopped': string;
|
|
112
|
+
'tasks.alreadyFinished': string;
|
|
113
|
+
'tasks.output': string;
|
|
114
|
+
'tasks.output.hide': string;
|
|
115
|
+
'tasks.output.empty': string;
|
|
116
|
+
'tasks.output.withheld': string;
|
|
117
|
+
'tasks.duration.seconds': string;
|
|
118
|
+
'tasks.duration.minutes': string;
|
|
119
|
+
'tasks.duration.hours': string;
|
|
120
|
+
'tasks.filter.text': string;
|
|
121
|
+
'tasks.filter.text.placeholder': string;
|
|
122
|
+
'tasks.filter.status': string;
|
|
123
|
+
'tasks.filter.status.all': string;
|
|
124
|
+
'tasks.filter.since': string;
|
|
125
|
+
'tasks.filter.since.any': string;
|
|
126
|
+
'tasks.filter.none': string;
|
|
127
|
+
'tasks.filter.count': string;
|
|
128
|
+
'date.today': string;
|
|
129
|
+
'date.clear': string;
|
|
130
|
+
'date.previousMonth': string;
|
|
131
|
+
'date.nextMonth': string;
|
|
132
|
+
'preview.title': string;
|
|
133
|
+
'preview.server': string;
|
|
134
|
+
'preview.none': string;
|
|
135
|
+
'preview.state.stopped': string;
|
|
136
|
+
'preview.state.starting': string;
|
|
137
|
+
'preview.state.ready': string;
|
|
138
|
+
'preview.state.exited': string;
|
|
139
|
+
'preview.state.failed': string;
|
|
140
|
+
'preview.start': string;
|
|
141
|
+
'preview.stop': string;
|
|
142
|
+
'preview.notStartable': string;
|
|
143
|
+
'preview.logs': string;
|
|
144
|
+
'preview.logs.empty': string;
|
|
145
|
+
'preview.address': string;
|
|
146
|
+
'preview.newWindow': string;
|
|
147
|
+
'preview.device': string;
|
|
148
|
+
'preview.device.desktop': string;
|
|
149
|
+
'preview.device.tablet': string;
|
|
150
|
+
'preview.device.mobile': string;
|
|
151
|
+
'preview.frame': string;
|
|
152
|
+
'preview.noUrl': string;
|
|
153
|
+
'preview.empty': string;
|
|
154
|
+
'preview.emptyFile': string;
|
|
155
|
+
'delete.title': string;
|
|
156
|
+
'delete.body.archive': string;
|
|
157
|
+
'delete.body.purge': string;
|
|
158
|
+
'delete.confirm': string;
|
|
159
|
+
'delete.cancel': string;
|
|
160
|
+
'delete.done.archive': string;
|
|
161
|
+
'delete.done.purge': string;
|
|
162
|
+
'delete.done.kept': string;
|
|
163
|
+
'archive.done': string;
|
|
164
|
+
'notice.dismiss': string;
|
|
165
|
+
'error.transport': string;
|
|
166
|
+
'settings.title': string;
|
|
167
|
+
'settings.description': string;
|
|
168
|
+
'settings.status.ready': string;
|
|
169
|
+
'settings.status.partial': string;
|
|
170
|
+
'settings.group.placement': string;
|
|
171
|
+
'settings.group.entries': string;
|
|
172
|
+
'settings.group.behavior': string;
|
|
173
|
+
'settings.group.limits': string;
|
|
174
|
+
'settings.showInSessionHeader': string;
|
|
175
|
+
'settings.showInSessionHeader.hint': string;
|
|
176
|
+
'settings.showChanges': string;
|
|
177
|
+
'settings.showChanges.hint': string;
|
|
178
|
+
'settings.showTerminal': string;
|
|
179
|
+
'settings.showTerminal.hint': string;
|
|
180
|
+
'settings.showFiles': string;
|
|
181
|
+
'settings.showFiles.hint': string;
|
|
182
|
+
'settings.showTasks': string;
|
|
183
|
+
'settings.showTasks.hint': string;
|
|
184
|
+
'settings.showOpenIn': string;
|
|
185
|
+
'settings.showOpenIn.hint': string;
|
|
186
|
+
'settings.showArchive': string;
|
|
187
|
+
'settings.showArchive.hint': string;
|
|
188
|
+
'settings.showDelete': string;
|
|
189
|
+
'settings.showDelete.hint': string;
|
|
190
|
+
'settings.showPreview': string;
|
|
191
|
+
'settings.showPreview.hint': string;
|
|
192
|
+
'settings.previewsFromLaunchFile': string;
|
|
193
|
+
'settings.previewsFromLaunchFile.hint': string;
|
|
194
|
+
'settings.maxPreviews': string;
|
|
195
|
+
'settings.maxPreviews.hint': string;
|
|
196
|
+
'settings.previewReadyTimeoutMs': string;
|
|
197
|
+
'settings.previewReadyTimeoutMs.hint': string;
|
|
198
|
+
'settings.previews': string;
|
|
199
|
+
'settings.previews.hint': string;
|
|
200
|
+
'settings.previews.empty': string;
|
|
201
|
+
'settings.panelWidth': string;
|
|
202
|
+
'settings.panelWidth.hint': string;
|
|
203
|
+
'settings.deleteMode': string;
|
|
204
|
+
'settings.deleteMode.archive': string;
|
|
205
|
+
'settings.deleteMode.purge': string;
|
|
206
|
+
'settings.deleteMode.hint': string;
|
|
207
|
+
'settings.deleteMode.unsupported': string;
|
|
208
|
+
'settings.confirmDelete': string;
|
|
209
|
+
'settings.confirmDelete.hint': string;
|
|
210
|
+
'settings.allowTaskKill': string;
|
|
211
|
+
'settings.allowTaskKill.hint': string;
|
|
212
|
+
'settings.showTaskOutput': string;
|
|
213
|
+
'settings.showTaskOutput.hint': string;
|
|
214
|
+
'settings.gitMaxFiles': string;
|
|
215
|
+
'settings.gitMaxFiles.hint': string;
|
|
216
|
+
'settings.gitTimeoutMs': string;
|
|
217
|
+
'settings.gitTimeoutMs.hint': string;
|
|
218
|
+
'settings.allowGitStaging': string;
|
|
219
|
+
'settings.allowGitStaging.hint': string;
|
|
220
|
+
'settings.allowGitPush': string;
|
|
221
|
+
'settings.allowGitPush.hint': string;
|
|
222
|
+
'settings.allowCommitMessageDraft': string;
|
|
223
|
+
'settings.allowCommitMessageDraft.hint': string;
|
|
224
|
+
'settings.gitPushTimeoutMs': string;
|
|
225
|
+
'settings.gitPushTimeoutMs.hint': string;
|
|
226
|
+
'settings.commitMessageMaxBytes': string;
|
|
227
|
+
'settings.commitMessageMaxBytes.hint': string;
|
|
228
|
+
'settings.allowGitCommit': string;
|
|
229
|
+
'settings.allowGitCommit.hint': string;
|
|
230
|
+
'settings.gitCommitTimeoutMs': string;
|
|
231
|
+
'settings.gitCommitTimeoutMs.hint': string;
|
|
232
|
+
'settings.terminalShell': string;
|
|
233
|
+
'settings.terminalShell.hint': string;
|
|
234
|
+
'settings.maxTerminals': string;
|
|
235
|
+
'settings.maxTerminals.hint': string;
|
|
236
|
+
'settings.editors': string;
|
|
237
|
+
'settings.editors.hint': string;
|
|
238
|
+
'settings.editors.empty': string;
|
|
239
|
+
'settings.editors.available': string;
|
|
240
|
+
'settings.editors.missing': string;
|
|
241
|
+
'settings.unavailable': string;
|
|
242
|
+
};
|
|
243
|
+
/** The advancedSidebar namespace key union. */
|
|
244
|
+
export type AdvancedSidebarKey = keyof typeof zh;
|
|
245
|
+
/** English dictionary, checked complete against the zh key set. */
|
|
246
|
+
export declare const en: {
|
|
247
|
+
'menu.trigger': string;
|
|
248
|
+
'menu.aria': string;
|
|
249
|
+
'menu.section.session': string;
|
|
250
|
+
'menu.changes': string;
|
|
251
|
+
'menu.terminal': string;
|
|
252
|
+
'menu.files': string;
|
|
253
|
+
'menu.tasks': string;
|
|
254
|
+
'menu.openIn': string;
|
|
255
|
+
'menu.openIn.newWindow': string;
|
|
256
|
+
'menu.archive': string;
|
|
257
|
+
'menu.preview': string;
|
|
258
|
+
'menu.delete': string;
|
|
259
|
+
'menu.empty': string;
|
|
260
|
+
'menu.noSession': string;
|
|
261
|
+
'menu.noDirectory': string;
|
|
262
|
+
'panel.close': string;
|
|
263
|
+
'panel.refresh': string;
|
|
264
|
+
'panel.retry': string;
|
|
265
|
+
'panel.loading': string;
|
|
266
|
+
'panel.session': string;
|
|
267
|
+
'panel.resize': string;
|
|
268
|
+
'changes.title': string;
|
|
269
|
+
'changes.empty': string;
|
|
270
|
+
'changes.group.staged': string;
|
|
271
|
+
'changes.group.unstaged': string;
|
|
272
|
+
'changes.group.untracked': string;
|
|
273
|
+
'changes.group.conflicted': string;
|
|
274
|
+
'changes.branch.detached': string;
|
|
275
|
+
'changes.branch.unborn': string;
|
|
276
|
+
'changes.ahead': string;
|
|
277
|
+
'changes.behind': string;
|
|
278
|
+
'changes.truncated': string;
|
|
279
|
+
'changes.diff.empty': string;
|
|
280
|
+
'changes.diff.binary': string;
|
|
281
|
+
'changes.diff.truncated': string;
|
|
282
|
+
'changes.diff.copy': string;
|
|
283
|
+
'changes.diff.copied': string;
|
|
284
|
+
'changes.stage': string;
|
|
285
|
+
'changes.unstage': string;
|
|
286
|
+
'changes.stage.all': string;
|
|
287
|
+
'changes.unstage.all': string;
|
|
288
|
+
'changes.commit': string;
|
|
289
|
+
'changes.push': string;
|
|
290
|
+
'changes.push.hint': string;
|
|
291
|
+
'changes.push.upToDate': string;
|
|
292
|
+
'changes.push.done': string;
|
|
293
|
+
'changes.publish': string;
|
|
294
|
+
'changes.publish.hint': string;
|
|
295
|
+
'changes.push.published': string;
|
|
296
|
+
'changes.commit.suggest': string;
|
|
297
|
+
'changes.commit.suggest.hint': string;
|
|
298
|
+
'changes.commit.suggest.truncated': string;
|
|
299
|
+
'changes.commit.message': string;
|
|
300
|
+
'changes.commit.placeholder': string;
|
|
301
|
+
'changes.commit.amend': string;
|
|
302
|
+
'changes.commit.count.one': string;
|
|
303
|
+
'changes.commit.count.other': string;
|
|
304
|
+
'changes.commit.nothing': string;
|
|
305
|
+
'changes.commit.done': string;
|
|
306
|
+
'changes.commit.author': string;
|
|
307
|
+
'changes.commit.noIdentity': string;
|
|
308
|
+
'changes.commit.working': string;
|
|
309
|
+
'changes.readOnly': string;
|
|
310
|
+
'changes.reveal': string;
|
|
311
|
+
'changes.count': string;
|
|
312
|
+
'terminal.title': string;
|
|
313
|
+
'terminal.starting': string;
|
|
314
|
+
'terminal.exited': string;
|
|
315
|
+
'terminal.exitedSignal': string;
|
|
316
|
+
'terminal.restart': string;
|
|
317
|
+
'terminal.interrupt': string;
|
|
318
|
+
'terminal.clear': string;
|
|
319
|
+
'terminal.lossy': string;
|
|
320
|
+
'terminal.inputAria': string;
|
|
321
|
+
'terminal.hint': string;
|
|
322
|
+
'terminal.tabs': string;
|
|
323
|
+
'terminal.tab': string;
|
|
324
|
+
'terminal.new': string;
|
|
325
|
+
'terminal.limit': string;
|
|
326
|
+
'files.title': string;
|
|
327
|
+
'files.empty': string;
|
|
328
|
+
'files.up': string;
|
|
329
|
+
'files.preview.binary': string;
|
|
330
|
+
'files.preview.truncated': string;
|
|
331
|
+
'files.preview.pick': string;
|
|
332
|
+
'files.open': string;
|
|
333
|
+
'files.reveal': string;
|
|
334
|
+
'files.size': string;
|
|
335
|
+
'tasks.title': string;
|
|
336
|
+
'tasks.empty': string;
|
|
337
|
+
'tasks.status.running': string;
|
|
338
|
+
'tasks.status.stopping': string;
|
|
339
|
+
'tasks.status.completed': string;
|
|
340
|
+
'tasks.status.killed': string;
|
|
341
|
+
'tasks.status.failed': string;
|
|
342
|
+
'tasks.stop': string;
|
|
343
|
+
'tasks.stopped': string;
|
|
344
|
+
'tasks.alreadyFinished': string;
|
|
345
|
+
'tasks.output': string;
|
|
346
|
+
'tasks.output.hide': string;
|
|
347
|
+
'tasks.output.empty': string;
|
|
348
|
+
'tasks.output.withheld': string;
|
|
349
|
+
'tasks.duration.seconds': string;
|
|
350
|
+
'tasks.duration.minutes': string;
|
|
351
|
+
'tasks.duration.hours': string;
|
|
352
|
+
'tasks.filter.text': string;
|
|
353
|
+
'tasks.filter.text.placeholder': string;
|
|
354
|
+
'tasks.filter.status': string;
|
|
355
|
+
'tasks.filter.status.all': string;
|
|
356
|
+
'tasks.filter.since': string;
|
|
357
|
+
'tasks.filter.since.any': string;
|
|
358
|
+
'tasks.filter.none': string;
|
|
359
|
+
'tasks.filter.count': string;
|
|
360
|
+
'date.today': string;
|
|
361
|
+
'date.clear': string;
|
|
362
|
+
'date.previousMonth': string;
|
|
363
|
+
'date.nextMonth': string;
|
|
364
|
+
'preview.title': string;
|
|
365
|
+
'preview.server': string;
|
|
366
|
+
'preview.none': string;
|
|
367
|
+
'preview.state.stopped': string;
|
|
368
|
+
'preview.state.starting': string;
|
|
369
|
+
'preview.state.ready': string;
|
|
370
|
+
'preview.state.exited': string;
|
|
371
|
+
'preview.state.failed': string;
|
|
372
|
+
'preview.start': string;
|
|
373
|
+
'preview.stop': string;
|
|
374
|
+
'preview.notStartable': string;
|
|
375
|
+
'preview.logs': string;
|
|
376
|
+
'preview.logs.empty': string;
|
|
377
|
+
'preview.address': string;
|
|
378
|
+
'preview.newWindow': string;
|
|
379
|
+
'preview.device': string;
|
|
380
|
+
'preview.device.desktop': string;
|
|
381
|
+
'preview.device.tablet': string;
|
|
382
|
+
'preview.device.mobile': string;
|
|
383
|
+
'preview.frame': string;
|
|
384
|
+
'preview.noUrl': string;
|
|
385
|
+
'preview.empty': string;
|
|
386
|
+
'preview.emptyFile': string;
|
|
387
|
+
'delete.title': string;
|
|
388
|
+
'delete.body.archive': string;
|
|
389
|
+
'delete.body.purge': string;
|
|
390
|
+
'delete.confirm': string;
|
|
391
|
+
'delete.cancel': string;
|
|
392
|
+
'delete.done.archive': string;
|
|
393
|
+
'delete.done.purge': string;
|
|
394
|
+
'delete.done.kept': string;
|
|
395
|
+
'archive.done': string;
|
|
396
|
+
'notice.dismiss': string;
|
|
397
|
+
'error.transport': string;
|
|
398
|
+
'settings.title': string;
|
|
399
|
+
'settings.description': string;
|
|
400
|
+
'settings.status.ready': string;
|
|
401
|
+
'settings.status.partial': string;
|
|
402
|
+
'settings.group.placement': string;
|
|
403
|
+
'settings.group.entries': string;
|
|
404
|
+
'settings.group.behavior': string;
|
|
405
|
+
'settings.group.limits': string;
|
|
406
|
+
'settings.showInSessionHeader': string;
|
|
407
|
+
'settings.showInSessionHeader.hint': string;
|
|
408
|
+
'settings.showChanges': string;
|
|
409
|
+
'settings.showChanges.hint': string;
|
|
410
|
+
'settings.showTerminal': string;
|
|
411
|
+
'settings.showTerminal.hint': string;
|
|
412
|
+
'settings.showFiles': string;
|
|
413
|
+
'settings.showFiles.hint': string;
|
|
414
|
+
'settings.showTasks': string;
|
|
415
|
+
'settings.showTasks.hint': string;
|
|
416
|
+
'settings.showOpenIn': string;
|
|
417
|
+
'settings.showOpenIn.hint': string;
|
|
418
|
+
'settings.showArchive': string;
|
|
419
|
+
'settings.showArchive.hint': string;
|
|
420
|
+
'settings.showDelete': string;
|
|
421
|
+
'settings.showDelete.hint': string;
|
|
422
|
+
'settings.showPreview': string;
|
|
423
|
+
'settings.showPreview.hint': string;
|
|
424
|
+
'settings.previewsFromLaunchFile': string;
|
|
425
|
+
'settings.previewsFromLaunchFile.hint': string;
|
|
426
|
+
'settings.maxPreviews': string;
|
|
427
|
+
'settings.maxPreviews.hint': string;
|
|
428
|
+
'settings.previewReadyTimeoutMs': string;
|
|
429
|
+
'settings.previewReadyTimeoutMs.hint': string;
|
|
430
|
+
'settings.previews': string;
|
|
431
|
+
'settings.previews.hint': string;
|
|
432
|
+
'settings.previews.empty': string;
|
|
433
|
+
'settings.panelWidth': string;
|
|
434
|
+
'settings.panelWidth.hint': string;
|
|
435
|
+
'settings.deleteMode': string;
|
|
436
|
+
'settings.deleteMode.archive': string;
|
|
437
|
+
'settings.deleteMode.purge': string;
|
|
438
|
+
'settings.deleteMode.hint': string;
|
|
439
|
+
'settings.deleteMode.unsupported': string;
|
|
440
|
+
'settings.confirmDelete': string;
|
|
441
|
+
'settings.confirmDelete.hint': string;
|
|
442
|
+
'settings.allowTaskKill': string;
|
|
443
|
+
'settings.allowTaskKill.hint': string;
|
|
444
|
+
'settings.showTaskOutput': string;
|
|
445
|
+
'settings.showTaskOutput.hint': string;
|
|
446
|
+
'settings.gitMaxFiles': string;
|
|
447
|
+
'settings.gitMaxFiles.hint': string;
|
|
448
|
+
'settings.gitTimeoutMs': string;
|
|
449
|
+
'settings.gitTimeoutMs.hint': string;
|
|
450
|
+
'settings.allowGitStaging': string;
|
|
451
|
+
'settings.allowGitStaging.hint': string;
|
|
452
|
+
'settings.allowGitPush': string;
|
|
453
|
+
'settings.allowGitPush.hint': string;
|
|
454
|
+
'settings.allowCommitMessageDraft': string;
|
|
455
|
+
'settings.allowCommitMessageDraft.hint': string;
|
|
456
|
+
'settings.gitPushTimeoutMs': string;
|
|
457
|
+
'settings.gitPushTimeoutMs.hint': string;
|
|
458
|
+
'settings.commitMessageMaxBytes': string;
|
|
459
|
+
'settings.commitMessageMaxBytes.hint': string;
|
|
460
|
+
'settings.allowGitCommit': string;
|
|
461
|
+
'settings.allowGitCommit.hint': string;
|
|
462
|
+
'settings.gitCommitTimeoutMs': string;
|
|
463
|
+
'settings.gitCommitTimeoutMs.hint': string;
|
|
464
|
+
'settings.terminalShell': string;
|
|
465
|
+
'settings.terminalShell.hint': string;
|
|
466
|
+
'settings.maxTerminals': string;
|
|
467
|
+
'settings.maxTerminals.hint': string;
|
|
468
|
+
'settings.editors': string;
|
|
469
|
+
'settings.editors.hint': string;
|
|
470
|
+
'settings.editors.empty': string;
|
|
471
|
+
'settings.editors.available': string;
|
|
472
|
+
'settings.editors.missing': string;
|
|
473
|
+
'settings.unavailable': string;
|
|
474
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Changes panel: what git reports as uncommitted in the session's working directory, each
|
|
3
|
+
* file's patch on demand, and the two writes that turn a reading into a commit.
|
|
4
|
+
*
|
|
5
|
+
* Staging and committing are offered; DISCARDING is not. Stage, unstage, and commit are all
|
|
6
|
+
* recoverable — the working tree is untouched by the first two, and a commit stays in the reflog —
|
|
7
|
+
* while discarding destroys uncommitted work with nothing left to recover it from. A sidebar is the
|
|
8
|
+
* wrong place for the one irreversible verb in the set, and `git restore` is a keystroke away in
|
|
9
|
+
* the Terminal panel beside it.
|
|
10
|
+
*
|
|
11
|
+
* Every write returns the reading that follows it, so the lists never lag a round trip behind the
|
|
12
|
+
* index they describe.
|
|
13
|
+
* @module @achasoft/dsh-advanced-sidebar/client/panels/ChangesPanel
|
|
14
|
+
*/
|
|
15
|
+
import { type PanelProps } from './shared.tsx';
|
|
16
|
+
/**
|
|
17
|
+
* The git status reading and its per-file patches.
|
|
18
|
+
* @param props - the target, the translator, and the dock's face.
|
|
19
|
+
* @returns the panel body.
|
|
20
|
+
* @see {@link PanelProps}
|
|
21
|
+
*/
|
|
22
|
+
export declare function ChangesPanel({ target, t, face }: PanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Files panel: the session's working directory, one level at a time, with a text preview.
|
|
3
|
+
*
|
|
4
|
+
* The listing comes from this plugin's own endpoint rather than the Web Client's `listDirectory`,
|
|
5
|
+
* because the Host's browse capability returns directories only — its one shipped caller is a
|
|
6
|
+
* workspace picker, and a file browser that cannot show files is not one.
|
|
7
|
+
* @module @achasoft/dsh-advanced-sidebar/client/panels/FilesPanel
|
|
8
|
+
*/
|
|
9
|
+
import { type PanelProps } from './shared.tsx';
|
|
10
|
+
/**
|
|
11
|
+
* The directory listing and the preview beside it.
|
|
12
|
+
* @param props - the target, the translator, and the dock's face.
|
|
13
|
+
* @returns the panel body.
|
|
14
|
+
* @see {@link PanelProps}
|
|
15
|
+
*/
|
|
16
|
+
export declare function FilesPanel({ target, t, face }: PanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Preview panel: run the thing you are building and look at it without leaving the session.
|
|
3
|
+
*
|
|
4
|
+
* A launch configuration is started on the Host, its port is watched until it accepts, and the
|
|
5
|
+
* result is rendered in a frame beside the conversation. The frame is a plain `<iframe>` pointed at
|
|
6
|
+
* a loopback URL, which is what makes this work for any dev server rather than for a list of
|
|
7
|
+
* blessed ones.
|
|
8
|
+
*
|
|
9
|
+
* Two things a person needs are therefore always present, not hidden behind a state:
|
|
10
|
+
*
|
|
11
|
+
* - **Logs.** A server that failed to start has nothing to show in the frame, and its stderr is the
|
|
12
|
+
* only place the reason exists. The log view is one toggle away at every state, and opens itself
|
|
13
|
+
* when a start fails.
|
|
14
|
+
* - **Open in a new window.** A page can refuse to be framed (`X-Frame-Options`,
|
|
15
|
+
* `frame-ancestors`), and cross-origin framing gives the panel no way to detect that — the load
|
|
16
|
+
* event fires either way. So the escape hatch is a permanent control rather than an error
|
|
17
|
+
* recovery, and the panel says so instead of pretending a blank frame is a loading one.
|
|
18
|
+
* @module @achasoft/dsh-advanced-sidebar/client/panels/PreviewPanel
|
|
19
|
+
*/
|
|
20
|
+
import { type PanelProps } from './shared.tsx';
|
|
21
|
+
/**
|
|
22
|
+
* The server picker, the frame, and the log view.
|
|
23
|
+
* @param props - the target, the translator, and the dock's face.
|
|
24
|
+
* @returns the panel body.
|
|
25
|
+
* @see {@link PanelProps}
|
|
26
|
+
*/
|
|
27
|
+
export declare function PreviewPanel({ target, t, face }: PanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Background tasks panel: this session's `ctx.jobs` records, with Stop and the output of a
|
|
3
|
+
* settled one.
|
|
4
|
+
*
|
|
5
|
+
* The list is not fetched. The Host already pushes `session/jobs` frames that the Web Client folds
|
|
6
|
+
* into its `jobsBySession` mirror, so this panel reads the same live data the session header's job
|
|
7
|
+
* chip reads — it appears, moves, and empties without a single request. Only the two verbs the
|
|
8
|
+
* mirror has no wire for go over this plugin's endpoint.
|
|
9
|
+
* @module @achasoft/dsh-advanced-sidebar/client/panels/TasksPanel
|
|
10
|
+
*/
|
|
11
|
+
import type { SessionListState } from '@deepseek-ai/dsh-client-runtime/client';
|
|
12
|
+
import type { SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots';
|
|
13
|
+
import type { AdvancedSidebarSettings } from '../../host/types.ts';
|
|
14
|
+
import { type PanelProps } from './shared.tsx';
|
|
15
|
+
/** The panel's own props: the dock's share plus the two facts only the dock can supply. */
|
|
16
|
+
export interface TasksPanelProps extends PanelProps {
|
|
17
|
+
/** The global session feed the mirror rides on. */
|
|
18
|
+
useSessions: SnapshotSelectorHook<SessionListState>;
|
|
19
|
+
/** The resolved settings section, which decides whether Stop and output are offered. */
|
|
20
|
+
settings: AdvancedSidebarSettings | undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The task list, Stop, and the output of a settled task.
|
|
24
|
+
* @param props - the target, the translator, the dock's face, the session feed, and the settings.
|
|
25
|
+
* @returns the panel body.
|
|
26
|
+
* @see {@link TasksPanelProps}
|
|
27
|
+
*/
|
|
28
|
+
export declare function TasksPanel({ target, t, face, useSessions, settings }: TasksPanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Terminal panel: interactive shells of the operator's own, in the session's working directory.
|
|
3
|
+
*
|
|
4
|
+
* There are as many as the Host's `maxTerminals` allows, on a tab strip. Each tab is a separate
|
|
5
|
+
* `spawnTerminal` allocation with its own emulator, its own poll chain, and its own lifetime; the
|
|
6
|
+
* handles live in the shared controller rather than in this component, so switching to another
|
|
7
|
+
* panel or closing the dock leaves the shells running exactly as hiding a terminal pane in an
|
|
8
|
+
* editor does. A reopened tab replays instead of restarting, because the Host retains each shell's
|
|
9
|
+
* scrollback and the panel asks for it from offset zero.
|
|
10
|
+
*
|
|
11
|
+
* The screen is a real terminal emulator (`@xterm/xterm`), not an approximation. That is not
|
|
12
|
+
* gold-plating: an interactive shell redraws its prompt with cursor addressing on every keystroke,
|
|
13
|
+
* and a screen model that understands only carriage returns and erase-line renders a login shell's
|
|
14
|
+
* prompt as overwritten fragments. Colour, line editing, history recall, and full-screen programs
|
|
15
|
+
* all come with the emulator; nothing here reimplements them.
|
|
16
|
+
*
|
|
17
|
+
* Output arrives by polling, because an out-of-tree plugin has no host-to-client push channel: each
|
|
18
|
+
* view holds the whole-stream offset it has already written into its emulator and asks for whatever
|
|
19
|
+
* came after it.
|
|
20
|
+
* @module @achasoft/dsh-advanced-sidebar/client/panels/TerminalPanel
|
|
21
|
+
*/
|
|
22
|
+
import type { SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots';
|
|
23
|
+
import '@xterm/xterm/css/xterm.css';
|
|
24
|
+
import type { AdvancedSidebarSettings } from '../../host/types.ts';
|
|
25
|
+
import type { SidebarState } from '../controller.ts';
|
|
26
|
+
import { type PanelProps } from './shared.tsx';
|
|
27
|
+
/** What the panel is handed on top of the shared panel props. */
|
|
28
|
+
export interface TerminalPanelProps extends PanelProps {
|
|
29
|
+
/** The controller's snapshot hook; the tab strip is rendered from the shared terminal group. */
|
|
30
|
+
useSidebar: SnapshotSelectorHook<SidebarState>;
|
|
31
|
+
/** The resolved settings section; absent while neither source has answered. */
|
|
32
|
+
settings: AdvancedSidebarSettings | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The tab strip and the stack of screens under it.
|
|
36
|
+
* @param props - the target, the translator, the dock's face, and the controller's snapshot hook.
|
|
37
|
+
* @returns the panel body.
|
|
38
|
+
* @see {@link TerminalPanelProps}
|
|
39
|
+
*/
|
|
40
|
+
export declare function TerminalPanel({ target, t, face, useSidebar, settings }: TerminalPanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pieces the five panels share: the props they are all given, the two formatters that would
|
|
3
|
+
* otherwise be written five times, and the path renderer.
|
|
4
|
+
* @module @achasoft/dsh-advanced-sidebar/client/panels/shared
|
|
5
|
+
*/
|
|
6
|
+
import type { PanelHostInjected, Translate } from '../contract.ts';
|
|
7
|
+
import type { OperationTarget } from '../controller.ts';
|
|
8
|
+
/** What every panel is handed by the dock. */
|
|
9
|
+
export interface PanelProps {
|
|
10
|
+
/** The session and directory this panel acts on. */
|
|
11
|
+
target: OperationTarget;
|
|
12
|
+
/** The namespace translator. */
|
|
13
|
+
t: Translate;
|
|
14
|
+
/**
|
|
15
|
+
* The dock's own injected face, minus the reserved `hooks` compartment: the renderer replaces
|
|
16
|
+
* that with bound `use<Name>` selector props before the dock is rendered, so no panel ever sees
|
|
17
|
+
* the sources themselves.
|
|
18
|
+
*/
|
|
19
|
+
face: Omit<PanelHostInjected, 'hooks'>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Format a byte count for a file row.
|
|
23
|
+
*
|
|
24
|
+
* Locale-independent on purpose: these are units, not prose, and a translated "KB" would make a
|
|
25
|
+
* size unreadable to anyone reading the same screen in the other language.
|
|
26
|
+
* @param bytes - the size.
|
|
27
|
+
* @returns the formatted size.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatBytes(bytes: number): string;
|
|
30
|
+
/**
|
|
31
|
+
* Render one path, truncating in the MIDDLE rather than at either end.
|
|
32
|
+
*
|
|
33
|
+
* The usual one-line trick for this — `direction: rtl` with `text-overflow: ellipsis` — is wrong
|
|
34
|
+
* for a path: the bidirectional algorithm reorders the neutral characters a path is made of, so
|
|
35
|
+
* `dsh/tasks.db` renders as `dsh\tasks.db.` with the separator flipped and the ellipsis moved
|
|
36
|
+
* inside the name. Two spans do it correctly and in one direction: the head clips with an ellipsis,
|
|
37
|
+
* the tail never shrinks.
|
|
38
|
+
* @param props.value - the path.
|
|
39
|
+
* @param props.className - the row's own class; the container is a flex box.
|
|
40
|
+
* @returns the path element.
|
|
41
|
+
*/
|
|
42
|
+
export declare function PathText({ value, className }: {
|
|
43
|
+
value: string;
|
|
44
|
+
className?: string | undefined;
|
|
45
|
+
}): import("react").JSX.Element;
|
|
46
|
+
/**
|
|
47
|
+
* Hold the latest value of something an effect reads but must not RESTART for.
|
|
48
|
+
*
|
|
49
|
+
* The translator is the case this exists for. Its identity changes on every locale switch, and an
|
|
50
|
+
* effect that lists it as a dependency is torn down and re-run when the interface language
|
|
51
|
+
* changes — which for the terminal effect means killing a running shell, and for a poll chain means
|
|
52
|
+
* dropping and re-arming it. The effects need the current translator, not a reason to restart.
|
|
53
|
+
* @param value - the value to track.
|
|
54
|
+
* @returns a ref whose `current` is the latest value.
|
|
55
|
+
*/
|
|
56
|
+
export declare function useLatest<T>(value: T): {
|
|
57
|
+
readonly current: T;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Phrase one transport failure for a panel's error line.
|
|
61
|
+
* @param reason - whatever the call rejected with.
|
|
62
|
+
* @param t - the namespace translator.
|
|
63
|
+
* @returns a single-line message.
|
|
64
|
+
*/
|
|
65
|
+
export declare function transportMessage(reason: unknown, t: Translate): string;
|