@pstdio/workbench 0.7.1 → 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 +1492 -698
  3. package/dist/extensions.js +1679 -1776
  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 +724 -599
  8. package/dist/index.js +5151 -2369
  9. package/dist/index.js.map +1 -1
  10. package/dist/react.d.ts +673 -550
  11. package/dist/react.js +3585 -3335
  12. package/dist/react.js.map +1 -1
  13. package/dist/storage.d.ts +120 -155
  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/icon-B9XolQG8.js +0 -35
  33. package/dist/icon-B9XolQG8.js.map +0 -1
  34. package/dist/layout-types-DMoZz38-.js +0 -100
  35. package/dist/layout-types-DMoZz38-.js.map +0 -1
  36. package/dist/surface-map-C1pOTUmF.js +0 -52
  37. package/dist/surface-map-C1pOTUmF.js.map +0 -1
  38. package/dist/testing.d.ts +0 -2284
  39. package/dist/testing.js +0 -58
  40. package/dist/testing.js.map +0 -1
  41. package/dist/workbench-built-ins-BncLJfQA.js +0 -1175
  42. package/dist/workbench-built-ins-BncLJfQA.js.map +0 -1
  43. package/dist/workbench-menu-paths-Bb0ICxeG.js +0 -20
  44. package/dist/workbench-menu-paths-Bb0ICxeG.js.map +0 -1
@@ -1,22 +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 { 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';
4
8
  import { ExtensionCommandPaletteContribution } from '@pstdio/sdk/api';
5
9
  import { ExtensionMenuContribution } from '@pstdio/sdk/api';
6
- import { HostCapability } from 'pstdio-extensions/bridge/contract';
7
- import { HostCapabilityRegistry } from 'pstdio-extensions/bridge/contract';
8
- import { HostEventPublisher } from 'pstdio-extensions/bridge/host';
10
+ import { FileRendererSectionTarget } from '@pstdio/sdk/extensions';
9
11
  import { JSX } from 'react/jsx-runtime';
12
+ import { KanbanRendererAttributeDisplay } from '@pstdio/sdk/extensions';
10
13
  import { Localizable } from '@pstdio/sdk/extensions';
14
+ import { ModeRegionSettings } from '@pstdio/sdk/extensions';
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';
11
26
  import { ReactNode } from 'react';
12
- 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';
13
30
  import { WorkbenchExtensionCommandPaletteResourceRecord } from '@pstdio/sdk/api';
14
- import { WorkbenchExtensionControlsRendererRecord } from '@pstdio/sdk/api';
15
- import { WorkbenchExtensionDataTableRendererRecord } from 'pstdio-api-contracts';
16
- import { WorkbenchExtensionKanbanRendererRecord } from '@pstdio/sdk/api';
17
31
  import { WorkbenchExtensionMetadata } from '@pstdio/sdk/api';
32
+ import { z } from 'zod';
18
33
 
19
- declare interface AttributeDescriptor {
34
+ declare interface AttributeDescriptor<TNode = unknown> {
20
35
  id: string;
21
36
  label: string;
22
37
  type: AttributeType;
@@ -26,22 +41,19 @@ declare interface AttributeDescriptor {
26
41
  displayable?: boolean;
27
42
  editable?: boolean;
28
43
  display?: AttributeDisplayDescriptor;
29
- render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
44
+ render?: (value: unknown, row: KanbanRendererRow) => TNode;
30
45
  compare?: (a: unknown, b: unknown) => number;
31
46
  }
32
47
 
33
- declare type AttributeDisplayDescriptor = {
34
- kind: "workspace-badge";
35
- itemsAttributeId: string;
36
- };
48
+ declare type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
37
49
 
38
50
  /**
39
51
  * Reactive source for an entire attribute schema. Lets a contribution
40
52
  * add/remove/edit attributes at runtime without re-registering.
41
53
  */
42
- declare interface AttributesSource {
54
+ declare interface AttributesSource<TNode = unknown> {
43
55
  subscribe: (listener: () => void) => () => void;
44
- getSnapshot: () => AttributeDescriptor[];
56
+ getSnapshot: () => AttributeDescriptor<TNode>[];
45
57
  }
46
58
 
47
59
  declare type AttributeType = {
@@ -60,26 +72,22 @@ declare type AttributeType = {
60
72
  kind: "user";
61
73
  };
62
74
 
63
- declare interface BoardColumnAction {
75
+ declare interface BoardColumnAction<TIcon = unknown> {
64
76
  id: string;
65
77
  label: string;
66
- icon: ComponentType<{
67
- size?: number | string;
68
- }>;
78
+ icon: TIcon;
69
79
  }
70
80
 
71
81
  /** Board-column behavior and menu configuration for a resolved column group. */
72
- declare interface BoardColumnConfig {
82
+ declare interface BoardColumnConfig<TIcon = unknown> {
73
83
  /** Color palette token used for the column header and group badges. */
74
84
  color?: string;
75
85
  canDragIn?: boolean;
76
86
  canDragOut?: boolean;
77
87
  canCreate?: boolean;
78
- actions?: BoardColumnAction[];
88
+ actions?: BoardColumnAction<TIcon>[];
79
89
  }
80
90
 
81
- export declare const BRIDGE_WEBVIEW_RENDERER_ID = "webview:bridge";
82
-
83
91
  export declare interface BridgeWebviewConfig {
84
92
  title?: string;
85
93
  runtimeUrl: string;
@@ -97,24 +105,22 @@ export declare interface BridgeWebviewRenderContext {
97
105
  }
98
106
 
99
107
  export declare const buildWorkbenchExtensionCommandPaletteRegistrations: (input: {
100
- metadata: WorkbenchExtensionMetadata;
108
+ metadata: CommandContributionMetadata;
101
109
  createCommandId?: (contribution: ExtensionCommandPaletteContribution) => string;
102
110
  resolveString?: WorkbenchExtensionStringResolver;
103
111
  }) => WorkbenchExtensionCommandPaletteRegistration[];
104
112
 
105
113
  export declare const buildWorkbenchExtensionMenuRegistrations: (input: {
106
- metadata: WorkbenchExtensionMetadata;
114
+ metadata: CommandContributionMetadata;
107
115
  menuSlotsById: ReadonlyMap<string, WorkbenchExtensionMenuSlotConfig>;
108
116
  menuTargetsById?: ReadonlyMap<string, WorkbenchExtensionMenuSlotConfig>;
109
117
  createCommandId?: (contribution: ExtensionMenuContribution) => string;
110
118
  createWhenExpression?: WorkbenchExtensionMenuWhenBuilder;
111
119
  resolveString?: WorkbenchExtensionStringResolver;
112
- }) => WorkbenchExtensionMenuRegistration[];
113
-
114
- export declare const buildWorkbenchExtensionRouteEntries: (input: {
115
- metadata: WorkbenchExtensionMetadata | undefined;
116
- createResource: (resourceInput: WorkbenchExtensionRouteResourceInput) => ResourceRef;
117
- }) => any;
120
+ }) => {
121
+ registrations: WorkbenchExtensionMenuRegistration[];
122
+ unresolved: UnresolvedWorkbenchExtensionMenuContribution[];
123
+ };
118
124
 
119
125
  /**
120
126
  * A data-driven list of items, each opening a contributor-supplied editor. The
@@ -122,12 +128,12 @@ export declare const buildWorkbenchExtensionRouteEntries: (input: {
122
128
  */
123
129
  declare interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
124
130
  kind: "collection";
131
+ viewId: string;
125
132
  items(): TItem[] | Promise<TItem[]>;
126
133
  itemId(item: TItem): string;
127
134
  itemLabel(item: TItem): string;
128
135
  itemIcon?(item: TItem): string | undefined;
129
136
  groupBy?: SettingsCollectionGroupBy<TItem>;
130
- renderItem(item: TItem, input: WorkbenchPanelRenderInput): unknown;
131
137
  actions?: SettingsAction[];
132
138
  }
133
139
 
@@ -141,6 +147,8 @@ declare interface Command {
141
147
  params?: CommandParamSchema;
142
148
  }
143
149
 
150
+ declare type CommandContributionMetadata = Pick<WorkbenchExtensionMetadata, "commands" | "commandPaletteContributions" | "menuContributions">;
151
+
144
152
  declare interface CommandHandler<TArgs = unknown, TResult = unknown> {
145
153
  prepareArgs?(args: TArgs, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: TArgs) => void): TArgs | Promise<TArgs>;
146
154
  execute(args: TArgs, context?: WorkbenchCommandExecutionContext): TResult | Promise<TResult>;
@@ -202,6 +210,7 @@ declare interface CommandParamDescriptor {
202
210
  accept?: string;
203
211
  multiple?: boolean;
204
212
  metadata?: Record<string, unknown>;
213
+ resolvedFrom?: "resource";
205
214
  }
206
215
 
207
216
  declare interface CommandParamOption {
@@ -229,72 +238,6 @@ declare interface CommandRegistryStoreState {
229
238
  commands: Record<string, RegisteredCommand>;
230
239
  }
231
240
 
232
- declare interface CompositionDiagnostic {
233
- 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";
234
- message: string;
235
- panelId?: string;
236
- slot?: string;
237
- }
238
-
239
- declare interface CompositionModeDefinition {
240
- id: string;
241
- extensionId?: string;
242
- resources?: Record<string, CompositionModeRecipe>;
243
- modePanels?: Record<string, CompositionPlacementPolicy>;
244
- }
245
-
246
- declare interface CompositionModeRecipe {
247
- slots?: Record<string, CompositionPlacementPolicy>;
248
- panels?: Record<string, CompositionPlacementPolicy>;
249
- }
250
-
251
- declare interface CompositionPanelDefinition {
252
- id: string;
253
- extensionId: string;
254
- title: string;
255
- icon?: string;
256
- show?: CompositionPanelPlacement | readonly CompositionPanelPlacement[];
257
- }
258
-
259
- declare interface CompositionPanelPlacement extends CompositionPlacementPolicy {
260
- resourceKind?: string;
261
- }
262
-
263
- declare interface CompositionPlacementPolicy {
264
- region: DockedCompositionRegion;
265
- allowedRegions?: readonly DockedCompositionRegion[];
266
- required?: boolean;
267
- defaultOpen?: boolean;
268
- pinned?: boolean;
269
- }
270
-
271
- declare interface CompositionReconcileContext {
272
- layout: LayoutModel;
273
- notifications: NotificationRegistry;
274
- }
275
-
276
- export declare const compositionRequiredNotificationId: (modeId: string) => string;
277
-
278
- declare interface CompositionResourceKindDefinition {
279
- id: string;
280
- extensionId: string;
281
- surface: "primary" | "secondary" | "attached";
282
- slots: Record<string, CompositionSlotDefinition>;
283
- }
284
-
285
- declare interface CompositionResourcePanelEdge {
286
- id: string;
287
- extensionId: string;
288
- resourceKind: string;
289
- panel: string;
290
- slot: string;
291
- }
292
-
293
- declare interface CompositionSlotDefinition {
294
- cardinality: "one" | "many";
295
- external: boolean;
296
- }
297
-
298
241
  declare interface ContextKeyScope extends Disposable_2 {
299
242
  ownerId: string;
300
243
  set(key: string, value: ContextKeyValue): void;
@@ -327,20 +270,11 @@ declare interface ContributionMetadata {
327
270
 
328
271
  declare type ContributionSource = "module" | "extension";
329
272
 
330
- declare type ContributionSource_2 = "module" | "extension";
331
-
332
273
  declare interface ControlsApplyInput {
333
- values: Record<string, unknown>;
274
+ values: ControlValueMap;
334
275
  resource?: ResourceRef;
335
276
  }
336
277
 
337
- declare interface ControlsQueryResult {
338
- params?: unknown[];
339
- groups?: unknown[];
340
- values?: Record<string, unknown>;
341
- readOnly?: boolean;
342
- }
343
-
344
278
  declare interface ControlsRendererContribution {
345
279
  id: string;
346
280
  title: string;
@@ -348,7 +282,7 @@ declare interface ControlsRendererContribution {
348
282
  emptyTitle?: string;
349
283
  emptyDescription?: string;
350
284
  layout?: ControlsRendererLayout;
351
- defaultValues?: Record<string, unknown>;
285
+ defaultValues?: ControlValueMap;
352
286
  /** Load the control declarations + current values for the active resource. */
353
287
  executeQuery(resource?: ResourceRef): Promise<ControlsQueryResult> | ControlsQueryResult;
354
288
  /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
@@ -360,10 +294,6 @@ declare interface ControlsRendererContribution {
360
294
  subscribe?: (listener: () => void) => Disposable_2 | (() => void);
361
295
  }
362
296
 
363
- declare type ControlsRendererImplementation = (input: WorkbenchPanelRenderInput & {
364
- controlsRendererId: string;
365
- }) => unknown;
366
-
367
297
  declare interface ControlsRendererLayout {
368
298
  region?: ControlsRendererRegion;
369
299
  defaultPx?: number;
@@ -371,28 +301,8 @@ declare interface ControlsRendererLayout {
371
301
  maxPx?: number;
372
302
  }
373
303
 
374
- declare interface ControlsRendererRefreshEvent {
375
- controlsRendererId: string;
376
- }
377
-
378
- declare type ControlsRendererRefreshListener = (event: ControlsRendererRefreshEvent) => void;
379
-
380
304
  declare type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
381
305
 
382
- declare interface ControlsRendererRegistry {
383
- controlsStore: WorkbenchStore<ControlsRendererStoreState>;
384
- registerControlsRenderer(contribution: ControlsRendererContribution, metadata?: ContributionMetadata): Disposable_2;
385
- setControlsRendererImplementation(impl: ControlsRendererImplementation): void;
386
- getControlsRenderer(id: string): RegisteredControlsRendererContribution | undefined;
387
- listControlsRenderers(): RegisteredControlsRendererContribution[];
388
- refreshControlsRenderer(id: string): void;
389
- onDidRefreshControlsRenderer(listener: ControlsRendererRefreshListener): Disposable_2;
390
- }
391
-
392
- declare interface ControlsRendererStoreState {
393
- renderers: Record<string, RegisteredControlsRendererContribution>;
394
- }
395
-
396
306
  declare interface ControlsResetInput {
397
307
  controlIds?: string[];
398
308
  resource?: ResourceRef;
@@ -400,28 +310,15 @@ declare interface ControlsResetInput {
400
310
 
401
311
  declare interface ControlsUpdateValueInput {
402
312
  controlId: string;
403
- value: unknown;
404
- values: Record<string, unknown>;
313
+ value: ControlValue;
314
+ values: ControlValueMap;
405
315
  resource?: ResourceRef;
406
316
  }
407
317
 
408
- declare type ControlsViewRecord = WorkbenchExtensionMetadata["panels"][number];
409
-
410
318
  export declare type CreateBridgeWebviewHostCapabilities = (context: BridgeWebviewRenderContext) => HostCapabilityRegistry;
411
319
 
412
320
  export declare type CreateBridgeWebviewProps = (context: BridgeWebviewRenderContext) => unknown;
413
321
 
414
- export declare const createBridgeWebviewRenderer: (input?: CreateBridgeWebviewRendererInput) => {
415
- id: string;
416
- render: (renderInput: WorkbenchPanelRenderInput) => JSX.Element | null;
417
- };
418
-
419
- declare interface CreateBridgeWebviewRendererInput {
420
- createHostCapabilities?: CreateBridgeWebviewHostCapabilities;
421
- createProps?: CreateBridgeWebviewProps;
422
- createTheme?: CreateBridgeWebviewTheme;
423
- }
424
-
425
322
  export declare type CreateBridgeWebviewTheme = (context: BridgeWebviewRenderContext) => ThemePreference_2;
426
323
 
427
324
  /**
@@ -437,12 +334,10 @@ declare interface CreateTerminalSessionCapabilityInput {
437
334
  hostEvents: HostEventPublisher;
438
335
  }
439
336
 
440
- export declare const createWorkbenchCompositionRegistry: () => WorkbenchCompositionRegistry;
441
-
442
337
  export declare const createWorkbenchWebviewHostCapabilities: (input: CreateWorkbenchWebviewHostCapabilitiesInput) => {
443
338
  "terminal.session"?: HostCapability | undefined;
444
339
  "commands.execute": (params: unknown) => Promise<unknown>;
445
- "resource.open": (params: unknown) => Promise<WorkbenchPanelInstance_2>;
340
+ "navigation.open": (params: unknown) => Promise<readonly unknown[]>;
446
341
  "notification.show": (params: unknown) => RegisteredWorkbenchNotification;
447
342
  "preferences.get": (params: unknown) => PreferenceValue | undefined;
448
343
  "preferences.set": (params: unknown) => {
@@ -450,24 +345,17 @@ export declare const createWorkbenchWebviewHostCapabilities: (input: CreateWorkb
450
345
  value: PreferenceValue;
451
346
  };
452
347
  "host.dispatchKeyboardEvent": (params: unknown) => void;
348
+ "placement.close"?: ((params: unknown) => void) | undefined;
453
349
  };
454
350
 
455
351
  declare interface CreateWorkbenchWebviewHostCapabilitiesInput {
456
352
  dispatchKeyboardEvent?: (event: KeyboardEventInit) => void;
457
353
  workbench: WorkbenchCore;
354
+ placement?: WorkbenchPanelInstance;
458
355
  /** Event channel into the guest; terminal.session is only offered when present. */
459
356
  hostEvents?: HostEventPublisher;
460
357
  }
461
358
 
462
- /**
463
- * Renders its own page. `render` returns `unknown` so core stays React-free — the
464
- * React layer treats the result as a node, exactly like WorkbenchRendererRegistration.
465
- */
466
- declare interface CustomSettingsPanel extends SettingsPanelBase {
467
- kind: "custom";
468
- render(input: WorkbenchPanelRenderInput): unknown;
469
- }
470
-
471
359
  declare interface DataTableRendererColumn {
472
360
  id: string;
473
361
  label?: string;
@@ -521,10 +409,6 @@ declare interface DataTableRendererContribution {
521
409
  onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
522
410
  }
523
411
 
524
- declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
525
- dataTableRendererId: string;
526
- }) => unknown;
527
-
528
412
  declare interface DataTableRendererQueryContext {
529
413
  resource?: ResourceRef;
530
414
  modeId?: string;
@@ -535,20 +419,6 @@ declare interface DataTableRendererQueryResult {
535
419
  columns?: DataTableRendererColumn[];
536
420
  }
537
421
 
538
- declare interface DataTableRendererRefreshEvent {
539
- dataTableRendererId: string;
540
- }
541
-
542
- declare interface DataTableRendererRegistry {
543
- dataTableStore: WorkbenchStore<DataTableRendererStoreState>;
544
- registerDataTableRenderer(contribution: DataTableRendererContribution, metadata?: ContributionMetadata): Disposable_2;
545
- setDataTableRendererImplementation(implementation: DataTableRendererImplementation): void;
546
- getDataTableRenderer(id: string): RegisteredDataTableRendererContribution | undefined;
547
- listDataTableRenderers(): RegisteredDataTableRendererContribution[];
548
- refreshDataTableRenderer(id: string): void;
549
- onDidRefreshDataTableRenderer(listener: (event: DataTableRendererRefreshEvent) => void): Disposable_2;
550
- }
551
-
552
422
  declare interface DataTableRendererRow {
553
423
  id: string;
554
424
  values: Record<string, unknown>;
@@ -571,10 +441,6 @@ declare interface DataTableRendererSelectionAction {
571
441
  run(rows: DataTableRendererRow[]): Promise<void> | void;
572
442
  }
573
443
 
574
- declare interface DataTableRendererStoreState {
575
- renderers: Record<string, RegisteredDataTableRendererContribution>;
576
- }
577
-
578
444
  declare interface DataTableRendererThemeColor {
579
445
  light: string;
580
446
  dark: string;
@@ -584,30 +450,31 @@ declare interface DataTableRendererThemeColor {
584
450
  };
585
451
  }
586
452
 
587
- declare type DataTableViewRecord = WorkbenchExtensionMetadata["panels"][number];
588
-
589
- declare interface DeclaredPanelPlacement {
590
- for?: string;
591
- region: DockedCompositionRegion;
592
- allowedRegions?: readonly DockedCompositionRegion[];
593
- required?: boolean;
594
- defaultOpen?: boolean;
595
- pinned?: boolean;
596
- }
597
-
598
453
  declare interface Disposable_2 {
599
454
  dispose(): void;
600
455
  }
601
456
 
602
- declare type DockedCompositionRegion = (typeof dockedCompositionRegions)[number];
603
-
604
- declare type DockedCompositionRegion_2 = (typeof dockedCompositionRegions_2)[number];
605
-
606
- declare const dockedCompositionRegions: readonly ["sidenav", "main", "secondary", "side"];
607
-
608
- declare const dockedCompositionRegions_2: readonly ["sidenav", "main", "secondary", "side"];
609
-
610
- 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
+ };
611
478
 
612
479
  declare interface EnumOption {
613
480
  value: string;
@@ -628,21 +495,596 @@ declare interface EnumOptionsSource {
628
495
  getSnapshot: () => EnumOption[];
629
496
  }
630
497
 
631
- declare type ExtensionPanelRecord = WorkbenchExtensionMetadata["panels"][number];
632
-
633
- declare type ExtensionResourcePanels = WorkbenchExtensionMetadata["resourcePanels"];
634
-
635
- declare type ExtensionTreeRendererRecord = NonNullable<WorkbenchExtensionMetadata["treeRenderers"]>[number];
636
-
637
- declare interface ExtensionTreeResource {
638
- type: string;
639
- id: string;
640
- label?: string;
641
- metadata?: Record<string, unknown>;
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>;
1044
+
1045
+ declare type ExtensionTreeRendererRecord = NonNullable<InternalWorkbenchExtensionMetadata["treeRenderers"]>[number];
1046
+
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;
1079
+
1080
+ declare type ExtensionTreeViewRecord = InternalWorkbenchExtensionMetadata["panels"][number] | NonNullable<InternalWorkbenchExtensionMetadata["panels"][number]["panelMenus"]>[number];
1081
+
1082
+ export declare interface ExtensionWebviewArtifactCapabilities {
1083
+ read(params: unknown, context: {
1084
+ webviewId: string;
1085
+ }): Promise<unknown> | unknown;
642
1086
  }
643
1087
 
644
- declare type ExtensionTreeViewRecord = WorkbenchExtensionMetadata["panels"][number] | NonNullable<WorkbenchExtensionMetadata["panels"][number]["panelMenus"]>[number];
645
-
646
1088
  export declare interface ExtensionWebviewFileCapabilities {
647
1089
  delete(params: unknown): Promise<unknown> | unknown;
648
1090
  list(params: unknown): Promise<unknown> | unknown;
@@ -714,71 +1156,46 @@ declare interface FileRendererContribution {
714
1156
  save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
715
1157
  }
716
1158
 
717
- declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
718
- fileRendererId: string;
719
- }) => unknown;
720
-
721
1159
  declare interface FileRendererRefreshEnvelope {
722
- resourceUri?: string;
1160
+ resourceKey?: string;
723
1161
  origin?: FileRendererRefreshOrigin;
724
1162
  revision?: string;
725
1163
  }
726
1164
 
727
1165
  export declare const fileRendererRefreshEnvelopeFromCommand: (body: CommandExecuteRequest, response: CommandExecuteResponse) => FileRendererRefreshEnvelope | undefined;
728
1166
 
729
- declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
730
- fileRendererId: string;
731
- }
732
-
733
- declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
734
-
735
1167
  declare interface FileRendererRefreshOrigin {
736
1168
  rendererId: string;
737
1169
  instanceId: string;
738
1170
  operationId: string;
739
1171
  }
740
1172
 
741
- declare interface FileRendererRegistry {
742
- fileRendererStore: WorkbenchStore<FileRendererStoreState>;
743
- registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
744
- setFileRendererImplementation(impl: FileRendererImplementation): void;
745
- getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
746
- listFileRenderers(): RegisteredFileRendererContribution[];
747
- refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
748
- onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
749
- }
750
-
751
1173
  declare interface FileRendererSaveResult {
752
1174
  revision?: string;
753
1175
  }
754
1176
 
755
- declare interface FileRendererStoreState {
756
- renderers: Record<string, RegisteredFileRendererContribution>;
757
- }
1177
+ export declare const getBridgeWebviewHostEventPublisher: (workbench: WorkbenchCore, instance: WorkbenchPanelInstance) => HostEventPublisher;
758
1178
 
759
- declare interface HistoryController {
760
- store: WorkbenchStore<HistoryStoreState>;
761
- /** Snapshot the history for a compound navigation; the returned function restores it. */
762
- createCheckpoint(): () => void;
763
- goBack(): HistoryEntry | undefined;
764
- goForward(): HistoryEntry | undefined;
765
- goPrevious(): HistoryEntry | undefined;
766
- recentlyClosed(): readonly HistoryEntry[];
767
- reopenLastClosed(): HistoryEntry | undefined;
768
- setPersistenceScope(scope: string | undefined): void;
769
- getPersistenceScope(): string | undefined;
770
- restore(): HistoryEntry | undefined;
771
- flush(): void;
772
- clear(): void;
773
- }
1179
+ declare type HostCapability<TParams = unknown, TResult = unknown> = (params: TParams) => Promise<TResult> | TResult;
774
1180
 
775
- declare type HistoryEntry = WorkbenchNavigationEntry;
1181
+ declare type HostCapabilityRegistry = Partial<Record<WebviewHostCapability, HostCapability>>;
776
1182
 
777
- declare interface HistoryStoreState {
778
- entries: readonly WorkbenchNavigationEntry[];
779
- cursor: number;
780
- recentlyClosed: readonly WorkbenchNavigationEntry[];
781
- 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;
782
1199
  }
783
1200
 
784
1201
  declare interface HostTreeDefaultNodesInput {
@@ -789,7 +1206,133 @@ declare interface HostTreeDefaultNodesInput {
789
1206
 
790
1207
  declare type HostTreeDefaultNodesResolver = (input: HostTreeDefaultNodesInput) => Promise<TreeNode[]> | TreeNode[];
791
1208
 
792
- declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> {
1209
+ declare interface InternalWorkbenchExtensionMetadata {
1210
+ extensions: WorkbenchExtensionMetadata["extensions"];
1211
+ commands: WorkbenchExtensionMetadata["commands"];
1212
+ menuContributions: ExtensionMenuContribution_2[];
1213
+ commandPaletteContributions: WorkbenchExtensionMetadata["commandPaletteContributions"];
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
+ }>;
1252
+ resourceHierarchyProviders: Array<{
1253
+ id: string;
1254
+ extensionId: string;
1255
+ resourceKind: string;
1256
+ }>;
1257
+ settingsSections: ExtensionSettingsSectionRecord[];
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
+ }>;
1268
+ kanbanRenderers: WorkbenchExtensionKanbanRendererRecord[];
1269
+ dataTableRenderers: WorkbenchExtensionDataTableRendererRecord[];
1270
+ commandPaletteResources: WorkbenchExtensionCommandPaletteResourceRecord_2[];
1271
+ treeRenderers: WorkbenchExtensionTreeRendererRecord[];
1272
+ fileRenderers: WorkbenchExtensionFileRendererRecord[];
1273
+ controlsRenderers: WorkbenchExtensionControlsRendererRecord[];
1274
+ keybindings: ExtensionKeybindingRecord[];
1275
+ settingsDefinitions: ExtensionSettingDefinitionRecord[];
1276
+ statuses: WorkbenchExtensionMetadata["statuses"];
1277
+ statusBarItems: Array<{
1278
+ id: string;
1279
+ extensionId: string;
1280
+ viewId: string;
1281
+ slot: "leading" | "trailing";
1282
+ order?: number;
1283
+ when?: {
1284
+ mode?: string | string[];
1285
+ source?: string[];
1286
+ viewId?: string | string[];
1287
+ resourceType?: string[];
1288
+ metadata?: Record<string, unknown>;
1289
+ };
1290
+ }>;
1291
+ diagnostics: WorkbenchExtensionMetadata["diagnostics"];
1292
+ }
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
+
1325
+ export declare const isExtensionNavigationTarget: (value: unknown) => value is NavigationTarget_2;
1326
+
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> {
793
1336
  id: string;
794
1337
  title: string;
795
1338
  resourceKind?: string;
@@ -804,9 +1347,9 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
804
1347
  * `WorkbenchKanbanView` subscribes so additions / removals / kind changes
805
1348
  * propagate live without re-registering the renderer.
806
1349
  */
807
- attributes: AttributeDescriptor[] | AttributesSource;
1350
+ attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
808
1351
  /** Per-board-column overrides (color, drag/create rules, custom actions). */
809
- getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
1352
+ getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
810
1353
  hideToolbar?: boolean;
811
1354
  emptyTitle?: string;
812
1355
  emptyDescription?: string;
@@ -825,7 +1368,7 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
825
1368
  /** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
826
1369
  onRowActivate?: (row: TRow) => Promise<void> | void;
827
1370
  /** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
828
- getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
1371
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
829
1372
  /**
830
1373
  * Fires for inline attribute edits AND for cross-column drag-to-reorder on
831
1374
  * the board (the renderer passes the grouping attribute id + the target
@@ -882,10 +1425,6 @@ declare interface KanbanRendererCreateSubmission {
882
1425
 
883
1426
  declare type KanbanRendererFilterState = Record<string, string[]>;
884
1427
 
885
- declare type KanbanRendererImplementation = (input: WorkbenchPanelRenderInput & {
886
- kanbanRendererId: string;
887
- }) => unknown;
888
-
889
1428
  declare interface KanbanRendererOrdering {
890
1429
  attributeId: string | typeof MANUAL_ORDERING;
891
1430
  direction: SortDirection;
@@ -896,22 +1435,6 @@ declare interface KanbanRendererQueryState {
896
1435
  filters: KanbanRendererFilterState;
897
1436
  }
898
1437
 
899
- declare interface KanbanRendererRefreshEvent {
900
- kanbanRendererId: string;
901
- }
902
-
903
- declare type KanbanRendererRefreshListener = (event: KanbanRendererRefreshEvent) => void;
904
-
905
- declare interface KanbanRendererRegistry {
906
- dataStore: WorkbenchStore<KanbanRendererStoreState>;
907
- registerKanbanRenderer<TRow extends KanbanRendererRow = KanbanRendererRow>(contribution: KanbanRendererContribution<TRow>, metadata?: ContributionMetadata): Disposable_2;
908
- setKanbanRendererImplementation(impl: KanbanRendererImplementation): void;
909
- getKanbanRenderer(id: string): RegisteredKanbanRendererContribution | undefined;
910
- listKanbanRenderers(): RegisteredKanbanRendererContribution[];
911
- refreshKanbanRenderer(id: string): void;
912
- onDidRefreshKanbanRenderer(listener: KanbanRendererRefreshListener): Disposable_2;
913
- }
914
-
915
1438
  declare interface KanbanRendererRow {
916
1439
  id: string;
917
1440
  title: string;
@@ -924,7 +1447,7 @@ declare interface KanbanRendererRow {
924
1447
  attributes: Record<string, unknown>;
925
1448
  }
926
1449
 
927
- declare type KanbanRendererRow_2 = Awaited<ReturnType<KanbanRendererContribution["executeQuery"]>>[number];
1450
+ declare type KanbanRendererRow_2 = Awaited<ReturnType<ReactKanbanRendererContribution["executeQuery"]>>[number];
928
1451
 
929
1452
  declare interface KanbanRendererSavedView {
930
1453
  id: string;
@@ -942,15 +1465,11 @@ declare interface KanbanRendererSettings {
942
1465
  displayProperties: string[];
943
1466
  }
944
1467
 
945
- declare interface KanbanRendererStoreState {
946
- renderers: Record<string, RegisteredKanbanRendererContribution>;
947
- }
948
-
949
1468
  declare interface Keybinding {
950
- commandId: string;
1469
+ /** Action the chord executes through the shared navigation executor. */
1470
+ action: NavigationTarget;
951
1471
  keybinding: KeybindingSequence;
952
1472
  when?: string;
953
- args?: unknown;
954
1473
  }
955
1474
 
956
1475
  declare interface KeybindingRegistry {
@@ -958,6 +1477,11 @@ declare interface KeybindingRegistry {
958
1477
  registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable_2;
959
1478
  listKeybindings(): RegisteredKeybinding[];
960
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
+ }[];
961
1485
  }
962
1486
 
963
1487
  declare interface KeybindingRegistryStoreState {
@@ -977,12 +1501,6 @@ declare interface LayoutModel {
977
1501
  registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
978
1502
  dispose(): void;
979
1503
  };
980
- registerLocation(location: WorkbenchLocationContribution, metadata?: ContributionMetadata): {
981
- dispose(): void;
982
- };
983
- registerSubPanel(subPanel: WorkbenchSubPanelContribution, metadata?: ContributionMetadata): {
984
- dispose(): void;
985
- };
986
1504
  registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
987
1505
  dispose(): void;
988
1506
  };
@@ -994,6 +1512,7 @@ declare interface LayoutModel {
994
1512
  getWidget(id: string): RegisteredWidgetContribution | undefined;
995
1513
  getPanel(id: string): WorkbenchPanelContribution | undefined;
996
1514
  getRegionSize(regionId: WorkbenchRegion): WorkbenchRegionSize | undefined;
1515
+ getRegionSettings(regionId: WorkbenchRegion): WorkbenchRegionSettings | undefined;
997
1516
  getRegionCollapsible(regionId: WorkbenchRegion): boolean;
998
1517
  getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
999
1518
  setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
@@ -1011,7 +1530,7 @@ declare interface LayoutModel {
1011
1530
  closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
1012
1531
  updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
1013
1532
  reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
1014
- expirePreviewTabs(ownerResourceUri?: string): void;
1533
+ expirePreviewTabs(ownerResourceKey?: string): void;
1015
1534
  activateWidget(widgetId: string): WorkbenchWidgetPlacement;
1016
1535
  setRegionActiveWidget(regionId: WorkbenchRegion, widgetId: string | undefined): void;
1017
1536
  closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
@@ -1044,13 +1563,6 @@ declare interface LayoutModel {
1044
1563
 
1045
1564
  declare type LayoutScope = string;
1046
1565
 
1047
- export declare const listCompositionAddablePanels: (input: {
1048
- registry: WorkbenchCompositionRegistry;
1049
- modeId: string;
1050
- layout: ReturnType<LayoutModel["getLayout"]>;
1051
- resourceKind?: string;
1052
- }) => readonly ResolvedCompositionAddablePanel[];
1053
-
1054
1566
  declare type Localizer = (value: unknown, fallback?: string) => string;
1055
1567
 
1056
1568
  declare const MANUAL_ORDERING = "manual";
@@ -1084,6 +1596,31 @@ declare interface MenuRegistryStoreState {
1084
1596
  itemsByPath: Record<string, RegisteredMenuItem[]>;
1085
1597
  }
1086
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
+
1087
1624
  declare interface NavigationParser {
1088
1625
  id: string;
1089
1626
  priority?: number;
@@ -1097,16 +1634,15 @@ declare interface NavigationRegistry {
1097
1634
  listParsers(): RegisteredNavigationParser[];
1098
1635
  resolveLocation(location: string): NavigationTarget;
1099
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[]>;
1100
1641
  navigate(location: string): Promise<readonly unknown[]>;
1101
- registerNavigator(navigator: ResourceNavigator, metadata?: ContributionMetadata): Disposable_2;
1102
- listNavigators(): RegisteredResourceNavigator[];
1103
- createHref(resource: ResourceRef): string;
1104
- navigateResource(resource: ResourceRef): Promise<unknown>;
1105
1642
  }
1106
1643
 
1107
1644
  declare interface NavigationRegistryStoreState {
1108
1645
  parsers: Record<string, RegisteredNavigationParser>;
1109
- navigators: Record<string, RegisteredResourceNavigator>;
1110
1646
  }
1111
1647
 
1112
1648
  declare type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
@@ -1119,23 +1655,63 @@ declare interface NavigationTargetCommand {
1119
1655
 
1120
1656
  declare interface NavigationTargetCompound {
1121
1657
  kind: "compound";
1122
- targets: readonly NavigationTargetItem[];
1658
+ targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
1659
+ }
1660
+
1661
+ declare interface NavigationTargetHref {
1662
+ kind: "href";
1663
+ href: string;
1123
1664
  }
1124
1665
 
1125
- declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetPanel | NavigationTargetCommand;
1666
+ declare type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
1667
+
1668
+ declare type NavigationTargetPage = NavigationTargetPage_2;
1126
1669
 
1127
- declare interface NavigationTargetPanel {
1670
+ declare type NavigationTargetPanel = NavigationTargetPanel_2 | NavigationTargetShellPanel;
1671
+
1672
+ declare interface NavigationTargetShellPanel {
1128
1673
  kind: "panel";
1129
- panelId: string;
1130
- input?: OpenWorkbenchPanelInput;
1674
+ panel: ShellPlacementRef;
1675
+ resource?: NavigationTargetPanel_2["resource"];
1676
+ open?: NavigationTargetPanel_2["open"];
1677
+ title?: string;
1131
1678
  }
1132
1679
 
1133
- declare interface NavigationTargetResource {
1134
- kind: "resource";
1135
- resource: ResourceRef;
1136
- input?: OpenResourceInput;
1680
+ declare interface NavigationTreeContext {
1681
+ resource?: ResourceRef;
1682
+ }
1683
+
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;
1702
+ }
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;
1137
1711
  }
1138
1712
 
1713
+ declare type NavigationTreeSlot = "header" | "content" | "footer";
1714
+
1139
1715
  declare const NO_GROUPING = "none";
1140
1716
 
1141
1717
  declare interface NotificationRegistry {
@@ -1147,12 +1723,15 @@ declare interface NotificationRegistry {
1147
1723
  subscribe(listener: WorkbenchNotificationListener): Disposable_2;
1148
1724
  }
1149
1725
 
1150
- declare interface OpenResourceInput {
1151
- replaceActive?: boolean;
1726
+ declare interface OpenModePlacementTarget {
1727
+ panel: PlacementRef;
1728
+ resource?: ResourceRef;
1729
+ open?: PageOpenIntent;
1152
1730
  }
1153
1731
 
1154
1732
  declare interface OpenWidgetInput {
1155
- resource?: ResourceRef;
1733
+ viewId?: string | null;
1734
+ resource?: ResourceRef | null;
1156
1735
  title?: string;
1157
1736
  region?: WorkbenchRegion;
1158
1737
  role?: WorkbenchWidgetRole;
@@ -1169,9 +1748,17 @@ declare interface OpenWidgetInput {
1169
1748
  replaceWidgetId?: string;
1170
1749
  }
1171
1750
 
1172
- declare interface OpenWorkbenchPanelInput {
1751
+ declare interface OpenWorkbenchOverlayInput {
1173
1752
  resource?: ResourceRef;
1174
1753
  title?: string;
1754
+ }
1755
+
1756
+ declare interface OpenWorkbenchPanelInput {
1757
+ /** Set by the view registry. Low-level layout callers should leave this undefined. */
1758
+ viewId?: string | null;
1759
+ /** `null` explicitly clears an existing singleton placement's resource binding. */
1760
+ resource?: ResourceRef | null;
1761
+ title?: string;
1175
1762
  region?: WorkbenchRegion;
1176
1763
  role?: WorkbenchWidgetRole;
1177
1764
  pinned?: boolean;
@@ -1182,9 +1769,38 @@ declare interface OpenWorkbenchPanelInput {
1182
1769
  strategy?: WorkbenchPanelOpenStrategy;
1183
1770
  }
1184
1771
 
1185
- export declare const panelMenuDeclarationOffsets: <T extends {
1186
- panelMenus?: readonly unknown[];
1187
- }>(panels: readonly T[]) => number[];
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
+ }
1798
+
1799
+ declare const pageRefSchema: z.ZodObject<{
1800
+ extensionId: z.ZodString;
1801
+ kind: z.ZodLiteral<"page">;
1802
+ id: z.ZodString;
1803
+ }, z.core.$strip>;
1188
1804
 
1189
1805
  declare interface PlaceholderContribution {
1190
1806
  id: string;
@@ -1230,12 +1846,13 @@ declare interface PreferenceScopeRef {
1230
1846
 
1231
1847
  declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
1232
1848
 
1233
- export declare const reconcileCompositionLayout: (ctx: CompositionReconcileContext, input: {
1234
- registry: WorkbenchCompositionRegistry;
1235
- modeId: string;
1236
- resourceKind?: string;
1237
- seeding?: boolean;
1238
- }) => 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>;
1239
1856
 
1240
1857
  export declare const refreshOpenWorkbenchExtensionWebviews: (workbench: WorkbenchModuleContext, metadata: WorkbenchExtensionMetadata) => void;
1241
1858
 
@@ -1252,24 +1869,6 @@ declare interface RegisteredContributionMetadata {
1252
1869
  priority: number;
1253
1870
  }
1254
1871
 
1255
- declare interface RegisteredControlsRendererContribution extends ControlsRendererContribution, RegisteredContributionMetadata {
1256
- }
1257
-
1258
- declare interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {
1259
- }
1260
-
1261
- declare interface RegisteredFileRendererContribution extends FileRendererContribution, RegisteredContributionMetadata {
1262
- }
1263
-
1264
- declare interface RegisteredKanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> extends KanbanRendererContribution<TRow>, RegisteredContributionMetadata {
1265
- }
1266
-
1267
- declare interface RegisteredKeepAliveHost {
1268
- rendererId: string;
1269
- host: HTMLElement;
1270
- attachedTo?: HTMLElement;
1271
- }
1272
-
1273
1872
  declare interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {
1274
1873
  }
1275
1874
 
@@ -1289,8 +1888,6 @@ declare type RegisteredPreferenceSchema = PreferencePropertySchema & {
1289
1888
  declare interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {
1290
1889
  }
1291
1890
 
1292
- declare type RegisteredResourceNavigator = Omit<ResourceNavigator, "priority"> & RegisteredContributionMetadata;
1293
-
1294
1891
  declare type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
1295
1892
 
1296
1893
  declare type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
@@ -1315,36 +1912,48 @@ declare interface RegisteredWorkbenchNotification extends RegisteredContribution
1315
1912
  metadata?: Record<string, unknown>;
1316
1913
  }
1317
1914
 
1915
+ declare type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
1916
+
1917
+ declare type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
1918
+
1318
1919
  export declare const registerWorkbenchExtensionCommandPaletteResources: (context: WorkbenchExtensionCommandContext, records: readonly WorkbenchExtensionCommandPaletteResourceRecord[]) => {
1319
1920
  dispose(): void;
1320
1921
  };
1321
1922
 
1322
- export declare const registerWorkbenchExtensionContributions: (input: RegisterWorkbenchExtensionContributionsInput) => {
1923
+ export declare const registerWorkbenchExtensionContributions: (sourceInput: RegisterWorkbenchExtensionContributionsInput) => {
1323
1924
  dispose(): void;
1324
1925
  };
1325
1926
 
1326
1927
  export declare interface RegisterWorkbenchExtensionContributionsInput {
1928
+ createKeybindingWhenExpression?: (when: ExtensionKeybindingRecord["when"]) => string | undefined;
1327
1929
  createMenuWhenExpression?: WorkbenchExtensionMenuWhenBuilder;
1930
+ createNavigationWhenExpression?: (when: WorkbenchExtensionMetadata["navigationItems"][number]["when"]) => string | undefined;
1328
1931
  createWebviewHostCapabilities?: CreateBridgeWebviewHostCapabilities;
1329
1932
  createWebviewHostCapabilityOverrides?: CreateBridgeWebviewHostCapabilities;
1330
1933
  createWebviewProps?: CreateBridgeWebviewProps;
1331
1934
  createWebviewTheme?: CreateBridgeWebviewTheme;
1332
1935
  executeCommand(commandId: string, body: CommandExecuteRequest): Promise<unknown> | unknown;
1936
+ kanbanAdapter?: WorkbenchExtensionKanbanRendererAdapter;
1333
1937
  menuSlotsById?: ReadonlyMap<string, WorkbenchExtensionMenuSlotConfig>;
1334
1938
  menuTargetsById?: ReadonlyMap<string, WorkbenchExtensionMenuSlotConfig>;
1939
+ menuRegistrations?: readonly WorkbenchExtensionHostMenuRegistration[];
1335
1940
  metadata: WorkbenchExtensionMetadata;
1336
1941
  openHref?: (href: string) => unknown;
1942
+ prepareCommandArgs?(commandId: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown> | unknown;
1337
1943
  projectId: string;
1338
- routeResourceKind?: string;
1944
+ resolveTreeNodeResource?: RegisterWorkbenchExtensionTreeRenderersInput["resolveNodeResource"];
1945
+ renderWebview?(input: WorkbenchPanelRenderInput): unknown;
1339
1946
  settingsSectionId?: string;
1340
1947
  settingsSectionTitle?: string;
1948
+ subscribeRefreshEvents?: (listener: (event: WorkbenchExtensionRefreshEvent) => void) => Disposable_2;
1949
+ webviewArtifacts?: ExtensionWebviewArtifactCapabilities;
1341
1950
  webviewFiles?: ExtensionWebviewFileCapabilities;
1342
1951
  workbench: WorkbenchModuleContext;
1343
1952
  }
1344
1953
 
1345
- export declare const registerWorkbenchExtensionControlsRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionControlsRendererRecord[], panels: ControlsViewRecord[], adapter?: WorkbenchExtensionControlsAdapter, resourcePanels?: WorkbenchExtensionMetadata["resourcePanels"]) => Disposable_2;
1954
+ export declare const registerWorkbenchExtensionControlsRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionControlsRendererRecord[], adapter?: WorkbenchExtensionControlsAdapter) => Disposable_2;
1346
1955
 
1347
- export declare const registerWorkbenchExtensionDataTableRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionDataTableRendererRecord[], panels: DataTableViewRecord[], resourcePanels?: WorkbenchExtensionMetadata["resourcePanels"]) => Disposable_2;
1956
+ export declare const registerWorkbenchExtensionDataTableRenderers: (context: WorkbenchExtensionCommandContext, records: WorkbenchExtensionDataTableRendererRecord[]) => Disposable_2;
1348
1957
 
1349
1958
  export declare const registerWorkbenchExtensionFileRenderers: (input: RegisterWorkbenchExtensionFileRenderersInput) => {
1350
1959
  dispose(): void;
@@ -1352,22 +1961,15 @@ export declare const registerWorkbenchExtensionFileRenderers: (input: RegisterWo
1352
1961
 
1353
1962
  export declare interface RegisterWorkbenchExtensionFileRenderersInput {
1354
1963
  executeCommand(commandId: string, body: CommandExecuteRequest): Promise<unknown> | unknown;
1355
- metadata: WorkbenchExtensionMetadata;
1964
+ metadata: InternalWorkbenchExtensionMetadata;
1356
1965
  projectId: string;
1357
1966
  workbench: WorkbenchModuleContext;
1358
1967
  }
1359
1968
 
1360
- export declare const registerWorkbenchExtensionKanbanRenderers: (context: WorkbenchExtensionCommandContext, records: readonly WorkbenchExtensionKanbanRendererRecord[], adapter?: WorkbenchExtensionKanbanRendererAdapter, panels?: WorkbenchExtensionMetadata["panels"], resourcePanels?: WorkbenchExtensionMetadata["resourcePanels"]) => {
1969
+ export declare const registerWorkbenchExtensionKanbanRenderers: (context: WorkbenchExtensionCommandContext, records: readonly WorkbenchExtensionKanbanRendererRecord[], adapter?: WorkbenchExtensionKanbanRendererAdapter) => {
1361
1970
  dispose(): void;
1362
1971
  };
1363
1972
 
1364
- export declare const registerWorkbenchExtensionPanel: (input: RegisterWorkbenchExtensionPanelInput) => Disposable_2;
1365
-
1366
- export declare interface RegisterWorkbenchExtensionPanelInput {
1367
- contribution: WorkbenchPanelContribution;
1368
- workbench: WorkbenchModuleContext;
1369
- }
1370
-
1371
1973
  export declare const registerWorkbenchExtensionRendererRefreshEvents: (input: RegisterWorkbenchExtensionRendererRefreshEventsInput) => Disposable_2;
1372
1974
 
1373
1975
  export declare interface RegisterWorkbenchExtensionRendererRefreshEventsInput {
@@ -1384,7 +1986,7 @@ export declare interface RegisterWorkbenchExtensionTreeRenderersInput {
1384
1986
  executeCommand(commandId: string, body: CommandExecuteRequest): Promise<unknown> | unknown;
1385
1987
  getHostTreeFooterNodes?: HostTreeDefaultNodesResolver;
1386
1988
  getHostTreeHeaderNodes?: HostTreeDefaultNodesResolver;
1387
- metadata: WorkbenchExtensionMetadata;
1989
+ metadata: InternalWorkbenchExtensionMetadata;
1388
1990
  projectId: string;
1389
1991
  /**
1390
1992
  * Host canonicalization for node resources. A host that gives extension
@@ -1411,48 +2013,15 @@ declare interface RendererRefreshTarget {
1411
2013
  kind: WorkbenchExtensionRendererKind;
1412
2014
  }
1413
2015
 
1414
- declare interface ResolvedComposition {
1415
- placements: readonly ResolvedCompositionPlacement[];
1416
- regionOrder: Partial<Record<DockedCompositionRegion, readonly string[]>>;
1417
- activePanelIds: Partial<Record<DockedCompositionRegion, string>>;
1418
- addablePanels: readonly ResolvedCompositionAddablePanel_2[];
1419
- diagnostics: readonly CompositionDiagnostic[];
1420
- requiredFallback?: {
1421
- panelId: string;
1422
- };
1423
- }
1424
-
1425
- declare interface ResolvedCompositionAddablePanel {
1426
- panelId: string;
1427
- region: DockedCompositionRegion_2;
1428
- allowedRegions: readonly DockedCompositionRegion_2[];
1429
- pinned?: boolean;
1430
- }
1431
-
1432
- declare interface ResolvedCompositionAddablePanel_2 {
1433
- panelId: string;
1434
- region: DockedCompositionRegion;
1435
- allowedRegions: readonly DockedCompositionRegion[];
1436
- pinned?: boolean;
1437
- }
1438
-
1439
- declare interface ResolvedCompositionPlacement {
1440
- panelId: string;
1441
- region: DockedCompositionRegion;
1442
- slot?: string;
1443
- required: boolean;
1444
- defaultOpen: boolean;
1445
- pinned?: boolean;
1446
- allowedRegions: readonly DockedCompositionRegion[];
1447
- origin: "persisted" | "required" | "default";
2016
+ declare interface ResolvedOwnedPlacement<Value = unknown> {
2017
+ identity: PlacementIdentity;
2018
+ region: WorkbenchRegion;
2019
+ order: number;
2020
+ value: Value;
1448
2021
  }
1449
2022
 
1450
2023
  declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
1451
2024
 
1452
- declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
1453
- priority: number;
1454
- };
1455
-
1456
2025
  declare interface ResourceBrowseEntry {
1457
2026
  resource: ResourceRef;
1458
2027
  searchText?: string;
@@ -1463,19 +2032,19 @@ declare interface ResourceBrowseEntry {
1463
2032
  }
1464
2033
 
1465
2034
  /** Row-level context menu action surfaced by the renderer. */
1466
- declare interface ResourceContextAction {
2035
+ declare interface ResourceContextAction<TNode = unknown> {
1467
2036
  key: string;
1468
2037
  label: string;
1469
2038
  onClick: () => Promise<void> | void;
1470
2039
  isDisabled?: boolean;
1471
- icon?: ReactNode;
1472
- endContent?: ReactNode;
2040
+ icon?: TNode;
2041
+ endContent?: TNode;
1473
2042
  separatorBefore?: boolean;
1474
2043
  }
1475
2044
 
1476
2045
  declare interface ResourceHierarchyCycle {
1477
2046
  code: typeof resourceHierarchyCycleCode;
1478
- path: ResourceRef[];
2047
+ path: WorkbenchHierarchyNode[];
1479
2048
  repeatedUri: string;
1480
2049
  }
1481
2050
 
@@ -1485,90 +2054,45 @@ declare interface ResourceHierarchyProvider {
1485
2054
  id: string;
1486
2055
  priority?: number;
1487
2056
  canResolve(resource: ResourceRef): boolean;
1488
- getParent(resource: ResourceRef): ResourceRef | undefined;
2057
+ getParent(resource: ResourceRef): WorkbenchHierarchyNode | undefined;
1489
2058
  }
1490
2059
 
1491
2060
  declare interface ResourceKindContribution {
1492
2061
  kind: string;
1493
2062
  label: string;
1494
2063
  icon?: string;
1495
- surface?: ResourceSurface;
1496
- paletteOpenInput?: OpenResourceInput;
1497
2064
  }
1498
2065
 
1499
2066
  declare interface ResourceListContext {
1500
2067
  primary?: ResourceRef;
1501
2068
  }
1502
2069
 
1503
- declare interface ResourceNavigator<TResult = unknown> {
1504
- id: string;
1505
- priority?: number;
1506
- canNavigate(resource: ResourceRef): boolean;
1507
- createHref?(resource: ResourceRef): string;
1508
- navigate(resource: ResourceRef): TResult | Promise<TResult>;
1509
- }
1510
-
1511
- declare interface ResourcePresenter {
1512
- id: string;
1513
- priority?: number;
1514
- canOpen(resource: ResourceRef): boolean;
1515
- open(resource: ResourceRef, input: OpenResourceInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
1516
- afterOpen?(resource: ResourceRef, instance: WorkbenchPanelInstance, input: OpenResourceInput): void;
1517
- }
1518
-
1519
- declare interface ResourceProvider {
2070
+ declare interface ResourceProvider {
1520
2071
  id: string;
1521
2072
  kind: string;
1522
2073
  list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
1523
2074
  }
1524
2075
 
1525
- declare interface ResourceRef {
1526
- kind: string;
1527
- uri: string;
1528
- id?: string;
1529
- label?: string;
1530
- icon?: string;
1531
- metadata?: Record<string, unknown>;
1532
- }
1533
-
1534
- declare interface ResourceRef_2 {
1535
- kind: string;
1536
- uri: string;
1537
- id?: string;
1538
- label?: string;
1539
- icon?: string;
1540
- metadata?: Record<string, unknown>;
1541
- }
1542
-
1543
2076
  declare interface ResourceRegistry {
1544
2077
  store: WorkbenchStore<ResourceRegistryStoreState>;
1545
2078
  registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable_2;
1546
2079
  getKind(kind: string): RegisteredResourceKind | undefined;
1547
- getSurface(resource: ResourceRef): ResourceSurface | undefined;
1548
2080
  listKinds(): RegisteredResourceKind[];
1549
- registerPresenter(presenter: ResourcePresenter): Disposable_2;
1550
- listPresenters(): ResolvedResourcePresenter[];
1551
2081
  registerProvider(provider: ResourceProvider): Disposable_2;
1552
2082
  listProviders(): ResourceProvider[];
1553
2083
  listResources(query: string): readonly ResourceBrowseEntry[];
1554
2084
  registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable_2;
1555
2085
  listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
1556
- walkHierarchy(resource: ResourceRef | undefined): ResourceRef[];
2086
+ walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
1557
2087
  onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
1558
- isOpeningResource(): boolean;
1559
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
1560
- onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
1561
2088
  }
1562
2089
 
1563
2090
  declare interface ResourceRegistryStoreState {
1564
2091
  kinds: Record<string, RegisteredResourceKind>;
1565
- presenters: Record<string, ResolvedResourcePresenter>;
1566
2092
  providers: Record<string, ResourceProvider>;
1567
2093
  hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
1568
2094
  }
1569
2095
 
1570
- declare type ResourceSurface = "primary" | "secondary" | "attached";
1571
-
1572
2096
  declare type RowAction = NonNullable<WorkbenchExtensionKanbanRendererRecord["rowActions"]>[number];
1573
2097
 
1574
2098
  /** Auto-rendered as a param editor from the registered preference schema. */
@@ -1579,6 +2103,14 @@ declare interface SchemaSettingsPanel extends SettingsPanelBase {
1579
2103
  save?: "live" | "apply";
1580
2104
  }
1581
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
+
1582
2114
  /** A "+ create"-style action surfaced on a section or a collection's parent node. */
1583
2115
  declare interface SettingsAction {
1584
2116
  id: string;
@@ -1607,7 +2139,7 @@ declare interface SettingsPanelBase {
1607
2139
  when?: string;
1608
2140
  }
1609
2141
 
1610
- declare type SettingsPanelContribution = SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel;
2142
+ declare type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
1611
2143
 
1612
2144
  /** A preference this panel edits; a bare string uses the preference name as its label. */
1613
2145
  declare type SettingsPanelPreference = string | {
@@ -1618,11 +2150,13 @@ declare type SettingsPanelPreference = string | {
1618
2150
  declare interface SettingsRegistry {
1619
2151
  store: WorkbenchStore<SettingsRegistryStoreState>;
1620
2152
  registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable_2;
1621
- 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;
1622
2154
  getSection(id: string): RegisteredSettingsSection | undefined;
1623
2155
  getPanel(id: string): RegisteredSettingsPanel | undefined;
1624
2156
  listSections(): RegisteredSettingsSection[];
1625
2157
  listPanels(): RegisteredSettingsPanel[];
2158
+ resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
2159
+ getCollectionItem(panelId: string, itemId: string): unknown | undefined;
1626
2160
  /** Signal that a collection's backing data changed so the surface refreshes. */
1627
2161
  refresh(): void;
1628
2162
  }
@@ -1646,6 +2180,12 @@ declare interface SettingsSectionContribution {
1646
2180
  actions?: SettingsAction[];
1647
2181
  }
1648
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
+
1649
2189
  declare type SortDirection = "asc" | "desc";
1650
2190
 
1651
2191
  /**
@@ -1655,6 +2195,8 @@ declare type SortDirection = "asc" | "desc";
1655
2195
  */
1656
2196
  declare type ThemePreference = string;
1657
2197
 
2198
+ declare type ThemePreference_2 = "dark" | "light";
2199
+
1658
2200
  declare type ThemePreferenceMode = "light" | "dark";
1659
2201
 
1660
2202
  declare interface ThemePreferenceOption {
@@ -1673,16 +2215,29 @@ declare interface ThemeRegistry {
1673
2215
  listThemes(): readonly ThemePreferenceOption[];
1674
2216
  }
1675
2217
 
1676
- export declare const toPanelPlacements: (show: DeclaredPanelPlacement | readonly DeclaredPanelPlacement[] | undefined) => any[];
2218
+ export declare function toWorkbenchNavigationTarget(target: NavigationOperation, input?: ToWorkbenchNavigationTargetInput): NavigationOperation;
1677
2219
 
1678
- export declare const toWorkbenchCompositionPanelContribution: (input: {
1679
- panel: ExtensionPanelRecord;
1680
- rendererId: string;
1681
- declarationIndex: number;
1682
- menuDeclarationOffset: number;
1683
- resourcePanels?: ExtensionResourcePanels;
1684
- config?: WorkbenchPanelContribution["config"];
1685
- }) => WorkbenchPanelContribution;
2220
+ export declare function toWorkbenchNavigationTarget(target: NavigationTarget_2, input?: ToWorkbenchNavigationTargetInput): NavigationTarget;
2221
+
2222
+ export declare interface ToWorkbenchNavigationTargetInput {
2223
+ commandIdOf?(command: Extract<NavigationTarget_2, {
2224
+ kind: "command";
2225
+ }>["target"]["command"]): string | undefined;
2226
+ commandTargetOf?(target: Extract<NavigationTarget_2, {
2227
+ kind: "command";
2228
+ }>): NavigationTargetCommand;
2229
+ extensionId?: string;
2230
+ }
2231
+
2232
+ export declare const toWorkbenchNavigationTargetResult: (value: unknown, input?: ToWorkbenchNavigationTargetInput) => NavigationTarget | undefined;
2233
+
2234
+ export declare const toWorkbenchWhenExpression: (when: WorkbenchExtensionMetadata["navigationItems"][number]["when"] | WorkbenchExtensionMetadata["statusBarItems"][number]["when"]) => {
2235
+ mode: string | string[] | undefined;
2236
+ source: ("event" | "schedule" | "api" | "cli" | "dashboard" | "automation" | "command-panel")[] | undefined;
2237
+ viewId: string | string[] | undefined;
2238
+ resourceType: string[] | undefined;
2239
+ metadata: Record<string, unknown> | undefined;
2240
+ } | undefined;
1686
2241
 
1687
2242
  declare interface TreeAction {
1688
2243
  id: string;
@@ -1697,15 +2252,29 @@ declare interface TreeAction {
1697
2252
  run?(args?: unknown): Promise<void> | void;
1698
2253
  }
1699
2254
 
1700
- declare interface TreeContext {
1701
- filter?: string;
1702
- resource?: ResourceRef;
1703
- /** Widget/view contribution id for trees rendered through a view-backed widget. */
1704
- viewId?: string;
2255
+ declare interface TreeContext extends TreeQueryContext {
2256
+ state: Readonly<TreeRendererState>;
2257
+ refresh(): void;
2258
+ setSelectedNode(nodeId: string | undefined): void;
1705
2259
  }
1706
2260
 
2261
+ declare interface TreeMoveEndpoint {
2262
+ kind: "section" | "node";
2263
+ sectionId: string;
2264
+ id: string;
2265
+ moveScope?: string;
2266
+ }
2267
+
2268
+ declare type TreeMovePolicy = (move: {
2269
+ source: TreeMoveEndpoint;
2270
+ destination: TreeMoveEndpoint;
2271
+ }) => boolean;
2272
+
1707
2273
  declare interface TreeNode {
1708
2274
  id: string;
2275
+ selected?: boolean;
2276
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
2277
+ moveScope?: string;
1709
2278
  label: string;
1710
2279
  icon?: string;
1711
2280
  iconElement?: unknown;
@@ -1750,6 +2319,13 @@ declare interface TreeNodeInlineInput {
1750
2319
 
1751
2320
  declare type TreeNodeRowVariant = "empty-state";
1752
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
+
1753
2329
  declare interface TreeRendererContribution {
1754
2330
  id: string;
1755
2331
  title: string;
@@ -1760,9 +2336,10 @@ declare interface TreeRendererContribution {
1760
2336
  defaultExpandedSectionIds?: string[];
1761
2337
  defaultExpandedNodeIds?: string[];
1762
2338
  getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1763
- getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1764
- getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
2339
+ getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
2340
+ getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1765
2341
  getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
2342
+ canMove?: TreeMovePolicy;
1766
2343
  moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
1767
2344
  }
1768
2345
 
@@ -1782,10 +2359,10 @@ declare interface TreeRendererRegistry {
1782
2359
  setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1783
2360
  getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1784
2361
  listTreeRenderers(): RegisteredTreeRendererContribution[];
1785
- getBody(id: string, ctx?: TreeContext): Promise<TreeViewSection[]>;
1786
- getHeader(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1787
- getFooter(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1788
- 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[]>;
1789
2366
  getTreeState(id: string): TreeRendererState;
1790
2367
  setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1791
2368
  setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
@@ -1816,6 +2393,8 @@ declare interface TreeSectionEmptyState {
1816
2393
 
1817
2394
  declare interface TreeViewSection {
1818
2395
  id: string;
2396
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
2397
+ moveScope?: string;
1819
2398
  label?: string;
1820
2399
  actions?: TreeAction[];
1821
2400
  collapsible?: boolean;
@@ -1828,6 +2407,11 @@ declare interface TreeViewSection {
1828
2407
  canReorder?: boolean;
1829
2408
  }
1830
2409
 
2410
+ declare interface UnresolvedWorkbenchExtensionMenuContribution {
2411
+ contribution: ExtensionMenuContribution;
2412
+ targetId: string;
2413
+ }
2414
+
1831
2415
  /**
1832
2416
  * Core-owned contracts for kanban renderer contributions. @pstdio/ui's
1833
2417
  * KanbanRenderer props are structurally identical; the React layer bridges the
@@ -1836,6 +2420,11 @@ declare interface TreeViewSection {
1836
2420
  */
1837
2421
  declare type ViewMode = "board" | "list";
1838
2422
 
2423
+ declare interface ViewSettingsPanel extends SettingsPanelBase {
2424
+ kind: "view";
2425
+ viewId: string;
2426
+ }
2427
+
1839
2428
  declare interface WidgetContribution {
1840
2429
  id: string;
1841
2430
  title: string;
@@ -1847,15 +2436,13 @@ declare interface WidgetContribution {
1847
2436
  mountStrategy?: WidgetMountStrategy;
1848
2437
  closable?: boolean;
1849
2438
  hiddenByDefault?: boolean;
1850
- subPanelsOnly?: boolean;
1851
2439
  regionSize?: WorkbenchRegionSize;
1852
2440
  regionCollapsible?: boolean;
1853
2441
  headerBorderBottom?: boolean;
1854
- floatingPanels?: WorkbenchFloatingPanelVisibility;
1855
2442
  resourceKinds?: string[];
1856
2443
  priority?: number;
1857
2444
  rendererId: string;
1858
- openCommandId?: string;
2445
+ openCommand?: WorkbenchCommandTarget;
1859
2446
  eligibleLocations?: WorkbenchLocationEligibility;
1860
2447
  panelMenuOwner?: WorkbenchPanelMenuOwner;
1861
2448
  tab?: WorkbenchWidgetTab;
@@ -1865,8 +2452,6 @@ declare interface WidgetContribution {
1865
2452
 
1866
2453
  declare type WidgetMountStrategy = "active" | "keep-mounted";
1867
2454
 
1868
- declare type WidgetMountStrategy_2 = "active" | "keep-mounted";
1869
-
1870
2455
  declare type WidgetReusePolicy = "resource" | "none";
1871
2456
 
1872
2457
  declare type WorkbenchBreadcrumbChangeListener = () => void;
@@ -1892,13 +2477,6 @@ declare interface WorkbenchBreadcrumbState {
1892
2477
  items: WorkbenchBreadcrumbItem[] | undefined;
1893
2478
  }
1894
2479
 
1895
- declare interface WorkbenchClosedSubPanel {
1896
- region: WorkbenchPanelRegion;
1897
- reference: WorkbenchSubPanelRef;
1898
- resource?: ResourceRef;
1899
- title?: string;
1900
- }
1901
-
1902
2480
  declare interface WorkbenchCommandExecutionContext {
1903
2481
  resource?: ResourceRef;
1904
2482
  source?: "panel-add";
@@ -1940,7 +2518,7 @@ declare interface WorkbenchCommandPaletteState {
1940
2518
  paramsRequest: WorkbenchCommandParamsRequest | null;
1941
2519
  }
1942
2520
 
1943
- declare type WorkbenchCommandPaletteView = "main" | "theme" | "mode";
2521
+ declare type WorkbenchCommandPaletteView = "main" | "theme";
1944
2522
 
1945
2523
  declare interface WorkbenchCommandParamsRequest {
1946
2524
  record: {
@@ -1955,14 +2533,14 @@ declare interface WorkbenchCommandParamsRequest {
1955
2533
  context?: WorkbenchCommandExecutionContext;
1956
2534
  }
1957
2535
 
1958
- declare interface WorkbenchComposition {
1959
- resourceKinds: readonly CompositionResourceKindDefinition[];
1960
- panels: readonly CompositionPanelDefinition[];
1961
- resourcePanels: readonly CompositionResourcePanelEdge[];
2536
+ declare interface WorkbenchCommandTarget {
2537
+ commandId: string;
2538
+ args?: unknown;
1962
2539
  }
1963
2540
 
1964
2541
  declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
1965
2542
  contribution: RegisteredWidgetContribution;
2543
+ open?(resource?: ResourceRef): void;
1966
2544
  }
1967
2545
 
1968
2546
  declare interface WorkbenchCompositionController {
@@ -1975,22 +2553,16 @@ declare interface WorkbenchCompositionRegionPanels {
1975
2553
  closable: readonly string[];
1976
2554
  }
1977
2555
 
1978
- export declare interface WorkbenchCompositionRegistry {
1979
- registerResourceKind(definition: CompositionResourceKindDefinition): Disposable_2;
1980
- registerPanelCapability(definition: CompositionPanelDefinition): Disposable_2;
1981
- registerResourcePanel(edge: CompositionResourcePanelEdge): Disposable_2;
1982
- registerModeComposition(definition: CompositionModeDefinition): Disposable_2;
1983
- getComposition(): WorkbenchComposition;
1984
- getModeComposition(modeId: string): CompositionModeDefinition | undefined;
1985
- }
1986
-
1987
2556
  declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
1988
2557
  host: WorkbenchHost;
2558
+ layout: WorkbenchLayoutModel;
1989
2559
  registerModule(module: WorkbenchModuleContribution): Disposable_2;
1990
2560
  unregisterModule(moduleId: string): void;
1991
2561
  }
1992
2562
 
1993
2563
  declare interface WorkbenchCoreContributionContext {
2564
+ pinPlacement(identity: PlacementIdentity): void;
2565
+ closePlacement(identity: PlacementIdentity): void;
1994
2566
  breadcrumbs: WorkbenchBreadcrumbController;
1995
2567
  commandPalette: WorkbenchCommandPaletteController;
1996
2568
  commandPaletteResources: CommandPaletteResourceRegistry;
@@ -1998,19 +2570,27 @@ declare interface WorkbenchCoreContributionContext {
1998
2570
  composition: WorkbenchCompositionController;
1999
2571
  context: ContextKeyService;
2000
2572
  focus: WorkbenchFocusController;
2001
- history: HistoryController;
2002
2573
  keybindings: KeybindingRegistry;
2003
- lastResource: WorkbenchLastResourceController;
2004
- layout: WorkbenchLayoutModel;
2574
+ layout: WorkbenchModuleLayoutModel;
2005
2575
  modes: WorkbenchModeRegistry;
2576
+ modePlacements: WorkbenchModePlacementRegistry;
2577
+ shellPlacements: WorkbenchShellPlacementRegistry;
2006
2578
  navigation: NavigationRegistry;
2007
- navigator: WorkbenchNavigator;
2579
+ navigationTrees: NavigationTreeRegistry;
2008
2580
  notifications: NotificationRegistry;
2009
- panels: WorkbenchPanelsController;
2581
+ overlays: WorkbenchOverlayRegistry;
2582
+ placeholders: WorkbenchPlaceholderRegistry;
2583
+ pageLocations: WorkbenchPageLocationController;
2584
+ pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
2585
+ panelMenuState: WorkbenchPanelMenuStateController;
2010
2586
  preferences: PreferenceRegistry;
2011
- renderers: WorkbenchRenderers;
2587
+ treeViews: WorkbenchTreeViews;
2012
2588
  resources: ResourceRegistry;
2589
+ views: WorkbenchViewRegistry;
2590
+ viewMenus: WorkbenchViewMenuRegistry;
2013
2591
  settings: SettingsRegistry;
2592
+ statusBar: WorkbenchStatusBarRegistry;
2593
+ statuses: WorkbenchStatusRegistry;
2014
2594
  shell: WorkbenchShellController;
2015
2595
  sidePanel: WorkbenchSidePanelController;
2016
2596
  terminal: WorkbenchTerminalController;
@@ -2020,10 +2600,12 @@ declare interface WorkbenchCoreContributionContext {
2020
2600
  onDidChangePrimaryResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
2021
2601
  getActiveResource(): ResourceRef | undefined;
2022
2602
  onDidChangeActiveResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
2603
+ registerChildModule(module: WorkbenchModuleContribution): Disposable_2;
2023
2604
  }
2024
2605
 
2025
2606
  export declare interface WorkbenchExtensionCommandContext {
2026
2607
  executeCommand(commandId: string, body: CommandExecuteRequest): Promise<unknown> | unknown;
2608
+ prepareCommandArgs?(commandId: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown> | unknown;
2027
2609
  projectId: string;
2028
2610
  workbench: WorkbenchModuleContext;
2029
2611
  }
@@ -2035,16 +2617,31 @@ export declare interface WorkbenchExtensionCommandPaletteRegistration {
2035
2617
  targetCommandId: string;
2036
2618
  }
2037
2619
 
2620
+ declare type WorkbenchExtensionCommandPaletteResourceRecord_2 = z.infer<typeof extensionCommandPaletteResourceRecordSchema>;
2621
+
2038
2622
  export declare interface WorkbenchExtensionControlsAdapter {
2039
2623
  /** Supply a fallback resource when the widget placement carries none. */
2040
2624
  resolveResource?: (record: WorkbenchExtensionControlsRendererRecord) => ResourceRef | undefined;
2041
2625
  }
2042
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
+
2633
+ export declare interface WorkbenchExtensionHostMenuRegistration extends Omit<WorkbenchExtensionMenuRegistration, "menuItem" | "menuPath"> {
2634
+ menuItems: Array<{
2635
+ menuItem: MenuItem;
2636
+ menuPath: MenuPath;
2637
+ }>;
2638
+ }
2639
+
2043
2640
  export declare interface WorkbenchExtensionKanbanRendererAdapter {
2044
2641
  /** Override label resolution. Defaults to workbench's `text(value, fallback)`. */
2045
2642
  resolveLabel?: Localizer;
2046
2643
  /** Post-process an attribute descriptor (after localization). Defaults to identity. */
2047
- decorateAttribute?: (record: WorkbenchExtensionKanbanRendererRecord, attribute: AttributeDescriptor) => AttributeDescriptor;
2644
+ decorateAttribute?: (record: WorkbenchExtensionKanbanRendererRecord, attribute: ReactAttributeDescriptor) => ReactAttributeDescriptor;
2048
2645
  /**
2049
2646
  * Translate a row's transport-shaped resource (`{ type, id }`) into a workbench
2050
2647
  * `ResourceRef`. Defaults to the workbench `pstdio://extension-resource/...`
@@ -2070,17 +2667,13 @@ export declare interface WorkbenchExtensionKanbanRendererAdapter {
2070
2667
  runDefault: () => Promise<void>;
2071
2668
  }) => void | Promise<void>;
2072
2669
  /**
2073
- * Override the row click handler. When unset the panel layer falls back to
2074
- * opening the row's resource via `ctx.resources.openResource` — set this to
2075
- * 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.
2076
2671
  */
2077
2672
  onRowClick?: (input: {
2078
2673
  record: WorkbenchExtensionKanbanRendererRecord;
2079
2674
  row: KanbanRendererRow_2;
2080
2675
  resource: ResourceRef | undefined;
2081
2676
  }) => void;
2082
- /** Translate extension navigation resource targets into host resources. */
2083
- resolveNavigationResource?: (record: WorkbenchExtensionKanbanRendererRecord, resource: NonNullable<CommandExecuteRequest["resource"]>) => ResourceRef;
2084
2677
  /** Called after a successful renderer-owned create form submission. */
2085
2678
  onAfterCreate?: (input: {
2086
2679
  record: WorkbenchExtensionKanbanRendererRecord;
@@ -2091,11 +2684,13 @@ export declare interface WorkbenchExtensionKanbanRendererAdapter {
2091
2684
  * Called after any mutation (attribute change, reorder, column action, default
2092
2685
  * create) resolves successfully. Hosts that drive refresh via the outer command
2093
2686
  * pipeline (testbench / workbench) leave this unset; dashboard supplies
2094
- * `ctx.renderers.refreshKanbanRenderer(id)`.
2687
+ * `ctx.views.refreshView(id)`.
2095
2688
  */
2096
2689
  onAfterMutation?: (record: WorkbenchExtensionKanbanRendererRecord) => void;
2097
2690
  }
2098
2691
 
2692
+ declare type WorkbenchExtensionKanbanRendererRecord = z.infer<typeof extensionKanbanRendererRecordSchema>;
2693
+
2099
2694
  export declare interface WorkbenchExtensionMenuRegistration {
2100
2695
  command: Command;
2101
2696
  contribution: ExtensionMenuContribution;
@@ -2120,20 +2715,14 @@ declare interface WorkbenchExtensionRefreshEvent extends FileRendererRefreshEnve
2120
2715
 
2121
2716
  export declare type WorkbenchExtensionRendererKind = "tree" | "file" | "controls" | "dataTable" | "kanban";
2122
2717
 
2123
- export declare type WorkbenchExtensionRoute = WorkbenchExtensionMetadata["routes"][number];
2124
-
2125
- export declare interface WorkbenchExtensionRouteResourceInput {
2126
- route: WorkbenchExtensionRoute;
2127
- }
2128
-
2129
2718
  declare type WorkbenchExtensionStringResolver = (value: Localizable<string> | undefined, extensionId: string) => string;
2130
2719
 
2720
+ declare type WorkbenchExtensionTreeRendererRecord = z.infer<typeof extensionTreeRendererRecordSchema>;
2721
+
2131
2722
  declare interface WorkbenchFileIconThemeStoreState {
2132
2723
  themes: readonly FileIconThemePreferenceOption[];
2133
2724
  }
2134
2725
 
2135
- declare type WorkbenchFloatingPanelVisibility = "visible" | "hidden";
2136
-
2137
2726
  declare type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
2138
2727
 
2139
2728
  declare interface WorkbenchFocusController {
@@ -2152,6 +2741,8 @@ declare interface WorkbenchFocusState {
2152
2741
  activeRegion: WorkbenchFocusRegionId | undefined;
2153
2742
  }
2154
2743
 
2744
+ declare type WorkbenchHierarchyNode = ResourceRef | WorkbenchViewHierarchyNode;
2745
+
2155
2746
  declare interface WorkbenchHost {
2156
2747
  getSnapshot(): WorkbenchSnapshot;
2157
2748
  restoreSnapshot(snapshot: WorkbenchSnapshot): void;
@@ -2161,18 +2752,12 @@ declare interface WorkbenchHost {
2161
2752
  getPersistenceScope(): string | undefined;
2162
2753
  }
2163
2754
 
2164
- declare interface WorkbenchLastResourceController {
2165
- get(): ResourceRef | undefined;
2166
- set(resource: ResourceRef | undefined): void;
2167
- restore(): Promise<boolean>;
2168
- }
2169
-
2170
2755
  declare interface WorkbenchLayout {
2171
2756
  regions: Record<WorkbenchRegion, WorkbenchRegionState>;
2172
2757
  locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
2173
2758
  activeWidgetId?: string;
2174
2759
  activeLocationWidgetId?: string;
2175
- activeResourceUri?: string;
2760
+ activeResourceKey?: string;
2176
2761
  }
2177
2762
 
2178
2763
  declare type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
@@ -2183,22 +2768,15 @@ declare interface WorkbenchLayoutStoreState {
2183
2768
  placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;
2184
2769
  }
2185
2770
 
2186
- declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
2187
-
2188
2771
  declare interface WorkbenchLocationEligibility {
2189
2772
  modeIds?: string[];
2190
2773
  resourceKinds?: string[];
2191
2774
  resourceIds?: string[];
2192
2775
  canOpen?(resource: ResourceRef): boolean;
2193
- }
2194
-
2195
- declare interface WorkbenchLocationRef {
2196
- key: string;
2197
- modeId?: string;
2198
- resource?: ResourceRef;
2199
- contributionId?: string;
2200
- instanceKey?: string;
2201
- title?: string;
2776
+ canOpenLocation?(location: {
2777
+ resource?: ResourceRef;
2778
+ viewId?: string;
2779
+ }): boolean;
2202
2780
  }
2203
2781
 
2204
2782
  declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
@@ -2222,7 +2800,12 @@ declare type WorkbenchModeChangeListener = () => void;
2222
2800
  declare interface WorkbenchModeContribution {
2223
2801
  id: string;
2224
2802
  label?: string;
2803
+ defaultTheme?: string;
2804
+ floatingPanels?: "visible" | "hidden";
2805
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
2225
2806
  panels?: readonly WorkbenchPanelRegion[];
2807
+ /** Region-level layout policy while this mode is active. */
2808
+ regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
2226
2809
  resourceKinds?: readonly string[];
2227
2810
  defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
2228
2811
  listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
@@ -2232,6 +2815,31 @@ declare interface WorkbenchModeContribution {
2232
2815
  reconcile?(ctx: WorkbenchModeActivationContext): void;
2233
2816
  }
2234
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
+
2235
2843
  declare interface WorkbenchModeRegistry {
2236
2844
  store: WorkbenchStore<WorkbenchModeStoreState>;
2237
2845
  dispose(): void;
@@ -2265,74 +2873,7 @@ declare interface WorkbenchModuleContribution {
2265
2873
 
2266
2874
  declare type WorkbenchModuleContributionContext = WorkbenchModuleContext;
2267
2875
 
2268
- declare interface WorkbenchNavigationCommit {
2269
- modeId: string | undefined;
2270
- resource: ResourceRef | undefined;
2271
- replaceActive: boolean;
2272
- }
2273
-
2274
- declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
2275
-
2276
- declare interface WorkbenchNavigationEntry {
2277
- entryId: string;
2278
- recordedAt: number;
2279
- location: WorkbenchLocationRef;
2280
- selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
2281
- kind: "resource" | "widget" | "mode";
2282
- modeId?: string;
2283
- resource?: ResourceRef;
2284
- widgetId?: string;
2285
- contributionId?: string;
2286
- title?: string;
2287
- closedSubPanel?: WorkbenchClosedSubPanel;
2288
- }
2289
-
2290
- declare type WorkbenchNavigationResult = {
2291
- ok: true;
2292
- modeId: string | undefined;
2293
- resource: ResourceRef | undefined;
2294
- } | {
2295
- ok: false;
2296
- code: WorkbenchNavigationDiagnosticCode;
2297
- message: string;
2298
- };
2299
-
2300
- declare interface WorkbenchNavigationTarget {
2301
- modeId?: string;
2302
- resource?: ResourceRef;
2303
- replaceActive?: boolean;
2304
- }
2305
-
2306
- declare interface WorkbenchNavigator {
2307
- configure(hooks: WorkbenchNavigatorHostHooks): void;
2308
- getSelectedResource(): ResourceRef | undefined;
2309
- open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
2310
- commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
2311
- getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
2312
- forgetResource(uri: string): void;
2313
- onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
2314
- dispose(): void;
2315
- };
2316
- }
2317
-
2318
- declare interface WorkbenchNavigatorCommitInput {
2319
- modeId?: string | null;
2320
- resource?: ResourceRef | null;
2321
- replaceActive?: boolean;
2322
- present?: boolean;
2323
- }
2324
-
2325
- declare interface WorkbenchNavigatorHostHooks {
2326
- getProjectId?(): string | undefined;
2327
- getSelectedResource?(): ResourceRef | undefined;
2328
- interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
2329
- applySelection?(resource: ResourceRef | undefined): void;
2330
- applyScope?(commit: WorkbenchNavigationCommit): void;
2331
- applyBreadcrumb?(resource: ResourceRef | undefined): void;
2332
- presentResource?(resource: ResourceRef, input: {
2333
- replaceActive: boolean;
2334
- }): Promise<unknown> | unknown;
2335
- }
2876
+ declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
2336
2877
 
2337
2878
  declare interface WorkbenchNotification {
2338
2879
  id?: string;
@@ -2368,6 +2909,121 @@ declare interface WorkbenchNotificationStoreState {
2368
2909
  notifications: Record<string, RegisteredWorkbenchNotification>;
2369
2910
  }
2370
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
+
2371
3027
  declare interface WorkbenchPanelContribution {
2372
3028
  id: string;
2373
3029
  title: string;
@@ -2378,16 +3034,15 @@ declare interface WorkbenchPanelContribution {
2378
3034
  singleton?: boolean;
2379
3035
  reuse?: WorkbenchPanelReusePolicy;
2380
3036
  mountStrategy?: WorkbenchPanelMountStrategy;
3037
+ closable?: boolean;
2381
3038
  hiddenByDefault?: boolean;
2382
- subPanelsOnly?: boolean;
2383
3039
  regionSize?: WorkbenchRegionSize;
2384
3040
  regionCollapsible?: boolean;
2385
3041
  headerBorderBottom?: boolean;
2386
- floatingPanels?: WorkbenchFloatingPanelVisibility;
2387
3042
  resourceKinds?: string[];
2388
3043
  eligibleLocations?: WorkbenchLocationEligibility;
2389
3044
  priority?: number;
2390
- openCommandId?: string;
3045
+ openCommand?: WorkbenchCommandTarget;
2391
3046
  tab?: WorkbenchPanelTab;
2392
3047
  config?: unknown;
2393
3048
  canOpen?(resource: ResourceRef): boolean;
@@ -2399,11 +3054,14 @@ declare interface WorkbenchPanelContribution {
2399
3054
  declare interface WorkbenchPanelInstance {
2400
3055
  instanceId: string;
2401
3056
  panelId: string;
3057
+ placementIdentity?: PlacementIdentity;
3058
+ viewId?: string;
2402
3059
  ownerId?: string;
2403
3060
  source?: ContributionSource;
2404
3061
  resource?: ResourceRef;
2405
- resourceUri?: string;
2406
- ownerResourceUri?: string;
3062
+ section?: FileRendererSectionTarget;
3063
+ resourceKey?: string;
3064
+ ownerResourceKey?: string;
2407
3065
  title?: string;
2408
3066
  pinned?: boolean;
2409
3067
  closable: boolean;
@@ -2413,23 +3071,6 @@ declare interface WorkbenchPanelInstance {
2413
3071
  tab?: WorkbenchPanelTab;
2414
3072
  }
2415
3073
 
2416
- declare interface WorkbenchPanelInstance_2 {
2417
- instanceId: string;
2418
- panelId: string;
2419
- ownerId?: string;
2420
- source?: ContributionSource_2;
2421
- resource?: ResourceRef_2;
2422
- resourceUri?: string;
2423
- ownerResourceUri?: string;
2424
- title?: string;
2425
- pinned?: boolean;
2426
- closable: boolean;
2427
- mountStrategy?: WorkbenchPanelMountStrategy_2;
2428
- hiddenByDefault?: boolean;
2429
- tabRetention?: WorkbenchTabRetention_2;
2430
- tab?: WorkbenchPanelTab_2;
2431
- }
2432
-
2433
3074
  declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2434
3075
  region: WorkbenchPanelMenuRegion;
2435
3076
  fallbackRegion?: WorkbenchPanelMenuRegion;
@@ -2477,15 +3118,25 @@ declare const workbenchPanelMenuRegions: {
2477
3118
  };
2478
3119
  };
2479
3120
 
2480
- declare interface WorkbenchPanelMenusContribution {
2481
- panelMenus?: readonly WorkbenchPanelMenuDefinition[];
3121
+ declare type WorkbenchPanelMenuSide = "left" | "right";
3122
+
3123
+ declare interface WorkbenchPanelMenuState {
3124
+ openByMenuId: Record<string, boolean>;
2482
3125
  }
2483
3126
 
2484
- declare type WorkbenchPanelMenuSide = "left" | "right";
3127
+ declare type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
2485
3128
 
2486
- 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
+ }
2487
3138
 
2488
- declare type WorkbenchPanelMountStrategy_2 = WidgetMountStrategy_2;
3139
+ declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
2489
3140
 
2490
3141
  declare type WorkbenchPanelOpenStrategy = {
2491
3142
  kind: "persistent";
@@ -2514,29 +3165,41 @@ declare interface WorkbenchPanelRenderInput {
2514
3165
 
2515
3166
  declare type WorkbenchPanelReusePolicy = WidgetReusePolicy;
2516
3167
 
2517
- declare type WorkbenchPanelsChangeListener = (state: WorkbenchPanelsState) => void;
3168
+ declare type WorkbenchPanelTab = WorkbenchWidgetTab;
2518
3169
 
2519
- declare interface WorkbenchPanelsController {
2520
- store: WorkbenchStore<WorkbenchPanelsState>;
2521
- isOpen(regionId: string): boolean;
2522
- setOpen(regionId: string, open: boolean): void;
2523
- toggle(regionId: string): void;
2524
- setPersistenceScope(scope: string | undefined): void;
2525
- getPersistenceScope(): string | undefined;
2526
- 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;
2527
3178
  }
2528
3179
 
2529
- declare interface WorkbenchPanelsState {
2530
- openByRegionId: Record<string, boolean>;
3180
+ declare interface WorkbenchPlaceholderRegistry {
3181
+ registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable_2;
2531
3182
  }
2532
3183
 
2533
- declare type WorkbenchPanelTab = WorkbenchWidgetTab;
3184
+ declare interface WorkbenchPlacementPresentation {
3185
+ mountStrategy?: WidgetMountStrategy;
3186
+ hiddenByDefault?: boolean;
3187
+ headerBorderBottom?: boolean;
3188
+ tab?: WorkbenchPanelTab;
3189
+ config?: unknown;
3190
+ }
2534
3191
 
2535
- declare type WorkbenchPanelTab_2 = WorkbenchWidgetTab_2;
3192
+ declare interface WorkbenchReactViewBody {
3193
+ kind: "react";
3194
+ render: WorkbenchRendererRegistration["render"];
3195
+ }
2536
3196
 
2537
3197
  declare type WorkbenchRegion = (typeof workbenchRegions)[number];
2538
3198
 
2539
- 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;
2540
3203
 
2541
3204
  declare interface WorkbenchRegionSize {
2542
3205
  defaultPx?: number;
@@ -2552,35 +3215,9 @@ declare interface WorkbenchRegionState {
2552
3215
  activeWidgetId?: string;
2553
3216
  }
2554
3217
 
2555
- declare type WorkbenchRendererChangeListener = () => void;
2556
-
2557
- declare type WorkbenchRendererRegistration = {
3218
+ declare interface WorkbenchRendererRegistration {
2558
3219
  id: string;
2559
- keepAlive?: false;
2560
3220
  render: (input: WorkbenchPanelRenderInput) => unknown;
2561
- } | {
2562
- id: string;
2563
- keepAlive: true;
2564
- render: () => unknown;
2565
- };
2566
-
2567
- declare interface WorkbenchRendererRegistry {
2568
- store: WorkbenchStore<WorkbenchRendererStoreState>;
2569
- registerRenderer(renderer: WorkbenchRendererRegistration): Disposable_2;
2570
- getRenderer(id: string): WorkbenchRendererRegistration | undefined;
2571
- listRenderers(): WorkbenchRendererRegistration[];
2572
- onDidChange(listener: WorkbenchRendererChangeListener): Disposable_2;
2573
- claim(rendererId: string, slot: HTMLElement, input: WorkbenchPanelRenderInput): Disposable_2;
2574
- getHost(rendererId: string): HTMLElement | undefined;
2575
- getClaim(rendererId: string): WorkbenchPanelRenderInput | undefined;
2576
- }
2577
-
2578
- declare type WorkbenchRenderers = WorkbenchRendererRegistry & TreeRendererRegistry & KanbanRendererRegistry & DataTableRendererRegistry & FileRendererRegistry & ControlsRendererRegistry;
2579
-
2580
- declare interface WorkbenchRendererStoreState {
2581
- renderers: Record<string, WorkbenchRendererRegistration>;
2582
- hosts: Record<string, RegisteredKeepAliveHost>;
2583
- claims: Record<string, WorkbenchPanelRenderInput>;
2584
3221
  }
2585
3222
 
2586
3223
  declare interface WorkbenchShellController {
@@ -2592,7 +3229,29 @@ declare interface WorkbenchShellController {
2592
3229
  onDidChange(listener: () => void): Disposable_2;
2593
3230
  }
2594
3231
 
2595
- 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
+ }
2596
3255
 
2597
3256
  declare interface WorkbenchShellRegionState {
2598
3257
  open: boolean;
@@ -2602,6 +3261,7 @@ declare interface WorkbenchShellRegionState {
2602
3261
  declare type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
2603
3262
 
2604
3263
  declare interface WorkbenchSidePanelController {
3264
+ canFloat(): boolean;
2605
3265
  store: WorkbenchStore<WorkbenchSidePanelState>;
2606
3266
  getMode(): WorkbenchSidePanelMode;
2607
3267
  setMode(mode: WorkbenchSidePanelMode): void;
@@ -2620,6 +3280,52 @@ declare interface WorkbenchSnapshot {
2620
3280
  layout: WorkbenchLayout;
2621
3281
  }
2622
3282
 
3283
+ declare interface WorkbenchStatusBarItem {
3284
+ id: string;
3285
+ viewId: string;
3286
+ slot: WorkbenchStatusBarSlot;
3287
+ order?: number;
3288
+ isVisible?(): boolean;
3289
+ }
3290
+
3291
+ declare interface WorkbenchStatusBarRegistry {
3292
+ store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
3293
+ registerItem(item: WorkbenchStatusBarItem): Disposable_2;
3294
+ getItem(id: string): WorkbenchStatusBarItem | undefined;
3295
+ listItems(): WorkbenchStatusBarItem[];
3296
+ listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
3297
+ }
3298
+
3299
+ declare interface WorkbenchStatusBarRegistryState {
3300
+ items: Record<string, WorkbenchStatusBarItem>;
3301
+ }
3302
+
3303
+ declare type WorkbenchStatusBarSlot = "leading" | "trailing";
3304
+
3305
+ declare interface WorkbenchStatusRegistry {
3306
+ store: WorkbenchStore<WorkbenchStatusRegistryState>;
3307
+ registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable_2;
3308
+ getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
3309
+ listStatusSets(): RegisteredWorkbenchStatusSet[];
3310
+ getStatuses(id: string): readonly WorkflowStatus[] | undefined;
3311
+ load(id: string): Promise<readonly WorkflowStatus[]>;
3312
+ query(id: string): Promise<readonly WorkflowStatus[]>;
3313
+ save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
3314
+ }
3315
+
3316
+ declare interface WorkbenchStatusRegistryState {
3317
+ statusSets: Record<string, RegisteredWorkbenchStatusSet>;
3318
+ values: Record<string, readonly WorkflowStatus[]>;
3319
+ }
3320
+
3321
+ declare interface WorkbenchStatusSetContribution {
3322
+ id: string;
3323
+ title: string;
3324
+ actions?: readonly WorkflowStatusAction[];
3325
+ query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
3326
+ save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
3327
+ }
3328
+
2623
3329
  declare interface WorkbenchStore<TState> {
2624
3330
  getState(): TState;
2625
3331
  getInitialState(): TState;
@@ -2636,15 +3342,26 @@ declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
2636
3342
 
2637
3343
  declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
2638
3344
 
2639
- declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
2640
- region: WorkbenchPanelRegion;
2641
- fallbackRegion?: WorkbenchPanelRegion;
2642
- } & WorkbenchPanelMenusContribution;
3345
+ declare type WorkbenchTabAction = ({
3346
+ kind: "command";
3347
+ } & WorkbenchCommandTarget) | {
3348
+ kind: "navigation";
3349
+ target: NavigationTarget;
3350
+ };
2643
3351
 
2644
- declare interface WorkbenchSubPanelRef {
2645
- contributionId: string;
2646
- resourceUri?: string;
2647
- 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;
2648
3365
  }
2649
3366
 
2650
3367
  declare type WorkbenchTabPosition = "start" | "end" | {
@@ -2655,7 +3372,16 @@ declare type WorkbenchTabPosition = "start" | "end" | {
2655
3372
 
2656
3373
  declare type WorkbenchTabRetention = "preview" | "persistent";
2657
3374
 
2658
- 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
+ }
2659
3385
 
2660
3386
  declare interface WorkbenchTerminalController {
2661
3387
  store: WorkbenchStore<WorkbenchTerminalState>;
@@ -2664,6 +3390,7 @@ declare interface WorkbenchTerminalController {
2664
3390
  setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
2665
3391
  /** Opens a session; the live adapter stays host-side and only the id is returned. */
2666
3392
  open(input: {
3393
+ bindingId?: string;
2667
3394
  request: WorkbenchTerminalSessionRequest;
2668
3395
  title?: string;
2669
3396
  }): Promise<{
@@ -2682,6 +3409,7 @@ declare interface WorkbenchTerminalController {
2682
3409
  sessionId: string;
2683
3410
  signal?: string;
2684
3411
  }): Promise<void>;
3412
+ killBinding(bindingId: string): Promise<void>;
2685
3413
  subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
2686
3414
  getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
2687
3415
  listSessions(): WorkbenchTerminalSessionModel[];
@@ -2743,14 +3471,68 @@ declare interface WorkbenchThemeStoreState {
2743
3471
  themes: readonly ThemePreferenceOption[];
2744
3472
  }
2745
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
+
3478
+ declare interface WorkbenchViewContribution {
3479
+ id: string;
3480
+ title: string;
3481
+ icon?: string;
3482
+ body: WorkbenchViewBody;
3483
+ }
3484
+
3485
+ declare interface WorkbenchViewHierarchyNode {
3486
+ type: "view";
3487
+ viewId: string;
3488
+ label?: string;
3489
+ icon?: string;
3490
+ }
3491
+
3492
+ declare interface WorkbenchViewMenuContribution {
3493
+ id: string;
3494
+ ownerViewId: string;
3495
+ viewId: string;
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[];
3511
+ }
3512
+
3513
+ declare interface WorkbenchViewRegistry {
3514
+ store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
3515
+ registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
3516
+ getView(viewId: string): RegisteredWorkbenchView | undefined;
3517
+ listViews(): RegisteredWorkbenchView[];
3518
+ refreshView(viewId: string, input?: unknown): void;
3519
+ }
3520
+
3521
+ declare interface WorkbenchViewRegistryStoreState {
3522
+ views: Record<string, RegisteredWorkbenchView>;
3523
+ }
3524
+
2746
3525
  declare interface WorkbenchWidgetPlacement {
2747
3526
  widgetId: string;
2748
3527
  contributionId: string;
3528
+ placementIdentity?: PlacementIdentity;
3529
+ viewId?: string;
2749
3530
  ownerId?: string;
2750
3531
  source?: ContributionSource;
2751
3532
  resource?: ResourceRef;
2752
- resourceUri?: string;
2753
- ownerResourceUri?: string;
3533
+ section?: FileRendererSectionTarget;
3534
+ resourceKey?: string;
3535
+ ownerResourceKey?: string;
2754
3536
  title?: string;
2755
3537
  pinned?: boolean;
2756
3538
  closable?: boolean;
@@ -2764,15 +3546,27 @@ declare interface WorkbenchWidgetPlacement {
2764
3546
  declare type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
2765
3547
 
2766
3548
  declare interface WorkbenchWidgetTab {
2767
- contentRendererId?: string;
2768
- /** Custom actions shown when the user activates an already-active tab. */
2769
- customMenuRendererId?: string;
3549
+ getSnapshot(instance: WorkbenchPanelInstance): WorkbenchTabSnapshot;
3550
+ subscribe?(listener: () => void): {
3551
+ dispose(): void;
3552
+ } | (() => void);
3553
+ refreshEvents?: readonly string[];
2770
3554
  }
2771
3555
 
2772
- declare interface WorkbenchWidgetTab_2 {
2773
- contentRendererId?: string;
2774
- /** Custom actions shown when the user activates an already-active tab. */
2775
- customMenuRendererId?: string;
3556
+ declare interface WorkflowStatus {
3557
+ id: string;
3558
+ label: string;
3559
+ color: string;
3560
+ icon?: string | null;
3561
+ sortOrder: number;
3562
+ isDefault?: boolean;
3563
+ actions?: readonly string[];
3564
+ }
3565
+
3566
+ declare interface WorkflowStatusAction {
3567
+ id: string;
3568
+ label: string;
3569
+ icon?: string;
2776
3570
  }
2777
3571
 
2778
3572
  export { }