@pstdio/workbench 0.12.0 → 0.36.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 (36) hide show
  1. package/dist/extensions.d.ts +1133 -3590
  2. package/dist/extensions.js +2053 -2405
  3. package/dist/extensions.js.map +1 -1
  4. package/dist/file-renderer-view-DKu2l8bT.js +637 -0
  5. package/dist/file-renderer-view-DKu2l8bT.js.map +1 -0
  6. package/dist/index-DSsmgN2a.d.ts +2385 -0
  7. package/dist/index.d.ts +3 -2624
  8. package/dist/index.js +5272 -6143
  9. package/dist/index.js.map +1 -1
  10. package/dist/kanban-presentation-BWhkLbw3.d.ts +14 -0
  11. package/dist/navigation-tree-registry-CTidmvVs.js +91 -0
  12. package/dist/navigation-tree-registry-CTidmvVs.js.map +1 -0
  13. package/dist/react-BxrTklvM.js +8523 -0
  14. package/dist/react-BxrTklvM.js.map +1 -0
  15. package/dist/react.d.ts +398 -2849
  16. package/dist/react.js +2 -54
  17. package/dist/storage.d.ts +48 -282
  18. package/dist/storage.js +218 -225
  19. package/dist/storage.js.map +1 -1
  20. package/dist/webview-runtime.d.ts +8 -7
  21. package/dist/webview-runtime.js +10 -11
  22. package/dist/webview-runtime.js.map +1 -1
  23. package/dist/workbench-renderers-RPeMVtTc.js +908 -0
  24. package/dist/workbench-renderers-RPeMVtTc.js.map +1 -0
  25. package/package.json +3 -3
  26. package/dist/file-renderer-view-BJ3LX04R.js +0 -545
  27. package/dist/file-renderer-view-BJ3LX04R.js.map +0 -1
  28. package/dist/index-DwNKY4fO.js +0 -5286
  29. package/dist/index-DwNKY4fO.js.map +0 -1
  30. package/dist/react.js.map +0 -1
  31. package/dist/workbench-menu-paths-B_QJzcNU.js +0 -12
  32. package/dist/workbench-menu-paths-B_QJzcNU.js.map +0 -1
  33. package/dist/workbench-renderers-BAPxtfpZ.js +0 -877
  34. package/dist/workbench-renderers-BAPxtfpZ.js.map +0 -1
  35. package/dist/workspaces-DdUPyzkL.js +0 -1886
  36. package/dist/workspaces-DdUPyzkL.js.map +0 -1
@@ -0,0 +1,2385 @@
1
+ import { ControlValue, ControlValueMap, ControlsQueryResult, ControlsQueryResult as ControlsQueryResult$1, DockedWorkbenchRegion, DockedWorkbenchRegion as DockedWorkbenchRegion$1, FileRendererSectionTarget, KanbanRendererAttributeDisplay, Localizable, ModeRegionSettings, NavigationTargetPage, NavigationTargetPanel, PageLocation, PageMain, PageOpenIntent, PageRef, PageSlot, PlacementIdentity, PlacementItem, PlacementRef, ResourceConstraint, ResourceRef, ResourceRef as ResourceRef$1, defaultPageResourceCodec, dockedWorkbenchRegions } from "@pstdio/sdk/extensions";
2
+ //#region src/core/shared/disposable.d.ts
3
+ interface Disposable {
4
+ dispose(): void;
5
+ }
6
+ //#endregion
7
+ //#region src/core/shared/store/workbench-store.d.ts
8
+ type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
9
+ type WorkbenchStoreListener<TState> = (state: TState, previousState: TState) => void;
10
+ type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
11
+ interface WorkbenchStore<TState> {
12
+ getState(): TState;
13
+ getInitialState(): TState;
14
+ subscribe(listener: WorkbenchStoreListener<TState>): () => void;
15
+ subscribeSelector<TValue>(selector: WorkbenchStoreSelector<TState, TValue>, listener: WorkbenchStoreSelectorListener<TValue>, options?: {
16
+ equalityFn?: (left: TValue, right: TValue) => boolean;
17
+ fireImmediately?: boolean;
18
+ }): () => void;
19
+ }
20
+ //#endregion
21
+ //#region src/core/shared/context/context-key-service.d.ts
22
+ type ContextKeyValue = boolean | number | string | undefined;
23
+ interface ContextKeyStoreState {
24
+ values: Record<string, ContextKeyValue>;
25
+ }
26
+ interface ContextKeyScope extends Disposable {
27
+ ownerId: string;
28
+ set(key: string, value: ContextKeyValue): void;
29
+ get(key: string): ContextKeyValue;
30
+ delete(key: string): void;
31
+ }
32
+ interface ContextKeyService {
33
+ store: WorkbenchStore<ContextKeyStoreState>;
34
+ set(key: string, value: ContextKeyValue): void;
35
+ get(key: string): ContextKeyValue;
36
+ delete(key: string): void;
37
+ createScope(ownerId: string): ContextKeyScope;
38
+ deleteOwner(ownerId: string): void;
39
+ snapshot(): Record<string, ContextKeyValue>;
40
+ matches(expression?: string): boolean;
41
+ }
42
+ declare const matchesContextExpression: (values: Record<string, ContextKeyValue>, expression?: string) => boolean;
43
+ //#endregion
44
+ //#region src/core/shared/contributions/metadata.d.ts
45
+ type ContributionSource = "module" | "extension";
46
+ interface ContributionMetadata {
47
+ source?: ContributionSource;
48
+ ownerId?: string;
49
+ priority?: number;
50
+ }
51
+ interface RegisteredContributionMetadata {
52
+ source: ContributionSource;
53
+ ownerId: string;
54
+ priority: number;
55
+ }
56
+ //#endregion
57
+ //#region src/core/registries/resources/resource-hierarchy.d.ts
58
+ interface WorkbenchViewHierarchyNode {
59
+ type: "view";
60
+ viewId: string;
61
+ label?: string;
62
+ icon?: string;
63
+ }
64
+ type WorkbenchHierarchyNode = ResourceRef$1 | WorkbenchViewHierarchyNode;
65
+ declare const isWorkbenchViewHierarchyNode: (node: WorkbenchHierarchyNode) => node is WorkbenchViewHierarchyNode;
66
+ interface ResourceHierarchyProvider {
67
+ id: string;
68
+ priority?: number;
69
+ canResolve(resource: ResourceRef$1): boolean;
70
+ getParent(resource: ResourceRef$1): WorkbenchHierarchyNode | undefined;
71
+ }
72
+ type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
73
+ declare const resourceHierarchyCycleCode = "resource_hierarchy_cycle";
74
+ interface ResourceHierarchyCycle {
75
+ code: typeof resourceHierarchyCycleCode;
76
+ path: WorkbenchHierarchyNode[];
77
+ repeatedUri: string;
78
+ }
79
+ //#endregion
80
+ //#region src/core/registries/resources/resource-registry.d.ts
81
+ declare const workbenchResourceTypeContextKey = "workbench.resource.type";
82
+ declare const workbenchResourceIdContextKey = "workbench.resource.id";
83
+ declare const workbenchResourceMetadataContextKey: (key: string) => string;
84
+ declare const workbenchSelectionResourceKeyMetadataKey = "workbench.selectionResourceKey";
85
+ declare const createWorkbenchResourceContextValues: (resource: ResourceRef | undefined) => Record<string, ContextKeyValue>;
86
+ declare const createWorkbenchSelectionResourceMetadata: (resource: ResourceRef) => {
87
+ "workbench.selectionResourceKey": string;
88
+ };
89
+ declare const getWorkbenchSelectionResourceKeys: (resource: ResourceRef | undefined) => string[];
90
+ interface ResourceKindContribution {
91
+ kind: string;
92
+ label: string;
93
+ icon?: string;
94
+ }
95
+ interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {}
96
+ interface ResourceBrowseEntry {
97
+ resource: ResourceRef;
98
+ searchText?: string;
99
+ description?: string;
100
+ group?: string;
101
+ order?: number;
102
+ activate?: (resource: ResourceRef) => unknown | Promise<unknown>;
103
+ }
104
+ interface ResourceListContext {
105
+ primary?: ResourceRef;
106
+ }
107
+ interface ResourceProvider {
108
+ id: string;
109
+ kind: string;
110
+ list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
111
+ }
112
+ interface ResourceRegistryStoreState {
113
+ kinds: Record<string, RegisteredResourceKind>;
114
+ providers: Record<string, ResourceProvider>;
115
+ hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
116
+ }
117
+ interface ResourceRegistry {
118
+ removed(resource: ResourceRef): void;
119
+ onWillRemove(listener: (resource: ResourceRef) => readonly PlacementIdentity[]): Disposable;
120
+ store: WorkbenchStore<ResourceRegistryStoreState>;
121
+ registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable;
122
+ getKind(kind: string): RegisteredResourceKind | undefined;
123
+ listKinds(): RegisteredResourceKind[];
124
+ registerProvider(provider: ResourceProvider): Disposable;
125
+ listProviders(): ResourceProvider[];
126
+ listResources(query: string): readonly ResourceBrowseEntry[];
127
+ registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable;
128
+ listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
129
+ walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
130
+ onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable;
131
+ }
132
+ //#endregion
133
+ //#region src/core/controllers/breadcrumbs/breadcrumb-registry.d.ts
134
+ interface WorkbenchBreadcrumbItem {
135
+ title: unknown;
136
+ icon?: string;
137
+ indicator?: "session-status";
138
+ url?: string;
139
+ onClick?: () => void;
140
+ resource?: ResourceRef$1;
141
+ }
142
+ type WorkbenchBreadcrumbChangeListener = () => void;
143
+ interface WorkbenchBreadcrumbState {
144
+ items: WorkbenchBreadcrumbItem[] | undefined;
145
+ }
146
+ interface WorkbenchBreadcrumbController {
147
+ store: WorkbenchStore<WorkbenchBreadcrumbState>;
148
+ setItems(items: WorkbenchBreadcrumbItem[]): Disposable;
149
+ clearItems(): void;
150
+ getItems(): WorkbenchBreadcrumbItem[] | undefined;
151
+ onDidChange(listener: WorkbenchBreadcrumbChangeListener): Disposable;
152
+ }
153
+ //#endregion
154
+ //#region src/core/registries/commands/command-registry.d.ts
155
+ interface WorkbenchCommandExecutionError {
156
+ commandId: string;
157
+ args: unknown;
158
+ error: unknown;
159
+ }
160
+ type WorkbenchCommandExecutionErrorListener = (event: WorkbenchCommandExecutionError) => void;
161
+ interface WorkbenchCommandExecutionContext {
162
+ resource?: ResourceRef$1;
163
+ source?: "panel-add";
164
+ }
165
+ interface CommandParamOption {
166
+ label: string;
167
+ value: string;
168
+ icon?: string;
169
+ }
170
+ interface CommandParamDescriptor {
171
+ type: string;
172
+ label?: string;
173
+ description?: string;
174
+ required?: boolean;
175
+ defaultValue?: unknown;
176
+ options?: CommandParamOption[];
177
+ templateType?: string;
178
+ resourceType?: string;
179
+ accept?: string;
180
+ multiple?: boolean;
181
+ metadata?: Record<string, unknown>;
182
+ resolvedFrom?: "resource";
183
+ }
184
+ type CommandParamSchema = Record<string, CommandParamDescriptor>;
185
+ interface Command {
186
+ id: string;
187
+ label: string;
188
+ category?: string;
189
+ description?: string;
190
+ icon?: string;
191
+ when?: string;
192
+ params?: CommandParamSchema;
193
+ }
194
+ interface CommandHandler<TArgs = unknown, TResult = unknown> {
195
+ prepareArgs?(args: TArgs, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: TArgs) => void): TArgs | Promise<TArgs>;
196
+ execute(args: TArgs, context?: WorkbenchCommandExecutionContext): TResult | Promise<TResult>;
197
+ isEnabled?(args: TArgs): boolean;
198
+ isVisible?(args: TArgs): boolean;
199
+ isToggled?(args: TArgs): boolean;
200
+ }
201
+ interface RegisteredCommand extends RegisteredContributionMetadata {
202
+ command: Command;
203
+ handler: CommandHandler;
204
+ }
205
+ interface CommandRegistryStoreState {
206
+ commands: Record<string, RegisteredCommand>;
207
+ }
208
+ interface CommandRegistry {
209
+ store: WorkbenchStore<CommandRegistryStoreState>;
210
+ registerCommand<TArgs = unknown, TResult = unknown>(command: Command, handler: CommandHandler<TArgs, TResult>, metadata?: ContributionMetadata): Disposable;
211
+ getCommand(id: string): RegisteredCommand | undefined;
212
+ listCommands(): RegisteredCommand[];
213
+ isCommandEnabled(id: string, args?: unknown): boolean;
214
+ isCommandVisible(id: string, args?: unknown): boolean;
215
+ isCommandToggled(id: string, args?: unknown): boolean;
216
+ prepareCommandArgs(id: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown>;
217
+ executeCommand(id: string, args?: unknown, context?: WorkbenchCommandExecutionContext): Promise<unknown>;
218
+ onDidExecuteError(listener: WorkbenchCommandExecutionErrorListener): Disposable;
219
+ }
220
+ //#endregion
221
+ //#region src/core/controllers/command-palette/command-palette-controller.d.ts
222
+ type WorkbenchCommandPaletteChangeListener = (open: boolean) => void;
223
+ type WorkbenchCommandPaletteView = "main" | "theme";
224
+ interface WorkbenchCommandParamsRequest {
225
+ record: {
226
+ command: {
227
+ id: string;
228
+ label: string;
229
+ params?: CommandParamSchema;
230
+ };
231
+ };
232
+ label: string;
233
+ args?: unknown;
234
+ context?: WorkbenchCommandExecutionContext;
235
+ }
236
+ interface WorkbenchCommandPaletteState {
237
+ open: boolean;
238
+ view: WorkbenchCommandPaletteView;
239
+ initialQuery: string;
240
+ paramsRequest: WorkbenchCommandParamsRequest | null;
241
+ }
242
+ interface WorkbenchCommandPaletteOpenInput {
243
+ view?: WorkbenchCommandPaletteView;
244
+ initialQuery?: string;
245
+ }
246
+ interface WorkbenchCommandPaletteController {
247
+ store: WorkbenchStore<WorkbenchCommandPaletteState>;
248
+ isOpen(): boolean;
249
+ getView(): WorkbenchCommandPaletteView;
250
+ getInitialQuery(): string;
251
+ getParamsRequest(): WorkbenchCommandParamsRequest | null;
252
+ open(input?: WorkbenchCommandPaletteOpenInput): void;
253
+ close(): void;
254
+ toggle(): void;
255
+ requestParams(request: WorkbenchCommandParamsRequest): void;
256
+ clearParams(): void;
257
+ onDidChange(listener: WorkbenchCommandPaletteChangeListener): Disposable;
258
+ }
259
+ //#endregion
260
+ //#region src/core/registries/navigation/navigation-registry.d.ts
261
+ /** Core-only panel ref for host-owned shell placements. Extensions cannot address them. */
262
+ interface ShellPlacementRef {
263
+ kind: "shell-placement";
264
+ id: string;
265
+ }
266
+ interface NavigationTargetShellPanel {
267
+ kind: "panel";
268
+ panel: ShellPlacementRef;
269
+ resource?: NavigationTargetPanel["resource"];
270
+ open?: NavigationTargetPanel["open"];
271
+ title?: string;
272
+ }
273
+ type NavigationTargetPanel$1 = NavigationTargetPanel | NavigationTargetShellPanel;
274
+ type NavigationTargetPage$1 = NavigationTargetPage;
275
+ type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
276
+ interface NavigationTargetCommand {
277
+ kind: "command";
278
+ commandId: string;
279
+ args?: unknown;
280
+ }
281
+ interface NavigationTargetHref {
282
+ kind: "href";
283
+ href: string;
284
+ }
285
+ type NavigationTargetItem = NavigationTargetPage$1 | NavigationTargetPanel$1 | NavigationTargetCommand | NavigationTargetHref;
286
+ interface NavigationTargetCompound {
287
+ kind: "compound";
288
+ targets: readonly (NavigationTargetPage$1 | NavigationTargetPanel$1)[];
289
+ }
290
+ type NavigationTarget$1 = NavigationTargetItem | NavigationTargetCompound;
291
+ interface NavigationParser {
292
+ id: string;
293
+ priority?: number;
294
+ canParse(location: string): boolean;
295
+ parse(location: string): NavigationTarget$1;
296
+ }
297
+ type RegisteredNavigationParser = Omit<NavigationParser, "priority"> & RegisteredContributionMetadata;
298
+ interface NavigationDispatcherContext {
299
+ canOpenPanel?(target: NavigationTargetPanel$1): boolean;
300
+ canExecuteCommand?(commandId: string): boolean;
301
+ prepareNavigation?(targets: readonly (NavigationTargetPage$1 | NavigationTargetPanel$1)[]): {
302
+ commit(): unknown;
303
+ };
304
+ openPanelTarget?(target: NavigationTargetPanel$1): unknown;
305
+ openPageTarget?(target: NavigationTargetPage$1): unknown;
306
+ executeCommand(commandId: string, args?: unknown): Promise<unknown> | unknown;
307
+ openHref?(href: string): Promise<unknown> | unknown;
308
+ }
309
+ interface NavigationRegistryStoreState {
310
+ parsers: Record<string, RegisteredNavigationParser>;
311
+ }
312
+ interface NavigationRegistry {
313
+ store: WorkbenchStore<NavigationRegistryStoreState>;
314
+ registerParser(parser: NavigationParser, metadata?: ContributionMetadata): Disposable;
315
+ listParsers(): RegisteredNavigationParser[];
316
+ resolveLocation(location: string): NavigationTarget$1;
317
+ openTarget(target: NavigationTarget$1): Promise<readonly unknown[]>;
318
+ /** Opens a page location through the shared executor. */
319
+ openPage(target: Omit<NavigationTargetPage$1, "kind">): Promise<readonly unknown[]>;
320
+ /** Opens or activates an owned panel through the shared executor. */
321
+ openPanel(target: DistributiveOmit<NavigationTargetPanel$1, "kind">): Promise<readonly unknown[]>;
322
+ navigate(location: string): Promise<readonly unknown[]>;
323
+ }
324
+ //#endregion
325
+ //#region src/core/registries/layout/layout-regions.d.ts
326
+ 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"];
327
+ type WorkbenchRegion = (typeof workbenchRegions)[number];
328
+ declare const workbenchPanelRegions: readonly ["main", "secondary", "side"];
329
+ type WorkbenchPanelRegion = (typeof workbenchPanelRegions)[number];
330
+ type WorkbenchPanelMenuSide = "left" | "right";
331
+ declare const workbenchPanelMenuRegions: {
332
+ readonly main: {
333
+ readonly left: "main-left-menu";
334
+ readonly right: "main-right-menu";
335
+ };
336
+ readonly secondary: {
337
+ readonly left: "secondary-left-menu";
338
+ readonly right: "secondary-right-menu";
339
+ };
340
+ readonly side: {
341
+ readonly left: "side-left-menu";
342
+ readonly right: "side-right-menu";
343
+ };
344
+ };
345
+ type WorkbenchPanelMenuRegion = (typeof workbenchPanelMenuRegions)[WorkbenchPanelRegion][WorkbenchPanelMenuSide];
346
+ //#endregion
347
+ //#region src/core/registries/layout/layout-types.d.ts
348
+ interface WorkbenchRegionSize {
349
+ defaultPx?: number;
350
+ minPx?: number;
351
+ maxPx?: number;
352
+ }
353
+ /** Region-level layout policy owned by the active mode or the host, never by a placement. */
354
+ type WorkbenchRegionSettings = ModeRegionSettings;
355
+ type WidgetReusePolicy = "resource" | "none";
356
+ type WidgetMountStrategy = "active" | "keep-mounted";
357
+ type WorkbenchPanelReusePolicy = WidgetReusePolicy;
358
+ type WorkbenchPanelMountStrategy = WidgetMountStrategy;
359
+ type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
360
+ type WorkbenchTabRetention = "preview" | "persistent";
361
+ type WorkbenchTabPosition = "start" | "end" | {
362
+ beforeWidgetId: string;
363
+ } | {
364
+ afterWidgetId: string;
365
+ };
366
+ interface WorkbenchLocationEligibility {
367
+ modeIds?: string[];
368
+ resourceKinds?: string[];
369
+ resourceIds?: string[];
370
+ canOpen?(resource: ResourceRef$1): boolean;
371
+ canOpenLocation?(location: {
372
+ resource?: ResourceRef$1;
373
+ viewId?: string;
374
+ }): boolean;
375
+ }
376
+ type WorkbenchPanelMenuOwner = {
377
+ level: "panel";
378
+ contributionId?: string;
379
+ } | {
380
+ level: "sub-panel";
381
+ contributionId: string;
382
+ };
383
+ interface WorkbenchCommandTarget {
384
+ commandId: string;
385
+ args?: unknown;
386
+ }
387
+ type WorkbenchTabAction = ({
388
+ kind: "command";
389
+ } & WorkbenchCommandTarget) | {
390
+ kind: "navigation";
391
+ target: NavigationTarget$1;
392
+ };
393
+ interface WorkbenchTabMenuRow {
394
+ id: string;
395
+ label: string;
396
+ icon?: string;
397
+ iconColor?: string;
398
+ selected?: boolean;
399
+ disabled?: boolean;
400
+ action?: WorkbenchTabAction;
401
+ }
402
+ interface WorkbenchTabMenuGroup {
403
+ id: string;
404
+ rows: readonly WorkbenchTabMenuRow[];
405
+ }
406
+ interface WorkbenchTabSnapshot {
407
+ label?: string;
408
+ icon?: string;
409
+ indicator?: {
410
+ icon: string;
411
+ color?: string;
412
+ label?: string;
413
+ };
414
+ menu?: readonly WorkbenchTabMenuGroup[];
415
+ }
416
+ interface WorkbenchWidgetTab {
417
+ getSnapshot(instance: WorkbenchPanelInstance): WorkbenchTabSnapshot;
418
+ subscribe?(listener: () => void): {
419
+ dispose(): void;
420
+ } | (() => void);
421
+ refreshEvents?: readonly string[];
422
+ }
423
+ type WorkbenchPanelTab = WorkbenchWidgetTab;
424
+ interface WidgetContribution {
425
+ id: string;
426
+ title: string;
427
+ icon?: string;
428
+ region: WorkbenchRegion;
429
+ fallbackRegion?: WorkbenchRegion;
430
+ singleton?: boolean;
431
+ reuse?: WidgetReusePolicy;
432
+ mountStrategy?: WidgetMountStrategy;
433
+ closable?: boolean;
434
+ hiddenByDefault?: boolean;
435
+ regionSize?: WorkbenchRegionSize;
436
+ regionCollapsible?: boolean;
437
+ headerBorderBottom?: boolean;
438
+ resourceKinds?: string[];
439
+ priority?: number;
440
+ rendererId: string;
441
+ openCommand?: WorkbenchCommandTarget;
442
+ eligibleLocations?: WorkbenchLocationEligibility;
443
+ panelMenuOwner?: WorkbenchPanelMenuOwner;
444
+ tab?: WorkbenchWidgetTab;
445
+ config?: unknown;
446
+ canOpen?(resource: ResourceRef$1): boolean;
447
+ }
448
+ interface WorkbenchPanelMenuDefinition {
449
+ id: string;
450
+ title: string;
451
+ icon?: string;
452
+ side: WorkbenchPanelMenuSide;
453
+ singleton?: boolean;
454
+ reuse?: WorkbenchPanelReusePolicy;
455
+ mountStrategy?: WorkbenchPanelMountStrategy;
456
+ hiddenByDefault?: boolean;
457
+ regionSize?: WorkbenchRegionSize;
458
+ regionCollapsible?: boolean;
459
+ headerBorderBottom?: boolean;
460
+ rendererId: string;
461
+ priority?: number;
462
+ config?: unknown;
463
+ }
464
+ interface WorkbenchPanelContribution {
465
+ id: string;
466
+ title: string;
467
+ icon?: string;
468
+ region: WorkbenchRegion;
469
+ fallbackRegion?: WorkbenchRegion;
470
+ rendererId: string;
471
+ singleton?: boolean;
472
+ reuse?: WorkbenchPanelReusePolicy;
473
+ mountStrategy?: WorkbenchPanelMountStrategy;
474
+ closable?: boolean;
475
+ hiddenByDefault?: boolean;
476
+ regionSize?: WorkbenchRegionSize;
477
+ regionCollapsible?: boolean;
478
+ headerBorderBottom?: boolean;
479
+ resourceKinds?: string[];
480
+ eligibleLocations?: WorkbenchLocationEligibility;
481
+ priority?: number;
482
+ openCommand?: WorkbenchCommandTarget;
483
+ tab?: WorkbenchPanelTab;
484
+ config?: unknown;
485
+ canOpen?(resource: ResourceRef$1): boolean;
486
+ ownerId?: string;
487
+ source?: ContributionSource;
488
+ panelMenus?: readonly WorkbenchPanelMenuDefinition[];
489
+ }
490
+ type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
491
+ region: WorkbenchPanelMenuRegion;
492
+ fallbackRegion?: WorkbenchPanelMenuRegion;
493
+ };
494
+ type RegisteredWidgetContribution = Omit<WidgetContribution, "priority" | "singleton" | "reuse"> & {
495
+ ownedPanelMenuIds?: readonly string[];
496
+ singleton: boolean;
497
+ reuse: WidgetReusePolicy;
498
+ } & RegisteredContributionMetadata;
499
+ interface PlaceholderContribution {
500
+ id: string;
501
+ title: string;
502
+ region: WorkbenchRegion;
503
+ rendererId: string;
504
+ regionSize?: WorkbenchRegionSize;
505
+ regionCollapsible?: boolean;
506
+ config?: unknown;
507
+ priority?: number;
508
+ }
509
+ type RegisteredPlaceholderContribution = Omit<PlaceholderContribution, "priority"> & RegisteredContributionMetadata;
510
+ interface WorkbenchWidgetPlacement {
511
+ widgetId: string;
512
+ contributionId: string;
513
+ placementIdentity?: PlacementIdentity;
514
+ viewId?: string;
515
+ ownerId?: string;
516
+ source?: ContributionSource;
517
+ resource?: ResourceRef$1;
518
+ section?: FileRendererSectionTarget;
519
+ resourceKey?: string;
520
+ ownerResourceKey?: string;
521
+ title?: string;
522
+ pinned?: boolean;
523
+ closable?: boolean;
524
+ mountStrategy?: WidgetMountStrategy;
525
+ hiddenByDefault?: boolean;
526
+ tabRetention?: WorkbenchTabRetention;
527
+ tab?: WorkbenchWidgetTab;
528
+ role?: WorkbenchWidgetRole;
529
+ }
530
+ interface WorkbenchPanelInstance {
531
+ instanceId: string;
532
+ panelId: string;
533
+ placementIdentity?: PlacementIdentity;
534
+ viewId?: string;
535
+ ownerId?: string;
536
+ source?: ContributionSource;
537
+ resource?: ResourceRef$1;
538
+ section?: FileRendererSectionTarget;
539
+ resourceKey?: string;
540
+ ownerResourceKey?: string;
541
+ title?: string;
542
+ pinned?: boolean;
543
+ closable: boolean;
544
+ mountStrategy?: WorkbenchPanelMountStrategy;
545
+ hiddenByDefault?: boolean;
546
+ tabRetention?: WorkbenchTabRetention;
547
+ tab?: WorkbenchPanelTab;
548
+ }
549
+ interface WorkbenchRegionState {
550
+ id: WorkbenchRegion;
551
+ visible: boolean;
552
+ size?: number;
553
+ widgets: WorkbenchWidgetPlacement[];
554
+ activeWidgetId?: string;
555
+ }
556
+ interface WorkbenchLayout {
557
+ regions: Record<WorkbenchRegion, WorkbenchRegionState>;
558
+ locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
559
+ activeWidgetId?: string;
560
+ activeLocationWidgetId?: string;
561
+ activeResourceKey?: string;
562
+ }
563
+ interface WorkbenchLayoutStoreState {
564
+ layout: WorkbenchLayout;
565
+ widgets: Record<string, RegisteredWidgetContribution>;
566
+ placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;
567
+ }
568
+ interface OpenWidgetInput {
569
+ viewId?: string | null;
570
+ resource?: ResourceRef$1 | null;
571
+ title?: string;
572
+ region?: WorkbenchRegion;
573
+ role?: WorkbenchWidgetRole;
574
+ ownerId?: string;
575
+ source?: ContributionSource;
576
+ pinned?: boolean;
577
+ closable?: boolean;
578
+ mountStrategy?: WidgetMountStrategy;
579
+ hiddenByDefault?: boolean;
580
+ tabRetention?: WorkbenchTabRetention;
581
+ tabPosition?: WorkbenchTabPosition;
582
+ tab?: WorkbenchWidgetTab;
583
+ replaceActive?: boolean;
584
+ replaceWidgetId?: string;
585
+ }
586
+ type WorkbenchPanelOpenStrategy = {
587
+ kind: "persistent";
588
+ position?: WorkbenchTabPosition;
589
+ } | {
590
+ kind: "replace-active";
591
+ } | {
592
+ kind: "replace-panel";
593
+ instanceId: string;
594
+ retention?: WorkbenchTabRetention;
595
+ } | {
596
+ kind: "preview";
597
+ position?: WorkbenchTabPosition;
598
+ };
599
+ interface OpenWorkbenchPanelInput {
600
+ /** Set by the view registry. Low-level layout callers should leave this undefined. */
601
+ viewId?: string | null;
602
+ /** `null` explicitly clears an existing singleton placement's resource binding. */
603
+ resource?: ResourceRef$1 | null;
604
+ title?: string;
605
+ region?: WorkbenchRegion;
606
+ role?: WorkbenchWidgetRole;
607
+ pinned?: boolean;
608
+ closable?: boolean;
609
+ mountStrategy?: WorkbenchPanelMountStrategy;
610
+ hiddenByDefault?: boolean;
611
+ tab?: WorkbenchPanelTab;
612
+ strategy?: WorkbenchPanelOpenStrategy;
613
+ }
614
+ //#endregion
615
+ //#region src/core/registries/layout/layout-model-types.d.ts
616
+ type LayoutScope = string;
617
+ interface LayoutPersistenceAdapter {
618
+ getLayout(scope?: LayoutScope): WorkbenchLayout | undefined;
619
+ setLayout(layout: WorkbenchLayout, scope?: LayoutScope): void;
620
+ listScopes?(projectId: string): LayoutScope[];
621
+ transformLayouts?(projectId: string, transform: (layout: WorkbenchLayout, scope: LayoutScope) => WorkbenchLayout | undefined): void;
622
+ getCompatibilityMarker?(key: string): string | undefined;
623
+ setCompatibilityMarker?(key: string, value: string): void;
624
+ advanceWriteGeneration?(): number;
625
+ flush?(): void;
626
+ dispose?(): void;
627
+ }
628
+ interface LayoutModel {
629
+ store: WorkbenchStore<WorkbenchLayoutStoreState>;
630
+ registerPlaceholder(placeholder: PlaceholderContribution, metadata?: ContributionMetadata): {
631
+ dispose(): void;
632
+ };
633
+ registerPanel(panel: WorkbenchPanelContribution, metadata?: ContributionMetadata): {
634
+ dispose(): void;
635
+ };
636
+ registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
637
+ dispose(): void;
638
+ };
639
+ registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
640
+ dispose(): void;
641
+ };
642
+ unregisterWidget(id: string, options?: {
643
+ removePlacements?: boolean;
644
+ persist?: boolean;
645
+ }): void;
646
+ getPlaceholder(regionId: WorkbenchRegion): RegisteredPlaceholderContribution | undefined;
647
+ getWidget(id: string): RegisteredWidgetContribution | undefined;
648
+ getPanel(id: string): WorkbenchPanelContribution | undefined;
649
+ getRegionSize(regionId: WorkbenchRegion): WorkbenchRegionSize | undefined;
650
+ getRegionSettings(regionId: WorkbenchRegion): WorkbenchRegionSettings | undefined;
651
+ getRegionCollapsible(regionId: WorkbenchRegion): boolean;
652
+ getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
653
+ setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
654
+ setRegionSize(regionId: WorkbenchRegion, size: number): void;
655
+ listPlaceholders(): RegisteredPlaceholderContribution[];
656
+ listWidgets(): RegisteredWidgetContribution[];
657
+ listPanels(): WorkbenchPanelContribution[];
658
+ listPanelInstances(region?: WorkbenchRegion): WorkbenchPanelInstance[];
659
+ getActivePanel(region?: WorkbenchRegion): WorkbenchPanelInstance | undefined;
660
+ openWidget(id: string, input?: OpenWidgetInput): WorkbenchWidgetPlacement;
661
+ openPanel(id: string, input?: OpenWorkbenchPanelInput): WorkbenchPanelInstance;
662
+ updatePanel(instanceId: string, input: OpenWorkbenchPanelInput): WorkbenchPanelInstance;
663
+ reorderPanel(instanceId: string, position: WorkbenchTabPosition): void;
664
+ activatePanel(instanceId: string): WorkbenchPanelInstance;
665
+ closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
666
+ updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
667
+ reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
668
+ expirePreviewTabs(ownerResourceKey?: string): void;
669
+ activateWidget(widgetId: string): WorkbenchWidgetPlacement;
670
+ setRegionActiveWidget(regionId: WorkbenchRegion, widgetId: string | undefined): void;
671
+ closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
672
+ removeWidgetPlacement(widgetId: string): WorkbenchWidgetPlacement | undefined;
673
+ clearRegion(regionId: WorkbenchRegion): void;
674
+ resetRegions(): void;
675
+ getLayout(): WorkbenchLayout;
676
+ restoreLayout(layout: WorkbenchLayout): void;
677
+ setPersistenceScope(scope: LayoutScope | undefined, input?: {
678
+ carryRegionState?: readonly WorkbenchRegion[];
679
+ }): void;
680
+ getPersistenceScope(): LayoutScope | undefined;
681
+ /** True when the current persistence scope already stores a layout. A new scope returns false. */
682
+ /** Whether anything is stored for the active scope right now. */
683
+ hasPersistedLayout(): boolean;
684
+ /**
685
+ * Whether the active scope was entered with a layout the user already had. Unlike
686
+ * `hasPersistedLayout`, writes made while entering a mode do not change the answer.
687
+ */
688
+ enteredWithPersistedLayout(): boolean;
689
+ /** Moves owned panel menus beside their owner's current region and removes orphan menus. */
690
+ reconcilePanelMenus(): void;
691
+ onWillChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
692
+ dispose(): void;
693
+ };
694
+ onDidChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
695
+ dispose(): void;
696
+ };
697
+ }
698
+ //#endregion
699
+ //#region src/core/controllers/focus/focus-controller.d.ts
700
+ declare const workbenchFocusRegions: readonly ["activity", "sidenav", "main", "secondary", "side", "status"];
701
+ type WorkbenchFocusRegionId = (typeof workbenchFocusRegions)[number];
702
+ type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
703
+ interface WorkbenchFocusState {
704
+ activeRegion: WorkbenchFocusRegionId | undefined;
705
+ }
706
+ interface WorkbenchFocusController {
707
+ store: WorkbenchStore<WorkbenchFocusState>;
708
+ setActiveRegion(region: WorkbenchFocusRegionId): void;
709
+ clearFocus(): void;
710
+ getActiveRegion(): WorkbenchFocusRegionId | undefined;
711
+ onDidChange(listener: WorkbenchFocusChangeListener): Disposable;
712
+ }
713
+ //#endregion
714
+ //#region src/core/registries/layout/placement-reconciliation.d.ts
715
+ interface ResolvedOwnedPlacement<Value = unknown> {
716
+ identity: PlacementIdentity;
717
+ region: WorkbenchRegion;
718
+ order: number;
719
+ value: Value;
720
+ }
721
+ interface OwnedPlacementUpdate<Value> {
722
+ current: ResolvedOwnedPlacement<Value>;
723
+ desired: ResolvedOwnedPlacement<Value>;
724
+ }
725
+ interface OwnedPlacementReconciliation<Value> {
726
+ add: readonly ResolvedOwnedPlacement<Value>[];
727
+ retain: readonly ResolvedOwnedPlacement<Value>[];
728
+ update: readonly OwnedPlacementUpdate<Value>[];
729
+ activate: readonly ResolvedOwnedPlacement<Value>[];
730
+ remove: readonly ResolvedOwnedPlacement<Value>[];
731
+ }
732
+ //#endregion
733
+ //#region src/core/registries/renderers/renderer-registry.d.ts
734
+ interface WorkbenchPanelRenderInput {
735
+ workbench: WorkbenchCore;
736
+ panel: WorkbenchPanelContribution | PlaceholderContribution | RegisteredPlaceholderContribution;
737
+ instance: WorkbenchPanelInstance;
738
+ refresh: () => void;
739
+ }
740
+ interface WorkbenchRendererRegistration {
741
+ id: string;
742
+ render: (input: WorkbenchPanelRenderInput) => unknown;
743
+ }
744
+ //#endregion
745
+ //#region src/core/registries/renderers/controls-renderer-registry.d.ts
746
+ type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
747
+ interface ControlsRendererLayout {
748
+ region?: ControlsRendererRegion;
749
+ defaultPx?: number;
750
+ minPx?: number;
751
+ maxPx?: number;
752
+ }
753
+ interface ControlsUpdateValueInput {
754
+ controlId: string;
755
+ value: ControlValue;
756
+ values: ControlValueMap;
757
+ resource?: ResourceRef$1;
758
+ }
759
+ interface ControlsApplyInput {
760
+ values: ControlValueMap;
761
+ resource?: ResourceRef$1;
762
+ }
763
+ interface ControlsResetInput {
764
+ controlIds?: string[];
765
+ resource?: ResourceRef$1;
766
+ }
767
+ interface ControlsRendererContribution {
768
+ id: string;
769
+ title: string;
770
+ resourceKind?: string;
771
+ emptyTitle?: string;
772
+ emptyDescription?: string;
773
+ layout?: ControlsRendererLayout;
774
+ defaultValues?: ControlValueMap;
775
+ /** Load the control declarations + current values for the active resource. */
776
+ executeQuery(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<ControlsQueryResult> | ControlsQueryResult;
777
+ /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
778
+ updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
779
+ /** Commit the full value map from a sticky footer. */
780
+ apply?(input: ControlsApplyInput): Promise<void> | void;
781
+ /** Reset some or all controls to their defaults. */
782
+ reset?(input: ControlsResetInput): Promise<void> | void;
783
+ subscribe?: (listener: () => void) => Disposable | (() => void);
784
+ }
785
+ //#endregion
786
+ //#region src/core/registries/renderers/data-table-renderer-registry.d.ts
787
+ interface DataTableRendererThemeColor {
788
+ light: string;
789
+ dark: string;
790
+ foreground?: {
791
+ light: string;
792
+ dark: string;
793
+ };
794
+ }
795
+ type DataTableRendererColumnStat = {
796
+ type: "unique";
797
+ } | {
798
+ type: "histogram";
799
+ bins?: number;
800
+ } | {
801
+ type: "top-values";
802
+ limit?: number;
803
+ };
804
+ type DataTableRendererBadgePalette = "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink";
805
+ type DataTableRendererColumnRenderer = {
806
+ type: "json";
807
+ } | {
808
+ type: "color-scale";
809
+ stops: Array<{
810
+ value: number;
811
+ color: DataTableRendererThemeColor;
812
+ }>;
813
+ } | {
814
+ type: "categorical-color";
815
+ categories: Array<{
816
+ value: string | number | boolean | null;
817
+ color: DataTableRendererThemeColor;
818
+ }>;
819
+ } | {
820
+ type: "badge";
821
+ categories?: Array<{
822
+ value: string | number | boolean | null;
823
+ palette: DataTableRendererBadgePalette;
824
+ }>;
825
+ } | {
826
+ type: "diff";
827
+ } | {
828
+ type: "date";
829
+ } | {
830
+ type: "path";
831
+ };
832
+ interface DataTableRendererColumn {
833
+ id: string;
834
+ label?: string;
835
+ description?: string;
836
+ icon?: unknown;
837
+ hidden?: boolean;
838
+ /** Starts unchecked in the column menu; viewers can still show the column. */
839
+ defaultHidden?: boolean;
840
+ stat?: DataTableRendererColumnStat;
841
+ renderer?: DataTableRendererColumnRenderer;
842
+ }
843
+ interface DataTableRendererRow {
844
+ id: string;
845
+ values: Record<string, unknown>;
846
+ resource?: ResourceRef$1;
847
+ }
848
+ interface DataTableRendererQueryResult {
849
+ rows: DataTableRendererRow[];
850
+ columns?: DataTableRendererColumn[];
851
+ }
852
+ interface DataTableRendererQueryContext {
853
+ resource?: ResourceRef$1;
854
+ modeId?: string;
855
+ }
856
+ interface DataTableRendererRowAction {
857
+ id: string;
858
+ label: string;
859
+ icon?: unknown;
860
+ destructive?: boolean;
861
+ run(row: DataTableRendererRow): Promise<void> | void;
862
+ }
863
+ interface DataTableRendererSelectionAction {
864
+ id: string;
865
+ label: string;
866
+ icon?: unknown;
867
+ destructive?: boolean;
868
+ run(rows: DataTableRendererRow[]): Promise<void> | void;
869
+ }
870
+ interface DataTableRendererContribution {
871
+ id: string;
872
+ title: string;
873
+ resourceKind?: string;
874
+ columns?: DataTableRendererColumn[];
875
+ selectionMode?: "none" | "multiple";
876
+ selectionActions?: DataTableRendererSelectionAction[];
877
+ rowActions?: DataTableRendererRowAction[];
878
+ initialPageSize?: number;
879
+ pageSizeOptions?: number[];
880
+ /** Whether column statistics start visible. Defaults to `true`. */
881
+ defaultShowStats?: boolean;
882
+ emptyTitle?: string;
883
+ emptyDescription?: string;
884
+ /** Context keys that choose which rows the query returns. A change drops the old rows and starts a new read. */
885
+ contextKeys?: string[];
886
+ executeQuery(context: DataTableRendererQueryContext, signal: AbortSignal): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
887
+ subscribe?: (listener: () => void) => Disposable | (() => void);
888
+ onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
889
+ }
890
+ interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {}
891
+ //#endregion
892
+ //#region src/core/registries/renderers/file-renderer-registry.d.ts
893
+ interface FileRendererContent {
894
+ fileName?: string;
895
+ /** Workspace-relative path shown above the file preview. */
896
+ filePath?: string;
897
+ mimeType?: string;
898
+ content?: string;
899
+ dataUrl?: string;
900
+ placeholder?: string;
901
+ /** Override contribution-level save support for one loaded file. */
902
+ editable?: boolean;
903
+ /** Request Monaco for text that automatic dispatch would open as markdown. */
904
+ textRenderer?: "automatic" | "monaco";
905
+ /** Represent a deliberate no-file selection without an editable blank document. */
906
+ emptyState?: {
907
+ title: string;
908
+ description?: string;
909
+ };
910
+ /** Ordered backing-store revision when one is available. */
911
+ revision?: string;
912
+ }
913
+ interface FileRendererRefreshOrigin {
914
+ rendererId: string;
915
+ instanceId: string;
916
+ operationId: string;
917
+ }
918
+ interface FileRendererRefreshEnvelope {
919
+ resourceKey?: string;
920
+ origin?: FileRendererRefreshOrigin;
921
+ revision?: string;
922
+ }
923
+ interface FileRendererSaveResult {
924
+ revision?: string;
925
+ }
926
+ interface FileRendererContribution {
927
+ id: string;
928
+ title: string;
929
+ resourceKind?: string;
930
+ /** Resolve the file's content (and identity) for the bound resource. */
931
+ load(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<FileRendererContent> | FileRendererContent;
932
+ /** Persist edited text. Absent ⇒ read-only. Never called for images. */
933
+ save?(resource: ResourceRef$1 | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
934
+ }
935
+ //#endregion
936
+ //#region src/core/registries/renderers/kanban-renderer-contracts.d.ts
937
+ /**
938
+ * Core-owned contracts for kanban renderer contributions. @pstdio/ui's
939
+ * KanbanRenderer props are structurally identical; the React layer bridges the
940
+ * two, so drift surfaces as a compile error there instead of coupling core's
941
+ * API shape to UI package ownership.
942
+ */
943
+ type ViewMode = "board" | "list";
944
+ type SortDirection = "asc" | "desc";
945
+ declare const NO_GROUPING = "none";
946
+ declare const MANUAL_ORDERING = "manual";
947
+ interface EnumOption {
948
+ value: string;
949
+ label: string;
950
+ color?: string;
951
+ icon?: string | null;
952
+ }
953
+ /**
954
+ * Reactive options source for enum / enum-multi attributes. Mirrors React's
955
+ * useSyncExternalStore contract so a contribution can hand its options off as
956
+ * a live collection instead of a frozen array.
957
+ */
958
+ interface EnumOptionsSource {
959
+ subscribe: (listener: () => void) => () => void;
960
+ getSnapshot: () => EnumOption[];
961
+ }
962
+ type EnumOptions = EnumOption[] | EnumOptionsSource;
963
+ type AttributeType = {
964
+ kind: "enum";
965
+ options: EnumOptions;
966
+ } | {
967
+ kind: "enum-multi";
968
+ options: EnumOptions;
969
+ } | {
970
+ kind: "string";
971
+ } | {
972
+ kind: "date";
973
+ } | {
974
+ kind: "number";
975
+ } | {
976
+ kind: "user";
977
+ };
978
+ type AttributeKind = AttributeType["kind"];
979
+ type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
980
+ interface AttributeDescriptor<TNode = unknown> {
981
+ id: string;
982
+ label: string;
983
+ type: AttributeType;
984
+ filterable?: boolean;
985
+ groupable?: boolean;
986
+ sortable?: boolean;
987
+ displayable?: boolean;
988
+ editable?: boolean;
989
+ display?: AttributeDisplayDescriptor;
990
+ render?: (value: unknown, row: KanbanRendererRow) => TNode;
991
+ compare?: (a: unknown, b: unknown) => number;
992
+ }
993
+ /**
994
+ * Reactive source for an entire attribute schema. Lets a contribution
995
+ * add/remove/edit attributes at runtime without re-registering.
996
+ */
997
+ interface AttributesSource<TNode = unknown> {
998
+ subscribe: (listener: () => void) => () => void;
999
+ getSnapshot: () => AttributeDescriptor<TNode>[];
1000
+ }
1001
+ interface KanbanRendererRow {
1002
+ id: string;
1003
+ title: string;
1004
+ /**
1005
+ * Optional navigation handle. When set, the renderer's default click handler
1006
+ * routes through the contribution's onRowActivate (which typically opens the
1007
+ * resource via the workbench).
1008
+ */
1009
+ resource?: unknown;
1010
+ attributes: Record<string, unknown>;
1011
+ }
1012
+ interface KanbanRendererOrdering {
1013
+ attributeId: string | typeof MANUAL_ORDERING;
1014
+ direction: SortDirection;
1015
+ }
1016
+ interface KanbanRendererSettings {
1017
+ viewMode: ViewMode;
1018
+ columnGrouping: string | typeof NO_GROUPING;
1019
+ rowGrouping: string | typeof NO_GROUPING;
1020
+ ordering: KanbanRendererOrdering;
1021
+ displayProperties: string[];
1022
+ }
1023
+ type KanbanRendererFilterState = Record<string, string[]>;
1024
+ interface KanbanRendererSavedView {
1025
+ id: string;
1026
+ title: string;
1027
+ settings: KanbanRendererSettings;
1028
+ filters: KanbanRendererFilterState;
1029
+ isDefault?: boolean;
1030
+ }
1031
+ type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
1032
+ interface KanbanRendererCreateField {
1033
+ id: string;
1034
+ label: string;
1035
+ description?: string;
1036
+ placeholder?: string;
1037
+ type: KanbanRendererCreateFieldType;
1038
+ required?: boolean;
1039
+ defaultValue?: unknown;
1040
+ options?: EnumOption[];
1041
+ /** `files` fields only. */
1042
+ multiple?: boolean;
1043
+ accept?: string;
1044
+ }
1045
+ /** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */
1046
+ interface KanbanRendererCreateLabels {
1047
+ cancel: string;
1048
+ properties: string;
1049
+ submitError: string;
1050
+ removeFile: string;
1051
+ }
1052
+ interface KanbanRendererCreateRowConfig {
1053
+ title: string;
1054
+ submitLabel: string;
1055
+ fields: KanbanRendererCreateField[];
1056
+ labels: KanbanRendererCreateLabels;
1057
+ }
1058
+ interface KanbanRendererCreateSubmission {
1059
+ columnId: string;
1060
+ columnAttributeId?: string;
1061
+ /** Declared field values, excluding `files` fields — those arrive as `files`. */
1062
+ values: Record<string, unknown>;
1063
+ /** Every editable attribute the user set, keyed by attribute id. */
1064
+ attributeValues: Record<string, unknown>;
1065
+ files: File[];
1066
+ }
1067
+ interface BoardColumnAction<TIcon = unknown> {
1068
+ id: string;
1069
+ label: string;
1070
+ icon: TIcon;
1071
+ }
1072
+ /** Board-column behavior and menu configuration for a resolved column group. */
1073
+ interface BoardColumnConfig<TIcon = unknown> {
1074
+ /** Color palette token used for the column header and group badges. */
1075
+ color?: string;
1076
+ canDragIn?: boolean;
1077
+ canDragOut?: boolean;
1078
+ canCreate?: boolean;
1079
+ actions?: BoardColumnAction<TIcon>[];
1080
+ }
1081
+ /** Row-level context menu action surfaced by the renderer. */
1082
+ interface ResourceContextAction<TNode = unknown> {
1083
+ key: string;
1084
+ label: string;
1085
+ onClick: () => Promise<void> | void;
1086
+ isDisabled?: boolean;
1087
+ icon?: TNode;
1088
+ endContent?: TNode;
1089
+ separatorBefore?: boolean;
1090
+ }
1091
+ //#endregion
1092
+ //#region src/core/registries/renderers/kanban-renderer-registry.d.ts
1093
+ interface KanbanRendererQueryState {
1094
+ settings: KanbanRendererSettings;
1095
+ filters: KanbanRendererFilterState;
1096
+ }
1097
+ interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
1098
+ id: string;
1099
+ title: string;
1100
+ resourceKind?: string;
1101
+ /** Host-owned scope for persisted display settings. */
1102
+ storageScope?: string;
1103
+ /**
1104
+ * Declarative attribute schema. The renderer dispatches filter / group /
1105
+ * sort / display / inline-edit behavior on each descriptor's `type.kind`.
1106
+ *
1107
+ * Pass an `AttributesSource` ({ subscribe, getSnapshot }) instead of a
1108
+ * static array to let the contribution mutate its schema at runtime —
1109
+ * `WorkbenchKanbanView` subscribes so additions / removals / kind changes
1110
+ * propagate live without re-registering the renderer.
1111
+ */
1112
+ attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
1113
+ /** Per-board-column overrides (color, drag/create rules, custom actions). */
1114
+ getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
1115
+ hideToolbar?: boolean;
1116
+ emptyTitle?: string;
1117
+ emptyDescription?: string;
1118
+ /** Initial settings/filters applied when the kanban renderer mounts. */
1119
+ defaultSettings?: Partial<KanbanRendererSettings>;
1120
+ defaultFilters?: KanbanRendererFilterState;
1121
+ defaultViews?: KanbanRendererSavedView[];
1122
+ defaultActiveViewId?: string;
1123
+ /**
1124
+ * Data source. Receives the current display state so backends can paginate
1125
+ * / filter / sort. The renderer re-applies filter / sort / group locally,
1126
+ * so this can return unfiltered rows in simple cases.
1127
+ */
1128
+ executeQuery(state: KanbanRendererQueryState, signal: AbortSignal): Promise<TRow[]> | TRow[];
1129
+ subscribe?: (listener: () => void) => Disposable | (() => void);
1130
+ /** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
1131
+ onRowActivate?: (row: TRow) => Promise<void> | void;
1132
+ /** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
1133
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
1134
+ /**
1135
+ * Fires for inline attribute edits AND for cross-column drag-to-reorder on
1136
+ * the board (the renderer passes the grouping attribute id + the target
1137
+ * column value).
1138
+ */
1139
+ onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
1140
+ /** Manual within-column reorder (only fires when ordering is manual). */
1141
+ onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
1142
+ createRow?: KanbanRendererCreateRowConfig;
1143
+ onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
1144
+ onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
1145
+ }
1146
+ //#endregion
1147
+ //#region src/core/registries/menus/menu-registry.d.ts
1148
+ type MenuPath = readonly string[];
1149
+ interface MenuItem {
1150
+ commandId: string;
1151
+ sourceCommandId?: string;
1152
+ label?: string;
1153
+ description?: string;
1154
+ icon?: string;
1155
+ iconSrc?: string;
1156
+ overflowLabel?: string;
1157
+ when?: string;
1158
+ group?: string;
1159
+ order?: number;
1160
+ args?: unknown;
1161
+ readOnly?: boolean;
1162
+ /** Marks a menu action that navigates outside the app, rendered with a trailing external-link icon. */
1163
+ external?: boolean;
1164
+ }
1165
+ interface RegisteredMenuItem extends MenuItem, RegisteredContributionMetadata {
1166
+ path: MenuPath;
1167
+ }
1168
+ interface MenuRegistryStoreState {
1169
+ itemsByPath: Record<string, RegisteredMenuItem[]>;
1170
+ }
1171
+ interface MenuRegistry {
1172
+ menuStore: WorkbenchStore<MenuRegistryStoreState>;
1173
+ registerMenuItem(path: MenuPath, item: MenuItem, metadata?: ContributionMetadata): Disposable;
1174
+ listMenuItems(path: MenuPath): RegisteredMenuItem[];
1175
+ }
1176
+ //#endregion
1177
+ //#region src/core/registries/renderers/tree-renderer-types.d.ts
1178
+ interface TreeQueryContext {
1179
+ signal?: AbortSignal;
1180
+ filter?: string;
1181
+ resource?: ResourceRef$1;
1182
+ /** Widget/view contribution id for trees rendered through a view-backed widget. */
1183
+ viewId?: string;
1184
+ }
1185
+ interface TreeContext extends TreeQueryContext {
1186
+ state: Readonly<TreeRendererState>;
1187
+ refresh(): void;
1188
+ setSelectedNode(nodeId: string | undefined): void;
1189
+ }
1190
+ interface TreeAction {
1191
+ id: string;
1192
+ label?: string;
1193
+ icon?: string;
1194
+ commandId?: string;
1195
+ args?: unknown;
1196
+ params?: CommandParamSchema;
1197
+ submitLabel?: string;
1198
+ when?: string;
1199
+ disabled?: boolean;
1200
+ run?(args?: unknown): Promise<void> | void;
1201
+ }
1202
+ type TreeNodeRowVariant = "empty-state";
1203
+ interface TreeNodeInlineInput {
1204
+ ariaLabel: string;
1205
+ defaultValue?: string;
1206
+ placeholder?: string;
1207
+ onCommit(value: string): Promise<void> | void;
1208
+ onCancel?(): void;
1209
+ }
1210
+ interface TreeNode {
1211
+ id: string;
1212
+ selected?: boolean;
1213
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
1214
+ moveScope?: string;
1215
+ label: string;
1216
+ icon?: string;
1217
+ iconElement?: unknown;
1218
+ iconColor?: string;
1219
+ iconTooltip?: string;
1220
+ endContent?: unknown;
1221
+ commandId?: string;
1222
+ resource?: ResourceRef$1;
1223
+ target?: NavigationTarget$1;
1224
+ /** Visual row variant for non-data rows such as placeholders. */
1225
+ rowVariant?: TreeNodeRowVariant;
1226
+ inlineInput?: TreeNodeInlineInput;
1227
+ actions?: TreeAction[];
1228
+ contextMenuActions?: TreeAction[];
1229
+ contextMenuPath?: MenuPath;
1230
+ menuPath?: MenuPath;
1231
+ menuPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "left-start";
1232
+ showContextMenuTrigger?: boolean;
1233
+ collapsible?: boolean;
1234
+ disabled?: boolean;
1235
+ children?: TreeNode[];
1236
+ description?: string;
1237
+ contextValue?: string;
1238
+ hiddenByDefault?: boolean;
1239
+ /** When true, the node (e.g. a header/footer row) opts in to the tree's hide/show customization menu. */
1240
+ canHide?: boolean;
1241
+ /** When false, the node stays fixed within its Sidenav group. */
1242
+ canReorder?: boolean;
1243
+ /** Allow this node to be moved to another tree location. */
1244
+ canDrag?: boolean;
1245
+ /** Allow movable nodes to be dropped on this node. */
1246
+ canDrop?: boolean;
1247
+ }
1248
+ interface TreeSectionEmptyState {
1249
+ title: string;
1250
+ description?: string;
1251
+ icon?: string;
1252
+ }
1253
+ interface TreeViewSection {
1254
+ id: string;
1255
+ /** Host-owned customization boundary. Extension callbacks cannot set it. */
1256
+ moveScope?: string;
1257
+ label?: string;
1258
+ actions?: TreeAction[];
1259
+ collapsible?: boolean;
1260
+ emptyState?: TreeSectionEmptyState;
1261
+ nodes: TreeNode[];
1262
+ hiddenByDefault?: boolean;
1263
+ /** When true, the section (category) opts in to the tree's hide/show customization menu. */
1264
+ canHide?: boolean;
1265
+ /** When false, the section stays fixed within the Sidenav main region. */
1266
+ canReorder?: boolean;
1267
+ }
1268
+ interface TreeMoveEndpoint {
1269
+ kind: "section" | "node";
1270
+ sectionId: string;
1271
+ id: string;
1272
+ moveScope?: string;
1273
+ }
1274
+ type TreeMovePolicy = (move: {
1275
+ source: TreeMoveEndpoint;
1276
+ destination: TreeMoveEndpoint;
1277
+ }) => boolean;
1278
+ interface TreeRendererContribution {
1279
+ id: string;
1280
+ title: string;
1281
+ icon?: string;
1282
+ searchable?: boolean;
1283
+ searchPlaceholder?: string;
1284
+ when?: string;
1285
+ defaultExpandedSectionIds?: string[];
1286
+ defaultExpandedNodeIds?: string[];
1287
+ getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1288
+ getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1289
+ getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1290
+ getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1291
+ canMove?: TreeMovePolicy;
1292
+ moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
1293
+ }
1294
+ interface RegisteredTreeRendererContribution extends TreeRendererContribution, RegisteredContributionMetadata {}
1295
+ interface TreeRendererState {
1296
+ expandedNodeIds: string[];
1297
+ expandedSectionIds: string[];
1298
+ selectedNodeId?: string;
1299
+ loading?: boolean;
1300
+ }
1301
+ interface TreeRendererRefreshEvent {
1302
+ treeId: string;
1303
+ }
1304
+ interface TreeRendererStoreState {
1305
+ trees: Record<string, RegisteredTreeRendererContribution>;
1306
+ statesByTreeId: Record<string, TreeRendererState>;
1307
+ refreshKeysByTreeId: Record<string, number>;
1308
+ }
1309
+ interface PersistedTreeRendererStates {
1310
+ statesByTreeId: Record<string, TreeRendererState>;
1311
+ }
1312
+ interface TreeRendererPersistenceAdapter {
1313
+ getTreeStates(): PersistedTreeRendererStates | undefined;
1314
+ setTreeStates(states: PersistedTreeRendererStates): void;
1315
+ }
1316
+ type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
1317
+ treeId: string;
1318
+ }) => unknown;
1319
+ type TreeRendererRefreshListener = (event: TreeRendererRefreshEvent) => void;
1320
+ interface TreeRendererRegistry {
1321
+ treeStore: WorkbenchStore<TreeRendererStoreState>;
1322
+ registerTreeRenderer(view: TreeRendererContribution, metadata?: ContributionMetadata): Disposable;
1323
+ setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1324
+ getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1325
+ listTreeRenderers(): RegisteredTreeRendererContribution[];
1326
+ getBody(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1327
+ getHeader(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1328
+ getFooter(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
1329
+ getChildren(id: string, node: TreeNode, ctx?: TreeQueryContext): Promise<TreeNode[]>;
1330
+ getTreeState(id: string): TreeRendererState;
1331
+ setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1332
+ setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
1333
+ setSelectedNode(id: string, nodeId: string | undefined): void;
1334
+ setLoading(id: string, loading: boolean): void;
1335
+ refresh(id: string): void;
1336
+ onDidRefresh(listener: TreeRendererRefreshListener): Disposable;
1337
+ }
1338
+ //#endregion
1339
+ //#region src/core/registries/views/renderer-read-registry.d.ts
1340
+ interface RendererReadRequest<T> {
1341
+ queryKey: string;
1342
+ load(signal: AbortSignal): Promise<T> | T;
1343
+ onValue(value: T): void;
1344
+ onError(error: unknown): void;
1345
+ }
1346
+ interface RendererReadBinding {
1347
+ request<T>(request: RendererReadRequest<T>, reason?: "refresh" | "retry"): void;
1348
+ dispose(): void;
1349
+ }
1350
+ interface RendererReadRegistry {
1351
+ bind(key: string): RendererReadBinding;
1352
+ dispose(): Promise<void>;
1353
+ }
1354
+ declare const createRendererReadRegistry: (options?: {
1355
+ deadlineMs?: number;
1356
+ }) => RendererReadRegistry;
1357
+ //#endregion
1358
+ //#region src/core/registries/views/view-registry.d.ts
1359
+ declare const workbenchViewIdContextKey = "workbench.view.id";
1360
+ type NativeViewBody<Kind extends string, Contribution> = {
1361
+ kind: Kind;
1362
+ } & Omit<Contribution, "id" | "title" | "icon">;
1363
+ interface WorkbenchReactViewBody {
1364
+ kind: "react";
1365
+ render: WorkbenchRendererRegistration["render"];
1366
+ }
1367
+ type WorkbenchViewBody = WorkbenchReactViewBody | NativeViewBody<"tree", TreeRendererContribution> | NativeViewBody<"file", FileRendererContribution> | NativeViewBody<"controls", ControlsRendererContribution> | NativeViewBody<"kanban", KanbanRendererContribution> | NativeViewBody<"dataTable", DataTableRendererContribution>;
1368
+ interface WorkbenchViewContribution {
1369
+ id: string;
1370
+ title: string;
1371
+ icon?: string;
1372
+ body: WorkbenchViewBody;
1373
+ }
1374
+ type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
1375
+ interface WorkbenchViewRegistryStoreState {
1376
+ views: Record<string, RegisteredWorkbenchView>;
1377
+ }
1378
+ interface WorkbenchViewRegistry {
1379
+ reads: RendererReadRegistry;
1380
+ store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
1381
+ registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable;
1382
+ getView(viewId: string): RegisteredWorkbenchView | undefined;
1383
+ listViews(): RegisteredWorkbenchView[];
1384
+ refreshView(viewId: string, input?: unknown): void;
1385
+ }
1386
+ interface CreateWorkbenchViewRegistryInput {
1387
+ registerBody(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable & {
1388
+ refresh?(input?: unknown): void;
1389
+ };
1390
+ }
1391
+ declare const createViewRegistry: (input: CreateWorkbenchViewRegistryInput) => WorkbenchViewRegistry;
1392
+ //#endregion
1393
+ //#region src/core/registries/view-menus/view-menu-registry.d.ts
1394
+ interface WorkbenchViewMenuContribution {
1395
+ id: string;
1396
+ ownerViewId: string;
1397
+ viewId: string;
1398
+ side: "left" | "right";
1399
+ priority?: number;
1400
+ mountStrategy?: "active" | "keep-mounted";
1401
+ hiddenByDefault?: boolean;
1402
+ regionSize?: WorkbenchRegionSize;
1403
+ regionCollapsible?: boolean;
1404
+ headerBorderBottom?: boolean;
1405
+ config?: unknown;
1406
+ }
1407
+ interface WorkbenchViewMenuRegistry {
1408
+ registerViewMenu(menu: WorkbenchViewMenuContribution): Disposable;
1409
+ getViewMenu(id: string): WorkbenchViewMenuContribution | undefined;
1410
+ listViewMenus(ownerViewId?: string): WorkbenchViewMenuContribution[];
1411
+ definitionsFor(ownerViewId: string, placementId: string): readonly WorkbenchPanelMenuDefinition[];
1412
+ }
1413
+ //#endregion
1414
+ //#region src/core/registries/views/view-placement.d.ts
1415
+ interface WorkbenchPlacementPresentation {
1416
+ mountStrategy?: WidgetMountStrategy;
1417
+ hiddenByDefault?: boolean;
1418
+ headerBorderBottom?: boolean;
1419
+ tab?: WorkbenchPanelTab;
1420
+ config?: unknown;
1421
+ }
1422
+ //#endregion
1423
+ //#region src/core/registries/pages/page-registry-types.d.ts
1424
+ interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
1425
+ readonly isAvailable?: (resource: ResourceRef | undefined) => boolean;
1426
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
1427
+ }
1428
+ type WorkbenchPageMain = PageMain extends (infer Main) ? Main extends PageMain ? Omit<Main, "tab"> & {
1429
+ readonly tab?: WorkbenchPlacementPresentation["tab"];
1430
+ } : never : never;
1431
+ interface WorkbenchPageContribution {
1432
+ id: string;
1433
+ ref: PageRef;
1434
+ title?: Localizable<string>;
1435
+ icon?: string;
1436
+ path: string;
1437
+ modeId: string;
1438
+ parentId?: string;
1439
+ resource?: ResourceConstraint;
1440
+ main: WorkbenchPageMain;
1441
+ slots: readonly WorkbenchPageSlot[];
1442
+ }
1443
+ interface WorkbenchPageResourceCodec {
1444
+ normalize(resource: ResourceRef): ResourceRef;
1445
+ toUri(resource: ResourceRef): string;
1446
+ fromUri(uri: string): ResourceRef | undefined;
1447
+ }
1448
+ interface WorkbenchPageSlotOpenInput {
1449
+ pageId: string;
1450
+ slotId: string;
1451
+ resource?: ResourceRef;
1452
+ open?: PageOpenIntent;
1453
+ }
1454
+ interface WorkbenchPageSlotInstance {
1455
+ instanceKey: string;
1456
+ resource: ResourceRef;
1457
+ section?: FileRendererSectionTarget;
1458
+ open?: PageOpenIntent;
1459
+ }
1460
+ interface WorkbenchPageRuntimeState {
1461
+ openStaticSlotIds: readonly string[];
1462
+ resourceInstances: Readonly<Record<string, readonly WorkbenchPageSlotInstance[]>>;
1463
+ activePrimaryInstanceKey?: string;
1464
+ }
1465
+ interface WorkbenchPageRegistryStoreState<Value> {
1466
+ pages: Readonly<Record<string, WorkbenchPageContribution>>;
1467
+ pageStates: Readonly<Record<string, WorkbenchPageRuntimeState>>;
1468
+ projectId?: string;
1469
+ location?: PageLocation;
1470
+ activeModeId?: string;
1471
+ activePageId?: string;
1472
+ placements: readonly ResolvedOwnedPlacement<Value>[];
1473
+ reconciliation: OwnedPlacementReconciliation<Value>;
1474
+ }
1475
+ interface WorkbenchPageRegistry<Value> {
1476
+ store: WorkbenchStore<WorkbenchPageRegistryStoreState<Value>>;
1477
+ registerPage(page: WorkbenchPageContribution): {
1478
+ dispose(): void;
1479
+ };
1480
+ getPage(pageId: string): WorkbenchPageContribution | undefined;
1481
+ listPages(): WorkbenchPageContribution[];
1482
+ pinPlacement(identity: PlacementIdentity): void;
1483
+ openSlot(input: WorkbenchPageSlotOpenInput): void;
1484
+ }
1485
+ //#endregion
1486
+ //#region src/core/controllers/page-location/page-location-types.d.ts
1487
+ interface WorkbenchPageBrowserEntry {
1488
+ url: string;
1489
+ state?: unknown;
1490
+ }
1491
+ interface WorkbenchPageLocationBrowser {
1492
+ current(): WorkbenchPageBrowserEntry;
1493
+ push(entry: WorkbenchPageBrowserEntry): void;
1494
+ replace(entry: WorkbenchPageBrowserEntry): void;
1495
+ back(): void;
1496
+ forward(): void;
1497
+ onPopState(listener: (entry: WorkbenchPageBrowserEntry) => void): {
1498
+ dispose(): void;
1499
+ };
1500
+ }
1501
+ interface WorkbenchPageLocationPersistence {
1502
+ load(projectId: string): PageLocation | undefined;
1503
+ save(projectId: string, location: PageLocation): void;
1504
+ }
1505
+ interface WorkbenchPageLocationDiagnostic {
1506
+ code: "page-location-unresolved";
1507
+ source: "boot" | "history" | "navigation" | "project-switch";
1508
+ message: string;
1509
+ }
1510
+ type WorkbenchPageNavigationResult = {
1511
+ ok: true;
1512
+ location: PageLocation;
1513
+ } | {
1514
+ ok: false;
1515
+ diagnostic: WorkbenchPageLocationDiagnostic;
1516
+ };
1517
+ interface WorkbenchPageLocationController {
1518
+ historyStore: WorkbenchStore<WorkbenchPageLocationHistoryState>;
1519
+ setProject(projectId: string): void;
1520
+ clearProject(): void;
1521
+ isCurrentProjectUrl(projectId: string): boolean;
1522
+ hasCurrentPageUrl(projectId: string): boolean;
1523
+ boot(projectId: string): WorkbenchPageNavigationResult;
1524
+ switchProject(projectId: string): WorkbenchPageNavigationResult;
1525
+ navigate(target: NavigationTargetPage): WorkbenchPageNavigationResult;
1526
+ replay(location: PageLocation): WorkbenchPageNavigationResult;
1527
+ navigateToParent(): WorkbenchPageNavigationResult;
1528
+ closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
1529
+ removeResource(resource: ResourceRef, retained: readonly PlacementIdentity[]): void;
1530
+ goBack(): void;
1531
+ goForward(): void;
1532
+ dispose(): void;
1533
+ }
1534
+ interface WorkbenchPageLocationHistoryState {
1535
+ canGoBack: boolean;
1536
+ canGoForward: boolean;
1537
+ }
1538
+ //#endregion
1539
+ //#region src/core/controllers/panel-menus/panel-menu-state-controller.d.ts
1540
+ interface WorkbenchPanelMenuState {
1541
+ openByMenuId: Record<string, boolean>;
1542
+ }
1543
+ interface PersistedWorkbenchPanelMenuState {
1544
+ openByMenuId: Record<string, boolean>;
1545
+ }
1546
+ interface WorkbenchPanelMenuStatePersistenceAdapter {
1547
+ getMenuStates(scope?: string): PersistedWorkbenchPanelMenuState | undefined;
1548
+ setMenuStates(state: PersistedWorkbenchPanelMenuState, scope?: string): void;
1549
+ }
1550
+ type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
1551
+ interface WorkbenchPanelMenuStateController {
1552
+ store: WorkbenchStore<WorkbenchPanelMenuState>;
1553
+ isOpen(menuId: string): boolean;
1554
+ setOpen(menuId: string, open: boolean): void;
1555
+ toggle(menuId: string): void;
1556
+ setPersistenceScope(scope: string | undefined): void;
1557
+ getPersistenceScope(): string | undefined;
1558
+ onDidChange(listener: WorkbenchPanelMenuStateChangeListener): Disposable;
1559
+ }
1560
+ //#endregion
1561
+ //#region src/core/controllers/side-panel/side-panel-controller.d.ts
1562
+ type WorkbenchSidePanelMode = "floating" | "closed" | "attached";
1563
+ type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
1564
+ interface WorkbenchSidePanelState {
1565
+ mode: WorkbenchSidePanelMode;
1566
+ }
1567
+ interface WorkbenchSidePanelController {
1568
+ canFloat(): boolean;
1569
+ store: WorkbenchStore<WorkbenchSidePanelState>;
1570
+ getMode(): WorkbenchSidePanelMode;
1571
+ setMode(mode: WorkbenchSidePanelMode): void;
1572
+ onDidChange(listener: WorkbenchSidePanelChangeListener): Disposable;
1573
+ }
1574
+ interface WorkbenchSidePanelPersistenceAdapter {
1575
+ getMode(): WorkbenchSidePanelMode | undefined;
1576
+ setMode(mode: WorkbenchSidePanelMode): void;
1577
+ }
1578
+ //#endregion
1579
+ //#region src/core/controllers/shell/shell-controller.d.ts
1580
+ type WorkbenchSidePanelPresentation = WorkbenchSidePanelMode;
1581
+ type WorkbenchShellOpenRegion = "sidenav" | "secondary" | "side";
1582
+ interface WorkbenchShellRegionState {
1583
+ open: boolean;
1584
+ size?: number;
1585
+ }
1586
+ interface WorkbenchShellController {
1587
+ getRegionState(region: WorkbenchRegion): WorkbenchShellRegionState;
1588
+ setRegionOpen(region: WorkbenchShellOpenRegion, open: boolean): void;
1589
+ setRegionSize(region: WorkbenchRegion, size: number): void;
1590
+ getSidePanelPresentation(): WorkbenchSidePanelPresentation;
1591
+ setSidePanelPresentation(presentation: WorkbenchSidePanelPresentation): void;
1592
+ onDidChange(listener: () => void): Disposable;
1593
+ }
1594
+ //#endregion
1595
+ //#region src/core/controllers/terminal/terminal-controller.d.ts
1596
+ interface WorkbenchTerminalSessionRequest {
1597
+ command?: string[];
1598
+ cwd?: string;
1599
+ env?: Record<string, string>;
1600
+ cols: number;
1601
+ rows: number;
1602
+ }
1603
+ interface WorkbenchTerminalSessionExit {
1604
+ code: number | null;
1605
+ signal: string | null;
1606
+ }
1607
+ interface WorkbenchTerminalSessionError {
1608
+ message: string;
1609
+ }
1610
+ interface WorkbenchTerminalSessionAdapter {
1611
+ readonly id: string;
1612
+ write(data: string | Uint8Array): void;
1613
+ resize(cols: number, rows: number): void;
1614
+ kill(signal?: string): Promise<void> | void;
1615
+ onData(handler: (chunk: Uint8Array) => void): () => void;
1616
+ /** Foreground process name updates, when the opener can report them (real PTYs). */
1617
+ onTitle?(handler: (title: string) => void): () => void;
1618
+ onExit(handler: (exit: WorkbenchTerminalSessionExit) => void): () => void;
1619
+ onError(handler: (error: WorkbenchTerminalSessionError) => void): () => void;
1620
+ }
1621
+ type WorkbenchTerminalSessionOpener = (request: WorkbenchTerminalSessionRequest) => Promise<WorkbenchTerminalSessionAdapter>;
1622
+ type WorkbenchTerminalSessionStatus = "running" | "exited" | "killed";
1623
+ interface WorkbenchTerminalSessionModel {
1624
+ id: string;
1625
+ title: string;
1626
+ status: WorkbenchTerminalSessionStatus;
1627
+ exit?: WorkbenchTerminalSessionExit;
1628
+ }
1629
+ interface WorkbenchTerminalState {
1630
+ sessionsById: Record<string, WorkbenchTerminalSessionModel>;
1631
+ }
1632
+ interface WorkbenchTerminalSessionSink {
1633
+ onData?(chunk: Uint8Array): void;
1634
+ onExit?(exit: WorkbenchTerminalSessionExit): void;
1635
+ onError?(error: WorkbenchTerminalSessionError): void;
1636
+ }
1637
+ interface WorkbenchTerminalController {
1638
+ store: WorkbenchStore<WorkbenchTerminalState>;
1639
+ /** True once the host injected a session opener. */
1640
+ isAvailable(): boolean;
1641
+ setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
1642
+ /** Opens a session; the live adapter stays host-side and only the id is returned. */
1643
+ open(input: {
1644
+ bindingId?: string;
1645
+ request: WorkbenchTerminalSessionRequest;
1646
+ title?: string;
1647
+ }): Promise<{
1648
+ sessionId: string;
1649
+ }>;
1650
+ write(input: {
1651
+ sessionId: string;
1652
+ data: string | Uint8Array;
1653
+ }): void;
1654
+ resize(input: {
1655
+ sessionId: string;
1656
+ cols: number;
1657
+ rows: number;
1658
+ }): void;
1659
+ kill(input: {
1660
+ sessionId: string;
1661
+ signal?: string;
1662
+ }): Promise<void>;
1663
+ killBinding(bindingId: string): Promise<void>;
1664
+ subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
1665
+ getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
1666
+ listSessions(): WorkbenchTerminalSessionModel[];
1667
+ /** Kills every live session. Called when the owning workbench is torn down. */
1668
+ dispose(): Promise<void>;
1669
+ }
1670
+ //#endregion
1671
+ //#region src/core/registries/command-palette-resources/command-palette-resource-registry.d.ts
1672
+ interface CommandPaletteResourceQueryContext {
1673
+ query: string;
1674
+ limit: number;
1675
+ }
1676
+ interface CommandPaletteResourceResult {
1677
+ id: string;
1678
+ label: string;
1679
+ description?: string;
1680
+ icon?: string;
1681
+ keywords?: string[];
1682
+ group?: string;
1683
+ activate(): void | Promise<void>;
1684
+ }
1685
+ interface CommandPaletteResourceProvider {
1686
+ id: string;
1687
+ title: string;
1688
+ refreshEventIds?: string[];
1689
+ query(context: CommandPaletteResourceQueryContext): Promise<readonly CommandPaletteResourceResult[]>;
1690
+ }
1691
+ interface CommandPaletteResourceProviderResult {
1692
+ providerId: string;
1693
+ title: string;
1694
+ results: readonly CommandPaletteResourceResult[];
1695
+ }
1696
+ interface CommandPaletteResourceRegistryStoreState {
1697
+ providers: Record<string, CommandPaletteResourceProvider>;
1698
+ refreshToken: number;
1699
+ }
1700
+ interface CommandPaletteResourceRegistry {
1701
+ store: WorkbenchStore<CommandPaletteResourceRegistryStoreState>;
1702
+ registerProvider(provider: CommandPaletteResourceProvider): Disposable;
1703
+ listProviders(): CommandPaletteResourceProvider[];
1704
+ queryProviders(context: CommandPaletteResourceQueryContext): Promise<CommandPaletteResourceProviderResult[]>;
1705
+ refresh(): void;
1706
+ }
1707
+ //#endregion
1708
+ //#region src/core/registries/keybindings/keybinding-registry.d.ts
1709
+ interface Keybinding {
1710
+ /** Action the chord executes through the shared navigation executor. */
1711
+ action: NavigationTarget$1;
1712
+ keybinding: KeybindingSequence;
1713
+ when?: string;
1714
+ }
1715
+ type KeybindingSequence = string | string[];
1716
+ interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {}
1717
+ interface KeybindingRegistryStoreState {
1718
+ keybindings: RegisteredKeybinding[];
1719
+ }
1720
+ interface KeybindingRegistry {
1721
+ store: WorkbenchStore<KeybindingRegistryStoreState>;
1722
+ registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable;
1723
+ listKeybindings(): RegisteredKeybinding[];
1724
+ listActiveKeybindings(): RegisteredKeybinding[];
1725
+ /** Chords bound to plain command actions, for rendering shortcut hints beside commands. */
1726
+ listCommandKeybindings(): {
1727
+ commandId: string;
1728
+ keybinding: KeybindingSequence;
1729
+ }[];
1730
+ }
1731
+ declare const getKeybindingSteps: (keybinding: KeybindingSequence) => string[];
1732
+ //#endregion
1733
+ //#region src/core/registries/placements/owned-placement-lifecycle.d.ts
1734
+ type WorkbenchOwnedPlacementItem = PlacementItem;
1735
+ //#endregion
1736
+ //#region src/core/registries/placements/owned-placement-preparation.d.ts
1737
+ interface OwnedPlacementLocationContext {
1738
+ modeId: string;
1739
+ pageId?: string;
1740
+ projectId?: string;
1741
+ location?: PageLocation;
1742
+ }
1743
+ //#endregion
1744
+ //#region src/core/registries/modes/mode-placement-registry.d.ts
1745
+ interface WorkbenchModePlacementContribution extends WorkbenchPlacementPresentation {
1746
+ readonly id: string;
1747
+ readonly ref: PlacementRef;
1748
+ readonly modeId: string;
1749
+ readonly item: WorkbenchOwnedPlacementItem;
1750
+ readonly region: DockedWorkbenchRegion;
1751
+ readonly order?: number;
1752
+ readonly movableTo?: readonly DockedWorkbenchRegion[];
1753
+ }
1754
+ interface OpenModePlacementTarget {
1755
+ panel: PlacementRef;
1756
+ resource?: ResourceRef$1;
1757
+ open?: PageOpenIntent;
1758
+ }
1759
+ interface WorkbenchModePlacementRegistry {
1760
+ registerPlacement(placement: WorkbenchModePlacementContribution): Disposable;
1761
+ getPlacement(ref: PlacementRef): WorkbenchModePlacementContribution | undefined;
1762
+ listPlacements(modeId?: string): WorkbenchModePlacementContribution[];
1763
+ openPlacement(input: OpenModePlacementTarget): PlacementIdentity;
1764
+ updatePlacement(identity: PlacementIdentity, input: {
1765
+ resource?: ResourceRef$1;
1766
+ title?: string;
1767
+ open?: PageOpenIntent;
1768
+ }): void;
1769
+ closePlacement(identity: PlacementIdentity): void;
1770
+ resolvePlacements(modeId: string, context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
1771
+ onDidChange(listener: () => void): Disposable;
1772
+ }
1773
+ //#endregion
1774
+ //#region src/core/registries/navigation/navigation-tree-registry.d.ts
1775
+ type NavigationTreeSlot = "header" | "content" | "footer";
1776
+ interface NavigationTreeOwner {
1777
+ kind: "mode" | "page";
1778
+ id: string;
1779
+ extensionId: string;
1780
+ }
1781
+ interface NavigationTreeContext {
1782
+ resource?: ResourceRef$1;
1783
+ signal?: AbortSignal;
1784
+ }
1785
+ interface NavigationTreeContribution {
1786
+ id: string;
1787
+ /** Prefix projected section and node ids when they come from an independent tree renderer. */
1788
+ idScope?: string;
1789
+ owner: NavigationTreeOwner;
1790
+ sourceExtensionId: string;
1791
+ declarationIndex: number;
1792
+ slot?: NavigationTreeSlot;
1793
+ viewId?: string;
1794
+ defaultExpandedSectionIds?: string[];
1795
+ getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1796
+ getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
1797
+ }
1798
+ interface NavigationTreeRegistry {
1799
+ registerContribution(contribution: NavigationTreeContribution): Disposable;
1800
+ resolveOwner(kind: NavigationTreeOwner["kind"], id: string): NavigationTreeOwner | undefined;
1801
+ getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
1802
+ getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
1803
+ getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];
1804
+ onDidChange(listener: () => void): Disposable;
1805
+ }
1806
+ //#endregion
1807
+ //#region src/core/registries/notifications/notification-registry.d.ts
1808
+ type WorkbenchNotificationLevel = "info" | "success" | "warning" | "error";
1809
+ interface WorkbenchNotificationAction {
1810
+ commandId: string;
1811
+ title: string;
1812
+ args?: unknown;
1813
+ }
1814
+ interface WorkbenchNotification {
1815
+ id?: string;
1816
+ level: WorkbenchNotificationLevel;
1817
+ title: string;
1818
+ message?: string;
1819
+ createdAt?: string;
1820
+ resource?: ResourceRef$1;
1821
+ actions?: WorkbenchNotificationAction[];
1822
+ metadata?: Record<string, unknown>;
1823
+ }
1824
+ interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
1825
+ id: string;
1826
+ level: WorkbenchNotificationLevel;
1827
+ title: string;
1828
+ message?: string;
1829
+ createdAt: string;
1830
+ resource?: ResourceRef$1;
1831
+ actions?: WorkbenchNotificationAction[];
1832
+ metadata?: Record<string, unknown>;
1833
+ }
1834
+ type WorkbenchNotificationEvent = {
1835
+ type: "show";
1836
+ id: string;
1837
+ notification: RegisteredWorkbenchNotification;
1838
+ } | {
1839
+ type: "dismiss";
1840
+ id: string;
1841
+ };
1842
+ type WorkbenchNotificationListener = (event: WorkbenchNotificationEvent) => void;
1843
+ interface WorkbenchNotificationStoreState {
1844
+ notifications: Record<string, RegisteredWorkbenchNotification>;
1845
+ }
1846
+ interface NotificationRegistry {
1847
+ store: WorkbenchStore<WorkbenchNotificationStoreState>;
1848
+ show(notification: WorkbenchNotification, metadata?: ContributionMetadata): RegisteredWorkbenchNotification;
1849
+ dismiss(id: string): boolean;
1850
+ clear(): void;
1851
+ listNotifications(): RegisteredWorkbenchNotification[];
1852
+ subscribe(listener: WorkbenchNotificationListener): Disposable;
1853
+ }
1854
+ //#endregion
1855
+ //#region src/core/registries/overlays/overlay-registry.d.ts
1856
+ interface WorkbenchOverlayContribution extends Omit<WorkbenchPlacementPresentation, "mountStrategy"> {
1857
+ id: string;
1858
+ viewId: string;
1859
+ closable?: boolean;
1860
+ }
1861
+ interface OpenWorkbenchOverlayInput {
1862
+ resource?: ResourceRef$1;
1863
+ title?: string;
1864
+ }
1865
+ interface WorkbenchOverlayRegistry {
1866
+ registerOverlay(overlay: WorkbenchOverlayContribution): Disposable;
1867
+ getOverlay(id: string): WorkbenchOverlayContribution | undefined;
1868
+ listOverlays(): WorkbenchOverlayContribution[];
1869
+ openOverlay(id: string, input?: OpenWorkbenchOverlayInput): string;
1870
+ closeOverlay(instanceId: string): void;
1871
+ }
1872
+ //#endregion
1873
+ //#region src/core/registries/placeholders/placeholder-registry.d.ts
1874
+ interface WorkbenchPlaceholderContribution {
1875
+ id: string;
1876
+ viewId: string;
1877
+ title?: string;
1878
+ region: WorkbenchRegion;
1879
+ regionSize?: WorkbenchRegionSize;
1880
+ regionCollapsible?: boolean;
1881
+ config?: unknown;
1882
+ }
1883
+ interface WorkbenchPlaceholderRegistry {
1884
+ registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable;
1885
+ }
1886
+ //#endregion
1887
+ //#region src/core/registries/placements/shell-placement-registry.d.ts
1888
+ interface WorkbenchShellPlacementContribution extends WorkbenchPlacementPresentation {
1889
+ readonly id: string;
1890
+ readonly item: WorkbenchOwnedPlacementItem;
1891
+ readonly region: WorkbenchRegion;
1892
+ readonly order?: number;
1893
+ }
1894
+ interface OpenWorkbenchShellPlacementInput {
1895
+ placementId: string;
1896
+ resource?: ResourceRef$1;
1897
+ open?: PageOpenIntent;
1898
+ title?: string;
1899
+ }
1900
+ interface WorkbenchShellPlacementRegistry {
1901
+ registerPlacement(placement: WorkbenchShellPlacementContribution): Disposable;
1902
+ getPlacement(placementId: string): WorkbenchShellPlacementContribution | undefined;
1903
+ listPlacements(): WorkbenchShellPlacementContribution[];
1904
+ openPlacement(input: OpenWorkbenchShellPlacementInput): PlacementIdentity;
1905
+ updatePlacement(identity: PlacementIdentity, input: {
1906
+ resource?: ResourceRef$1;
1907
+ title?: string;
1908
+ open?: PageOpenIntent;
1909
+ }): void;
1910
+ closePlacement(identity: PlacementIdentity): void;
1911
+ resolvePlacements(context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
1912
+ onDidChange(listener: () => void): Disposable;
1913
+ }
1914
+ //#endregion
1915
+ //#region src/core/registries/preferences/preference-registry.d.ts
1916
+ type PreferenceScope = "default" | "user" | "project" | "repo" | "workspace" | "extension" | "session";
1917
+ type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
1918
+ interface PreferencePropertySchema {
1919
+ type: "boolean" | "number" | "string" | "array" | "object";
1920
+ enum?: PreferenceValue[];
1921
+ default?: PreferenceValue;
1922
+ scope: PreferenceScope;
1923
+ description?: string;
1924
+ }
1925
+ interface PreferenceSchemaContribution {
1926
+ properties: Record<string, PreferencePropertySchema>;
1927
+ }
1928
+ interface PreferenceScopeRef {
1929
+ scope: PreferenceScope;
1930
+ scopeId?: string;
1931
+ }
1932
+ interface PreferencePersistenceAdapter {
1933
+ getValue(name: string, scope: PreferenceScopeRef): PreferenceValue | undefined;
1934
+ setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
1935
+ }
1936
+ type RegisteredPreferenceSchema = PreferencePropertySchema & {
1937
+ ownerId: string;
1938
+ source: string;
1939
+ };
1940
+ interface PreferenceRegistryStoreState {
1941
+ schemas: Record<string, RegisteredPreferenceSchema>;
1942
+ }
1943
+ interface PreferenceRegistry {
1944
+ store: WorkbenchStore<PreferenceRegistryStoreState>;
1945
+ registerSchema(schema: PreferenceSchemaContribution, metadata?: ContributionMetadata): Disposable;
1946
+ getSchema(name: string): RegisteredPreferenceSchema | undefined;
1947
+ setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
1948
+ getValue(name: string, scope?: PreferenceScopeRef): PreferenceValue | undefined;
1949
+ }
1950
+ //#endregion
1951
+ //#region src/core/registries/settings/settings-registry.d.ts
1952
+ /** Settings are stored either per-user (global) or per-project. Projectless surfaces show only global entries. */
1953
+ type SettingsScope = "global" | "project";
1954
+ /** A "+ create"-style action surfaced on a section or a collection's parent node. */
1955
+ interface SettingsAction {
1956
+ id: string;
1957
+ label: string;
1958
+ icon?: string;
1959
+ run(): void | Promise<void>;
1960
+ }
1961
+ /** An ordered sidenav container. Headerless when `title` is omitted. */
1962
+ interface SettingsSectionContribution {
1963
+ id: string;
1964
+ title?: string;
1965
+ order?: number;
1966
+ scope?: SettingsScope;
1967
+ actions?: SettingsAction[];
1968
+ }
1969
+ type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
1970
+ /** A preference this panel edits; a bare string uses the preference name as its label. */
1971
+ type SettingsPanelPreference = string | {
1972
+ name: string;
1973
+ label?: string;
1974
+ };
1975
+ interface SettingsPanelBase {
1976
+ id: string;
1977
+ title: string;
1978
+ description?: string;
1979
+ /** Section id this panel belongs to. */
1980
+ section?: string;
1981
+ icon?: string;
1982
+ /** Lower sorts first; ties fall back to contribution priority then registration order. */
1983
+ order?: number;
1984
+ scope?: SettingsScope;
1985
+ when?: string;
1986
+ }
1987
+ /** Auto-rendered as a param editor from the registered preference schema. */
1988
+ interface SchemaSettingsPanel extends SettingsPanelBase {
1989
+ kind: "schema";
1990
+ preferences: SettingsPanelPreference[];
1991
+ /** "live" persists on change (default); "apply" stages edits behind Save/Discard. */
1992
+ save?: "live" | "apply";
1993
+ }
1994
+ interface ViewSettingsPanel extends SettingsPanelBase {
1995
+ kind: "view";
1996
+ viewId: string;
1997
+ }
1998
+ interface SettingsCollectionGroupBy<TItem> {
1999
+ key(item: TItem): string;
2000
+ order?: string[];
2001
+ label(key: string): string;
2002
+ icon?(key: string): string | undefined;
2003
+ }
2004
+ /**
2005
+ * A data-driven list of items, each opening a contributor-supplied editor. The
2006
+ * framework knows nothing about what an item is — it only calls these hooks.
2007
+ */
2008
+ interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
2009
+ kind: "collection";
2010
+ viewId: string;
2011
+ items(): TItem[] | Promise<TItem[]>;
2012
+ itemId(item: TItem): string;
2013
+ itemLabel(item: TItem): string;
2014
+ itemIcon?(item: TItem): string | undefined;
2015
+ groupBy?: SettingsCollectionGroupBy<TItem>;
2016
+ actions?: SettingsAction[];
2017
+ }
2018
+ type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
2019
+ type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
2020
+ interface SettingsRegistryStoreState {
2021
+ sections: Record<string, RegisteredSettingsSection>;
2022
+ panels: Record<string, RegisteredSettingsPanel>;
2023
+ /** Bumped by refresh() so the surface re-reads collection items() after backing data changes. */
2024
+ revision: number;
2025
+ }
2026
+ interface SettingsRegistry {
2027
+ store: WorkbenchStore<SettingsRegistryStoreState>;
2028
+ registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable;
2029
+ registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable;
2030
+ getSection(id: string): RegisteredSettingsSection | undefined;
2031
+ getPanel(id: string): RegisteredSettingsPanel | undefined;
2032
+ listSections(): RegisteredSettingsSection[];
2033
+ listPanels(): RegisteredSettingsPanel[];
2034
+ resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
2035
+ getCollectionItem(panelId: string, itemId: string): unknown | undefined;
2036
+ /** Signal that a collection's backing data changed so the surface refreshes. */
2037
+ refresh(): void;
2038
+ }
2039
+ //#endregion
2040
+ //#region src/core/registries/status-bar/status-bar-registry.d.ts
2041
+ type WorkbenchStatusBarSlot = "leading" | "trailing";
2042
+ interface WorkbenchStatusBarItem {
2043
+ id: string;
2044
+ viewId: string;
2045
+ slot: WorkbenchStatusBarSlot;
2046
+ order?: number;
2047
+ isVisible?(): boolean;
2048
+ }
2049
+ interface WorkbenchStatusBarRegistryState {
2050
+ items: Record<string, WorkbenchStatusBarItem>;
2051
+ }
2052
+ interface WorkbenchStatusBarRegistry {
2053
+ store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
2054
+ registerItem(item: WorkbenchStatusBarItem): Disposable;
2055
+ getItem(id: string): WorkbenchStatusBarItem | undefined;
2056
+ listItems(): WorkbenchStatusBarItem[];
2057
+ listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
2058
+ }
2059
+ interface CreateWorkbenchStatusBarRegistryInput {
2060
+ hasView(viewId: string): boolean;
2061
+ }
2062
+ declare const createStatusBarRegistry: (input: CreateWorkbenchStatusBarRegistryInput) => WorkbenchStatusBarRegistry;
2063
+ //#endregion
2064
+ //#region src/core/registries/statuses/status-registry.d.ts
2065
+ interface WorkflowStatus {
2066
+ id: string;
2067
+ label: string;
2068
+ color: string;
2069
+ icon?: string | null;
2070
+ sortOrder: number;
2071
+ isDefault?: boolean;
2072
+ actions?: readonly string[];
2073
+ }
2074
+ interface WorkflowStatusAction {
2075
+ id: string;
2076
+ label: string;
2077
+ icon?: string;
2078
+ }
2079
+ interface WorkbenchStatusSetContribution {
2080
+ id: string;
2081
+ title: string;
2082
+ actions?: readonly WorkflowStatusAction[];
2083
+ query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
2084
+ save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
2085
+ }
2086
+ type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
2087
+ interface WorkbenchStatusRegistryState {
2088
+ statusSets: Record<string, RegisteredWorkbenchStatusSet>;
2089
+ values: Record<string, readonly WorkflowStatus[]>;
2090
+ }
2091
+ interface WorkbenchStatusRegistry {
2092
+ store: WorkbenchStore<WorkbenchStatusRegistryState>;
2093
+ registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable;
2094
+ getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
2095
+ listStatusSets(): RegisteredWorkbenchStatusSet[];
2096
+ getStatuses(id: string): readonly WorkflowStatus[] | undefined;
2097
+ load(id: string): Promise<readonly WorkflowStatus[]>;
2098
+ query(id: string): Promise<readonly WorkflowStatus[]>;
2099
+ save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
2100
+ }
2101
+ declare const createStatusRegistry: () => WorkbenchStatusRegistry;
2102
+ //#endregion
2103
+ //#region src/core/registries/themes/file-icon-theme-contracts.d.ts
2104
+ /**
2105
+ * Core-owned contract for file icon theme registrations. Structurally identical
2106
+ * to @pstdio/ui's FileIconThemePreferenceOption; the React layer bridges the two
2107
+ * so core does not depend on UI package ownership.
2108
+ */
2109
+ interface FileIconThemeFont {
2110
+ fontFamily: string;
2111
+ src: {
2112
+ url: string;
2113
+ format?: string;
2114
+ }[];
2115
+ weight?: string;
2116
+ style?: string;
2117
+ }
2118
+ interface FileIconThemePreferenceOption {
2119
+ id: string;
2120
+ title?: string;
2121
+ definitions: Record<string, unknown>;
2122
+ fileExtensions: Record<string, string>;
2123
+ fileNames: Record<string, string>;
2124
+ defaults: {
2125
+ file?: string;
2126
+ folder?: string;
2127
+ };
2128
+ fonts: FileIconThemeFont[];
2129
+ }
2130
+ //#endregion
2131
+ //#region src/core/registries/themes/file-icon-theme-registry.d.ts
2132
+ interface WorkbenchFileIconThemeStoreState {
2133
+ themes: readonly FileIconThemePreferenceOption[];
2134
+ }
2135
+ interface FileIconThemeRegistry {
2136
+ store: WorkbenchStore<WorkbenchFileIconThemeStoreState>;
2137
+ register(themes: readonly FileIconThemePreferenceOption[]): Disposable;
2138
+ listThemes(): readonly FileIconThemePreferenceOption[];
2139
+ }
2140
+ //#endregion
2141
+ //#region src/core/registries/themes/theme-contracts.d.ts
2142
+ /**
2143
+ * Core-owned contract for theme registrations. Structurally identical to
2144
+ * @pstdio/ui's ThemePreferenceOption; the React layer bridges the two so core
2145
+ * does not depend on UI package ownership.
2146
+ */
2147
+ type ThemePreference = string;
2148
+ type ThemePreferenceMode = "light" | "dark";
2149
+ type ThemePreferenceTokens = Record<string, string>;
2150
+ interface ThemePreferenceOption {
2151
+ id: ThemePreference;
2152
+ title?: string;
2153
+ mode: ThemePreferenceMode;
2154
+ tokens?: ThemePreferenceTokens;
2155
+ monacoTheme?: unknown;
2156
+ }
2157
+ //#endregion
2158
+ //#region src/core/registries/themes/theme-registry.d.ts
2159
+ interface WorkbenchThemeStoreState {
2160
+ themes: readonly ThemePreferenceOption[];
2161
+ }
2162
+ interface ThemeRegistry {
2163
+ store: WorkbenchStore<WorkbenchThemeStoreState>;
2164
+ register(themes: readonly ThemePreferenceOption[]): Disposable;
2165
+ listThemes(): readonly ThemePreferenceOption[];
2166
+ }
2167
+ //#endregion
2168
+ //#region src/core/workbench-core-types.d.ts
2169
+ type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
2170
+ type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
2171
+ type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
2172
+ interface WorkbenchCoreContributionContext {
2173
+ pinPlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
2174
+ closePlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
2175
+ breadcrumbs: WorkbenchBreadcrumbController;
2176
+ commandPalette: WorkbenchCommandPaletteController;
2177
+ commandPaletteResources: CommandPaletteResourceRegistry;
2178
+ commands: CommandRegistry;
2179
+ composition: WorkbenchCompositionController;
2180
+ context: ContextKeyService;
2181
+ focus: WorkbenchFocusController;
2182
+ keybindings: KeybindingRegistry;
2183
+ layout: WorkbenchModuleLayoutModel;
2184
+ modes: WorkbenchModeRegistry;
2185
+ modePlacements: WorkbenchModePlacementRegistry;
2186
+ shellPlacements: WorkbenchShellPlacementRegistry;
2187
+ navigation: NavigationRegistry;
2188
+ navigationTrees: NavigationTreeRegistry;
2189
+ notifications: NotificationRegistry;
2190
+ overlays: WorkbenchOverlayRegistry;
2191
+ placeholders: WorkbenchPlaceholderRegistry;
2192
+ pageLocations: WorkbenchPageLocationController;
2193
+ pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
2194
+ panelMenuState: WorkbenchPanelMenuStateController;
2195
+ preferences: PreferenceRegistry;
2196
+ treeViews: WorkbenchTreeViews;
2197
+ resources: ResourceRegistry;
2198
+ views: WorkbenchViewRegistry;
2199
+ viewMenus: WorkbenchViewMenuRegistry;
2200
+ settings: SettingsRegistry;
2201
+ statusBar: WorkbenchStatusBarRegistry;
2202
+ statuses: WorkbenchStatusRegistry;
2203
+ shell: WorkbenchShellController;
2204
+ sidePanel: WorkbenchSidePanelController;
2205
+ terminal: WorkbenchTerminalController;
2206
+ themes: ThemeRegistry;
2207
+ fileIconThemes: FileIconThemeRegistry;
2208
+ getPrimaryResource(): ResourceRef$1 | undefined;
2209
+ onDidChangePrimaryResource(listener: (resource: ResourceRef$1 | undefined) => void): Disposable;
2210
+ getActiveResource(): ResourceRef$1 | undefined;
2211
+ onDidChangeActiveResource(listener: (resource: ResourceRef$1 | undefined) => void): Disposable;
2212
+ registerChildModule(module: WorkbenchModuleContribution): Disposable;
2213
+ }
2214
+ interface WorkbenchSnapshot {
2215
+ layout: WorkbenchLayout;
2216
+ }
2217
+ interface WorkbenchPersistenceAdapter {
2218
+ getSnapshot(scope?: string): WorkbenchSnapshot | undefined;
2219
+ setSnapshot(snapshot: WorkbenchSnapshot, scope?: string): void;
2220
+ flush?(): void;
2221
+ dispose?(): void;
2222
+ }
2223
+ interface WorkbenchHost {
2224
+ getSnapshot(): WorkbenchSnapshot;
2225
+ restoreSnapshot(snapshot: WorkbenchSnapshot): void;
2226
+ setPersistenceScope(scope: string | undefined, input?: {
2227
+ carryRegions?: readonly WorkbenchRegion[];
2228
+ }): void;
2229
+ getPersistenceScope(): string | undefined;
2230
+ }
2231
+ interface WorkbenchCore extends WorkbenchCoreContributionContext {
2232
+ dispose(): Promise<void>;
2233
+ host: WorkbenchHost;
2234
+ layout: WorkbenchLayoutModel;
2235
+ registerModule(module: WorkbenchModuleContribution): Disposable;
2236
+ unregisterModule(moduleId: string): void;
2237
+ }
2238
+ type WorkbenchModuleContext = WorkbenchCoreContributionContext;
2239
+ type WorkbenchModuleContributionContext = WorkbenchModuleContext;
2240
+ interface WorkbenchPagePersistenceScopeInput {
2241
+ currentScope?: string;
2242
+ modeId?: string;
2243
+ pageId?: string;
2244
+ projectId?: string;
2245
+ resource?: ResourceRef$1;
2246
+ }
2247
+ interface WorkbenchPagePersistenceScope {
2248
+ scope?: string;
2249
+ carryRegions?: readonly WorkbenchRegion[];
2250
+ }
2251
+ interface createWorkbenchInput {
2252
+ isInScope?: (resource: ResourceRef$1, primary: ResourceRef$1 | undefined) => boolean;
2253
+ layoutPersistence?: LayoutPersistenceAdapter;
2254
+ pageLocationBrowser?: WorkbenchPageLocationBrowser;
2255
+ pageLocationPersistence?: WorkbenchPageLocationPersistence;
2256
+ resolvePagePersistenceScope?(input: WorkbenchPagePersistenceScopeInput): WorkbenchPagePersistenceScope;
2257
+ pageResources?: WorkbenchPageResourceCodec;
2258
+ persistence?: WorkbenchPersistenceAdapter;
2259
+ preferencePersistence?: PreferencePersistenceAdapter;
2260
+ treePersistence?: TreeRendererPersistenceAdapter;
2261
+ panelMenuStatePersistence?: WorkbenchPanelMenuStatePersistenceAdapter;
2262
+ defaultPanelOpenByRegionId?: Partial<Record<WorkbenchRegion, boolean>>;
2263
+ /** Host-level region layout policy. The active mode's regionSettings win over it. */
2264
+ regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
2265
+ sidePanelPersistence?: WorkbenchSidePanelPersistenceAdapter;
2266
+ /** Default floating policy. The active mode may override it. */
2267
+ floatingPanels?: "visible" | "hidden";
2268
+ initialSidePanelMode?: WorkbenchSidePanelMode;
2269
+ startPage?: PageRef;
2270
+ }
2271
+ type WorkbenchModuleActivationResult = Disposable | readonly Disposable[] | undefined;
2272
+ interface WorkbenchModuleContribution {
2273
+ id: string;
2274
+ source?: ContributionSource;
2275
+ ownerId?: string;
2276
+ activate(ctx: WorkbenchModuleContributionContext): WorkbenchModuleActivationResult;
2277
+ }
2278
+ //#endregion
2279
+ //#region src/core/workbench-core.d.ts
2280
+ declare const createWorkbench: (input?: createWorkbenchInput) => WorkbenchCore;
2281
+ //#endregion
2282
+ //#region src/core/registries/modes/mode-layout.d.ts
2283
+ declare const getWorkbenchModePanelForRegion: (region: WorkbenchRegion) => "main" | "secondary" | "side" | undefined;
2284
+ declare const isWorkbenchModePanelAvailable: (mode: WorkbenchModeContribution | undefined, panel: WorkbenchPanelRegion) => boolean;
2285
+ //#endregion
2286
+ //#region src/core/registries/modes/mode-registry.d.ts
2287
+ type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
2288
+ type WorkbenchModeActivationResult = Disposable | readonly Disposable[] | undefined;
2289
+ interface WorkbenchModeAddablePanel {
2290
+ panelId: string;
2291
+ region: WorkbenchPanelRegion;
2292
+ allowedRegions?: readonly WorkbenchRegion[];
2293
+ pinned?: boolean;
2294
+ }
2295
+ interface WorkbenchModeAddablePanelContext {
2296
+ layout: WorkbenchLayout;
2297
+ resource?: ResourceRef$1;
2298
+ }
2299
+ interface WorkbenchModeContribution {
2300
+ id: string;
2301
+ label?: string;
2302
+ defaultTheme?: string;
2303
+ floatingPanels?: "visible" | "hidden";
2304
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
2305
+ panels?: readonly WorkbenchPanelRegion[];
2306
+ /** Region-level layout policy while this mode is active. */
2307
+ regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
2308
+ resourceKinds?: readonly string[];
2309
+ defaultResource?: ResourceRef$1 | (() => Promise<ResourceRef$1 | undefined> | ResourceRef$1 | undefined);
2310
+ listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
2311
+ activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
2312
+ seed?(ctx: WorkbenchModeActivationContext): void;
2313
+ enter?(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
2314
+ reconcile?(ctx: WorkbenchModeActivationContext): void;
2315
+ }
2316
+ type WorkbenchModeChangeListener = () => void;
2317
+ interface WorkbenchModeStoreState {
2318
+ modes: Record<string, WorkbenchModeContribution>;
2319
+ activeModeId: string | undefined;
2320
+ }
2321
+ interface WorkbenchModeRegistry {
2322
+ store: WorkbenchStore<WorkbenchModeStoreState>;
2323
+ dispose(): void;
2324
+ registerMode(mode: WorkbenchModeContribution): Disposable;
2325
+ getMode(id: string): WorkbenchModeContribution | undefined;
2326
+ listModes(): WorkbenchModeContribution[];
2327
+ getActiveModeId(): string | undefined;
2328
+ isTransitioning(): boolean;
2329
+ setActiveMode(id: string | undefined, input?: {
2330
+ deferSeed?: boolean;
2331
+ }): void;
2332
+ seedActiveMode(): void;
2333
+ onDidChangeActive(listener: WorkbenchModeChangeListener): Disposable;
2334
+ }
2335
+ //#endregion
2336
+ //#region src/core/controllers/composition/composition-controller.d.ts
2337
+ interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
2338
+ contribution: RegisteredWidgetContribution;
2339
+ open?(resource?: ResourceRef$1): void;
2340
+ }
2341
+ interface WorkbenchCompositionRegionPanels {
2342
+ open: readonly WorkbenchWidgetPlacement[];
2343
+ addable: readonly WorkbenchCompositionAddablePanel[];
2344
+ closable: readonly string[];
2345
+ }
2346
+ interface WorkbenchCompositionController {
2347
+ panelsFor(region: WorkbenchPanelRegion): WorkbenchCompositionRegionPanels;
2348
+ }
2349
+ //#endregion
2350
+ //#region src/core/registries/layout/surface-map.d.ts
2351
+ type AnchorId = "primary" | "secondary" | "attached";
2352
+ declare const resolveAnchorRegion: (anchorId: AnchorId) => "activity" | "sidenav" | "main" | "secondary" | "side" | "status" | "nav" | "main-header" | "main-left-menu" | "main-right-menu" | "secondary-header" | "secondary-left-menu" | "secondary-right-menu" | "side-header" | "side-left-menu" | "side-right-menu" | "overlay";
2353
+ //#endregion
2354
+ //#region src/core/registries/menus/workbench-menu-paths.d.ts
2355
+ declare const headerLeadingMenuPath: (region: string) => MenuPath;
2356
+ declare const headerTrailingMenuPath: (region: string) => MenuPath;
2357
+ declare const workbenchRegionTabLeadingMenuPath: (region: string) => MenuPath;
2358
+ declare const workbenchRegionTabAddMenuPath: (region: string) => MenuPath;
2359
+ declare const workbenchCommandPaletteMenuPath: readonly ["workbench", "commandPalette"];
2360
+ declare const workbenchTopHeaderLeadingMenuPath: MenuPath;
2361
+ declare const workbenchTopHeaderTrailingMenuPath: MenuPath;
2362
+ declare const resourceContextMenuPath: (resourceKind: string) => MenuPath;
2363
+ //#endregion
2364
+ //#region src/core/registries/resources/resource-icons.d.ts
2365
+ declare const standardResourceIcons: {
2366
+ readonly project: "folder-root";
2367
+ readonly workspace: "computer";
2368
+ readonly worktree: "git-pull-request-draft";
2369
+ readonly settings: "settings";
2370
+ readonly kanbanRenderer: "table-properties";
2371
+ };
2372
+ type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];
2373
+ //#endregion
2374
+ //#region src/core/registries/views/renderer-read-key.d.ts
2375
+ declare const rendererReadKey: (placement: WorkbenchPanelInstance, lane?: string) => string;
2376
+ //#endregion
2377
+ //#region src/core/registries/views/settle-read-batch.d.ts
2378
+ declare const settleReadBatch: <T>(tasks: ((signal: AbortSignal) => Promise<T> | T)[], signal?: AbortSignal) => Promise<Awaited<T>[]>;
2379
+ //#endregion
2380
+ //#region src/core/shared/store/workbench-batch.d.ts
2381
+ /** Commit related stores before their subscribers read the resulting workbench state. */
2382
+ declare const batchWorkbenchChanges: <Result>(commit: () => Result) => Result;
2383
+ //#endregion
2384
+ export { WorkbenchStatusBarItem as $, resourceHierarchyCycleCode as $i, AttributeDescriptor as $n, WorkbenchPanelTab as $r, WorkbenchTerminalSessionError as $t, WorkbenchHost as A, CommandRegistry as Ai, createViewRegistry as An, DataTableRendererQueryContext as Ar, WorkbenchNotification as At, ThemePreference as B, ResourceRegistry as Bi, TreeNode as Bn, ControlsRendererLayout as Br, WorkbenchModePlacementRegistry as Bt, WorkbenchModeContribution as C, WorkbenchCommandPaletteController as Ci, WorkbenchViewMenuRegistry as Cn, FileRendererRefreshOrigin as Cr, WorkbenchShellPlacementRegistry as Ct, createWorkbench as D, CommandParamDescriptor as Di, WorkbenchViewContribution as Dn, DataTableRendererColumnRenderer as Dr, WorkbenchOverlayRegistry as Dt, isWorkbenchModePanelAvailable as E, CommandHandler as Ei, WorkbenchViewBody as En, DataTableRendererColumn as Er, WorkbenchOverlayContribution as Et, WorkbenchPagePersistenceScopeInput as F, ResourceBrowseEntry as Fi, createRendererReadRegistry as Fn, DataTableRendererThemeColor as Fr, NavigationTreeContribution as Ft, FileIconThemeFont as G, workbenchResourceMetadataContextKey as Gi, TreeRendererState as Gn, WorkbenchFocusRegionId as Gr, getKeybindingSteps as Gt, ThemePreferenceOption as H, createWorkbenchSelectionResourceMetadata as Hi, TreeQueryContext as Hn, ControlsUpdateValueInput as Hr, Keybinding as Ht, WorkbenchPersistenceAdapter as I, ResourceKindContribution as Ii, TreeAction as In, RegisteredDataTableRendererContribution as Ir, NavigationTreeOwner as It, WorkbenchStatusRegistryState as J, ResourceHierarchyCycle as Ji, MenuPath as Jn, RegisteredWidgetContribution as Jr, CommandPaletteResourceQueryContext as Jt, FileIconThemePreferenceOption as K, workbenchResourceTypeContextKey as Ki, TreeViewSection as Kn, LayoutPersistenceAdapter as Kr, CommandPaletteResourceProvider as Kt, WorkbenchSnapshot as L, ResourceListContext as Li, TreeContext as Ln, ControlsApplyInput as Lr, NavigationTreeRegistry as Lt, WorkbenchModuleContribution as M, WorkbenchCommandExecutionError as Mi, RendererReadBinding as Mn, DataTableRendererRow as Mr, WorkbenchNotificationEvent as Mt, WorkbenchModuleContributionContext as N, WorkbenchBreadcrumbController as Ni, RendererReadRegistry as Nn, DataTableRendererRowAction as Nr, WorkbenchNotificationLevel as Nt, WorkbenchCore as O, CommandParamOption as Oi, WorkbenchViewRegistry as On, DataTableRendererColumnStat as Or, NotificationRegistry as Ot, WorkbenchPagePersistenceScope as P, WorkbenchBreadcrumbItem as Pi, RendererReadRequest as Pn, DataTableRendererSelectionAction as Pr, NavigationTreeContext as Pt, createStatusRegistry as Q, isWorkbenchViewHierarchyNode as Qi, KanbanRendererQueryState as Qn, WorkbenchPanelMountStrategy as Qr, WorkbenchTerminalSessionAdapter as Qt, createWorkbenchInput as R, ResourceProvider as Ri, TreeMoveEndpoint as Rn, ControlsQueryResult$1 as Rr, NavigationTreeSlot as Rt, WorkbenchModeAddablePanelContext as S, NavigationTargetPanel$1 as Si, WorkbenchViewMenuContribution as Sn, FileRendererRefreshEnvelope as Sr, WorkbenchShellPlacementContribution as St, getWorkbenchModePanelForRegion as T, Command as Ti, WorkbenchReactViewBody as Tn, DataTableRendererBadgePalette as Tr, WorkbenchPlaceholderRegistry as Tt, ThemePreferenceTokens as U, getWorkbenchSelectionResourceKeys as Ui, TreeRendererContribution as Un, WorkbenchPanelRenderInput as Ur, KeybindingRegistry as Ut, ThemePreferenceMode as V, createWorkbenchResourceContextValues as Vi, TreeNodeInlineInput as Vn, ControlsResetInput as Vr, WorkbenchOwnedPlacementItem as Vt, FileIconThemeRegistry as W, workbenchResourceIdContextKey as Wi, TreeRendererPersistenceAdapter as Wn, WorkbenchFocusController as Wr, KeybindingSequence as Wt, WorkflowStatus as X, WorkbenchHierarchyNode as Xi, RegisteredMenuItem as Xn, WorkbenchLayout as Xr, CommandPaletteResourceResult as Xt, WorkbenchStatusSetContribution as Y, ResourceHierarchyProvider as Yi, MenuRegistry as Yn, WorkbenchCommandTarget as Yr, CommandPaletteResourceRegistry as Yt, WorkflowStatusAction as Z, WorkbenchViewHierarchyNode as Zi, KanbanRendererContribution as Zn, WorkbenchPanelInstance as Zr, WorkbenchTerminalController as Zt, resolveAnchorRegion as _, NavigationRegistry as _i, WorkbenchPageLocationDiagnostic as _n, ResourceContextAction as _r, PreferenceRegistry as _t, standardResourceIcons as a, matchesContextExpression as aa, WorkbenchTabRetention as ai, WorkbenchTerminalSessionStatus as an, BoardColumnConfig as ar, SchemaSettingsPanel as at, WorkbenchModeActivationResult as b, NavigationTargetCompound as bi, WorkbenchPageContribution as bn, FileRendererContent as br, PreferenceScopeRef as bt, headerLeadingMenuPath as c, WorkbenchWidgetTab as ci, WorkbenchShellOpenRegion as cn, EnumOptionsSource as cr, SettingsPanelBase as ct, workbenchCommandPaletteMenuPath as d, WorkbenchPanelRegion as di, WorkbenchSidePanelMode as dn, KanbanRendererCreateRowConfig as dr, SettingsRegistry as dt, ContributionMetadata as ea, WorkbenchRegionSize as ei, WorkbenchTerminalSessionExit as en, AttributeDisplayDescriptor as er, WorkbenchStatusBarRegistry as et, workbenchRegionTabAddMenuPath as f, WorkbenchRegion as fi, WorkbenchSidePanelPersistenceAdapter as fn, KanbanRendererCreateSubmission as fr, SettingsScope as ft, AnchorId as g, NavigationParser as gi, WorkbenchPageLocationController as gn, KanbanRendererSettings as gr, PreferencePropertySchema as gt, workbenchTopHeaderTrailingMenuPath as h, NavigationDispatcherContext as hi, WorkbenchPageLocationBrowser as hn, KanbanRendererRow as hr, PreferencePersistenceAdapter as ht, StandardResourceIcon as i, ContextKeyValue as ia, WorkbenchTabPosition as ii, WorkbenchTerminalSessionSink as in, BoardColumnAction as ir, CollectionSettingsPanel as it, WorkbenchModuleContext as j, WorkbenchCommandExecutionContext as ji, workbenchViewIdContextKey as jn, DataTableRendererQueryResult as jr, WorkbenchNotificationAction as jt, WorkbenchCoreContributionContext as k, CommandParamSchema as ki, WorkbenchViewRegistryStoreState as kn, DataTableRendererContribution as kr, RegisteredWorkbenchNotification as kt, headerTrailingMenuPath as l, WorkbenchPanelMenuRegion as li, WorkbenchShellRegionState as ln, KanbanRendererCreateField as lr, SettingsPanelContribution as lt, workbenchTopHeaderLeadingMenuPath as m, workbenchRegions as mi, WorkbenchPageBrowserEntry as mn, KanbanRendererOrdering as mr, ViewSettingsPanel as mt, settleReadBatch as n, ContextKeyScope as na, WorkbenchTabMenuGroup as ni, WorkbenchTerminalSessionOpener as nn, AttributeType as nr, WorkbenchStatusBarSlot as nt, DockedWorkbenchRegion$1 as o, WorkbenchStore as oa, WorkbenchTabSnapshot as oi, WorkbenchTerminalState as on, EnumOption as or, SettingsAction as ot, workbenchRegionTabLeadingMenuPath as p, workbenchPanelRegions as pi, WorkbenchPanelMenuStatePersistenceAdapter as pn, KanbanRendererFilterState as pr, SettingsSectionContribution as pt, WorkbenchStatusRegistry as q, workbenchSelectionResourceKeyMetadataKey as qi, MenuItem as qn, RegisteredPlaceholderContribution as qr, CommandPaletteResourceProviderResult as qt, rendererReadKey as r, ContextKeyService as ra, WorkbenchTabMenuRow as ri, WorkbenchTerminalSessionRequest as rn, AttributesSource as rr, createStatusBarRegistry as rt, dockedWorkbenchRegions as s, Disposable as sa, WorkbenchWidgetPlacement as si, WorkbenchShellController as sn, EnumOptions as sr, SettingsCollectionGroupBy as st, batchWorkbenchChanges as t, ContributionSource as ta, WorkbenchTabAction as ti, WorkbenchTerminalSessionModel as tn, AttributeKind as tr, WorkbenchStatusBarRegistryState as tt, resourceContextMenuPath as u, WorkbenchPanelMenuSide as ui, WorkbenchSidePanelPresentation as un, KanbanRendererCreateFieldType as ur, SettingsPanelPreference as ut, defaultPageResourceCodec as v, NavigationTarget$1 as vi, WorkbenchPageLocationPersistence as vn, SortDirection as vr, PreferenceSchemaContribution as vt, WorkbenchModeRegistry as w, WorkbenchCommandPaletteOpenInput as wi, RegisteredWorkbenchView as wn, FileRendererSaveResult as wr, WorkbenchPlaceholderContribution as wt, WorkbenchModeAddablePanel as x, NavigationTargetItem as xi, WorkbenchPlacementPresentation as xn, FileRendererContribution as xr, PreferenceValue as xt, WorkbenchModeActivationContext as y, NavigationTargetCommand as yi, WorkbenchPageNavigationResult as yn, ViewMode as yr, PreferenceScope as yt, ThemeRegistry as z, ResourceRef$1 as zi, TreeMovePolicy as zn, ControlsRendererContribution as zr, WorkbenchModePlacementContribution as zt };
2385
+ export {};