@pstdio/workbench 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +39 -317
  2. package/dist/extensions.d.ts +1283 -774
  3. package/dist/extensions.js +1454 -1924
  4. package/dist/extensions.js.map +1 -1
  5. package/dist/file-renderer-view-kfJRY3yR.js +515 -0
  6. package/dist/file-renderer-view-kfJRY3yR.js.map +1 -0
  7. package/dist/index.d.ts +589 -644
  8. package/dist/index.js +5011 -2644
  9. package/dist/index.js.map +1 -1
  10. package/dist/react.d.ts +540 -585
  11. package/dist/react.js +3583 -3424
  12. package/dist/react.js.map +1 -1
  13. package/dist/storage.d.ts +118 -157
  14. package/dist/storage.js +135 -149
  15. package/dist/storage.js.map +1 -1
  16. package/dist/webview-runtime.d.ts +2 -5
  17. package/dist/webview-runtime.js +3 -3
  18. package/dist/webview-runtime.js.map +1 -1
  19. package/dist/workbench-menu-paths-B_QJzcNU.js +12 -0
  20. package/dist/workbench-menu-paths-B_QJzcNU.js.map +1 -0
  21. package/dist/workbench-renderers-DmsrBGC7.js +960 -0
  22. package/dist/workbench-renderers-DmsrBGC7.js.map +1 -0
  23. package/dist/workspaces-DJwFj8uq.js +1872 -0
  24. package/dist/workspaces-DJwFj8uq.js.map +1 -0
  25. package/package.json +6 -41
  26. package/dist/composition-resolver-types-CWykPyEK.js +0 -241
  27. package/dist/composition-resolver-types-CWykPyEK.js.map +0 -1
  28. package/dist/file-renderer-view-B6_iR4EN.js +0 -496
  29. package/dist/file-renderer-view-B6_iR4EN.js.map +0 -1
  30. package/dist/file-section-navigation-CfYqVObc.js +0 -30
  31. package/dist/file-section-navigation-CfYqVObc.js.map +0 -1
  32. package/dist/layout-types-DMoZz38-.js +0 -100
  33. package/dist/layout-types-DMoZz38-.js.map +0 -1
  34. package/dist/surface-map-C1pOTUmF.js +0 -52
  35. package/dist/surface-map-C1pOTUmF.js.map +0 -1
  36. package/dist/testing.d.ts +0 -2443
  37. package/dist/testing.js +0 -58
  38. package/dist/testing.js.map +0 -1
  39. package/dist/workbench-built-ins-BCJ6-fIM.js +0 -1173
  40. package/dist/workbench-built-ins-BCJ6-fIM.js.map +0 -1
  41. package/dist/workbench-menu-paths-D-e7iscN.js +0 -43
  42. package/dist/workbench-menu-paths-D-e7iscN.js.map +0 -1
  43. package/dist/workflow-status-settings-DLiu9FZ0.js +0 -144
  44. package/dist/workflow-status-settings-DLiu9FZ0.js.map +0 -1
package/dist/testing.d.ts DELETED
@@ -1,2443 +0,0 @@
1
- import { ComponentType } from 'react';
2
- import { ReactNode } from 'react';
3
-
4
- export declare const activePrimaryResource: (workbench: WorkbenchCore) => ResourceRef | undefined;
5
-
6
- declare interface AttributeDescriptor {
7
- id: string;
8
- label: string;
9
- type: AttributeType;
10
- filterable?: boolean;
11
- groupable?: boolean;
12
- sortable?: boolean;
13
- displayable?: boolean;
14
- editable?: boolean;
15
- display?: AttributeDisplayDescriptor;
16
- render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
17
- compare?: (a: unknown, b: unknown) => number;
18
- }
19
-
20
- declare type AttributeDisplayDescriptor = {
21
- kind: "workspace-badge";
22
- itemsAttributeId: string;
23
- };
24
-
25
- /**
26
- * Reactive source for an entire attribute schema. Lets a contribution
27
- * add/remove/edit attributes at runtime without re-registering.
28
- */
29
- declare interface AttributesSource {
30
- subscribe: (listener: () => void) => () => void;
31
- getSnapshot: () => AttributeDescriptor[];
32
- }
33
-
34
- declare type AttributeType = {
35
- kind: "enum";
36
- options: EnumOptions;
37
- } | {
38
- kind: "enum-multi";
39
- options: EnumOptions;
40
- } | {
41
- kind: "string";
42
- } | {
43
- kind: "date";
44
- } | {
45
- kind: "number";
46
- } | {
47
- kind: "user";
48
- };
49
-
50
- declare interface BoardColumnAction {
51
- id: string;
52
- label: string;
53
- icon: ComponentType<{
54
- size?: number | string;
55
- }>;
56
- }
57
-
58
- /** Board-column behavior and menu configuration for a resolved column group. */
59
- declare interface BoardColumnConfig {
60
- /** Color palette token used for the column header and group badges. */
61
- color?: string;
62
- canDragIn?: boolean;
63
- canDragOut?: boolean;
64
- canCreate?: boolean;
65
- actions?: BoardColumnAction[];
66
- }
67
-
68
- /**
69
- * A data-driven list of items, each opening a contributor-supplied editor. The
70
- * framework knows nothing about what an item is — it only calls these hooks.
71
- */
72
- declare interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
73
- kind: "collection";
74
- items(): TItem[] | Promise<TItem[]>;
75
- itemId(item: TItem): string;
76
- itemLabel(item: TItem): string;
77
- itemIcon?(item: TItem): string | undefined;
78
- groupBy?: SettingsCollectionGroupBy<TItem>;
79
- renderItem(item: TItem, input: WorkbenchPanelRenderInput): unknown;
80
- actions?: SettingsAction[];
81
- }
82
-
83
- declare interface Command {
84
- id: string;
85
- label: string;
86
- category?: string;
87
- description?: string;
88
- icon?: string;
89
- when?: string;
90
- params?: CommandParamSchema;
91
- }
92
-
93
- declare interface CommandHandler<TArgs = unknown, TResult = unknown> {
94
- prepareArgs?(args: TArgs, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: TArgs) => void): TArgs | Promise<TArgs>;
95
- execute(args: TArgs, context?: WorkbenchCommandExecutionContext): TResult | Promise<TResult>;
96
- isEnabled?(args: TArgs): boolean;
97
- isVisible?(args: TArgs): boolean;
98
- isToggled?(args: TArgs): boolean;
99
- }
100
-
101
- declare interface CommandPaletteResourceProvider {
102
- id: string;
103
- title: string;
104
- refreshEventIds?: string[];
105
- query(context: CommandPaletteResourceQueryContext): Promise<readonly CommandPaletteResourceResult[]>;
106
- }
107
-
108
- declare interface CommandPaletteResourceProviderResult {
109
- providerId: string;
110
- title: string;
111
- results: readonly CommandPaletteResourceResult[];
112
- }
113
-
114
- declare interface CommandPaletteResourceQueryContext {
115
- query: string;
116
- limit: number;
117
- }
118
-
119
- declare interface CommandPaletteResourceRegistry {
120
- store: WorkbenchStore<CommandPaletteResourceRegistryStoreState>;
121
- registerProvider(provider: CommandPaletteResourceProvider): Disposable_2;
122
- listProviders(): CommandPaletteResourceProvider[];
123
- queryProviders(context: CommandPaletteResourceQueryContext): Promise<CommandPaletteResourceProviderResult[]>;
124
- refresh(): void;
125
- }
126
-
127
- declare interface CommandPaletteResourceRegistryStoreState {
128
- providers: Record<string, CommandPaletteResourceProvider>;
129
- refreshToken: number;
130
- }
131
-
132
- declare interface CommandPaletteResourceResult {
133
- id: string;
134
- label: string;
135
- description?: string;
136
- icon?: string;
137
- keywords?: string[];
138
- group?: string;
139
- activate(): void | Promise<void>;
140
- }
141
-
142
- declare interface CommandParamDescriptor {
143
- type: string;
144
- label?: string;
145
- description?: string;
146
- required?: boolean;
147
- defaultValue?: unknown;
148
- options?: CommandParamOption[];
149
- templateType?: string;
150
- resourceType?: string;
151
- accept?: string;
152
- multiple?: boolean;
153
- metadata?: Record<string, unknown>;
154
- resolvedFrom?: "resource";
155
- }
156
-
157
- declare interface CommandParamOption {
158
- label: string;
159
- value: string;
160
- icon?: string;
161
- }
162
-
163
- declare type CommandParamSchema = Record<string, CommandParamDescriptor>;
164
-
165
- declare interface CommandRegistry {
166
- store: WorkbenchStore<CommandRegistryStoreState>;
167
- registerCommand<TArgs = unknown, TResult = unknown>(command: Command, handler: CommandHandler<TArgs, TResult>, metadata?: ContributionMetadata): Disposable_2;
168
- getCommand(id: string): RegisteredCommand | undefined;
169
- listCommands(): RegisteredCommand[];
170
- isCommandEnabled(id: string, args?: unknown): boolean;
171
- isCommandVisible(id: string, args?: unknown): boolean;
172
- isCommandToggled(id: string, args?: unknown): boolean;
173
- prepareCommandArgs(id: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown>;
174
- executeCommand(id: string, args?: unknown, context?: WorkbenchCommandExecutionContext): Promise<unknown>;
175
- onDidExecuteError(listener: WorkbenchCommandExecutionErrorListener): Disposable_2;
176
- }
177
-
178
- declare interface CommandRegistryStoreState {
179
- commands: Record<string, RegisteredCommand>;
180
- }
181
-
182
- declare interface ContextKeyScope extends Disposable_2 {
183
- ownerId: string;
184
- set(key: string, value: ContextKeyValue): void;
185
- get(key: string): ContextKeyValue;
186
- delete(key: string): void;
187
- }
188
-
189
- declare interface ContextKeyService {
190
- store: WorkbenchStore<ContextKeyStoreState>;
191
- set(key: string, value: ContextKeyValue): void;
192
- get(key: string): ContextKeyValue;
193
- delete(key: string): void;
194
- createScope(ownerId: string): ContextKeyScope;
195
- deleteOwner(ownerId: string): void;
196
- snapshot(): Record<string, ContextKeyValue>;
197
- matches(expression?: string): boolean;
198
- }
199
-
200
- declare interface ContextKeyStoreState {
201
- values: Record<string, ContextKeyValue>;
202
- }
203
-
204
- declare type ContextKeyValue = boolean | number | string | undefined;
205
-
206
- declare interface ContributionMetadata {
207
- source?: ContributionSource;
208
- ownerId?: string;
209
- priority?: number;
210
- }
211
-
212
- declare type ContributionSource = "module" | "extension";
213
-
214
- declare type ContributionSource_2 = "module" | "extension";
215
-
216
- declare interface ControlsApplyInput {
217
- values: Record<string, unknown>;
218
- resource?: ResourceRef;
219
- }
220
-
221
- declare interface ControlsQueryResult {
222
- params?: unknown[];
223
- groups?: unknown[];
224
- values?: Record<string, unknown>;
225
- readOnly?: boolean;
226
- }
227
-
228
- declare interface ControlsRendererContribution {
229
- id: string;
230
- title: string;
231
- resourceKind?: string;
232
- emptyTitle?: string;
233
- emptyDescription?: string;
234
- layout?: ControlsRendererLayout;
235
- defaultValues?: Record<string, unknown>;
236
- /** Load the control declarations + current values for the active resource. */
237
- executeQuery(resource?: ResourceRef): Promise<ControlsQueryResult> | ControlsQueryResult;
238
- /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
239
- updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
240
- /** Commit the full value map from a sticky footer. */
241
- apply?(input: ControlsApplyInput): Promise<void> | void;
242
- /** Reset some or all controls to their defaults. */
243
- reset?(input: ControlsResetInput): Promise<void> | void;
244
- subscribe?: (listener: () => void) => Disposable_2 | (() => void);
245
- }
246
-
247
- declare type ControlsRendererImplementation = (input: WorkbenchPanelRenderInput & {
248
- controlsRendererId: string;
249
- }) => unknown;
250
-
251
- declare interface ControlsRendererLayout {
252
- region?: ControlsRendererRegion;
253
- defaultPx?: number;
254
- minPx?: number;
255
- maxPx?: number;
256
- }
257
-
258
- declare interface ControlsRendererRefreshEvent {
259
- controlsRendererId: string;
260
- }
261
-
262
- declare type ControlsRendererRefreshListener = (event: ControlsRendererRefreshEvent) => void;
263
-
264
- declare type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
265
-
266
- declare interface ControlsRendererRegistry {
267
- controlsStore: WorkbenchStore<ControlsRendererStoreState>;
268
- registerControlsRenderer(contribution: ControlsRendererContribution, metadata?: ContributionMetadata): Disposable_2;
269
- setControlsRendererImplementation(impl: ControlsRendererImplementation): void;
270
- getControlsRenderer(id: string): RegisteredControlsRendererContribution | undefined;
271
- listControlsRenderers(): RegisteredControlsRendererContribution[];
272
- refreshControlsRenderer(id: string): void;
273
- onDidRefreshControlsRenderer(listener: ControlsRendererRefreshListener): Disposable_2;
274
- }
275
-
276
- declare interface ControlsRendererStoreState {
277
- renderers: Record<string, RegisteredControlsRendererContribution>;
278
- }
279
-
280
- declare interface ControlsResetInput {
281
- controlIds?: string[];
282
- resource?: ResourceRef;
283
- }
284
-
285
- declare interface ControlsUpdateValueInput {
286
- controlId: string;
287
- value: unknown;
288
- values: Record<string, unknown>;
289
- resource?: ResourceRef;
290
- }
291
-
292
- /**
293
- * Renders its own page. `render` returns `unknown` so core stays React-free — the
294
- * React layer treats the result as a node, exactly like WorkbenchRendererRegistration.
295
- */
296
- declare interface CustomSettingsPanel extends SettingsPanelBase {
297
- kind: "custom";
298
- render(input: WorkbenchPanelRenderInput): unknown;
299
- }
300
-
301
- declare interface DataTableRendererColumn {
302
- id: string;
303
- label?: string;
304
- description?: string;
305
- icon?: unknown;
306
- hidden?: boolean;
307
- stat?: DataTableRendererColumnStat;
308
- renderer?: DataTableRendererColumnRenderer;
309
- }
310
-
311
- declare type DataTableRendererColumnRenderer = {
312
- type: "json";
313
- } | {
314
- type: "color-scale";
315
- stops: Array<{
316
- value: number;
317
- color: DataTableRendererThemeColor;
318
- }>;
319
- } | {
320
- type: "categorical-color";
321
- categories: Array<{
322
- value: string | number | boolean | null;
323
- color: DataTableRendererThemeColor;
324
- }>;
325
- };
326
-
327
- declare type DataTableRendererColumnStat = {
328
- type: "unique";
329
- } | {
330
- type: "histogram";
331
- bins?: number;
332
- } | {
333
- type: "top-values";
334
- limit?: number;
335
- };
336
-
337
- declare interface DataTableRendererContribution {
338
- id: string;
339
- title: string;
340
- resourceKind?: string;
341
- columns?: DataTableRendererColumn[];
342
- selectionMode?: "none" | "multiple";
343
- selectionActions?: DataTableRendererSelectionAction[];
344
- rowActions?: DataTableRendererRowAction[];
345
- initialPageSize?: number;
346
- pageSizeOptions?: number[];
347
- emptyTitle?: string;
348
- emptyDescription?: string;
349
- executeQuery(context: DataTableRendererQueryContext): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
350
- subscribe?: (listener: () => void) => Disposable_2 | (() => void);
351
- onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
352
- }
353
-
354
- declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
355
- dataTableRendererId: string;
356
- }) => unknown;
357
-
358
- declare interface DataTableRendererQueryContext {
359
- resource?: ResourceRef;
360
- modeId?: string;
361
- }
362
-
363
- declare interface DataTableRendererQueryResult {
364
- rows: DataTableRendererRow[];
365
- columns?: DataTableRendererColumn[];
366
- }
367
-
368
- declare interface DataTableRendererRefreshEvent {
369
- dataTableRendererId: string;
370
- }
371
-
372
- declare interface DataTableRendererRegistry {
373
- dataTableStore: WorkbenchStore<DataTableRendererStoreState>;
374
- registerDataTableRenderer(contribution: DataTableRendererContribution, metadata?: ContributionMetadata): Disposable_2;
375
- setDataTableRendererImplementation(implementation: DataTableRendererImplementation): void;
376
- getDataTableRenderer(id: string): RegisteredDataTableRendererContribution | undefined;
377
- listDataTableRenderers(): RegisteredDataTableRendererContribution[];
378
- refreshDataTableRenderer(id: string): void;
379
- onDidRefreshDataTableRenderer(listener: (event: DataTableRendererRefreshEvent) => void): Disposable_2;
380
- }
381
-
382
- declare interface DataTableRendererRow {
383
- id: string;
384
- values: Record<string, unknown>;
385
- resource?: ResourceRef;
386
- }
387
-
388
- declare interface DataTableRendererRowAction {
389
- id: string;
390
- label: string;
391
- icon?: unknown;
392
- destructive?: boolean;
393
- run(row: DataTableRendererRow): Promise<void> | void;
394
- }
395
-
396
- declare interface DataTableRendererSelectionAction {
397
- id: string;
398
- label: string;
399
- icon?: unknown;
400
- destructive?: boolean;
401
- run(rows: DataTableRendererRow[]): Promise<void> | void;
402
- }
403
-
404
- declare interface DataTableRendererStoreState {
405
- renderers: Record<string, RegisteredDataTableRendererContribution>;
406
- }
407
-
408
- declare interface DataTableRendererThemeColor {
409
- light: string;
410
- dark: string;
411
- foreground?: {
412
- light: string;
413
- dark: string;
414
- };
415
- }
416
-
417
- export declare const describeResourceRouteContract: (contract: ResourceRouteContract) => void;
418
-
419
- declare interface Disposable_2 {
420
- dispose(): void;
421
- }
422
-
423
- declare interface EnumOption {
424
- value: string;
425
- label: string;
426
- color?: string;
427
- icon?: string | null;
428
- }
429
-
430
- declare type EnumOptions = EnumOption[] | EnumOptionsSource;
431
-
432
- /**
433
- * Reactive options source for enum / enum-multi attributes. Mirrors React's
434
- * useSyncExternalStore contract so a contribution can hand its options off as
435
- * a live collection instead of a frozen array.
436
- */
437
- declare interface EnumOptionsSource {
438
- subscribe: (listener: () => void) => () => void;
439
- getSnapshot: () => EnumOption[];
440
- }
441
-
442
- /**
443
- * Core-owned contract for file icon theme registrations. Structurally identical
444
- * to @pstdio/ui's FileIconThemePreferenceOption; the React layer bridges the two
445
- * so core does not depend on UI package ownership.
446
- */
447
- declare interface FileIconThemeFont {
448
- fontFamily: string;
449
- src: {
450
- url: string;
451
- format?: string;
452
- }[];
453
- weight?: string;
454
- style?: string;
455
- }
456
-
457
- declare interface FileIconThemePreferenceOption {
458
- id: string;
459
- title?: string;
460
- definitions: Record<string, unknown>;
461
- fileExtensions: Record<string, string>;
462
- fileNames: Record<string, string>;
463
- defaults: {
464
- file?: string;
465
- folder?: string;
466
- };
467
- fonts: FileIconThemeFont[];
468
- }
469
-
470
- declare interface FileIconThemeRegistry {
471
- store: WorkbenchStore<WorkbenchFileIconThemeStoreState>;
472
- register(themes: readonly FileIconThemePreferenceOption[]): Disposable_2;
473
- listThemes(): readonly FileIconThemePreferenceOption[];
474
- }
475
-
476
- declare interface FileRendererContent {
477
- fileName?: string;
478
- /** Workspace-relative path shown above the file preview. */
479
- filePath?: string;
480
- mimeType?: string;
481
- content?: string;
482
- dataUrl?: string;
483
- placeholder?: string;
484
- /** Override contribution-level save support for one loaded file. */
485
- editable?: boolean;
486
- /** Request Monaco for text that automatic dispatch would open as markdown. */
487
- textRenderer?: "automatic" | "monaco";
488
- /** Represent a deliberate no-file selection without an editable blank document. */
489
- emptyState?: {
490
- title: string;
491
- description?: string;
492
- };
493
- /** Ordered backing-store revision when one is available. */
494
- revision?: string;
495
- }
496
-
497
- declare interface FileRendererContribution {
498
- id: string;
499
- title: string;
500
- resourceKind?: string;
501
- /** Resolve the file's content (and identity) for the bound resource. */
502
- load(resource: ResourceRef | undefined): Promise<FileRendererContent> | FileRendererContent;
503
- /** Persist edited text. Absent ⇒ read-only. Never called for images. */
504
- save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
505
- }
506
-
507
- declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
508
- fileRendererId: string;
509
- }) => unknown;
510
-
511
- declare interface FileRendererRefreshEnvelope {
512
- resourceUri?: string;
513
- origin?: FileRendererRefreshOrigin;
514
- revision?: string;
515
- }
516
-
517
- declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
518
- fileRendererId: string;
519
- }
520
-
521
- declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
522
-
523
- declare interface FileRendererRefreshOrigin {
524
- rendererId: string;
525
- instanceId: string;
526
- operationId: string;
527
- }
528
-
529
- declare interface FileRendererRegistry {
530
- fileRendererStore: WorkbenchStore<FileRendererStoreState>;
531
- registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
532
- setFileRendererImplementation(impl: FileRendererImplementation): void;
533
- getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
534
- listFileRenderers(): RegisteredFileRendererContribution[];
535
- refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
536
- onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
537
- }
538
-
539
- declare interface FileRendererSaveResult {
540
- revision?: string;
541
- }
542
-
543
- declare interface FileRendererStoreState {
544
- renderers: Record<string, RegisteredFileRendererContribution>;
545
- }
546
-
547
- declare interface HistoryController {
548
- store: WorkbenchStore<HistoryStoreState>;
549
- /** Snapshot the history for a compound navigation; the returned function restores it. */
550
- createCheckpoint(): () => void;
551
- goBack(): HistoryEntry | undefined;
552
- goForward(): HistoryEntry | undefined;
553
- goPrevious(): HistoryEntry | undefined;
554
- recentlyClosed(): readonly HistoryEntry[];
555
- reopenLastClosed(): HistoryEntry | undefined;
556
- setPersistenceScope(scope: string | undefined): void;
557
- getPersistenceScope(): string | undefined;
558
- restore(): HistoryEntry | undefined;
559
- flush(): void;
560
- clear(): void;
561
- migrateState(transform: (state: HistoryStoreState) => HistoryStoreState): void;
562
- }
563
-
564
- declare type HistoryEntry = WorkbenchNavigationEntry;
565
-
566
- declare interface HistoryStoreState {
567
- entries: readonly WorkbenchNavigationEntry[];
568
- cursor: number;
569
- recentlyClosed: readonly WorkbenchNavigationEntry[];
570
- hydrating: boolean;
571
- }
572
-
573
- declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> {
574
- id: string;
575
- title: string;
576
- resourceKind?: string;
577
- /** Host-owned scope for persisted display settings. */
578
- storageScope?: string;
579
- /**
580
- * Declarative attribute schema. The renderer dispatches filter / group /
581
- * sort / display / inline-edit behavior on each descriptor's `type.kind`.
582
- *
583
- * Pass an `AttributesSource` ({ subscribe, getSnapshot }) instead of a
584
- * static array to let the contribution mutate its schema at runtime —
585
- * `WorkbenchKanbanView` subscribes so additions / removals / kind changes
586
- * propagate live without re-registering the renderer.
587
- */
588
- attributes: AttributeDescriptor[] | AttributesSource;
589
- /** Per-board-column overrides (color, drag/create rules, custom actions). */
590
- getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
591
- hideToolbar?: boolean;
592
- emptyTitle?: string;
593
- emptyDescription?: string;
594
- /** Initial settings/filters applied when the kanban renderer mounts. */
595
- defaultSettings?: Partial<KanbanRendererSettings>;
596
- defaultFilters?: KanbanRendererFilterState;
597
- defaultViews?: KanbanRendererSavedView[];
598
- defaultActiveViewId?: string;
599
- /**
600
- * Data source. Receives the current display state so backends can paginate
601
- * / filter / sort. The renderer re-applies filter / sort / group locally,
602
- * so this can return unfiltered rows in simple cases.
603
- */
604
- executeQuery(state: KanbanRendererQueryState): Promise<TRow[]> | TRow[];
605
- subscribe?: (listener: () => void) => Disposable_2 | (() => void);
606
- /** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
607
- onRowActivate?: (row: TRow) => Promise<void> | void;
608
- /** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
609
- getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
610
- /**
611
- * Fires for inline attribute edits AND for cross-column drag-to-reorder on
612
- * the board (the renderer passes the grouping attribute id + the target
613
- * column value).
614
- */
615
- onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
616
- /** Manual within-column reorder (only fires when ordering is manual). */
617
- onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
618
- createRow?: KanbanRendererCreateRowConfig;
619
- onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
620
- onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
621
- }
622
-
623
- declare interface KanbanRendererCreateField {
624
- id: string;
625
- label: string;
626
- description?: string;
627
- placeholder?: string;
628
- type: KanbanRendererCreateFieldType;
629
- required?: boolean;
630
- defaultValue?: unknown;
631
- options?: EnumOption[];
632
- /** `files` fields only. */
633
- multiple?: boolean;
634
- accept?: string;
635
- }
636
-
637
- declare type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
638
-
639
- /** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */
640
- declare interface KanbanRendererCreateLabels {
641
- cancel: string;
642
- properties: string;
643
- submitError: string;
644
- removeFile: string;
645
- }
646
-
647
- declare interface KanbanRendererCreateRowConfig {
648
- title: string;
649
- submitLabel: string;
650
- fields: KanbanRendererCreateField[];
651
- labels: KanbanRendererCreateLabels;
652
- }
653
-
654
- declare interface KanbanRendererCreateSubmission {
655
- columnId: string;
656
- columnAttributeId?: string;
657
- /** Declared field values, excluding `files` fields — those arrive as `files`. */
658
- values: Record<string, unknown>;
659
- /** Every editable attribute the user set, keyed by attribute id. */
660
- attributeValues: Record<string, unknown>;
661
- files: File[];
662
- }
663
-
664
- declare type KanbanRendererFilterState = Record<string, string[]>;
665
-
666
- declare type KanbanRendererImplementation = (input: WorkbenchPanelRenderInput & {
667
- kanbanRendererId: string;
668
- }) => unknown;
669
-
670
- declare interface KanbanRendererOrdering {
671
- attributeId: string | typeof MANUAL_ORDERING;
672
- direction: SortDirection;
673
- }
674
-
675
- declare interface KanbanRendererQueryState {
676
- settings: KanbanRendererSettings;
677
- filters: KanbanRendererFilterState;
678
- }
679
-
680
- declare interface KanbanRendererRefreshEvent {
681
- kanbanRendererId: string;
682
- }
683
-
684
- declare type KanbanRendererRefreshListener = (event: KanbanRendererRefreshEvent) => void;
685
-
686
- declare interface KanbanRendererRegistry {
687
- dataStore: WorkbenchStore<KanbanRendererStoreState>;
688
- registerKanbanRenderer<TRow extends KanbanRendererRow = KanbanRendererRow>(contribution: KanbanRendererContribution<TRow>, metadata?: ContributionMetadata): Disposable_2;
689
- setKanbanRendererImplementation(impl: KanbanRendererImplementation): void;
690
- getKanbanRenderer(id: string): RegisteredKanbanRendererContribution | undefined;
691
- listKanbanRenderers(): RegisteredKanbanRendererContribution[];
692
- refreshKanbanRenderer(id: string): void;
693
- onDidRefreshKanbanRenderer(listener: KanbanRendererRefreshListener): Disposable_2;
694
- }
695
-
696
- declare interface KanbanRendererRow {
697
- id: string;
698
- title: string;
699
- /**
700
- * Optional navigation handle. When set, the renderer's default click handler
701
- * routes through the contribution's onRowActivate (which typically opens the
702
- * resource via the workbench).
703
- */
704
- resource?: unknown;
705
- attributes: Record<string, unknown>;
706
- }
707
-
708
- declare interface KanbanRendererSavedView {
709
- id: string;
710
- title: string;
711
- settings: KanbanRendererSettings;
712
- filters: KanbanRendererFilterState;
713
- isDefault?: boolean;
714
- }
715
-
716
- declare interface KanbanRendererSettings {
717
- viewMode: ViewMode;
718
- columnGrouping: string | typeof NO_GROUPING;
719
- rowGrouping: string | typeof NO_GROUPING;
720
- ordering: KanbanRendererOrdering;
721
- displayProperties: string[];
722
- }
723
-
724
- declare interface KanbanRendererStoreState {
725
- renderers: Record<string, RegisteredKanbanRendererContribution>;
726
- }
727
-
728
- declare interface Keybinding {
729
- commandId: string;
730
- keybinding: KeybindingSequence;
731
- when?: string;
732
- args?: unknown;
733
- }
734
-
735
- declare interface KeybindingRegistry {
736
- store: WorkbenchStore<KeybindingRegistryStoreState>;
737
- registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable_2;
738
- listKeybindings(): RegisteredKeybinding[];
739
- listActiveKeybindings(): RegisteredKeybinding[];
740
- }
741
-
742
- declare interface KeybindingRegistryStoreState {
743
- keybindings: RegisteredKeybinding[];
744
- }
745
-
746
- declare type KeybindingSequence = string | string[];
747
-
748
- declare interface LayoutModel {
749
- store: WorkbenchStore<WorkbenchLayoutStoreState>;
750
- registerPlaceholder(placeholder: PlaceholderContribution, metadata?: ContributionMetadata): {
751
- dispose(): void;
752
- };
753
- registerPanel(panel: WorkbenchPanelContribution, metadata?: ContributionMetadata): {
754
- dispose(): void;
755
- };
756
- registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
757
- dispose(): void;
758
- };
759
- registerLocation(location: WorkbenchLocationContribution, metadata?: ContributionMetadata): {
760
- dispose(): void;
761
- };
762
- registerSubPanel(subPanel: WorkbenchSubPanelContribution, metadata?: ContributionMetadata): {
763
- dispose(): void;
764
- };
765
- registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
766
- dispose(): void;
767
- };
768
- unregisterWidget(id: string, options?: {
769
- removePlacements?: boolean;
770
- persist?: boolean;
771
- }): void;
772
- getPlaceholder(regionId: WorkbenchRegion): RegisteredPlaceholderContribution | undefined;
773
- getWidget(id: string): RegisteredWidgetContribution | undefined;
774
- getPanel(id: string): WorkbenchPanelContribution | undefined;
775
- getRegionSize(regionId: WorkbenchRegion): WorkbenchRegionSize | undefined;
776
- getRegionCollapsible(regionId: WorkbenchRegion): boolean;
777
- getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
778
- setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
779
- setRegionSize(regionId: WorkbenchRegion, size: number): void;
780
- listPlaceholders(): RegisteredPlaceholderContribution[];
781
- listWidgets(): RegisteredWidgetContribution[];
782
- listPanels(): WorkbenchPanelContribution[];
783
- listPanelInstances(region?: WorkbenchRegion): WorkbenchPanelInstance[];
784
- getActivePanel(region?: WorkbenchRegion): WorkbenchPanelInstance | undefined;
785
- openWidget(id: string, input?: OpenWidgetInput): WorkbenchWidgetPlacement;
786
- openPanel(id: string, input?: OpenWorkbenchPanelInput): WorkbenchPanelInstance;
787
- updatePanel(instanceId: string, input: OpenWorkbenchPanelInput): WorkbenchPanelInstance;
788
- reorderPanel(instanceId: string, position: WorkbenchTabPosition): void;
789
- activatePanel(instanceId: string): WorkbenchPanelInstance;
790
- closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
791
- updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
792
- reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
793
- expirePreviewTabs(ownerResourceUri?: string): void;
794
- activateWidget(widgetId: string): WorkbenchWidgetPlacement;
795
- setRegionActiveWidget(regionId: WorkbenchRegion, widgetId: string | undefined): void;
796
- closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
797
- removeWidgetPlacement(widgetId: string): WorkbenchWidgetPlacement | undefined;
798
- clearRegion(regionId: WorkbenchRegion): void;
799
- resetRegions(): void;
800
- getLayout(): WorkbenchLayout;
801
- restoreLayout(layout: WorkbenchLayout): void;
802
- setPersistenceScope(scope: LayoutScope | undefined, input?: {
803
- carryRegionState?: readonly WorkbenchRegion[];
804
- }): void;
805
- getPersistenceScope(): LayoutScope | undefined;
806
- /** True when the current persistence scope already stores a layout. A new scope returns false. */
807
- /** Whether anything is stored for the active scope right now. */
808
- hasPersistedLayout(): boolean;
809
- /**
810
- * Whether the active scope was entered with a layout the user already had. Unlike
811
- * `hasPersistedLayout`, writes made while entering a mode do not change the answer.
812
- */
813
- enteredWithPersistedLayout(): boolean;
814
- /** Moves owned panel menus beside their owner's current region and removes orphan menus. */
815
- reconcilePanelMenus(): void;
816
- onWillChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
817
- dispose(): void;
818
- };
819
- onDidChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
820
- dispose(): void;
821
- };
822
- }
823
-
824
- declare type LayoutScope = string;
825
-
826
- declare const MANUAL_ORDERING = "manual";
827
-
828
- declare interface MenuItem {
829
- commandId: string;
830
- sourceCommandId?: string;
831
- label?: string;
832
- description?: string;
833
- icon?: string;
834
- iconSrc?: string;
835
- overflowLabel?: string;
836
- when?: string;
837
- group?: string;
838
- order?: number;
839
- args?: unknown;
840
- readOnly?: boolean;
841
- /** Marks a menu action that navigates outside the app, rendered with a trailing external-link icon. */
842
- external?: boolean;
843
- }
844
-
845
- declare type MenuPath = readonly string[];
846
-
847
- declare interface MenuRegistry {
848
- menuStore: WorkbenchStore<MenuRegistryStoreState>;
849
- registerMenuItem(path: MenuPath, item: MenuItem, metadata?: ContributionMetadata): Disposable_2;
850
- listMenuItems(path: MenuPath): RegisteredMenuItem[];
851
- }
852
-
853
- declare interface MenuRegistryStoreState {
854
- itemsByPath: Record<string, RegisteredMenuItem[]>;
855
- }
856
-
857
- declare interface NavigationParser {
858
- id: string;
859
- priority?: number;
860
- canParse(location: string): boolean;
861
- parse(location: string): NavigationTarget;
862
- }
863
-
864
- declare interface NavigationRegistry {
865
- store: WorkbenchStore<NavigationRegistryStoreState>;
866
- registerParser(parser: NavigationParser, metadata?: ContributionMetadata): Disposable_2;
867
- listParsers(): RegisteredNavigationParser[];
868
- resolveLocation(location: string): NavigationTarget;
869
- openTarget(target: NavigationTarget): Promise<readonly unknown[]>;
870
- navigate(location: string): Promise<readonly unknown[]>;
871
- registerNavigator(navigator: ResourceNavigator, metadata?: ContributionMetadata): Disposable_2;
872
- listNavigators(): RegisteredResourceNavigator[];
873
- createHref(resource: ResourceRef): string;
874
- navigateResource(resource: ResourceRef): Promise<unknown>;
875
- }
876
-
877
- declare interface NavigationRegistryStoreState {
878
- parsers: Record<string, RegisteredNavigationParser>;
879
- navigators: Record<string, RegisteredResourceNavigator>;
880
- }
881
-
882
- declare type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
883
-
884
- declare interface NavigationTargetCommand {
885
- kind: "command";
886
- commandId: string;
887
- args?: unknown;
888
- }
889
-
890
- declare interface NavigationTargetCompound {
891
- kind: "compound";
892
- targets: readonly NavigationTargetItem[];
893
- }
894
-
895
- declare interface NavigationTargetHref {
896
- kind: "href";
897
- href: string;
898
- }
899
-
900
- declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
901
-
902
- declare interface NavigationTargetPanel {
903
- kind: "panel";
904
- panelId: string;
905
- input?: OpenWorkbenchPanelInput;
906
- }
907
-
908
- declare interface NavigationTargetResource {
909
- kind: "resource";
910
- resource: ResourceRef;
911
- input?: OpenResourceInput;
912
- }
913
-
914
- declare interface NavigationTargetView {
915
- kind: "view";
916
- viewId: string;
917
- input?: OpenWorkbenchViewInput;
918
- }
919
-
920
- declare const NO_GROUPING = "none";
921
-
922
- declare interface NotificationRegistry {
923
- store: WorkbenchStore<WorkbenchNotificationStoreState>;
924
- show(notification: WorkbenchNotification, metadata?: ContributionMetadata): RegisteredWorkbenchNotification;
925
- dismiss(id: string): boolean;
926
- clear(): void;
927
- listNotifications(): RegisteredWorkbenchNotification[];
928
- subscribe(listener: WorkbenchNotificationListener): Disposable_2;
929
- }
930
-
931
- declare interface OpenResourceInput {
932
- replaceActive?: boolean;
933
- }
934
-
935
- declare interface OpenWidgetInput {
936
- viewId?: string | null;
937
- resource?: ResourceRef | null;
938
- title?: string;
939
- region?: WorkbenchRegion;
940
- role?: WorkbenchWidgetRole;
941
- ownerId?: string;
942
- source?: ContributionSource;
943
- pinned?: boolean;
944
- closable?: boolean;
945
- mountStrategy?: WidgetMountStrategy;
946
- hiddenByDefault?: boolean;
947
- tabRetention?: WorkbenchTabRetention;
948
- tabPosition?: WorkbenchTabPosition;
949
- tab?: WorkbenchWidgetTab;
950
- replaceActive?: boolean;
951
- replaceWidgetId?: string;
952
- }
953
-
954
- declare interface OpenWorkbenchPanelInput {
955
- /** Set by the view registry. Low-level layout callers should leave this undefined. */
956
- viewId?: string | null;
957
- /** `null` explicitly clears an existing singleton placement's resource binding. */
958
- resource?: ResourceRef | null;
959
- title?: string;
960
- region?: WorkbenchRegion;
961
- role?: WorkbenchWidgetRole;
962
- pinned?: boolean;
963
- closable?: boolean;
964
- mountStrategy?: WorkbenchPanelMountStrategy;
965
- hiddenByDefault?: boolean;
966
- tab?: WorkbenchPanelTab;
967
- strategy?: WorkbenchPanelOpenStrategy;
968
- }
969
-
970
- declare type OpenWorkbenchViewInput = Omit<OpenWorkbenchPanelInput, "viewId">;
971
-
972
- declare interface PlaceholderContribution {
973
- id: string;
974
- title: string;
975
- region: WorkbenchRegion;
976
- rendererId: string;
977
- regionSize?: WorkbenchRegionSize;
978
- regionCollapsible?: boolean;
979
- config?: unknown;
980
- priority?: number;
981
- }
982
-
983
- declare interface PreferencePropertySchema {
984
- type: "boolean" | "number" | "string" | "array" | "object";
985
- enum?: PreferenceValue[];
986
- default?: PreferenceValue;
987
- scope: PreferenceScope;
988
- description?: string;
989
- }
990
-
991
- declare interface PreferenceRegistry {
992
- store: WorkbenchStore<PreferenceRegistryStoreState>;
993
- registerSchema(schema: PreferenceSchemaContribution, metadata?: ContributionMetadata): Disposable_2;
994
- getSchema(name: string): RegisteredPreferenceSchema | undefined;
995
- setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
996
- getValue(name: string, scope?: PreferenceScopeRef): PreferenceValue | undefined;
997
- }
998
-
999
- declare interface PreferenceRegistryStoreState {
1000
- schemas: Record<string, RegisteredPreferenceSchema>;
1001
- }
1002
-
1003
- declare interface PreferenceSchemaContribution {
1004
- properties: Record<string, PreferencePropertySchema>;
1005
- }
1006
-
1007
- declare type PreferenceScope = "default" | "user" | "project" | "repo" | "workspace" | "extension" | "session";
1008
-
1009
- declare interface PreferenceScopeRef {
1010
- scope: PreferenceScope;
1011
- scopeId?: string;
1012
- }
1013
-
1014
- declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
1015
-
1016
- export declare const primaryPlacements: (workbench: WorkbenchCore) => WorkbenchPanelInstance_2[];
1017
-
1018
- declare interface RegisteredCommand extends RegisteredContributionMetadata {
1019
- command: Command;
1020
- handler: CommandHandler;
1021
- }
1022
-
1023
- declare interface RegisteredContributionMetadata {
1024
- source: ContributionSource;
1025
- ownerId: string;
1026
- priority: number;
1027
- }
1028
-
1029
- declare interface RegisteredControlsRendererContribution extends ControlsRendererContribution, RegisteredContributionMetadata {
1030
- }
1031
-
1032
- declare interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {
1033
- }
1034
-
1035
- declare interface RegisteredFileRendererContribution extends FileRendererContribution, RegisteredContributionMetadata {
1036
- }
1037
-
1038
- declare interface RegisteredKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> extends KanbanRendererContribution<TRow>, RegisteredContributionMetadata {
1039
- }
1040
-
1041
- declare interface RegisteredKeepAliveHost {
1042
- rendererId: string;
1043
- host: HTMLElement;
1044
- attachedTo?: HTMLElement;
1045
- }
1046
-
1047
- declare interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {
1048
- }
1049
-
1050
- declare interface RegisteredMenuItem extends MenuItem, RegisteredContributionMetadata {
1051
- path: MenuPath;
1052
- }
1053
-
1054
- declare type RegisteredNavigationParser = Omit<NavigationParser, "priority"> & RegisteredContributionMetadata;
1055
-
1056
- declare type RegisteredPlaceholderContribution = Omit<PlaceholderContribution, "priority"> & RegisteredContributionMetadata;
1057
-
1058
- declare type RegisteredPreferenceSchema = PreferencePropertySchema & {
1059
- ownerId: string;
1060
- source: string;
1061
- };
1062
-
1063
- declare interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {
1064
- }
1065
-
1066
- declare type RegisteredResourceNavigator = Omit<ResourceNavigator, "priority"> & RegisteredContributionMetadata;
1067
-
1068
- declare type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
1069
-
1070
- declare type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
1071
-
1072
- declare interface RegisteredTreeRendererContribution extends TreeRendererContribution, RegisteredContributionMetadata {
1073
- }
1074
-
1075
- declare type RegisteredWidgetContribution = Omit<WidgetContribution, "priority" | "singleton" | "reuse"> & {
1076
- ownedPanelMenuIds?: readonly string[];
1077
- singleton: boolean;
1078
- reuse: WidgetReusePolicy;
1079
- } & RegisteredContributionMetadata;
1080
-
1081
- declare interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
1082
- id: string;
1083
- level: WorkbenchNotificationLevel;
1084
- title: string;
1085
- message?: string;
1086
- createdAt: string;
1087
- resource?: ResourceRef;
1088
- actions?: WorkbenchNotificationAction[];
1089
- metadata?: Record<string, unknown>;
1090
- }
1091
-
1092
- declare type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
1093
-
1094
- declare type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
1095
-
1096
- declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
1097
-
1098
- declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
1099
- priority: number;
1100
- };
1101
-
1102
- declare interface ResourceBrowseEntry {
1103
- resource: ResourceRef;
1104
- searchText?: string;
1105
- description?: string;
1106
- group?: string;
1107
- order?: number;
1108
- activate?: (resource: ResourceRef) => unknown | Promise<unknown>;
1109
- }
1110
-
1111
- /** Row-level context menu action surfaced by the renderer. */
1112
- declare interface ResourceContextAction {
1113
- key: string;
1114
- label: string;
1115
- onClick: () => Promise<void> | void;
1116
- isDisabled?: boolean;
1117
- icon?: ReactNode;
1118
- endContent?: ReactNode;
1119
- separatorBefore?: boolean;
1120
- }
1121
-
1122
- declare interface ResourceHierarchyCycle {
1123
- code: typeof resourceHierarchyCycleCode;
1124
- path: WorkbenchHierarchyNode[];
1125
- repeatedUri: string;
1126
- }
1127
-
1128
- declare const resourceHierarchyCycleCode = "resource_hierarchy_cycle";
1129
-
1130
- declare interface ResourceHierarchyProvider {
1131
- id: string;
1132
- priority?: number;
1133
- canResolve(resource: ResourceRef): boolean;
1134
- getParent(resource: ResourceRef): WorkbenchHierarchyNode | undefined;
1135
- }
1136
-
1137
- declare interface ResourceKindContribution {
1138
- kind: string;
1139
- label: string;
1140
- icon?: string;
1141
- surface?: ResourceSurface;
1142
- paletteOpenInput?: OpenResourceInput;
1143
- }
1144
-
1145
- declare interface ResourceListContext {
1146
- primary?: ResourceRef;
1147
- }
1148
-
1149
- declare interface ResourceNavigator<TResult = unknown> {
1150
- id: string;
1151
- priority?: number;
1152
- canNavigate(resource: ResourceRef): boolean;
1153
- createHref?(resource: ResourceRef): string;
1154
- navigate(resource: ResourceRef): TResult | Promise<TResult>;
1155
- }
1156
-
1157
- declare interface ResourcePresenter {
1158
- id: string;
1159
- priority?: number;
1160
- canOpen(resource: ResourceRef): boolean;
1161
- open(resource: ResourceRef, input: OpenResourceInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
1162
- afterOpen?(resource: ResourceRef, instance: WorkbenchPanelInstance, input: OpenResourceInput): void;
1163
- }
1164
-
1165
- declare interface ResourceProvider {
1166
- id: string;
1167
- kind: string;
1168
- list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
1169
- }
1170
-
1171
- declare interface ResourceRef {
1172
- kind: string;
1173
- uri: string;
1174
- id?: string;
1175
- label?: string;
1176
- icon?: string;
1177
- metadata?: Record<string, unknown>;
1178
- }
1179
-
1180
- declare interface ResourceRef_2 {
1181
- kind: string;
1182
- uri: string;
1183
- id?: string;
1184
- label?: string;
1185
- icon?: string;
1186
- metadata?: Record<string, unknown>;
1187
- }
1188
-
1189
- declare interface ResourceRegistry {
1190
- store: WorkbenchStore<ResourceRegistryStoreState>;
1191
- registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable_2;
1192
- getKind(kind: string): RegisteredResourceKind | undefined;
1193
- getSurface(resource: ResourceRef): ResourceSurface | undefined;
1194
- listKinds(): RegisteredResourceKind[];
1195
- registerPresenter(presenter: ResourcePresenter): Disposable_2;
1196
- listPresenters(): ResolvedResourcePresenter[];
1197
- registerProvider(provider: ResourceProvider): Disposable_2;
1198
- listProviders(): ResourceProvider[];
1199
- listResources(query: string): readonly ResourceBrowseEntry[];
1200
- registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable_2;
1201
- listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
1202
- walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
1203
- onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
1204
- isOpeningResource(): boolean;
1205
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
1206
- onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
1207
- }
1208
-
1209
- declare interface ResourceRegistryStoreState {
1210
- kinds: Record<string, RegisteredResourceKind>;
1211
- presenters: Record<string, ResolvedResourcePresenter>;
1212
- providers: Record<string, ResourceProvider>;
1213
- hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
1214
- }
1215
-
1216
- export declare interface ResourceRouteContract {
1217
- name: string;
1218
- setup: () => RouteContractHarness | Promise<RouteContractHarness>;
1219
- root: ResourceRef;
1220
- detail: ResourceRef;
1221
- detailB?: ResourceRef;
1222
- rootDetailHistory: "retained" | "replaced";
1223
- expectedMode?: string;
1224
- }
1225
-
1226
- declare type ResourceSurface = "primary" | "secondary" | "attached";
1227
-
1228
- export declare interface RouteContractHarness {
1229
- workbench: WorkbenchCore;
1230
- dispose?: () => void;
1231
- }
1232
-
1233
- /** Auto-rendered as a param editor from the registered preference schema. */
1234
- declare interface SchemaSettingsPanel extends SettingsPanelBase {
1235
- kind: "schema";
1236
- preferences: SettingsPanelPreference[];
1237
- /** "live" persists on change (default); "apply" stages edits behind Save/Discard. */
1238
- save?: "live" | "apply";
1239
- }
1240
-
1241
- /** A "+ create"-style action surfaced on a section or a collection's parent node. */
1242
- declare interface SettingsAction {
1243
- id: string;
1244
- label: string;
1245
- icon?: string;
1246
- run(): void | Promise<void>;
1247
- }
1248
-
1249
- declare interface SettingsCollectionGroupBy<TItem> {
1250
- key(item: TItem): string;
1251
- order?: string[];
1252
- label(key: string): string;
1253
- icon?(key: string): string | undefined;
1254
- }
1255
-
1256
- declare interface SettingsPanelBase {
1257
- id: string;
1258
- title: string;
1259
- description?: string;
1260
- /** Section id this panel belongs to. */
1261
- section?: string;
1262
- icon?: string;
1263
- /** Lower sorts first; ties fall back to contribution priority then registration order. */
1264
- order?: number;
1265
- scope?: SettingsScope;
1266
- when?: string;
1267
- }
1268
-
1269
- declare type SettingsPanelContribution = SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel;
1270
-
1271
- /** A preference this panel edits; a bare string uses the preference name as its label. */
1272
- declare type SettingsPanelPreference = string | {
1273
- name: string;
1274
- label?: string;
1275
- };
1276
-
1277
- declare interface SettingsRegistry {
1278
- store: WorkbenchStore<SettingsRegistryStoreState>;
1279
- registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable_2;
1280
- registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1281
- getSection(id: string): RegisteredSettingsSection | undefined;
1282
- getPanel(id: string): RegisteredSettingsPanel | undefined;
1283
- listSections(): RegisteredSettingsSection[];
1284
- listPanels(): RegisteredSettingsPanel[];
1285
- /** Signal that a collection's backing data changed so the surface refreshes. */
1286
- refresh(): void;
1287
- }
1288
-
1289
- declare interface SettingsRegistryStoreState {
1290
- sections: Record<string, RegisteredSettingsSection>;
1291
- panels: Record<string, RegisteredSettingsPanel>;
1292
- /** Bumped by refresh() so the surface re-reads collection items() after backing data changes. */
1293
- revision: number;
1294
- }
1295
-
1296
- /** Settings are stored either per-user (global) or per-project. Projectless surfaces show only global entries. */
1297
- declare type SettingsScope = "global" | "project";
1298
-
1299
- /** An ordered sidenav container. Headerless when `title` is omitted. */
1300
- declare interface SettingsSectionContribution {
1301
- id: string;
1302
- title?: string;
1303
- order?: number;
1304
- scope?: SettingsScope;
1305
- actions?: SettingsAction[];
1306
- }
1307
-
1308
- declare type SortDirection = "asc" | "desc";
1309
-
1310
- /**
1311
- * Core-owned contract for theme registrations. Structurally identical to
1312
- * @pstdio/ui's ThemePreferenceOption; the React layer bridges the two so core
1313
- * does not depend on UI package ownership.
1314
- */
1315
- declare type ThemePreference = string;
1316
-
1317
- declare type ThemePreferenceMode = "light" | "dark";
1318
-
1319
- declare interface ThemePreferenceOption {
1320
- id: ThemePreference;
1321
- title?: string;
1322
- mode: ThemePreferenceMode;
1323
- tokens?: ThemePreferenceTokens;
1324
- monacoTheme?: unknown;
1325
- }
1326
-
1327
- declare type ThemePreferenceTokens = Record<string, string>;
1328
-
1329
- declare interface ThemeRegistry {
1330
- store: WorkbenchStore<WorkbenchThemeStoreState>;
1331
- register(themes: readonly ThemePreferenceOption[]): Disposable_2;
1332
- listThemes(): readonly ThemePreferenceOption[];
1333
- }
1334
-
1335
- declare interface TreeAction {
1336
- id: string;
1337
- label?: string;
1338
- icon?: string;
1339
- commandId?: string;
1340
- args?: unknown;
1341
- params?: CommandParamSchema;
1342
- submitLabel?: string;
1343
- when?: string;
1344
- disabled?: boolean;
1345
- run?(args?: unknown): Promise<void> | void;
1346
- }
1347
-
1348
- declare interface TreeContext {
1349
- filter?: string;
1350
- resource?: ResourceRef;
1351
- /** Widget/view contribution id for trees rendered through a view-backed widget. */
1352
- viewId?: string;
1353
- }
1354
-
1355
- declare interface TreeNode {
1356
- id: string;
1357
- label: string;
1358
- icon?: string;
1359
- iconElement?: unknown;
1360
- iconColor?: string;
1361
- iconTooltip?: string;
1362
- endContent?: unknown;
1363
- commandId?: string;
1364
- resource?: ResourceRef;
1365
- target?: NavigationTarget;
1366
- /** Visual row variant for non-data rows such as placeholders. */
1367
- rowVariant?: TreeNodeRowVariant;
1368
- inlineInput?: TreeNodeInlineInput;
1369
- actions?: TreeAction[];
1370
- contextMenuActions?: TreeAction[];
1371
- contextMenuPath?: MenuPath;
1372
- menuPath?: MenuPath;
1373
- menuPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "left-start";
1374
- showContextMenuTrigger?: boolean;
1375
- collapsible?: boolean;
1376
- disabled?: boolean;
1377
- children?: TreeNode[];
1378
- description?: string;
1379
- contextValue?: string;
1380
- hiddenByDefault?: boolean;
1381
- /** When true, the node (e.g. a header/footer row) opts in to the tree's hide/show customization menu. */
1382
- canHide?: boolean;
1383
- /** When false, the node stays fixed within its Sidenav group. */
1384
- canReorder?: boolean;
1385
- /** Allow this node to be moved to another tree location. */
1386
- canDrag?: boolean;
1387
- /** Allow movable nodes to be dropped on this node. */
1388
- canDrop?: boolean;
1389
- }
1390
-
1391
- declare interface TreeNodeInlineInput {
1392
- ariaLabel: string;
1393
- defaultValue?: string;
1394
- placeholder?: string;
1395
- onCommit(value: string): Promise<void> | void;
1396
- onCancel?(): void;
1397
- }
1398
-
1399
- declare type TreeNodeRowVariant = "empty-state";
1400
-
1401
- declare interface TreeRendererContribution {
1402
- id: string;
1403
- title: string;
1404
- icon?: string;
1405
- searchable?: boolean;
1406
- searchPlaceholder?: string;
1407
- when?: string;
1408
- defaultExpandedSectionIds?: string[];
1409
- defaultExpandedNodeIds?: string[];
1410
- getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1411
- getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1412
- getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1413
- getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1414
- moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
1415
- }
1416
-
1417
- declare type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
1418
- treeId: string;
1419
- }) => unknown;
1420
-
1421
- declare interface TreeRendererRefreshEvent {
1422
- treeId: string;
1423
- }
1424
-
1425
- declare type TreeRendererRefreshListener = (event: TreeRendererRefreshEvent) => void;
1426
-
1427
- declare interface TreeRendererRegistry {
1428
- treeStore: WorkbenchStore<TreeRendererStoreState>;
1429
- registerTreeRenderer(view: TreeRendererContribution, metadata?: ContributionMetadata): Disposable_2;
1430
- setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1431
- getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1432
- listTreeRenderers(): RegisteredTreeRendererContribution[];
1433
- getBody(id: string, ctx?: TreeContext): Promise<TreeViewSection[]>;
1434
- getHeader(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1435
- getFooter(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1436
- getChildren(id: string, node: TreeNode, ctx?: TreeContext): Promise<TreeNode[]>;
1437
- getTreeState(id: string): TreeRendererState;
1438
- setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1439
- setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
1440
- setSelectedNode(id: string, nodeId: string | undefined): void;
1441
- setLoading(id: string, loading: boolean): void;
1442
- refresh(id: string): void;
1443
- onDidRefresh(listener: TreeRendererRefreshListener): Disposable_2;
1444
- }
1445
-
1446
- declare interface TreeRendererState {
1447
- expandedNodeIds: string[];
1448
- expandedSectionIds: string[];
1449
- selectedNodeId?: string;
1450
- loading?: boolean;
1451
- }
1452
-
1453
- declare interface TreeRendererStoreState {
1454
- trees: Record<string, RegisteredTreeRendererContribution>;
1455
- statesByTreeId: Record<string, TreeRendererState>;
1456
- refreshKeysByTreeId: Record<string, number>;
1457
- }
1458
-
1459
- declare interface TreeSectionEmptyState {
1460
- title: string;
1461
- description?: string;
1462
- icon?: string;
1463
- }
1464
-
1465
- declare interface TreeViewSection {
1466
- id: string;
1467
- label?: string;
1468
- actions?: TreeAction[];
1469
- collapsible?: boolean;
1470
- emptyState?: TreeSectionEmptyState;
1471
- nodes: TreeNode[];
1472
- hiddenByDefault?: boolean;
1473
- /** When true, the section (category) opts in to the tree's hide/show customization menu. */
1474
- canHide?: boolean;
1475
- /** When false, the section stays fixed within the Sidenav main region. */
1476
- canReorder?: boolean;
1477
- }
1478
-
1479
- export declare const unpinnedPrimaryPlacements: (workbench: WorkbenchCore) => WorkbenchPanelInstance_2[];
1480
-
1481
- /**
1482
- * Core-owned contracts for kanban renderer contributions. @pstdio/ui's
1483
- * KanbanRenderer props are structurally identical; the React layer bridges the
1484
- * two, so drift surfaces as a compile error there instead of coupling core's
1485
- * API shape to UI package ownership.
1486
- */
1487
- declare type ViewMode = "board" | "list";
1488
-
1489
- declare interface WidgetContribution {
1490
- id: string;
1491
- title: string;
1492
- icon?: string;
1493
- region: WorkbenchRegion;
1494
- fallbackRegion?: WorkbenchRegion;
1495
- singleton?: boolean;
1496
- reuse?: WidgetReusePolicy;
1497
- mountStrategy?: WidgetMountStrategy;
1498
- closable?: boolean;
1499
- hiddenByDefault?: boolean;
1500
- subPanelsOnly?: boolean;
1501
- regionSize?: WorkbenchRegionSize;
1502
- regionCollapsible?: boolean;
1503
- headerBorderBottom?: boolean;
1504
- floatingPanels?: WorkbenchFloatingPanelVisibility;
1505
- resourceKinds?: string[];
1506
- priority?: number;
1507
- rendererId: string;
1508
- openCommandId?: string;
1509
- eligibleLocations?: WorkbenchLocationEligibility;
1510
- panelMenuOwner?: WorkbenchPanelMenuOwner;
1511
- tab?: WorkbenchWidgetTab;
1512
- config?: unknown;
1513
- canOpen?(resource: ResourceRef): boolean;
1514
- }
1515
-
1516
- declare type WidgetMountStrategy = "active" | "keep-mounted";
1517
-
1518
- declare type WidgetMountStrategy_2 = "active" | "keep-mounted";
1519
-
1520
- declare type WidgetReusePolicy = "resource" | "none";
1521
-
1522
- declare type WorkbenchBreadcrumbChangeListener = () => void;
1523
-
1524
- declare interface WorkbenchBreadcrumbController {
1525
- store: WorkbenchStore<WorkbenchBreadcrumbState>;
1526
- setItems(items: WorkbenchBreadcrumbItem[]): Disposable_2;
1527
- clearItems(): void;
1528
- getItems(): WorkbenchBreadcrumbItem[] | undefined;
1529
- onDidChange(listener: WorkbenchBreadcrumbChangeListener): Disposable_2;
1530
- }
1531
-
1532
- declare interface WorkbenchBreadcrumbItem {
1533
- title: unknown;
1534
- icon?: string;
1535
- indicator?: "session-status";
1536
- url?: string;
1537
- onClick?: () => void;
1538
- resource?: ResourceRef;
1539
- }
1540
-
1541
- declare interface WorkbenchBreadcrumbState {
1542
- items: WorkbenchBreadcrumbItem[] | undefined;
1543
- }
1544
-
1545
- declare interface WorkbenchClosedSubPanel {
1546
- region: WorkbenchPanelRegion;
1547
- reference: WorkbenchSubPanelRef;
1548
- resource?: ResourceRef;
1549
- title?: string;
1550
- }
1551
-
1552
- declare interface WorkbenchCommandExecutionContext {
1553
- resource?: ResourceRef;
1554
- source?: "panel-add";
1555
- }
1556
-
1557
- declare interface WorkbenchCommandExecutionError {
1558
- commandId: string;
1559
- args: unknown;
1560
- error: unknown;
1561
- }
1562
-
1563
- declare type WorkbenchCommandExecutionErrorListener = (event: WorkbenchCommandExecutionError) => void;
1564
-
1565
- declare type WorkbenchCommandPaletteChangeListener = (open: boolean) => void;
1566
-
1567
- declare interface WorkbenchCommandPaletteController {
1568
- store: WorkbenchStore<WorkbenchCommandPaletteState>;
1569
- isOpen(): boolean;
1570
- getView(): WorkbenchCommandPaletteView;
1571
- getInitialQuery(): string;
1572
- getParamsRequest(): WorkbenchCommandParamsRequest | null;
1573
- open(input?: WorkbenchCommandPaletteOpenInput): void;
1574
- close(): void;
1575
- toggle(): void;
1576
- requestParams(request: WorkbenchCommandParamsRequest): void;
1577
- clearParams(): void;
1578
- onDidChange(listener: WorkbenchCommandPaletteChangeListener): Disposable_2;
1579
- }
1580
-
1581
- declare interface WorkbenchCommandPaletteOpenInput {
1582
- view?: WorkbenchCommandPaletteView;
1583
- initialQuery?: string;
1584
- }
1585
-
1586
- declare interface WorkbenchCommandPaletteState {
1587
- open: boolean;
1588
- view: WorkbenchCommandPaletteView;
1589
- initialQuery: string;
1590
- paramsRequest: WorkbenchCommandParamsRequest | null;
1591
- }
1592
-
1593
- declare type WorkbenchCommandPaletteView = "main" | "theme" | "mode";
1594
-
1595
- declare interface WorkbenchCommandParamsRequest {
1596
- record: {
1597
- command: {
1598
- id: string;
1599
- label: string;
1600
- params?: CommandParamSchema;
1601
- };
1602
- };
1603
- label: string;
1604
- args?: unknown;
1605
- context?: WorkbenchCommandExecutionContext;
1606
- }
1607
-
1608
- declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
1609
- contribution: RegisteredWidgetContribution;
1610
- }
1611
-
1612
- declare interface WorkbenchCompositionController {
1613
- panelsFor(region: WorkbenchPanelRegion): WorkbenchCompositionRegionPanels;
1614
- }
1615
-
1616
- declare interface WorkbenchCompositionRegionPanels {
1617
- open: readonly WorkbenchWidgetPlacement[];
1618
- addable: readonly WorkbenchCompositionAddablePanel[];
1619
- closable: readonly string[];
1620
- }
1621
-
1622
- declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
1623
- host: WorkbenchHost;
1624
- layout: WorkbenchLayoutModel;
1625
- registerModule(module: WorkbenchModuleContribution): Disposable_2;
1626
- unregisterModule(moduleId: string): void;
1627
- }
1628
-
1629
- declare interface WorkbenchCoreContributionContext {
1630
- breadcrumbs: WorkbenchBreadcrumbController;
1631
- commandPalette: WorkbenchCommandPaletteController;
1632
- commandPaletteResources: CommandPaletteResourceRegistry;
1633
- commands: CommandRegistry;
1634
- composition: WorkbenchCompositionController;
1635
- context: ContextKeyService;
1636
- focus: WorkbenchFocusController;
1637
- history: HistoryController;
1638
- keybindings: KeybindingRegistry;
1639
- lastResource: WorkbenchLastResourceController;
1640
- layout: WorkbenchModuleLayoutModel;
1641
- modes: WorkbenchModeRegistry;
1642
- navigation: NavigationRegistry;
1643
- navigator: WorkbenchNavigator;
1644
- notifications: NotificationRegistry;
1645
- panels: WorkbenchPanelsController;
1646
- preferences: PreferenceRegistry;
1647
- renderers: WorkbenchRenderers;
1648
- resources: ResourceRegistry;
1649
- views: WorkbenchViewRegistry;
1650
- settings: SettingsRegistry;
1651
- statusBar: WorkbenchStatusBarRegistry;
1652
- statuses: WorkbenchStatusRegistry;
1653
- shell: WorkbenchShellController;
1654
- sidePanel: WorkbenchSidePanelController;
1655
- terminal: WorkbenchTerminalController;
1656
- themes: ThemeRegistry;
1657
- fileIconThemes: FileIconThemeRegistry;
1658
- getPrimaryResource(): ResourceRef | undefined;
1659
- onDidChangePrimaryResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1660
- getActiveResource(): ResourceRef | undefined;
1661
- onDidChangeActiveResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1662
- }
1663
-
1664
- declare interface WorkbenchFileIconThemeStoreState {
1665
- themes: readonly FileIconThemePreferenceOption[];
1666
- }
1667
-
1668
- declare type WorkbenchFloatingPanelVisibility = "visible" | "hidden";
1669
-
1670
- declare type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
1671
-
1672
- declare interface WorkbenchFocusController {
1673
- store: WorkbenchStore<WorkbenchFocusState>;
1674
- setActiveRegion(region: WorkbenchFocusRegionId): void;
1675
- clearFocus(): void;
1676
- getActiveRegion(): WorkbenchFocusRegionId | undefined;
1677
- onDidChange(listener: WorkbenchFocusChangeListener): Disposable_2;
1678
- }
1679
-
1680
- declare type WorkbenchFocusRegionId = (typeof workbenchFocusRegions)[number];
1681
-
1682
- declare const workbenchFocusRegions: readonly ["activity", "sidenav", "main", "secondary", "side", "status"];
1683
-
1684
- declare interface WorkbenchFocusState {
1685
- activeRegion: WorkbenchFocusRegionId | undefined;
1686
- }
1687
-
1688
- declare type WorkbenchHierarchyNode = ResourceRef | WorkbenchViewHierarchyNode;
1689
-
1690
- declare interface WorkbenchHost {
1691
- getSnapshot(): WorkbenchSnapshot;
1692
- restoreSnapshot(snapshot: WorkbenchSnapshot): void;
1693
- setPersistenceScope(scope: string | undefined, input?: {
1694
- carryRegions?: readonly WorkbenchRegion[];
1695
- }): void;
1696
- getPersistenceScope(): string | undefined;
1697
- }
1698
-
1699
- declare interface WorkbenchLastResourceController {
1700
- get(): ResourceRef | undefined;
1701
- set(resource: ResourceRef | undefined): void;
1702
- restore(): Promise<boolean>;
1703
- }
1704
-
1705
- declare interface WorkbenchLayout {
1706
- regions: Record<WorkbenchRegion, WorkbenchRegionState>;
1707
- locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
1708
- activeWidgetId?: string;
1709
- activeLocationWidgetId?: string;
1710
- activeResourceUri?: string;
1711
- }
1712
-
1713
- declare type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
1714
-
1715
- declare interface WorkbenchLayoutStoreState {
1716
- layout: WorkbenchLayout;
1717
- widgets: Record<string, RegisteredWidgetContribution>;
1718
- placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;
1719
- }
1720
-
1721
- declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
1722
-
1723
- declare interface WorkbenchLocationEligibility {
1724
- modeIds?: string[];
1725
- resourceKinds?: string[];
1726
- resourceIds?: string[];
1727
- canOpen?(resource: ResourceRef): boolean;
1728
- canOpenLocation?(location: {
1729
- resource?: ResourceRef;
1730
- viewId?: string;
1731
- }): boolean;
1732
- }
1733
-
1734
- declare interface WorkbenchLocationRef {
1735
- key: string;
1736
- modeId?: string;
1737
- viewId?: string;
1738
- resource?: ResourceRef;
1739
- contributionId?: string;
1740
- instanceKey?: string;
1741
- title?: string;
1742
- }
1743
-
1744
- declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
1745
-
1746
- declare type WorkbenchModeActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
1747
-
1748
- declare interface WorkbenchModeAddablePanel {
1749
- panelId: string;
1750
- region: WorkbenchPanelRegion;
1751
- allowedRegions?: readonly WorkbenchRegion[];
1752
- pinned?: boolean;
1753
- }
1754
-
1755
- declare interface WorkbenchModeAddablePanelContext {
1756
- layout: WorkbenchLayout;
1757
- resource?: ResourceRef;
1758
- }
1759
-
1760
- declare type WorkbenchModeChangeListener = () => void;
1761
-
1762
- declare interface WorkbenchModeContribution {
1763
- id: string;
1764
- label?: string;
1765
- panels?: readonly WorkbenchPanelRegion[];
1766
- resourceKinds?: readonly string[];
1767
- defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
1768
- listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
1769
- activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
1770
- seed?(ctx: WorkbenchModeActivationContext): void;
1771
- enter?(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
1772
- reconcile?(ctx: WorkbenchModeActivationContext): void;
1773
- }
1774
-
1775
- declare interface WorkbenchModeRegistry {
1776
- store: WorkbenchStore<WorkbenchModeStoreState>;
1777
- dispose(): void;
1778
- registerMode(mode: WorkbenchModeContribution): Disposable_2;
1779
- getMode(id: string): WorkbenchModeContribution | undefined;
1780
- listModes(): WorkbenchModeContribution[];
1781
- getActiveModeId(): string | undefined;
1782
- isTransitioning(): boolean;
1783
- setActiveMode(id: string | undefined, input?: {
1784
- deferSeed?: boolean;
1785
- }): void;
1786
- seedActiveMode(): void;
1787
- onDidChangeActive(listener: WorkbenchModeChangeListener): Disposable_2;
1788
- }
1789
-
1790
- declare interface WorkbenchModeStoreState {
1791
- modes: Record<string, WorkbenchModeContribution>;
1792
- activeModeId: string | undefined;
1793
- }
1794
-
1795
- declare type WorkbenchModuleActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
1796
-
1797
- declare type WorkbenchModuleContext = WorkbenchCoreContributionContext;
1798
-
1799
- declare interface WorkbenchModuleContribution {
1800
- id: string;
1801
- source?: ContributionSource;
1802
- ownerId?: string;
1803
- activate(ctx: WorkbenchModuleContributionContext): WorkbenchModuleActivationResult;
1804
- }
1805
-
1806
- declare type WorkbenchModuleContributionContext = WorkbenchModuleContext;
1807
-
1808
- declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerWidget">;
1809
-
1810
- declare interface WorkbenchNavigationCommit {
1811
- modeId: string | undefined;
1812
- resource: ResourceRef | undefined;
1813
- replaceActive: boolean;
1814
- }
1815
-
1816
- declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
1817
-
1818
- declare interface WorkbenchNavigationEntry {
1819
- entryId: string;
1820
- recordedAt: number;
1821
- location: WorkbenchLocationRef;
1822
- selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
1823
- kind: "resource" | "view" | "widget" | "mode";
1824
- modeId?: string;
1825
- resource?: ResourceRef;
1826
- viewId?: string;
1827
- widgetId?: string;
1828
- contributionId?: string;
1829
- title?: string;
1830
- closedSubPanel?: WorkbenchClosedSubPanel;
1831
- }
1832
-
1833
- declare type WorkbenchNavigationResult = {
1834
- ok: true;
1835
- modeId: string | undefined;
1836
- resource: ResourceRef | undefined;
1837
- } | {
1838
- ok: false;
1839
- code: WorkbenchNavigationDiagnosticCode;
1840
- message: string;
1841
- };
1842
-
1843
- declare interface WorkbenchNavigationTarget {
1844
- modeId?: string;
1845
- resource?: ResourceRef;
1846
- replaceActive?: boolean;
1847
- }
1848
-
1849
- declare interface WorkbenchNavigator {
1850
- configure(hooks: WorkbenchNavigatorHostHooks): void;
1851
- getSelectedResource(): ResourceRef | undefined;
1852
- open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
1853
- commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
1854
- getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
1855
- forgetResource(uri: string): void;
1856
- onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
1857
- dispose(): void;
1858
- };
1859
- }
1860
-
1861
- declare interface WorkbenchNavigatorCommitInput {
1862
- modeId?: string | null;
1863
- resource?: ResourceRef | null;
1864
- replaceActive?: boolean;
1865
- present?: boolean;
1866
- }
1867
-
1868
- declare interface WorkbenchNavigatorHostHooks {
1869
- getProjectId?(): string | undefined;
1870
- getSelectedResource?(): ResourceRef | undefined;
1871
- interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
1872
- applySelection?(resource: ResourceRef | undefined): void;
1873
- applyScope?(commit: WorkbenchNavigationCommit): void;
1874
- applyBreadcrumb?(resource: ResourceRef | undefined): void;
1875
- presentResource?(resource: ResourceRef, input: {
1876
- replaceActive: boolean;
1877
- }): Promise<unknown> | unknown;
1878
- }
1879
-
1880
- declare interface WorkbenchNotification {
1881
- id?: string;
1882
- level: WorkbenchNotificationLevel;
1883
- title: string;
1884
- message?: string;
1885
- createdAt?: string;
1886
- resource?: ResourceRef;
1887
- actions?: WorkbenchNotificationAction[];
1888
- metadata?: Record<string, unknown>;
1889
- }
1890
-
1891
- declare interface WorkbenchNotificationAction {
1892
- commandId: string;
1893
- title: string;
1894
- args?: unknown;
1895
- }
1896
-
1897
- declare type WorkbenchNotificationEvent = {
1898
- type: "show";
1899
- id: string;
1900
- notification: RegisteredWorkbenchNotification;
1901
- } | {
1902
- type: "dismiss";
1903
- id: string;
1904
- };
1905
-
1906
- declare type WorkbenchNotificationLevel = "info" | "success" | "warning" | "error";
1907
-
1908
- declare type WorkbenchNotificationListener = (event: WorkbenchNotificationEvent) => void;
1909
-
1910
- declare interface WorkbenchNotificationStoreState {
1911
- notifications: Record<string, RegisteredWorkbenchNotification>;
1912
- }
1913
-
1914
- declare interface WorkbenchPanelContribution {
1915
- id: string;
1916
- title: string;
1917
- icon?: string;
1918
- region: WorkbenchRegion;
1919
- fallbackRegion?: WorkbenchRegion;
1920
- rendererId: string;
1921
- singleton?: boolean;
1922
- reuse?: WorkbenchPanelReusePolicy;
1923
- mountStrategy?: WorkbenchPanelMountStrategy;
1924
- hiddenByDefault?: boolean;
1925
- subPanelsOnly?: boolean;
1926
- regionSize?: WorkbenchRegionSize;
1927
- regionCollapsible?: boolean;
1928
- headerBorderBottom?: boolean;
1929
- floatingPanels?: WorkbenchFloatingPanelVisibility;
1930
- resourceKinds?: string[];
1931
- eligibleLocations?: WorkbenchLocationEligibility;
1932
- priority?: number;
1933
- openCommandId?: string;
1934
- tab?: WorkbenchPanelTab;
1935
- config?: unknown;
1936
- canOpen?(resource: ResourceRef): boolean;
1937
- ownerId?: string;
1938
- source?: ContributionSource;
1939
- panelMenus?: readonly WorkbenchPanelMenuDefinition[];
1940
- }
1941
-
1942
- declare interface WorkbenchPanelInstance {
1943
- instanceId: string;
1944
- panelId: string;
1945
- viewId?: string;
1946
- ownerId?: string;
1947
- source?: ContributionSource;
1948
- resource?: ResourceRef;
1949
- resourceUri?: string;
1950
- ownerResourceUri?: string;
1951
- title?: string;
1952
- pinned?: boolean;
1953
- closable: boolean;
1954
- mountStrategy?: WorkbenchPanelMountStrategy;
1955
- hiddenByDefault?: boolean;
1956
- tabRetention?: WorkbenchTabRetention;
1957
- tab?: WorkbenchPanelTab;
1958
- }
1959
-
1960
- declare interface WorkbenchPanelInstance_2 {
1961
- instanceId: string;
1962
- panelId: string;
1963
- viewId?: string;
1964
- ownerId?: string;
1965
- source?: ContributionSource_2;
1966
- resource?: ResourceRef_2;
1967
- resourceUri?: string;
1968
- ownerResourceUri?: string;
1969
- title?: string;
1970
- pinned?: boolean;
1971
- closable: boolean;
1972
- mountStrategy?: WorkbenchPanelMountStrategy_2;
1973
- hiddenByDefault?: boolean;
1974
- tabRetention?: WorkbenchTabRetention_2;
1975
- tab?: WorkbenchPanelTab_2;
1976
- }
1977
-
1978
- declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
1979
- region: WorkbenchPanelMenuRegion;
1980
- fallbackRegion?: WorkbenchPanelMenuRegion;
1981
- };
1982
-
1983
- declare interface WorkbenchPanelMenuDefinition {
1984
- id: string;
1985
- title: string;
1986
- icon?: string;
1987
- side: WorkbenchPanelMenuSide;
1988
- singleton?: boolean;
1989
- reuse?: WorkbenchPanelReusePolicy;
1990
- mountStrategy?: WorkbenchPanelMountStrategy;
1991
- hiddenByDefault?: boolean;
1992
- regionSize?: WorkbenchRegionSize;
1993
- regionCollapsible?: boolean;
1994
- headerBorderBottom?: boolean;
1995
- rendererId: string;
1996
- priority?: number;
1997
- config?: unknown;
1998
- }
1999
-
2000
- declare type WorkbenchPanelMenuOwner = {
2001
- level: "panel";
2002
- contributionId?: string;
2003
- } | {
2004
- level: "sub-panel";
2005
- contributionId: string;
2006
- };
2007
-
2008
- declare type WorkbenchPanelMenuRegion = (typeof workbenchPanelMenuRegions)[WorkbenchPanelRegion][WorkbenchPanelMenuSide];
2009
-
2010
- declare const workbenchPanelMenuRegions: {
2011
- readonly main: {
2012
- readonly left: "main-left-menu";
2013
- readonly right: "main-right-menu";
2014
- };
2015
- readonly secondary: {
2016
- readonly left: "secondary-left-menu";
2017
- readonly right: "secondary-right-menu";
2018
- };
2019
- readonly side: {
2020
- readonly left: "side-left-menu";
2021
- readonly right: "side-right-menu";
2022
- };
2023
- };
2024
-
2025
- declare interface WorkbenchPanelMenusContribution {
2026
- panelMenus?: readonly WorkbenchPanelMenuDefinition[];
2027
- }
2028
-
2029
- declare type WorkbenchPanelMenuSide = "left" | "right";
2030
-
2031
- declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
2032
-
2033
- declare type WorkbenchPanelMountStrategy_2 = WidgetMountStrategy_2;
2034
-
2035
- declare type WorkbenchPanelOpenStrategy = {
2036
- kind: "persistent";
2037
- position?: WorkbenchTabPosition;
2038
- } | {
2039
- kind: "replace-active";
2040
- } | {
2041
- kind: "replace-panel";
2042
- instanceId: string;
2043
- retention?: WorkbenchTabRetention;
2044
- } | {
2045
- kind: "preview";
2046
- position?: WorkbenchTabPosition;
2047
- };
2048
-
2049
- declare type WorkbenchPanelRegion = (typeof workbenchPanelRegions)[number];
2050
-
2051
- declare const workbenchPanelRegions: readonly ["main", "secondary", "side"];
2052
-
2053
- declare interface WorkbenchPanelRenderInput {
2054
- workbench: WorkbenchCore;
2055
- panel: WorkbenchPanelContribution | PlaceholderContribution | RegisteredPlaceholderContribution;
2056
- instance: WorkbenchPanelInstance;
2057
- refresh: () => void;
2058
- }
2059
-
2060
- declare type WorkbenchPanelReusePolicy = WidgetReusePolicy;
2061
-
2062
- declare type WorkbenchPanelsChangeListener = (state: WorkbenchPanelsState) => void;
2063
-
2064
- declare interface WorkbenchPanelsController {
2065
- store: WorkbenchStore<WorkbenchPanelsState>;
2066
- isOpen(regionId: string): boolean;
2067
- setOpen(regionId: string, open: boolean): void;
2068
- toggle(regionId: string): void;
2069
- setPersistenceScope(scope: string | undefined): void;
2070
- getPersistenceScope(): string | undefined;
2071
- onDidChange(listener: WorkbenchPanelsChangeListener): Disposable_2;
2072
- }
2073
-
2074
- declare interface WorkbenchPanelsState {
2075
- openByRegionId: Record<string, boolean>;
2076
- }
2077
-
2078
- declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2079
-
2080
- declare type WorkbenchPanelTab_2 = WorkbenchWidgetTab_2;
2081
-
2082
- declare type WorkbenchRegion = (typeof workbenchRegions)[number];
2083
-
2084
- declare const workbenchRegions: readonly ["nav", "activity", "sidenav-header", "sidenav", "main-header", "main-left-menu", "main", "main-right-menu", "secondary-header", "secondary-left-menu", "secondary", "secondary-right-menu", "side-header", "side-left-menu", "side", "side-right-menu", "status", "overlay"];
2085
-
2086
- declare interface WorkbenchRegionSize {
2087
- defaultPx?: number;
2088
- minPx?: number;
2089
- maxPx?: number;
2090
- }
2091
-
2092
- declare interface WorkbenchRegionState {
2093
- id: WorkbenchRegion;
2094
- visible: boolean;
2095
- size?: number;
2096
- widgets: WorkbenchWidgetPlacement[];
2097
- activeWidgetId?: string;
2098
- }
2099
-
2100
- declare type WorkbenchRendererChangeListener = () => void;
2101
-
2102
- declare type WorkbenchRendererRegistration = {
2103
- id: string;
2104
- keepAlive?: false;
2105
- render: (input: WorkbenchPanelRenderInput) => unknown;
2106
- } | {
2107
- id: string;
2108
- keepAlive: true;
2109
- render: () => unknown;
2110
- };
2111
-
2112
- declare interface WorkbenchRendererRegistry {
2113
- store: WorkbenchStore<WorkbenchRendererStoreState>;
2114
- registerRenderer(renderer: WorkbenchRendererRegistration): Disposable_2;
2115
- getRenderer(id: string): WorkbenchRendererRegistration | undefined;
2116
- listRenderers(): WorkbenchRendererRegistration[];
2117
- onDidChange(listener: WorkbenchRendererChangeListener): Disposable_2;
2118
- claim(rendererId: string, slot: HTMLElement, input: WorkbenchPanelRenderInput): Disposable_2;
2119
- getHost(rendererId: string): HTMLElement | undefined;
2120
- getClaim(rendererId: string): WorkbenchPanelRenderInput | undefined;
2121
- }
2122
-
2123
- declare type WorkbenchRenderers = WorkbenchRendererRegistry & TreeRendererRegistry & KanbanRendererRegistry & DataTableRendererRegistry & FileRendererRegistry & ControlsRendererRegistry;
2124
-
2125
- declare interface WorkbenchRendererStoreState {
2126
- renderers: Record<string, WorkbenchRendererRegistration>;
2127
- hosts: Record<string, RegisteredKeepAliveHost>;
2128
- claims: Record<string, WorkbenchPanelRenderInput>;
2129
- }
2130
-
2131
- declare interface WorkbenchShellController {
2132
- getRegionState(region: WorkbenchRegion): WorkbenchShellRegionState;
2133
- setRegionOpen(region: WorkbenchShellOpenRegion, open: boolean): void;
2134
- setRegionSize(region: WorkbenchRegion, size: number): void;
2135
- getSidePanelPresentation(): WorkbenchSidePanelPresentation;
2136
- setSidePanelPresentation(presentation: WorkbenchSidePanelPresentation): void;
2137
- onDidChange(listener: () => void): Disposable_2;
2138
- }
2139
-
2140
- declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | WorkbenchPanelMenuRegion;
2141
-
2142
- declare interface WorkbenchShellRegionState {
2143
- open: boolean;
2144
- size?: number;
2145
- }
2146
-
2147
- declare type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
2148
-
2149
- declare interface WorkbenchSidePanelController {
2150
- store: WorkbenchStore<WorkbenchSidePanelState>;
2151
- getMode(): WorkbenchSidePanelMode;
2152
- setMode(mode: WorkbenchSidePanelMode): void;
2153
- onDidChange(listener: WorkbenchSidePanelChangeListener): Disposable_2;
2154
- }
2155
-
2156
- declare type WorkbenchSidePanelMode = "floating" | "closed" | "attached";
2157
-
2158
- declare type WorkbenchSidePanelPresentation = WorkbenchSidePanelMode;
2159
-
2160
- declare interface WorkbenchSidePanelState {
2161
- mode: WorkbenchSidePanelMode;
2162
- }
2163
-
2164
- declare interface WorkbenchSnapshot {
2165
- layout: WorkbenchLayout;
2166
- }
2167
-
2168
- declare interface WorkbenchStatusBarItem {
2169
- id: string;
2170
- viewId: string;
2171
- slot: WorkbenchStatusBarSlot;
2172
- order?: number;
2173
- isVisible?(): boolean;
2174
- }
2175
-
2176
- declare interface WorkbenchStatusBarRegistry {
2177
- store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
2178
- registerItem(item: WorkbenchStatusBarItem): Disposable_2;
2179
- getItem(id: string): WorkbenchStatusBarItem | undefined;
2180
- listItems(): WorkbenchStatusBarItem[];
2181
- listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
2182
- }
2183
-
2184
- declare interface WorkbenchStatusBarRegistryState {
2185
- items: Record<string, WorkbenchStatusBarItem>;
2186
- }
2187
-
2188
- declare type WorkbenchStatusBarSlot = "leading" | "trailing";
2189
-
2190
- declare interface WorkbenchStatusRegistry {
2191
- store: WorkbenchStore<WorkbenchStatusRegistryState>;
2192
- registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable_2;
2193
- getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
2194
- listStatusSets(): RegisteredWorkbenchStatusSet[];
2195
- getStatuses(id: string): readonly WorkflowStatus[] | undefined;
2196
- load(id: string): Promise<readonly WorkflowStatus[]>;
2197
- query(id: string): Promise<readonly WorkflowStatus[]>;
2198
- save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
2199
- }
2200
-
2201
- declare interface WorkbenchStatusRegistryState {
2202
- statusSets: Record<string, RegisteredWorkbenchStatusSet>;
2203
- values: Record<string, readonly WorkflowStatus[]>;
2204
- }
2205
-
2206
- declare interface WorkbenchStatusSetContribution {
2207
- id: string;
2208
- title: string;
2209
- actions?: readonly WorkflowStatusAction[];
2210
- query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
2211
- save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
2212
- }
2213
-
2214
- declare interface WorkbenchStore<TState> {
2215
- getState(): TState;
2216
- getInitialState(): TState;
2217
- subscribe(listener: WorkbenchStoreListener<TState>): () => void;
2218
- subscribeSelector<TValue>(selector: WorkbenchStoreSelector<TState, TValue>, listener: WorkbenchStoreSelectorListener<TValue>, options?: {
2219
- equalityFn?: (left: TValue, right: TValue) => boolean;
2220
- fireImmediately?: boolean;
2221
- }): () => void;
2222
- }
2223
-
2224
- declare type WorkbenchStoreListener<TState> = (state: TState, previousState: TState) => void;
2225
-
2226
- declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
2227
-
2228
- declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
2229
-
2230
- declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2231
- region: WorkbenchPanelRegion;
2232
- fallbackRegion?: WorkbenchPanelRegion;
2233
- } & WorkbenchPanelMenusContribution;
2234
-
2235
- declare interface WorkbenchSubPanelRef {
2236
- contributionId: string;
2237
- resourceUri?: string;
2238
- instanceKey?: string;
2239
- }
2240
-
2241
- declare type WorkbenchTabPosition = "start" | "end" | {
2242
- beforeWidgetId: string;
2243
- } | {
2244
- afterWidgetId: string;
2245
- };
2246
-
2247
- declare type WorkbenchTabRetention = "preview" | "persistent";
2248
-
2249
- declare type WorkbenchTabRetention_2 = "preview" | "persistent";
2250
-
2251
- declare interface WorkbenchTerminalController {
2252
- store: WorkbenchStore<WorkbenchTerminalState>;
2253
- /** True once the host injected a session opener. */
2254
- isAvailable(): boolean;
2255
- setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
2256
- /** Opens a session; the live adapter stays host-side and only the id is returned. */
2257
- open(input: {
2258
- bindingId?: string;
2259
- request: WorkbenchTerminalSessionRequest;
2260
- title?: string;
2261
- }): Promise<{
2262
- sessionId: string;
2263
- }>;
2264
- write(input: {
2265
- sessionId: string;
2266
- data: string | Uint8Array;
2267
- }): void;
2268
- resize(input: {
2269
- sessionId: string;
2270
- cols: number;
2271
- rows: number;
2272
- }): void;
2273
- kill(input: {
2274
- sessionId: string;
2275
- signal?: string;
2276
- }): Promise<void>;
2277
- killBinding(bindingId: string): Promise<void>;
2278
- subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
2279
- getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
2280
- listSessions(): WorkbenchTerminalSessionModel[];
2281
- /** Kills every live session. Called when the owning workbench is torn down. */
2282
- dispose(): Promise<void>;
2283
- }
2284
-
2285
- declare interface WorkbenchTerminalSessionAdapter {
2286
- readonly id: string;
2287
- write(data: string | Uint8Array): void;
2288
- resize(cols: number, rows: number): void;
2289
- kill(signal?: string): Promise<void> | void;
2290
- onData(handler: (chunk: Uint8Array) => void): () => void;
2291
- /** Foreground process name updates, when the opener can report them (real PTYs). */
2292
- onTitle?(handler: (title: string) => void): () => void;
2293
- onExit(handler: (exit: WorkbenchTerminalSessionExit) => void): () => void;
2294
- onError(handler: (error: WorkbenchTerminalSessionError) => void): () => void;
2295
- }
2296
-
2297
- declare interface WorkbenchTerminalSessionError {
2298
- message: string;
2299
- }
2300
-
2301
- declare interface WorkbenchTerminalSessionExit {
2302
- code: number | null;
2303
- signal: string | null;
2304
- }
2305
-
2306
- declare interface WorkbenchTerminalSessionModel {
2307
- id: string;
2308
- title: string;
2309
- status: WorkbenchTerminalSessionStatus;
2310
- exit?: WorkbenchTerminalSessionExit;
2311
- }
2312
-
2313
- declare type WorkbenchTerminalSessionOpener = (request: WorkbenchTerminalSessionRequest) => Promise<WorkbenchTerminalSessionAdapter>;
2314
-
2315
- declare interface WorkbenchTerminalSessionRequest {
2316
- command?: string[];
2317
- cwd?: string;
2318
- env?: Record<string, string>;
2319
- cols: number;
2320
- rows: number;
2321
- }
2322
-
2323
- declare interface WorkbenchTerminalSessionSink {
2324
- onData?(chunk: Uint8Array): void;
2325
- onExit?(exit: WorkbenchTerminalSessionExit): void;
2326
- onError?(error: WorkbenchTerminalSessionError): void;
2327
- }
2328
-
2329
- declare type WorkbenchTerminalSessionStatus = "running" | "exited" | "killed";
2330
-
2331
- declare interface WorkbenchTerminalState {
2332
- sessionsById: Record<string, WorkbenchTerminalSessionModel>;
2333
- }
2334
-
2335
- declare interface WorkbenchThemeStoreState {
2336
- themes: readonly ThemePreferenceOption[];
2337
- }
2338
-
2339
- declare interface WorkbenchViewContribution {
2340
- id: string;
2341
- panelId: string;
2342
- title?: string;
2343
- icon?: string;
2344
- path?: string;
2345
- pathAliases?: readonly string[];
2346
- aliases?: readonly string[];
2347
- resource?: ResourceRef;
2348
- canResolve?(): boolean;
2349
- resolveInput?(input: OpenWorkbenchViewInput): OpenWorkbenchPanelInput;
2350
- }
2351
-
2352
- declare interface WorkbenchViewHierarchyNode {
2353
- type: "view";
2354
- viewId: string;
2355
- label?: string;
2356
- icon?: string;
2357
- }
2358
-
2359
- declare interface WorkbenchViewOpenEvent {
2360
- viewId: string;
2361
- input: OpenWorkbenchViewInput;
2362
- instance: WorkbenchPanelInstance;
2363
- }
2364
-
2365
- declare interface WorkbenchViewRegistry {
2366
- store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
2367
- registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
2368
- getView(viewId: string): RegisteredWorkbenchView | undefined;
2369
- listViews(): RegisteredWorkbenchView[];
2370
- resolveViewId(viewId: string): string | undefined;
2371
- resolvePath(path: string): {
2372
- kind: "view";
2373
- viewId: string;
2374
- } | undefined;
2375
- canResolveView(viewId: string): boolean;
2376
- isOpeningView(): boolean;
2377
- openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<WorkbenchPanelInstance>;
2378
- onDidOpenView(listener: (event: WorkbenchViewOpenEvent) => void): Disposable_2;
2379
- }
2380
-
2381
- declare interface WorkbenchViewRegistryStoreState {
2382
- views: Record<string, RegisteredWorkbenchView>;
2383
- aliases: Record<string, string>;
2384
- paths: Record<string, string>;
2385
- }
2386
-
2387
- declare interface WorkbenchWidgetPlacement {
2388
- widgetId: string;
2389
- contributionId: string;
2390
- viewId?: string;
2391
- ownerId?: string;
2392
- source?: ContributionSource;
2393
- resource?: ResourceRef;
2394
- resourceUri?: string;
2395
- ownerResourceUri?: string;
2396
- title?: string;
2397
- pinned?: boolean;
2398
- closable?: boolean;
2399
- mountStrategy?: WidgetMountStrategy;
2400
- hiddenByDefault?: boolean;
2401
- tabRetention?: WorkbenchTabRetention;
2402
- tab?: WorkbenchWidgetTab;
2403
- role?: WorkbenchWidgetRole;
2404
- }
2405
-
2406
- declare type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
2407
-
2408
- declare interface WorkbenchWidgetTab {
2409
- contentRendererId?: string;
2410
- /** Custom actions shown when the user activates an already-active tab. */
2411
- customMenuRendererId?: string;
2412
- }
2413
-
2414
- declare interface WorkbenchWidgetTab_2 {
2415
- contentRendererId?: string;
2416
- /** Custom actions shown when the user activates an already-active tab. */
2417
- customMenuRendererId?: string;
2418
- }
2419
-
2420
- declare interface WorkflowStatus {
2421
- id: string;
2422
- label: string;
2423
- color: string;
2424
- icon?: string | null;
2425
- sortOrder: number;
2426
- isDefault?: boolean;
2427
- board?: WorkflowStatusBoardRules;
2428
- }
2429
-
2430
- declare interface WorkflowStatusAction {
2431
- id: string;
2432
- label: string;
2433
- icon?: string;
2434
- }
2435
-
2436
- declare interface WorkflowStatusBoardRules {
2437
- canCreate?: boolean;
2438
- canDragIn?: boolean;
2439
- canDragOut?: boolean;
2440
- actions?: readonly string[];
2441
- }
2442
-
2443
- export { }