@deepseek-ai/dsh-client-ui-conversation 0.1.6-alpha.2 → 0.1.7-alpha.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.
Files changed (33) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +20 -6
  3. package/README.zh.md +20 -6
  4. package/lib/client.js +1374 -370
  5. package/lib/index.js +9 -8
  6. package/lib/types/client/contract/conversation.d.ts +19 -0
  7. package/lib/types/client/contract/groups.d.ts +116 -0
  8. package/lib/types/client/contract/input.d.ts +9 -0
  9. package/lib/types/client/contract/records.d.ts +3 -7
  10. package/lib/types/client/contract/slots.d.ts +51 -17
  11. package/lib/types/client/conversation/assembler.d.ts +16 -1
  12. package/lib/types/client/conversation/assembly.d.ts +3 -0
  13. package/lib/types/client/conversation/group-registry.d.ts +30 -0
  14. package/lib/types/client/conversation/group-store.d.ts +29 -0
  15. package/lib/types/client/conversation/location-index.d.ts +6 -0
  16. package/lib/types/client/index.d.ts +3 -1
  17. package/lib/types/client/input/editor/claim-decor.d.ts +2 -2
  18. package/lib/types/client/input/editor/keymap.d.ts +6 -2
  19. package/lib/types/client/input/editor/runtime.d.ts +13 -0
  20. package/lib/types/client/input/editor/view-binding.d.ts +1 -1
  21. package/lib/types/client/input/facade.d.ts +7 -0
  22. package/lib/types/client/input/submission-policy.d.ts +6 -6
  23. package/lib/types/client/locales.d.ts +384 -4
  24. package/lib/types/client/queue/QueueDock.d.ts +1 -1
  25. package/lib/types/client/service.d.ts +6 -0
  26. package/lib/types/client/skeleton/ConversationHeader.d.ts +8 -0
  27. package/lib/types/client/skeleton/ConversationSession.d.ts +1 -1
  28. package/lib/types/client/skeleton/DefaultConversationViews.d.ts +1 -1
  29. package/lib/types/client/skeleton/control-row-layout.d.ts +10 -0
  30. package/lib/types/client/view-selection.d.ts +4 -0
  31. package/lib/types/index.d.ts +16 -5
  32. package/lib/types/submission-settings.d.ts +9 -1
  33. package/package.json +35 -34
@@ -102,6 +102,13 @@ export declare class SessionInputShell implements SessionInput {
102
102
  setDraft(text: string): void;
103
103
  /** Append ordered attachment ids unless an admission transaction is locked. */
104
104
  addAttachments(ids: readonly DraftAttachmentId[]): boolean;
105
+ /**
106
+ * Add validated file references and attachment ids while admission is editable.
107
+ * @param references - reference chips in source order.
108
+ * @param ids - newly allocated attachment ids.
109
+ * @returns false when admission is locked or the editor refuses the insertion.
110
+ */
111
+ addFiles(references: readonly ReferenceInsert[], ids: readonly DraftAttachmentId[]): boolean;
105
112
  /**
106
113
  * Remove one attachment id from this draft. Busy admission phases refuse, like
107
114
  * {@link addAttachments}: a removal landing while a command submit serializes
@@ -4,7 +4,7 @@
4
4
  * Agent keep the actual delivery-window authority.
5
5
  */
6
6
  import { type SnapshotStore } from '@deepseek-ai/dsh-client-store';
7
- import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
7
+ import type { ConfigForm } from '@deepseek-ai/dsh-client-ui-settings/client';
8
8
  import type { BusyEnterBehavior, ComposerSubmitGesture, InputSubmitMode } from '../contract/composer-submission.ts';
9
9
  import type { ConversationSettings } from '../../submission-settings.ts';
10
10
  export { DEFAULT_BUSY_ENTER_BEHAVIOR } from '../../submission-settings.ts';
@@ -29,14 +29,14 @@ export declare function resolveSubmitMode(preferred: BusyEnterBehavior, running:
29
29
  export declare class ComposerSubmissionPolicy {
30
30
  /** Reactive preference source for the composer bar and the Settings row. */
31
31
  readonly busyEnter: SnapshotStore<BusyEnterBehavior>;
32
+ private readonly unsubscribe;
32
33
  private readonly host;
33
34
  /**
34
- * @param host - durable preference scope owned by the providing plugin;
35
- * absent compositions stay process-local. The adoption subscription shares
36
- * the scope's plugin lifetime — a disposed scope never publishes again, so
37
- * the policy needs no release hook.
35
+ * @param host Shared configuration form; omitted keeps the browser-local default.
38
36
  */
39
- constructor(host?: SettingsScope<ConversationSettings>);
37
+ constructor(host?: ConfigForm<ConversationSettings>);
38
+ /** Release the preference subscription. */
39
+ dispose(): void;
40
40
  /**
41
41
  * Change the busy-state submission behavior; the live value publishes
42
42
  * before the durable write starts.
@@ -25,6 +25,9 @@ export declare const zh: {
25
25
  'attachment.dropTitle': string;
26
26
  'attachment.dropDesc': string;
27
27
  'attachment.dropBlocked': string;
28
+ 'attachment.directoryDesktopOnly': string;
29
+ 'attachment.pathUnavailable': string;
30
+ 'attachment.pathUnsupported': string;
28
31
  'image.pending': string;
29
32
  'image.openOriginal': string;
30
33
  'image.openOriginalLabel': string;
@@ -69,7 +72,196 @@ export declare const zh: {
69
72
  'todo.progress.done': string;
70
73
  'todo.progress.active': string;
71
74
  'todo.progress.pending': string;
75
+ 'todo.status.completed': string;
76
+ 'todo.status.inProgress': string;
77
+ 'todo.status.pending': string;
72
78
  'todo.rowTitle': string;
79
+ 'tool.title.createGoal': string;
80
+ 'tool.title.getGoal': string;
81
+ 'tool.title.updateGoal': string;
82
+ 'tool.title.createSchedule': string;
83
+ 'tool.title.listSchedules': string;
84
+ 'tool.title.deleteSchedule': string;
85
+ 'detail.state': string;
86
+ 'detail.todo.completed': string;
87
+ 'detail.todo.in_progress': string;
88
+ 'detail.todo.pending': string;
89
+ 'detail.todo.empty': string;
90
+ 'todo.diff.initial': string;
91
+ 'todo.diff.compare': string;
92
+ 'todo.diff.unavailable': string;
93
+ 'todo.diff.noChanges': string;
94
+ 'todo.diff.added': string;
95
+ 'todo.diff.updated': string;
96
+ 'todo.diff.removed': string;
97
+ 'todo.diff.unchanged': string;
98
+ 'todo.diff.addedItem': string;
99
+ 'todo.diff.updatedItem': string;
100
+ 'todo.diff.movedItem': string;
101
+ 'todo.diff.removedItem': string;
102
+ 'detail.goal.empty': string;
103
+ 'detail.goal.active': string;
104
+ 'detail.goal.disarmed': string;
105
+ 'detail.goal.paused': string;
106
+ 'detail.goal.blocked': string;
107
+ 'detail.goal.complete': string;
108
+ 'detail.goal.rounds': string;
109
+ 'detail.goal.reason': string;
110
+ 'detail.days': string;
111
+ 'detail.hours': string;
112
+ 'detail.minutes': string;
113
+ 'detail.seconds': string;
114
+ 'detail.schedule.once': string;
115
+ 'detail.schedule.every': string;
116
+ 'detail.schedule.when': string;
117
+ 'detail.schedule.frequency': string;
118
+ 'detail.schedule.scheduled': string;
119
+ 'detail.schedule.overdue': string;
120
+ 'detail.schedule.empty': string;
121
+ 'detail.schedule.deleted': string;
122
+ 'detail.schedule.count': string;
123
+ 'tool.title.inspectProviders': string;
124
+ 'tool.title.queryRuntime': string;
125
+ 'tool.title.inspectPlugins': string;
126
+ 'tool.title.workflow': string;
127
+ 'tool.title.ralph': string;
128
+ 'tool.title.readEvent': string;
129
+ 'tool.title.searchEvents': string;
130
+ 'tool.title.traceEvent': string;
131
+ 'tool.title.searchSessions': string;
132
+ 'tool.title.traceSession': string;
133
+ 'tool.title.listModels': string;
134
+ 'tool.title.subagent': string;
135
+ 'tool.title.listAgents': string;
136
+ 'tool.title.sendMessage': string;
137
+ 'tool.title.interruptAgent': string;
138
+ 'tool.title.listJobs': string;
139
+ 'tool.title.readJob': string;
140
+ 'tool.title.killJob': string;
141
+ 'tool.title.openTerminal': string;
142
+ 'tool.title.readTerminal': string;
143
+ 'tool.title.listTerminals': string;
144
+ 'tool.title.signalTerminal': string;
145
+ 'tool.title.closeTerminal': string;
146
+ 'tool.title.lsp': string;
147
+ 'tool.title.findDefinition': string;
148
+ 'tool.title.findReferences': string;
149
+ 'tool.title.findImplementation': string;
150
+ 'tool.title.hoverSymbol': string;
151
+ 'tool.title.spawnTeammate': string;
152
+ 'tool.title.createTeamTask': string;
153
+ 'tool.title.getTeamTask': string;
154
+ 'tool.title.updateTeamTask': string;
155
+ 'tool.title.listTeamTasks': string;
156
+ 'tool.title.waitAgent': string;
157
+ 'detail.recordedResult': string;
158
+ 'detail.empty': string;
159
+ 'detail.none': string;
160
+ 'detail.yes': string;
161
+ 'detail.no': string;
162
+ 'detail.moreInInspect': string;
163
+ 'detail.status.running': string;
164
+ 'detail.status.idle': string;
165
+ 'detail.status.ready': string;
166
+ 'detail.status.inactive': string;
167
+ 'detail.status.provisioning': string;
168
+ 'detail.status.failed': string;
169
+ 'detail.status.completed': string;
170
+ 'detail.status.deleted': string;
171
+ 'detail.status.killed': string;
172
+ 'detail.status.accepted': string;
173
+ 'detail.status.queued': string;
174
+ 'detail.status.exited': string;
175
+ 'detail.field.id': string;
176
+ 'detail.field.revision': string;
177
+ 'detail.field.platform': string;
178
+ 'detail.field.provider': string;
179
+ 'detail.field.model': string;
180
+ 'detail.field.role': string;
181
+ 'detail.field.context': string;
182
+ 'detail.field.owner': string;
183
+ 'detail.field.ready': string;
184
+ 'detail.field.dependencies': string;
185
+ 'detail.field.writeScopes': string;
186
+ 'detail.field.warnings': string;
187
+ 'detail.field.diagnostics': string;
188
+ 'detail.field.methods': string;
189
+ 'detail.field.inputSchema': string;
190
+ 'detail.field.outputSchema': string;
191
+ 'detail.field.currentPackage': string;
192
+ 'detail.field.nextPackage': string;
193
+ 'detail.field.latestRun': string;
194
+ 'detail.field.packages': string;
195
+ 'detail.field.registrations': string;
196
+ 'detail.field.props': string;
197
+ 'detail.field.data': string;
198
+ 'detail.field.source': string;
199
+ 'detail.field.content': string;
200
+ 'detail.field.message': string;
201
+ 'detail.field.messageId': string;
202
+ 'detail.field.root': string;
203
+ 'detail.field.pid': string;
204
+ 'detail.field.type': string;
205
+ 'detail.field.time': string;
206
+ 'detail.field.seq': string;
207
+ 'detail.field.turn': string;
208
+ 'detail.field.step': string;
209
+ 'detail.field.callId': string;
210
+ 'detail.field.agents': string;
211
+ 'detail.field.result': string;
212
+ 'detail.field.parent': string;
213
+ 'detail.field.depth': string;
214
+ 'detail.field.exitCode': string;
215
+ 'detail.field.signal': string;
216
+ 'detail.field.previousStatus': string;
217
+ 'detail.field.agent': string;
218
+ 'detail.field.job': string;
219
+ 'detail.field.task': string;
220
+ 'detail.field.processGroup': string;
221
+ 'detail.field.availability': string;
222
+ 'detail.field.bestMatch': string;
223
+ 'detail.field.target': string;
224
+ 'detail.field.surface': string;
225
+ 'detail.agents.count': string;
226
+ 'detail.jobs.count': string;
227
+ 'detail.terminals.count': string;
228
+ 'detail.tasks.count': string;
229
+ 'detail.tasks.nextPage': string;
230
+ 'detail.locations.count': string;
231
+ 'detail.location': string;
232
+ 'detail.receipt.delivered': string;
233
+ 'detail.receipt.interrupt': string;
234
+ 'detail.receipt.started': string;
235
+ 'detail.receipt.cancel': string;
236
+ 'detail.receipt.alreadyFinished': string;
237
+ 'detail.receipt.signal': string;
238
+ 'detail.receipt.closed': string;
239
+ 'detail.receipt.closing': string;
240
+ 'detail.wait.noProgress': string;
241
+ 'detail.wait.title': string;
242
+ 'detail.wait.timeout': string;
243
+ 'detail.wait.changed': string;
244
+ 'detail.agent.reply': string;
245
+ 'detail.models.title': string;
246
+ 'detail.output.lines': string;
247
+ 'detail.output.truncated': string;
248
+ 'detail.providers.count': string;
249
+ 'detail.plugins.count': string;
250
+ 'detail.workflow.script': string;
251
+ 'detail.ralph.reportedComplete': string;
252
+ 'detail.ralph.reportedBlocker': string;
253
+ 'detail.ralph.limit': string;
254
+ 'detail.report.nextSteps': string;
255
+ 'detail.trace.replacedBy': string;
256
+ 'detail.trace.replacementChain': string;
257
+ 'detail.trace.replaces': string;
258
+ 'detail.trace.sources': string;
259
+ 'detail.trace.derived': string;
260
+ 'detail.trace.ancestors': string;
261
+ 'detail.trace.descendants': string;
262
+ 'detail.matches.count': string;
263
+ 'detail.matches.capped': string;
264
+ 'detail.event.neighbors': string;
73
265
  'todo.completed': string;
74
266
  'command.attachmentsUnsupported': string;
75
267
  'ask.rowTitle': string;
@@ -109,8 +301,6 @@ export declare const zh: {
109
301
  'tool.autoReviewRejected': string;
110
302
  'tool.autoReviewNotExecuted': string;
111
303
  'tool.autoReviewReasonFallback': string;
112
- 'diff.files.one': string;
113
- 'diff.files.other': string;
114
304
  'diff.collapseAria': string;
115
305
  'diff.expandAria': string;
116
306
  'diff.expandRest': string;
@@ -185,6 +375,9 @@ export declare const en: {
185
375
  'attachment.dropTitle': string;
186
376
  'attachment.dropDesc': string;
187
377
  'attachment.dropBlocked': string;
378
+ 'attachment.directoryDesktopOnly': string;
379
+ 'attachment.pathUnavailable': string;
380
+ 'attachment.pathUnsupported': string;
188
381
  'image.pending': string;
189
382
  'image.openOriginal': string;
190
383
  'image.openOriginalLabel': string;
@@ -229,7 +422,196 @@ export declare const en: {
229
422
  'todo.progress.done': string;
230
423
  'todo.progress.active': string;
231
424
  'todo.progress.pending': string;
425
+ 'todo.status.completed': string;
426
+ 'todo.status.inProgress': string;
427
+ 'todo.status.pending': string;
232
428
  'todo.rowTitle': string;
429
+ 'tool.title.createGoal': string;
430
+ 'tool.title.getGoal': string;
431
+ 'tool.title.updateGoal': string;
432
+ 'tool.title.createSchedule': string;
433
+ 'tool.title.listSchedules': string;
434
+ 'tool.title.deleteSchedule': string;
435
+ 'detail.state': string;
436
+ 'detail.todo.completed': string;
437
+ 'detail.todo.in_progress': string;
438
+ 'detail.todo.pending': string;
439
+ 'detail.todo.empty': string;
440
+ 'todo.diff.initial': string;
441
+ 'todo.diff.compare': string;
442
+ 'todo.diff.unavailable': string;
443
+ 'todo.diff.noChanges': string;
444
+ 'todo.diff.added': string;
445
+ 'todo.diff.updated': string;
446
+ 'todo.diff.removed': string;
447
+ 'todo.diff.unchanged': string;
448
+ 'todo.diff.addedItem': string;
449
+ 'todo.diff.updatedItem': string;
450
+ 'todo.diff.movedItem': string;
451
+ 'todo.diff.removedItem': string;
452
+ 'detail.goal.empty': string;
453
+ 'detail.goal.active': string;
454
+ 'detail.goal.disarmed': string;
455
+ 'detail.goal.paused': string;
456
+ 'detail.goal.blocked': string;
457
+ 'detail.goal.complete': string;
458
+ 'detail.goal.rounds': string;
459
+ 'detail.goal.reason': string;
460
+ 'detail.days': string;
461
+ 'detail.hours': string;
462
+ 'detail.minutes': string;
463
+ 'detail.seconds': string;
464
+ 'detail.schedule.once': string;
465
+ 'detail.schedule.every': string;
466
+ 'detail.schedule.when': string;
467
+ 'detail.schedule.frequency': string;
468
+ 'detail.schedule.scheduled': string;
469
+ 'detail.schedule.overdue': string;
470
+ 'detail.schedule.empty': string;
471
+ 'detail.schedule.deleted': string;
472
+ 'detail.schedule.count': string;
473
+ 'tool.title.inspectProviders': string;
474
+ 'tool.title.queryRuntime': string;
475
+ 'tool.title.inspectPlugins': string;
476
+ 'tool.title.workflow': string;
477
+ 'tool.title.ralph': string;
478
+ 'tool.title.readEvent': string;
479
+ 'tool.title.searchEvents': string;
480
+ 'tool.title.traceEvent': string;
481
+ 'tool.title.searchSessions': string;
482
+ 'tool.title.traceSession': string;
483
+ 'tool.title.listModels': string;
484
+ 'tool.title.subagent': string;
485
+ 'tool.title.listAgents': string;
486
+ 'tool.title.sendMessage': string;
487
+ 'tool.title.interruptAgent': string;
488
+ 'tool.title.listJobs': string;
489
+ 'tool.title.readJob': string;
490
+ 'tool.title.killJob': string;
491
+ 'tool.title.openTerminal': string;
492
+ 'tool.title.readTerminal': string;
493
+ 'tool.title.listTerminals': string;
494
+ 'tool.title.signalTerminal': string;
495
+ 'tool.title.closeTerminal': string;
496
+ 'tool.title.lsp': string;
497
+ 'tool.title.findDefinition': string;
498
+ 'tool.title.findReferences': string;
499
+ 'tool.title.findImplementation': string;
500
+ 'tool.title.hoverSymbol': string;
501
+ 'tool.title.spawnTeammate': string;
502
+ 'tool.title.createTeamTask': string;
503
+ 'tool.title.getTeamTask': string;
504
+ 'tool.title.updateTeamTask': string;
505
+ 'tool.title.listTeamTasks': string;
506
+ 'tool.title.waitAgent': string;
507
+ 'detail.recordedResult': string;
508
+ 'detail.empty': string;
509
+ 'detail.none': string;
510
+ 'detail.yes': string;
511
+ 'detail.no': string;
512
+ 'detail.moreInInspect': string;
513
+ 'detail.status.running': string;
514
+ 'detail.status.idle': string;
515
+ 'detail.status.ready': string;
516
+ 'detail.status.inactive': string;
517
+ 'detail.status.provisioning': string;
518
+ 'detail.status.failed': string;
519
+ 'detail.status.completed': string;
520
+ 'detail.status.deleted': string;
521
+ 'detail.status.killed': string;
522
+ 'detail.status.accepted': string;
523
+ 'detail.status.queued': string;
524
+ 'detail.status.exited': string;
525
+ 'detail.field.id': string;
526
+ 'detail.field.revision': string;
527
+ 'detail.field.platform': string;
528
+ 'detail.field.provider': string;
529
+ 'detail.field.model': string;
530
+ 'detail.field.role': string;
531
+ 'detail.field.context': string;
532
+ 'detail.field.owner': string;
533
+ 'detail.field.ready': string;
534
+ 'detail.field.dependencies': string;
535
+ 'detail.field.writeScopes': string;
536
+ 'detail.field.warnings': string;
537
+ 'detail.field.diagnostics': string;
538
+ 'detail.field.methods': string;
539
+ 'detail.field.inputSchema': string;
540
+ 'detail.field.outputSchema': string;
541
+ 'detail.field.currentPackage': string;
542
+ 'detail.field.nextPackage': string;
543
+ 'detail.field.latestRun': string;
544
+ 'detail.field.packages': string;
545
+ 'detail.field.registrations': string;
546
+ 'detail.field.props': string;
547
+ 'detail.field.data': string;
548
+ 'detail.field.source': string;
549
+ 'detail.field.content': string;
550
+ 'detail.field.message': string;
551
+ 'detail.field.messageId': string;
552
+ 'detail.field.root': string;
553
+ 'detail.field.pid': string;
554
+ 'detail.field.type': string;
555
+ 'detail.field.time': string;
556
+ 'detail.field.seq': string;
557
+ 'detail.field.turn': string;
558
+ 'detail.field.step': string;
559
+ 'detail.field.callId': string;
560
+ 'detail.field.agents': string;
561
+ 'detail.field.result': string;
562
+ 'detail.field.parent': string;
563
+ 'detail.field.depth': string;
564
+ 'detail.field.exitCode': string;
565
+ 'detail.field.signal': string;
566
+ 'detail.field.previousStatus': string;
567
+ 'detail.field.agent': string;
568
+ 'detail.field.job': string;
569
+ 'detail.field.task': string;
570
+ 'detail.field.processGroup': string;
571
+ 'detail.field.availability': string;
572
+ 'detail.field.bestMatch': string;
573
+ 'detail.field.target': string;
574
+ 'detail.field.surface': string;
575
+ 'detail.agents.count': string;
576
+ 'detail.jobs.count': string;
577
+ 'detail.terminals.count': string;
578
+ 'detail.tasks.count': string;
579
+ 'detail.tasks.nextPage': string;
580
+ 'detail.locations.count': string;
581
+ 'detail.location': string;
582
+ 'detail.receipt.delivered': string;
583
+ 'detail.receipt.interrupt': string;
584
+ 'detail.receipt.started': string;
585
+ 'detail.receipt.cancel': string;
586
+ 'detail.receipt.alreadyFinished': string;
587
+ 'detail.receipt.signal': string;
588
+ 'detail.receipt.closed': string;
589
+ 'detail.receipt.closing': string;
590
+ 'detail.wait.noProgress': string;
591
+ 'detail.wait.title': string;
592
+ 'detail.wait.timeout': string;
593
+ 'detail.wait.changed': string;
594
+ 'detail.agent.reply': string;
595
+ 'detail.models.title': string;
596
+ 'detail.output.lines': string;
597
+ 'detail.output.truncated': string;
598
+ 'detail.providers.count': string;
599
+ 'detail.plugins.count': string;
600
+ 'detail.workflow.script': string;
601
+ 'detail.ralph.reportedComplete': string;
602
+ 'detail.ralph.reportedBlocker': string;
603
+ 'detail.ralph.limit': string;
604
+ 'detail.report.nextSteps': string;
605
+ 'detail.trace.replacedBy': string;
606
+ 'detail.trace.replacementChain': string;
607
+ 'detail.trace.replaces': string;
608
+ 'detail.trace.sources': string;
609
+ 'detail.trace.derived': string;
610
+ 'detail.trace.ancestors': string;
611
+ 'detail.trace.descendants': string;
612
+ 'detail.matches.count': string;
613
+ 'detail.matches.capped': string;
614
+ 'detail.event.neighbors': string;
233
615
  'todo.completed': string;
234
616
  'command.attachmentsUnsupported': string;
235
617
  'ask.rowTitle': string;
@@ -269,8 +651,6 @@ export declare const en: {
269
651
  'tool.autoReviewRejected': string;
270
652
  'tool.autoReviewNotExecuted': string;
271
653
  'tool.autoReviewReasonFallback': string;
272
- 'diff.files.one': string;
273
- 'diff.files.other': string;
274
654
  'diff.collapseAria': string;
275
655
  'diff.expandAria': string;
276
656
  'diff.expandRest': string;
@@ -14,7 +14,7 @@ export interface QueueDockInjected {
14
14
  export type QueueDockProps = PropsRuntime<'conversation.input.dock'> & QueueDockInjected & PropsLocale<'conversation'>;
15
15
  /**
16
16
  * Queue strip: one item renders directly; multiple items default to a
17
- * collapsible count header; an empty queue renders nothing. Local submissions
17
+ * collapsible count header; an empty queue renders nothing. Local queued submissions
18
18
  * show sending status and disabled actions until their Host queue rows arrive.
19
19
  */
20
20
  export declare function QueueDock({ useSession, useProjection, updateQueue, notify, loadImage, t }: QueueDockProps): import("react").JSX.Element | null;
@@ -183,4 +183,10 @@ export declare class ConversationController extends Service implements IConversa
183
183
  /** Canonical base64 wire form of one browser image file. */
184
184
  private encodeImage;
185
185
  }
186
+ /**
187
+ * Whether a browser-declared MIME selects the image draft path (all other files upload verbatim).
188
+ * @param value - the browser's declared MIME type.
189
+ * @returns whether the file is an accepted raster image.
190
+ */
191
+ export declare function isImageMediaType(value: string): boolean;
186
192
  //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { ConversationHeaderProps } from '../contract/slots.ts';
2
+ /**
3
+ * Keeps global navigation available before a Session exists.
4
+ * @param props - Optional Session sources and authorized header slots.
5
+ * @returns The persistent header with any selected Session's title and views.
6
+ */
7
+ export declare function ConversationHeader({ sessionId, useSession, useConversation, renderSlot }: ConversationHeaderProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=ConversationHeader.d.ts.map
@@ -9,7 +9,7 @@ export type ConversationSessionHeaderProps = ConversationSessionHeaderSlotProps;
9
9
  * @param props - Strict Session store, view ledger, navigation, render, and locale shares.
10
10
  * @returns Session navigation controls, with title and tabs after conversation starts.
11
11
  */
12
- export declare function ConversationSessionHeader({ sessionId, useSession, useSessions, useConversation, useConversationViews, useStore, renderSlot, open, selectView, t, }: ConversationSessionHeaderProps): import("react").JSX.Element;
12
+ export declare function ConversationSessionHeader({ sessionId, hideChrome, useSessions, useConversationViews, useStore, renderSlot, open, selectView, t, }: ConversationSessionHeaderProps): import("react").JSX.Element;
13
13
  /**
14
14
  * Renders the active Session view inside the resident scrollport and keeps
15
15
  * the input draft mirrored while blank Hero chrome is visible.
@@ -5,5 +5,5 @@ import type { ConversationSessionSlotProps } from '../contract/slots.ts';
5
5
  * @param props - Strict Session input/store, view ledger, and render shares.
6
6
  * @returns the active view area, or null while the Session remains blank.
7
7
  */
8
- export declare function DefaultConversationViews({ view, useSession, useConversation, useConversationViews, useInput, inputActions, useStore, actions, renderSlot, bindDraftMirror, openView, }: ConversationSessionSlotProps): import("react").JSX.Element | null;
8
+ export declare function DefaultConversationViews({ view, useSession, useConversation, useConversationViews, useInput, inputActions, useStore, actions, renderSlot, bindDraftMirror, openView, useInspectCall, }: ConversationSessionSlotProps): import("react").JSX.Element | null;
9
9
  //# sourceMappingURL=DefaultConversationViews.d.ts.map
@@ -0,0 +1,10 @@
1
+ /** Content-sized model collapse for the composer's two control groups. */
2
+ /**
3
+ * Collapse the model text only when the expanded controls cannot share a line.
4
+ * The model seat consumes the row's inherited display variables; wrapping remains
5
+ * available when even the icon cannot fit. Each notification is measured synchronously.
6
+ * @param row - Composer control row with its leading and trailing groups.
7
+ * @returns Disconnect the layout observers and font listener.
8
+ */
9
+ export declare function observeControlRow(row: HTMLElement): () => void;
10
+ //# sourceMappingURL=control-row-layout.d.ts.map
@@ -1,4 +1,8 @@
1
1
  import type { ViewTab } from './contract/views.ts';
2
+ /** Fallback View selected when no stored preference resolves to a registered View. */
3
+ export declare const DEFAULT_VIEW_ID = "chat";
4
+ /** The one View the Developer tools preference gates; other Views stay registered by their owners. */
5
+ export declare const DEVELOPER_TOOLS_VIEW_ID = "trajectory";
2
6
  /**
3
7
  * Resolve a preferred registered View, then Chat, without choosing another View.
4
8
  * @param tabs - currently registered Views.
@@ -1,9 +1,20 @@
1
- /** Host registration for browser conversation preferences. */
2
- import type { Context } from '@deepseek-ai/cordis';
1
+ import type { Volatile, Context } from '@deepseek-ai/cordis';
2
+ import type { BusyEnterBehavior } from './submission-settings.ts';
3
+ import z from '@deepseek-ai/schemastery';
3
4
  export { BUSY_ENTER_BEHAVIORS, BUSY_ENTER_FIELD, CONVERSATION_SETTINGS_NAMESPACE, DEFAULT_BUSY_ENTER_BEHAVIOR, type BusyEnterBehavior, type ConversationSettings, } from './submission-settings.ts';
4
- /**
5
- * Register the durable conversation section when a settings provider exists.
6
- * @param ctx - Host context whose optional settings service owns the section.
5
+ /** Runtime preferences projected to the browser. */
6
+ export interface Config {
7
+ /** Enter key behavior while a turn is running. */
8
+ busyEnter: Volatile<BusyEnterBehavior>;
9
+ }
10
+ /** Live preferences projected to the browser. */
11
+ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
12
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "volatile-defined">;
13
+ }>>, Schemastery.ObjectT<NoInfer<{
14
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "volatile-defined">;
15
+ }>>, "plain">;
16
+ /** Host preferences are consumed through the configuration form projection.
17
+ * @param ctx Plugin context used for optional settings presentation.
7
18
  */
8
19
  export declare function apply(ctx: Context): void;
9
20
  //# sourceMappingURL=index.d.ts.map
@@ -16,5 +16,13 @@ export interface ConversationSettings {
16
16
  busyEnter: BusyEnterBehavior;
17
17
  }
18
18
  /** Durable conversation schema; also the wire envelope the browser scope validates against. */
19
- export declare const ConversationSettingsSchema: z<ConversationSettings>;
19
+ export declare const ConversationSettingsFields: {
20
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "defined">;
21
+ };
22
+ /** Schema for shared configuration values. */
23
+ export declare const ConversationSettingsSchema: z<Schemastery.ObjectS<NoInfer<{
24
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "defined">;
25
+ }>>, Schemastery.ObjectT<NoInfer<{
26
+ busyEnter: z<"queue" | "steer", "queue" | "steer", "defined">;
27
+ }>>, "plain">;
20
28
  //# sourceMappingURL=submission-settings.d.ts.map