@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/react.d.ts CHANGED
@@ -1,24 +1,43 @@
1
1
  import { BoxProps } from '@chakra-ui/react';
2
2
  import { ComponentType } from 'react';
3
- import { Context } from 'react';
3
+ import { ControlsQueryResult } from '@pstdio/sdk/extensions';
4
+ import { ControlValue } from '@pstdio/sdk/extensions';
5
+ import { ControlValueMap } from '@pstdio/sdk/extensions';
6
+ import { DockedWorkbenchRegion } from '@pstdio/sdk/extensions';
4
7
  import { FileIconThemePreferenceOption as FileIconThemePreferenceOption_2 } from '@pstdio/ui';
8
+ import { FileRendererSectionTarget } from '@pstdio/sdk/extensions';
5
9
  import { FileUploadValue } from '@pstdio/ui';
6
10
  import { IconProps } from '@chakra-ui/react';
7
11
  import { JSX } from 'react/jsx-runtime';
8
12
  import { JSXElementConstructor } from 'react';
13
+ import { KanbanRendererAttributeDisplay } from '@pstdio/sdk/extensions';
9
14
  import { ListRowActionMenuItem } from '@pstdio/ui';
15
+ import { Localizable } from '@pstdio/sdk/extensions';
16
+ import { ModeRegionSettings } from '@pstdio/sdk/extensions';
17
+ import { NavigationTargetPage as NavigationTargetPage_2 } from '@pstdio/sdk/extensions';
18
+ import { NavigationTargetPanel as NavigationTargetPanel_2 } from '@pstdio/sdk/extensions';
19
+ import { PageLocation } from '@pstdio/sdk/extensions';
20
+ import { PageMain } from '@pstdio/sdk/extensions';
21
+ import { PageOpenIntent } from '@pstdio/sdk/extensions';
22
+ import { PageRef } from '@pstdio/sdk/extensions';
23
+ import { PageSlot } from '@pstdio/sdk/extensions';
10
24
  import { Param } from '@pstdio/ui';
11
25
  import { ParamEditorProps } from '@pstdio/ui';
12
26
  import { ParamValue } from '@pstdio/ui';
27
+ import { PlacementIdentity } from '@pstdio/sdk/extensions';
28
+ import { PlacementItem } from '@pstdio/sdk/extensions';
29
+ import { PlacementRef } from '@pstdio/sdk/extensions';
13
30
  import { ReactElement } from 'react';
14
31
  import { ReactNode } from 'react';
15
32
  import { ReactPortal } from 'react';
33
+ import { ResourceConstraint } from '@pstdio/sdk/extensions';
16
34
  import { ResourceContextAction as ResourceContextAction_2 } from '@pstdio/ui';
35
+ import { ResourceRef } from '@pstdio/sdk/extensions';
17
36
  import { TerminalBridge } from '@pstdio/ui/terminal';
18
- import { ThemePreference as ThemePreference_3 } from '@pstdio/ui';
19
- import { ThemePreferenceOption as ThemePreferenceOption_3 } from '@pstdio/ui';
37
+ import { ThemePreference as ThemePreference_2 } from '@pstdio/ui';
38
+ import { ThemePreferenceOption as ThemePreferenceOption_2 } from '@pstdio/ui';
20
39
 
21
- declare interface AttributeDescriptor {
40
+ declare interface AttributeDescriptor<TNode = unknown> {
22
41
  id: string;
23
42
  label: string;
24
43
  type: AttributeType;
@@ -28,22 +47,19 @@ declare interface AttributeDescriptor {
28
47
  displayable?: boolean;
29
48
  editable?: boolean;
30
49
  display?: AttributeDisplayDescriptor;
31
- render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
50
+ render?: (value: unknown, row: KanbanRendererRow) => TNode;
32
51
  compare?: (a: unknown, b: unknown) => number;
33
52
  }
34
53
 
35
- declare type AttributeDisplayDescriptor = {
36
- kind: "workspace-badge";
37
- itemsAttributeId: string;
38
- };
54
+ declare type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
39
55
 
40
56
  /**
41
57
  * Reactive source for an entire attribute schema. Lets a contribution
42
58
  * add/remove/edit attributes at runtime without re-registering.
43
59
  */
44
- declare interface AttributesSource {
60
+ declare interface AttributesSource<TNode = unknown> {
45
61
  subscribe: (listener: () => void) => () => void;
46
- getSnapshot: () => AttributeDescriptor[];
62
+ getSnapshot: () => AttributeDescriptor<TNode>[];
47
63
  }
48
64
 
49
65
  declare type AttributeType = {
@@ -62,29 +78,20 @@ declare type AttributeType = {
62
78
  kind: "user";
63
79
  };
64
80
 
65
- declare interface BoardColumnAction {
81
+ declare interface BoardColumnAction<TIcon = unknown> {
66
82
  id: string;
67
83
  label: string;
68
- icon: ComponentType<{
69
- size?: number | string;
70
- }>;
84
+ icon: TIcon;
71
85
  }
72
86
 
73
87
  /** Board-column behavior and menu configuration for a resolved column group. */
74
- declare interface BoardColumnConfig {
88
+ declare interface BoardColumnConfig<TIcon = unknown> {
75
89
  /** Color palette token used for the column header and group badges. */
76
90
  color?: string;
77
91
  canDragIn?: boolean;
78
92
  canDragOut?: boolean;
79
93
  canCreate?: boolean;
80
- actions?: BoardColumnAction[];
81
- }
82
-
83
- export declare const buildSettingsTreeBody: (input: BuildSettingsTreeInput) => Promise<TreeViewSection[]>;
84
-
85
- export declare interface BuildSettingsTreeInput {
86
- settings: SettingsRegistry;
87
- hasProjectScope: boolean;
94
+ actions?: BoardColumnAction<TIcon>[];
88
95
  }
89
96
 
90
97
  /**
@@ -93,12 +100,12 @@ export declare interface BuildSettingsTreeInput {
93
100
  */
94
101
  declare interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
95
102
  kind: "collection";
103
+ viewId: string;
96
104
  items(): TItem[] | Promise<TItem[]>;
97
105
  itemId(item: TItem): string;
98
106
  itemLabel(item: TItem): string;
99
107
  itemIcon?(item: TItem): string | undefined;
100
108
  groupBy?: SettingsCollectionGroupBy<TItem>;
101
- renderItem(item: TItem, input: WorkbenchPanelRenderInput): unknown;
102
109
  actions?: SettingsAction[];
103
110
  }
104
111
 
@@ -269,8 +276,6 @@ declare interface ContributionMetadata {
269
276
 
270
277
  declare type ContributionSource = "module" | "extension";
271
278
 
272
- declare type ContributionSource_2 = "module" | "extension";
273
-
274
279
  declare interface ControllerTerminalBridgeOptions {
275
280
  getBindingId?: () => string | undefined;
276
281
  getResource?: () => ResourceRef | undefined;
@@ -278,17 +283,10 @@ declare interface ControllerTerminalBridgeOptions {
278
283
  }
279
284
 
280
285
  declare interface ControlsApplyInput {
281
- values: Record<string, unknown>;
286
+ values: ControlValueMap;
282
287
  resource?: ResourceRef;
283
288
  }
284
289
 
285
- declare interface ControlsQueryResult {
286
- params?: unknown[];
287
- groups?: unknown[];
288
- values?: Record<string, unknown>;
289
- readOnly?: boolean;
290
- }
291
-
292
290
  declare interface ControlsRendererContribution {
293
291
  id: string;
294
292
  title: string;
@@ -296,7 +294,7 @@ declare interface ControlsRendererContribution {
296
294
  emptyTitle?: string;
297
295
  emptyDescription?: string;
298
296
  layout?: ControlsRendererLayout;
299
- defaultValues?: Record<string, unknown>;
297
+ defaultValues?: ControlValueMap;
300
298
  /** Load the control declarations + current values for the active resource. */
301
299
  executeQuery(resource?: ResourceRef): Promise<ControlsQueryResult> | ControlsQueryResult;
302
300
  /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
@@ -308,10 +306,6 @@ declare interface ControlsRendererContribution {
308
306
  subscribe?: (listener: () => void) => Disposable_2 | (() => void);
309
307
  }
310
308
 
311
- declare type ControlsRendererImplementation = (input: WorkbenchPanelRenderInput & {
312
- controlsRendererId: string;
313
- }) => unknown;
314
-
315
309
  declare interface ControlsRendererLayout {
316
310
  region?: ControlsRendererRegion;
317
311
  defaultPx?: number;
@@ -319,28 +313,8 @@ declare interface ControlsRendererLayout {
319
313
  maxPx?: number;
320
314
  }
321
315
 
322
- declare interface ControlsRendererRefreshEvent {
323
- controlsRendererId: string;
324
- }
325
-
326
- declare type ControlsRendererRefreshListener = (event: ControlsRendererRefreshEvent) => void;
327
-
328
316
  declare type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
329
317
 
330
- declare interface ControlsRendererRegistry {
331
- controlsStore: WorkbenchStore<ControlsRendererStoreState>;
332
- registerControlsRenderer(contribution: ControlsRendererContribution, metadata?: ContributionMetadata): Disposable_2;
333
- setControlsRendererImplementation(impl: ControlsRendererImplementation): void;
334
- getControlsRenderer(id: string): RegisteredControlsRendererContribution | undefined;
335
- listControlsRenderers(): RegisteredControlsRendererContribution[];
336
- refreshControlsRenderer(id: string): void;
337
- onDidRefreshControlsRenderer(listener: ControlsRendererRefreshListener): Disposable_2;
338
- }
339
-
340
- declare interface ControlsRendererStoreState {
341
- renderers: Record<string, RegisteredControlsRendererContribution>;
342
- }
343
-
344
318
  declare interface ControlsResetInput {
345
319
  controlIds?: string[];
346
320
  resource?: ResourceRef;
@@ -348,8 +322,8 @@ declare interface ControlsResetInput {
348
322
 
349
323
  declare interface ControlsUpdateValueInput {
350
324
  controlId: string;
351
- value: unknown;
352
- values: Record<string, unknown>;
325
+ value: ControlValue;
326
+ values: ControlValueMap;
353
327
  resource?: ResourceRef;
354
328
  }
355
329
 
@@ -369,11 +343,11 @@ declare interface CreateTreeContextMenuItemsInput {
369
343
  }
370
344
 
371
345
  export declare const createWorkbenchHotkeyRegistrations: (input: CreateWorkbenchHotkeyRegistrationsInput) => {
372
- commandId: string;
346
+ id: string;
373
347
  hotkey: KeybindingSequence;
374
348
  enabled: boolean;
375
349
  ignoreInputs: true;
376
- execute: () => Promise<unknown>;
350
+ execute: () => Promise<readonly unknown[]>;
377
351
  }[];
378
352
 
379
353
  declare interface CreateWorkbenchHotkeyRegistrationsInput {
@@ -382,13 +356,6 @@ declare interface CreateWorkbenchHotkeyRegistrationsInput {
382
356
  commandIds?: readonly string[];
383
357
  }
384
358
 
385
- export declare const createWorkbenchRendererRegistry: (input?: CreateWorkbenchRendererRegistryInput) => WorkbenchRendererRegistry;
386
-
387
- declare interface CreateWorkbenchRendererRegistryInput {
388
- initialRenderers?: WorkbenchRendererRegistration[];
389
- createHost?: () => HTMLElement;
390
- }
391
-
392
359
  export declare const createWorkbenchResourceActions: (workbench: WorkbenchCoreContributionContext, resource: ResourceRef) => ResourceContextAction_2[];
393
360
 
394
361
  export declare const createWorkbenchSettingsModule: (options?: WorkbenchSettingsModuleOptions) => WorkbenchModuleContribution;
@@ -403,15 +370,6 @@ export declare const createWorkbenchSettingsModule: (options?: WorkbenchSettings
403
370
  */
404
371
  export declare const createWorkbenchTerminalModule: () => WorkbenchModuleContribution;
405
372
 
406
- /**
407
- * Renders its own page. `render` returns `unknown` so core stays React-free — the
408
- * React layer treats the result as a node, exactly like WorkbenchRendererRegistration.
409
- */
410
- declare interface CustomSettingsPanel extends SettingsPanelBase {
411
- kind: "custom";
412
- render(input: WorkbenchPanelRenderInput): unknown;
413
- }
414
-
415
373
  declare interface DataTableRendererColumn {
416
374
  id: string;
417
375
  label?: string;
@@ -465,10 +423,6 @@ declare interface DataTableRendererContribution {
465
423
  onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
466
424
  }
467
425
 
468
- declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
469
- dataTableRendererId: string;
470
- }) => unknown;
471
-
472
426
  declare interface DataTableRendererQueryContext {
473
427
  resource?: ResourceRef;
474
428
  modeId?: string;
@@ -479,20 +433,6 @@ declare interface DataTableRendererQueryResult {
479
433
  columns?: DataTableRendererColumn[];
480
434
  }
481
435
 
482
- declare interface DataTableRendererRefreshEvent {
483
- dataTableRendererId: string;
484
- }
485
-
486
- declare interface DataTableRendererRegistry {
487
- dataTableStore: WorkbenchStore<DataTableRendererStoreState>;
488
- registerDataTableRenderer(contribution: DataTableRendererContribution, metadata?: ContributionMetadata): Disposable_2;
489
- setDataTableRendererImplementation(implementation: DataTableRendererImplementation): void;
490
- getDataTableRenderer(id: string): RegisteredDataTableRendererContribution | undefined;
491
- listDataTableRenderers(): RegisteredDataTableRendererContribution[];
492
- refreshDataTableRenderer(id: string): void;
493
- onDidRefreshDataTableRenderer(listener: (event: DataTableRendererRefreshEvent) => void): Disposable_2;
494
- }
495
-
496
436
  declare interface DataTableRendererRow {
497
437
  id: string;
498
438
  values: Record<string, unknown>;
@@ -515,10 +455,6 @@ declare interface DataTableRendererSelectionAction {
515
455
  run(rows: DataTableRendererRow[]): Promise<void> | void;
516
456
  }
517
457
 
518
- declare interface DataTableRendererStoreState {
519
- renderers: Record<string, RegisteredDataTableRendererContribution>;
520
- }
521
-
522
458
  declare interface DataTableRendererThemeColor {
523
459
  light: string;
524
460
  dark: string;
@@ -534,6 +470,8 @@ declare interface Disposable_2 {
534
470
 
535
471
  export declare const disposeWorkbenchModuleHostRegistrations: (registrations: Map<string, WorkbenchModuleHostRegistration>) => void;
536
472
 
473
+ declare type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
474
+
537
475
  declare interface EnumOption {
538
476
  value: string;
539
477
  label: string;
@@ -618,77 +556,19 @@ declare interface FileRendererContribution {
618
556
  save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
619
557
  }
620
558
 
621
- declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
622
- fileRendererId: string;
623
- }) => unknown;
624
-
625
- declare interface FileRendererRefreshEnvelope {
626
- resourceUri?: string;
627
- origin?: FileRendererRefreshOrigin;
628
- revision?: string;
629
- }
630
-
631
- declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
632
- fileRendererId: string;
633
- }
634
-
635
- declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
636
-
637
559
  declare interface FileRendererRefreshOrigin {
638
560
  rendererId: string;
639
561
  instanceId: string;
640
562
  operationId: string;
641
563
  }
642
564
 
643
- declare interface FileRendererRegistry {
644
- fileRendererStore: WorkbenchStore<FileRendererStoreState>;
645
- registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
646
- setFileRendererImplementation(impl: FileRendererImplementation): void;
647
- getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
648
- listFileRenderers(): RegisteredFileRendererContribution[];
649
- refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
650
- onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
651
- }
652
-
653
565
  declare interface FileRendererSaveResult {
654
566
  revision?: string;
655
567
  }
656
568
 
657
- declare interface FileRendererStoreState {
658
- renderers: Record<string, RegisteredFileRendererContribution>;
659
- }
660
-
661
- declare interface HistoryController {
662
- store: WorkbenchStore<HistoryStoreState>;
663
- /** Snapshot the history for a compound navigation; the returned function restores it. */
664
- createCheckpoint(): () => void;
665
- goBack(): HistoryEntry | undefined;
666
- goForward(): HistoryEntry | undefined;
667
- goPrevious(): HistoryEntry | undefined;
668
- recentlyClosed(): readonly HistoryEntry[];
669
- reopenLastClosed(): HistoryEntry | undefined;
670
- setPersistenceScope(scope: string | undefined): void;
671
- getPersistenceScope(): string | undefined;
672
- restore(): HistoryEntry | undefined;
673
- flush(): void;
674
- clear(): void;
675
- migrateState(transform: (state: HistoryStoreState) => HistoryStoreState): void;
676
- }
677
-
678
- declare type HistoryEntry = WorkbenchNavigationEntry;
679
-
680
- declare interface HistoryStoreState {
681
- entries: readonly WorkbenchNavigationEntry[];
682
- cursor: number;
683
- recentlyClosed: readonly WorkbenchNavigationEntry[];
684
- hydrating: boolean;
685
- }
686
-
687
569
  export declare const isCommandFilesParamValue: (value: unknown) => value is CommandFilesParamValue;
688
570
 
689
- export declare const isSettingsScopeVisible: (scope: SettingsScope | undefined, hasProjectScope: boolean) => boolean;
690
-
691
- declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> {
571
+ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
692
572
  id: string;
693
573
  title: string;
694
574
  resourceKind?: string;
@@ -703,9 +583,9 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
703
583
  * `WorkbenchKanbanView` subscribes so additions / removals / kind changes
704
584
  * propagate live without re-registering the renderer.
705
585
  */
706
- attributes: AttributeDescriptor[] | AttributesSource;
586
+ attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
707
587
  /** Per-board-column overrides (color, drag/create rules, custom actions). */
708
- getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
588
+ getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
709
589
  hideToolbar?: boolean;
710
590
  emptyTitle?: string;
711
591
  emptyDescription?: string;
@@ -724,7 +604,7 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
724
604
  /** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
725
605
  onRowActivate?: (row: TRow) => Promise<void> | void;
726
606
  /** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
727
- getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
607
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
728
608
  /**
729
609
  * Fires for inline attribute edits AND for cross-column drag-to-reorder on
730
610
  * the board (the renderer passes the grouping attribute id + the target
@@ -781,10 +661,6 @@ declare interface KanbanRendererCreateSubmission {
781
661
 
782
662
  declare type KanbanRendererFilterState = Record<string, string[]>;
783
663
 
784
- declare type KanbanRendererImplementation = (input: WorkbenchPanelRenderInput & {
785
- kanbanRendererId: string;
786
- }) => unknown;
787
-
788
664
  declare interface KanbanRendererOrdering {
789
665
  attributeId: string | typeof MANUAL_ORDERING;
790
666
  direction: SortDirection;
@@ -795,22 +671,6 @@ declare interface KanbanRendererQueryState {
795
671
  filters: KanbanRendererFilterState;
796
672
  }
797
673
 
798
- declare interface KanbanRendererRefreshEvent {
799
- kanbanRendererId: string;
800
- }
801
-
802
- declare type KanbanRendererRefreshListener = (event: KanbanRendererRefreshEvent) => void;
803
-
804
- declare interface KanbanRendererRegistry {
805
- dataStore: WorkbenchStore<KanbanRendererStoreState>;
806
- registerKanbanRenderer<TRow extends KanbanRendererRow = KanbanRendererRow>(contribution: KanbanRendererContribution<TRow>, metadata?: ContributionMetadata): Disposable_2;
807
- setKanbanRendererImplementation(impl: KanbanRendererImplementation): void;
808
- getKanbanRenderer(id: string): RegisteredKanbanRendererContribution | undefined;
809
- listKanbanRenderers(): RegisteredKanbanRendererContribution[];
810
- refreshKanbanRenderer(id: string): void;
811
- onDidRefreshKanbanRenderer(listener: KanbanRendererRefreshListener): Disposable_2;
812
- }
813
-
814
674
  declare interface KanbanRendererRow {
815
675
  id: string;
816
676
  title: string;
@@ -839,15 +699,11 @@ declare interface KanbanRendererSettings {
839
699
  displayProperties: string[];
840
700
  }
841
701
 
842
- declare interface KanbanRendererStoreState {
843
- renderers: Record<string, RegisteredKanbanRendererContribution>;
844
- }
845
-
846
702
  declare interface Keybinding {
847
- commandId: string;
703
+ /** Action the chord executes through the shared navigation executor. */
704
+ action: NavigationTarget;
848
705
  keybinding: KeybindingSequence;
849
706
  when?: string;
850
- args?: unknown;
851
707
  }
852
708
 
853
709
  declare interface KeybindingRegistry {
@@ -855,6 +711,11 @@ declare interface KeybindingRegistry {
855
711
  registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable_2;
856
712
  listKeybindings(): RegisteredKeybinding[];
857
713
  listActiveKeybindings(): RegisteredKeybinding[];
714
+ /** Chords bound to plain command actions, for rendering shortcut hints beside commands. */
715
+ listCommandKeybindings(): {
716
+ commandId: string;
717
+ keybinding: KeybindingSequence;
718
+ }[];
858
719
  }
859
720
 
860
721
  declare interface KeybindingRegistryStoreState {
@@ -874,12 +735,6 @@ declare interface LayoutModel {
874
735
  registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
875
736
  dispose(): void;
876
737
  };
877
- registerLocation(location: WorkbenchLocationContribution, metadata?: ContributionMetadata): {
878
- dispose(): void;
879
- };
880
- registerSubPanel(subPanel: WorkbenchSubPanelContribution, metadata?: ContributionMetadata): {
881
- dispose(): void;
882
- };
883
738
  registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
884
739
  dispose(): void;
885
740
  };
@@ -891,6 +746,7 @@ declare interface LayoutModel {
891
746
  getWidget(id: string): RegisteredWidgetContribution | undefined;
892
747
  getPanel(id: string): WorkbenchPanelContribution | undefined;
893
748
  getRegionSize(regionId: WorkbenchRegion_2): WorkbenchRegionSize | undefined;
749
+ getRegionSettings(regionId: WorkbenchRegion_2): WorkbenchRegionSettings | undefined;
894
750
  getRegionCollapsible(regionId: WorkbenchRegion_2): boolean;
895
751
  getRegionHeaderBorderBottom(regionId: WorkbenchRegion_2): boolean;
896
752
  setRegionVisible(regionId: WorkbenchRegion_2, visible: boolean): void;
@@ -908,7 +764,7 @@ declare interface LayoutModel {
908
764
  closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
909
765
  updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
910
766
  reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
911
- expirePreviewTabs(ownerResourceUri?: string): void;
767
+ expirePreviewTabs(ownerResourceKey?: string): void;
912
768
  activateWidget(widgetId: string): WorkbenchWidgetPlacement;
913
769
  setRegionActiveWidget(regionId: WorkbenchRegion_2, widgetId: string | undefined): void;
914
770
  closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
@@ -974,6 +830,10 @@ declare interface MenuRegistryStoreState {
974
830
  itemsByPath: Record<string, RegisteredMenuItem[]>;
975
831
  }
976
832
 
833
+ declare type NativeViewBody<Kind extends string, Contribution> = {
834
+ kind: Kind;
835
+ } & Omit<Contribution, "id" | "title" | "icon">;
836
+
977
837
  declare interface NavigationParser {
978
838
  id: string;
979
839
  priority?: number;
@@ -987,16 +847,15 @@ declare interface NavigationRegistry {
987
847
  listParsers(): RegisteredNavigationParser[];
988
848
  resolveLocation(location: string): NavigationTarget;
989
849
  openTarget(target: NavigationTarget): Promise<readonly unknown[]>;
850
+ /** Opens a page location through the shared executor. */
851
+ openPage(target: Omit<NavigationTargetPage, "kind">): Promise<readonly unknown[]>;
852
+ /** Opens or activates an owned panel through the shared executor. */
853
+ openPanel(target: DistributiveOmit<NavigationTargetPanel, "kind">): Promise<readonly unknown[]>;
990
854
  navigate(location: string): Promise<readonly unknown[]>;
991
- registerNavigator(navigator: ResourceNavigator, metadata?: ContributionMetadata): Disposable_2;
992
- listNavigators(): RegisteredResourceNavigator[];
993
- createHref(resource: ResourceRef): string;
994
- navigateResource(resource: ResourceRef): Promise<unknown>;
995
855
  }
996
856
 
997
857
  declare interface NavigationRegistryStoreState {
998
858
  parsers: Record<string, RegisteredNavigationParser>;
999
- navigators: Record<string, RegisteredResourceNavigator>;
1000
859
  }
1001
860
 
1002
861
  declare type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
@@ -1009,7 +868,7 @@ declare interface NavigationTargetCommand {
1009
868
 
1010
869
  declare interface NavigationTargetCompound {
1011
870
  kind: "compound";
1012
- targets: readonly NavigationTargetItem[];
871
+ targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
1013
872
  }
1014
873
 
1015
874
  declare interface NavigationTargetHref {
@@ -1017,26 +876,55 @@ declare interface NavigationTargetHref {
1017
876
  href: string;
1018
877
  }
1019
878
 
1020
- declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
879
+ declare type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
1021
880
 
1022
- declare interface NavigationTargetPanel {
881
+ declare type NavigationTargetPage = NavigationTargetPage_2;
882
+
883
+ declare type NavigationTargetPanel = NavigationTargetPanel_2 | NavigationTargetShellPanel;
884
+
885
+ declare interface NavigationTargetShellPanel {
1023
886
  kind: "panel";
1024
- panelId: string;
1025
- input?: OpenWorkbenchPanelInput;
887
+ panel: ShellPlacementRef;
888
+ resource?: NavigationTargetPanel_2["resource"];
889
+ open?: NavigationTargetPanel_2["open"];
890
+ title?: string;
1026
891
  }
1027
892
 
1028
- declare interface NavigationTargetResource {
1029
- kind: "resource";
1030
- resource: ResourceRef;
1031
- input?: OpenResourceInput;
893
+ declare interface NavigationTreeContext {
894
+ resource?: ResourceRef;
1032
895
  }
1033
896
 
1034
- declare interface NavigationTargetView {
1035
- kind: "view";
1036
- viewId: string;
1037
- input?: OpenWorkbenchViewInput;
897
+ declare interface NavigationTreeContribution {
898
+ id: string;
899
+ /** Prefix projected section and node ids when they come from an independent tree renderer. */
900
+ idScope?: string;
901
+ owner: NavigationTreeOwner;
902
+ sourceExtensionId: string;
903
+ declarationIndex: number;
904
+ slot?: NavigationTreeSlot;
905
+ viewId?: string;
906
+ defaultExpandedSectionIds?: string[];
907
+ getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
908
+ getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
909
+ }
910
+
911
+ declare interface NavigationTreeOwner {
912
+ kind: "mode" | "page";
913
+ id: string;
914
+ extensionId: string;
915
+ }
916
+
917
+ declare interface NavigationTreeRegistry {
918
+ registerContribution(contribution: NavigationTreeContribution): Disposable_2;
919
+ resolveOwner(kind: NavigationTreeOwner["kind"], id: string): NavigationTreeOwner | undefined;
920
+ getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
921
+ getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
922
+ getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];
923
+ onDidChange(listener: () => void): Disposable_2;
1038
924
  }
1039
925
 
926
+ declare type NavigationTreeSlot = "header" | "content" | "footer";
927
+
1040
928
  declare const NO_GROUPING = "none";
1041
929
 
1042
930
  export declare const normalizeWorkbenchKeybinding: (keybinding: KeybindingSequence) => KeybindingSequence;
@@ -1050,8 +938,10 @@ declare interface NotificationRegistry {
1050
938
  subscribe(listener: WorkbenchNotificationListener): Disposable_2;
1051
939
  }
1052
940
 
1053
- declare interface OpenResourceInput {
1054
- replaceActive?: boolean;
941
+ declare interface OpenModePlacementTarget {
942
+ panel: PlacementRef;
943
+ resource?: ResourceRef;
944
+ open?: PageOpenIntent;
1055
945
  }
1056
946
 
1057
947
  declare interface OpenWidgetInput {
@@ -1073,6 +963,11 @@ declare interface OpenWidgetInput {
1073
963
  replaceWidgetId?: string;
1074
964
  }
1075
965
 
966
+ declare interface OpenWorkbenchOverlayInput {
967
+ resource?: ResourceRef;
968
+ title?: string;
969
+ }
970
+
1076
971
  declare interface OpenWorkbenchPanelInput {
1077
972
  /** Set by the view registry. Low-level layout callers should leave this undefined. */
1078
973
  viewId?: string | null;
@@ -1089,15 +984,39 @@ declare interface OpenWorkbenchPanelInput {
1089
984
  strategy?: WorkbenchPanelOpenStrategy;
1090
985
  }
1091
986
 
1092
- export declare const openWorkbenchTerminal: (ctx: WorkbenchCoreContributionContext, input?: OpenWorkbenchTerminalOptions) => WorkbenchPanelInstance_2;
987
+ declare interface OpenWorkbenchShellPlacementInput {
988
+ placementId: string;
989
+ resource?: ResourceRef;
990
+ open?: PageOpenIntent;
991
+ title?: string;
992
+ }
1093
993
 
1094
- declare type OpenWorkbenchTerminalInput = NonNullable<Parameters<WorkbenchCoreContributionContext["layout"]["openWidget"]>[1]>;
994
+ export declare const openWorkbenchTerminal: (ctx: WorkbenchCoreContributionContext, input?: OpenWorkbenchTerminalOptions) => WorkbenchPanelInstance;
1095
995
 
1096
- declare type OpenWorkbenchTerminalOptions = OpenWorkbenchTerminalInput & {
996
+ declare interface OpenWorkbenchTerminalOptions {
997
+ resource?: ResourceRef;
1097
998
  reveal?: boolean;
1098
- };
999
+ }
1099
1000
 
1100
- declare type OpenWorkbenchViewInput = Omit<OpenWorkbenchPanelInput, "viewId">;
1001
+ declare interface OwnedPlacementLocationContext {
1002
+ modeId: string;
1003
+ pageId?: string;
1004
+ projectId?: string;
1005
+ location?: PageLocation;
1006
+ }
1007
+
1008
+ declare interface OwnedPlacementReconciliation<Value> {
1009
+ add: readonly ResolvedOwnedPlacement<Value>[];
1010
+ retain: readonly ResolvedOwnedPlacement<Value>[];
1011
+ update: readonly OwnedPlacementUpdate<Value>[];
1012
+ activate: readonly ResolvedOwnedPlacement<Value>[];
1013
+ remove: readonly ResolvedOwnedPlacement<Value>[];
1014
+ }
1015
+
1016
+ declare interface OwnedPlacementUpdate<Value> {
1017
+ current: ResolvedOwnedPlacement<Value>;
1018
+ desired: ResolvedOwnedPlacement<Value>;
1019
+ }
1101
1020
 
1102
1021
  declare type ParamValue_2 = Parameters<NonNullable<ParamEditorProps["onChange"]>>[1];
1103
1022
 
@@ -1157,6 +1076,20 @@ declare interface PreferenceScopeRef {
1157
1076
 
1158
1077
  declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
1159
1078
 
1079
+ export declare type ReactAttributeDescriptor = AttributeDescriptor<ReactNode>;
1080
+
1081
+ export declare type ReactAttributesSource = AttributesSource<ReactNode>;
1082
+
1083
+ export declare type ReactBoardColumnConfig = BoardColumnConfig<ReactColumnIcon>;
1084
+
1085
+ declare type ReactColumnIcon = ComponentType<{
1086
+ size?: number | string;
1087
+ }>;
1088
+
1089
+ export declare type ReactKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> = KanbanRendererContribution<TRow, ReactNode, ReactColumnIcon>;
1090
+
1091
+ export declare type ReactResourceContextAction = ResourceContextAction<ReactNode>;
1092
+
1160
1093
  /** Narrows an editor value back to what a command param can carry. */
1161
1094
  export declare const readCommandParamValue: (value: ParamValue, entry?: CommandParamEntry) => CommandParamValue;
1162
1095
 
@@ -1171,24 +1104,9 @@ declare interface RegisteredContributionMetadata {
1171
1104
  priority: number;
1172
1105
  }
1173
1106
 
1174
- declare interface RegisteredControlsRendererContribution extends ControlsRendererContribution, RegisteredContributionMetadata {
1175
- }
1176
-
1177
1107
  declare interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {
1178
1108
  }
1179
1109
 
1180
- declare interface RegisteredFileRendererContribution extends FileRendererContribution, RegisteredContributionMetadata {
1181
- }
1182
-
1183
- declare interface RegisteredKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> extends KanbanRendererContribution<TRow>, RegisteredContributionMetadata {
1184
- }
1185
-
1186
- declare interface RegisteredKeepAliveHost {
1187
- rendererId: string;
1188
- host: HTMLElement;
1189
- attachedTo?: HTMLElement;
1190
- }
1191
-
1192
1110
  declare interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {
1193
1111
  }
1194
1112
 
@@ -1208,8 +1126,6 @@ declare type RegisteredPreferenceSchema = PreferencePropertySchema & {
1208
1126
  declare interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {
1209
1127
  }
1210
1128
 
1211
- declare type RegisteredResourceNavigator = Omit<ResourceNavigator, "priority"> & RegisteredContributionMetadata;
1212
-
1213
1129
  declare type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
1214
1130
 
1215
1131
  declare type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
@@ -1238,11 +1154,14 @@ declare type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & Reg
1238
1154
 
1239
1155
  declare type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
1240
1156
 
1241
- declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
1157
+ declare interface ResolvedOwnedPlacement<Value = unknown> {
1158
+ identity: PlacementIdentity;
1159
+ region: WorkbenchRegion_2;
1160
+ order: number;
1161
+ value: Value;
1162
+ }
1242
1163
 
1243
- declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
1244
- priority: number;
1245
- };
1164
+ declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
1246
1165
 
1247
1166
  declare interface ResourceBrowseEntry {
1248
1167
  resource: ResourceRef;
@@ -1254,13 +1173,13 @@ declare interface ResourceBrowseEntry {
1254
1173
  }
1255
1174
 
1256
1175
  /** Row-level context menu action surfaced by the renderer. */
1257
- declare interface ResourceContextAction {
1176
+ declare interface ResourceContextAction<TNode = unknown> {
1258
1177
  key: string;
1259
1178
  label: string;
1260
1179
  onClick: () => Promise<void> | void;
1261
1180
  isDisabled?: boolean;
1262
- icon?: ReactNode;
1263
- endContent?: ReactNode;
1181
+ icon?: TNode;
1182
+ endContent?: TNode;
1264
1183
  separatorBefore?: boolean;
1265
1184
  }
1266
1185
 
@@ -1283,62 +1202,23 @@ declare interface ResourceKindContribution {
1283
1202
  kind: string;
1284
1203
  label: string;
1285
1204
  icon?: string;
1286
- surface?: ResourceSurface;
1287
- paletteOpenInput?: OpenResourceInput;
1288
1205
  }
1289
1206
 
1290
1207
  declare interface ResourceListContext {
1291
1208
  primary?: ResourceRef;
1292
1209
  }
1293
1210
 
1294
- declare interface ResourceNavigator<TResult = unknown> {
1295
- id: string;
1296
- priority?: number;
1297
- canNavigate(resource: ResourceRef): boolean;
1298
- createHref?(resource: ResourceRef): string;
1299
- navigate(resource: ResourceRef): TResult | Promise<TResult>;
1300
- }
1301
-
1302
- declare interface ResourcePresenter {
1303
- id: string;
1304
- priority?: number;
1305
- canOpen(resource: ResourceRef): boolean;
1306
- open(resource: ResourceRef, input: OpenResourceInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
1307
- afterOpen?(resource: ResourceRef, instance: WorkbenchPanelInstance, input: OpenResourceInput): void;
1308
- }
1309
-
1310
1211
  declare interface ResourceProvider {
1311
1212
  id: string;
1312
1213
  kind: string;
1313
1214
  list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
1314
1215
  }
1315
1216
 
1316
- declare interface ResourceRef {
1317
- kind: string;
1318
- uri: string;
1319
- id?: string;
1320
- label?: string;
1321
- icon?: string;
1322
- metadata?: Record<string, unknown>;
1323
- }
1324
-
1325
- declare interface ResourceRef_2 {
1326
- kind: string;
1327
- uri: string;
1328
- id?: string;
1329
- label?: string;
1330
- icon?: string;
1331
- metadata?: Record<string, unknown>;
1332
- }
1333
-
1334
1217
  declare interface ResourceRegistry {
1335
1218
  store: WorkbenchStore<ResourceRegistryStoreState>;
1336
1219
  registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable_2;
1337
1220
  getKind(kind: string): RegisteredResourceKind | undefined;
1338
- getSurface(resource: ResourceRef): ResourceSurface | undefined;
1339
1221
  listKinds(): RegisteredResourceKind[];
1340
- registerPresenter(presenter: ResourcePresenter): Disposable_2;
1341
- listPresenters(): ResolvedResourcePresenter[];
1342
1222
  registerProvider(provider: ResourceProvider): Disposable_2;
1343
1223
  listProviders(): ResourceProvider[];
1344
1224
  listResources(query: string): readonly ResourceBrowseEntry[];
@@ -1346,20 +1226,14 @@ declare interface ResourceRegistry {
1346
1226
  listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
1347
1227
  walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
1348
1228
  onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
1349
- isOpeningResource(): boolean;
1350
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
1351
- onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
1352
1229
  }
1353
1230
 
1354
1231
  declare interface ResourceRegistryStoreState {
1355
1232
  kinds: Record<string, RegisteredResourceKind>;
1356
- presenters: Record<string, ResolvedResourcePresenter>;
1357
1233
  providers: Record<string, ResourceProvider>;
1358
1234
  hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
1359
1235
  }
1360
1236
 
1361
- declare type ResourceSurface = "primary" | "secondary" | "attached";
1362
-
1363
1237
  /** Auto-rendered as a param editor from the registered preference schema. */
1364
1238
  declare interface SchemaSettingsPanel extends SettingsPanelBase {
1365
1239
  kind: "schema";
@@ -1368,8 +1242,6 @@ declare interface SchemaSettingsPanel extends SettingsPanelBase {
1368
1242
  save?: "live" | "apply";
1369
1243
  }
1370
1244
 
1371
- export declare const SETTINGS_RESOURCE_KIND = "workbench-settings";
1372
-
1373
1245
  /** A "+ create"-style action surfaced on a section or a collection's parent node. */
1374
1246
  declare interface SettingsAction {
1375
1247
  id: string;
@@ -1385,12 +1257,6 @@ declare interface SettingsCollectionGroupBy<TItem> {
1385
1257
  icon?(key: string): string | undefined;
1386
1258
  }
1387
1259
 
1388
- export declare const settingsItemResource: (panelId: string, item: {
1389
- id: string;
1390
- label: string;
1391
- icon?: string;
1392
- }) => ResourceRef;
1393
-
1394
1260
  declare interface SettingsPanelBase {
1395
1261
  id: string;
1396
1262
  title: string;
@@ -1404,7 +1270,7 @@ declare interface SettingsPanelBase {
1404
1270
  when?: string;
1405
1271
  }
1406
1272
 
1407
- declare type SettingsPanelContribution = SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel;
1273
+ declare type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
1408
1274
 
1409
1275
  /** A preference this panel edits; a bare string uses the preference name as its label. */
1410
1276
  declare type SettingsPanelPreference = string | {
@@ -1412,20 +1278,16 @@ declare type SettingsPanelPreference = string | {
1412
1278
  label?: string;
1413
1279
  };
1414
1280
 
1415
- export declare const settingsPanelResource: (panel: {
1416
- id: string;
1417
- title: string;
1418
- icon?: string;
1419
- }) => ResourceRef;
1420
-
1421
1281
  declare interface SettingsRegistry {
1422
1282
  store: WorkbenchStore<SettingsRegistryStoreState>;
1423
1283
  registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable_2;
1424
- registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1284
+ registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1425
1285
  getSection(id: string): RegisteredSettingsSection | undefined;
1426
1286
  getPanel(id: string): RegisteredSettingsPanel | undefined;
1427
1287
  listSections(): RegisteredSettingsSection[];
1428
1288
  listPanels(): RegisteredSettingsPanel[];
1289
+ resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
1290
+ getCollectionItem(panelId: string, itemId: string): unknown | undefined;
1429
1291
  /** Signal that a collection's backing data changed so the surface refreshes. */
1430
1292
  refresh(): void;
1431
1293
  }
@@ -1449,6 +1311,12 @@ declare interface SettingsSectionContribution {
1449
1311
  actions?: SettingsAction[];
1450
1312
  }
1451
1313
 
1314
+ /** Core-only panel ref for host-owned shell placements. Extensions cannot address them. */
1315
+ declare interface ShellPlacementRef {
1316
+ kind: "shell-placement";
1317
+ id: string;
1318
+ }
1319
+
1452
1320
  declare type SortDirection = "asc" | "desc";
1453
1321
 
1454
1322
  export declare const syncWorkbenchModuleHostRegistrations: (workbench: WorkbenchCore, registrations: Map<string, WorkbenchModuleHostRegistration>, modules: readonly WorkbenchModuleContribution[]) => void;
@@ -1460,17 +1328,8 @@ export declare const syncWorkbenchModuleHostRegistrations: (workbench: Workbench
1460
1328
  */
1461
1329
  declare type ThemePreference = string;
1462
1330
 
1463
- /**
1464
- * Core-owned contract for theme registrations. Structurally identical to
1465
- * @pstdio/ui's ThemePreferenceOption; the React layer bridges the two so core
1466
- * does not depend on UI package ownership.
1467
- */
1468
- declare type ThemePreference_2 = string;
1469
-
1470
1331
  declare type ThemePreferenceMode = "light" | "dark";
1471
1332
 
1472
- declare type ThemePreferenceMode_2 = "light" | "dark";
1473
-
1474
1333
  declare interface ThemePreferenceOption {
1475
1334
  id: ThemePreference;
1476
1335
  title?: string;
@@ -1479,18 +1338,8 @@ declare interface ThemePreferenceOption {
1479
1338
  monacoTheme?: unknown;
1480
1339
  }
1481
1340
 
1482
- declare interface ThemePreferenceOption_2 {
1483
- id: ThemePreference_2;
1484
- title?: string;
1485
- mode: ThemePreferenceMode_2;
1486
- tokens?: ThemePreferenceTokens_2;
1487
- monacoTheme?: unknown;
1488
- }
1489
-
1490
1341
  declare type ThemePreferenceTokens = Record<string, string>;
1491
1342
 
1492
- declare type ThemePreferenceTokens_2 = Record<string, string>;
1493
-
1494
1343
  declare interface ThemeRegistry {
1495
1344
  store: WorkbenchStore<WorkbenchThemeStoreState>;
1496
1345
  register(themes: readonly ThemePreferenceOption[]): Disposable_2;
@@ -1515,15 +1364,29 @@ export declare interface TreeActionParamsRequest {
1515
1364
  run: (args: unknown) => Promise<void>;
1516
1365
  }
1517
1366
 
1518
- declare interface TreeContext {
1519
- filter?: string;
1520
- resource?: ResourceRef;
1521
- /** Widget/view contribution id for trees rendered through a view-backed widget. */
1522
- viewId?: string;
1367
+ declare interface TreeContext extends TreeQueryContext {
1368
+ state: Readonly<TreeRendererState>;
1369
+ refresh(): void;
1370
+ setSelectedNode(nodeId: string | undefined): void;
1523
1371
  }
1524
1372
 
1373
+ declare interface TreeMoveEndpoint {
1374
+ kind: "section" | "node";
1375
+ sectionId: string;
1376
+ id: string;
1377
+ moveScope?: string;
1378
+ }
1379
+
1380
+ declare type TreeMovePolicy = (move: {
1381
+ source: TreeMoveEndpoint;
1382
+ destination: TreeMoveEndpoint;
1383
+ }) => boolean;
1384
+
1525
1385
  declare interface TreeNode {
1526
1386
  id: string;
1387
+ selected?: boolean;
1388
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
1389
+ moveScope?: string;
1527
1390
  label: string;
1528
1391
  icon?: string;
1529
1392
  iconElement?: unknown;
@@ -1568,6 +1431,13 @@ declare interface TreeNodeInlineInput {
1568
1431
 
1569
1432
  declare type TreeNodeRowVariant = "empty-state";
1570
1433
 
1434
+ declare interface TreeQueryContext {
1435
+ filter?: string;
1436
+ resource?: ResourceRef;
1437
+ /** Widget/view contribution id for trees rendered through a view-backed widget. */
1438
+ viewId?: string;
1439
+ }
1440
+
1571
1441
  declare interface TreeRendererContribution {
1572
1442
  id: string;
1573
1443
  title: string;
@@ -1578,9 +1448,10 @@ declare interface TreeRendererContribution {
1578
1448
  defaultExpandedSectionIds?: string[];
1579
1449
  defaultExpandedNodeIds?: string[];
1580
1450
  getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1581
- getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1582
- getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1451
+ getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1452
+ getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1583
1453
  getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1454
+ canMove?: TreeMovePolicy;
1584
1455
  moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
1585
1456
  }
1586
1457
 
@@ -1600,10 +1471,10 @@ declare interface TreeRendererRegistry {
1600
1471
  setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1601
1472
  getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1602
1473
  listTreeRenderers(): RegisteredTreeRendererContribution[];
1603
- getBody(id: string, ctx?: TreeContext): Promise<TreeViewSection[]>;
1604
- getHeader(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1605
- getFooter(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1606
- getChildren(id: string, node: TreeNode, ctx?: TreeContext): Promise<TreeNode[]>;
1474
+ getBody(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1475
+ getHeader(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1476
+ getFooter(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1477
+ getChildren(id: string, node: TreeNode, ctx?: TreeQueryContext): Promise<TreeNode[]>;
1607
1478
  getTreeState(id: string): TreeRendererState;
1608
1479
  setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1609
1480
  setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
@@ -1634,6 +1505,8 @@ declare interface TreeSectionEmptyState {
1634
1505
 
1635
1506
  declare interface TreeViewSection {
1636
1507
  id: string;
1508
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
1509
+ moveScope?: string;
1637
1510
  label?: string;
1638
1511
  actions?: TreeAction[];
1639
1512
  collapsible?: boolean;
@@ -1646,13 +1519,11 @@ declare interface TreeViewSection {
1646
1519
  canReorder?: boolean;
1647
1520
  }
1648
1521
 
1649
- export declare const useWorkbenchClaim: () => WorkbenchPanelRenderInput | undefined;
1650
-
1651
1522
  export declare const useWorkbenchResourceActionResolver: (workbench: WorkbenchCoreContributionContext) => (resource: ResourceRef) => ResourceContextAction_2[];
1652
1523
 
1653
1524
  export declare const useWorkbenchStore: <TState, TSlice>(store: WorkbenchStore<TState>, selector: (state: TState) => TSlice) => TSlice;
1654
1525
 
1655
- export declare const useWorkbenchThemePreferences: (workbench: WorkbenchCore) => (ThemePreferenceOption_2 | {
1526
+ export declare const useWorkbenchThemePreferences: (workbench: WorkbenchCore) => (ThemePreferenceOption | {
1656
1527
  id: string;
1657
1528
  mode: "light";
1658
1529
  } | {
@@ -1668,6 +1539,11 @@ export declare const useWorkbenchThemePreferences: (workbench: WorkbenchCore) =>
1668
1539
  */
1669
1540
  declare type ViewMode = "board" | "list";
1670
1541
 
1542
+ declare interface ViewSettingsPanel extends SettingsPanelBase {
1543
+ kind: "view";
1544
+ viewId: string;
1545
+ }
1546
+
1671
1547
  declare interface WidgetContribution {
1672
1548
  id: string;
1673
1549
  title: string;
@@ -1679,15 +1555,13 @@ declare interface WidgetContribution {
1679
1555
  mountStrategy?: WidgetMountStrategy;
1680
1556
  closable?: boolean;
1681
1557
  hiddenByDefault?: boolean;
1682
- subPanelsOnly?: boolean;
1683
1558
  regionSize?: WorkbenchRegionSize;
1684
1559
  regionCollapsible?: boolean;
1685
1560
  headerBorderBottom?: boolean;
1686
- floatingPanels?: WorkbenchFloatingPanelVisibility;
1687
1561
  resourceKinds?: string[];
1688
1562
  priority?: number;
1689
1563
  rendererId: string;
1690
- openCommandId?: string;
1564
+ openCommand?: WorkbenchCommandTarget;
1691
1565
  eligibleLocations?: WorkbenchLocationEligibility;
1692
1566
  panelMenuOwner?: WorkbenchPanelMenuOwner;
1693
1567
  tab?: WorkbenchWidgetTab;
@@ -1697,8 +1571,6 @@ declare interface WidgetContribution {
1697
1571
 
1698
1572
  declare type WidgetMountStrategy = "active" | "keep-mounted";
1699
1573
 
1700
- declare type WidgetMountStrategy_2 = "active" | "keep-mounted";
1701
-
1702
1574
  declare type WidgetReusePolicy = "resource" | "none";
1703
1575
 
1704
1576
  export declare const Workbench: (props: WorkbenchProps) => JSX.Element;
@@ -1711,10 +1583,14 @@ export declare const WORKBENCH_SETTINGS_PANEL_WIDGET_ID = "workbench.settings.pa
1711
1583
 
1712
1584
  export declare const WORKBENCH_SETTINGS_WIDGET_ID = "workbench.settings";
1713
1585
 
1714
- export declare const WORKBENCH_TERMINAL_LAUNCHER_WIDGET_ID = "workbench.terminal.launcher";
1715
-
1716
1586
  export declare const WORKBENCH_TERMINAL_OPEN_COMMAND_ID = "workbench.terminal.open";
1717
1587
 
1588
+ /** Suggested secondary-region size for hosts that mount the terminal (createWorkbench regionSettings). */
1589
+ export declare const WORKBENCH_TERMINAL_PANEL_SIZE: {
1590
+ defaultPx: number;
1591
+ minPx: number;
1592
+ };
1593
+
1718
1594
  export declare const WORKBENCH_TERMINAL_WIDGET_ID = "workbench.terminal";
1719
1595
 
1720
1596
  export declare const WorkbenchAttachedSidePanel: (props: WorkbenchSidePanelProps) => JSX.Element;
@@ -1748,15 +1624,6 @@ declare interface WorkbenchBreadcrumbViewProps {
1748
1624
  workbench: WorkbenchCore;
1749
1625
  }
1750
1626
 
1751
- export declare const WorkbenchClaimContext: Context<WorkbenchPanelRenderInput | undefined>;
1752
-
1753
- declare interface WorkbenchClosedSubPanel {
1754
- region: WorkbenchPanelRegion;
1755
- reference: WorkbenchSubPanelRef;
1756
- resource?: ResourceRef;
1757
- title?: string;
1758
- }
1759
-
1760
1627
  declare interface WorkbenchCommandExecutionContext {
1761
1628
  resource?: ResourceRef;
1762
1629
  source?: "panel-add";
@@ -1809,7 +1676,7 @@ declare interface WorkbenchCommandPaletteState {
1809
1676
  paramsRequest: WorkbenchCommandParamsRequest | null;
1810
1677
  }
1811
1678
 
1812
- declare type WorkbenchCommandPaletteView = "main" | "theme" | "mode";
1679
+ declare type WorkbenchCommandPaletteView = "main" | "theme";
1813
1680
 
1814
1681
  declare interface WorkbenchCommandParamsRequest {
1815
1682
  record: {
@@ -1824,8 +1691,14 @@ declare interface WorkbenchCommandParamsRequest {
1824
1691
  context?: WorkbenchCommandExecutionContext;
1825
1692
  }
1826
1693
 
1694
+ declare interface WorkbenchCommandTarget {
1695
+ commandId: string;
1696
+ args?: unknown;
1697
+ }
1698
+
1827
1699
  declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
1828
1700
  contribution: RegisteredWidgetContribution;
1701
+ open?(resource?: ResourceRef): void;
1829
1702
  }
1830
1703
 
1831
1704
  declare interface WorkbenchCompositionController {
@@ -1846,6 +1719,8 @@ declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
1846
1719
  }
1847
1720
 
1848
1721
  declare interface WorkbenchCoreContributionContext {
1722
+ pinPlacement(identity: PlacementIdentity): void;
1723
+ closePlacement(identity: PlacementIdentity): void;
1849
1724
  breadcrumbs: WorkbenchBreadcrumbController;
1850
1725
  commandPalette: WorkbenchCommandPaletteController;
1851
1726
  commandPaletteResources: CommandPaletteResourceRegistry;
@@ -1853,19 +1728,24 @@ declare interface WorkbenchCoreContributionContext {
1853
1728
  composition: WorkbenchCompositionController;
1854
1729
  context: ContextKeyService;
1855
1730
  focus: WorkbenchFocusController;
1856
- history: HistoryController;
1857
1731
  keybindings: KeybindingRegistry;
1858
- lastResource: WorkbenchLastResourceController;
1859
1732
  layout: WorkbenchModuleLayoutModel;
1860
1733
  modes: WorkbenchModeRegistry;
1734
+ modePlacements: WorkbenchModePlacementRegistry;
1735
+ shellPlacements: WorkbenchShellPlacementRegistry;
1861
1736
  navigation: NavigationRegistry;
1862
- navigator: WorkbenchNavigator;
1737
+ navigationTrees: NavigationTreeRegistry;
1863
1738
  notifications: NotificationRegistry;
1864
- panels: WorkbenchPanelsController;
1739
+ overlays: WorkbenchOverlayRegistry;
1740
+ placeholders: WorkbenchPlaceholderRegistry;
1741
+ pageLocations: WorkbenchPageLocationController;
1742
+ pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
1743
+ panelMenuState: WorkbenchPanelMenuStateController;
1865
1744
  preferences: PreferenceRegistry;
1866
- renderers: WorkbenchRenderers;
1745
+ treeViews: WorkbenchTreeViews;
1867
1746
  resources: ResourceRegistry;
1868
1747
  views: WorkbenchViewRegistry;
1748
+ viewMenus: WorkbenchViewMenuRegistry;
1869
1749
  settings: SettingsRegistry;
1870
1750
  statusBar: WorkbenchStatusBarRegistry;
1871
1751
  statuses: WorkbenchStatusRegistry;
@@ -1878,6 +1758,7 @@ declare interface WorkbenchCoreContributionContext {
1878
1758
  onDidChangePrimaryResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1879
1759
  getActiveResource(): ResourceRef | undefined;
1880
1760
  onDidChangeActiveResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1761
+ registerChildModule(module: WorkbenchModuleContribution): Disposable_2;
1881
1762
  }
1882
1763
 
1883
1764
  export declare const WorkbenchDataTableView: (props: WorkbenchDataTableViewProps) => JSX.Element;
@@ -1892,8 +1773,6 @@ declare interface WorkbenchFileIconThemeStoreState {
1892
1773
  themes: readonly FileIconThemePreferenceOption[];
1893
1774
  }
1894
1775
 
1895
- declare type WorkbenchFloatingPanelVisibility = "visible" | "hidden";
1896
-
1897
1776
  export declare const WorkbenchFloatingSidePanel: (props: WorkbenchSidePanelProps) => JSX.Element | null;
1898
1777
 
1899
1778
  declare type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
@@ -1942,7 +1821,7 @@ declare interface WorkbenchHost {
1942
1821
  }
1943
1822
 
1944
1823
  export declare interface WorkbenchHotkeyRegistration {
1945
- commandId: string;
1824
+ id: string;
1946
1825
  hotkey: KeybindingSequence;
1947
1826
  enabled: boolean;
1948
1827
  ignoreInputs: boolean;
@@ -1956,12 +1835,6 @@ declare interface WorkbenchIconProps extends Omit<IconProps, "as" | "size"> {
1956
1835
  size?: number | string;
1957
1836
  }
1958
1837
 
1959
- export declare const WorkbenchKeepAliveLayer: (props: WorkbenchKeepAliveLayerProps) => JSX.Element;
1960
-
1961
- declare interface WorkbenchKeepAliveLayerProps {
1962
- workbench: WorkbenchCore;
1963
- }
1964
-
1965
1838
  export declare const WorkbenchKeybindingDispatcher: (props: WorkbenchKeybindingDispatcherProps) => null;
1966
1839
 
1967
1840
  declare interface WorkbenchKeybindingDispatcherProps {
@@ -1970,18 +1843,12 @@ declare interface WorkbenchKeybindingDispatcherProps {
1970
1843
  commandIds?: readonly string[];
1971
1844
  }
1972
1845
 
1973
- declare interface WorkbenchLastResourceController {
1974
- get(): ResourceRef | undefined;
1975
- set(resource: ResourceRef | undefined): void;
1976
- restore(): Promise<boolean>;
1977
- }
1978
-
1979
1846
  declare interface WorkbenchLayout {
1980
1847
  regions: Record<WorkbenchRegion_2, WorkbenchRegionState>;
1981
1848
  locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
1982
1849
  activeWidgetId?: string;
1983
1850
  activeLocationWidgetId?: string;
1984
- activeResourceUri?: string;
1851
+ activeResourceKey?: string;
1985
1852
  }
1986
1853
 
1987
1854
  declare type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
@@ -1992,8 +1859,6 @@ declare interface WorkbenchLayoutStoreState {
1992
1859
  placeholders: Partial<Record<WorkbenchRegion_2, RegisteredPlaceholderContribution>>;
1993
1860
  }
1994
1861
 
1995
- declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
1996
-
1997
1862
  declare interface WorkbenchLocationEligibility {
1998
1863
  modeIds?: string[];
1999
1864
  resourceKinds?: string[];
@@ -2005,16 +1870,6 @@ declare interface WorkbenchLocationEligibility {
2005
1870
  }): boolean;
2006
1871
  }
2007
1872
 
2008
- declare interface WorkbenchLocationRef {
2009
- key: string;
2010
- modeId?: string;
2011
- viewId?: string;
2012
- resource?: ResourceRef;
2013
- contributionId?: string;
2014
- instanceKey?: string;
2015
- title?: string;
2016
- }
2017
-
2018
1873
  export declare interface WorkbenchMenuItem {
2019
1874
  id: string;
2020
1875
  commandId: string;
@@ -2055,7 +1910,12 @@ declare type WorkbenchModeChangeListener = () => void;
2055
1910
  declare interface WorkbenchModeContribution {
2056
1911
  id: string;
2057
1912
  label?: string;
1913
+ defaultTheme?: string;
1914
+ floatingPanels?: "visible" | "hidden";
1915
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
2058
1916
  panels?: readonly WorkbenchPanelRegion[];
1917
+ /** Region-level layout policy while this mode is active. */
1918
+ regionSettings?: Partial<Record<WorkbenchRegion_2, WorkbenchRegionSettings>>;
2059
1919
  resourceKinds?: readonly string[];
2060
1920
  defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
2061
1921
  listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
@@ -2065,6 +1925,31 @@ declare interface WorkbenchModeContribution {
2065
1925
  reconcile?(ctx: WorkbenchModeActivationContext): void;
2066
1926
  }
2067
1927
 
1928
+ declare interface WorkbenchModePlacementContribution extends WorkbenchPlacementPresentation {
1929
+ readonly id: string;
1930
+ readonly ref: PlacementRef;
1931
+ readonly modeId: string;
1932
+ readonly item: WorkbenchOwnedPlacementItem;
1933
+ readonly region: DockedWorkbenchRegion;
1934
+ readonly order?: number;
1935
+ readonly movableTo?: readonly DockedWorkbenchRegion[];
1936
+ }
1937
+
1938
+ declare interface WorkbenchModePlacementRegistry {
1939
+ registerPlacement(placement: WorkbenchModePlacementContribution): Disposable_2;
1940
+ getPlacement(ref: PlacementRef): WorkbenchModePlacementContribution | undefined;
1941
+ listPlacements(modeId?: string): WorkbenchModePlacementContribution[];
1942
+ openPlacement(input: OpenModePlacementTarget): PlacementIdentity;
1943
+ updatePlacement(identity: PlacementIdentity, input: {
1944
+ resource?: ResourceRef;
1945
+ title?: string;
1946
+ open?: PageOpenIntent;
1947
+ }): void;
1948
+ closePlacement(identity: PlacementIdentity): void;
1949
+ resolvePlacements(modeId: string, context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
1950
+ onDidChange(listener: () => void): Disposable_2;
1951
+ }
1952
+
2068
1953
  declare interface WorkbenchModeRegistry {
2069
1954
  store: WorkbenchStore<WorkbenchModeStoreState>;
2070
1955
  dispose(): void;
@@ -2109,77 +1994,7 @@ export declare interface WorkbenchModuleHostRegistration {
2109
1994
  disposable: Disposable_2;
2110
1995
  }
2111
1996
 
2112
- declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerWidget">;
2113
-
2114
- declare interface WorkbenchNavigationCommit {
2115
- modeId: string | undefined;
2116
- resource: ResourceRef | undefined;
2117
- replaceActive: boolean;
2118
- }
2119
-
2120
- declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
2121
-
2122
- declare interface WorkbenchNavigationEntry {
2123
- entryId: string;
2124
- recordedAt: number;
2125
- location: WorkbenchLocationRef;
2126
- selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
2127
- kind: "resource" | "view" | "widget" | "mode";
2128
- modeId?: string;
2129
- resource?: ResourceRef;
2130
- viewId?: string;
2131
- widgetId?: string;
2132
- contributionId?: string;
2133
- title?: string;
2134
- closedSubPanel?: WorkbenchClosedSubPanel;
2135
- }
2136
-
2137
- declare type WorkbenchNavigationResult = {
2138
- ok: true;
2139
- modeId: string | undefined;
2140
- resource: ResourceRef | undefined;
2141
- } | {
2142
- ok: false;
2143
- code: WorkbenchNavigationDiagnosticCode;
2144
- message: string;
2145
- };
2146
-
2147
- declare interface WorkbenchNavigationTarget {
2148
- modeId?: string;
2149
- resource?: ResourceRef;
2150
- replaceActive?: boolean;
2151
- }
2152
-
2153
- declare interface WorkbenchNavigator {
2154
- configure(hooks: WorkbenchNavigatorHostHooks): void;
2155
- getSelectedResource(): ResourceRef | undefined;
2156
- open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
2157
- commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
2158
- getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
2159
- forgetResource(uri: string): void;
2160
- onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
2161
- dispose(): void;
2162
- };
2163
- }
2164
-
2165
- declare interface WorkbenchNavigatorCommitInput {
2166
- modeId?: string | null;
2167
- resource?: ResourceRef | null;
2168
- replaceActive?: boolean;
2169
- present?: boolean;
2170
- }
2171
-
2172
- declare interface WorkbenchNavigatorHostHooks {
2173
- getProjectId?(): string | undefined;
2174
- getSelectedResource?(): ResourceRef | undefined;
2175
- interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
2176
- applySelection?(resource: ResourceRef | undefined): void;
2177
- applyScope?(commit: WorkbenchNavigationCommit): void;
2178
- applyBreadcrumb?(resource: ResourceRef | undefined): void;
2179
- presentResource?(resource: ResourceRef, input: {
2180
- replaceActive: boolean;
2181
- }): Promise<unknown> | unknown;
2182
- }
1997
+ declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
2183
1998
 
2184
1999
  declare interface WorkbenchNotification {
2185
2000
  id?: string;
@@ -2221,12 +2036,26 @@ declare interface WorkbenchNotificationStoreState {
2221
2036
  notifications: Record<string, RegisteredWorkbenchNotification>;
2222
2037
  }
2223
2038
 
2039
+ declare interface WorkbenchOverlayContribution extends Omit<WorkbenchPlacementPresentation, "mountStrategy"> {
2040
+ id: string;
2041
+ viewId: string;
2042
+ closable?: boolean;
2043
+ }
2044
+
2224
2045
  export declare const WorkbenchOverlayLayer: (props: WorkbenchOverlayLayerProps) => JSX.Element | null;
2225
2046
 
2226
2047
  declare interface WorkbenchOverlayLayerProps {
2227
2048
  workbench: WorkbenchCore;
2228
2049
  }
2229
2050
 
2051
+ declare interface WorkbenchOverlayRegistry {
2052
+ registerOverlay(overlay: WorkbenchOverlayContribution): Disposable_2;
2053
+ getOverlay(id: string): WorkbenchOverlayContribution | undefined;
2054
+ listOverlays(): WorkbenchOverlayContribution[];
2055
+ openOverlay(id: string, input?: OpenWorkbenchOverlayInput): string;
2056
+ closeOverlay(instanceId: string): void;
2057
+ }
2058
+
2230
2059
  export declare interface WorkbenchOverlayWidgetConfig {
2231
2060
  size?: "xs" | "sm" | "md" | "lg" | "xl" | "cover" | "full";
2232
2061
  placement?: "center" | "top" | "bottom";
@@ -2247,6 +2076,107 @@ export declare interface WorkbenchOverlayWidgetConfig {
2247
2076
  closeTriggerTop?: string;
2248
2077
  }
2249
2078
 
2079
+ declare type WorkbenchOwnedPlacementItem = PlacementItem;
2080
+
2081
+ declare interface WorkbenchPageContribution {
2082
+ id: string;
2083
+ ref: PageRef;
2084
+ title?: Localizable<string>;
2085
+ icon?: string;
2086
+ path: string;
2087
+ modeId: string;
2088
+ parentId?: string;
2089
+ resource?: ResourceConstraint;
2090
+ main: WorkbenchPageMain;
2091
+ slots: readonly WorkbenchPageSlot[];
2092
+ }
2093
+
2094
+ declare interface WorkbenchPageLocationController {
2095
+ historyStore: WorkbenchStore<WorkbenchPageLocationHistoryState>;
2096
+ setProject(projectId: string): void;
2097
+ clearProject(): void;
2098
+ isCurrentProjectUrl(projectId: string): boolean;
2099
+ hasCurrentPageUrl(projectId: string): boolean;
2100
+ boot(projectId: string): WorkbenchPageNavigationResult;
2101
+ switchProject(projectId: string): WorkbenchPageNavigationResult;
2102
+ navigate(target: NavigationTargetPage_2): WorkbenchPageNavigationResult;
2103
+ replay(location: PageLocation): WorkbenchPageNavigationResult;
2104
+ navigateToParent(): WorkbenchPageNavigationResult;
2105
+ closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
2106
+ goBack(): void;
2107
+ goForward(): void;
2108
+ dispose(): void;
2109
+ }
2110
+
2111
+ declare interface WorkbenchPageLocationDiagnostic {
2112
+ code: "page-location-unresolved";
2113
+ source: "boot" | "history" | "navigation" | "project-switch";
2114
+ message: string;
2115
+ }
2116
+
2117
+ declare interface WorkbenchPageLocationHistoryState {
2118
+ canGoBack: boolean;
2119
+ canGoForward: boolean;
2120
+ }
2121
+
2122
+ declare type WorkbenchPageMain = PageMain extends infer Main ? Main extends PageMain ? Omit<Main, "tab"> & {
2123
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
2124
+ } : never : never;
2125
+
2126
+ declare type WorkbenchPageNavigationResult = {
2127
+ ok: true;
2128
+ location: PageLocation;
2129
+ } | {
2130
+ ok: false;
2131
+ diagnostic: WorkbenchPageLocationDiagnostic;
2132
+ };
2133
+
2134
+ declare interface WorkbenchPageRegistry<Value> {
2135
+ store: WorkbenchStore<WorkbenchPageRegistryStoreState<Value>>;
2136
+ registerPage(page: WorkbenchPageContribution): {
2137
+ dispose(): void;
2138
+ };
2139
+ getPage(pageId: string): WorkbenchPageContribution | undefined;
2140
+ listPages(): WorkbenchPageContribution[];
2141
+ pinPlacement(identity: PlacementIdentity): void;
2142
+ openSlot(input: WorkbenchPageSlotOpenInput): void;
2143
+ }
2144
+
2145
+ declare interface WorkbenchPageRegistryStoreState<Value> {
2146
+ pages: Readonly<Record<string, WorkbenchPageContribution>>;
2147
+ pageStates: Readonly<Record<string, WorkbenchPageRuntimeState>>;
2148
+ projectId?: string;
2149
+ location?: PageLocation;
2150
+ activeModeId?: string;
2151
+ activePageId?: string;
2152
+ placements: readonly ResolvedOwnedPlacement<Value>[];
2153
+ reconciliation: OwnedPlacementReconciliation<Value>;
2154
+ }
2155
+
2156
+ declare interface WorkbenchPageRuntimeState {
2157
+ openStaticSlotIds: readonly string[];
2158
+ resourceInstances: Readonly<Record<string, readonly WorkbenchPageSlotInstance[]>>;
2159
+ activePrimaryInstanceKey?: string;
2160
+ }
2161
+
2162
+ declare interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
2163
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
2164
+ }
2165
+
2166
+ declare interface WorkbenchPageSlotInstance {
2167
+ instanceKey: string;
2168
+ resource: ResourceRef;
2169
+ section?: FileRendererSectionTarget;
2170
+ open?: PageOpenIntent;
2171
+ }
2172
+
2173
+ declare interface WorkbenchPageSlotOpenInput {
2174
+ pageId: string;
2175
+ slotId: string;
2176
+ resource?: ResourceRef;
2177
+ open?: PageOpenIntent;
2178
+ }
2179
+
2250
2180
  declare interface WorkbenchPanelContribution {
2251
2181
  id: string;
2252
2182
  title: string;
@@ -2257,16 +2187,15 @@ declare interface WorkbenchPanelContribution {
2257
2187
  singleton?: boolean;
2258
2188
  reuse?: WorkbenchPanelReusePolicy;
2259
2189
  mountStrategy?: WorkbenchPanelMountStrategy;
2190
+ closable?: boolean;
2260
2191
  hiddenByDefault?: boolean;
2261
- subPanelsOnly?: boolean;
2262
2192
  regionSize?: WorkbenchRegionSize;
2263
2193
  regionCollapsible?: boolean;
2264
2194
  headerBorderBottom?: boolean;
2265
- floatingPanels?: WorkbenchFloatingPanelVisibility;
2266
2195
  resourceKinds?: string[];
2267
2196
  eligibleLocations?: WorkbenchLocationEligibility;
2268
2197
  priority?: number;
2269
- openCommandId?: string;
2198
+ openCommand?: WorkbenchCommandTarget;
2270
2199
  tab?: WorkbenchPanelTab;
2271
2200
  config?: unknown;
2272
2201
  canOpen?(resource: ResourceRef): boolean;
@@ -2278,12 +2207,14 @@ declare interface WorkbenchPanelContribution {
2278
2207
  declare interface WorkbenchPanelInstance {
2279
2208
  instanceId: string;
2280
2209
  panelId: string;
2210
+ placementIdentity?: PlacementIdentity;
2281
2211
  viewId?: string;
2282
2212
  ownerId?: string;
2283
2213
  source?: ContributionSource;
2284
2214
  resource?: ResourceRef;
2285
- resourceUri?: string;
2286
- ownerResourceUri?: string;
2215
+ section?: FileRendererSectionTarget;
2216
+ resourceKey?: string;
2217
+ ownerResourceKey?: string;
2287
2218
  title?: string;
2288
2219
  pinned?: boolean;
2289
2220
  closable: boolean;
@@ -2293,24 +2224,6 @@ declare interface WorkbenchPanelInstance {
2293
2224
  tab?: WorkbenchPanelTab;
2294
2225
  }
2295
2226
 
2296
- declare interface WorkbenchPanelInstance_2 {
2297
- instanceId: string;
2298
- panelId: string;
2299
- viewId?: string;
2300
- ownerId?: string;
2301
- source?: ContributionSource_2;
2302
- resource?: ResourceRef_2;
2303
- resourceUri?: string;
2304
- ownerResourceUri?: string;
2305
- title?: string;
2306
- pinned?: boolean;
2307
- closable: boolean;
2308
- mountStrategy?: WorkbenchPanelMountStrategy_2;
2309
- hiddenByDefault?: boolean;
2310
- tabRetention?: WorkbenchTabRetention_2;
2311
- tab?: WorkbenchPanelTab_2;
2312
- }
2313
-
2314
2227
  declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2315
2228
  region: WorkbenchPanelMenuRegion;
2316
2229
  fallbackRegion?: WorkbenchPanelMenuRegion;
@@ -2358,15 +2271,25 @@ declare const workbenchPanelMenuRegions: {
2358
2271
  };
2359
2272
  };
2360
2273
 
2361
- declare interface WorkbenchPanelMenusContribution {
2362
- panelMenus?: readonly WorkbenchPanelMenuDefinition[];
2274
+ declare type WorkbenchPanelMenuSide = "left" | "right";
2275
+
2276
+ declare interface WorkbenchPanelMenuState {
2277
+ openByMenuId: Record<string, boolean>;
2363
2278
  }
2364
2279
 
2365
- declare type WorkbenchPanelMenuSide = "left" | "right";
2280
+ declare type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
2366
2281
 
2367
- declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
2282
+ declare interface WorkbenchPanelMenuStateController {
2283
+ store: WorkbenchStore<WorkbenchPanelMenuState>;
2284
+ isOpen(menuId: string): boolean;
2285
+ setOpen(menuId: string, open: boolean): void;
2286
+ toggle(menuId: string): void;
2287
+ setPersistenceScope(scope: string | undefined): void;
2288
+ getPersistenceScope(): string | undefined;
2289
+ onDidChange(listener: WorkbenchPanelMenuStateChangeListener): Disposable_2;
2290
+ }
2368
2291
 
2369
- declare type WorkbenchPanelMountStrategy_2 = WidgetMountStrategy_2;
2292
+ declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
2370
2293
 
2371
2294
  declare type WorkbenchPanelOpenStrategy = {
2372
2295
  kind: "persistent";
@@ -2395,25 +2318,29 @@ export declare interface WorkbenchPanelRenderInput {
2395
2318
 
2396
2319
  declare type WorkbenchPanelReusePolicy = WidgetReusePolicy;
2397
2320
 
2398
- declare type WorkbenchPanelsChangeListener = (state: WorkbenchPanelsState) => void;
2321
+ declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2399
2322
 
2400
- declare interface WorkbenchPanelsController {
2401
- store: WorkbenchStore<WorkbenchPanelsState>;
2402
- isOpen(regionId: string): boolean;
2403
- setOpen(regionId: string, open: boolean): void;
2404
- toggle(regionId: string): void;
2405
- setPersistenceScope(scope: string | undefined): void;
2406
- getPersistenceScope(): string | undefined;
2407
- onDidChange(listener: WorkbenchPanelsChangeListener): Disposable_2;
2323
+ declare interface WorkbenchPlaceholderContribution {
2324
+ id: string;
2325
+ viewId: string;
2326
+ title?: string;
2327
+ region: WorkbenchRegion_2;
2328
+ regionSize?: WorkbenchRegionSize;
2329
+ regionCollapsible?: boolean;
2330
+ config?: unknown;
2408
2331
  }
2409
2332
 
2410
- declare interface WorkbenchPanelsState {
2411
- openByRegionId: Record<string, boolean>;
2333
+ declare interface WorkbenchPlaceholderRegistry {
2334
+ registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable_2;
2412
2335
  }
2413
2336
 
2414
- declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2415
-
2416
- declare type WorkbenchPanelTab_2 = WorkbenchWidgetTab_2;
2337
+ declare interface WorkbenchPlacementPresentation {
2338
+ mountStrategy?: WidgetMountStrategy;
2339
+ hiddenByDefault?: boolean;
2340
+ headerBorderBottom?: boolean;
2341
+ tab?: WorkbenchPanelTab;
2342
+ config?: unknown;
2343
+ }
2417
2344
 
2418
2345
  export declare const WorkbenchPreferencesForm: (props: WorkbenchPreferencesFormProps) => JSX.Element;
2419
2346
 
@@ -2433,6 +2360,15 @@ export declare interface WorkbenchPreferencesFormProps {
2433
2360
  declare interface WorkbenchProps {
2434
2361
  workbench: WorkbenchCore;
2435
2362
  renderParamField?: CommandParamFieldRenderer;
2363
+ /** Icon shown in the closed Side Panel's bubble launcher. */
2364
+ sidePanelBubbleIcon?: ReactNode;
2365
+ /** Host action for opening the closed Side Panel from its bubble launcher. */
2366
+ onOpenSidePanel?: () => void;
2367
+ }
2368
+
2369
+ declare interface WorkbenchReactViewBody {
2370
+ kind: "react";
2371
+ render: WorkbenchRendererRegistration["render"];
2436
2372
  }
2437
2373
 
2438
2374
  export declare const WorkbenchRegion: (props: WorkbenchRegionProps) => JSX.Element | null;
@@ -2447,7 +2383,10 @@ declare interface WorkbenchRegionProps {
2447
2383
  transparent?: boolean;
2448
2384
  }
2449
2385
 
2450
- 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"];
2386
+ declare const workbenchRegions: readonly ["nav", "activity", "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"];
2387
+
2388
+ /** Region-level layout policy owned by the active mode or the host, never by a placement. */
2389
+ declare type WorkbenchRegionSettings = ModeRegionSettings;
2451
2390
 
2452
2391
  declare interface WorkbenchRegionSize {
2453
2392
  defaultPx?: number;
@@ -2471,35 +2410,9 @@ declare interface WorkbenchRegionTabsProps {
2471
2410
  visibilityStorageKey?: string;
2472
2411
  }
2473
2412
 
2474
- declare type WorkbenchRendererChangeListener = () => void;
2475
-
2476
- export declare type WorkbenchRendererRegistration = {
2413
+ declare interface WorkbenchRendererRegistration {
2477
2414
  id: string;
2478
- keepAlive?: false;
2479
2415
  render: (input: WorkbenchPanelRenderInput) => unknown;
2480
- } | {
2481
- id: string;
2482
- keepAlive: true;
2483
- render: () => unknown;
2484
- };
2485
-
2486
- export declare interface WorkbenchRendererRegistry {
2487
- store: WorkbenchStore<WorkbenchRendererStoreState>;
2488
- registerRenderer(renderer: WorkbenchRendererRegistration): Disposable_2;
2489
- getRenderer(id: string): WorkbenchRendererRegistration | undefined;
2490
- listRenderers(): WorkbenchRendererRegistration[];
2491
- onDidChange(listener: WorkbenchRendererChangeListener): Disposable_2;
2492
- claim(rendererId: string, slot: HTMLElement, input: WorkbenchPanelRenderInput): Disposable_2;
2493
- getHost(rendererId: string): HTMLElement | undefined;
2494
- getClaim(rendererId: string): WorkbenchPanelRenderInput | undefined;
2495
- }
2496
-
2497
- declare type WorkbenchRenderers = WorkbenchRendererRegistry & TreeRendererRegistry & KanbanRendererRegistry & DataTableRendererRegistry & FileRendererRegistry & ControlsRendererRegistry;
2498
-
2499
- declare interface WorkbenchRendererStoreState {
2500
- renderers: Record<string, WorkbenchRendererRegistration>;
2501
- hosts: Record<string, RegisteredKeepAliveHost>;
2502
- claims: Record<string, WorkbenchPanelRenderInput>;
2503
2416
  }
2504
2417
 
2505
2418
  export declare interface WorkbenchSettingsModuleOptions {
@@ -2518,7 +2431,29 @@ declare interface WorkbenchShellController {
2518
2431
  onDidChange(listener: () => void): Disposable_2;
2519
2432
  }
2520
2433
 
2521
- declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | WorkbenchPanelMenuRegion;
2434
+ declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | "side";
2435
+
2436
+ declare interface WorkbenchShellPlacementContribution extends WorkbenchPlacementPresentation {
2437
+ readonly id: string;
2438
+ readonly item: WorkbenchOwnedPlacementItem;
2439
+ readonly region: WorkbenchRegion_2;
2440
+ readonly order?: number;
2441
+ }
2442
+
2443
+ declare interface WorkbenchShellPlacementRegistry {
2444
+ registerPlacement(placement: WorkbenchShellPlacementContribution): Disposable_2;
2445
+ getPlacement(placementId: string): WorkbenchShellPlacementContribution | undefined;
2446
+ listPlacements(): WorkbenchShellPlacementContribution[];
2447
+ openPlacement(input: OpenWorkbenchShellPlacementInput): PlacementIdentity;
2448
+ updatePlacement(identity: PlacementIdentity, input: {
2449
+ resource?: ResourceRef;
2450
+ title?: string;
2451
+ open?: PageOpenIntent;
2452
+ }): void;
2453
+ closePlacement(identity: PlacementIdentity): void;
2454
+ resolvePlacements(context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
2455
+ onDidChange(listener: () => void): Disposable_2;
2456
+ }
2522
2457
 
2523
2458
  declare interface WorkbenchShellRegionState {
2524
2459
  open: boolean;
@@ -2528,6 +2463,7 @@ declare interface WorkbenchShellRegionState {
2528
2463
  declare type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
2529
2464
 
2530
2465
  declare interface WorkbenchSidePanelController {
2466
+ canFloat(): boolean;
2531
2467
  store: WorkbenchStore<WorkbenchSidePanelState>;
2532
2468
  getMode(): WorkbenchSidePanelMode;
2533
2469
  setMode(mode: WorkbenchSidePanelMode): void;
@@ -2543,6 +2479,8 @@ declare interface WorkbenchSidePanelProps {
2543
2479
  contentSlotRef: (node: HTMLDivElement | null) => void;
2544
2480
  bottomOffset?: string;
2545
2481
  header?: ReactNode;
2482
+ bubbleIcon?: ReactNode;
2483
+ onOpen?: () => void;
2546
2484
  }
2547
2485
 
2548
2486
  declare interface WorkbenchSidePanelState {
@@ -2615,15 +2553,26 @@ declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
2615
2553
 
2616
2554
  declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
2617
2555
 
2618
- declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2619
- region: WorkbenchPanelRegion;
2620
- fallbackRegion?: WorkbenchPanelRegion;
2621
- } & WorkbenchPanelMenusContribution;
2556
+ declare type WorkbenchTabAction = ({
2557
+ kind: "command";
2558
+ } & WorkbenchCommandTarget) | {
2559
+ kind: "navigation";
2560
+ target: NavigationTarget;
2561
+ };
2622
2562
 
2623
- declare interface WorkbenchSubPanelRef {
2624
- contributionId: string;
2625
- resourceUri?: string;
2626
- instanceKey?: string;
2563
+ declare interface WorkbenchTabMenuGroup {
2564
+ id: string;
2565
+ rows: readonly WorkbenchTabMenuRow[];
2566
+ }
2567
+
2568
+ declare interface WorkbenchTabMenuRow {
2569
+ id: string;
2570
+ label: string;
2571
+ icon?: string;
2572
+ iconColor?: string;
2573
+ selected?: boolean;
2574
+ disabled?: boolean;
2575
+ action?: WorkbenchTabAction;
2627
2576
  }
2628
2577
 
2629
2578
  declare type WorkbenchTabPosition = "start" | "end" | {
@@ -2634,7 +2583,16 @@ declare type WorkbenchTabPosition = "start" | "end" | {
2634
2583
 
2635
2584
  declare type WorkbenchTabRetention = "preview" | "persistent";
2636
2585
 
2637
- declare type WorkbenchTabRetention_2 = "preview" | "persistent";
2586
+ declare interface WorkbenchTabSnapshot {
2587
+ label?: string;
2588
+ icon?: string;
2589
+ indicator?: {
2590
+ icon: string;
2591
+ color?: string;
2592
+ label?: string;
2593
+ };
2594
+ menu?: readonly WorkbenchTabMenuGroup[];
2595
+ }
2638
2596
 
2639
2597
  declare interface WorkbenchTerminalController {
2640
2598
  store: WorkbenchStore<WorkbenchTerminalState>;
@@ -2734,12 +2692,14 @@ declare interface WorkbenchTerminalState {
2734
2692
  sessionsById: Record<string, WorkbenchTerminalSessionModel>;
2735
2693
  }
2736
2694
 
2737
- export declare const WorkbenchThemeProvider: (props: WorkbenchThemeProviderProps) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | ReactPortal | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | JSX.Element | null | undefined;
2695
+ export declare const WorkbenchThemeProvider: (props: WorkbenchThemeProviderProps) => string | number | bigint | boolean | JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | ReactPortal | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
2738
2696
 
2739
2697
  declare interface WorkbenchThemeProviderProps {
2740
2698
  children: ReactNode;
2741
- initialThemePreference?: ThemePreference_3;
2742
- themePreferences?: readonly ThemePreferenceOption_3[];
2699
+ initialThemePreference?: ThemePreference_2;
2700
+ defaultThemePreference?: ThemePreference_2;
2701
+ preferenceScope?: string;
2702
+ themePreferences?: readonly ThemePreferenceOption_2[];
2743
2703
  fileIconThemePreferences?: readonly FileIconThemePreferenceOption_2[];
2744
2704
  }
2745
2705
 
@@ -2766,17 +2726,15 @@ declare interface WorkbenchTreeViewProps {
2766
2726
  onSidenavContextActionsChange?: (actions: ResourceContextAction_2[]) => void;
2767
2727
  }
2768
2728
 
2729
+ declare type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
2730
+
2731
+ declare type WorkbenchViewBody = WorkbenchReactViewBody | NativeViewBody<"tree", TreeRendererContribution> | NativeViewBody<"file", FileRendererContribution> | NativeViewBody<"controls", ControlsRendererContribution> | NativeViewBody<"kanban", KanbanRendererContribution> | NativeViewBody<"dataTable", DataTableRendererContribution>;
2732
+
2769
2733
  declare interface WorkbenchViewContribution {
2770
2734
  id: string;
2771
- panelId: string;
2772
- title?: string;
2735
+ title: string;
2773
2736
  icon?: string;
2774
- path?: string;
2775
- pathAliases?: readonly string[];
2776
- aliases?: readonly string[];
2777
- resource?: ResourceRef;
2778
- canResolve?(): boolean;
2779
- resolveInput?(input: OpenWorkbenchViewInput): OpenWorkbenchPanelInput;
2737
+ body: WorkbenchViewBody;
2780
2738
  }
2781
2739
 
2782
2740
  declare interface WorkbenchViewHierarchyNode {
@@ -2786,10 +2744,25 @@ declare interface WorkbenchViewHierarchyNode {
2786
2744
  icon?: string;
2787
2745
  }
2788
2746
 
2789
- declare interface WorkbenchViewOpenEvent {
2747
+ declare interface WorkbenchViewMenuContribution {
2748
+ id: string;
2749
+ ownerViewId: string;
2790
2750
  viewId: string;
2791
- input: OpenWorkbenchViewInput;
2792
- instance: WorkbenchPanelInstance;
2751
+ side: "left" | "right";
2752
+ priority?: number;
2753
+ mountStrategy?: "active" | "keep-mounted";
2754
+ hiddenByDefault?: boolean;
2755
+ regionSize?: WorkbenchRegionSize;
2756
+ regionCollapsible?: boolean;
2757
+ headerBorderBottom?: boolean;
2758
+ config?: unknown;
2759
+ }
2760
+
2761
+ declare interface WorkbenchViewMenuRegistry {
2762
+ registerViewMenu(menu: WorkbenchViewMenuContribution): Disposable_2;
2763
+ getViewMenu(id: string): WorkbenchViewMenuContribution | undefined;
2764
+ listViewMenus(ownerViewId?: string): WorkbenchViewMenuContribution[];
2765
+ definitionsFor(ownerViewId: string, placementId: string): readonly WorkbenchPanelMenuDefinition[];
2793
2766
  }
2794
2767
 
2795
2768
  declare interface WorkbenchViewRegistry {
@@ -2797,21 +2770,11 @@ declare interface WorkbenchViewRegistry {
2797
2770
  registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
2798
2771
  getView(viewId: string): RegisteredWorkbenchView | undefined;
2799
2772
  listViews(): RegisteredWorkbenchView[];
2800
- resolveViewId(viewId: string): string | undefined;
2801
- resolvePath(path: string): {
2802
- kind: "view";
2803
- viewId: string;
2804
- } | undefined;
2805
- canResolveView(viewId: string): boolean;
2806
- isOpeningView(): boolean;
2807
- openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<WorkbenchPanelInstance>;
2808
- onDidOpenView(listener: (event: WorkbenchViewOpenEvent) => void): Disposable_2;
2773
+ refreshView(viewId: string, input?: unknown): void;
2809
2774
  }
2810
2775
 
2811
2776
  declare interface WorkbenchViewRegistryStoreState {
2812
2777
  views: Record<string, RegisteredWorkbenchView>;
2813
- aliases: Record<string, string>;
2814
- paths: Record<string, string>;
2815
2778
  }
2816
2779
 
2817
2780
  export declare const WorkbenchWidgetHost: (props: WorkbenchWidgetHostProps) => JSX.Element;
@@ -2820,17 +2783,20 @@ declare interface WorkbenchWidgetHostProps {
2820
2783
  workbench: WorkbenchCore;
2821
2784
  placement: WorkbenchWidgetPlacement;
2822
2785
  widget?: RegisteredWidgetContribution | RegisteredPlaceholderContribution;
2786
+ region?: WorkbenchRegion_2;
2823
2787
  }
2824
2788
 
2825
2789
  declare interface WorkbenchWidgetPlacement {
2826
2790
  widgetId: string;
2827
2791
  contributionId: string;
2792
+ placementIdentity?: PlacementIdentity;
2828
2793
  viewId?: string;
2829
2794
  ownerId?: string;
2830
2795
  source?: ContributionSource;
2831
2796
  resource?: ResourceRef;
2832
- resourceUri?: string;
2833
- ownerResourceUri?: string;
2797
+ section?: FileRendererSectionTarget;
2798
+ resourceKey?: string;
2799
+ ownerResourceKey?: string;
2834
2800
  title?: string;
2835
2801
  pinned?: boolean;
2836
2802
  closable?: boolean;
@@ -2844,15 +2810,11 @@ declare interface WorkbenchWidgetPlacement {
2844
2810
  declare type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
2845
2811
 
2846
2812
  declare interface WorkbenchWidgetTab {
2847
- contentRendererId?: string;
2848
- /** Custom actions shown when the user activates an already-active tab. */
2849
- customMenuRendererId?: string;
2850
- }
2851
-
2852
- declare interface WorkbenchWidgetTab_2 {
2853
- contentRendererId?: string;
2854
- /** Custom actions shown when the user activates an already-active tab. */
2855
- customMenuRendererId?: string;
2813
+ getSnapshot(instance: WorkbenchPanelInstance): WorkbenchTabSnapshot;
2814
+ subscribe?(listener: () => void): {
2815
+ dispose(): void;
2816
+ } | (() => void);
2817
+ refreshEvents?: readonly string[];
2856
2818
  }
2857
2819
 
2858
2820
  declare interface WorkflowStatus {
@@ -2862,7 +2824,7 @@ declare interface WorkflowStatus {
2862
2824
  icon?: string | null;
2863
2825
  sortOrder: number;
2864
2826
  isDefault?: boolean;
2865
- board?: WorkflowStatusBoardRules;
2827
+ actions?: readonly string[];
2866
2828
  }
2867
2829
 
2868
2830
  declare interface WorkflowStatusAction {
@@ -2871,13 +2833,6 @@ declare interface WorkflowStatusAction {
2871
2833
  icon?: string;
2872
2834
  }
2873
2835
 
2874
- declare interface WorkflowStatusBoardRules {
2875
- canCreate?: boolean;
2876
- canDragIn?: boolean;
2877
- canDragOut?: boolean;
2878
- actions?: readonly string[];
2879
- }
2880
-
2881
2836
  export declare const WorkflowStatusSettings: (props: WorkflowStatusSettingsProps) => JSX.Element;
2882
2837
 
2883
2838
  declare interface WorkflowStatusSettingsProps {