@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/index.d.ts CHANGED
@@ -1,9 +1,28 @@
1
- import { ComponentType } from 'react';
2
- import { ReactNode } from 'react';
1
+ import { ControlsQueryResult } from '@pstdio/sdk/extensions';
2
+ import { ControlValue } from '@pstdio/sdk/extensions';
3
+ import { ControlValueMap } from '@pstdio/sdk/extensions';
4
+ import { DockedWorkbenchRegion } from '@pstdio/sdk/extensions';
5
+ import { dockedWorkbenchRegions } from '@pstdio/sdk/extensions';
6
+ import { FileRendererSectionTarget } from '@pstdio/sdk/extensions';
7
+ import { KanbanRendererAttributeDisplay } from '@pstdio/sdk/extensions';
8
+ import { Localizable } from '@pstdio/sdk/extensions';
9
+ import { ModeRegionSettings } from '@pstdio/sdk/extensions';
10
+ import { NavigationTargetPage as NavigationTargetPage_2 } from '@pstdio/sdk/extensions';
11
+ import { NavigationTargetPanel as NavigationTargetPanel_2 } from '@pstdio/sdk/extensions';
12
+ import { PageLocation } from '@pstdio/sdk/extensions';
13
+ import { PageMain } from '@pstdio/sdk/extensions';
14
+ import { PageOpenIntent } from '@pstdio/sdk/extensions';
15
+ import { PageRef } from '@pstdio/sdk/extensions';
16
+ import { PageSlot } from '@pstdio/sdk/extensions';
17
+ import { PlacementIdentity } from '@pstdio/sdk/extensions';
18
+ import { PlacementItem } from '@pstdio/sdk/extensions';
19
+ import { PlacementRef } from '@pstdio/sdk/extensions';
20
+ import { ResourceConstraint } from '@pstdio/sdk/extensions';
21
+ import { ResourceRef } from '@pstdio/sdk/extensions';
3
22
 
4
23
  export declare type AnchorId = "primary" | "secondary" | "attached";
5
24
 
6
- export declare interface AttributeDescriptor {
25
+ export declare interface AttributeDescriptor<TNode = unknown> {
7
26
  id: string;
8
27
  label: string;
9
28
  type: AttributeType;
@@ -13,14 +32,11 @@ export declare interface AttributeDescriptor {
13
32
  displayable?: boolean;
14
33
  editable?: boolean;
15
34
  display?: AttributeDisplayDescriptor;
16
- render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
35
+ render?: (value: unknown, row: KanbanRendererRow) => TNode;
17
36
  compare?: (a: unknown, b: unknown) => number;
18
37
  }
19
38
 
20
- export declare type AttributeDisplayDescriptor = {
21
- kind: "workspace-badge";
22
- itemsAttributeId: string;
23
- };
39
+ export declare type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
24
40
 
25
41
  export declare type AttributeKind = AttributeType["kind"];
26
42
 
@@ -28,9 +44,9 @@ export declare type AttributeKind = AttributeType["kind"];
28
44
  * Reactive source for an entire attribute schema. Lets a contribution
29
45
  * add/remove/edit attributes at runtime without re-registering.
30
46
  */
31
- declare interface AttributesSource {
47
+ declare interface AttributesSource<TNode = unknown> {
32
48
  subscribe: (listener: () => void) => () => void;
33
- getSnapshot: () => AttributeDescriptor[];
49
+ getSnapshot: () => AttributeDescriptor<TNode>[];
34
50
  }
35
51
 
36
52
  export declare type AttributeType = {
@@ -49,22 +65,20 @@ export declare type AttributeType = {
49
65
  kind: "user";
50
66
  };
51
67
 
52
- export declare interface BoardColumnAction {
68
+ export declare interface BoardColumnAction<TIcon = unknown> {
53
69
  id: string;
54
70
  label: string;
55
- icon: ComponentType<{
56
- size?: number | string;
57
- }>;
71
+ icon: TIcon;
58
72
  }
59
73
 
60
74
  /** Board-column behavior and menu configuration for a resolved column group. */
61
- export declare interface BoardColumnConfig {
75
+ export declare interface BoardColumnConfig<TIcon = unknown> {
62
76
  /** Color palette token used for the column header and group badges. */
63
77
  color?: string;
64
78
  canDragIn?: boolean;
65
79
  canDragOut?: boolean;
66
80
  canCreate?: boolean;
67
- actions?: BoardColumnAction[];
81
+ actions?: BoardColumnAction<TIcon>[];
68
82
  }
69
83
 
70
84
  /**
@@ -73,12 +87,12 @@ export declare interface BoardColumnConfig {
73
87
  */
74
88
  export declare interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
75
89
  kind: "collection";
90
+ viewId: string;
76
91
  items(): TItem[] | Promise<TItem[]>;
77
92
  itemId(item: TItem): string;
78
93
  itemLabel(item: TItem): string;
79
94
  itemIcon?(item: TItem): string | undefined;
80
95
  groupBy?: SettingsCollectionGroupBy<TItem>;
81
- renderItem(item: TItem, input: WorkbenchPanelRenderInput): unknown;
82
96
  actions?: SettingsAction[];
83
97
  }
84
98
 
@@ -181,70 +195,6 @@ declare interface CommandRegistryStoreState {
181
195
  commands: Record<string, RegisteredCommand>;
182
196
  }
183
197
 
184
- export declare interface CompositionDiagnostic {
185
- code: "extension_resource_kind_missing" | "extension_resource_slot_missing" | "extension_resource_slot_closed" | "extension_panel_missing" | "extension_panel_placement_unresolvable" | "extension_mode_resource_unsupported" | "extension_placement_required_invalid" | "extension_resource_primary_invalid";
186
- message: string;
187
- panelId?: string;
188
- slot?: string;
189
- }
190
-
191
- export declare interface CompositionModeDefinition {
192
- id: string;
193
- extensionId?: string;
194
- resources?: Record<string, CompositionModeRecipe>;
195
- modePanels?: Record<string, CompositionPlacementPolicy>;
196
- }
197
-
198
- export declare interface CompositionModeRecipe {
199
- slots?: Record<string, CompositionPlacementPolicy>;
200
- panels?: Record<string, CompositionPlacementPolicy>;
201
- }
202
-
203
- export declare interface CompositionPanelDefinition {
204
- id: string;
205
- extensionId: string;
206
- title: string;
207
- icon?: string;
208
- show?: CompositionPanelPlacement | readonly CompositionPanelPlacement[];
209
- }
210
-
211
- declare interface CompositionPanelPlacement extends CompositionPlacementPolicy {
212
- resourceKind?: string;
213
- }
214
-
215
- export declare interface CompositionPlacementPolicy {
216
- region: DockedCompositionRegion;
217
- allowedRegions?: readonly DockedCompositionRegion[];
218
- required?: boolean;
219
- defaultOpen?: boolean;
220
- pinned?: boolean;
221
- }
222
-
223
- declare interface CompositionResolutionContext {
224
- modeId: string;
225
- resourceKind?: string;
226
- }
227
-
228
- export declare interface CompositionResourceKindDefinition {
229
- id: string;
230
- extensionId: string;
231
- surface: "primary" | "secondary" | "attached";
232
- slots: Record<string, CompositionSlotDefinition>;
233
- }
234
-
235
- export declare interface CompositionResourcePanelEdge {
236
- id: string;
237
- extensionId: string;
238
- resourceKind: string;
239
- panel: string;
240
- slot: string;
241
- }
242
-
243
- export declare interface CompositionSlotDefinition {
244
- cardinality: "one" | "many";
245
- external: boolean;
246
- }
247
-
248
198
  export declare interface ContextKeyScope extends Disposable_2 {
249
199
  ownerId: string;
250
200
  set(key: string, value: ContextKeyValue): void;
@@ -278,16 +228,11 @@ export declare interface ContributionMetadata {
278
228
  export declare type ContributionSource = "module" | "extension";
279
229
 
280
230
  export declare interface ControlsApplyInput {
281
- values: Record<string, unknown>;
231
+ values: ControlValueMap;
282
232
  resource?: ResourceRef;
283
233
  }
284
234
 
285
- export declare interface ControlsQueryResult {
286
- params?: unknown[];
287
- groups?: unknown[];
288
- values?: Record<string, unknown>;
289
- readOnly?: boolean;
290
- }
235
+ export { ControlsQueryResult }
291
236
 
292
237
  export declare interface ControlsRendererContribution {
293
238
  id: string;
@@ -296,7 +241,7 @@ export declare interface ControlsRendererContribution {
296
241
  emptyTitle?: string;
297
242
  emptyDescription?: string;
298
243
  layout?: ControlsRendererLayout;
299
- defaultValues?: Record<string, unknown>;
244
+ defaultValues?: ControlValueMap;
300
245
  /** Load the control declarations + current values for the active resource. */
301
246
  executeQuery(resource?: ResourceRef): Promise<ControlsQueryResult> | ControlsQueryResult;
302
247
  /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
@@ -308,10 +253,6 @@ export declare interface ControlsRendererContribution {
308
253
  subscribe?: (listener: () => void) => Disposable_2 | (() => void);
309
254
  }
310
255
 
311
- export declare type ControlsRendererImplementation = (input: WorkbenchPanelRenderInput & {
312
- controlsRendererId: string;
313
- }) => unknown;
314
-
315
256
  export declare interface ControlsRendererLayout {
316
257
  region?: ControlsRendererRegion;
317
258
  defaultPx?: number;
@@ -319,28 +260,8 @@ export declare interface ControlsRendererLayout {
319
260
  maxPx?: number;
320
261
  }
321
262
 
322
- export declare interface ControlsRendererRefreshEvent {
323
- controlsRendererId: string;
324
- }
325
-
326
- declare type ControlsRendererRefreshListener = (event: ControlsRendererRefreshEvent) => void;
327
-
328
263
  declare type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
329
264
 
330
- export 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
265
  export declare interface ControlsResetInput {
345
266
  controlIds?: string[];
346
267
  resource?: ResourceRef;
@@ -348,45 +269,44 @@ export declare interface ControlsResetInput {
348
269
 
349
270
  export declare interface ControlsUpdateValueInput {
350
271
  controlId: string;
351
- value: unknown;
352
- values: Record<string, unknown>;
272
+ value: ControlValue;
273
+ values: ControlValueMap;
353
274
  resource?: ResourceRef;
354
275
  }
355
276
 
356
- export declare const createResourceBreadcrumbItems: (resources: ResourceRegistry, resource: ResourceRef | undefined, views?: WorkbenchViewRegistry) => WorkbenchBreadcrumbItem[];
357
-
358
277
  export declare const createStatusBarRegistry: (input: CreateWorkbenchStatusBarRegistryInput) => WorkbenchStatusBarRegistry;
359
278
 
360
279
  export declare const createStatusRegistry: () => WorkbenchStatusRegistry;
361
280
 
362
281
  export declare const createViewRegistry: (input: CreateWorkbenchViewRegistryInput) => WorkbenchViewRegistry;
363
282
 
364
- export declare const createWorkbenchCore: (input?: CreateWorkbenchCoreInput) => WorkbenchCore;
283
+ export declare const createWorkbench: (input?: createWorkbenchInput) => WorkbenchCore;
365
284
 
366
- export declare interface CreateWorkbenchCoreInput {
285
+ export declare interface createWorkbenchInput {
367
286
  isInScope?: (resource: ResourceRef, primary: ResourceRef | undefined) => boolean;
368
287
  layoutPersistence?: LayoutPersistenceAdapter;
288
+ pageLocationBrowser?: WorkbenchPageLocationBrowser;
289
+ pageLocationPersistence?: WorkbenchPageLocationPersistence;
290
+ resolvePagePersistenceScope?(input: WorkbenchPagePersistenceScopeInput): WorkbenchPagePersistenceScope;
291
+ pageResources?: WorkbenchPageResourceCodec;
369
292
  persistence?: WorkbenchPersistenceAdapter;
370
- historyPersistence?: WorkbenchHistoryPersistence;
371
293
  preferencePersistence?: PreferencePersistenceAdapter;
372
294
  treePersistence?: TreeRendererPersistenceAdapter;
373
- panelsPersistence?: WorkbenchPanelsPersistenceAdapter;
295
+ panelMenuStatePersistence?: WorkbenchPanelMenuStatePersistenceAdapter;
374
296
  defaultPanelOpenByRegionId?: Partial<Record<WorkbenchRegion, boolean>>;
375
- lastResourcePersistence?: LastResourcePersistenceAdapter;
297
+ /** Host-level region layout policy. The active mode's regionSettings win over it. */
298
+ regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
376
299
  sidePanelPersistence?: WorkbenchSidePanelPersistenceAdapter;
300
+ /** Default floating policy. The active mode may override it. */
301
+ floatingPanels?: "visible" | "hidden";
377
302
  initialSidePanelMode?: WorkbenchSidePanelMode;
378
- renderers?: CreateWorkbenchRendererRegistryInput;
379
- }
380
-
381
- declare interface CreateWorkbenchRendererRegistryInput {
382
- initialRenderers?: WorkbenchRendererRegistration[];
383
- createHost?: () => HTMLElement;
303
+ startPage?: PageRef;
384
304
  }
385
305
 
386
306
  export declare const createWorkbenchResourceContextValues: (resource: ResourceRef | undefined) => Record<string, ContextKeyValue>;
387
307
 
388
- export declare const createWorkbenchSelectionResourceMetadata: (resource: Pick<ResourceRef, "uri">) => {
389
- "workbench.selectionResourceUri": string;
308
+ export declare const createWorkbenchSelectionResourceMetadata: (resource: ResourceRef) => {
309
+ "workbench.selectionResourceKey": string;
390
310
  };
391
311
 
392
312
  declare interface CreateWorkbenchStatusBarRegistryInput {
@@ -394,17 +314,9 @@ declare interface CreateWorkbenchStatusBarRegistryInput {
394
314
  }
395
315
 
396
316
  declare interface CreateWorkbenchViewRegistryInput {
397
- getPanel(panelId: string): unknown;
398
- openPanel(panelId: string, input?: OpenWorkbenchPanelInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
399
- }
400
-
401
- /**
402
- * Renders its own page. `render` returns `unknown` so core stays React-free — the
403
- * React layer treats the result as a node, exactly like WorkbenchRendererRegistration.
404
- */
405
- export declare interface CustomSettingsPanel extends SettingsPanelBase {
406
- kind: "custom";
407
- render(input: WorkbenchPanelRenderInput): unknown;
317
+ registerBody(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2 & {
318
+ refresh?(input?: unknown): void;
319
+ };
408
320
  }
409
321
 
410
322
  export declare interface DataTableRendererColumn {
@@ -460,10 +372,6 @@ export declare interface DataTableRendererContribution {
460
372
  onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
461
373
  }
462
374
 
463
- export declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
464
- dataTableRendererId: string;
465
- }) => unknown;
466
-
467
375
  export declare interface DataTableRendererQueryContext {
468
376
  resource?: ResourceRef;
469
377
  modeId?: string;
@@ -474,20 +382,6 @@ export declare interface DataTableRendererQueryResult {
474
382
  columns?: DataTableRendererColumn[];
475
383
  }
476
384
 
477
- export declare interface DataTableRendererRefreshEvent {
478
- dataTableRendererId: string;
479
- }
480
-
481
- export declare interface DataTableRendererRegistry {
482
- dataTableStore: WorkbenchStore<DataTableRendererStoreState>;
483
- registerDataTableRenderer(contribution: DataTableRendererContribution, metadata?: ContributionMetadata): Disposable_2;
484
- setDataTableRendererImplementation(implementation: DataTableRendererImplementation): void;
485
- getDataTableRenderer(id: string): RegisteredDataTableRendererContribution | undefined;
486
- listDataTableRenderers(): RegisteredDataTableRendererContribution[];
487
- refreshDataTableRenderer(id: string): void;
488
- onDidRefreshDataTableRenderer(listener: (event: DataTableRendererRefreshEvent) => void): Disposable_2;
489
- }
490
-
491
385
  export declare interface DataTableRendererRow {
492
386
  id: string;
493
387
  values: Record<string, unknown>;
@@ -510,10 +404,6 @@ export declare interface DataTableRendererSelectionAction {
510
404
  run(rows: DataTableRendererRow[]): Promise<void> | void;
511
405
  }
512
406
 
513
- declare interface DataTableRendererStoreState {
514
- renderers: Record<string, RegisteredDataTableRendererContribution>;
515
- }
516
-
517
407
  export declare interface DataTableRendererThemeColor {
518
408
  light: string;
519
409
  dark: string;
@@ -523,14 +413,19 @@ export declare interface DataTableRendererThemeColor {
523
413
  };
524
414
  }
525
415
 
416
+ /** Resource URI conversion belongs to route and persistence adapters. */
417
+ export declare const defaultPageResourceCodec: WorkbenchPageResourceCodec;
418
+
526
419
  declare interface Disposable_2 {
527
420
  dispose(): void;
528
421
  }
529
422
  export { Disposable_2 as Disposable }
530
423
 
531
- export declare type DockedCompositionRegion = (typeof dockedCompositionRegions)[number];
424
+ declare type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
532
425
 
533
- export declare const dockedCompositionRegions: readonly ["sidenav", "main", "secondary", "side"];
426
+ export { DockedWorkbenchRegion }
427
+
428
+ export { dockedWorkbenchRegions }
534
429
 
535
430
  export declare interface EnumOption {
536
431
  value: string;
@@ -616,89 +511,37 @@ export declare interface FileRendererContribution {
616
511
  save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
617
512
  }
618
513
 
619
- export declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
620
- fileRendererId: string;
621
- }) => unknown;
622
-
623
514
  export declare interface FileRendererRefreshEnvelope {
624
- resourceUri?: string;
515
+ resourceKey?: string;
625
516
  origin?: FileRendererRefreshOrigin;
626
517
  revision?: string;
627
518
  }
628
519
 
629
- export declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
630
- fileRendererId: string;
631
- }
632
-
633
- declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
634
-
635
520
  export declare interface FileRendererRefreshOrigin {
636
521
  rendererId: string;
637
522
  instanceId: string;
638
523
  operationId: string;
639
524
  }
640
525
 
641
- export declare interface FileRendererRegistry {
642
- fileRendererStore: WorkbenchStore<FileRendererStoreState>;
643
- registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
644
- setFileRendererImplementation(impl: FileRendererImplementation): void;
645
- getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
646
- listFileRenderers(): RegisteredFileRendererContribution[];
647
- refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
648
- onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
649
- }
650
-
651
526
  export declare interface FileRendererSaveResult {
652
527
  revision?: string;
653
528
  }
654
529
 
655
- declare interface FileRendererStoreState {
656
- renderers: Record<string, RegisteredFileRendererContribution>;
657
- }
658
-
659
530
  export declare const getKeybindingSteps: (keybinding: KeybindingSequence) => string[];
660
531
 
661
- export declare const getSwitchModeNavigationTargetModeId: (target: NavigationTarget) => string | undefined;
662
-
663
532
  export declare const getWorkbenchModePanelForRegion: (region: WorkbenchRegion) => "main" | "secondary" | "side" | undefined;
664
533
 
665
- export declare const getWorkbenchSelectionResourceUris: (resource: ResourceRef | undefined) => string[];
534
+ export declare const getWorkbenchSelectionResourceKeys: (resource: ResourceRef | undefined) => string[];
666
535
 
667
536
  export declare const headerLeadingMenuPath: (region: string) => MenuPath;
668
537
 
669
538
  export declare const headerTrailingMenuPath: (region: string) => MenuPath;
670
539
 
671
- export declare interface HistoryController {
672
- store: WorkbenchStore<HistoryStoreState>;
673
- /** Snapshot the history for a compound navigation; the returned function restores it. */
674
- createCheckpoint(): () => void;
675
- goBack(): HistoryEntry | undefined;
676
- goForward(): HistoryEntry | undefined;
677
- goPrevious(): HistoryEntry | undefined;
678
- recentlyClosed(): readonly HistoryEntry[];
679
- reopenLastClosed(): HistoryEntry | undefined;
680
- setPersistenceScope(scope: string | undefined): void;
681
- getPersistenceScope(): string | undefined;
682
- restore(): HistoryEntry | undefined;
683
- flush(): void;
684
- clear(): void;
685
- migrateState(transform: (state: HistoryStoreState) => HistoryStoreState): void;
686
- }
687
-
688
- export declare type HistoryEntry = WorkbenchNavigationEntry;
689
-
690
- export declare interface HistoryStoreState {
691
- entries: readonly WorkbenchNavigationEntry[];
692
- cursor: number;
693
- recentlyClosed: readonly WorkbenchNavigationEntry[];
694
- hydrating: boolean;
695
- }
696
-
697
540
  export declare const isWorkbenchModePanelAvailable: (mode: WorkbenchModeContribution | undefined, panel: WorkbenchPanelRegion) => boolean;
698
541
 
699
542
  export declare const isWorkbenchViewHierarchyNode: (node: WorkbenchHierarchyNode) => node is WorkbenchViewHierarchyNode;
700
543
 
701
- export declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> {
544
+ export declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
702
545
  id: string;
703
546
  title: string;
704
547
  resourceKind?: string;
@@ -713,9 +556,9 @@ export declare interface KanbanRendererContribution<TRow extends KanbanRendererR
713
556
  * `WorkbenchKanbanView` subscribes so additions / removals / kind changes
714
557
  * propagate live without re-registering the renderer.
715
558
  */
716
- attributes: AttributeDescriptor[] | AttributesSource;
559
+ attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
717
560
  /** Per-board-column overrides (color, drag/create rules, custom actions). */
718
- getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
561
+ getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
719
562
  hideToolbar?: boolean;
720
563
  emptyTitle?: string;
721
564
  emptyDescription?: string;
@@ -734,7 +577,7 @@ export declare interface KanbanRendererContribution<TRow extends KanbanRendererR
734
577
  /** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
735
578
  onRowActivate?: (row: TRow) => Promise<void> | void;
736
579
  /** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
737
- getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
580
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
738
581
  /**
739
582
  * Fires for inline attribute edits AND for cross-column drag-to-reorder on
740
583
  * the board (the renderer passes the grouping attribute id + the target
@@ -791,10 +634,6 @@ export declare interface KanbanRendererCreateSubmission {
791
634
 
792
635
  export declare type KanbanRendererFilterState = Record<string, string[]>;
793
636
 
794
- export declare type KanbanRendererImplementation = (input: WorkbenchPanelRenderInput & {
795
- kanbanRendererId: string;
796
- }) => unknown;
797
-
798
637
  export declare interface KanbanRendererOrdering {
799
638
  attributeId: string | typeof MANUAL_ORDERING;
800
639
  direction: SortDirection;
@@ -805,22 +644,6 @@ export declare interface KanbanRendererQueryState {
805
644
  filters: KanbanRendererFilterState;
806
645
  }
807
646
 
808
- declare interface KanbanRendererRefreshEvent {
809
- kanbanRendererId: string;
810
- }
811
-
812
- declare type KanbanRendererRefreshListener = (event: KanbanRendererRefreshEvent) => void;
813
-
814
- export declare interface KanbanRendererRegistry {
815
- dataStore: WorkbenchStore<KanbanRendererStoreState>;
816
- registerKanbanRenderer<TRow extends KanbanRendererRow = KanbanRendererRow>(contribution: KanbanRendererContribution<TRow>, metadata?: ContributionMetadata): Disposable_2;
817
- setKanbanRendererImplementation(impl: KanbanRendererImplementation): void;
818
- getKanbanRenderer(id: string): RegisteredKanbanRendererContribution | undefined;
819
- listKanbanRenderers(): RegisteredKanbanRendererContribution[];
820
- refreshKanbanRenderer(id: string): void;
821
- onDidRefreshKanbanRenderer(listener: KanbanRendererRefreshListener): Disposable_2;
822
- }
823
-
824
647
  export declare interface KanbanRendererRow {
825
648
  id: string;
826
649
  title: string;
@@ -849,15 +672,11 @@ export declare interface KanbanRendererSettings {
849
672
  displayProperties: string[];
850
673
  }
851
674
 
852
- declare interface KanbanRendererStoreState {
853
- renderers: Record<string, RegisteredKanbanRendererContribution>;
854
- }
855
-
856
675
  export declare interface Keybinding {
857
- commandId: string;
676
+ /** Action the chord executes through the shared navigation executor. */
677
+ action: NavigationTarget;
858
678
  keybinding: KeybindingSequence;
859
679
  when?: string;
860
- args?: unknown;
861
680
  }
862
681
 
863
682
  export declare interface KeybindingRegistry {
@@ -865,6 +684,11 @@ export declare interface KeybindingRegistry {
865
684
  registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable_2;
866
685
  listKeybindings(): RegisteredKeybinding[];
867
686
  listActiveKeybindings(): RegisteredKeybinding[];
687
+ /** Chords bound to plain command actions, for rendering shortcut hints beside commands. */
688
+ listCommandKeybindings(): {
689
+ commandId: string;
690
+ keybinding: KeybindingSequence;
691
+ }[];
868
692
  }
869
693
 
870
694
  declare interface KeybindingRegistryStoreState {
@@ -873,11 +697,6 @@ declare interface KeybindingRegistryStoreState {
873
697
 
874
698
  export declare type KeybindingSequence = string | string[];
875
699
 
876
- export declare interface LastResourcePersistenceAdapter {
877
- getLastResource(): ResourceRef | undefined;
878
- setLastResource(resource: ResourceRef | undefined): void;
879
- }
880
-
881
700
  declare interface LayoutModel {
882
701
  store: WorkbenchStore<WorkbenchLayoutStoreState>;
883
702
  registerPlaceholder(placeholder: PlaceholderContribution, metadata?: ContributionMetadata): {
@@ -889,12 +708,6 @@ declare interface LayoutModel {
889
708
  registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
890
709
  dispose(): void;
891
710
  };
892
- registerLocation(location: WorkbenchLocationContribution, metadata?: ContributionMetadata): {
893
- dispose(): void;
894
- };
895
- registerSubPanel(subPanel: WorkbenchSubPanelContribution, metadata?: ContributionMetadata): {
896
- dispose(): void;
897
- };
898
711
  registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
899
712
  dispose(): void;
900
713
  };
@@ -906,6 +719,7 @@ declare interface LayoutModel {
906
719
  getWidget(id: string): RegisteredWidgetContribution | undefined;
907
720
  getPanel(id: string): WorkbenchPanelContribution | undefined;
908
721
  getRegionSize(regionId: WorkbenchRegion): WorkbenchRegionSize | undefined;
722
+ getRegionSettings(regionId: WorkbenchRegion): WorkbenchRegionSettings | undefined;
909
723
  getRegionCollapsible(regionId: WorkbenchRegion): boolean;
910
724
  getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
911
725
  setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
@@ -923,7 +737,7 @@ declare interface LayoutModel {
923
737
  closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
924
738
  updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
925
739
  reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
926
- expirePreviewTabs(ownerResourceUri?: string): void;
740
+ expirePreviewTabs(ownerResourceKey?: string): void;
927
741
  activateWidget(widgetId: string): WorkbenchWidgetPlacement;
928
742
  setRegionActiveWidget(regionId: WorkbenchRegion, widgetId: string | undefined): void;
929
743
  closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
@@ -1001,15 +815,18 @@ declare interface MenuRegistryStoreState {
1001
815
  itemsByPath: Record<string, RegisteredMenuItem[]>;
1002
816
  }
1003
817
 
818
+ declare type NativeViewBody<Kind extends string, Contribution> = {
819
+ kind: Kind;
820
+ } & Omit<Contribution, "id" | "title" | "icon">;
821
+
1004
822
  export declare interface NavigationDispatcherContext {
1005
- canOpenResource?(resource: ResourceRef): boolean;
1006
- canOpenPanel?(panelId: string): boolean;
1007
- canOpenView?(viewId: string): boolean;
823
+ canOpenPanel?(target: NavigationTargetPanel): boolean;
1008
824
  canExecuteCommand?(commandId: string): boolean;
1009
- createCheckpoint?(): undefined | (() => void);
1010
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<unknown>;
1011
- openPanel(panelId: string, input?: OpenWorkbenchPanelInput): unknown;
1012
- openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<unknown> | unknown;
825
+ prepareNavigation?(targets: readonly (NavigationTargetPage | NavigationTargetPanel)[]): {
826
+ commit(): unknown;
827
+ };
828
+ openPanelTarget?(target: NavigationTargetPanel): unknown;
829
+ openPageTarget?(target: NavigationTargetPage): unknown;
1013
830
  executeCommand(commandId: string, args?: unknown): Promise<unknown> | unknown;
1014
831
  openHref?(href: string): Promise<unknown> | unknown;
1015
832
  }
@@ -1027,16 +844,15 @@ export declare interface NavigationRegistry {
1027
844
  listParsers(): RegisteredNavigationParser[];
1028
845
  resolveLocation(location: string): NavigationTarget;
1029
846
  openTarget(target: NavigationTarget): Promise<readonly unknown[]>;
847
+ /** Opens a page location through the shared executor. */
848
+ openPage(target: Omit<NavigationTargetPage, "kind">): Promise<readonly unknown[]>;
849
+ /** Opens or activates an owned panel through the shared executor. */
850
+ openPanel(target: DistributiveOmit<NavigationTargetPanel, "kind">): Promise<readonly unknown[]>;
1030
851
  navigate(location: string): Promise<readonly unknown[]>;
1031
- registerNavigator(navigator: ResourceNavigator, metadata?: ContributionMetadata): Disposable_2;
1032
- listNavigators(): RegisteredResourceNavigator[];
1033
- createHref(resource: ResourceRef): string;
1034
- navigateResource(resource: ResourceRef): Promise<unknown>;
1035
852
  }
1036
853
 
1037
854
  declare interface NavigationRegistryStoreState {
1038
855
  parsers: Record<string, RegisteredNavigationParser>;
1039
- navigators: Record<string, RegisteredResourceNavigator>;
1040
856
  }
1041
857
 
1042
858
  export declare type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
@@ -1049,7 +865,7 @@ export declare interface NavigationTargetCommand {
1049
865
 
1050
866
  export declare interface NavigationTargetCompound {
1051
867
  kind: "compound";
1052
- targets: readonly NavigationTargetItem[];
868
+ targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
1053
869
  }
1054
870
 
1055
871
  declare interface NavigationTargetHref {
@@ -1057,26 +873,55 @@ declare interface NavigationTargetHref {
1057
873
  href: string;
1058
874
  }
1059
875
 
1060
- export declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
876
+ export declare type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
877
+
878
+ declare type NavigationTargetPage = NavigationTargetPage_2;
879
+
880
+ export declare type NavigationTargetPanel = NavigationTargetPanel_2 | NavigationTargetShellPanel;
1061
881
 
1062
- export declare interface NavigationTargetPanel {
882
+ declare interface NavigationTargetShellPanel {
1063
883
  kind: "panel";
1064
- panelId: string;
1065
- input?: OpenWorkbenchPanelInput;
884
+ panel: ShellPlacementRef;
885
+ resource?: NavigationTargetPanel_2["resource"];
886
+ open?: NavigationTargetPanel_2["open"];
887
+ title?: string;
1066
888
  }
1067
889
 
1068
- export declare interface NavigationTargetResource {
1069
- kind: "resource";
1070
- resource: ResourceRef;
1071
- input?: OpenResourceInput;
890
+ export declare interface NavigationTreeContext {
891
+ resource?: ResourceRef;
1072
892
  }
1073
893
 
1074
- export declare interface NavigationTargetView {
1075
- kind: "view";
1076
- viewId: string;
1077
- input?: OpenWorkbenchViewInput;
894
+ export declare interface NavigationTreeContribution {
895
+ id: string;
896
+ /** Prefix projected section and node ids when they come from an independent tree renderer. */
897
+ idScope?: string;
898
+ owner: NavigationTreeOwner;
899
+ sourceExtensionId: string;
900
+ declarationIndex: number;
901
+ slot?: NavigationTreeSlot;
902
+ viewId?: string;
903
+ defaultExpandedSectionIds?: string[];
904
+ getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
905
+ getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
1078
906
  }
1079
907
 
908
+ export declare interface NavigationTreeOwner {
909
+ kind: "mode" | "page";
910
+ id: string;
911
+ extensionId: string;
912
+ }
913
+
914
+ export declare interface NavigationTreeRegistry {
915
+ registerContribution(contribution: NavigationTreeContribution): Disposable_2;
916
+ resolveOwner(kind: NavigationTreeOwner["kind"], id: string): NavigationTreeOwner | undefined;
917
+ getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
918
+ getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
919
+ getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];
920
+ onDidChange(listener: () => void): Disposable_2;
921
+ }
922
+
923
+ export declare type NavigationTreeSlot = "header" | "content" | "footer";
924
+
1080
925
  declare const NO_GROUPING = "none";
1081
926
 
1082
927
  export declare interface NotificationRegistry {
@@ -1088,8 +933,10 @@ export declare interface NotificationRegistry {
1088
933
  subscribe(listener: WorkbenchNotificationListener): Disposable_2;
1089
934
  }
1090
935
 
1091
- export declare interface OpenResourceInput {
1092
- replaceActive?: boolean;
936
+ declare interface OpenModePlacementTarget {
937
+ panel: PlacementRef;
938
+ resource?: ResourceRef;
939
+ open?: PageOpenIntent;
1093
940
  }
1094
941
 
1095
942
  declare interface OpenWidgetInput {
@@ -1111,7 +958,12 @@ declare interface OpenWidgetInput {
1111
958
  replaceWidgetId?: string;
1112
959
  }
1113
960
 
1114
- export declare interface OpenWorkbenchPanelInput {
961
+ declare interface OpenWorkbenchOverlayInput {
962
+ resource?: ResourceRef;
963
+ title?: string;
964
+ }
965
+
966
+ declare interface OpenWorkbenchPanelInput {
1115
967
  /** Set by the view registry. Low-level layout callers should leave this undefined. */
1116
968
  viewId?: string | null;
1117
969
  /** `null` explicitly clears an existing singleton placement's resource binding. */
@@ -1127,27 +979,39 @@ export declare interface OpenWorkbenchPanelInput {
1127
979
  strategy?: WorkbenchPanelOpenStrategy;
1128
980
  }
1129
981
 
1130
- export declare type OpenWorkbenchViewInput = Omit<OpenWorkbenchPanelInput, "viewId">;
982
+ declare interface OpenWorkbenchShellPlacementInput {
983
+ placementId: string;
984
+ resource?: ResourceRef;
985
+ open?: PageOpenIntent;
986
+ title?: string;
987
+ }
1131
988
 
1132
- export declare interface PersistedCompositionLayout {
1133
- regions: Partial<Record<DockedCompositionRegion, PersistedCompositionRegionState>>;
989
+ declare interface OwnedPlacementLocationContext {
990
+ modeId: string;
991
+ pageId?: string;
992
+ projectId?: string;
993
+ location?: PageLocation;
1134
994
  }
1135
995
 
1136
- declare interface PersistedCompositionRegionState {
1137
- order: readonly string[];
1138
- activePanelId?: string;
996
+ declare interface OwnedPlacementReconciliation<Value> {
997
+ add: readonly ResolvedOwnedPlacement<Value>[];
998
+ retain: readonly ResolvedOwnedPlacement<Value>[];
999
+ update: readonly OwnedPlacementUpdate<Value>[];
1000
+ activate: readonly ResolvedOwnedPlacement<Value>[];
1001
+ remove: readonly ResolvedOwnedPlacement<Value>[];
1139
1002
  }
1140
1003
 
1141
- export declare interface PersistedTreeRendererStates {
1142
- statesByTreeId: Record<string, TreeRendererState>;
1004
+ declare interface OwnedPlacementUpdate<Value> {
1005
+ current: ResolvedOwnedPlacement<Value>;
1006
+ desired: ResolvedOwnedPlacement<Value>;
1143
1007
  }
1144
1008
 
1145
- export declare interface PersistedWorkbenchHistory extends Omit<HistoryStoreState, "hydrating"> {
1146
- version: 1 | 2;
1009
+ declare interface PersistedTreeRendererStates {
1010
+ statesByTreeId: Record<string, TreeRendererState>;
1147
1011
  }
1148
1012
 
1149
- declare interface PersistedWorkbenchPanels {
1150
- openByRegionId: Record<string, boolean>;
1013
+ declare interface PersistedWorkbenchPanelMenuState {
1014
+ openByMenuId: Record<string, boolean>;
1151
1015
  }
1152
1016
 
1153
1017
  declare interface PlaceholderContribution {
@@ -1210,24 +1074,6 @@ declare interface RegisteredContributionMetadata {
1210
1074
  priority: number;
1211
1075
  }
1212
1076
 
1213
- declare interface RegisteredControlsRendererContribution extends ControlsRendererContribution, RegisteredContributionMetadata {
1214
- }
1215
-
1216
- declare interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {
1217
- }
1218
-
1219
- declare interface RegisteredFileRendererContribution extends FileRendererContribution, RegisteredContributionMetadata {
1220
- }
1221
-
1222
- declare interface RegisteredKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> extends KanbanRendererContribution<TRow>, RegisteredContributionMetadata {
1223
- }
1224
-
1225
- declare interface RegisteredKeepAliveHost {
1226
- rendererId: string;
1227
- host: HTMLElement;
1228
- attachedTo?: HTMLElement;
1229
- }
1230
-
1231
1077
  declare interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {
1232
1078
  }
1233
1079
 
@@ -1247,8 +1093,6 @@ declare type RegisteredPreferenceSchema = PreferencePropertySchema & {
1247
1093
  declare interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {
1248
1094
  }
1249
1095
 
1250
- declare type RegisteredResourceNavigator = Omit<ResourceNavigator, "priority"> & RegisteredContributionMetadata;
1251
-
1252
1096
  declare type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
1253
1097
 
1254
1098
  declare type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
@@ -1277,52 +1121,17 @@ declare type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & Reg
1277
1121
 
1278
1122
  export declare type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
1279
1123
 
1280
- export declare const resolveAnchorRegion: (anchorId: AnchorId) => "status" | "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" | "overlay";
1281
-
1282
- export declare const resolveComposition: (input: ResolveCompositionInput) => ResolvedComposition;
1283
-
1284
- declare interface ResolveCompositionInput {
1285
- context: CompositionResolutionContext;
1286
- mode: CompositionModeDefinition;
1287
- composition: WorkbenchComposition;
1288
- persisted?: PersistedCompositionLayout;
1289
- }
1290
-
1291
- export declare interface ResolvedComposition {
1292
- placements: readonly ResolvedCompositionPlacement[];
1293
- regionOrder: Partial<Record<DockedCompositionRegion, readonly string[]>>;
1294
- activePanelIds: Partial<Record<DockedCompositionRegion, string>>;
1295
- addablePanels: readonly ResolvedCompositionAddablePanel[];
1296
- diagnostics: readonly CompositionDiagnostic[];
1297
- requiredFallback?: {
1298
- panelId: string;
1299
- };
1300
- }
1301
-
1302
- export declare interface ResolvedCompositionAddablePanel {
1303
- panelId: string;
1304
- region: DockedCompositionRegion;
1305
- allowedRegions: readonly DockedCompositionRegion[];
1306
- pinned?: boolean;
1307
- }
1124
+ export declare const resolveAnchorRegion: (anchorId: AnchorId) => "status" | "main" | "nav" | "activity" | "sidenav" | "main-header" | "main-left-menu" | "main-right-menu" | "secondary-header" | "secondary-left-menu" | "secondary" | "secondary-right-menu" | "side-header" | "side-left-menu" | "side" | "side-right-menu" | "overlay";
1308
1125
 
1309
- export declare interface ResolvedCompositionPlacement {
1310
- panelId: string;
1311
- region: DockedCompositionRegion;
1312
- slot?: string;
1313
- required: boolean;
1314
- defaultOpen: boolean;
1315
- pinned?: boolean;
1316
- allowedRegions: readonly DockedCompositionRegion[];
1317
- origin: "persisted" | "required" | "default";
1126
+ declare interface ResolvedOwnedPlacement<Value = unknown> {
1127
+ identity: PlacementIdentity;
1128
+ region: WorkbenchRegion;
1129
+ order: number;
1130
+ value: Value;
1318
1131
  }
1319
1132
 
1320
1133
  declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
1321
1134
 
1322
- declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
1323
- priority: number;
1324
- };
1325
-
1326
1135
  export declare interface ResourceBrowseEntry {
1327
1136
  resource: ResourceRef;
1328
1137
  searchText?: string;
@@ -1333,13 +1142,13 @@ export declare interface ResourceBrowseEntry {
1333
1142
  }
1334
1143
 
1335
1144
  /** Row-level context menu action surfaced by the renderer. */
1336
- export declare interface ResourceContextAction {
1145
+ export declare interface ResourceContextAction<TNode = unknown> {
1337
1146
  key: string;
1338
1147
  label: string;
1339
1148
  onClick: () => Promise<void> | void;
1340
1149
  isDisabled?: boolean;
1341
- icon?: ReactNode;
1342
- endContent?: ReactNode;
1150
+ icon?: TNode;
1151
+ endContent?: TNode;
1343
1152
  separatorBefore?: boolean;
1344
1153
  }
1345
1154
 
@@ -1364,53 +1173,25 @@ export declare interface ResourceKindContribution {
1364
1173
  kind: string;
1365
1174
  label: string;
1366
1175
  icon?: string;
1367
- surface?: ResourceSurface;
1368
- paletteOpenInput?: OpenResourceInput;
1369
1176
  }
1370
1177
 
1371
1178
  export declare interface ResourceListContext {
1372
1179
  primary?: ResourceRef;
1373
1180
  }
1374
1181
 
1375
- declare interface ResourceNavigator<TResult = unknown> {
1376
- id: string;
1377
- priority?: number;
1378
- canNavigate(resource: ResourceRef): boolean;
1379
- createHref?(resource: ResourceRef): string;
1380
- navigate(resource: ResourceRef): TResult | Promise<TResult>;
1381
- }
1382
-
1383
- export declare interface ResourcePresenter {
1384
- id: string;
1385
- priority?: number;
1386
- canOpen(resource: ResourceRef): boolean;
1387
- open(resource: ResourceRef, input: OpenResourceInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
1388
- afterOpen?(resource: ResourceRef, instance: WorkbenchPanelInstance, input: OpenResourceInput): void;
1389
- }
1390
-
1391
1182
  export declare interface ResourceProvider {
1392
1183
  id: string;
1393
1184
  kind: string;
1394
1185
  list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
1395
1186
  }
1396
1187
 
1397
- export declare interface ResourceRef {
1398
- kind: string;
1399
- uri: string;
1400
- id?: string;
1401
- label?: string;
1402
- icon?: string;
1403
- metadata?: Record<string, unknown>;
1404
- }
1188
+ export { ResourceRef }
1405
1189
 
1406
1190
  export declare interface ResourceRegistry {
1407
1191
  store: WorkbenchStore<ResourceRegistryStoreState>;
1408
1192
  registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable_2;
1409
1193
  getKind(kind: string): RegisteredResourceKind | undefined;
1410
- getSurface(resource: ResourceRef): ResourceSurface | undefined;
1411
1194
  listKinds(): RegisteredResourceKind[];
1412
- registerPresenter(presenter: ResourcePresenter): Disposable_2;
1413
- listPresenters(): ResolvedResourcePresenter[];
1414
1195
  registerProvider(provider: ResourceProvider): Disposable_2;
1415
1196
  listProviders(): ResourceProvider[];
1416
1197
  listResources(query: string): readonly ResourceBrowseEntry[];
@@ -1418,20 +1199,14 @@ export declare interface ResourceRegistry {
1418
1199
  listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
1419
1200
  walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
1420
1201
  onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
1421
- isOpeningResource(): boolean;
1422
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
1423
- onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
1424
1202
  }
1425
1203
 
1426
1204
  declare interface ResourceRegistryStoreState {
1427
1205
  kinds: Record<string, RegisteredResourceKind>;
1428
- presenters: Record<string, ResolvedResourcePresenter>;
1429
1206
  providers: Record<string, ResourceProvider>;
1430
1207
  hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
1431
1208
  }
1432
1209
 
1433
- export declare type ResourceSurface = "primary" | "secondary" | "attached";
1434
-
1435
1210
  /** Auto-rendered as a param editor from the registered preference schema. */
1436
1211
  export declare interface SchemaSettingsPanel extends SettingsPanelBase {
1437
1212
  kind: "schema";
@@ -1468,7 +1243,7 @@ export declare interface SettingsPanelBase {
1468
1243
  when?: string;
1469
1244
  }
1470
1245
 
1471
- export declare type SettingsPanelContribution = SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel;
1246
+ export declare type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
1472
1247
 
1473
1248
  /** A preference this panel edits; a bare string uses the preference name as its label. */
1474
1249
  export declare type SettingsPanelPreference = string | {
@@ -1479,11 +1254,13 @@ export declare type SettingsPanelPreference = string | {
1479
1254
  export declare interface SettingsRegistry {
1480
1255
  store: WorkbenchStore<SettingsRegistryStoreState>;
1481
1256
  registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable_2;
1482
- registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1257
+ registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1483
1258
  getSection(id: string): RegisteredSettingsSection | undefined;
1484
1259
  getPanel(id: string): RegisteredSettingsPanel | undefined;
1485
1260
  listSections(): RegisteredSettingsSection[];
1486
1261
  listPanels(): RegisteredSettingsPanel[];
1262
+ resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
1263
+ getCollectionItem(panelId: string, itemId: string): unknown | undefined;
1487
1264
  /** Signal that a collection's backing data changed so the surface refreshes. */
1488
1265
  refresh(): void;
1489
1266
  }
@@ -1507,6 +1284,12 @@ export declare interface SettingsSectionContribution {
1507
1284
  actions?: SettingsAction[];
1508
1285
  }
1509
1286
 
1287
+ /** Core-only panel ref for host-owned shell placements. Extensions cannot address them. */
1288
+ declare interface ShellPlacementRef {
1289
+ kind: "shell-placement";
1290
+ id: string;
1291
+ }
1292
+
1510
1293
  export declare type SortDirection = "asc" | "desc";
1511
1294
 
1512
1295
  export declare type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];
@@ -1557,15 +1340,29 @@ export declare interface TreeAction {
1557
1340
  run?(args?: unknown): Promise<void> | void;
1558
1341
  }
1559
1342
 
1560
- export declare interface TreeContext {
1561
- filter?: string;
1562
- resource?: ResourceRef;
1563
- /** Widget/view contribution id for trees rendered through a view-backed widget. */
1564
- viewId?: string;
1343
+ export declare interface TreeContext extends TreeQueryContext {
1344
+ state: Readonly<TreeRendererState>;
1345
+ refresh(): void;
1346
+ setSelectedNode(nodeId: string | undefined): void;
1565
1347
  }
1566
1348
 
1349
+ export declare interface TreeMoveEndpoint {
1350
+ kind: "section" | "node";
1351
+ sectionId: string;
1352
+ id: string;
1353
+ moveScope?: string;
1354
+ }
1355
+
1356
+ export declare type TreeMovePolicy = (move: {
1357
+ source: TreeMoveEndpoint;
1358
+ destination: TreeMoveEndpoint;
1359
+ }) => boolean;
1360
+
1567
1361
  export declare interface TreeNode {
1568
1362
  id: string;
1363
+ selected?: boolean;
1364
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
1365
+ moveScope?: string;
1569
1366
  label: string;
1570
1367
  icon?: string;
1571
1368
  iconElement?: unknown;
@@ -1610,6 +1407,13 @@ export declare interface TreeNodeInlineInput {
1610
1407
 
1611
1408
  declare type TreeNodeRowVariant = "empty-state";
1612
1409
 
1410
+ declare interface TreeQueryContext {
1411
+ filter?: string;
1412
+ resource?: ResourceRef;
1413
+ /** Widget/view contribution id for trees rendered through a view-backed widget. */
1414
+ viewId?: string;
1415
+ }
1416
+
1613
1417
  export declare interface TreeRendererContribution {
1614
1418
  id: string;
1615
1419
  title: string;
@@ -1620,37 +1424,38 @@ export declare interface TreeRendererContribution {
1620
1424
  defaultExpandedSectionIds?: string[];
1621
1425
  defaultExpandedNodeIds?: string[];
1622
1426
  getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1623
- getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1624
- getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1427
+ getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1428
+ getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1625
1429
  getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1430
+ canMove?: TreeMovePolicy;
1626
1431
  moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
1627
1432
  }
1628
1433
 
1629
- export declare type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
1434
+ declare type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
1630
1435
  treeId: string;
1631
1436
  }) => unknown;
1632
1437
 
1633
- export declare interface TreeRendererPersistenceAdapter {
1438
+ declare interface TreeRendererPersistenceAdapter {
1634
1439
  getTreeStates(): PersistedTreeRendererStates | undefined;
1635
1440
  setTreeStates(states: PersistedTreeRendererStates): void;
1636
1441
  }
1637
1442
 
1638
- export declare interface TreeRendererRefreshEvent {
1443
+ declare interface TreeRendererRefreshEvent {
1639
1444
  treeId: string;
1640
1445
  }
1641
1446
 
1642
1447
  declare type TreeRendererRefreshListener = (event: TreeRendererRefreshEvent) => void;
1643
1448
 
1644
- export declare interface TreeRendererRegistry {
1449
+ declare interface TreeRendererRegistry {
1645
1450
  treeStore: WorkbenchStore<TreeRendererStoreState>;
1646
1451
  registerTreeRenderer(view: TreeRendererContribution, metadata?: ContributionMetadata): Disposable_2;
1647
1452
  setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1648
1453
  getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1649
1454
  listTreeRenderers(): RegisteredTreeRendererContribution[];
1650
- getBody(id: string, ctx?: TreeContext): Promise<TreeViewSection[]>;
1651
- getHeader(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1652
- getFooter(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1653
- getChildren(id: string, node: TreeNode, ctx?: TreeContext): Promise<TreeNode[]>;
1455
+ getBody(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1456
+ getHeader(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1457
+ getFooter(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1458
+ getChildren(id: string, node: TreeNode, ctx?: TreeQueryContext): Promise<TreeNode[]>;
1654
1459
  getTreeState(id: string): TreeRendererState;
1655
1460
  setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1656
1461
  setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
@@ -1681,6 +1486,8 @@ declare interface TreeSectionEmptyState {
1681
1486
 
1682
1487
  export declare interface TreeViewSection {
1683
1488
  id: string;
1489
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
1490
+ moveScope?: string;
1684
1491
  label?: string;
1685
1492
  actions?: TreeAction[];
1686
1493
  collapsible?: boolean;
@@ -1701,6 +1508,11 @@ export declare interface TreeViewSection {
1701
1508
  */
1702
1509
  export declare type ViewMode = "board" | "list";
1703
1510
 
1511
+ export declare interface ViewSettingsPanel extends SettingsPanelBase {
1512
+ kind: "view";
1513
+ viewId: string;
1514
+ }
1515
+
1704
1516
  declare interface WidgetContribution {
1705
1517
  id: string;
1706
1518
  title: string;
@@ -1712,15 +1524,13 @@ declare interface WidgetContribution {
1712
1524
  mountStrategy?: WidgetMountStrategy;
1713
1525
  closable?: boolean;
1714
1526
  hiddenByDefault?: boolean;
1715
- subPanelsOnly?: boolean;
1716
1527
  regionSize?: WorkbenchRegionSize;
1717
1528
  regionCollapsible?: boolean;
1718
1529
  headerBorderBottom?: boolean;
1719
- floatingPanels?: WorkbenchFloatingPanelVisibility;
1720
1530
  resourceKinds?: string[];
1721
1531
  priority?: number;
1722
1532
  rendererId: string;
1723
- openCommandId?: string;
1533
+ openCommand?: WorkbenchCommandTarget;
1724
1534
  eligibleLocations?: WorkbenchLocationEligibility;
1725
1535
  panelMenuOwner?: WorkbenchPanelMenuOwner;
1726
1536
  tab?: WorkbenchWidgetTab;
@@ -1755,13 +1565,6 @@ declare interface WorkbenchBreadcrumbState {
1755
1565
  items: WorkbenchBreadcrumbItem[] | undefined;
1756
1566
  }
1757
1567
 
1758
- declare interface WorkbenchClosedSubPanel {
1759
- region: WorkbenchPanelRegion;
1760
- reference: WorkbenchSubPanelRef;
1761
- resource?: ResourceRef;
1762
- title?: string;
1763
- }
1764
-
1765
1568
  export declare interface WorkbenchCommandExecutionContext {
1766
1569
  resource?: ResourceRef;
1767
1570
  source?: "panel-add";
@@ -1805,7 +1608,7 @@ declare interface WorkbenchCommandPaletteState {
1805
1608
  paramsRequest: WorkbenchCommandParamsRequest | null;
1806
1609
  }
1807
1610
 
1808
- declare type WorkbenchCommandPaletteView = "main" | "theme" | "mode";
1611
+ declare type WorkbenchCommandPaletteView = "main" | "theme";
1809
1612
 
1810
1613
  declare interface WorkbenchCommandParamsRequest {
1811
1614
  record: {
@@ -1820,14 +1623,14 @@ declare interface WorkbenchCommandParamsRequest {
1820
1623
  context?: WorkbenchCommandExecutionContext;
1821
1624
  }
1822
1625
 
1823
- export declare interface WorkbenchComposition {
1824
- resourceKinds: readonly CompositionResourceKindDefinition[];
1825
- panels: readonly CompositionPanelDefinition[];
1826
- resourcePanels: readonly CompositionResourcePanelEdge[];
1626
+ export declare interface WorkbenchCommandTarget {
1627
+ commandId: string;
1628
+ args?: unknown;
1827
1629
  }
1828
1630
 
1829
1631
  declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
1830
1632
  contribution: RegisteredWidgetContribution;
1633
+ open?(resource?: ResourceRef): void;
1831
1634
  }
1832
1635
 
1833
1636
  declare interface WorkbenchCompositionController {
@@ -1848,6 +1651,8 @@ export declare interface WorkbenchCore extends WorkbenchCoreContributionContext
1848
1651
  }
1849
1652
 
1850
1653
  declare interface WorkbenchCoreContributionContext {
1654
+ pinPlacement(identity: PlacementIdentity): void;
1655
+ closePlacement(identity: PlacementIdentity): void;
1851
1656
  breadcrumbs: WorkbenchBreadcrumbController;
1852
1657
  commandPalette: WorkbenchCommandPaletteController;
1853
1658
  commandPaletteResources: CommandPaletteResourceRegistry;
@@ -1855,19 +1660,24 @@ declare interface WorkbenchCoreContributionContext {
1855
1660
  composition: WorkbenchCompositionController;
1856
1661
  context: ContextKeyService;
1857
1662
  focus: WorkbenchFocusController;
1858
- history: HistoryController;
1859
1663
  keybindings: KeybindingRegistry;
1860
- lastResource: WorkbenchLastResourceController;
1861
1664
  layout: WorkbenchModuleLayoutModel;
1862
1665
  modes: WorkbenchModeRegistry;
1666
+ modePlacements: WorkbenchModePlacementRegistry;
1667
+ shellPlacements: WorkbenchShellPlacementRegistry;
1863
1668
  navigation: NavigationRegistry;
1864
- navigator: WorkbenchNavigator;
1669
+ navigationTrees: NavigationTreeRegistry;
1865
1670
  notifications: NotificationRegistry;
1866
- panels: WorkbenchPanelsController;
1671
+ overlays: WorkbenchOverlayRegistry;
1672
+ placeholders: WorkbenchPlaceholderRegistry;
1673
+ pageLocations: WorkbenchPageLocationController;
1674
+ pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
1675
+ panelMenuState: WorkbenchPanelMenuStateController;
1867
1676
  preferences: PreferenceRegistry;
1868
- renderers: WorkbenchRenderers;
1677
+ treeViews: WorkbenchTreeViews;
1869
1678
  resources: ResourceRegistry;
1870
1679
  views: WorkbenchViewRegistry;
1680
+ viewMenus: WorkbenchViewMenuRegistry;
1871
1681
  settings: SettingsRegistry;
1872
1682
  statusBar: WorkbenchStatusBarRegistry;
1873
1683
  statuses: WorkbenchStatusRegistry;
@@ -1880,14 +1690,13 @@ declare interface WorkbenchCoreContributionContext {
1880
1690
  onDidChangePrimaryResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1881
1691
  getActiveResource(): ResourceRef | undefined;
1882
1692
  onDidChangeActiveResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1693
+ registerChildModule(module: WorkbenchModuleContribution): Disposable_2;
1883
1694
  }
1884
1695
 
1885
1696
  declare interface WorkbenchFileIconThemeStoreState {
1886
1697
  themes: readonly FileIconThemePreferenceOption[];
1887
1698
  }
1888
1699
 
1889
- export declare type WorkbenchFloatingPanelVisibility = "visible" | "hidden";
1890
-
1891
1700
  declare type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
1892
1701
 
1893
1702
  export declare interface WorkbenchFocusController {
@@ -1908,11 +1717,6 @@ declare interface WorkbenchFocusState {
1908
1717
 
1909
1718
  export declare type WorkbenchHierarchyNode = ResourceRef | WorkbenchViewHierarchyNode;
1910
1719
 
1911
- declare interface WorkbenchHistoryPersistence {
1912
- getHistory(scope?: string): PersistedWorkbenchHistory | undefined;
1913
- setHistory(state: PersistedWorkbenchHistory, scope?: string): void;
1914
- }
1915
-
1916
1720
  export declare interface WorkbenchHost {
1917
1721
  getSnapshot(): WorkbenchSnapshot;
1918
1722
  restoreSnapshot(snapshot: WorkbenchSnapshot): void;
@@ -1922,18 +1726,12 @@ export declare interface WorkbenchHost {
1922
1726
  getPersistenceScope(): string | undefined;
1923
1727
  }
1924
1728
 
1925
- declare interface WorkbenchLastResourceController {
1926
- get(): ResourceRef | undefined;
1927
- set(resource: ResourceRef | undefined): void;
1928
- restore(): Promise<boolean>;
1929
- }
1930
-
1931
1729
  export declare interface WorkbenchLayout {
1932
1730
  regions: Record<WorkbenchRegion, WorkbenchRegionState>;
1933
1731
  locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
1934
1732
  activeWidgetId?: string;
1935
1733
  activeLocationWidgetId?: string;
1936
- activeResourceUri?: string;
1734
+ activeResourceKey?: string;
1937
1735
  }
1938
1736
 
1939
1737
  declare type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
@@ -1944,9 +1742,7 @@ declare interface WorkbenchLayoutStoreState {
1944
1742
  placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;
1945
1743
  }
1946
1744
 
1947
- declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
1948
-
1949
- export declare interface WorkbenchLocationEligibility {
1745
+ declare interface WorkbenchLocationEligibility {
1950
1746
  modeIds?: string[];
1951
1747
  resourceKinds?: string[];
1952
1748
  resourceIds?: string[];
@@ -1957,16 +1753,6 @@ export declare interface WorkbenchLocationEligibility {
1957
1753
  }): boolean;
1958
1754
  }
1959
1755
 
1960
- declare interface WorkbenchLocationRef {
1961
- key: string;
1962
- modeId?: string;
1963
- viewId?: string;
1964
- resource?: ResourceRef;
1965
- contributionId?: string;
1966
- instanceKey?: string;
1967
- title?: string;
1968
- }
1969
-
1970
1756
  export declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
1971
1757
 
1972
1758
  export declare type WorkbenchModeActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
@@ -1988,7 +1774,12 @@ declare type WorkbenchModeChangeListener = () => void;
1988
1774
  export declare interface WorkbenchModeContribution {
1989
1775
  id: string;
1990
1776
  label?: string;
1777
+ defaultTheme?: string;
1778
+ floatingPanels?: "visible" | "hidden";
1779
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
1991
1780
  panels?: readonly WorkbenchPanelRegion[];
1781
+ /** Region-level layout policy while this mode is active. */
1782
+ regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
1992
1783
  resourceKinds?: readonly string[];
1993
1784
  defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
1994
1785
  listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
@@ -1998,6 +1789,31 @@ export declare interface WorkbenchModeContribution {
1998
1789
  reconcile?(ctx: WorkbenchModeActivationContext): void;
1999
1790
  }
2000
1791
 
1792
+ export declare interface WorkbenchModePlacementContribution extends WorkbenchPlacementPresentation {
1793
+ readonly id: string;
1794
+ readonly ref: PlacementRef;
1795
+ readonly modeId: string;
1796
+ readonly item: WorkbenchOwnedPlacementItem;
1797
+ readonly region: DockedWorkbenchRegion;
1798
+ readonly order?: number;
1799
+ readonly movableTo?: readonly DockedWorkbenchRegion[];
1800
+ }
1801
+
1802
+ export declare interface WorkbenchModePlacementRegistry {
1803
+ registerPlacement(placement: WorkbenchModePlacementContribution): Disposable_2;
1804
+ getPlacement(ref: PlacementRef): WorkbenchModePlacementContribution | undefined;
1805
+ listPlacements(modeId?: string): WorkbenchModePlacementContribution[];
1806
+ openPlacement(input: OpenModePlacementTarget): PlacementIdentity;
1807
+ updatePlacement(identity: PlacementIdentity, input: {
1808
+ resource?: ResourceRef;
1809
+ title?: string;
1810
+ open?: PageOpenIntent;
1811
+ }): void;
1812
+ closePlacement(identity: PlacementIdentity): void;
1813
+ resolvePlacements(modeId: string, context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
1814
+ onDidChange(listener: () => void): Disposable_2;
1815
+ }
1816
+
2001
1817
  export declare interface WorkbenchModeRegistry {
2002
1818
  store: WorkbenchStore<WorkbenchModeStoreState>;
2003
1819
  dispose(): void;
@@ -2031,77 +1847,7 @@ export declare interface WorkbenchModuleContribution {
2031
1847
 
2032
1848
  export declare type WorkbenchModuleContributionContext = WorkbenchModuleContext;
2033
1849
 
2034
- declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerWidget">;
2035
-
2036
- declare interface WorkbenchNavigationCommit {
2037
- modeId: string | undefined;
2038
- resource: ResourceRef | undefined;
2039
- replaceActive: boolean;
2040
- }
2041
-
2042
- declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
2043
-
2044
- export declare interface WorkbenchNavigationEntry {
2045
- entryId: string;
2046
- recordedAt: number;
2047
- location: WorkbenchLocationRef;
2048
- selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
2049
- kind: "resource" | "view" | "widget" | "mode";
2050
- modeId?: string;
2051
- resource?: ResourceRef;
2052
- viewId?: string;
2053
- widgetId?: string;
2054
- contributionId?: string;
2055
- title?: string;
2056
- closedSubPanel?: WorkbenchClosedSubPanel;
2057
- }
2058
-
2059
- declare type WorkbenchNavigationResult = {
2060
- ok: true;
2061
- modeId: string | undefined;
2062
- resource: ResourceRef | undefined;
2063
- } | {
2064
- ok: false;
2065
- code: WorkbenchNavigationDiagnosticCode;
2066
- message: string;
2067
- };
2068
-
2069
- declare interface WorkbenchNavigationTarget {
2070
- modeId?: string;
2071
- resource?: ResourceRef;
2072
- replaceActive?: boolean;
2073
- }
2074
-
2075
- declare interface WorkbenchNavigator {
2076
- configure(hooks: WorkbenchNavigatorHostHooks): void;
2077
- getSelectedResource(): ResourceRef | undefined;
2078
- open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
2079
- commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
2080
- getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
2081
- forgetResource(uri: string): void;
2082
- onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
2083
- dispose(): void;
2084
- };
2085
- }
2086
-
2087
- declare interface WorkbenchNavigatorCommitInput {
2088
- modeId?: string | null;
2089
- resource?: ResourceRef | null;
2090
- replaceActive?: boolean;
2091
- present?: boolean;
2092
- }
2093
-
2094
- declare interface WorkbenchNavigatorHostHooks {
2095
- getProjectId?(): string | undefined;
2096
- getSelectedResource?(): ResourceRef | undefined;
2097
- interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
2098
- applySelection?(resource: ResourceRef | undefined): void;
2099
- applyScope?(commit: WorkbenchNavigationCommit): void;
2100
- applyBreadcrumb?(resource: ResourceRef | undefined): void;
2101
- presentResource?(resource: ResourceRef, input: {
2102
- replaceActive: boolean;
2103
- }): Promise<unknown> | unknown;
2104
- }
1850
+ declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
2105
1851
 
2106
1852
  export declare interface WorkbenchNotification {
2107
1853
  id?: string;
@@ -2137,7 +1883,162 @@ declare interface WorkbenchNotificationStoreState {
2137
1883
  notifications: Record<string, RegisteredWorkbenchNotification>;
2138
1884
  }
2139
1885
 
2140
- export declare interface WorkbenchPanelContribution {
1886
+ export declare interface WorkbenchOverlayContribution extends Omit<WorkbenchPlacementPresentation, "mountStrategy"> {
1887
+ id: string;
1888
+ viewId: string;
1889
+ closable?: boolean;
1890
+ }
1891
+
1892
+ export declare interface WorkbenchOverlayRegistry {
1893
+ registerOverlay(overlay: WorkbenchOverlayContribution): Disposable_2;
1894
+ getOverlay(id: string): WorkbenchOverlayContribution | undefined;
1895
+ listOverlays(): WorkbenchOverlayContribution[];
1896
+ openOverlay(id: string, input?: OpenWorkbenchOverlayInput): string;
1897
+ closeOverlay(instanceId: string): void;
1898
+ }
1899
+
1900
+ declare type WorkbenchOwnedPlacementItem = PlacementItem;
1901
+
1902
+ export declare interface WorkbenchPageBrowserEntry {
1903
+ url: string;
1904
+ state?: unknown;
1905
+ }
1906
+
1907
+ declare interface WorkbenchPageContribution {
1908
+ id: string;
1909
+ ref: PageRef;
1910
+ title?: Localizable<string>;
1911
+ icon?: string;
1912
+ path: string;
1913
+ modeId: string;
1914
+ parentId?: string;
1915
+ resource?: ResourceConstraint;
1916
+ main: WorkbenchPageMain;
1917
+ slots: readonly WorkbenchPageSlot[];
1918
+ }
1919
+
1920
+ export declare interface WorkbenchPageLocationBrowser {
1921
+ current(): WorkbenchPageBrowserEntry;
1922
+ push(entry: WorkbenchPageBrowserEntry): void;
1923
+ replace(entry: WorkbenchPageBrowserEntry): void;
1924
+ back(): void;
1925
+ forward(): void;
1926
+ onPopState(listener: (entry: WorkbenchPageBrowserEntry) => void): {
1927
+ dispose(): void;
1928
+ };
1929
+ }
1930
+
1931
+ export declare interface WorkbenchPageLocationController {
1932
+ historyStore: WorkbenchStore<WorkbenchPageLocationHistoryState>;
1933
+ setProject(projectId: string): void;
1934
+ clearProject(): void;
1935
+ isCurrentProjectUrl(projectId: string): boolean;
1936
+ hasCurrentPageUrl(projectId: string): boolean;
1937
+ boot(projectId: string): WorkbenchPageNavigationResult;
1938
+ switchProject(projectId: string): WorkbenchPageNavigationResult;
1939
+ navigate(target: NavigationTargetPage_2): WorkbenchPageNavigationResult;
1940
+ replay(location: PageLocation): WorkbenchPageNavigationResult;
1941
+ navigateToParent(): WorkbenchPageNavigationResult;
1942
+ closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
1943
+ goBack(): void;
1944
+ goForward(): void;
1945
+ dispose(): void;
1946
+ }
1947
+
1948
+ export declare interface WorkbenchPageLocationDiagnostic {
1949
+ code: "page-location-unresolved";
1950
+ source: "boot" | "history" | "navigation" | "project-switch";
1951
+ message: string;
1952
+ }
1953
+
1954
+ declare interface WorkbenchPageLocationHistoryState {
1955
+ canGoBack: boolean;
1956
+ canGoForward: boolean;
1957
+ }
1958
+
1959
+ export declare interface WorkbenchPageLocationPersistence {
1960
+ load(projectId: string): PageLocation | undefined;
1961
+ save(projectId: string, location: PageLocation): void;
1962
+ }
1963
+
1964
+ declare type WorkbenchPageMain = PageMain extends infer Main ? Main extends PageMain ? Omit<Main, "tab"> & {
1965
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
1966
+ } : never : never;
1967
+
1968
+ export declare type WorkbenchPageNavigationResult = {
1969
+ ok: true;
1970
+ location: PageLocation;
1971
+ } | {
1972
+ ok: false;
1973
+ diagnostic: WorkbenchPageLocationDiagnostic;
1974
+ };
1975
+
1976
+ export declare interface WorkbenchPagePersistenceScope {
1977
+ scope?: string;
1978
+ carryRegions?: readonly WorkbenchRegion[];
1979
+ }
1980
+
1981
+ export declare interface WorkbenchPagePersistenceScopeInput {
1982
+ currentScope?: string;
1983
+ modeId?: string;
1984
+ pageId?: string;
1985
+ projectId?: string;
1986
+ resource?: ResourceRef;
1987
+ }
1988
+
1989
+ declare interface WorkbenchPageRegistry<Value> {
1990
+ store: WorkbenchStore<WorkbenchPageRegistryStoreState<Value>>;
1991
+ registerPage(page: WorkbenchPageContribution): {
1992
+ dispose(): void;
1993
+ };
1994
+ getPage(pageId: string): WorkbenchPageContribution | undefined;
1995
+ listPages(): WorkbenchPageContribution[];
1996
+ pinPlacement(identity: PlacementIdentity): void;
1997
+ openSlot(input: WorkbenchPageSlotOpenInput): void;
1998
+ }
1999
+
2000
+ declare interface WorkbenchPageRegistryStoreState<Value> {
2001
+ pages: Readonly<Record<string, WorkbenchPageContribution>>;
2002
+ pageStates: Readonly<Record<string, WorkbenchPageRuntimeState>>;
2003
+ projectId?: string;
2004
+ location?: PageLocation;
2005
+ activeModeId?: string;
2006
+ activePageId?: string;
2007
+ placements: readonly ResolvedOwnedPlacement<Value>[];
2008
+ reconciliation: OwnedPlacementReconciliation<Value>;
2009
+ }
2010
+
2011
+ declare interface WorkbenchPageResourceCodec {
2012
+ normalize(resource: ResourceRef): ResourceRef;
2013
+ toUri(resource: ResourceRef): string;
2014
+ fromUri(uri: string): ResourceRef | undefined;
2015
+ }
2016
+
2017
+ declare interface WorkbenchPageRuntimeState {
2018
+ openStaticSlotIds: readonly string[];
2019
+ resourceInstances: Readonly<Record<string, readonly WorkbenchPageSlotInstance[]>>;
2020
+ activePrimaryInstanceKey?: string;
2021
+ }
2022
+
2023
+ declare interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
2024
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
2025
+ }
2026
+
2027
+ declare interface WorkbenchPageSlotInstance {
2028
+ instanceKey: string;
2029
+ resource: ResourceRef;
2030
+ section?: FileRendererSectionTarget;
2031
+ open?: PageOpenIntent;
2032
+ }
2033
+
2034
+ declare interface WorkbenchPageSlotOpenInput {
2035
+ pageId: string;
2036
+ slotId: string;
2037
+ resource?: ResourceRef;
2038
+ open?: PageOpenIntent;
2039
+ }
2040
+
2041
+ declare interface WorkbenchPanelContribution {
2141
2042
  id: string;
2142
2043
  title: string;
2143
2044
  icon?: string;
@@ -2147,16 +2048,15 @@ export declare interface WorkbenchPanelContribution {
2147
2048
  singleton?: boolean;
2148
2049
  reuse?: WorkbenchPanelReusePolicy;
2149
2050
  mountStrategy?: WorkbenchPanelMountStrategy;
2051
+ closable?: boolean;
2150
2052
  hiddenByDefault?: boolean;
2151
- subPanelsOnly?: boolean;
2152
2053
  regionSize?: WorkbenchRegionSize;
2153
2054
  regionCollapsible?: boolean;
2154
2055
  headerBorderBottom?: boolean;
2155
- floatingPanels?: WorkbenchFloatingPanelVisibility;
2156
2056
  resourceKinds?: string[];
2157
2057
  eligibleLocations?: WorkbenchLocationEligibility;
2158
2058
  priority?: number;
2159
- openCommandId?: string;
2059
+ openCommand?: WorkbenchCommandTarget;
2160
2060
  tab?: WorkbenchPanelTab;
2161
2061
  config?: unknown;
2162
2062
  canOpen?(resource: ResourceRef): boolean;
@@ -2168,12 +2068,14 @@ export declare interface WorkbenchPanelContribution {
2168
2068
  export declare interface WorkbenchPanelInstance {
2169
2069
  instanceId: string;
2170
2070
  panelId: string;
2071
+ placementIdentity?: PlacementIdentity;
2171
2072
  viewId?: string;
2172
2073
  ownerId?: string;
2173
2074
  source?: ContributionSource;
2174
2075
  resource?: ResourceRef;
2175
- resourceUri?: string;
2176
- ownerResourceUri?: string;
2076
+ section?: FileRendererSectionTarget;
2077
+ resourceKey?: string;
2078
+ ownerResourceKey?: string;
2177
2079
  title?: string;
2178
2080
  pinned?: boolean;
2179
2081
  closable: boolean;
@@ -2188,7 +2090,7 @@ declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region"
2188
2090
  fallbackRegion?: WorkbenchPanelMenuRegion;
2189
2091
  };
2190
2092
 
2191
- export declare interface WorkbenchPanelMenuDefinition {
2093
+ declare interface WorkbenchPanelMenuDefinition {
2192
2094
  id: string;
2193
2095
  title: string;
2194
2096
  icon?: string;
@@ -2230,15 +2132,32 @@ declare const workbenchPanelMenuRegions: {
2230
2132
  };
2231
2133
  };
2232
2134
 
2233
- declare interface WorkbenchPanelMenusContribution {
2234
- panelMenus?: readonly WorkbenchPanelMenuDefinition[];
2135
+ export declare type WorkbenchPanelMenuSide = "left" | "right";
2136
+
2137
+ declare interface WorkbenchPanelMenuState {
2138
+ openByMenuId: Record<string, boolean>;
2235
2139
  }
2236
2140
 
2237
- export declare type WorkbenchPanelMenuSide = "left" | "right";
2141
+ declare type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
2142
+
2143
+ declare interface WorkbenchPanelMenuStateController {
2144
+ store: WorkbenchStore<WorkbenchPanelMenuState>;
2145
+ isOpen(menuId: string): boolean;
2146
+ setOpen(menuId: string, open: boolean): void;
2147
+ toggle(menuId: string): void;
2148
+ setPersistenceScope(scope: string | undefined): void;
2149
+ getPersistenceScope(): string | undefined;
2150
+ onDidChange(listener: WorkbenchPanelMenuStateChangeListener): Disposable_2;
2151
+ }
2152
+
2153
+ declare interface WorkbenchPanelMenuStatePersistenceAdapter {
2154
+ getMenuStates(scope?: string): PersistedWorkbenchPanelMenuState | undefined;
2155
+ setMenuStates(state: PersistedWorkbenchPanelMenuState, scope?: string): void;
2156
+ }
2238
2157
 
2239
2158
  export declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
2240
2159
 
2241
- export declare type WorkbenchPanelOpenStrategy = {
2160
+ declare type WorkbenchPanelOpenStrategy = {
2242
2161
  kind: "persistent";
2243
2162
  position?: WorkbenchTabPosition;
2244
2163
  } | {
@@ -2263,41 +2182,50 @@ export declare interface WorkbenchPanelRenderInput {
2263
2182
  refresh: () => void;
2264
2183
  }
2265
2184
 
2266
- export declare type WorkbenchPanelReusePolicy = WidgetReusePolicy;
2185
+ declare type WorkbenchPanelReusePolicy = WidgetReusePolicy;
2267
2186
 
2268
- declare type WorkbenchPanelsChangeListener = (state: WorkbenchPanelsState) => void;
2187
+ export declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2269
2188
 
2270
- declare interface WorkbenchPanelsController {
2271
- store: WorkbenchStore<WorkbenchPanelsState>;
2272
- isOpen(regionId: string): boolean;
2273
- setOpen(regionId: string, open: boolean): void;
2274
- toggle(regionId: string): void;
2275
- setPersistenceScope(scope: string | undefined): void;
2276
- getPersistenceScope(): string | undefined;
2277
- onDidChange(listener: WorkbenchPanelsChangeListener): Disposable_2;
2189
+ export declare interface WorkbenchPersistenceAdapter {
2190
+ getSnapshot(scope?: string): WorkbenchSnapshot | undefined;
2191
+ setSnapshot(snapshot: WorkbenchSnapshot, scope?: string): void;
2192
+ flush?(): void;
2193
+ dispose?(): void;
2278
2194
  }
2279
2195
 
2280
- declare interface WorkbenchPanelsPersistenceAdapter {
2281
- getPanelStates(scope?: string): PersistedWorkbenchPanels | undefined;
2282
- setPanelStates(state: PersistedWorkbenchPanels, scope?: string): void;
2196
+ export declare interface WorkbenchPlaceholderContribution {
2197
+ id: string;
2198
+ viewId: string;
2199
+ title?: string;
2200
+ region: WorkbenchRegion;
2201
+ regionSize?: WorkbenchRegionSize;
2202
+ regionCollapsible?: boolean;
2203
+ config?: unknown;
2283
2204
  }
2284
2205
 
2285
- declare interface WorkbenchPanelsState {
2286
- openByRegionId: Record<string, boolean>;
2206
+ export declare interface WorkbenchPlaceholderRegistry {
2207
+ registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable_2;
2287
2208
  }
2288
2209
 
2289
- export declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2210
+ export declare interface WorkbenchPlacementPresentation {
2211
+ mountStrategy?: WidgetMountStrategy;
2212
+ hiddenByDefault?: boolean;
2213
+ headerBorderBottom?: boolean;
2214
+ tab?: WorkbenchPanelTab;
2215
+ config?: unknown;
2216
+ }
2290
2217
 
2291
- export declare interface WorkbenchPersistenceAdapter {
2292
- getSnapshot(scope?: string): WorkbenchSnapshot | undefined;
2293
- setSnapshot(snapshot: WorkbenchSnapshot, scope?: string): void;
2294
- flush?(): void;
2295
- dispose?(): void;
2218
+ export declare interface WorkbenchReactViewBody {
2219
+ kind: "react";
2220
+ render: WorkbenchRendererRegistration["render"];
2296
2221
  }
2297
2222
 
2298
2223
  export declare type WorkbenchRegion = (typeof workbenchRegions)[number];
2299
2224
 
2300
- export 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"];
2225
+ export 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"];
2226
+
2227
+ /** Region-level layout policy owned by the active mode or the host, never by a placement. */
2228
+ declare type WorkbenchRegionSettings = ModeRegionSettings;
2301
2229
 
2302
2230
  export declare interface WorkbenchRegionSize {
2303
2231
  defaultPx?: number;
@@ -2317,44 +2245,18 @@ export declare const workbenchRegionTabAddMenuPath: (region: string) => MenuPath
2317
2245
 
2318
2246
  export declare const workbenchRegionTabLeadingMenuPath: (region: string) => MenuPath;
2319
2247
 
2320
- declare type WorkbenchRendererChangeListener = () => void;
2321
-
2322
- export declare type WorkbenchRendererRegistration = {
2248
+ declare interface WorkbenchRendererRegistration {
2323
2249
  id: string;
2324
- keepAlive?: false;
2325
2250
  render: (input: WorkbenchPanelRenderInput) => unknown;
2326
- } | {
2327
- id: string;
2328
- keepAlive: true;
2329
- render: () => unknown;
2330
- };
2331
-
2332
- export declare interface WorkbenchRendererRegistry {
2333
- store: WorkbenchStore<WorkbenchRendererStoreState>;
2334
- registerRenderer(renderer: WorkbenchRendererRegistration): Disposable_2;
2335
- getRenderer(id: string): WorkbenchRendererRegistration | undefined;
2336
- listRenderers(): WorkbenchRendererRegistration[];
2337
- onDidChange(listener: WorkbenchRendererChangeListener): Disposable_2;
2338
- claim(rendererId: string, slot: HTMLElement, input: WorkbenchPanelRenderInput): Disposable_2;
2339
- getHost(rendererId: string): HTMLElement | undefined;
2340
- getClaim(rendererId: string): WorkbenchPanelRenderInput | undefined;
2341
- }
2342
-
2343
- declare type WorkbenchRenderers = WorkbenchRendererRegistry & TreeRendererRegistry & KanbanRendererRegistry & DataTableRendererRegistry & FileRendererRegistry & ControlsRendererRegistry;
2344
-
2345
- declare interface WorkbenchRendererStoreState {
2346
- renderers: Record<string, WorkbenchRendererRegistration>;
2347
- hosts: Record<string, RegisteredKeepAliveHost>;
2348
- claims: Record<string, WorkbenchPanelRenderInput>;
2349
2251
  }
2350
2252
 
2351
2253
  export declare const workbenchResourceIdContextKey = "workbench.resource.id";
2352
2254
 
2353
- export declare const workbenchResourceKindContextKey = "workbench.resource.kind";
2354
-
2355
2255
  export declare const workbenchResourceMetadataContextKey: (key: string) => string;
2356
2256
 
2357
- export declare const workbenchSelectionResourceUriMetadataKey = "workbench.selectionResourceUri";
2257
+ export declare const workbenchResourceTypeContextKey = "workbench.resource.type";
2258
+
2259
+ export declare const workbenchSelectionResourceKeyMetadataKey = "workbench.selectionResourceKey";
2358
2260
 
2359
2261
  export declare interface WorkbenchShellController {
2360
2262
  getRegionState(region: WorkbenchRegion): WorkbenchShellRegionState;
@@ -2365,7 +2267,29 @@ export declare interface WorkbenchShellController {
2365
2267
  onDidChange(listener: () => void): Disposable_2;
2366
2268
  }
2367
2269
 
2368
- export declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | WorkbenchPanelMenuRegion;
2270
+ export declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | "side";
2271
+
2272
+ export declare interface WorkbenchShellPlacementContribution extends WorkbenchPlacementPresentation {
2273
+ readonly id: string;
2274
+ readonly item: WorkbenchOwnedPlacementItem;
2275
+ readonly region: WorkbenchRegion;
2276
+ readonly order?: number;
2277
+ }
2278
+
2279
+ export declare interface WorkbenchShellPlacementRegistry {
2280
+ registerPlacement(placement: WorkbenchShellPlacementContribution): Disposable_2;
2281
+ getPlacement(placementId: string): WorkbenchShellPlacementContribution | undefined;
2282
+ listPlacements(): WorkbenchShellPlacementContribution[];
2283
+ openPlacement(input: OpenWorkbenchShellPlacementInput): PlacementIdentity;
2284
+ updatePlacement(identity: PlacementIdentity, input: {
2285
+ resource?: ResourceRef;
2286
+ title?: string;
2287
+ open?: PageOpenIntent;
2288
+ }): void;
2289
+ closePlacement(identity: PlacementIdentity): void;
2290
+ resolvePlacements(context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
2291
+ onDidChange(listener: () => void): Disposable_2;
2292
+ }
2369
2293
 
2370
2294
  export declare interface WorkbenchShellRegionState {
2371
2295
  open: boolean;
@@ -2375,6 +2299,7 @@ export declare interface WorkbenchShellRegionState {
2375
2299
  declare type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
2376
2300
 
2377
2301
  declare interface WorkbenchSidePanelController {
2302
+ canFloat(): boolean;
2378
2303
  store: WorkbenchStore<WorkbenchSidePanelState>;
2379
2304
  getMode(): WorkbenchSidePanelMode;
2380
2305
  setMode(mode: WorkbenchSidePanelMode): void;
@@ -2460,18 +2385,27 @@ declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
2460
2385
 
2461
2386
  declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
2462
2387
 
2463
- declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2464
- region: WorkbenchPanelRegion;
2465
- fallbackRegion?: WorkbenchPanelRegion;
2466
- } & WorkbenchPanelMenusContribution;
2388
+ export declare type WorkbenchTabAction = ({
2389
+ kind: "command";
2390
+ } & WorkbenchCommandTarget) | {
2391
+ kind: "navigation";
2392
+ target: NavigationTarget;
2393
+ };
2467
2394
 
2468
- export declare interface WorkbenchSubPanelRef {
2469
- contributionId: string;
2470
- resourceUri?: string;
2471
- instanceKey?: string;
2395
+ export declare interface WorkbenchTabMenuGroup {
2396
+ id: string;
2397
+ rows: readonly WorkbenchTabMenuRow[];
2472
2398
  }
2473
2399
 
2474
- export declare const workbenchSwitchModeCommandId = "workbench.action.switchMode";
2400
+ export declare interface WorkbenchTabMenuRow {
2401
+ id: string;
2402
+ label: string;
2403
+ icon?: string;
2404
+ iconColor?: string;
2405
+ selected?: boolean;
2406
+ disabled?: boolean;
2407
+ action?: WorkbenchTabAction;
2408
+ }
2475
2409
 
2476
2410
  export declare type WorkbenchTabPosition = "start" | "end" | {
2477
2411
  beforeWidgetId: string;
@@ -2481,6 +2415,17 @@ export declare type WorkbenchTabPosition = "start" | "end" | {
2481
2415
 
2482
2416
  export declare type WorkbenchTabRetention = "preview" | "persistent";
2483
2417
 
2418
+ export declare interface WorkbenchTabSnapshot {
2419
+ label?: string;
2420
+ icon?: string;
2421
+ indicator?: {
2422
+ icon: string;
2423
+ color?: string;
2424
+ label?: string;
2425
+ };
2426
+ menu?: readonly WorkbenchTabMenuGroup[];
2427
+ }
2428
+
2484
2429
  export declare interface WorkbenchTerminalController {
2485
2430
  store: WorkbenchStore<WorkbenchTerminalState>;
2486
2431
  /** True once the host injected a session opener. */
@@ -2573,17 +2518,15 @@ export declare const workbenchTopHeaderLeadingMenuPath: MenuPath;
2573
2518
 
2574
2519
  export declare const workbenchTopHeaderTrailingMenuPath: MenuPath;
2575
2520
 
2521
+ declare type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
2522
+
2523
+ export declare type WorkbenchViewBody = WorkbenchReactViewBody | NativeViewBody<"tree", TreeRendererContribution> | NativeViewBody<"file", FileRendererContribution> | NativeViewBody<"controls", ControlsRendererContribution> | NativeViewBody<"kanban", KanbanRendererContribution> | NativeViewBody<"dataTable", DataTableRendererContribution>;
2524
+
2576
2525
  export declare interface WorkbenchViewContribution {
2577
2526
  id: string;
2578
- panelId: string;
2579
- title?: string;
2527
+ title: string;
2580
2528
  icon?: string;
2581
- path?: string;
2582
- pathAliases?: readonly string[];
2583
- aliases?: readonly string[];
2584
- resource?: ResourceRef;
2585
- canResolve?(): boolean;
2586
- resolveInput?(input: OpenWorkbenchViewInput): OpenWorkbenchPanelInput;
2529
+ body: WorkbenchViewBody;
2587
2530
  }
2588
2531
 
2589
2532
  export declare interface WorkbenchViewHierarchyNode {
@@ -2595,10 +2538,25 @@ export declare interface WorkbenchViewHierarchyNode {
2595
2538
 
2596
2539
  export declare const workbenchViewIdContextKey = "workbench.view.id";
2597
2540
 
2598
- export declare interface WorkbenchViewOpenEvent {
2541
+ export declare interface WorkbenchViewMenuContribution {
2542
+ id: string;
2543
+ ownerViewId: string;
2599
2544
  viewId: string;
2600
- input: OpenWorkbenchViewInput;
2601
- instance: WorkbenchPanelInstance;
2545
+ side: "left" | "right";
2546
+ priority?: number;
2547
+ mountStrategy?: "active" | "keep-mounted";
2548
+ hiddenByDefault?: boolean;
2549
+ regionSize?: WorkbenchRegionSize;
2550
+ regionCollapsible?: boolean;
2551
+ headerBorderBottom?: boolean;
2552
+ config?: unknown;
2553
+ }
2554
+
2555
+ export declare interface WorkbenchViewMenuRegistry {
2556
+ registerViewMenu(menu: WorkbenchViewMenuContribution): Disposable_2;
2557
+ getViewMenu(id: string): WorkbenchViewMenuContribution | undefined;
2558
+ listViewMenus(ownerViewId?: string): WorkbenchViewMenuContribution[];
2559
+ definitionsFor(ownerViewId: string, placementId: string): readonly WorkbenchPanelMenuDefinition[];
2602
2560
  }
2603
2561
 
2604
2562
  export declare interface WorkbenchViewRegistry {
@@ -2606,32 +2564,24 @@ export declare interface WorkbenchViewRegistry {
2606
2564
  registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
2607
2565
  getView(viewId: string): RegisteredWorkbenchView | undefined;
2608
2566
  listViews(): RegisteredWorkbenchView[];
2609
- resolveViewId(viewId: string): string | undefined;
2610
- resolvePath(path: string): {
2611
- kind: "view";
2612
- viewId: string;
2613
- } | undefined;
2614
- canResolveView(viewId: string): boolean;
2615
- isOpeningView(): boolean;
2616
- openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<WorkbenchPanelInstance>;
2617
- onDidOpenView(listener: (event: WorkbenchViewOpenEvent) => void): Disposable_2;
2567
+ refreshView(viewId: string, input?: unknown): void;
2618
2568
  }
2619
2569
 
2620
2570
  export declare interface WorkbenchViewRegistryStoreState {
2621
2571
  views: Record<string, RegisteredWorkbenchView>;
2622
- aliases: Record<string, string>;
2623
- paths: Record<string, string>;
2624
2572
  }
2625
2573
 
2626
2574
  export declare interface WorkbenchWidgetPlacement {
2627
2575
  widgetId: string;
2628
2576
  contributionId: string;
2577
+ placementIdentity?: PlacementIdentity;
2629
2578
  viewId?: string;
2630
2579
  ownerId?: string;
2631
2580
  source?: ContributionSource;
2632
2581
  resource?: ResourceRef;
2633
- resourceUri?: string;
2634
- ownerResourceUri?: string;
2582
+ section?: FileRendererSectionTarget;
2583
+ resourceKey?: string;
2584
+ ownerResourceKey?: string;
2635
2585
  title?: string;
2636
2586
  pinned?: boolean;
2637
2587
  closable?: boolean;
@@ -2644,10 +2594,12 @@ export declare interface WorkbenchWidgetPlacement {
2644
2594
 
2645
2595
  declare type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
2646
2596
 
2647
- declare interface WorkbenchWidgetTab {
2648
- contentRendererId?: string;
2649
- /** Custom actions shown when the user activates an already-active tab. */
2650
- customMenuRendererId?: string;
2597
+ export declare interface WorkbenchWidgetTab {
2598
+ getSnapshot(instance: WorkbenchPanelInstance): WorkbenchTabSnapshot;
2599
+ subscribe?(listener: () => void): {
2600
+ dispose(): void;
2601
+ } | (() => void);
2602
+ refreshEvents?: readonly string[];
2651
2603
  }
2652
2604
 
2653
2605
  export declare interface WorkflowStatus {
@@ -2657,7 +2609,7 @@ export declare interface WorkflowStatus {
2657
2609
  icon?: string | null;
2658
2610
  sortOrder: number;
2659
2611
  isDefault?: boolean;
2660
- board?: WorkflowStatusBoardRules;
2612
+ actions?: readonly string[];
2661
2613
  }
2662
2614
 
2663
2615
  export declare interface WorkflowStatusAction {
@@ -2666,11 +2618,4 @@ export declare interface WorkflowStatusAction {
2666
2618
  icon?: string;
2667
2619
  }
2668
2620
 
2669
- export declare interface WorkflowStatusBoardRules {
2670
- canCreate?: boolean;
2671
- canDragIn?: boolean;
2672
- canDragOut?: boolean;
2673
- actions?: readonly string[];
2674
- }
2675
-
2676
2621
  export { }