@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
@@ -1,37 +1,37 @@
1
1
  import { CommandExecuteRequest } from '@pstdio/sdk/api';
2
2
  import { CommandExecuteResponse } from '@pstdio/sdk/api';
3
3
  import { ComponentType } from 'react';
4
- import { ExtensionActivityItemRecord } from 'pstdio-api-contracts';
4
+ import { ControlsQueryResult } from '@pstdio/sdk/extensions';
5
+ import { ControlValue } from '@pstdio/sdk/extensions';
6
+ import { ControlValueMap } from '@pstdio/sdk/extensions';
7
+ import { DockedWorkbenchRegion } from '@pstdio/sdk/extensions';
5
8
  import { ExtensionCommandPaletteContribution } from '@pstdio/sdk/api';
6
- import { ExtensionKeybindingRecord } from 'pstdio-api-contracts';
7
- import { ExtensionMenuContribution } from 'pstdio-api-contracts';
8
- import { ExtensionMenuContribution as ExtensionMenuContribution_2 } from '@pstdio/sdk/api';
9
- import { ExtensionModeRecord } from 'pstdio-api-contracts';
10
- import { ExtensionResourceKindRecord } from 'pstdio-api-contracts';
11
- import { ExtensionResourcePanelRecord } from 'pstdio-api-contracts';
12
- import { ExtensionSettingDefinitionRecord } from 'pstdio-api-contracts';
13
- import { ExtensionSettingsSectionRecord } from 'pstdio-api-contracts';
14
- import { ExtensionTreeItemContribution } from 'pstdio-api-contracts';
15
- import { HostCapability } from 'pstdio-extensions/bridge/contract';
16
- import { HostCapabilityRegistry } from 'pstdio-extensions/bridge/contract';
17
- import { HostEventPublisher } from 'pstdio-extensions/bridge/host';
9
+ import { ExtensionMenuContribution } from '@pstdio/sdk/api';
10
+ import { FileRendererSectionTarget } from '@pstdio/sdk/extensions';
18
11
  import { JSX } from 'react/jsx-runtime';
12
+ import { KanbanRendererAttributeDisplay } from '@pstdio/sdk/extensions';
19
13
  import { Localizable } from '@pstdio/sdk/extensions';
14
+ import { ModeRegionSettings } from '@pstdio/sdk/extensions';
20
15
  import { NavigationTarget as NavigationTarget_2 } from '@pstdio/sdk/extensions';
16
+ import { NavigationTargetPage as NavigationTargetPage_2 } from '@pstdio/sdk/extensions';
17
+ import { NavigationTargetPanel as NavigationTargetPanel_2 } from '@pstdio/sdk/extensions';
18
+ import { PageLocation } from '@pstdio/sdk/extensions';
19
+ import { PageMain } from '@pstdio/sdk/extensions';
20
+ import { PageOpenIntent } from '@pstdio/sdk/extensions';
21
+ import { PageRef } from '@pstdio/sdk/extensions';
22
+ import { PageSlot } from '@pstdio/sdk/extensions';
23
+ import { PlacementIdentity } from '@pstdio/sdk/extensions';
24
+ import { PlacementItem } from '@pstdio/sdk/extensions';
25
+ import { PlacementRef } from '@pstdio/sdk/extensions';
21
26
  import { ReactNode } from 'react';
22
- import { ThemePreference as ThemePreference_2 } from 'pstdio-extensions/bridge/contract';
27
+ import { ResourceConstraint } from '@pstdio/sdk/extensions';
28
+ import { ResourceRef } from '@pstdio/sdk/extensions';
29
+ import { WebviewHostCapability } from '@pstdio/sdk/extensions';
23
30
  import { WorkbenchExtensionCommandPaletteResourceRecord } from '@pstdio/sdk/api';
24
- import { WorkbenchExtensionCommandPaletteResourceRecord as WorkbenchExtensionCommandPaletteResourceRecord_2 } from 'pstdio-api-contracts';
25
- import { WorkbenchExtensionControlsRendererRecord } from 'pstdio-api-contracts';
26
- import { WorkbenchExtensionDataTableRendererRecord } from 'pstdio-api-contracts';
27
- import { WorkbenchExtensionFileRendererRecord } from 'pstdio-api-contracts';
28
- import { WorkbenchExtensionKanbanRendererRecord } from 'pstdio-api-contracts';
29
31
  import { WorkbenchExtensionMetadata } from '@pstdio/sdk/api';
30
- import { WorkbenchExtensionPanelRecord } from 'pstdio-api-contracts';
31
- import { WorkbenchExtensionSettingsPanelRecord } from 'pstdio-api-contracts';
32
- import { WorkbenchExtensionTreeRendererRecord } from 'pstdio-api-contracts';
32
+ import { z } from 'zod';
33
33
 
34
- declare interface AttributeDescriptor {
34
+ declare interface AttributeDescriptor<TNode = unknown> {
35
35
  id: string;
36
36
  label: string;
37
37
  type: AttributeType;
@@ -41,22 +41,19 @@ declare interface AttributeDescriptor {
41
41
  displayable?: boolean;
42
42
  editable?: boolean;
43
43
  display?: AttributeDisplayDescriptor;
44
- render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
44
+ render?: (value: unknown, row: KanbanRendererRow) => TNode;
45
45
  compare?: (a: unknown, b: unknown) => number;
46
46
  }
47
47
 
48
- declare type AttributeDisplayDescriptor = {
49
- kind: "workspace-badge";
50
- itemsAttributeId: string;
51
- };
48
+ declare type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
52
49
 
53
50
  /**
54
51
  * Reactive source for an entire attribute schema. Lets a contribution
55
52
  * add/remove/edit attributes at runtime without re-registering.
56
53
  */
57
- declare interface AttributesSource {
54
+ declare interface AttributesSource<TNode = unknown> {
58
55
  subscribe: (listener: () => void) => () => void;
59
- getSnapshot: () => AttributeDescriptor[];
56
+ getSnapshot: () => AttributeDescriptor<TNode>[];
60
57
  }
61
58
 
62
59
  declare type AttributeType = {
@@ -75,26 +72,22 @@ declare type AttributeType = {
75
72
  kind: "user";
76
73
  };
77
74
 
78
- declare interface BoardColumnAction {
75
+ declare interface BoardColumnAction<TIcon = unknown> {
79
76
  id: string;
80
77
  label: string;
81
- icon: ComponentType<{
82
- size?: number | string;
83
- }>;
78
+ icon: TIcon;
84
79
  }
85
80
 
86
81
  /** Board-column behavior and menu configuration for a resolved column group. */
87
- declare interface BoardColumnConfig {
82
+ declare interface BoardColumnConfig<TIcon = unknown> {
88
83
  /** Color palette token used for the column header and group badges. */
89
84
  color?: string;
90
85
  canDragIn?: boolean;
91
86
  canDragOut?: boolean;
92
87
  canCreate?: boolean;
93
- actions?: BoardColumnAction[];
88
+ actions?: BoardColumnAction<TIcon>[];
94
89
  }
95
90
 
96
- export declare const BRIDGE_WEBVIEW_RENDERER_ID = "webview:bridge";
97
-
98
91
  export declare interface BridgeWebviewConfig {
99
92
  title?: string;
100
93
  runtimeUrl: string;
@@ -121,7 +114,7 @@ export declare const buildWorkbenchExtensionMenuRegistrations: (input: {
121
114
  metadata: CommandContributionMetadata;
122
115
  menuSlotsById: ReadonlyMap<string, WorkbenchExtensionMenuSlotConfig>;
123
116
  menuTargetsById?: ReadonlyMap<string, WorkbenchExtensionMenuSlotConfig>;
124
- createCommandId?: (contribution: ExtensionMenuContribution_2) => string;
117
+ createCommandId?: (contribution: ExtensionMenuContribution) => string;
125
118
  createWhenExpression?: WorkbenchExtensionMenuWhenBuilder;
126
119
  resolveString?: WorkbenchExtensionStringResolver;
127
120
  }) => {
@@ -135,12 +128,12 @@ export declare const buildWorkbenchExtensionMenuRegistrations: (input: {
135
128
  */
136
129
  declare interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
137
130
  kind: "collection";
131
+ viewId: string;
138
132
  items(): TItem[] | Promise<TItem[]>;
139
133
  itemId(item: TItem): string;
140
134
  itemLabel(item: TItem): string;
141
135
  itemIcon?(item: TItem): string | undefined;
142
136
  groupBy?: SettingsCollectionGroupBy<TItem>;
143
- renderItem(item: TItem, input: WorkbenchPanelRenderInput): unknown;
144
137
  actions?: SettingsAction[];
145
138
  }
146
139
 
@@ -245,74 +238,6 @@ declare interface CommandRegistryStoreState {
245
238
  commands: Record<string, RegisteredCommand>;
246
239
  }
247
240
 
248
- declare interface CompositionDiagnostic {
249
- 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";
250
- message: string;
251
- panelId?: string;
252
- slot?: string;
253
- }
254
-
255
- declare type CompositionLayout = Pick<LayoutModel, "getLayout" | "openWidget" | "reconcilePanelMenus" | "setRegionActiveWidget" | "updateWidgetPlacement">;
256
-
257
- declare interface CompositionModeDefinition {
258
- id: string;
259
- extensionId?: string;
260
- resources?: Record<string, CompositionModeRecipe>;
261
- modePanels?: Record<string, CompositionPlacementPolicy>;
262
- }
263
-
264
- declare interface CompositionModeRecipe {
265
- slots?: Record<string, CompositionPlacementPolicy>;
266
- panels?: Record<string, CompositionPlacementPolicy>;
267
- }
268
-
269
- declare interface CompositionPanelDefinition {
270
- id: string;
271
- extensionId: string;
272
- title: string;
273
- icon?: string;
274
- show?: CompositionPanelPlacement | readonly CompositionPanelPlacement[];
275
- }
276
-
277
- declare interface CompositionPanelPlacement extends CompositionPlacementPolicy {
278
- resourceKind?: string;
279
- }
280
-
281
- declare interface CompositionPlacementPolicy {
282
- region: DockedCompositionRegion;
283
- allowedRegions?: readonly DockedCompositionRegion[];
284
- required?: boolean;
285
- defaultOpen?: boolean;
286
- pinned?: boolean;
287
- }
288
-
289
- declare interface CompositionReconcileContext {
290
- layout: CompositionLayout;
291
- notifications: NotificationRegistry;
292
- }
293
-
294
- export declare const compositionRequiredNotificationId: (modeId: string) => string;
295
-
296
- declare interface CompositionResourceKindDefinition {
297
- id: string;
298
- extensionId: string;
299
- surface: "primary" | "secondary" | "attached";
300
- slots: Record<string, CompositionSlotDefinition>;
301
- }
302
-
303
- declare interface CompositionResourcePanelEdge {
304
- id: string;
305
- extensionId: string;
306
- resourceKind: string;
307
- panel: string;
308
- slot: string;
309
- }
310
-
311
- declare interface CompositionSlotDefinition {
312
- cardinality: "one" | "many";
313
- external: boolean;
314
- }
315
-
316
241
  declare interface ContextKeyScope extends Disposable_2 {
317
242
  ownerId: string;
318
243
  set(key: string, value: ContextKeyValue): void;
@@ -345,20 +270,11 @@ declare interface ContributionMetadata {
345
270
 
346
271
  declare type ContributionSource = "module" | "extension";
347
272
 
348
- declare type ContributionSource_2 = "module" | "extension";
349
-
350
273
  declare interface ControlsApplyInput {
351
- values: Record<string, unknown>;
274
+ values: ControlValueMap;
352
275
  resource?: ResourceRef;
353
276
  }
354
277
 
355
- declare interface ControlsQueryResult {
356
- params?: unknown[];
357
- groups?: unknown[];
358
- values?: Record<string, unknown>;
359
- readOnly?: boolean;
360
- }
361
-
362
278
  declare interface ControlsRendererContribution {
363
279
  id: string;
364
280
  title: string;
@@ -366,7 +282,7 @@ declare interface ControlsRendererContribution {
366
282
  emptyTitle?: string;
367
283
  emptyDescription?: string;
368
284
  layout?: ControlsRendererLayout;
369
- defaultValues?: Record<string, unknown>;
285
+ defaultValues?: ControlValueMap;
370
286
  /** Load the control declarations + current values for the active resource. */
371
287
  executeQuery(resource?: ResourceRef): Promise<ControlsQueryResult> | ControlsQueryResult;
372
288
  /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
@@ -378,10 +294,6 @@ declare interface ControlsRendererContribution {
378
294
  subscribe?: (listener: () => void) => Disposable_2 | (() => void);
379
295
  }
380
296
 
381
- declare type ControlsRendererImplementation = (input: WorkbenchPanelRenderInput & {
382
- controlsRendererId: string;
383
- }) => unknown;
384
-
385
297
  declare interface ControlsRendererLayout {
386
298
  region?: ControlsRendererRegion;
387
299
  defaultPx?: number;
@@ -389,28 +301,8 @@ declare interface ControlsRendererLayout {
389
301
  maxPx?: number;
390
302
  }
391
303
 
392
- declare interface ControlsRendererRefreshEvent {
393
- controlsRendererId: string;
394
- }
395
-
396
- declare type ControlsRendererRefreshListener = (event: ControlsRendererRefreshEvent) => void;
397
-
398
304
  declare type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
399
305
 
400
- declare interface ControlsRendererRegistry {
401
- controlsStore: WorkbenchStore<ControlsRendererStoreState>;
402
- registerControlsRenderer(contribution: ControlsRendererContribution, metadata?: ContributionMetadata): Disposable_2;
403
- setControlsRendererImplementation(impl: ControlsRendererImplementation): void;
404
- getControlsRenderer(id: string): RegisteredControlsRendererContribution | undefined;
405
- listControlsRenderers(): RegisteredControlsRendererContribution[];
406
- refreshControlsRenderer(id: string): void;
407
- onDidRefreshControlsRenderer(listener: ControlsRendererRefreshListener): Disposable_2;
408
- }
409
-
410
- declare interface ControlsRendererStoreState {
411
- renderers: Record<string, RegisteredControlsRendererContribution>;
412
- }
413
-
414
306
  declare interface ControlsResetInput {
415
307
  controlIds?: string[];
416
308
  resource?: ResourceRef;
@@ -418,28 +310,15 @@ declare interface ControlsResetInput {
418
310
 
419
311
  declare interface ControlsUpdateValueInput {
420
312
  controlId: string;
421
- value: unknown;
422
- values: Record<string, unknown>;
313
+ value: ControlValue;
314
+ values: ControlValueMap;
423
315
  resource?: ResourceRef;
424
316
  }
425
317
 
426
- declare type ControlsViewRecord = InternalWorkbenchExtensionMetadata["panels"][number];
427
-
428
318
  export declare type CreateBridgeWebviewHostCapabilities = (context: BridgeWebviewRenderContext) => HostCapabilityRegistry;
429
319
 
430
320
  export declare type CreateBridgeWebviewProps = (context: BridgeWebviewRenderContext) => unknown;
431
321
 
432
- export declare const createBridgeWebviewRenderer: (input?: CreateBridgeWebviewRendererInput) => {
433
- id: string;
434
- render: (renderInput: WorkbenchPanelRenderInput) => JSX.Element | null;
435
- };
436
-
437
- declare interface CreateBridgeWebviewRendererInput {
438
- createHostCapabilities?: CreateBridgeWebviewHostCapabilities;
439
- createProps?: CreateBridgeWebviewProps;
440
- createTheme?: CreateBridgeWebviewTheme;
441
- }
442
-
443
322
  export declare type CreateBridgeWebviewTheme = (context: BridgeWebviewRenderContext) => ThemePreference_2;
444
323
 
445
324
  /**
@@ -455,12 +334,10 @@ declare interface CreateTerminalSessionCapabilityInput {
455
334
  hostEvents: HostEventPublisher;
456
335
  }
457
336
 
458
- export declare const createWorkbenchCompositionRegistry: () => WorkbenchCompositionRegistry;
459
-
460
337
  export declare const createWorkbenchWebviewHostCapabilities: (input: CreateWorkbenchWebviewHostCapabilitiesInput) => {
461
338
  "terminal.session"?: HostCapability | undefined;
462
339
  "commands.execute": (params: unknown) => Promise<unknown>;
463
- "resource.open": (params: unknown) => Promise<WorkbenchPanelInstance_2>;
340
+ "navigation.open": (params: unknown) => Promise<readonly unknown[]>;
464
341
  "notification.show": (params: unknown) => RegisteredWorkbenchNotification;
465
342
  "preferences.get": (params: unknown) => PreferenceValue | undefined;
466
343
  "preferences.set": (params: unknown) => {
@@ -468,24 +345,17 @@ export declare const createWorkbenchWebviewHostCapabilities: (input: CreateWorkb
468
345
  value: PreferenceValue;
469
346
  };
470
347
  "host.dispatchKeyboardEvent": (params: unknown) => void;
348
+ "placement.close"?: ((params: unknown) => void) | undefined;
471
349
  };
472
350
 
473
351
  declare interface CreateWorkbenchWebviewHostCapabilitiesInput {
474
352
  dispatchKeyboardEvent?: (event: KeyboardEventInit) => void;
475
353
  workbench: WorkbenchCore;
354
+ placement?: WorkbenchPanelInstance;
476
355
  /** Event channel into the guest; terminal.session is only offered when present. */
477
356
  hostEvents?: HostEventPublisher;
478
357
  }
479
358
 
480
- /**
481
- * Renders its own page. `render` returns `unknown` so core stays React-free — the
482
- * React layer treats the result as a node, exactly like WorkbenchRendererRegistration.
483
- */
484
- declare interface CustomSettingsPanel extends SettingsPanelBase {
485
- kind: "custom";
486
- render(input: WorkbenchPanelRenderInput): unknown;
487
- }
488
-
489
359
  declare interface DataTableRendererColumn {
490
360
  id: string;
491
361
  label?: string;
@@ -539,10 +409,6 @@ declare interface DataTableRendererContribution {
539
409
  onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
540
410
  }
541
411
 
542
- declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
543
- dataTableRendererId: string;
544
- }) => unknown;
545
-
546
412
  declare interface DataTableRendererQueryContext {
547
413
  resource?: ResourceRef;
548
414
  modeId?: string;
@@ -553,20 +419,6 @@ declare interface DataTableRendererQueryResult {
553
419
  columns?: DataTableRendererColumn[];
554
420
  }
555
421
 
556
- declare interface DataTableRendererRefreshEvent {
557
- dataTableRendererId: string;
558
- }
559
-
560
- declare interface DataTableRendererRegistry {
561
- dataTableStore: WorkbenchStore<DataTableRendererStoreState>;
562
- registerDataTableRenderer(contribution: DataTableRendererContribution, metadata?: ContributionMetadata): Disposable_2;
563
- setDataTableRendererImplementation(implementation: DataTableRendererImplementation): void;
564
- getDataTableRenderer(id: string): RegisteredDataTableRendererContribution | undefined;
565
- listDataTableRenderers(): RegisteredDataTableRendererContribution[];
566
- refreshDataTableRenderer(id: string): void;
567
- onDidRefreshDataTableRenderer(listener: (event: DataTableRendererRefreshEvent) => void): Disposable_2;
568
- }
569
-
570
422
  declare interface DataTableRendererRow {
571
423
  id: string;
572
424
  values: Record<string, unknown>;
@@ -589,10 +441,6 @@ declare interface DataTableRendererSelectionAction {
589
441
  run(rows: DataTableRendererRow[]): Promise<void> | void;
590
442
  }
591
443
 
592
- declare interface DataTableRendererStoreState {
593
- renderers: Record<string, RegisteredDataTableRendererContribution>;
594
- }
595
-
596
444
  declare interface DataTableRendererThemeColor {
597
445
  light: string;
598
446
  dark: string;
@@ -602,30 +450,31 @@ declare interface DataTableRendererThemeColor {
602
450
  };
603
451
  }
604
452
 
605
- declare type DataTableViewRecord = InternalWorkbenchExtensionMetadata["panels"][number];
606
-
607
- declare interface DeclaredPanelPlacement {
608
- for?: string;
609
- region: DockedCompositionRegion;
610
- allowedRegions?: readonly DockedCompositionRegion[];
611
- required?: boolean;
612
- defaultOpen?: boolean;
613
- pinned?: boolean;
614
- }
615
-
616
453
  declare interface Disposable_2 {
617
454
  dispose(): void;
618
455
  }
619
456
 
620
- declare type DockedCompositionRegion = (typeof dockedCompositionRegions)[number];
621
-
622
- declare type DockedCompositionRegion_2 = (typeof dockedCompositionRegions_2)[number];
623
-
624
- declare const dockedCompositionRegions: readonly ["sidenav", "main", "secondary", "side"];
625
-
626
- declare const dockedCompositionRegions_2: readonly ["sidenav", "main", "secondary", "side"];
627
-
628
- export declare const emptyWorkbenchExtensionMetadata: WorkbenchExtensionMetadata;
457
+ declare type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
458
+
459
+ export declare const emptyWorkbenchExtensionMetadata: {
460
+ commands: never[];
461
+ commandPaletteContributions: never[];
462
+ diagnostics: never[];
463
+ extensions: never[];
464
+ menuContributions: never[];
465
+ modes: never[];
466
+ pages: never[];
467
+ views: never[];
468
+ viewMenus: never[];
469
+ placements: never[];
470
+ resourceKinds: never[];
471
+ navigationItems: never[];
472
+ navigationTrees: never[];
473
+ statusBarItems: never[];
474
+ statuses: never[];
475
+ settingsPanels: never[];
476
+ settingsDefinitions: never[];
477
+ };
629
478
 
630
479
  declare interface EnumOption {
631
480
  value: string;
@@ -646,25 +495,596 @@ declare interface EnumOptionsSource {
646
495
  getSnapshot: () => EnumOption[];
647
496
  }
648
497
 
649
- declare interface ExtensionNavigationSourcePlacement {
650
- instanceId: string;
651
- }
652
-
653
- declare type ExtensionPanelRecord = InternalWorkbenchExtensionMetadata["panels"][number];
654
-
655
- declare type ExtensionResourcePanels = InternalWorkbenchExtensionMetadata["resourcePanels"];
498
+ declare const extensionCommandPaletteResourceRecordSchema: z.ZodObject<{
499
+ id: z.ZodString;
500
+ extensionId: z.ZodString;
501
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
502
+ $l10n: z.ZodString;
503
+ default: z.ZodOptional<z.ZodString>;
504
+ }, z.core.$strip>]>;
505
+ resourceKind: z.ZodOptional<z.ZodString>;
506
+ queryHandlerId: z.ZodString;
507
+ refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
508
+ }, z.core.$strip>;
509
+
510
+ declare const extensionControlsRendererRecordSchema: z.ZodObject<{
511
+ id: z.ZodString;
512
+ extensionId: z.ZodString;
513
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
514
+ $l10n: z.ZodString;
515
+ default: z.ZodOptional<z.ZodString>;
516
+ }, z.core.$strip>]>;
517
+ icon: z.ZodOptional<z.ZodString>;
518
+ resourceKind: z.ZodOptional<z.ZodString>;
519
+ refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
520
+ emptyTitle: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
521
+ $l10n: z.ZodString;
522
+ default: z.ZodOptional<z.ZodString>;
523
+ }, z.core.$strip>]>>;
524
+ emptyDescription: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
525
+ $l10n: z.ZodString;
526
+ default: z.ZodOptional<z.ZodString>;
527
+ }, z.core.$strip>]>>;
528
+ queryHandlerId: z.ZodString;
529
+ valueChangeHandlerId: z.ZodOptional<z.ZodString>;
530
+ applyHandlerId: z.ZodOptional<z.ZodString>;
531
+ resetHandlerId: z.ZodOptional<z.ZodString>;
532
+ defaultValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>, z.ZodArray<z.ZodString>, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
533
+ x: z.ZodNumber;
534
+ y: z.ZodNumber;
535
+ }, z.core.$strict>]>>>;
536
+ }, z.core.$strip>;
537
+
538
+ declare type ExtensionDataTableRendererRecord = z.infer<typeof extensionDataTableRendererRecordSchema>;
539
+
540
+ declare const extensionDataTableRendererRecordSchema: z.ZodObject<{
541
+ id: z.ZodString;
542
+ extensionId: z.ZodString;
543
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
544
+ $l10n: z.ZodString;
545
+ default: z.ZodOptional<z.ZodString>;
546
+ }, z.core.$strip>]>;
547
+ icon: z.ZodOptional<z.ZodString>;
548
+ resourceKind: z.ZodOptional<z.ZodString>;
549
+ refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
550
+ emptyTitle: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
551
+ $l10n: z.ZodString;
552
+ default: z.ZodOptional<z.ZodString>;
553
+ }, z.core.$strip>]>>;
554
+ emptyDescription: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
555
+ $l10n: z.ZodString;
556
+ default: z.ZodOptional<z.ZodString>;
557
+ }, z.core.$strip>]>>;
558
+ columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
559
+ id: z.ZodString;
560
+ label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
561
+ $l10n: z.ZodString;
562
+ default: z.ZodOptional<z.ZodString>;
563
+ }, z.core.$strip>]>>;
564
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
565
+ $l10n: z.ZodString;
566
+ default: z.ZodOptional<z.ZodString>;
567
+ }, z.core.$strip>]>>;
568
+ icon: z.ZodOptional<z.ZodString>;
569
+ hidden: z.ZodOptional<z.ZodBoolean>;
570
+ stat: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
571
+ type: z.ZodLiteral<"unique">;
572
+ }, z.core.$strip>, z.ZodObject<{
573
+ type: z.ZodLiteral<"histogram">;
574
+ bins: z.ZodOptional<z.ZodNumber>;
575
+ }, z.core.$strip>, z.ZodObject<{
576
+ type: z.ZodLiteral<"top-values">;
577
+ limit: z.ZodOptional<z.ZodNumber>;
578
+ }, z.core.$strip>], "type">>;
579
+ renderer: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
580
+ type: z.ZodLiteral<"json">;
581
+ }, z.core.$strip>, z.ZodObject<{
582
+ type: z.ZodLiteral<"color-scale">;
583
+ stops: z.ZodArray<z.ZodObject<{
584
+ value: z.ZodNumber;
585
+ color: z.ZodObject<{
586
+ light: z.ZodString;
587
+ dark: z.ZodString;
588
+ foreground: z.ZodOptional<z.ZodObject<{
589
+ light: z.ZodString;
590
+ dark: z.ZodString;
591
+ }, z.core.$strip>>;
592
+ }, z.core.$strip>;
593
+ }, z.core.$strip>>;
594
+ }, z.core.$strip>, z.ZodObject<{
595
+ type: z.ZodLiteral<"categorical-color">;
596
+ categories: z.ZodArray<z.ZodObject<{
597
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
598
+ color: z.ZodObject<{
599
+ light: z.ZodString;
600
+ dark: z.ZodString;
601
+ foreground: z.ZodOptional<z.ZodObject<{
602
+ light: z.ZodString;
603
+ dark: z.ZodString;
604
+ }, z.core.$strip>>;
605
+ }, z.core.$strip>;
606
+ }, z.core.$strip>>;
607
+ }, z.core.$strip>], "type">>;
608
+ }, z.core.$strip>>>;
609
+ queryHandlerId: z.ZodString;
610
+ selectionMode: z.ZodOptional<z.ZodEnum<{
611
+ none: "none";
612
+ multiple: "multiple";
613
+ }>>;
614
+ selectionActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
615
+ id: z.ZodString;
616
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
617
+ $l10n: z.ZodString;
618
+ default: z.ZodOptional<z.ZodString>;
619
+ }, z.core.$strip>]>;
620
+ icon: z.ZodOptional<z.ZodString>;
621
+ destructive: z.ZodOptional<z.ZodBoolean>;
622
+ commandId: z.ZodString;
623
+ }, z.core.$strip>>>;
624
+ rowActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
625
+ id: z.ZodString;
626
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
627
+ $l10n: z.ZodString;
628
+ default: z.ZodOptional<z.ZodString>;
629
+ }, z.core.$strip>]>;
630
+ icon: z.ZodOptional<z.ZodString>;
631
+ destructive: z.ZodOptional<z.ZodBoolean>;
632
+ commandId: z.ZodString;
633
+ }, z.core.$strip>>>;
634
+ rowActivationHandlerId: z.ZodOptional<z.ZodString>;
635
+ initialPageSize: z.ZodOptional<z.ZodNumber>;
636
+ pageSizeOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
637
+ }, z.core.$strip>;
638
+
639
+ declare const extensionFileRendererRecordSchema: z.ZodObject<{
640
+ id: z.ZodString;
641
+ extensionId: z.ZodString;
642
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
643
+ $l10n: z.ZodString;
644
+ default: z.ZodOptional<z.ZodString>;
645
+ }, z.core.$strip>]>;
646
+ icon: z.ZodOptional<z.ZodString>;
647
+ resourceKind: z.ZodOptional<z.ZodString>;
648
+ refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
649
+ emptyTitle: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
650
+ $l10n: z.ZodString;
651
+ default: z.ZodOptional<z.ZodString>;
652
+ }, z.core.$strip>]>>;
653
+ emptyDescription: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
654
+ $l10n: z.ZodString;
655
+ default: z.ZodOptional<z.ZodString>;
656
+ }, z.core.$strip>]>>;
657
+ loadHandlerId: z.ZodString;
658
+ saveHandlerId: z.ZodOptional<z.ZodString>;
659
+ }, z.core.$strip>;
660
+
661
+ declare const extensionKanbanRendererRecordSchema: z.ZodObject<{
662
+ id: z.ZodString;
663
+ extensionId: z.ZodString;
664
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
665
+ $l10n: z.ZodString;
666
+ default: z.ZodOptional<z.ZodString>;
667
+ }, z.core.$strip>]>;
668
+ icon: z.ZodOptional<z.ZodString>;
669
+ resourceKind: z.ZodOptional<z.ZodString>;
670
+ refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
671
+ emptyTitle: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
672
+ $l10n: z.ZodString;
673
+ default: z.ZodOptional<z.ZodString>;
674
+ }, z.core.$strip>]>>;
675
+ emptyDescription: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
676
+ $l10n: z.ZodString;
677
+ default: z.ZodOptional<z.ZodString>;
678
+ }, z.core.$strip>]>>;
679
+ extensionInstanceId: z.ZodOptional<z.ZodString>;
680
+ attributes: z.ZodOptional<z.ZodArray<z.ZodObject<{
681
+ id: z.ZodString;
682
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
683
+ $l10n: z.ZodString;
684
+ default: z.ZodOptional<z.ZodString>;
685
+ }, z.core.$strip>]>;
686
+ type: z.ZodDiscriminatedUnion<[z.ZodObject<{
687
+ kind: z.ZodLiteral<"enum">;
688
+ options: z.ZodArray<z.ZodObject<{
689
+ value: z.ZodString;
690
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
691
+ $l10n: z.ZodString;
692
+ default: z.ZodOptional<z.ZodString>;
693
+ }, z.core.$strip>]>;
694
+ color: z.ZodOptional<z.ZodString>;
695
+ icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
696
+ }, z.core.$strip>>;
697
+ }, z.core.$strip>, z.ZodObject<{
698
+ kind: z.ZodLiteral<"enum-multi">;
699
+ options: z.ZodArray<z.ZodObject<{
700
+ value: z.ZodString;
701
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
702
+ $l10n: z.ZodString;
703
+ default: z.ZodOptional<z.ZodString>;
704
+ }, z.core.$strip>]>;
705
+ color: z.ZodOptional<z.ZodString>;
706
+ icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
707
+ }, z.core.$strip>>;
708
+ }, z.core.$strip>, z.ZodObject<{
709
+ kind: z.ZodLiteral<"status">;
710
+ statuses: z.ZodObject<{
711
+ extensionId: z.ZodOptional<z.ZodString>;
712
+ kind: z.ZodLiteral<"status">;
713
+ id: z.ZodString;
714
+ }, z.core.$strip>;
715
+ }, z.core.$strip>, z.ZodObject<{
716
+ kind: z.ZodLiteral<"string">;
717
+ }, z.core.$strip>, z.ZodObject<{
718
+ kind: z.ZodLiteral<"date">;
719
+ }, z.core.$strip>, z.ZodObject<{
720
+ kind: z.ZodLiteral<"number">;
721
+ }, z.core.$strip>, z.ZodObject<{
722
+ kind: z.ZodLiteral<"user">;
723
+ }, z.core.$strip>], "kind">;
724
+ filterable: z.ZodOptional<z.ZodBoolean>;
725
+ groupable: z.ZodOptional<z.ZodBoolean>;
726
+ sortable: z.ZodOptional<z.ZodBoolean>;
727
+ displayable: z.ZodOptional<z.ZodBoolean>;
728
+ editable: z.ZodOptional<z.ZodBoolean>;
729
+ display: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
730
+ kind: z.ZodLiteral<"badge-list">;
731
+ itemsAttributeId: z.ZodString;
732
+ }, z.core.$strip>, z.ZodObject<{
733
+ kind: z.ZodString;
734
+ }, z.core.$loose>]>>;
735
+ }, z.core.$strip>>>;
736
+ queryHandlerId: z.ZodString;
737
+ attributeChangeHandlerId: z.ZodOptional<z.ZodString>;
738
+ reorderHandlerId: z.ZodOptional<z.ZodString>;
739
+ columnActionHandlerId: z.ZodOptional<z.ZodString>;
740
+ createRow: z.ZodOptional<z.ZodObject<{
741
+ commandId: z.ZodString;
742
+ title: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
743
+ $l10n: z.ZodString;
744
+ default: z.ZodOptional<z.ZodString>;
745
+ }, z.core.$strip>]>>;
746
+ submitLabel: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
747
+ $l10n: z.ZodString;
748
+ default: z.ZodOptional<z.ZodString>;
749
+ }, z.core.$strip>]>>;
750
+ columnParam: z.ZodOptional<z.ZodString>;
751
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
752
+ type: z.ZodString;
753
+ }, z.core.$catchall<z.ZodUnknown>>>>;
754
+ attributesParam: z.ZodOptional<z.ZodString>;
755
+ attachments: z.ZodOptional<z.ZodObject<{
756
+ commandId: z.ZodString;
757
+ resourceParam: z.ZodString;
758
+ fileParam: z.ZodString;
759
+ }, z.core.$strip>>;
760
+ labels: z.ZodOptional<z.ZodObject<{
761
+ cancel: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
762
+ $l10n: z.ZodString;
763
+ default: z.ZodOptional<z.ZodString>;
764
+ }, z.core.$strip>]>>;
765
+ properties: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
766
+ $l10n: z.ZodString;
767
+ default: z.ZodOptional<z.ZodString>;
768
+ }, z.core.$strip>]>>;
769
+ submitError: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
770
+ $l10n: z.ZodString;
771
+ default: z.ZodOptional<z.ZodString>;
772
+ }, z.core.$strip>]>>;
773
+ removeFile: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
774
+ $l10n: z.ZodString;
775
+ default: z.ZodOptional<z.ZodString>;
776
+ }, z.core.$strip>]>>;
777
+ }, z.core.$strip>>;
778
+ }, z.core.$strip>>;
779
+ rowActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
780
+ id: z.ZodString;
781
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
782
+ $l10n: z.ZodString;
783
+ default: z.ZodOptional<z.ZodString>;
784
+ }, z.core.$strip>]>;
785
+ icon: z.ZodOptional<z.ZodString>;
786
+ commandId: z.ZodString;
787
+ destructive: z.ZodOptional<z.ZodBoolean>;
788
+ }, z.core.$strip>>>;
789
+ rowActivationHandlerId: z.ZodOptional<z.ZodString>;
790
+ defaultSettings: z.ZodOptional<z.ZodObject<{
791
+ viewMode: z.ZodOptional<z.ZodEnum<{
792
+ board: "board";
793
+ list: "list";
794
+ }>>;
795
+ columnGrouping: z.ZodOptional<z.ZodString>;
796
+ rowGrouping: z.ZodOptional<z.ZodString>;
797
+ ordering: z.ZodOptional<z.ZodObject<{
798
+ attributeId: z.ZodString;
799
+ direction: z.ZodEnum<{
800
+ asc: "asc";
801
+ desc: "desc";
802
+ }>;
803
+ }, z.core.$strip>>;
804
+ displayProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
805
+ }, z.core.$strip>>;
806
+ defaultFilters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
807
+ defaultViews: z.ZodOptional<z.ZodArray<z.ZodObject<{
808
+ id: z.ZodString;
809
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
810
+ $l10n: z.ZodString;
811
+ default: z.ZodOptional<z.ZodString>;
812
+ }, z.core.$strip>]>;
813
+ settings: z.ZodObject<{
814
+ viewMode: z.ZodEnum<{
815
+ board: "board";
816
+ list: "list";
817
+ }>;
818
+ columnGrouping: z.ZodString;
819
+ rowGrouping: z.ZodString;
820
+ ordering: z.ZodObject<{
821
+ attributeId: z.ZodString;
822
+ direction: z.ZodEnum<{
823
+ asc: "asc";
824
+ desc: "desc";
825
+ }>;
826
+ }, z.core.$strip>;
827
+ displayProperties: z.ZodArray<z.ZodString>;
828
+ }, z.core.$strip>;
829
+ filters: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
830
+ isDefault: z.ZodOptional<z.ZodBoolean>;
831
+ }, z.core.$strip>>>;
832
+ defaultActiveViewId: z.ZodOptional<z.ZodString>;
833
+ hideToolbar: z.ZodOptional<z.ZodBoolean>;
834
+ }, z.core.$strip>;
835
+
836
+ declare type ExtensionKeybindingRecord = z.infer<typeof extensionKeybindingRecordSchema>;
837
+
838
+ declare const extensionKeybindingRecordSchema: z.ZodObject<{
839
+ id: z.ZodString;
840
+ extensionId: z.ZodString;
841
+ action: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodType<MetadataPageTarget, unknown, z.core.$ZodTypeInternals<MetadataPageTarget, unknown>>, z.ZodObject<{
842
+ kind: z.ZodLiteral<"panel">;
843
+ panel: z.ZodUnion<readonly [z.ZodObject<{
844
+ extensionId: z.ZodString;
845
+ kind: z.ZodLiteral<"placement">;
846
+ id: z.ZodString;
847
+ }, z.core.$strip>, z.ZodObject<{
848
+ kind: z.ZodLiteral<"page-slot">;
849
+ page: z.ZodObject<{
850
+ extensionId: z.ZodString;
851
+ kind: z.ZodLiteral<"page">;
852
+ id: z.ZodString;
853
+ }, z.core.$strip>;
854
+ id: z.ZodString;
855
+ }, z.core.$strip>]>;
856
+ resource: z.ZodOptional<z.ZodObject<{
857
+ type: z.ZodString;
858
+ id: z.ZodString;
859
+ projectId: z.ZodOptional<z.ZodString>;
860
+ label: z.ZodOptional<z.ZodString>;
861
+ icon: z.ZodOptional<z.ZodString>;
862
+ extensionId: z.ZodOptional<z.ZodString>;
863
+ metadata: z.ZodOptional<z.ZodType<JsonObject, unknown, z.core.$ZodTypeInternals<JsonObject, unknown>>>;
864
+ }, z.core.$strip>>;
865
+ open: z.ZodOptional<z.ZodEnum<{
866
+ preview: "preview";
867
+ pin: "pin";
868
+ }>>;
869
+ }, z.core.$strip>]>, z.ZodObject<{
870
+ kind: z.ZodLiteral<"command">;
871
+ target: z.ZodObject<{
872
+ command: z.ZodObject<{
873
+ extensionId: z.ZodString;
874
+ kind: z.ZodLiteral<"command">;
875
+ id: z.ZodString;
876
+ }, z.core.$strip>;
877
+ params: z.ZodOptional<z.ZodType<JsonObject, unknown, z.core.$ZodTypeInternals<JsonObject, unknown>>>;
878
+ }, z.core.$strip>;
879
+ }, z.core.$strip>, z.ZodObject<{
880
+ kind: z.ZodLiteral<"href">;
881
+ href: z.ZodString;
882
+ }, z.core.$strip>, z.ZodObject<{
883
+ kind: z.ZodLiteral<"compound">;
884
+ targets: z.ZodArray<z.ZodUnion<readonly [z.ZodType<MetadataPageTarget, unknown, z.core.$ZodTypeInternals<MetadataPageTarget, unknown>>, z.ZodObject<{
885
+ kind: z.ZodLiteral<"panel">;
886
+ panel: z.ZodUnion<readonly [z.ZodObject<{
887
+ extensionId: z.ZodString;
888
+ kind: z.ZodLiteral<"placement">;
889
+ id: z.ZodString;
890
+ }, z.core.$strip>, z.ZodObject<{
891
+ kind: z.ZodLiteral<"page-slot">;
892
+ page: z.ZodObject<{
893
+ extensionId: z.ZodString;
894
+ kind: z.ZodLiteral<"page">;
895
+ id: z.ZodString;
896
+ }, z.core.$strip>;
897
+ id: z.ZodString;
898
+ }, z.core.$strip>]>;
899
+ resource: z.ZodOptional<z.ZodObject<{
900
+ type: z.ZodString;
901
+ id: z.ZodString;
902
+ projectId: z.ZodOptional<z.ZodString>;
903
+ label: z.ZodOptional<z.ZodString>;
904
+ icon: z.ZodOptional<z.ZodString>;
905
+ extensionId: z.ZodOptional<z.ZodString>;
906
+ metadata: z.ZodOptional<z.ZodType<JsonObject, unknown, z.core.$ZodTypeInternals<JsonObject, unknown>>>;
907
+ }, z.core.$strip>>;
908
+ open: z.ZodOptional<z.ZodEnum<{
909
+ preview: "preview";
910
+ pin: "pin";
911
+ }>>;
912
+ }, z.core.$strip>]>>;
913
+ }, z.core.$strip>]>;
914
+ key: z.ZodString;
915
+ canonicalChord: z.ZodString;
916
+ parsed: z.ZodObject<{
917
+ key: z.ZodString;
918
+ ctrl: z.ZodBoolean;
919
+ shift: z.ZodBoolean;
920
+ alt: z.ZodBoolean;
921
+ meta: z.ZodBoolean;
922
+ modifiers: z.ZodArray<z.ZodString>;
923
+ }, z.core.$strip>;
924
+ platformOverrides: z.ZodOptional<z.ZodObject<{
925
+ mac: z.ZodOptional<z.ZodString>;
926
+ linux: z.ZodOptional<z.ZodString>;
927
+ win: z.ZodOptional<z.ZodString>;
928
+ }, z.core.$strip>>;
929
+ when: z.ZodOptional<z.ZodObject<{
930
+ mode: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
931
+ source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
932
+ event: "event";
933
+ schedule: "schedule";
934
+ api: "api";
935
+ cli: "cli";
936
+ dashboard: "dashboard";
937
+ automation: "automation";
938
+ "command-panel": "command-panel";
939
+ }>>>;
940
+ viewId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
941
+ resourceType: z.ZodOptional<z.ZodArray<z.ZodString>>;
942
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
943
+ }, z.core.$strip>>;
944
+ }, z.core.$strip>;
945
+
946
+ declare type ExtensionMenuContribution_2 = z.infer<typeof extensionMenuContributionSchema>;
947
+
948
+ declare const extensionMenuContributionSchema: z.ZodObject<{
949
+ id: z.ZodString;
950
+ extensionId: z.ZodString;
951
+ commandId: z.ZodString;
952
+ slotId: z.ZodString;
953
+ target: z.ZodOptional<z.ZodEnum<{
954
+ "workbench.nav.actions": "workbench.nav.actions";
955
+ "workbench.nav.overflow": "workbench.nav.overflow";
956
+ }>>;
957
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
958
+ $l10n: z.ZodString;
959
+ default: z.ZodOptional<z.ZodString>;
960
+ }, z.core.$strip>]>;
961
+ group: z.ZodOptional<z.ZodString>;
962
+ placement: z.ZodOptional<z.ZodEnum<{
963
+ default: "default";
964
+ first: "first";
965
+ last: "last";
966
+ }>>;
967
+ icon: z.ZodOptional<z.ZodString>;
968
+ presentation: z.ZodOptional<z.ZodEnum<{
969
+ button: "button";
970
+ "menu-item": "menu-item";
971
+ "icon-button": "icon-button";
972
+ }>>;
973
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
974
+ when: z.ZodOptional<z.ZodObject<{
975
+ mode: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
976
+ source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
977
+ event: "event";
978
+ schedule: "schedule";
979
+ api: "api";
980
+ cli: "cli";
981
+ dashboard: "dashboard";
982
+ automation: "automation";
983
+ "command-panel": "command-panel";
984
+ }>>>;
985
+ viewId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
986
+ resourceType: z.ZodOptional<z.ZodArray<z.ZodString>>;
987
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
988
+ }, z.core.$strip>>;
989
+ }, z.core.$strip>;
990
+
991
+ declare const extensionResourceRefSchema: z.ZodObject<{
992
+ type: z.ZodString;
993
+ id: z.ZodString;
994
+ projectId: z.ZodOptional<z.ZodString>;
995
+ label: z.ZodOptional<z.ZodString>;
996
+ icon: z.ZodOptional<z.ZodString>;
997
+ extensionId: z.ZodOptional<z.ZodString>;
998
+ metadata: z.ZodOptional<z.ZodType<JsonObject, unknown, z.core.$ZodTypeInternals<JsonObject, unknown>>>;
999
+ }, z.core.$strip>;
1000
+
1001
+ declare type ExtensionSettingDefinitionRecord = z.infer<typeof extensionSettingDefinitionRecordSchema>;
1002
+
1003
+ declare const extensionSettingDefinitionRecordSchema: z.ZodObject<{
1004
+ key: z.ZodString;
1005
+ extensionId: z.ZodString;
1006
+ type: z.ZodEnum<{
1007
+ string: "string";
1008
+ number: "number";
1009
+ boolean: "boolean";
1010
+ object: "object";
1011
+ array: "array";
1012
+ }>;
1013
+ scope: z.ZodEnum<{
1014
+ project: "project";
1015
+ global: "global";
1016
+ }>;
1017
+ default: z.ZodOptional<z.ZodUnknown>;
1018
+ enum: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
1019
+ title: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1020
+ $l10n: z.ZodString;
1021
+ default: z.ZodOptional<z.ZodString>;
1022
+ }, z.core.$strip>]>>;
1023
+ description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1024
+ $l10n: z.ZodString;
1025
+ default: z.ZodOptional<z.ZodString>;
1026
+ }, z.core.$strip>]>>;
1027
+ }, z.core.$strip>;
1028
+
1029
+ declare type ExtensionSettingsSectionRecord = z.infer<typeof extensionSettingsSectionRecordSchema>;
1030
+
1031
+ declare const extensionSettingsSectionRecordSchema: z.ZodObject<{
1032
+ id: z.ZodString;
1033
+ extensionId: z.ZodString;
1034
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1035
+ $l10n: z.ZodString;
1036
+ default: z.ZodOptional<z.ZodString>;
1037
+ }, z.core.$strip>]>;
1038
+ scope: z.ZodOptional<z.ZodEnum<{
1039
+ project: "project";
1040
+ global: "global";
1041
+ }>>;
1042
+ order: z.ZodOptional<z.ZodNumber>;
1043
+ }, z.core.$strip>;
656
1044
 
657
1045
  declare type ExtensionTreeRendererRecord = NonNullable<InternalWorkbenchExtensionMetadata["treeRenderers"]>[number];
658
1046
 
659
- declare interface ExtensionTreeResource {
660
- type: string;
661
- id: string;
662
- label?: string;
663
- metadata?: Record<string, unknown>;
664
- }
1047
+ declare const extensionTreeRendererRecordSchema: z.ZodObject<{
1048
+ id: z.ZodString;
1049
+ extensionId: z.ZodString;
1050
+ title: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1051
+ $l10n: z.ZodString;
1052
+ default: z.ZodOptional<z.ZodString>;
1053
+ }, z.core.$strip>]>;
1054
+ icon: z.ZodOptional<z.ZodString>;
1055
+ resourceKind: z.ZodOptional<z.ZodString>;
1056
+ refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1057
+ emptyTitle: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1058
+ $l10n: z.ZodString;
1059
+ default: z.ZodOptional<z.ZodString>;
1060
+ }, z.core.$strip>]>>;
1061
+ emptyDescription: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1062
+ $l10n: z.ZodString;
1063
+ default: z.ZodOptional<z.ZodString>;
1064
+ }, z.core.$strip>]>>;
1065
+ searchable: z.ZodOptional<z.ZodBoolean>;
1066
+ searchPlaceholder: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1067
+ $l10n: z.ZodString;
1068
+ default: z.ZodOptional<z.ZodString>;
1069
+ }, z.core.$strip>]>>;
1070
+ headerHandlerId: z.ZodOptional<z.ZodString>;
1071
+ bodyHandlerId: z.ZodString;
1072
+ childrenHandlerId: z.ZodOptional<z.ZodString>;
1073
+ footerHandlerId: z.ZodOptional<z.ZodString>;
1074
+ defaultExpandedSectionIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1075
+ defaultExpandedNodeIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1076
+ }, z.core.$strip>;
1077
+
1078
+ declare type ExtensionTreeResource = ResourceRef;
665
1079
 
666
1080
  declare type ExtensionTreeViewRecord = InternalWorkbenchExtensionMetadata["panels"][number] | NonNullable<InternalWorkbenchExtensionMetadata["panels"][number]["panelMenus"]>[number];
667
1081
 
1082
+ export declare interface ExtensionWebviewArtifactCapabilities {
1083
+ read(params: unknown, context: {
1084
+ webviewId: string;
1085
+ }): Promise<unknown> | unknown;
1086
+ }
1087
+
668
1088
  export declare interface ExtensionWebviewFileCapabilities {
669
1089
  delete(params: unknown): Promise<unknown> | unknown;
670
1090
  list(params: unknown): Promise<unknown> | unknown;
@@ -736,72 +1156,46 @@ declare interface FileRendererContribution {
736
1156
  save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
737
1157
  }
738
1158
 
739
- declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
740
- fileRendererId: string;
741
- }) => unknown;
742
-
743
1159
  declare interface FileRendererRefreshEnvelope {
744
- resourceUri?: string;
1160
+ resourceKey?: string;
745
1161
  origin?: FileRendererRefreshOrigin;
746
1162
  revision?: string;
747
1163
  }
748
1164
 
749
1165
  export declare const fileRendererRefreshEnvelopeFromCommand: (body: CommandExecuteRequest, response: CommandExecuteResponse) => FileRendererRefreshEnvelope | undefined;
750
1166
 
751
- declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
752
- fileRendererId: string;
753
- }
754
-
755
- declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
756
-
757
1167
  declare interface FileRendererRefreshOrigin {
758
1168
  rendererId: string;
759
1169
  instanceId: string;
760
1170
  operationId: string;
761
1171
  }
762
1172
 
763
- declare interface FileRendererRegistry {
764
- fileRendererStore: WorkbenchStore<FileRendererStoreState>;
765
- registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
766
- setFileRendererImplementation(impl: FileRendererImplementation): void;
767
- getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
768
- listFileRenderers(): RegisteredFileRendererContribution[];
769
- refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
770
- onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
771
- }
772
-
773
1173
  declare interface FileRendererSaveResult {
774
1174
  revision?: string;
775
1175
  }
776
1176
 
777
- declare interface FileRendererStoreState {
778
- renderers: Record<string, RegisteredFileRendererContribution>;
779
- }
1177
+ export declare const getBridgeWebviewHostEventPublisher: (workbench: WorkbenchCore, instance: WorkbenchPanelInstance) => HostEventPublisher;
780
1178
 
781
- declare interface HistoryController {
782
- store: WorkbenchStore<HistoryStoreState>;
783
- /** Snapshot the history for a compound navigation; the returned function restores it. */
784
- createCheckpoint(): () => void;
785
- goBack(): HistoryEntry | undefined;
786
- goForward(): HistoryEntry | undefined;
787
- goPrevious(): HistoryEntry | undefined;
788
- recentlyClosed(): readonly HistoryEntry[];
789
- reopenLastClosed(): HistoryEntry | undefined;
790
- setPersistenceScope(scope: string | undefined): void;
791
- getPersistenceScope(): string | undefined;
792
- restore(): HistoryEntry | undefined;
793
- flush(): void;
794
- clear(): void;
795
- migrateState(transform: (state: HistoryStoreState) => HistoryStoreState): void;
796
- }
1179
+ declare type HostCapability<TParams = unknown, TResult = unknown> = (params: TParams) => Promise<TResult> | TResult;
797
1180
 
798
- declare type HistoryEntry = WorkbenchNavigationEntry;
1181
+ declare type HostCapabilityRegistry = Partial<Record<WebviewHostCapability, HostCapability>>;
799
1182
 
800
- declare interface HistoryStoreState {
801
- entries: readonly WorkbenchNavigationEntry[];
802
- cursor: number;
803
- recentlyClosed: readonly WorkbenchNavigationEntry[];
804
- hydrating: boolean;
1183
+ declare type HostEventMessage = {
1184
+ scope: string;
1185
+ payload: unknown;
1186
+ };
1187
+
1188
+ /**
1189
+ * Host-side fan-in for events pushed into one guest webview. Capability
1190
+ * implementations `emit` while the frame owns the transport: events emitted
1191
+ * before the guest connection is up are buffered and flushed on `bind`.
1192
+ */
1193
+ declare interface HostEventPublisher {
1194
+ emit(message: HostEventMessage): void;
1195
+ bind(sink: (message: HostEventMessage) => void): void;
1196
+ onDisconnect(listener: () => void): () => void;
1197
+ /** Drop the current sink and return to buffering until the next bind. */
1198
+ unbind(): void;
805
1199
  }
806
1200
 
807
1201
  declare interface HostTreeDefaultNodesInput {
@@ -815,22 +1209,62 @@ declare type HostTreeDefaultNodesResolver = (input: HostTreeDefaultNodesInput) =
815
1209
  declare interface InternalWorkbenchExtensionMetadata {
816
1210
  extensions: WorkbenchExtensionMetadata["extensions"];
817
1211
  commands: WorkbenchExtensionMetadata["commands"];
818
- menuContributions: ExtensionMenuContribution[];
1212
+ menuContributions: ExtensionMenuContribution_2[];
819
1213
  commandPaletteContributions: WorkbenchExtensionMetadata["commandPaletteContributions"];
820
- modes: ExtensionModeRecord[];
821
- panels: WorkbenchExtensionPanelRecord[];
822
- resourceKinds: ExtensionResourceKindRecord[];
823
- resourcePanels: ExtensionResourcePanelRecord[];
1214
+ modes: Array<{
1215
+ id: string;
1216
+ extensionId: string;
1217
+ modeId: string;
1218
+ label: WorkbenchExtensionMetadata["modes"][number]["label"];
1219
+ icon?: string;
1220
+ defaultTheme?: string;
1221
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
1222
+ panelRegions: WorkbenchExtensionMetadata["modes"][number]["regions"];
1223
+ regionSettings?: WorkbenchExtensionMetadata["modes"][number]["regionSettings"];
1224
+ floatingPanels?: WorkbenchExtensionMetadata["modes"][number]["floatingPanels"];
1225
+ }>;
1226
+ pages: WorkbenchPageContribution[];
1227
+ placements: Array<{
1228
+ id: string;
1229
+ ref: {
1230
+ extensionId: string;
1231
+ kind: "placement";
1232
+ id: string;
1233
+ };
1234
+ modeId: string;
1235
+ item: WorkbenchOwnedPlacementItem;
1236
+ region: "main" | "secondary" | "side";
1237
+ order?: number;
1238
+ movableTo?: readonly ("main" | "secondary" | "side")[];
1239
+ } & WorkbenchPlacementPresentation>;
1240
+ panels: InternalWorkbenchExtensionPanel[];
1241
+ resourceKinds: Array<{
1242
+ id: string;
1243
+ extensionId: string;
1244
+ label?: WorkbenchExtensionMetadata["resourceKinds"][number]["label"];
1245
+ icon?: string;
1246
+ menuSlots: Record<string, {
1247
+ placement: "header-primary" | "header-overflow" | "context-menu";
1248
+ external: boolean;
1249
+ order?: number;
1250
+ }>;
1251
+ }>;
824
1252
  resourceHierarchyProviders: Array<{
825
1253
  id: string;
826
1254
  extensionId: string;
827
1255
  resourceKind: string;
828
1256
  }>;
829
- routes: [];
830
- treeItems: ExtensionTreeItemContribution[];
831
- activityItems: ExtensionActivityItemRecord[];
832
1257
  settingsSections: ExtensionSettingsSectionRecord[];
833
- settingsPanels: WorkbenchExtensionSettingsPanelRecord[];
1258
+ settingsPanels: Array<{
1259
+ id: string;
1260
+ extensionId: string;
1261
+ viewId: string;
1262
+ slotId: string;
1263
+ scope: "global" | "project";
1264
+ title: MetadataView["title"];
1265
+ icon?: string;
1266
+ section?: string;
1267
+ }>;
834
1268
  kanbanRenderers: WorkbenchExtensionKanbanRendererRecord[];
835
1269
  dataTableRenderers: WorkbenchExtensionDataTableRendererRecord[];
836
1270
  commandPaletteResources: WorkbenchExtensionCommandPaletteResourceRecord_2[];
@@ -857,9 +1291,48 @@ declare interface InternalWorkbenchExtensionMetadata {
857
1291
  diagnostics: WorkbenchExtensionMetadata["diagnostics"];
858
1292
  }
859
1293
 
1294
+ declare interface InternalWorkbenchExtensionPanel {
1295
+ id: string;
1296
+ extensionId: string;
1297
+ title: MetadataView["title"];
1298
+ icon?: string;
1299
+ webview?: MetadataWebview;
1300
+ renderer?: {
1301
+ kind: MetadataRendererKind;
1302
+ id: string;
1303
+ };
1304
+ panelMenus?: InternalWorkbenchExtensionPanelMenu[];
1305
+ }
1306
+
1307
+ declare interface InternalWorkbenchExtensionPanelMenu {
1308
+ id: string;
1309
+ extensionId: string;
1310
+ ownerPanelId: string;
1311
+ viewId: string;
1312
+ title: MetadataView["title"];
1313
+ side: "left" | "right";
1314
+ group?: string;
1315
+ placement?: "first" | "default" | "last";
1316
+ hostTreeHeader?: "default" | "none";
1317
+ hostTreeFooter?: "default" | "none";
1318
+ webview?: MetadataWebview;
1319
+ renderer?: {
1320
+ kind: MetadataRendererKind;
1321
+ id: string;
1322
+ };
1323
+ }
1324
+
860
1325
  export declare const isExtensionNavigationTarget: (value: unknown) => value is NavigationTarget_2;
861
1326
 
862
- declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> {
1327
+ declare type JsonObject = {
1328
+ [key: string]: JsonValue;
1329
+ };
1330
+
1331
+ declare type JsonPrimitive = string | number | boolean | null;
1332
+
1333
+ declare type JsonValue = JsonPrimitive | JsonValue[] | JsonObject;
1334
+
1335
+ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
863
1336
  id: string;
864
1337
  title: string;
865
1338
  resourceKind?: string;
@@ -874,9 +1347,9 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
874
1347
  * `WorkbenchKanbanView` subscribes so additions / removals / kind changes
875
1348
  * propagate live without re-registering the renderer.
876
1349
  */
877
- attributes: AttributeDescriptor[] | AttributesSource;
1350
+ attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
878
1351
  /** Per-board-column overrides (color, drag/create rules, custom actions). */
879
- getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
1352
+ getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
880
1353
  hideToolbar?: boolean;
881
1354
  emptyTitle?: string;
882
1355
  emptyDescription?: string;
@@ -895,7 +1368,7 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
895
1368
  /** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
896
1369
  onRowActivate?: (row: TRow) => Promise<void> | void;
897
1370
  /** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
898
- getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
1371
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
899
1372
  /**
900
1373
  * Fires for inline attribute edits AND for cross-column drag-to-reorder on
901
1374
  * the board (the renderer passes the grouping attribute id + the target
@@ -952,10 +1425,6 @@ declare interface KanbanRendererCreateSubmission {
952
1425
 
953
1426
  declare type KanbanRendererFilterState = Record<string, string[]>;
954
1427
 
955
- declare type KanbanRendererImplementation = (input: WorkbenchPanelRenderInput & {
956
- kanbanRendererId: string;
957
- }) => unknown;
958
-
959
1428
  declare interface KanbanRendererOrdering {
960
1429
  attributeId: string | typeof MANUAL_ORDERING;
961
1430
  direction: SortDirection;
@@ -966,22 +1435,6 @@ declare interface KanbanRendererQueryState {
966
1435
  filters: KanbanRendererFilterState;
967
1436
  }
968
1437
 
969
- declare interface KanbanRendererRefreshEvent {
970
- kanbanRendererId: string;
971
- }
972
-
973
- declare type KanbanRendererRefreshListener = (event: KanbanRendererRefreshEvent) => void;
974
-
975
- declare interface KanbanRendererRegistry {
976
- dataStore: WorkbenchStore<KanbanRendererStoreState>;
977
- registerKanbanRenderer<TRow extends KanbanRendererRow = KanbanRendererRow>(contribution: KanbanRendererContribution<TRow>, metadata?: ContributionMetadata): Disposable_2;
978
- setKanbanRendererImplementation(impl: KanbanRendererImplementation): void;
979
- getKanbanRenderer(id: string): RegisteredKanbanRendererContribution | undefined;
980
- listKanbanRenderers(): RegisteredKanbanRendererContribution[];
981
- refreshKanbanRenderer(id: string): void;
982
- onDidRefreshKanbanRenderer(listener: KanbanRendererRefreshListener): Disposable_2;
983
- }
984
-
985
1438
  declare interface KanbanRendererRow {
986
1439
  id: string;
987
1440
  title: string;
@@ -994,7 +1447,7 @@ declare interface KanbanRendererRow {
994
1447
  attributes: Record<string, unknown>;
995
1448
  }
996
1449
 
997
- declare type KanbanRendererRow_2 = Awaited<ReturnType<KanbanRendererContribution["executeQuery"]>>[number];
1450
+ declare type KanbanRendererRow_2 = Awaited<ReturnType<ReactKanbanRendererContribution["executeQuery"]>>[number];
998
1451
 
999
1452
  declare interface KanbanRendererSavedView {
1000
1453
  id: string;
@@ -1012,15 +1465,11 @@ declare interface KanbanRendererSettings {
1012
1465
  displayProperties: string[];
1013
1466
  }
1014
1467
 
1015
- declare interface KanbanRendererStoreState {
1016
- renderers: Record<string, RegisteredKanbanRendererContribution>;
1017
- }
1018
-
1019
1468
  declare interface Keybinding {
1020
- commandId: string;
1469
+ /** Action the chord executes through the shared navigation executor. */
1470
+ action: NavigationTarget;
1021
1471
  keybinding: KeybindingSequence;
1022
1472
  when?: string;
1023
- args?: unknown;
1024
1473
  }
1025
1474
 
1026
1475
  declare interface KeybindingRegistry {
@@ -1028,6 +1477,11 @@ declare interface KeybindingRegistry {
1028
1477
  registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable_2;
1029
1478
  listKeybindings(): RegisteredKeybinding[];
1030
1479
  listActiveKeybindings(): RegisteredKeybinding[];
1480
+ /** Chords bound to plain command actions, for rendering shortcut hints beside commands. */
1481
+ listCommandKeybindings(): {
1482
+ commandId: string;
1483
+ keybinding: KeybindingSequence;
1484
+ }[];
1031
1485
  }
1032
1486
 
1033
1487
  declare interface KeybindingRegistryStoreState {
@@ -1047,12 +1501,6 @@ declare interface LayoutModel {
1047
1501
  registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
1048
1502
  dispose(): void;
1049
1503
  };
1050
- registerLocation(location: WorkbenchLocationContribution, metadata?: ContributionMetadata): {
1051
- dispose(): void;
1052
- };
1053
- registerSubPanel(subPanel: WorkbenchSubPanelContribution, metadata?: ContributionMetadata): {
1054
- dispose(): void;
1055
- };
1056
1504
  registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
1057
1505
  dispose(): void;
1058
1506
  };
@@ -1064,6 +1512,7 @@ declare interface LayoutModel {
1064
1512
  getWidget(id: string): RegisteredWidgetContribution | undefined;
1065
1513
  getPanel(id: string): WorkbenchPanelContribution | undefined;
1066
1514
  getRegionSize(regionId: WorkbenchRegion): WorkbenchRegionSize | undefined;
1515
+ getRegionSettings(regionId: WorkbenchRegion): WorkbenchRegionSettings | undefined;
1067
1516
  getRegionCollapsible(regionId: WorkbenchRegion): boolean;
1068
1517
  getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
1069
1518
  setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
@@ -1081,7 +1530,7 @@ declare interface LayoutModel {
1081
1530
  closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
1082
1531
  updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
1083
1532
  reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
1084
- expirePreviewTabs(ownerResourceUri?: string): void;
1533
+ expirePreviewTabs(ownerResourceKey?: string): void;
1085
1534
  activateWidget(widgetId: string): WorkbenchWidgetPlacement;
1086
1535
  setRegionActiveWidget(regionId: WorkbenchRegion, widgetId: string | undefined): void;
1087
1536
  closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
@@ -1114,13 +1563,6 @@ declare interface LayoutModel {
1114
1563
 
1115
1564
  declare type LayoutScope = string;
1116
1565
 
1117
- export declare const listCompositionAddablePanels: (input: {
1118
- registry: WorkbenchCompositionRegistry;
1119
- modeId: string;
1120
- layout: ReturnType<LayoutModel["getLayout"]>;
1121
- resourceKind?: string;
1122
- }) => readonly ResolvedCompositionAddablePanel[];
1123
-
1124
1566
  declare type Localizer = (value: unknown, fallback?: string) => string;
1125
1567
 
1126
1568
  declare const MANUAL_ORDERING = "manual";
@@ -1154,6 +1596,31 @@ declare interface MenuRegistryStoreState {
1154
1596
  itemsByPath: Record<string, RegisteredMenuItem[]>;
1155
1597
  }
1156
1598
 
1599
+ declare interface MetadataPageTarget {
1600
+ kind: "page";
1601
+ page: z.infer<typeof pageRefSchema>;
1602
+ resource?: z.infer<typeof extensionResourceRefSchema>;
1603
+ open?: "preview" | "pin";
1604
+ section?: z.infer<typeof sectionSchema>;
1605
+ parent?: MetadataPageTarget;
1606
+ }
1607
+
1608
+ declare type MetadataRendererKind = Exclude<MetadataView["body"]["kind"], "webview">;
1609
+
1610
+ declare type MetadataView = WorkbenchExtensionMetadata["views"][number];
1611
+
1612
+ declare type MetadataWebview = Extract<MetadataView["body"], {
1613
+ kind: "webview";
1614
+ }>["webview"];
1615
+
1616
+ declare type NativeViewBody<Kind extends string, Contribution> = {
1617
+ kind: Kind;
1618
+ } & Omit<Contribution, "id" | "title" | "icon">;
1619
+
1620
+ declare type NavigationOperation = Extract<NavigationTarget_2, {
1621
+ kind: "page" | "panel";
1622
+ }>;
1623
+
1157
1624
  declare interface NavigationParser {
1158
1625
  id: string;
1159
1626
  priority?: number;
@@ -1167,16 +1634,15 @@ declare interface NavigationRegistry {
1167
1634
  listParsers(): RegisteredNavigationParser[];
1168
1635
  resolveLocation(location: string): NavigationTarget;
1169
1636
  openTarget(target: NavigationTarget): Promise<readonly unknown[]>;
1637
+ /** Opens a page location through the shared executor. */
1638
+ openPage(target: Omit<NavigationTargetPage, "kind">): Promise<readonly unknown[]>;
1639
+ /** Opens or activates an owned panel through the shared executor. */
1640
+ openPanel(target: DistributiveOmit<NavigationTargetPanel, "kind">): Promise<readonly unknown[]>;
1170
1641
  navigate(location: string): Promise<readonly unknown[]>;
1171
- registerNavigator(navigator: ResourceNavigator, metadata?: ContributionMetadata): Disposable_2;
1172
- listNavigators(): RegisteredResourceNavigator[];
1173
- createHref(resource: ResourceRef): string;
1174
- navigateResource(resource: ResourceRef): Promise<unknown>;
1175
1642
  }
1176
1643
 
1177
1644
  declare interface NavigationRegistryStoreState {
1178
1645
  parsers: Record<string, RegisteredNavigationParser>;
1179
- navigators: Record<string, RegisteredResourceNavigator>;
1180
1646
  }
1181
1647
 
1182
1648
  declare type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
@@ -1189,7 +1655,7 @@ declare interface NavigationTargetCommand {
1189
1655
 
1190
1656
  declare interface NavigationTargetCompound {
1191
1657
  kind: "compound";
1192
- targets: readonly NavigationTargetItem[];
1658
+ targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
1193
1659
  }
1194
1660
 
1195
1661
  declare interface NavigationTargetHref {
@@ -1197,26 +1663,55 @@ declare interface NavigationTargetHref {
1197
1663
  href: string;
1198
1664
  }
1199
1665
 
1200
- declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
1666
+ declare type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
1201
1667
 
1202
- declare interface NavigationTargetPanel {
1668
+ declare type NavigationTargetPage = NavigationTargetPage_2;
1669
+
1670
+ declare type NavigationTargetPanel = NavigationTargetPanel_2 | NavigationTargetShellPanel;
1671
+
1672
+ declare interface NavigationTargetShellPanel {
1203
1673
  kind: "panel";
1204
- panelId: string;
1205
- input?: OpenWorkbenchPanelInput;
1674
+ panel: ShellPlacementRef;
1675
+ resource?: NavigationTargetPanel_2["resource"];
1676
+ open?: NavigationTargetPanel_2["open"];
1677
+ title?: string;
1206
1678
  }
1207
1679
 
1208
- declare interface NavigationTargetResource {
1209
- kind: "resource";
1210
- resource: ResourceRef;
1211
- input?: OpenResourceInput;
1680
+ declare interface NavigationTreeContext {
1681
+ resource?: ResourceRef;
1212
1682
  }
1213
1683
 
1214
- declare interface NavigationTargetView {
1215
- kind: "view";
1216
- viewId: string;
1217
- input?: OpenWorkbenchViewInput;
1684
+ declare interface NavigationTreeContribution {
1685
+ id: string;
1686
+ /** Prefix projected section and node ids when they come from an independent tree renderer. */
1687
+ idScope?: string;
1688
+ owner: NavigationTreeOwner;
1689
+ sourceExtensionId: string;
1690
+ declarationIndex: number;
1691
+ slot?: NavigationTreeSlot;
1692
+ viewId?: string;
1693
+ defaultExpandedSectionIds?: string[];
1694
+ getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1695
+ getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
1696
+ }
1697
+
1698
+ declare interface NavigationTreeOwner {
1699
+ kind: "mode" | "page";
1700
+ id: string;
1701
+ extensionId: string;
1218
1702
  }
1219
1703
 
1704
+ declare interface NavigationTreeRegistry {
1705
+ registerContribution(contribution: NavigationTreeContribution): Disposable_2;
1706
+ resolveOwner(kind: NavigationTreeOwner["kind"], id: string): NavigationTreeOwner | undefined;
1707
+ getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
1708
+ getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
1709
+ getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];
1710
+ onDidChange(listener: () => void): Disposable_2;
1711
+ }
1712
+
1713
+ declare type NavigationTreeSlot = "header" | "content" | "footer";
1714
+
1220
1715
  declare const NO_GROUPING = "none";
1221
1716
 
1222
1717
  declare interface NotificationRegistry {
@@ -1228,8 +1723,10 @@ declare interface NotificationRegistry {
1228
1723
  subscribe(listener: WorkbenchNotificationListener): Disposable_2;
1229
1724
  }
1230
1725
 
1231
- declare interface OpenResourceInput {
1232
- replaceActive?: boolean;
1726
+ declare interface OpenModePlacementTarget {
1727
+ panel: PlacementRef;
1728
+ resource?: ResourceRef;
1729
+ open?: PageOpenIntent;
1233
1730
  }
1234
1731
 
1235
1732
  declare interface OpenWidgetInput {
@@ -1251,6 +1748,11 @@ declare interface OpenWidgetInput {
1251
1748
  replaceWidgetId?: string;
1252
1749
  }
1253
1750
 
1751
+ declare interface OpenWorkbenchOverlayInput {
1752
+ resource?: ResourceRef;
1753
+ title?: string;
1754
+ }
1755
+
1254
1756
  declare interface OpenWorkbenchPanelInput {
1255
1757
  /** Set by the view registry. Low-level layout callers should leave this undefined. */
1256
1758
  viewId?: string | null;
@@ -1267,11 +1769,38 @@ declare interface OpenWorkbenchPanelInput {
1267
1769
  strategy?: WorkbenchPanelOpenStrategy;
1268
1770
  }
1269
1771
 
1270
- declare type OpenWorkbenchViewInput = Omit<OpenWorkbenchPanelInput, "viewId">;
1772
+ declare interface OpenWorkbenchShellPlacementInput {
1773
+ placementId: string;
1774
+ resource?: ResourceRef;
1775
+ open?: PageOpenIntent;
1776
+ title?: string;
1777
+ }
1778
+
1779
+ declare interface OwnedPlacementLocationContext {
1780
+ modeId: string;
1781
+ pageId?: string;
1782
+ projectId?: string;
1783
+ location?: PageLocation;
1784
+ }
1785
+
1786
+ declare interface OwnedPlacementReconciliation<Value> {
1787
+ add: readonly ResolvedOwnedPlacement<Value>[];
1788
+ retain: readonly ResolvedOwnedPlacement<Value>[];
1789
+ update: readonly OwnedPlacementUpdate<Value>[];
1790
+ activate: readonly ResolvedOwnedPlacement<Value>[];
1791
+ remove: readonly ResolvedOwnedPlacement<Value>[];
1792
+ }
1793
+
1794
+ declare interface OwnedPlacementUpdate<Value> {
1795
+ current: ResolvedOwnedPlacement<Value>;
1796
+ desired: ResolvedOwnedPlacement<Value>;
1797
+ }
1271
1798
 
1272
- export declare const panelMenuDeclarationOffsets: <T extends {
1273
- panelMenus?: readonly unknown[];
1274
- }>(panels: readonly T[]) => number[];
1799
+ declare const pageRefSchema: z.ZodObject<{
1800
+ extensionId: z.ZodString;
1801
+ kind: z.ZodLiteral<"page">;
1802
+ id: z.ZodString;
1803
+ }, z.core.$strip>;
1275
1804
 
1276
1805
  declare interface PlaceholderContribution {
1277
1806
  id: string;
@@ -1317,12 +1846,13 @@ declare interface PreferenceScopeRef {
1317
1846
 
1318
1847
  declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
1319
1848
 
1320
- export declare const reconcileCompositionLayout: (ctx: CompositionReconcileContext, input: {
1321
- registry: WorkbenchCompositionRegistry;
1322
- modeId: string;
1323
- resourceKind?: string;
1324
- seeding?: boolean;
1325
- }) => ResolvedComposition | undefined;
1849
+ declare type ReactAttributeDescriptor = AttributeDescriptor<ReactNode>;
1850
+
1851
+ declare type ReactColumnIcon = ComponentType<{
1852
+ size?: number | string;
1853
+ }>;
1854
+
1855
+ declare type ReactKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> = KanbanRendererContribution<TRow, ReactNode, ReactColumnIcon>;
1326
1856
 
1327
1857
  export declare const refreshOpenWorkbenchExtensionWebviews: (workbench: WorkbenchModuleContext, metadata: WorkbenchExtensionMetadata) => void;
1328
1858
 
@@ -1339,24 +1869,6 @@ declare interface RegisteredContributionMetadata {
1339
1869
  priority: number;
1340
1870
  }
1341
1871
 
1342
- declare interface RegisteredControlsRendererContribution extends ControlsRendererContribution, RegisteredContributionMetadata {
1343
- }
1344
-
1345
- declare interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {
1346
- }
1347
-
1348
- declare interface RegisteredFileRendererContribution extends FileRendererContribution, RegisteredContributionMetadata {
1349
- }
1350
-
1351
- declare interface RegisteredKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> extends KanbanRendererContribution<TRow>, RegisteredContributionMetadata {
1352
- }
1353
-
1354
- declare interface RegisteredKeepAliveHost {
1355
- rendererId: string;
1356
- host: HTMLElement;
1357
- attachedTo?: HTMLElement;
1358
- }
1359
-
1360
1872
  declare interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {
1361
1873
  }
1362
1874
 
@@ -1376,8 +1888,6 @@ declare type RegisteredPreferenceSchema = PreferencePropertySchema & {
1376
1888
  declare interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {
1377
1889
  }
1378
1890
 
1379
- declare type RegisteredResourceNavigator = Omit<ResourceNavigator, "priority"> & RegisteredContributionMetadata;
1380
-
1381
1891
  declare type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
1382
1892
 
1383
1893
  declare type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
@@ -1417,6 +1927,7 @@ export declare const registerWorkbenchExtensionContributions: (sourceInput: Regi
1417
1927
  export declare interface RegisterWorkbenchExtensionContributionsInput {
1418
1928
  createKeybindingWhenExpression?: (when: ExtensionKeybindingRecord["when"]) => string | undefined;
1419
1929
  createMenuWhenExpression?: WorkbenchExtensionMenuWhenBuilder;
1930
+ createNavigationWhenExpression?: (when: WorkbenchExtensionMetadata["navigationItems"][number]["when"]) => string | undefined;
1420
1931
  createWebviewHostCapabilities?: CreateBridgeWebviewHostCapabilities;
1421
1932
  createWebviewHostCapabilityOverrides?: CreateBridgeWebviewHostCapabilities;
1422
1933
  createWebviewProps?: CreateBridgeWebviewProps;
@@ -1429,20 +1940,20 @@ export declare interface RegisterWorkbenchExtensionContributionsInput {
1429
1940
  metadata: WorkbenchExtensionMetadata;
1430
1941
  openHref?: (href: string) => unknown;
1431
1942
  prepareCommandArgs?(commandId: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown> | unknown;
1432
- prepareResource?: (resource: ResourceRef) => void;
1433
1943
  projectId: string;
1434
- resolveViewInput?: WorkbenchExtensionViewInputResolver;
1435
1944
  resolveTreeNodeResource?: RegisterWorkbenchExtensionTreeRenderersInput["resolveNodeResource"];
1945
+ renderWebview?(input: WorkbenchPanelRenderInput): unknown;
1436
1946
  settingsSectionId?: string;
1437
1947
  settingsSectionTitle?: string;
1438
1948
  subscribeRefreshEvents?: (listener: (event: WorkbenchExtensionRefreshEvent) => void) => Disposable_2;
1949
+ webviewArtifacts?: ExtensionWebviewArtifactCapabilities;
1439
1950
  webviewFiles?: ExtensionWebviewFileCapabilities;
1440
1951
  workbench: WorkbenchModuleContext;
1441
1952
  }
1442
1953
 
1443
- export declare const registerWorkbenchExtensionControlsRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionControlsRendererRecord[], panels: ControlsViewRecord[], adapter?: WorkbenchExtensionControlsAdapter, resourcePanels?: InternalWorkbenchExtensionMetadata["resourcePanels"]) => Disposable_2;
1954
+ export declare const registerWorkbenchExtensionControlsRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionControlsRendererRecord[], adapter?: WorkbenchExtensionControlsAdapter) => Disposable_2;
1444
1955
 
1445
- export declare const registerWorkbenchExtensionDataTableRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionDataTableRendererRecord[], panels: DataTableViewRecord[], resourcePanels?: InternalWorkbenchExtensionMetadata["resourcePanels"], resolveViewInput?: WorkbenchExtensionViewInputResolver) => Disposable_2;
1956
+ export declare const registerWorkbenchExtensionDataTableRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionDataTableRendererRecord[]) => Disposable_2;
1446
1957
 
1447
1958
  export declare const registerWorkbenchExtensionFileRenderers: (input: RegisterWorkbenchExtensionFileRenderersInput) => {
1448
1959
  dispose(): void;
@@ -1452,24 +1963,13 @@ export declare interface RegisterWorkbenchExtensionFileRenderersInput {
1452
1963
  executeCommand(commandId: string, body: CommandExecuteRequest): Promise<unknown> | unknown;
1453
1964
  metadata: InternalWorkbenchExtensionMetadata;
1454
1965
  projectId: string;
1455
- resolveViewInput?: WorkbenchExtensionViewInputResolver;
1456
1966
  workbench: WorkbenchModuleContext;
1457
1967
  }
1458
1968
 
1459
- export declare const registerWorkbenchExtensionKanbanRenderers: (context: WorkbenchExtensionCommandContext, records: readonly WorkbenchExtensionKanbanRendererRecord[], adapter?: WorkbenchExtensionKanbanRendererAdapter, panels?: InternalWorkbenchExtensionMetadata["panels"], resourcePanels?: InternalWorkbenchExtensionMetadata["resourcePanels"]) => {
1969
+ export declare const registerWorkbenchExtensionKanbanRenderers: (context: WorkbenchExtensionCommandContext, records: readonly WorkbenchExtensionKanbanRendererRecord[], adapter?: WorkbenchExtensionKanbanRendererAdapter) => {
1460
1970
  dispose(): void;
1461
1971
  };
1462
1972
 
1463
- export declare const registerWorkbenchExtensionPanel: (input: RegisterWorkbenchExtensionPanelInput) => Disposable_2;
1464
-
1465
- export declare interface RegisterWorkbenchExtensionPanelInput {
1466
- contribution: WorkbenchPanelContribution;
1467
- path?: string;
1468
- aliases?: readonly string[];
1469
- resolveInput?: WorkbenchViewContribution["resolveInput"];
1470
- workbench: WorkbenchModuleContext;
1471
- }
1472
-
1473
1973
  export declare const registerWorkbenchExtensionRendererRefreshEvents: (input: RegisterWorkbenchExtensionRendererRefreshEventsInput) => Disposable_2;
1474
1974
 
1475
1975
  export declare interface RegisterWorkbenchExtensionRendererRefreshEventsInput {
@@ -1495,7 +1995,6 @@ export declare interface RegisterWorkbenchExtensionTreeRenderersInput {
1495
1995
  * gets a second identity when opened from a tree.
1496
1996
  */
1497
1997
  resolveNodeResource?: (resource: ExtensionTreeResource) => ResourceRef;
1498
- resolveViewInput?: WorkbenchExtensionViewInputResolver;
1499
1998
  workbench: WorkbenchModuleContext;
1500
1999
  }
1501
2000
 
@@ -1514,48 +2013,15 @@ declare interface RendererRefreshTarget {
1514
2013
  kind: WorkbenchExtensionRendererKind;
1515
2014
  }
1516
2015
 
1517
- declare interface ResolvedComposition {
1518
- placements: readonly ResolvedCompositionPlacement[];
1519
- regionOrder: Partial<Record<DockedCompositionRegion, readonly string[]>>;
1520
- activePanelIds: Partial<Record<DockedCompositionRegion, string>>;
1521
- addablePanels: readonly ResolvedCompositionAddablePanel_2[];
1522
- diagnostics: readonly CompositionDiagnostic[];
1523
- requiredFallback?: {
1524
- panelId: string;
1525
- };
1526
- }
1527
-
1528
- declare interface ResolvedCompositionAddablePanel {
1529
- panelId: string;
1530
- region: DockedCompositionRegion_2;
1531
- allowedRegions: readonly DockedCompositionRegion_2[];
1532
- pinned?: boolean;
1533
- }
1534
-
1535
- declare interface ResolvedCompositionAddablePanel_2 {
1536
- panelId: string;
1537
- region: DockedCompositionRegion;
1538
- allowedRegions: readonly DockedCompositionRegion[];
1539
- pinned?: boolean;
1540
- }
1541
-
1542
- declare interface ResolvedCompositionPlacement {
1543
- panelId: string;
1544
- region: DockedCompositionRegion;
1545
- slot?: string;
1546
- required: boolean;
1547
- defaultOpen: boolean;
1548
- pinned?: boolean;
1549
- allowedRegions: readonly DockedCompositionRegion[];
1550
- origin: "persisted" | "required" | "default";
2016
+ declare interface ResolvedOwnedPlacement<Value = unknown> {
2017
+ identity: PlacementIdentity;
2018
+ region: WorkbenchRegion;
2019
+ order: number;
2020
+ value: Value;
1551
2021
  }
1552
2022
 
1553
2023
  declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
1554
2024
 
1555
- declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
1556
- priority: number;
1557
- };
1558
-
1559
2025
  declare interface ResourceBrowseEntry {
1560
2026
  resource: ResourceRef;
1561
2027
  searchText?: string;
@@ -1566,13 +2032,13 @@ declare interface ResourceBrowseEntry {
1566
2032
  }
1567
2033
 
1568
2034
  /** Row-level context menu action surfaced by the renderer. */
1569
- declare interface ResourceContextAction {
2035
+ declare interface ResourceContextAction<TNode = unknown> {
1570
2036
  key: string;
1571
2037
  label: string;
1572
2038
  onClick: () => Promise<void> | void;
1573
2039
  isDisabled?: boolean;
1574
- icon?: ReactNode;
1575
- endContent?: ReactNode;
2040
+ icon?: TNode;
2041
+ endContent?: TNode;
1576
2042
  separatorBefore?: boolean;
1577
2043
  }
1578
2044
 
@@ -1595,62 +2061,23 @@ declare interface ResourceKindContribution {
1595
2061
  kind: string;
1596
2062
  label: string;
1597
2063
  icon?: string;
1598
- surface?: ResourceSurface;
1599
- paletteOpenInput?: OpenResourceInput;
1600
2064
  }
1601
2065
 
1602
2066
  declare interface ResourceListContext {
1603
2067
  primary?: ResourceRef;
1604
2068
  }
1605
2069
 
1606
- declare interface ResourceNavigator<TResult = unknown> {
1607
- id: string;
1608
- priority?: number;
1609
- canNavigate(resource: ResourceRef): boolean;
1610
- createHref?(resource: ResourceRef): string;
1611
- navigate(resource: ResourceRef): TResult | Promise<TResult>;
1612
- }
1613
-
1614
- declare interface ResourcePresenter {
1615
- id: string;
1616
- priority?: number;
1617
- canOpen(resource: ResourceRef): boolean;
1618
- open(resource: ResourceRef, input: OpenResourceInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
1619
- afterOpen?(resource: ResourceRef, instance: WorkbenchPanelInstance, input: OpenResourceInput): void;
1620
- }
1621
-
1622
2070
  declare interface ResourceProvider {
1623
2071
  id: string;
1624
2072
  kind: string;
1625
2073
  list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
1626
2074
  }
1627
2075
 
1628
- declare interface ResourceRef {
1629
- kind: string;
1630
- uri: string;
1631
- id?: string;
1632
- label?: string;
1633
- icon?: string;
1634
- metadata?: Record<string, unknown>;
1635
- }
1636
-
1637
- declare interface ResourceRef_2 {
1638
- kind: string;
1639
- uri: string;
1640
- id?: string;
1641
- label?: string;
1642
- icon?: string;
1643
- metadata?: Record<string, unknown>;
1644
- }
1645
-
1646
2076
  declare interface ResourceRegistry {
1647
2077
  store: WorkbenchStore<ResourceRegistryStoreState>;
1648
2078
  registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable_2;
1649
2079
  getKind(kind: string): RegisteredResourceKind | undefined;
1650
- getSurface(resource: ResourceRef): ResourceSurface | undefined;
1651
2080
  listKinds(): RegisteredResourceKind[];
1652
- registerPresenter(presenter: ResourcePresenter): Disposable_2;
1653
- listPresenters(): ResolvedResourcePresenter[];
1654
2081
  registerProvider(provider: ResourceProvider): Disposable_2;
1655
2082
  listProviders(): ResourceProvider[];
1656
2083
  listResources(query: string): readonly ResourceBrowseEntry[];
@@ -1658,20 +2085,14 @@ declare interface ResourceRegistry {
1658
2085
  listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
1659
2086
  walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
1660
2087
  onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
1661
- isOpeningResource(): boolean;
1662
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
1663
- onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
1664
2088
  }
1665
2089
 
1666
2090
  declare interface ResourceRegistryStoreState {
1667
2091
  kinds: Record<string, RegisteredResourceKind>;
1668
- presenters: Record<string, ResolvedResourcePresenter>;
1669
2092
  providers: Record<string, ResourceProvider>;
1670
2093
  hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
1671
2094
  }
1672
2095
 
1673
- declare type ResourceSurface = "primary" | "secondary" | "attached";
1674
-
1675
2096
  declare type RowAction = NonNullable<WorkbenchExtensionKanbanRendererRecord["rowActions"]>[number];
1676
2097
 
1677
2098
  /** Auto-rendered as a param editor from the registered preference schema. */
@@ -1682,6 +2103,14 @@ declare interface SchemaSettingsPanel extends SettingsPanelBase {
1682
2103
  save?: "live" | "apply";
1683
2104
  }
1684
2105
 
2106
+ declare const sectionSchema: z.ZodObject<{
2107
+ anchors: z.ZodArray<z.ZodObject<{
2108
+ id: z.ZodString;
2109
+ heading: z.ZodString;
2110
+ occurrence: z.ZodOptional<z.ZodNumber>;
2111
+ }, z.core.$strip>>;
2112
+ }, z.core.$strip>;
2113
+
1685
2114
  /** A "+ create"-style action surfaced on a section or a collection's parent node. */
1686
2115
  declare interface SettingsAction {
1687
2116
  id: string;
@@ -1710,7 +2139,7 @@ declare interface SettingsPanelBase {
1710
2139
  when?: string;
1711
2140
  }
1712
2141
 
1713
- declare type SettingsPanelContribution = SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel;
2142
+ declare type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
1714
2143
 
1715
2144
  /** A preference this panel edits; a bare string uses the preference name as its label. */
1716
2145
  declare type SettingsPanelPreference = string | {
@@ -1721,11 +2150,13 @@ declare type SettingsPanelPreference = string | {
1721
2150
  declare interface SettingsRegistry {
1722
2151
  store: WorkbenchStore<SettingsRegistryStoreState>;
1723
2152
  registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable_2;
1724
- registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
2153
+ registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1725
2154
  getSection(id: string): RegisteredSettingsSection | undefined;
1726
2155
  getPanel(id: string): RegisteredSettingsPanel | undefined;
1727
2156
  listSections(): RegisteredSettingsSection[];
1728
2157
  listPanels(): RegisteredSettingsPanel[];
2158
+ resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
2159
+ getCollectionItem(panelId: string, itemId: string): unknown | undefined;
1729
2160
  /** Signal that a collection's backing data changed so the surface refreshes. */
1730
2161
  refresh(): void;
1731
2162
  }
@@ -1749,6 +2180,12 @@ declare interface SettingsSectionContribution {
1749
2180
  actions?: SettingsAction[];
1750
2181
  }
1751
2182
 
2183
+ /** Core-only panel ref for host-owned shell placements. Extensions cannot address them. */
2184
+ declare interface ShellPlacementRef {
2185
+ kind: "shell-placement";
2186
+ id: string;
2187
+ }
2188
+
1752
2189
  declare type SortDirection = "asc" | "desc";
1753
2190
 
1754
2191
  /**
@@ -1758,6 +2195,8 @@ declare type SortDirection = "asc" | "desc";
1758
2195
  */
1759
2196
  declare type ThemePreference = string;
1760
2197
 
2198
+ declare type ThemePreference_2 = "dark" | "light";
2199
+
1761
2200
  declare type ThemePreferenceMode = "light" | "dark";
1762
2201
 
1763
2202
  declare interface ThemePreferenceOption {
@@ -1776,18 +2215,9 @@ declare interface ThemeRegistry {
1776
2215
  listThemes(): readonly ThemePreferenceOption[];
1777
2216
  }
1778
2217
 
1779
- export declare const toPanelPlacements: (show: DeclaredPanelPlacement | readonly DeclaredPanelPlacement[] | undefined) => any[];
1780
-
1781
- export declare const toWorkbenchCompositionPanelContribution: (input: {
1782
- panel: ExtensionPanelRecord;
1783
- rendererId: string;
1784
- declarationIndex: number;
1785
- menuDeclarationOffset: number;
1786
- resourcePanels?: ExtensionResourcePanels;
1787
- config?: WorkbenchPanelContribution["config"];
1788
- }) => WorkbenchPanelContribution;
2218
+ export declare function toWorkbenchNavigationTarget(target: NavigationOperation, input?: ToWorkbenchNavigationTargetInput): NavigationOperation;
1789
2219
 
1790
- export declare const toWorkbenchNavigationTarget: (target: NavigationTarget_2, input?: ToWorkbenchNavigationTargetInput) => NavigationTarget;
2220
+ export declare function toWorkbenchNavigationTarget(target: NavigationTarget_2, input?: ToWorkbenchNavigationTargetInput): NavigationTarget;
1791
2221
 
1792
2222
  export declare interface ToWorkbenchNavigationTargetInput {
1793
2223
  commandIdOf?(command: Extract<NavigationTarget_2, {
@@ -1797,22 +2227,16 @@ export declare interface ToWorkbenchNavigationTargetInput {
1797
2227
  kind: "command";
1798
2228
  }>): NavigationTargetCommand;
1799
2229
  extensionId?: string;
1800
- resourceOf?(resource: Parameters<typeof toWorkbenchResource>[0], target: Extract<NavigationTarget_2, {
1801
- kind: "resource";
1802
- }>): ResourceRef;
1803
- sourcePlacement?: ExtensionNavigationSourcePlacement;
1804
2230
  }
1805
2231
 
1806
2232
  export declare const toWorkbenchNavigationTargetResult: (value: unknown, input?: ToWorkbenchNavigationTargetInput) => NavigationTarget | undefined;
1807
2233
 
1808
- declare const toWorkbenchResource: (resource: NonNullable<CommandExecuteRequest["resource"]>) => ResourceRef;
1809
-
1810
2234
  export declare const toWorkbenchWhenExpression: (when: WorkbenchExtensionMetadata["navigationItems"][number]["when"] | WorkbenchExtensionMetadata["statusBarItems"][number]["when"]) => {
1811
2235
  mode: string | string[] | undefined;
1812
- source: any;
2236
+ source: ("event" | "schedule" | "api" | "cli" | "dashboard" | "automation" | "command-panel")[] | undefined;
1813
2237
  viewId: string | string[] | undefined;
1814
- resourceType: any;
1815
- metadata: any;
2238
+ resourceType: string[] | undefined;
2239
+ metadata: Record<string, unknown> | undefined;
1816
2240
  } | undefined;
1817
2241
 
1818
2242
  declare interface TreeAction {
@@ -1828,15 +2252,29 @@ declare interface TreeAction {
1828
2252
  run?(args?: unknown): Promise<void> | void;
1829
2253
  }
1830
2254
 
1831
- declare interface TreeContext {
1832
- filter?: string;
1833
- resource?: ResourceRef;
1834
- /** Widget/view contribution id for trees rendered through a view-backed widget. */
1835
- viewId?: string;
2255
+ declare interface TreeContext extends TreeQueryContext {
2256
+ state: Readonly<TreeRendererState>;
2257
+ refresh(): void;
2258
+ setSelectedNode(nodeId: string | undefined): void;
2259
+ }
2260
+
2261
+ declare interface TreeMoveEndpoint {
2262
+ kind: "section" | "node";
2263
+ sectionId: string;
2264
+ id: string;
2265
+ moveScope?: string;
1836
2266
  }
1837
2267
 
2268
+ declare type TreeMovePolicy = (move: {
2269
+ source: TreeMoveEndpoint;
2270
+ destination: TreeMoveEndpoint;
2271
+ }) => boolean;
2272
+
1838
2273
  declare interface TreeNode {
1839
2274
  id: string;
2275
+ selected?: boolean;
2276
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
2277
+ moveScope?: string;
1840
2278
  label: string;
1841
2279
  icon?: string;
1842
2280
  iconElement?: unknown;
@@ -1881,6 +2319,13 @@ declare interface TreeNodeInlineInput {
1881
2319
 
1882
2320
  declare type TreeNodeRowVariant = "empty-state";
1883
2321
 
2322
+ declare interface TreeQueryContext {
2323
+ filter?: string;
2324
+ resource?: ResourceRef;
2325
+ /** Widget/view contribution id for trees rendered through a view-backed widget. */
2326
+ viewId?: string;
2327
+ }
2328
+
1884
2329
  declare interface TreeRendererContribution {
1885
2330
  id: string;
1886
2331
  title: string;
@@ -1891,9 +2336,10 @@ declare interface TreeRendererContribution {
1891
2336
  defaultExpandedSectionIds?: string[];
1892
2337
  defaultExpandedNodeIds?: string[];
1893
2338
  getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1894
- getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1895
- getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
2339
+ getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
2340
+ getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1896
2341
  getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
2342
+ canMove?: TreeMovePolicy;
1897
2343
  moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
1898
2344
  }
1899
2345
 
@@ -1913,10 +2359,10 @@ declare interface TreeRendererRegistry {
1913
2359
  setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1914
2360
  getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1915
2361
  listTreeRenderers(): RegisteredTreeRendererContribution[];
1916
- getBody(id: string, ctx?: TreeContext): Promise<TreeViewSection[]>;
1917
- getHeader(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1918
- getFooter(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1919
- getChildren(id: string, node: TreeNode, ctx?: TreeContext): Promise<TreeNode[]>;
2362
+ getBody(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
2363
+ getHeader(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
2364
+ getFooter(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
2365
+ getChildren(id: string, node: TreeNode, ctx?: TreeQueryContext): Promise<TreeNode[]>;
1920
2366
  getTreeState(id: string): TreeRendererState;
1921
2367
  setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1922
2368
  setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
@@ -1947,6 +2393,8 @@ declare interface TreeSectionEmptyState {
1947
2393
 
1948
2394
  declare interface TreeViewSection {
1949
2395
  id: string;
2396
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
2397
+ moveScope?: string;
1950
2398
  label?: string;
1951
2399
  actions?: TreeAction[];
1952
2400
  collapsible?: boolean;
@@ -1960,7 +2408,7 @@ declare interface TreeViewSection {
1960
2408
  }
1961
2409
 
1962
2410
  declare interface UnresolvedWorkbenchExtensionMenuContribution {
1963
- contribution: ExtensionMenuContribution_2;
2411
+ contribution: ExtensionMenuContribution;
1964
2412
  targetId: string;
1965
2413
  }
1966
2414
 
@@ -1972,6 +2420,11 @@ declare interface UnresolvedWorkbenchExtensionMenuContribution {
1972
2420
  */
1973
2421
  declare type ViewMode = "board" | "list";
1974
2422
 
2423
+ declare interface ViewSettingsPanel extends SettingsPanelBase {
2424
+ kind: "view";
2425
+ viewId: string;
2426
+ }
2427
+
1975
2428
  declare interface WidgetContribution {
1976
2429
  id: string;
1977
2430
  title: string;
@@ -1983,15 +2436,13 @@ declare interface WidgetContribution {
1983
2436
  mountStrategy?: WidgetMountStrategy;
1984
2437
  closable?: boolean;
1985
2438
  hiddenByDefault?: boolean;
1986
- subPanelsOnly?: boolean;
1987
2439
  regionSize?: WorkbenchRegionSize;
1988
2440
  regionCollapsible?: boolean;
1989
2441
  headerBorderBottom?: boolean;
1990
- floatingPanels?: WorkbenchFloatingPanelVisibility;
1991
2442
  resourceKinds?: string[];
1992
2443
  priority?: number;
1993
2444
  rendererId: string;
1994
- openCommandId?: string;
2445
+ openCommand?: WorkbenchCommandTarget;
1995
2446
  eligibleLocations?: WorkbenchLocationEligibility;
1996
2447
  panelMenuOwner?: WorkbenchPanelMenuOwner;
1997
2448
  tab?: WorkbenchWidgetTab;
@@ -2001,8 +2452,6 @@ declare interface WidgetContribution {
2001
2452
 
2002
2453
  declare type WidgetMountStrategy = "active" | "keep-mounted";
2003
2454
 
2004
- declare type WidgetMountStrategy_2 = "active" | "keep-mounted";
2005
-
2006
2455
  declare type WidgetReusePolicy = "resource" | "none";
2007
2456
 
2008
2457
  declare type WorkbenchBreadcrumbChangeListener = () => void;
@@ -2028,13 +2477,6 @@ declare interface WorkbenchBreadcrumbState {
2028
2477
  items: WorkbenchBreadcrumbItem[] | undefined;
2029
2478
  }
2030
2479
 
2031
- declare interface WorkbenchClosedSubPanel {
2032
- region: WorkbenchPanelRegion;
2033
- reference: WorkbenchSubPanelRef;
2034
- resource?: ResourceRef;
2035
- title?: string;
2036
- }
2037
-
2038
2480
  declare interface WorkbenchCommandExecutionContext {
2039
2481
  resource?: ResourceRef;
2040
2482
  source?: "panel-add";
@@ -2076,7 +2518,7 @@ declare interface WorkbenchCommandPaletteState {
2076
2518
  paramsRequest: WorkbenchCommandParamsRequest | null;
2077
2519
  }
2078
2520
 
2079
- declare type WorkbenchCommandPaletteView = "main" | "theme" | "mode";
2521
+ declare type WorkbenchCommandPaletteView = "main" | "theme";
2080
2522
 
2081
2523
  declare interface WorkbenchCommandParamsRequest {
2082
2524
  record: {
@@ -2091,14 +2533,14 @@ declare interface WorkbenchCommandParamsRequest {
2091
2533
  context?: WorkbenchCommandExecutionContext;
2092
2534
  }
2093
2535
 
2094
- declare interface WorkbenchComposition {
2095
- resourceKinds: readonly CompositionResourceKindDefinition[];
2096
- panels: readonly CompositionPanelDefinition[];
2097
- resourcePanels: readonly CompositionResourcePanelEdge[];
2536
+ declare interface WorkbenchCommandTarget {
2537
+ commandId: string;
2538
+ args?: unknown;
2098
2539
  }
2099
2540
 
2100
2541
  declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
2101
2542
  contribution: RegisteredWidgetContribution;
2543
+ open?(resource?: ResourceRef): void;
2102
2544
  }
2103
2545
 
2104
2546
  declare interface WorkbenchCompositionController {
@@ -2111,15 +2553,6 @@ declare interface WorkbenchCompositionRegionPanels {
2111
2553
  closable: readonly string[];
2112
2554
  }
2113
2555
 
2114
- export declare interface WorkbenchCompositionRegistry {
2115
- registerResourceKind(definition: CompositionResourceKindDefinition): Disposable_2;
2116
- registerPanelCapability(definition: CompositionPanelDefinition): Disposable_2;
2117
- registerResourcePanel(edge: CompositionResourcePanelEdge): Disposable_2;
2118
- registerModeComposition(definition: CompositionModeDefinition): Disposable_2;
2119
- getComposition(): WorkbenchComposition;
2120
- getModeComposition(modeId: string): CompositionModeDefinition | undefined;
2121
- }
2122
-
2123
2556
  declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
2124
2557
  host: WorkbenchHost;
2125
2558
  layout: WorkbenchLayoutModel;
@@ -2128,6 +2561,8 @@ declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
2128
2561
  }
2129
2562
 
2130
2563
  declare interface WorkbenchCoreContributionContext {
2564
+ pinPlacement(identity: PlacementIdentity): void;
2565
+ closePlacement(identity: PlacementIdentity): void;
2131
2566
  breadcrumbs: WorkbenchBreadcrumbController;
2132
2567
  commandPalette: WorkbenchCommandPaletteController;
2133
2568
  commandPaletteResources: CommandPaletteResourceRegistry;
@@ -2135,19 +2570,24 @@ declare interface WorkbenchCoreContributionContext {
2135
2570
  composition: WorkbenchCompositionController;
2136
2571
  context: ContextKeyService;
2137
2572
  focus: WorkbenchFocusController;
2138
- history: HistoryController;
2139
2573
  keybindings: KeybindingRegistry;
2140
- lastResource: WorkbenchLastResourceController;
2141
2574
  layout: WorkbenchModuleLayoutModel;
2142
2575
  modes: WorkbenchModeRegistry;
2576
+ modePlacements: WorkbenchModePlacementRegistry;
2577
+ shellPlacements: WorkbenchShellPlacementRegistry;
2143
2578
  navigation: NavigationRegistry;
2144
- navigator: WorkbenchNavigator;
2579
+ navigationTrees: NavigationTreeRegistry;
2145
2580
  notifications: NotificationRegistry;
2146
- panels: WorkbenchPanelsController;
2581
+ overlays: WorkbenchOverlayRegistry;
2582
+ placeholders: WorkbenchPlaceholderRegistry;
2583
+ pageLocations: WorkbenchPageLocationController;
2584
+ pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
2585
+ panelMenuState: WorkbenchPanelMenuStateController;
2147
2586
  preferences: PreferenceRegistry;
2148
- renderers: WorkbenchRenderers;
2587
+ treeViews: WorkbenchTreeViews;
2149
2588
  resources: ResourceRegistry;
2150
2589
  views: WorkbenchViewRegistry;
2590
+ viewMenus: WorkbenchViewMenuRegistry;
2151
2591
  settings: SettingsRegistry;
2152
2592
  statusBar: WorkbenchStatusBarRegistry;
2153
2593
  statuses: WorkbenchStatusRegistry;
@@ -2160,6 +2600,7 @@ declare interface WorkbenchCoreContributionContext {
2160
2600
  onDidChangePrimaryResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
2161
2601
  getActiveResource(): ResourceRef | undefined;
2162
2602
  onDidChangeActiveResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
2603
+ registerChildModule(module: WorkbenchModuleContribution): Disposable_2;
2163
2604
  }
2164
2605
 
2165
2606
  export declare interface WorkbenchExtensionCommandContext {
@@ -2176,12 +2617,19 @@ export declare interface WorkbenchExtensionCommandPaletteRegistration {
2176
2617
  targetCommandId: string;
2177
2618
  }
2178
2619
 
2620
+ declare type WorkbenchExtensionCommandPaletteResourceRecord_2 = z.infer<typeof extensionCommandPaletteResourceRecordSchema>;
2621
+
2179
2622
  export declare interface WorkbenchExtensionControlsAdapter {
2180
2623
  /** Supply a fallback resource when the widget placement carries none. */
2181
2624
  resolveResource?: (record: WorkbenchExtensionControlsRendererRecord) => ResourceRef | undefined;
2182
- resolveViewInput?: WorkbenchExtensionViewInputResolver;
2183
2625
  }
2184
2626
 
2627
+ declare type WorkbenchExtensionControlsRendererRecord = z.infer<typeof extensionControlsRendererRecordSchema>;
2628
+
2629
+ declare type WorkbenchExtensionDataTableRendererRecord = ExtensionDataTableRendererRecord;
2630
+
2631
+ declare type WorkbenchExtensionFileRendererRecord = z.infer<typeof extensionFileRendererRecordSchema>;
2632
+
2185
2633
  export declare interface WorkbenchExtensionHostMenuRegistration extends Omit<WorkbenchExtensionMenuRegistration, "menuItem" | "menuPath"> {
2186
2634
  menuItems: Array<{
2187
2635
  menuItem: MenuItem;
@@ -2190,12 +2638,10 @@ export declare interface WorkbenchExtensionHostMenuRegistration extends Omit<Wor
2190
2638
  }
2191
2639
 
2192
2640
  export declare interface WorkbenchExtensionKanbanRendererAdapter {
2193
- /** Add host navigation state changes that must run before a panel view opens. */
2194
- resolveViewInput?: WorkbenchExtensionViewInputResolver;
2195
2641
  /** Override label resolution. Defaults to workbench's `text(value, fallback)`. */
2196
2642
  resolveLabel?: Localizer;
2197
2643
  /** Post-process an attribute descriptor (after localization). Defaults to identity. */
2198
- decorateAttribute?: (record: WorkbenchExtensionKanbanRendererRecord, attribute: AttributeDescriptor) => AttributeDescriptor;
2644
+ decorateAttribute?: (record: WorkbenchExtensionKanbanRendererRecord, attribute: ReactAttributeDescriptor) => ReactAttributeDescriptor;
2199
2645
  /**
2200
2646
  * Translate a row's transport-shaped resource (`{ type, id }`) into a workbench
2201
2647
  * `ResourceRef`. Defaults to the workbench `pstdio://extension-resource/...`
@@ -2221,17 +2667,13 @@ export declare interface WorkbenchExtensionKanbanRendererAdapter {
2221
2667
  runDefault: () => Promise<void>;
2222
2668
  }) => void | Promise<void>;
2223
2669
  /**
2224
- * Override the row click handler. When unset the panel layer falls back to
2225
- * opening the row's resource via `ctx.resources.openResource` — set this to
2226
- * intercept the click (e.g. swallow rejections when no presenter exists yet).
2670
+ * Handle a row click when the renderer has no declared activation handler.
2227
2671
  */
2228
2672
  onRowClick?: (input: {
2229
2673
  record: WorkbenchExtensionKanbanRendererRecord;
2230
2674
  row: KanbanRendererRow_2;
2231
2675
  resource: ResourceRef | undefined;
2232
2676
  }) => void;
2233
- /** Translate extension navigation resource targets into host resources. */
2234
- resolveNavigationResource?: (record: WorkbenchExtensionKanbanRendererRecord, resource: NonNullable<CommandExecuteRequest["resource"]>) => ResourceRef;
2235
2677
  /** Called after a successful renderer-owned create form submission. */
2236
2678
  onAfterCreate?: (input: {
2237
2679
  record: WorkbenchExtensionKanbanRendererRecord;
@@ -2242,14 +2684,16 @@ export declare interface WorkbenchExtensionKanbanRendererAdapter {
2242
2684
  * Called after any mutation (attribute change, reorder, column action, default
2243
2685
  * create) resolves successfully. Hosts that drive refresh via the outer command
2244
2686
  * pipeline (testbench / workbench) leave this unset; dashboard supplies
2245
- * `ctx.renderers.refreshKanbanRenderer(id)`.
2687
+ * `ctx.views.refreshView(id)`.
2246
2688
  */
2247
2689
  onAfterMutation?: (record: WorkbenchExtensionKanbanRendererRecord) => void;
2248
2690
  }
2249
2691
 
2692
+ declare type WorkbenchExtensionKanbanRendererRecord = z.infer<typeof extensionKanbanRendererRecordSchema>;
2693
+
2250
2694
  export declare interface WorkbenchExtensionMenuRegistration {
2251
2695
  command: Command;
2252
- contribution: ExtensionMenuContribution_2;
2696
+ contribution: ExtensionMenuContribution;
2253
2697
  menuItem: MenuItem;
2254
2698
  menuPath: MenuPath;
2255
2699
  targetCommandId: string;
@@ -2261,7 +2705,7 @@ export declare interface WorkbenchExtensionMenuSlotConfig {
2261
2705
  overflowLabel?: string;
2262
2706
  }
2263
2707
 
2264
- export declare type WorkbenchExtensionMenuWhenBuilder = (contribution: ExtensionMenuContribution_2) => string | undefined;
2708
+ export declare type WorkbenchExtensionMenuWhenBuilder = (contribution: ExtensionMenuContribution) => string | undefined;
2265
2709
 
2266
2710
  export { WorkbenchExtensionMetadata }
2267
2711
 
@@ -2273,20 +2717,12 @@ export declare type WorkbenchExtensionRendererKind = "tree" | "file" | "controls
2273
2717
 
2274
2718
  declare type WorkbenchExtensionStringResolver = (value: Localizable<string> | undefined, extensionId: string) => string;
2275
2719
 
2276
- declare interface WorkbenchExtensionViewDescriptor {
2277
- id: string;
2278
- title: string;
2279
- icon?: string;
2280
- }
2281
-
2282
- declare type WorkbenchExtensionViewInputResolver = (view: WorkbenchExtensionViewDescriptor) => WorkbenchViewContribution["resolveInput"];
2720
+ declare type WorkbenchExtensionTreeRendererRecord = z.infer<typeof extensionTreeRendererRecordSchema>;
2283
2721
 
2284
2722
  declare interface WorkbenchFileIconThemeStoreState {
2285
2723
  themes: readonly FileIconThemePreferenceOption[];
2286
2724
  }
2287
2725
 
2288
- declare type WorkbenchFloatingPanelVisibility = "visible" | "hidden";
2289
-
2290
2726
  declare type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
2291
2727
 
2292
2728
  declare interface WorkbenchFocusController {
@@ -2316,18 +2752,12 @@ declare interface WorkbenchHost {
2316
2752
  getPersistenceScope(): string | undefined;
2317
2753
  }
2318
2754
 
2319
- declare interface WorkbenchLastResourceController {
2320
- get(): ResourceRef | undefined;
2321
- set(resource: ResourceRef | undefined): void;
2322
- restore(): Promise<boolean>;
2323
- }
2324
-
2325
2755
  declare interface WorkbenchLayout {
2326
2756
  regions: Record<WorkbenchRegion, WorkbenchRegionState>;
2327
2757
  locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
2328
2758
  activeWidgetId?: string;
2329
2759
  activeLocationWidgetId?: string;
2330
- activeResourceUri?: string;
2760
+ activeResourceKey?: string;
2331
2761
  }
2332
2762
 
2333
2763
  declare type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
@@ -2338,8 +2768,6 @@ declare interface WorkbenchLayoutStoreState {
2338
2768
  placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;
2339
2769
  }
2340
2770
 
2341
- declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
2342
-
2343
2771
  declare interface WorkbenchLocationEligibility {
2344
2772
  modeIds?: string[];
2345
2773
  resourceKinds?: string[];
@@ -2351,16 +2779,6 @@ declare interface WorkbenchLocationEligibility {
2351
2779
  }): boolean;
2352
2780
  }
2353
2781
 
2354
- declare interface WorkbenchLocationRef {
2355
- key: string;
2356
- modeId?: string;
2357
- viewId?: string;
2358
- resource?: ResourceRef;
2359
- contributionId?: string;
2360
- instanceKey?: string;
2361
- title?: string;
2362
- }
2363
-
2364
2782
  declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
2365
2783
 
2366
2784
  declare type WorkbenchModeActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
@@ -2382,7 +2800,12 @@ declare type WorkbenchModeChangeListener = () => void;
2382
2800
  declare interface WorkbenchModeContribution {
2383
2801
  id: string;
2384
2802
  label?: string;
2803
+ defaultTheme?: string;
2804
+ floatingPanels?: "visible" | "hidden";
2805
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
2385
2806
  panels?: readonly WorkbenchPanelRegion[];
2807
+ /** Region-level layout policy while this mode is active. */
2808
+ regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
2386
2809
  resourceKinds?: readonly string[];
2387
2810
  defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
2388
2811
  listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
@@ -2392,6 +2815,31 @@ declare interface WorkbenchModeContribution {
2392
2815
  reconcile?(ctx: WorkbenchModeActivationContext): void;
2393
2816
  }
2394
2817
 
2818
+ declare interface WorkbenchModePlacementContribution extends WorkbenchPlacementPresentation {
2819
+ readonly id: string;
2820
+ readonly ref: PlacementRef;
2821
+ readonly modeId: string;
2822
+ readonly item: WorkbenchOwnedPlacementItem;
2823
+ readonly region: DockedWorkbenchRegion;
2824
+ readonly order?: number;
2825
+ readonly movableTo?: readonly DockedWorkbenchRegion[];
2826
+ }
2827
+
2828
+ declare interface WorkbenchModePlacementRegistry {
2829
+ registerPlacement(placement: WorkbenchModePlacementContribution): Disposable_2;
2830
+ getPlacement(ref: PlacementRef): WorkbenchModePlacementContribution | undefined;
2831
+ listPlacements(modeId?: string): WorkbenchModePlacementContribution[];
2832
+ openPlacement(input: OpenModePlacementTarget): PlacementIdentity;
2833
+ updatePlacement(identity: PlacementIdentity, input: {
2834
+ resource?: ResourceRef;
2835
+ title?: string;
2836
+ open?: PageOpenIntent;
2837
+ }): void;
2838
+ closePlacement(identity: PlacementIdentity): void;
2839
+ resolvePlacements(modeId: string, context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
2840
+ onDidChange(listener: () => void): Disposable_2;
2841
+ }
2842
+
2395
2843
  declare interface WorkbenchModeRegistry {
2396
2844
  store: WorkbenchStore<WorkbenchModeStoreState>;
2397
2845
  dispose(): void;
@@ -2425,77 +2873,7 @@ declare interface WorkbenchModuleContribution {
2425
2873
 
2426
2874
  declare type WorkbenchModuleContributionContext = WorkbenchModuleContext;
2427
2875
 
2428
- declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerWidget">;
2429
-
2430
- declare interface WorkbenchNavigationCommit {
2431
- modeId: string | undefined;
2432
- resource: ResourceRef | undefined;
2433
- replaceActive: boolean;
2434
- }
2435
-
2436
- declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
2437
-
2438
- declare interface WorkbenchNavigationEntry {
2439
- entryId: string;
2440
- recordedAt: number;
2441
- location: WorkbenchLocationRef;
2442
- selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
2443
- kind: "resource" | "view" | "widget" | "mode";
2444
- modeId?: string;
2445
- resource?: ResourceRef;
2446
- viewId?: string;
2447
- widgetId?: string;
2448
- contributionId?: string;
2449
- title?: string;
2450
- closedSubPanel?: WorkbenchClosedSubPanel;
2451
- }
2452
-
2453
- declare type WorkbenchNavigationResult = {
2454
- ok: true;
2455
- modeId: string | undefined;
2456
- resource: ResourceRef | undefined;
2457
- } | {
2458
- ok: false;
2459
- code: WorkbenchNavigationDiagnosticCode;
2460
- message: string;
2461
- };
2462
-
2463
- declare interface WorkbenchNavigationTarget {
2464
- modeId?: string;
2465
- resource?: ResourceRef;
2466
- replaceActive?: boolean;
2467
- }
2468
-
2469
- declare interface WorkbenchNavigator {
2470
- configure(hooks: WorkbenchNavigatorHostHooks): void;
2471
- getSelectedResource(): ResourceRef | undefined;
2472
- open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
2473
- commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
2474
- getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
2475
- forgetResource(uri: string): void;
2476
- onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
2477
- dispose(): void;
2478
- };
2479
- }
2480
-
2481
- declare interface WorkbenchNavigatorCommitInput {
2482
- modeId?: string | null;
2483
- resource?: ResourceRef | null;
2484
- replaceActive?: boolean;
2485
- present?: boolean;
2486
- }
2487
-
2488
- declare interface WorkbenchNavigatorHostHooks {
2489
- getProjectId?(): string | undefined;
2490
- getSelectedResource?(): ResourceRef | undefined;
2491
- interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
2492
- applySelection?(resource: ResourceRef | undefined): void;
2493
- applyScope?(commit: WorkbenchNavigationCommit): void;
2494
- applyBreadcrumb?(resource: ResourceRef | undefined): void;
2495
- presentResource?(resource: ResourceRef, input: {
2496
- replaceActive: boolean;
2497
- }): Promise<unknown> | unknown;
2498
- }
2876
+ declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
2499
2877
 
2500
2878
  declare interface WorkbenchNotification {
2501
2879
  id?: string;
@@ -2531,6 +2909,121 @@ declare interface WorkbenchNotificationStoreState {
2531
2909
  notifications: Record<string, RegisteredWorkbenchNotification>;
2532
2910
  }
2533
2911
 
2912
+ declare interface WorkbenchOverlayContribution extends Omit<WorkbenchPlacementPresentation, "mountStrategy"> {
2913
+ id: string;
2914
+ viewId: string;
2915
+ closable?: boolean;
2916
+ }
2917
+
2918
+ declare interface WorkbenchOverlayRegistry {
2919
+ registerOverlay(overlay: WorkbenchOverlayContribution): Disposable_2;
2920
+ getOverlay(id: string): WorkbenchOverlayContribution | undefined;
2921
+ listOverlays(): WorkbenchOverlayContribution[];
2922
+ openOverlay(id: string, input?: OpenWorkbenchOverlayInput): string;
2923
+ closeOverlay(instanceId: string): void;
2924
+ }
2925
+
2926
+ declare type WorkbenchOwnedPlacementItem = PlacementItem;
2927
+
2928
+ declare interface WorkbenchPageContribution {
2929
+ id: string;
2930
+ ref: PageRef;
2931
+ title?: Localizable<string>;
2932
+ icon?: string;
2933
+ path: string;
2934
+ modeId: string;
2935
+ parentId?: string;
2936
+ resource?: ResourceConstraint;
2937
+ main: WorkbenchPageMain;
2938
+ slots: readonly WorkbenchPageSlot[];
2939
+ }
2940
+
2941
+ declare interface WorkbenchPageLocationController {
2942
+ historyStore: WorkbenchStore<WorkbenchPageLocationHistoryState>;
2943
+ setProject(projectId: string): void;
2944
+ clearProject(): void;
2945
+ isCurrentProjectUrl(projectId: string): boolean;
2946
+ hasCurrentPageUrl(projectId: string): boolean;
2947
+ boot(projectId: string): WorkbenchPageNavigationResult;
2948
+ switchProject(projectId: string): WorkbenchPageNavigationResult;
2949
+ navigate(target: NavigationTargetPage_2): WorkbenchPageNavigationResult;
2950
+ replay(location: PageLocation): WorkbenchPageNavigationResult;
2951
+ navigateToParent(): WorkbenchPageNavigationResult;
2952
+ closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
2953
+ goBack(): void;
2954
+ goForward(): void;
2955
+ dispose(): void;
2956
+ }
2957
+
2958
+ declare interface WorkbenchPageLocationDiagnostic {
2959
+ code: "page-location-unresolved";
2960
+ source: "boot" | "history" | "navigation" | "project-switch";
2961
+ message: string;
2962
+ }
2963
+
2964
+ declare interface WorkbenchPageLocationHistoryState {
2965
+ canGoBack: boolean;
2966
+ canGoForward: boolean;
2967
+ }
2968
+
2969
+ declare type WorkbenchPageMain = PageMain extends infer Main ? Main extends PageMain ? Omit<Main, "tab"> & {
2970
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
2971
+ } : never : never;
2972
+
2973
+ declare type WorkbenchPageNavigationResult = {
2974
+ ok: true;
2975
+ location: PageLocation;
2976
+ } | {
2977
+ ok: false;
2978
+ diagnostic: WorkbenchPageLocationDiagnostic;
2979
+ };
2980
+
2981
+ declare interface WorkbenchPageRegistry<Value> {
2982
+ store: WorkbenchStore<WorkbenchPageRegistryStoreState<Value>>;
2983
+ registerPage(page: WorkbenchPageContribution): {
2984
+ dispose(): void;
2985
+ };
2986
+ getPage(pageId: string): WorkbenchPageContribution | undefined;
2987
+ listPages(): WorkbenchPageContribution[];
2988
+ pinPlacement(identity: PlacementIdentity): void;
2989
+ openSlot(input: WorkbenchPageSlotOpenInput): void;
2990
+ }
2991
+
2992
+ declare interface WorkbenchPageRegistryStoreState<Value> {
2993
+ pages: Readonly<Record<string, WorkbenchPageContribution>>;
2994
+ pageStates: Readonly<Record<string, WorkbenchPageRuntimeState>>;
2995
+ projectId?: string;
2996
+ location?: PageLocation;
2997
+ activeModeId?: string;
2998
+ activePageId?: string;
2999
+ placements: readonly ResolvedOwnedPlacement<Value>[];
3000
+ reconciliation: OwnedPlacementReconciliation<Value>;
3001
+ }
3002
+
3003
+ declare interface WorkbenchPageRuntimeState {
3004
+ openStaticSlotIds: readonly string[];
3005
+ resourceInstances: Readonly<Record<string, readonly WorkbenchPageSlotInstance[]>>;
3006
+ activePrimaryInstanceKey?: string;
3007
+ }
3008
+
3009
+ declare interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
3010
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
3011
+ }
3012
+
3013
+ declare interface WorkbenchPageSlotInstance {
3014
+ instanceKey: string;
3015
+ resource: ResourceRef;
3016
+ section?: FileRendererSectionTarget;
3017
+ open?: PageOpenIntent;
3018
+ }
3019
+
3020
+ declare interface WorkbenchPageSlotOpenInput {
3021
+ pageId: string;
3022
+ slotId: string;
3023
+ resource?: ResourceRef;
3024
+ open?: PageOpenIntent;
3025
+ }
3026
+
2534
3027
  declare interface WorkbenchPanelContribution {
2535
3028
  id: string;
2536
3029
  title: string;
@@ -2541,16 +3034,15 @@ declare interface WorkbenchPanelContribution {
2541
3034
  singleton?: boolean;
2542
3035
  reuse?: WorkbenchPanelReusePolicy;
2543
3036
  mountStrategy?: WorkbenchPanelMountStrategy;
3037
+ closable?: boolean;
2544
3038
  hiddenByDefault?: boolean;
2545
- subPanelsOnly?: boolean;
2546
3039
  regionSize?: WorkbenchRegionSize;
2547
3040
  regionCollapsible?: boolean;
2548
3041
  headerBorderBottom?: boolean;
2549
- floatingPanels?: WorkbenchFloatingPanelVisibility;
2550
3042
  resourceKinds?: string[];
2551
3043
  eligibleLocations?: WorkbenchLocationEligibility;
2552
3044
  priority?: number;
2553
- openCommandId?: string;
3045
+ openCommand?: WorkbenchCommandTarget;
2554
3046
  tab?: WorkbenchPanelTab;
2555
3047
  config?: unknown;
2556
3048
  canOpen?(resource: ResourceRef): boolean;
@@ -2562,12 +3054,14 @@ declare interface WorkbenchPanelContribution {
2562
3054
  declare interface WorkbenchPanelInstance {
2563
3055
  instanceId: string;
2564
3056
  panelId: string;
3057
+ placementIdentity?: PlacementIdentity;
2565
3058
  viewId?: string;
2566
3059
  ownerId?: string;
2567
3060
  source?: ContributionSource;
2568
3061
  resource?: ResourceRef;
2569
- resourceUri?: string;
2570
- ownerResourceUri?: string;
3062
+ section?: FileRendererSectionTarget;
3063
+ resourceKey?: string;
3064
+ ownerResourceKey?: string;
2571
3065
  title?: string;
2572
3066
  pinned?: boolean;
2573
3067
  closable: boolean;
@@ -2577,24 +3071,6 @@ declare interface WorkbenchPanelInstance {
2577
3071
  tab?: WorkbenchPanelTab;
2578
3072
  }
2579
3073
 
2580
- declare interface WorkbenchPanelInstance_2 {
2581
- instanceId: string;
2582
- panelId: string;
2583
- viewId?: string;
2584
- ownerId?: string;
2585
- source?: ContributionSource_2;
2586
- resource?: ResourceRef_2;
2587
- resourceUri?: string;
2588
- ownerResourceUri?: string;
2589
- title?: string;
2590
- pinned?: boolean;
2591
- closable: boolean;
2592
- mountStrategy?: WorkbenchPanelMountStrategy_2;
2593
- hiddenByDefault?: boolean;
2594
- tabRetention?: WorkbenchTabRetention_2;
2595
- tab?: WorkbenchPanelTab_2;
2596
- }
2597
-
2598
3074
  declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2599
3075
  region: WorkbenchPanelMenuRegion;
2600
3076
  fallbackRegion?: WorkbenchPanelMenuRegion;
@@ -2642,15 +3118,25 @@ declare const workbenchPanelMenuRegions: {
2642
3118
  };
2643
3119
  };
2644
3120
 
2645
- declare interface WorkbenchPanelMenusContribution {
2646
- panelMenus?: readonly WorkbenchPanelMenuDefinition[];
3121
+ declare type WorkbenchPanelMenuSide = "left" | "right";
3122
+
3123
+ declare interface WorkbenchPanelMenuState {
3124
+ openByMenuId: Record<string, boolean>;
2647
3125
  }
2648
3126
 
2649
- declare type WorkbenchPanelMenuSide = "left" | "right";
3127
+ declare type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
2650
3128
 
2651
- declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
3129
+ declare interface WorkbenchPanelMenuStateController {
3130
+ store: WorkbenchStore<WorkbenchPanelMenuState>;
3131
+ isOpen(menuId: string): boolean;
3132
+ setOpen(menuId: string, open: boolean): void;
3133
+ toggle(menuId: string): void;
3134
+ setPersistenceScope(scope: string | undefined): void;
3135
+ getPersistenceScope(): string | undefined;
3136
+ onDidChange(listener: WorkbenchPanelMenuStateChangeListener): Disposable_2;
3137
+ }
2652
3138
 
2653
- declare type WorkbenchPanelMountStrategy_2 = WidgetMountStrategy_2;
3139
+ declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
2654
3140
 
2655
3141
  declare type WorkbenchPanelOpenStrategy = {
2656
3142
  kind: "persistent";
@@ -2679,29 +3165,41 @@ declare interface WorkbenchPanelRenderInput {
2679
3165
 
2680
3166
  declare type WorkbenchPanelReusePolicy = WidgetReusePolicy;
2681
3167
 
2682
- declare type WorkbenchPanelsChangeListener = (state: WorkbenchPanelsState) => void;
3168
+ declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2683
3169
 
2684
- declare interface WorkbenchPanelsController {
2685
- store: WorkbenchStore<WorkbenchPanelsState>;
2686
- isOpen(regionId: string): boolean;
2687
- setOpen(regionId: string, open: boolean): void;
2688
- toggle(regionId: string): void;
2689
- setPersistenceScope(scope: string | undefined): void;
2690
- getPersistenceScope(): string | undefined;
2691
- onDidChange(listener: WorkbenchPanelsChangeListener): Disposable_2;
3170
+ declare interface WorkbenchPlaceholderContribution {
3171
+ id: string;
3172
+ viewId: string;
3173
+ title?: string;
3174
+ region: WorkbenchRegion;
3175
+ regionSize?: WorkbenchRegionSize;
3176
+ regionCollapsible?: boolean;
3177
+ config?: unknown;
2692
3178
  }
2693
3179
 
2694
- declare interface WorkbenchPanelsState {
2695
- openByRegionId: Record<string, boolean>;
3180
+ declare interface WorkbenchPlaceholderRegistry {
3181
+ registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable_2;
2696
3182
  }
2697
3183
 
2698
- declare type WorkbenchPanelTab = WorkbenchWidgetTab;
3184
+ declare interface WorkbenchPlacementPresentation {
3185
+ mountStrategy?: WidgetMountStrategy;
3186
+ hiddenByDefault?: boolean;
3187
+ headerBorderBottom?: boolean;
3188
+ tab?: WorkbenchPanelTab;
3189
+ config?: unknown;
3190
+ }
2699
3191
 
2700
- declare type WorkbenchPanelTab_2 = WorkbenchWidgetTab_2;
3192
+ declare interface WorkbenchReactViewBody {
3193
+ kind: "react";
3194
+ render: WorkbenchRendererRegistration["render"];
3195
+ }
2701
3196
 
2702
3197
  declare type WorkbenchRegion = (typeof workbenchRegions)[number];
2703
3198
 
2704
- 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"];
3199
+ 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"];
3200
+
3201
+ /** Region-level layout policy owned by the active mode or the host, never by a placement. */
3202
+ declare type WorkbenchRegionSettings = ModeRegionSettings;
2705
3203
 
2706
3204
  declare interface WorkbenchRegionSize {
2707
3205
  defaultPx?: number;
@@ -2717,35 +3215,9 @@ declare interface WorkbenchRegionState {
2717
3215
  activeWidgetId?: string;
2718
3216
  }
2719
3217
 
2720
- declare type WorkbenchRendererChangeListener = () => void;
2721
-
2722
- declare type WorkbenchRendererRegistration = {
3218
+ declare interface WorkbenchRendererRegistration {
2723
3219
  id: string;
2724
- keepAlive?: false;
2725
3220
  render: (input: WorkbenchPanelRenderInput) => unknown;
2726
- } | {
2727
- id: string;
2728
- keepAlive: true;
2729
- render: () => unknown;
2730
- };
2731
-
2732
- declare interface WorkbenchRendererRegistry {
2733
- store: WorkbenchStore<WorkbenchRendererStoreState>;
2734
- registerRenderer(renderer: WorkbenchRendererRegistration): Disposable_2;
2735
- getRenderer(id: string): WorkbenchRendererRegistration | undefined;
2736
- listRenderers(): WorkbenchRendererRegistration[];
2737
- onDidChange(listener: WorkbenchRendererChangeListener): Disposable_2;
2738
- claim(rendererId: string, slot: HTMLElement, input: WorkbenchPanelRenderInput): Disposable_2;
2739
- getHost(rendererId: string): HTMLElement | undefined;
2740
- getClaim(rendererId: string): WorkbenchPanelRenderInput | undefined;
2741
- }
2742
-
2743
- declare type WorkbenchRenderers = WorkbenchRendererRegistry & TreeRendererRegistry & KanbanRendererRegistry & DataTableRendererRegistry & FileRendererRegistry & ControlsRendererRegistry;
2744
-
2745
- declare interface WorkbenchRendererStoreState {
2746
- renderers: Record<string, WorkbenchRendererRegistration>;
2747
- hosts: Record<string, RegisteredKeepAliveHost>;
2748
- claims: Record<string, WorkbenchPanelRenderInput>;
2749
3221
  }
2750
3222
 
2751
3223
  declare interface WorkbenchShellController {
@@ -2757,7 +3229,29 @@ declare interface WorkbenchShellController {
2757
3229
  onDidChange(listener: () => void): Disposable_2;
2758
3230
  }
2759
3231
 
2760
- declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | WorkbenchPanelMenuRegion;
3232
+ declare type WorkbenchShellOpenRegion = "sidenav" | "secondary" | "side";
3233
+
3234
+ declare interface WorkbenchShellPlacementContribution extends WorkbenchPlacementPresentation {
3235
+ readonly id: string;
3236
+ readonly item: WorkbenchOwnedPlacementItem;
3237
+ readonly region: WorkbenchRegion;
3238
+ readonly order?: number;
3239
+ }
3240
+
3241
+ declare interface WorkbenchShellPlacementRegistry {
3242
+ registerPlacement(placement: WorkbenchShellPlacementContribution): Disposable_2;
3243
+ getPlacement(placementId: string): WorkbenchShellPlacementContribution | undefined;
3244
+ listPlacements(): WorkbenchShellPlacementContribution[];
3245
+ openPlacement(input: OpenWorkbenchShellPlacementInput): PlacementIdentity;
3246
+ updatePlacement(identity: PlacementIdentity, input: {
3247
+ resource?: ResourceRef;
3248
+ title?: string;
3249
+ open?: PageOpenIntent;
3250
+ }): void;
3251
+ closePlacement(identity: PlacementIdentity): void;
3252
+ resolvePlacements(context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
3253
+ onDidChange(listener: () => void): Disposable_2;
3254
+ }
2761
3255
 
2762
3256
  declare interface WorkbenchShellRegionState {
2763
3257
  open: boolean;
@@ -2767,6 +3261,7 @@ declare interface WorkbenchShellRegionState {
2767
3261
  declare type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
2768
3262
 
2769
3263
  declare interface WorkbenchSidePanelController {
3264
+ canFloat(): boolean;
2770
3265
  store: WorkbenchStore<WorkbenchSidePanelState>;
2771
3266
  getMode(): WorkbenchSidePanelMode;
2772
3267
  setMode(mode: WorkbenchSidePanelMode): void;
@@ -2847,15 +3342,26 @@ declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
2847
3342
 
2848
3343
  declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
2849
3344
 
2850
- declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2851
- region: WorkbenchPanelRegion;
2852
- fallbackRegion?: WorkbenchPanelRegion;
2853
- } & WorkbenchPanelMenusContribution;
3345
+ declare type WorkbenchTabAction = ({
3346
+ kind: "command";
3347
+ } & WorkbenchCommandTarget) | {
3348
+ kind: "navigation";
3349
+ target: NavigationTarget;
3350
+ };
2854
3351
 
2855
- declare interface WorkbenchSubPanelRef {
2856
- contributionId: string;
2857
- resourceUri?: string;
2858
- instanceKey?: string;
3352
+ declare interface WorkbenchTabMenuGroup {
3353
+ id: string;
3354
+ rows: readonly WorkbenchTabMenuRow[];
3355
+ }
3356
+
3357
+ declare interface WorkbenchTabMenuRow {
3358
+ id: string;
3359
+ label: string;
3360
+ icon?: string;
3361
+ iconColor?: string;
3362
+ selected?: boolean;
3363
+ disabled?: boolean;
3364
+ action?: WorkbenchTabAction;
2859
3365
  }
2860
3366
 
2861
3367
  declare type WorkbenchTabPosition = "start" | "end" | {
@@ -2866,7 +3372,16 @@ declare type WorkbenchTabPosition = "start" | "end" | {
2866
3372
 
2867
3373
  declare type WorkbenchTabRetention = "preview" | "persistent";
2868
3374
 
2869
- declare type WorkbenchTabRetention_2 = "preview" | "persistent";
3375
+ declare interface WorkbenchTabSnapshot {
3376
+ label?: string;
3377
+ icon?: string;
3378
+ indicator?: {
3379
+ icon: string;
3380
+ color?: string;
3381
+ label?: string;
3382
+ };
3383
+ menu?: readonly WorkbenchTabMenuGroup[];
3384
+ }
2870
3385
 
2871
3386
  declare interface WorkbenchTerminalController {
2872
3387
  store: WorkbenchStore<WorkbenchTerminalState>;
@@ -2956,17 +3471,15 @@ declare interface WorkbenchThemeStoreState {
2956
3471
  themes: readonly ThemePreferenceOption[];
2957
3472
  }
2958
3473
 
3474
+ declare type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
3475
+
3476
+ declare type WorkbenchViewBody = WorkbenchReactViewBody | NativeViewBody<"tree", TreeRendererContribution> | NativeViewBody<"file", FileRendererContribution> | NativeViewBody<"controls", ControlsRendererContribution> | NativeViewBody<"kanban", KanbanRendererContribution> | NativeViewBody<"dataTable", DataTableRendererContribution>;
3477
+
2959
3478
  declare interface WorkbenchViewContribution {
2960
3479
  id: string;
2961
- panelId: string;
2962
- title?: string;
3480
+ title: string;
2963
3481
  icon?: string;
2964
- path?: string;
2965
- pathAliases?: readonly string[];
2966
- aliases?: readonly string[];
2967
- resource?: ResourceRef;
2968
- canResolve?(): boolean;
2969
- resolveInput?(input: OpenWorkbenchViewInput): OpenWorkbenchPanelInput;
3482
+ body: WorkbenchViewBody;
2970
3483
  }
2971
3484
 
2972
3485
  declare interface WorkbenchViewHierarchyNode {
@@ -2976,10 +3489,25 @@ declare interface WorkbenchViewHierarchyNode {
2976
3489
  icon?: string;
2977
3490
  }
2978
3491
 
2979
- declare interface WorkbenchViewOpenEvent {
3492
+ declare interface WorkbenchViewMenuContribution {
3493
+ id: string;
3494
+ ownerViewId: string;
2980
3495
  viewId: string;
2981
- input: OpenWorkbenchViewInput;
2982
- instance: WorkbenchPanelInstance;
3496
+ side: "left" | "right";
3497
+ priority?: number;
3498
+ mountStrategy?: "active" | "keep-mounted";
3499
+ hiddenByDefault?: boolean;
3500
+ regionSize?: WorkbenchRegionSize;
3501
+ regionCollapsible?: boolean;
3502
+ headerBorderBottom?: boolean;
3503
+ config?: unknown;
3504
+ }
3505
+
3506
+ declare interface WorkbenchViewMenuRegistry {
3507
+ registerViewMenu(menu: WorkbenchViewMenuContribution): Disposable_2;
3508
+ getViewMenu(id: string): WorkbenchViewMenuContribution | undefined;
3509
+ listViewMenus(ownerViewId?: string): WorkbenchViewMenuContribution[];
3510
+ definitionsFor(ownerViewId: string, placementId: string): readonly WorkbenchPanelMenuDefinition[];
2983
3511
  }
2984
3512
 
2985
3513
  declare interface WorkbenchViewRegistry {
@@ -2987,32 +3515,24 @@ declare interface WorkbenchViewRegistry {
2987
3515
  registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
2988
3516
  getView(viewId: string): RegisteredWorkbenchView | undefined;
2989
3517
  listViews(): RegisteredWorkbenchView[];
2990
- resolveViewId(viewId: string): string | undefined;
2991
- resolvePath(path: string): {
2992
- kind: "view";
2993
- viewId: string;
2994
- } | undefined;
2995
- canResolveView(viewId: string): boolean;
2996
- isOpeningView(): boolean;
2997
- openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<WorkbenchPanelInstance>;
2998
- onDidOpenView(listener: (event: WorkbenchViewOpenEvent) => void): Disposable_2;
3518
+ refreshView(viewId: string, input?: unknown): void;
2999
3519
  }
3000
3520
 
3001
3521
  declare interface WorkbenchViewRegistryStoreState {
3002
3522
  views: Record<string, RegisteredWorkbenchView>;
3003
- aliases: Record<string, string>;
3004
- paths: Record<string, string>;
3005
3523
  }
3006
3524
 
3007
3525
  declare interface WorkbenchWidgetPlacement {
3008
3526
  widgetId: string;
3009
3527
  contributionId: string;
3528
+ placementIdentity?: PlacementIdentity;
3010
3529
  viewId?: string;
3011
3530
  ownerId?: string;
3012
3531
  source?: ContributionSource;
3013
3532
  resource?: ResourceRef;
3014
- resourceUri?: string;
3015
- ownerResourceUri?: string;
3533
+ section?: FileRendererSectionTarget;
3534
+ resourceKey?: string;
3535
+ ownerResourceKey?: string;
3016
3536
  title?: string;
3017
3537
  pinned?: boolean;
3018
3538
  closable?: boolean;
@@ -3026,15 +3546,11 @@ declare interface WorkbenchWidgetPlacement {
3026
3546
  declare type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
3027
3547
 
3028
3548
  declare interface WorkbenchWidgetTab {
3029
- contentRendererId?: string;
3030
- /** Custom actions shown when the user activates an already-active tab. */
3031
- customMenuRendererId?: string;
3032
- }
3033
-
3034
- declare interface WorkbenchWidgetTab_2 {
3035
- contentRendererId?: string;
3036
- /** Custom actions shown when the user activates an already-active tab. */
3037
- customMenuRendererId?: string;
3549
+ getSnapshot(instance: WorkbenchPanelInstance): WorkbenchTabSnapshot;
3550
+ subscribe?(listener: () => void): {
3551
+ dispose(): void;
3552
+ } | (() => void);
3553
+ refreshEvents?: readonly string[];
3038
3554
  }
3039
3555
 
3040
3556
  declare interface WorkflowStatus {
@@ -3044,7 +3560,7 @@ declare interface WorkflowStatus {
3044
3560
  icon?: string | null;
3045
3561
  sortOrder: number;
3046
3562
  isDefault?: boolean;
3047
- board?: WorkflowStatusBoardRules;
3563
+ actions?: readonly string[];
3048
3564
  }
3049
3565
 
3050
3566
  declare interface WorkflowStatusAction {
@@ -3053,11 +3569,4 @@ declare interface WorkflowStatusAction {
3053
3569
  icon?: string;
3054
3570
  }
3055
3571
 
3056
- declare interface WorkflowStatusBoardRules {
3057
- canCreate?: boolean;
3058
- canDragIn?: boolean;
3059
- canDragOut?: boolean;
3060
- actions?: readonly string[];
3061
- }
3062
-
3063
3572
  export { }