@pstdio/workbench 0.2.1 → 0.4.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 (39) hide show
  1. package/README.md +100 -88
  2. package/dist/context-key-service-W4QEfVdN.js +1031 -0
  3. package/dist/context-key-service-W4QEfVdN.js.map +1 -0
  4. package/dist/extensions.d.ts +749 -256
  5. package/dist/extensions.js +900 -694
  6. package/dist/extensions.js.map +1 -1
  7. package/dist/file-renderer-view-DrrhYnb_.js.map +1 -1
  8. package/dist/index.d.ts +756 -448
  9. package/dist/index.js +2974 -60
  10. package/dist/index.js.map +1 -1
  11. package/dist/layout-types-DMoZz38-.js +100 -0
  12. package/dist/layout-types-DMoZz38-.js.map +1 -0
  13. package/dist/react.d.ts +745 -231
  14. package/dist/react.js +3494 -2493
  15. package/dist/react.js.map +1 -1
  16. package/dist/storage.d.ts +109 -14
  17. package/dist/storage.js +142 -47
  18. package/dist/storage.js.map +1 -1
  19. package/dist/surface-map-C1pOTUmF.js +52 -0
  20. package/dist/surface-map-C1pOTUmF.js.map +1 -0
  21. package/dist/testing.d.ts +695 -198
  22. package/dist/testing.js +46 -34
  23. package/dist/testing.js.map +1 -1
  24. package/dist/webview-runtime.js +5 -1
  25. package/dist/webview-runtime.js.map +1 -1
  26. package/dist/workbench-menu-paths-B_QJzcNU.js +12 -0
  27. package/dist/workbench-menu-paths-B_QJzcNU.js.map +1 -0
  28. package/package.json +6 -7
  29. package/dist/context-key-service-C--cHa0B.js +0 -447
  30. package/dist/context-key-service-C--cHa0B.js.map +0 -1
  31. package/dist/core.d.ts +0 -1885
  32. package/dist/core.js +0 -64
  33. package/dist/core.js.map +0 -1
  34. package/dist/surface-reconcile-DkRf01ro.js +0 -260
  35. package/dist/surface-reconcile-DkRf01ro.js.map +0 -1
  36. package/dist/workbench-core-DFpwi8Lo.js +0 -2264
  37. package/dist/workbench-core-DFpwi8Lo.js.map +0 -1
  38. package/dist/workbench-menu-paths-CQVH6z4_.js +0 -11
  39. package/dist/workbench-menu-paths-CQVH6z4_.js.map +0 -1
package/dist/core.d.ts DELETED
@@ -1,1885 +0,0 @@
1
- import { ComponentType } from 'react';
2
- import { NamedSet } from 'zustand/middleware';
3
- import { ReactNode } from 'react';
4
- import { StoreApi } from 'zustand/vanilla';
5
-
6
- declare type AnchorCandidates = "global" | "scoped";
7
-
8
- export declare type AnchorId = "primary" | "secondary" | "attached";
9
-
10
- declare type AnchorPersistence = "primary" | "derived" | "detached";
11
-
12
- export declare type AnchorReadId = "primary" | "attached";
13
-
14
- export declare type AnchorReconcileAction = {
15
- area: WorkbenchArea;
16
- action: "keep" | "clear";
17
- };
18
-
19
- declare interface AnchorSurface {
20
- role: "anchor";
21
- anchor: AnchorId;
22
- persistence: AnchorPersistence;
23
- candidates: AnchorCandidates;
24
- }
25
-
26
- export declare interface AttributeDescriptor {
27
- id: string;
28
- label: string;
29
- type: AttributeType;
30
- filterable?: boolean;
31
- groupable?: boolean;
32
- sortable?: boolean;
33
- displayable?: boolean;
34
- editable?: boolean;
35
- display?: AttributeDisplayDescriptor;
36
- render?: (value: unknown, row: DataRendererRow) => ReactNode;
37
- compare?: (a: unknown, b: unknown) => number;
38
- }
39
-
40
- export declare type AttributeDisplayDescriptor = {
41
- kind: "workspace-badge";
42
- itemsAttributeId: string;
43
- };
44
-
45
- export declare type AttributeKind = AttributeType["kind"];
46
-
47
- /**
48
- * Reactive source for an entire attribute schema. Lets a contribution
49
- * add/remove/edit attributes at runtime without re-registering.
50
- */
51
- export declare interface AttributesSource {
52
- subscribe: (listener: () => void) => () => void;
53
- getSnapshot: () => AttributeDescriptor[];
54
- }
55
-
56
- export declare type AttributeType = {
57
- kind: "enum";
58
- options: EnumOptions;
59
- } | {
60
- kind: "enum-multi";
61
- options: EnumOptions;
62
- } | {
63
- kind: "string";
64
- } | {
65
- kind: "date";
66
- } | {
67
- kind: "number";
68
- } | {
69
- kind: "user";
70
- };
71
-
72
- export declare interface BoardColumnAction {
73
- id: string;
74
- label: string;
75
- icon: ComponentType<{
76
- size?: number | string;
77
- }>;
78
- }
79
-
80
- /** Board-column behavior and menu configuration for a resolved column group. */
81
- export declare interface BoardColumnConfig {
82
- /** Color palette token used for the column header and group badges. */
83
- color?: string;
84
- canDragIn?: boolean;
85
- canDragOut?: boolean;
86
- canCreate?: boolean;
87
- actions?: BoardColumnAction[];
88
- }
89
-
90
- declare interface ChromeSurface {
91
- role: "chrome";
92
- }
93
-
94
- /**
95
- * A data-driven list of items, each opening a contributor-supplied editor. The
96
- * framework knows nothing about what an item is — it only calls these hooks.
97
- */
98
- export declare interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
99
- kind: "collection";
100
- items(): TItem[] | Promise<TItem[]>;
101
- itemId(item: TItem): string;
102
- itemLabel(item: TItem): string;
103
- itemIcon?(item: TItem): string | undefined;
104
- groupBy?: SettingsCollectionGroupBy<TItem>;
105
- renderItem(item: TItem, input: WorkbenchWidgetRenderInput): unknown;
106
- actions?: SettingsAction[];
107
- }
108
-
109
- export declare interface Command {
110
- id: string;
111
- label: string;
112
- category?: string;
113
- description?: string;
114
- icon?: string;
115
- when?: string;
116
- params?: CommandParamSchema;
117
- }
118
-
119
- export declare interface CommandHandler<TArgs = unknown, TResult = unknown> {
120
- execute(args: TArgs, context?: WorkbenchCommandExecutionContext): TResult | Promise<TResult>;
121
- isEnabled?(args: TArgs): boolean;
122
- isVisible?(args: TArgs): boolean;
123
- isToggled?(args: TArgs): boolean;
124
- }
125
-
126
- export declare interface CommandPaletteResourceProvider {
127
- id: string;
128
- title: string;
129
- refreshEventIds?: string[];
130
- query(context: CommandPaletteResourceQueryContext): Promise<readonly CommandPaletteResourceResult[]>;
131
- }
132
-
133
- export declare interface CommandPaletteResourceProviderResult {
134
- providerId: string;
135
- title: string;
136
- results: readonly CommandPaletteResourceResult[];
137
- }
138
-
139
- export declare interface CommandPaletteResourceQueryContext {
140
- query: string;
141
- limit: number;
142
- }
143
-
144
- export declare interface CommandPaletteResourceRegistry {
145
- store: WorkbenchStore<CommandPaletteResourceRegistryStoreState>;
146
- registerProvider(provider: CommandPaletteResourceProvider): Disposable_2;
147
- listProviders(): CommandPaletteResourceProvider[];
148
- queryProviders(context: CommandPaletteResourceQueryContext): Promise<CommandPaletteResourceProviderResult[]>;
149
- refresh(): void;
150
- }
151
-
152
- declare interface CommandPaletteResourceRegistryStoreState {
153
- providers: Record<string, CommandPaletteResourceProvider>;
154
- refreshToken: number;
155
- }
156
-
157
- export declare interface CommandPaletteResourceResult {
158
- id: string;
159
- label: string;
160
- description?: string;
161
- icon?: string;
162
- keywords?: string[];
163
- group?: string;
164
- activate(): void | Promise<void>;
165
- }
166
-
167
- export declare interface CommandParamDescriptor {
168
- type: string;
169
- label?: string;
170
- description?: string;
171
- required?: boolean;
172
- defaultValue?: unknown;
173
- options?: CommandParamOption[];
174
- templateType?: string;
175
- resourceType?: string;
176
- metadata?: Record<string, unknown>;
177
- }
178
-
179
- export declare interface CommandParamOption {
180
- label: string;
181
- value: string;
182
- }
183
-
184
- export declare type CommandParamSchema = Record<string, CommandParamDescriptor>;
185
-
186
- export declare interface CommandRegistry {
187
- store: WorkbenchStore<CommandRegistryStoreState>;
188
- registerCommand<TArgs = unknown, TResult = unknown>(command: Command, handler: CommandHandler<TArgs, TResult>, metadata?: ContributionMetadata): Disposable_2;
189
- getCommand(id: string): RegisteredCommand | undefined;
190
- listCommands(): RegisteredCommand[];
191
- isCommandEnabled(id: string, args?: unknown): boolean;
192
- isCommandVisible(id: string, args?: unknown): boolean;
193
- isCommandToggled(id: string, args?: unknown): boolean;
194
- executeCommand(id: string, args?: unknown, context?: WorkbenchCommandExecutionContext): Promise<unknown>;
195
- onDidExecuteError(listener: WorkbenchCommandExecutionErrorListener): Disposable_2;
196
- }
197
-
198
- declare interface CommandRegistryStoreState {
199
- commands: Record<string, RegisteredCommand>;
200
- }
201
-
202
- export declare interface ContextKeyScope extends Disposable_2 {
203
- ownerId: string;
204
- set(key: string, value: ContextKeyValue): void;
205
- get(key: string): ContextKeyValue;
206
- delete(key: string): void;
207
- }
208
-
209
- export declare interface ContextKeyService {
210
- store: WorkbenchStore<ContextKeyStoreState>;
211
- set(key: string, value: ContextKeyValue): void;
212
- get(key: string): ContextKeyValue;
213
- delete(key: string): void;
214
- createScope(ownerId: string): ContextKeyScope;
215
- deleteOwner(ownerId: string): void;
216
- snapshot(): Record<string, ContextKeyValue>;
217
- matches(expression?: string): boolean;
218
- }
219
-
220
- declare interface ContextKeyStoreState {
221
- values: Record<string, ContextKeyValue>;
222
- }
223
-
224
- export declare type ContextKeyValue = boolean | number | string | undefined;
225
-
226
- export declare interface ContributionMetadata {
227
- source?: ContributionSource;
228
- ownerId?: string;
229
- priority?: number;
230
- }
231
-
232
- export declare type ContributionSource = "module" | "extension";
233
-
234
- export declare interface ControlsApplyInput {
235
- values: Record<string, unknown>;
236
- resource?: ResourceRef;
237
- }
238
-
239
- export declare interface ControlsQueryResult {
240
- params?: unknown[];
241
- groups?: unknown[];
242
- values?: Record<string, unknown>;
243
- readOnly?: boolean;
244
- }
245
-
246
- declare type ControlsRendererArea = "main-right" | "secondary" | "overlay";
247
-
248
- export declare interface ControlsRendererContribution {
249
- id: string;
250
- title: string;
251
- resourceKind?: string;
252
- emptyTitle?: string;
253
- emptyDescription?: string;
254
- layout?: ControlsRendererLayout;
255
- defaultValues?: Record<string, unknown>;
256
- /** Load the control declarations + current values for the active resource. */
257
- executeQuery(resource?: ResourceRef): Promise<ControlsQueryResult> | ControlsQueryResult;
258
- /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
259
- updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
260
- /** Commit the full value map from a sticky footer. */
261
- apply?(input: ControlsApplyInput): Promise<void> | void;
262
- /** Reset some or all controls to their defaults. */
263
- reset?(input: ControlsResetInput): Promise<void> | void;
264
- subscribe?: (listener: () => void) => Disposable_2 | (() => void);
265
- }
266
-
267
- export declare type ControlsRendererImplementation = (input: WorkbenchWidgetRenderInput & {
268
- controlsRendererId: string;
269
- }) => unknown;
270
-
271
- export declare interface ControlsRendererLayout {
272
- area?: ControlsRendererArea;
273
- defaultPx?: number;
274
- minPx?: number;
275
- maxPx?: number;
276
- }
277
-
278
- export declare interface ControlsRendererRefreshEvent {
279
- controlsRendererId: string;
280
- }
281
-
282
- declare type ControlsRendererRefreshListener = (event: ControlsRendererRefreshEvent) => void;
283
-
284
- export declare interface ControlsRendererRegistry {
285
- controlsStore: WorkbenchStore<ControlsRendererStoreState>;
286
- registerControlsRenderer(contribution: ControlsRendererContribution, metadata?: ContributionMetadata): Disposable_2;
287
- setControlsRendererImplementation(impl: ControlsRendererImplementation): void;
288
- getControlsRenderer(id: string): RegisteredControlsRendererContribution | undefined;
289
- listControlsRenderers(): RegisteredControlsRendererContribution[];
290
- refreshControlsRenderer(id: string): void;
291
- onDidRefreshControlsRenderer(listener: ControlsRendererRefreshListener): Disposable_2;
292
- }
293
-
294
- export declare interface ControlsRendererStoreState {
295
- renderers: Record<string, RegisteredControlsRendererContribution>;
296
- }
297
-
298
- export declare interface ControlsResetInput {
299
- controlIds?: string[];
300
- resource?: ResourceRef;
301
- }
302
-
303
- export declare interface ControlsUpdateValueInput {
304
- controlId: string;
305
- value: unknown;
306
- values: Record<string, unknown>;
307
- resource?: ResourceRef;
308
- }
309
-
310
- export declare const createCommandPaletteResourceRegistry: () => CommandPaletteResourceRegistry;
311
-
312
- export declare const createCommandRegistry: (input?: CreateCommandRegistryInput) => CommandRegistry;
313
-
314
- declare interface CreateCommandRegistryInput {
315
- context?: ContextKeyService;
316
- }
317
-
318
- export declare const createContextKeyService: () => ContextKeyService;
319
-
320
- export declare const createControlsRendererRegistry: (input: CreateControlsRendererRegistryInput) => ControlsRendererRegistry;
321
-
322
- export declare interface CreateControlsRendererRegistryInput {
323
- rendererRegistry: WorkbenchRendererRegistry;
324
- }
325
-
326
- export declare const createDataRendererRegistry: (input: CreateDataRendererRegistryInput) => DataRendererRegistry;
327
-
328
- export declare interface CreateDataRendererRegistryInput {
329
- rendererRegistry: WorkbenchRendererRegistry;
330
- }
331
-
332
- export declare const createDefaultWorkbenchLayout: () => WorkbenchLayout;
333
-
334
- export declare const createFileIconThemeRegistry: () => FileIconThemeRegistry;
335
-
336
- export declare const createFileRendererRegistry: (input: CreateFileRendererRegistryInput) => FileRendererRegistry;
337
-
338
- export declare interface CreateFileRendererRegistryInput {
339
- rendererRegistry: WorkbenchRendererRegistry;
340
- }
341
-
342
- export declare const createHistoryController: (input: CreateHistoryControllerInput) => HistoryController;
343
-
344
- export declare interface CreateHistoryControllerInput {
345
- layout: LayoutModel;
346
- modes?: Pick<WorkbenchModeRegistry, "getActiveModeId" | "getMode" | "onDidChangeActive" | "setActiveMode">;
347
- resources: ResourceRegistry;
348
- maxEntries?: number;
349
- }
350
-
351
- export declare const createKeybindingRegistry: (deps: KeybindingRegistryDeps) => KeybindingRegistry;
352
-
353
- export declare const createLayoutModel: (input?: CreateLayoutModelInput) => LayoutModel;
354
-
355
- export declare interface CreateLayoutModelInput {
356
- persistence?: LayoutPersistenceAdapter;
357
- }
358
-
359
- export declare const createMenuRegistry: (deps: MenuRegistryDeps) => MenuRegistry;
360
-
361
- export declare const createNavigationRegistry: (input?: CreateNavigationRegistryInput) => NavigationRegistry;
362
-
363
- export declare interface CreateNavigationRegistryInput {
364
- resolveDispatcher?(): NavigationDispatcherContext;
365
- }
366
-
367
- export declare const createNotificationRegistry: () => NotificationRegistry;
368
-
369
- export declare const createPreferenceRegistry: (input?: CreatePreferenceRegistryInput) => PreferenceRegistry;
370
-
371
- export declare interface CreatePreferenceRegistryInput {
372
- persistence?: PreferencePersistenceAdapter;
373
- }
374
-
375
- export declare const createResourceRegistry: (input?: CreateResourceRegistryInput) => ResourceRegistry;
376
-
377
- export declare interface CreateResourceRegistryInput {
378
- getPrimary?: () => ResourceRef | undefined;
379
- }
380
-
381
- export declare const createSettingsRegistry: () => SettingsRegistry;
382
-
383
- export declare const createThemeRegistry: () => ThemeRegistry;
384
-
385
- export declare const createTreeRendererRegistry: (input: CreateTreeRendererRegistryInput) => TreeRendererRegistry;
386
-
387
- export declare interface CreateTreeRendererRegistryInput {
388
- rendererRegistry: WorkbenchRendererRegistry;
389
- persistence?: TreeRendererPersistenceAdapter;
390
- }
391
-
392
- export declare const createWorkbenchBreadcrumbController: () => WorkbenchBreadcrumbController;
393
-
394
- export declare const createWorkbenchCommandPaletteController: (input?: CreateWorkbenchCommandPaletteControllerInput) => WorkbenchCommandPaletteController;
395
-
396
- export declare interface CreateWorkbenchCommandPaletteControllerInput {
397
- initialOpen?: boolean;
398
- }
399
-
400
- export declare const createWorkbenchCore: (input?: CreateWorkbenchCoreInput) => WorkbenchCore;
401
-
402
- export declare interface CreateWorkbenchCoreInput {
403
- isInScope?: (resource: ResourceRef, primary: ResourceRef | undefined) => boolean;
404
- layoutPersistence?: LayoutPersistenceAdapter;
405
- preferencePersistence?: PreferencePersistenceAdapter;
406
- treePersistence?: TreeRendererPersistenceAdapter;
407
- panelsPersistence?: WorkbenchPanelsPersistenceAdapter;
408
- lastResourcePersistence?: LastResourcePersistenceAdapter;
409
- initialSessionPanelMode?: WorkbenchSessionPanelMode;
410
- renderers?: CreateWorkbenchRendererRegistryInput;
411
- }
412
-
413
- export declare const createWorkbenchFocusController: (input: CreateWorkbenchFocusControllerInput) => WorkbenchFocusController;
414
-
415
- export declare interface CreateWorkbenchFocusControllerInput {
416
- context: ContextKeyService;
417
- }
418
-
419
- export declare const createWorkbenchLastResourceController: (input: CreateWorkbenchLastResourceControllerInput) => WorkbenchLastResourceController;
420
-
421
- export declare interface CreateWorkbenchLastResourceControllerInput {
422
- persistence?: LastResourcePersistenceAdapter;
423
- openResource(resource: ResourceRef): Promise<unknown>;
424
- }
425
-
426
- export declare const createWorkbenchModeRegistry: (input: CreateWorkbenchModeRegistryInput) => WorkbenchModeRegistry;
427
-
428
- declare interface CreateWorkbenchModeRegistryInput {
429
- resolveContext(): WorkbenchModeActivationContext;
430
- }
431
-
432
- export declare const createWorkbenchPanelsController: (input?: CreateWorkbenchPanelsControllerInput) => WorkbenchPanelsController;
433
-
434
- export declare interface CreateWorkbenchPanelsControllerInput {
435
- persistence?: WorkbenchPanelsPersistenceAdapter;
436
- }
437
-
438
- export declare const createWorkbenchRendererRegistry: (input?: CreateWorkbenchRendererRegistryInput) => WorkbenchRendererRegistry;
439
-
440
- export declare interface CreateWorkbenchRendererRegistryInput {
441
- initialRenderers?: WorkbenchRendererRegistration[];
442
- createHost?: () => HTMLElement;
443
- }
444
-
445
- export declare const createWorkbenchResourceContextValues: (resource: ResourceRef | undefined) => Record<string, ContextKeyValue>;
446
-
447
- export declare const createWorkbenchSelectionResourceMetadata: (resource: Pick<ResourceRef, "uri">) => {
448
- "workbench.selectionResourceUri": string;
449
- };
450
-
451
- export declare const createWorkbenchSessionPanelController: (input?: CreateWorkbenchSessionPanelControllerInput) => WorkbenchSessionPanelController;
452
-
453
- export declare interface CreateWorkbenchSessionPanelControllerInput {
454
- initialMode?: WorkbenchSessionPanelMode;
455
- }
456
-
457
- export declare const createWorkbenchStore: <TState>(input: CreateWorkbenchStoreInput<TState>) => InternalWorkbenchStore<TState>;
458
-
459
- export declare interface CreateWorkbenchStoreInput<TState> {
460
- name?: string;
461
- initialState: TState;
462
- }
463
-
464
- export declare const createWorkbenchTerminalController: () => WorkbenchTerminalController;
465
-
466
- /**
467
- * Renders its own page. `render` returns `unknown` so core stays React-free — the
468
- * React layer treats the result as a node, exactly like WorkbenchRendererRegistration.
469
- */
470
- export declare interface CustomSettingsPanel extends SettingsPanelBase {
471
- kind: "custom";
472
- render(input: WorkbenchWidgetRenderInput): unknown;
473
- }
474
-
475
- export declare interface DataRendererContribution<TRow extends DataRendererRow = DataRendererRow> {
476
- id: string;
477
- title: string;
478
- resourceKind?: string;
479
- /**
480
- * Declarative attribute schema. The renderer dispatches filter / group /
481
- * sort / display / inline-edit behavior on each descriptor's `type.kind`.
482
- *
483
- * Pass an `AttributesSource` ({ subscribe, getSnapshot }) instead of a
484
- * static array to let the contribution mutate its schema at runtime —
485
- * `WorkbenchDataView` subscribes so additions / removals / kind changes
486
- * propagate live without re-registering the renderer.
487
- */
488
- attributes: AttributeDescriptor[] | AttributesSource;
489
- /** Per-board-column overrides (color, drag/create rules, custom actions). */
490
- getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
491
- hideToolbar?: boolean;
492
- emptyTitle?: string;
493
- emptyDescription?: string;
494
- /** Initial settings/filters applied when the data renderer mounts. */
495
- defaultSettings?: Partial<DataRendererSettings>;
496
- defaultFilters?: DataRendererFilterState;
497
- /**
498
- * Data source. Receives the current display state so backends can paginate
499
- * / filter / sort. The renderer re-applies filter / sort / group locally,
500
- * so this can return unfiltered rows in simple cases.
501
- */
502
- executeQuery(state: DataRendererQueryState): Promise<TRow[]> | TRow[];
503
- subscribe?: (listener: () => void) => Disposable_2 | (() => void);
504
- /** Row interactions surfaced by the renderer (mirrored from <DataRenderer>). */
505
- onRowClick?: (row: TRow) => void;
506
- /** Per-row right-click context menu actions (mirrored from <DataRenderer>). */
507
- getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
508
- /**
509
- * Fires for inline attribute edits AND for cross-column drag-to-reorder on
510
- * the board (the renderer passes the grouping attribute id + the target
511
- * column value).
512
- */
513
- onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
514
- /** Manual within-column reorder (only fires when ordering is manual). */
515
- onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
516
- onCreateRow?: (columnId: string) => void;
517
- onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
518
- }
519
-
520
- export declare type DataRendererFilterState = Record<string, string[]>;
521
-
522
- export declare type DataRendererImplementation = (input: WorkbenchWidgetRenderInput & {
523
- dataRendererId: string;
524
- }) => unknown;
525
-
526
- export declare interface DataRendererOrdering {
527
- attributeId: string | typeof MANUAL_ORDERING;
528
- direction: SortDirection;
529
- }
530
-
531
- export declare interface DataRendererQueryState {
532
- settings: DataRendererSettings;
533
- filters: DataRendererFilterState;
534
- }
535
-
536
- declare interface DataRendererRefreshEvent {
537
- dataRendererId: string;
538
- }
539
-
540
- declare type DataRendererRefreshListener = (event: DataRendererRefreshEvent) => void;
541
-
542
- export declare interface DataRendererRegistry {
543
- dataStore: WorkbenchStore<DataRendererStoreState>;
544
- registerDataRenderer<TRow extends DataRendererRow = DataRendererRow>(contribution: DataRendererContribution<TRow>, metadata?: ContributionMetadata): Disposable_2;
545
- setDataRendererImplementation(impl: DataRendererImplementation): void;
546
- getDataRenderer(id: string): RegisteredDataRendererContribution | undefined;
547
- listDataRenderers(): RegisteredDataRendererContribution[];
548
- refreshDataRenderer(id: string): void;
549
- onDidRefreshDataRenderer(listener: DataRendererRefreshListener): Disposable_2;
550
- }
551
-
552
- export declare interface DataRendererRow {
553
- id: string;
554
- title: string;
555
- /**
556
- * Optional navigation handle. When set, the renderer's default click handler
557
- * routes through the contribution's onRowClick (which typically opens the
558
- * resource via the workbench).
559
- */
560
- resource?: unknown;
561
- attributes: Record<string, unknown>;
562
- }
563
-
564
- export declare interface DataRendererSettings {
565
- viewMode: ViewMode;
566
- columnGrouping: string | typeof NO_GROUPING;
567
- rowGrouping: string | typeof NO_GROUPING;
568
- ordering: DataRendererOrdering;
569
- displayProperties: string[];
570
- }
571
-
572
- export declare interface DataRendererStoreState {
573
- renderers: Record<string, RegisteredDataRendererContribution>;
574
- }
575
-
576
- declare interface Disposable_2 {
577
- dispose(): void;
578
- }
579
- export { Disposable_2 as Disposable }
580
-
581
- export declare interface EnumOption {
582
- value: string;
583
- label: string;
584
- color?: string;
585
- icon?: string | null;
586
- }
587
-
588
- export declare type EnumOptions = EnumOption[] | EnumOptionsSource;
589
-
590
- /**
591
- * Reactive options source for enum / enum-multi attributes. Mirrors React's
592
- * useSyncExternalStore contract so a contribution can hand its options off as
593
- * a live collection instead of a frozen array.
594
- */
595
- export declare interface EnumOptionsSource {
596
- subscribe: (listener: () => void) => () => void;
597
- getSnapshot: () => EnumOption[];
598
- }
599
-
600
- /**
601
- * Core-owned contract for file icon theme registrations. Structurally identical
602
- * to @pstdio/ui's FileIconThemePreferenceOption; the React layer bridges the two
603
- * so core does not depend on UI package ownership.
604
- */
605
- export declare interface FileIconThemeFont {
606
- fontFamily: string;
607
- src: {
608
- url: string;
609
- format?: string;
610
- }[];
611
- weight?: string;
612
- style?: string;
613
- }
614
-
615
- export declare interface FileIconThemePreferenceOption {
616
- id: string;
617
- title?: string;
618
- definitions: Record<string, unknown>;
619
- fileExtensions: Record<string, string>;
620
- fileNames: Record<string, string>;
621
- defaults: {
622
- file?: string;
623
- folder?: string;
624
- };
625
- fonts: FileIconThemeFont[];
626
- }
627
-
628
- export declare interface FileIconThemeRegistry {
629
- store: WorkbenchStore<WorkbenchFileIconThemeStoreState>;
630
- register(themes: readonly FileIconThemePreferenceOption[]): Disposable_2;
631
- listThemes(): readonly FileIconThemePreferenceOption[];
632
- }
633
-
634
- export declare interface FileRendererContent {
635
- fileName?: string;
636
- mimeType?: string;
637
- content?: string;
638
- dataUrl?: string;
639
- placeholder?: string;
640
- }
641
-
642
- export declare interface FileRendererContribution {
643
- id: string;
644
- title: string;
645
- resourceKind?: string;
646
- /** Resolve the file's content (and identity) for the bound resource. */
647
- load(resource: ResourceRef | undefined): Promise<FileRendererContent> | FileRendererContent;
648
- /** Persist edited text. Absent ⇒ read-only. Never called for images. */
649
- save?(resource: ResourceRef | undefined, content: string): Promise<void> | void;
650
- }
651
-
652
- export declare type FileRendererImplementation = (input: WorkbenchWidgetRenderInput & {
653
- fileRendererId: string;
654
- }) => unknown;
655
-
656
- declare interface FileRendererRefreshEvent {
657
- fileRendererId: string;
658
- }
659
-
660
- declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
661
-
662
- export declare interface FileRendererRegistry {
663
- fileRendererStore: WorkbenchStore<FileRendererStoreState>;
664
- registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
665
- setFileRendererImplementation(impl: FileRendererImplementation): void;
666
- getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
667
- listFileRenderers(): RegisteredFileRendererContribution[];
668
- refreshFileRenderer(id: string): void;
669
- onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
670
- }
671
-
672
- export declare interface FileRendererStoreState {
673
- renderers: Record<string, RegisteredFileRendererContribution>;
674
- }
675
-
676
- export declare const getAnchorResource: (layout: WorkbenchLayout, anchorId: AnchorId) => ResourceRef | undefined;
677
-
678
- export declare const getKeybindingSteps: (keybinding: KeybindingSequence) => string[];
679
-
680
- export declare const getSurface: (area: WorkbenchArea) => SurfaceDescriptor;
681
-
682
- export declare const getWorkbenchSelectionResourceUris: (resource: ResourceRef | undefined) => string[];
683
-
684
- export declare const headerLeadingMenuPath: (area: string) => MenuPath;
685
-
686
- export declare const headerTrailingMenuPath: (area: string) => MenuPath;
687
-
688
- export declare interface HistoryController {
689
- store: WorkbenchStore<HistoryStoreState>;
690
- goBack(): HistoryEntry | undefined;
691
- goForward(): HistoryEntry | undefined;
692
- goPrevious(): HistoryEntry | undefined;
693
- recentlyClosed(): readonly HistoryEntry[];
694
- reopenLastClosed(): HistoryEntry | undefined;
695
- clear(): void;
696
- }
697
-
698
- export declare interface HistoryEntry {
699
- entryId: string;
700
- recordedAt: number;
701
- kind: "resource" | "widget" | "mode";
702
- modeId?: string;
703
- resource?: ResourceRef;
704
- widgetId?: string;
705
- contributionId?: string;
706
- title?: string;
707
- }
708
-
709
- export declare interface HistoryStoreState {
710
- entries: readonly HistoryEntry[];
711
- cursor: number;
712
- recentlyClosed: readonly HistoryEntry[];
713
- }
714
-
715
- declare interface InternalWorkbenchStore<TState> extends WorkbenchStore<TState> {
716
- setState: NamedSet<TState>;
717
- api: StoreApi<TState>;
718
- }
719
-
720
- export declare interface Keybinding {
721
- commandId: string;
722
- keybinding: KeybindingSequence;
723
- when?: string;
724
- args?: unknown;
725
- }
726
-
727
- export declare interface KeybindingRegistry {
728
- store: WorkbenchStore<KeybindingRegistryStoreState>;
729
- registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable_2;
730
- listKeybindings(): RegisteredKeybinding[];
731
- listActiveKeybindings(): RegisteredKeybinding[];
732
- }
733
-
734
- declare interface KeybindingRegistryDeps {
735
- commands: CommandRegistry;
736
- context: ContextKeyService;
737
- }
738
-
739
- declare interface KeybindingRegistryStoreState {
740
- keybindings: RegisteredKeybinding[];
741
- }
742
-
743
- export declare type KeybindingSequence = string | string[];
744
-
745
- export declare interface LastResourcePersistenceAdapter {
746
- getLastResource(): ResourceRef | undefined;
747
- setLastResource(resource: ResourceRef | undefined): void;
748
- }
749
-
750
- export declare interface LayoutModel {
751
- store: WorkbenchStore<WorkbenchLayoutStoreState>;
752
- registerPlaceholder(placeholder: PlaceholderContribution, metadata?: ContributionMetadata): {
753
- dispose(): void;
754
- };
755
- registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
756
- dispose(): void;
757
- };
758
- unregisterWidget(id: string, options?: {
759
- removePlacements?: boolean;
760
- persist?: boolean;
761
- }): void;
762
- getPlaceholder(areaId: WorkbenchArea): RegisteredPlaceholderContribution | undefined;
763
- getWidget(id: string): RegisteredWidgetContribution | undefined;
764
- getAreaSize(areaId: WorkbenchArea): WorkbenchAreaSize | undefined;
765
- getAreaCollapsible(areaId: WorkbenchArea): boolean;
766
- getAreaHeaderBorderBottom(areaId: WorkbenchArea): boolean;
767
- setAreaVisible(areaId: WorkbenchArea, visible: boolean): void;
768
- setAreaSize(areaId: WorkbenchArea, size: number): void;
769
- listPlaceholders(): RegisteredPlaceholderContribution[];
770
- listWidgets(): RegisteredWidgetContribution[];
771
- openWidget(id: string, input?: OpenWidgetInput): WorkbenchWidgetPlacement;
772
- updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
773
- activateWidget(widgetId: string): WorkbenchWidgetPlacement;
774
- closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
775
- removeWidgetPlacement(widgetId: string): WorkbenchWidgetPlacement | undefined;
776
- clearArea(areaId: WorkbenchArea): void;
777
- resetAreas(): void;
778
- getLayout(): WorkbenchLayout;
779
- restoreLayout(layout: WorkbenchLayout): void;
780
- setPersistenceScope(scope: LayoutScope | undefined): void;
781
- getPersistenceScope(): LayoutScope | undefined;
782
- onDidChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
783
- dispose(): void;
784
- };
785
- }
786
-
787
- export declare interface LayoutPersistenceAdapter {
788
- getLayout(scope?: LayoutScope): WorkbenchLayout | undefined;
789
- setLayout(layout: WorkbenchLayout, scope?: LayoutScope): void;
790
- }
791
-
792
- export declare type LayoutScope = string;
793
-
794
- export declare const listAnchorAreas: () => ("status" | "secondary" | "main" | "nav" | "activity" | "left-header" | "left" | "main-header" | "main-left" | "main-right" | "secondary-header" | "overlay" | "floating-header" | "floating")[];
795
-
796
- export declare const listProjectionAreas: () => ("status" | "secondary" | "main" | "nav" | "activity" | "left-header" | "left" | "main-header" | "main-left" | "main-right" | "secondary-header" | "overlay" | "floating-header" | "floating")[];
797
-
798
- export declare const listProjectionsReading: (anchorId: AnchorReadId) => ("status" | "secondary" | "main" | "nav" | "activity" | "left-header" | "left" | "main-header" | "main-left" | "main-right" | "secondary-header" | "overlay" | "floating-header" | "floating")[];
799
-
800
- declare const MANUAL_ORDERING = "manual";
801
-
802
- export declare const matchesContextExpression: (values: Record<string, ContextKeyValue>, expression?: string) => boolean;
803
-
804
- export declare interface MenuItem {
805
- commandId: string;
806
- label?: string;
807
- description?: string;
808
- icon?: string;
809
- iconSrc?: string;
810
- overflowLabel?: string;
811
- when?: string;
812
- group?: string;
813
- order?: number;
814
- args?: unknown;
815
- readOnly?: boolean;
816
- /** Marks a menu action that navigates outside the app, rendered with a trailing external-link icon. */
817
- external?: boolean;
818
- }
819
-
820
- export declare type MenuPath = readonly string[];
821
-
822
- export declare interface MenuRegistry {
823
- menuStore: WorkbenchStore<MenuRegistryStoreState>;
824
- registerMenuItem(path: MenuPath, item: MenuItem, metadata?: ContributionMetadata): Disposable_2;
825
- listMenuItems(path: MenuPath): RegisteredMenuItem[];
826
- }
827
-
828
- declare interface MenuRegistryDeps {
829
- commands: CommandRegistry;
830
- }
831
-
832
- declare interface MenuRegistryStoreState {
833
- itemsByPath: Record<string, RegisteredMenuItem[]>;
834
- }
835
-
836
- export declare interface NavigationDispatcherContext {
837
- canOpenResource?(resource: ResourceRef): boolean;
838
- canOpenWidget?(widgetId: string): boolean;
839
- canExecuteCommand?(commandId: string): boolean;
840
- createCheckpoint?(): undefined | (() => void);
841
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<unknown>;
842
- openWidget(widgetId: string, input?: OpenWidgetInput): unknown;
843
- executeCommand(commandId: string, args?: unknown): Promise<unknown> | unknown;
844
- }
845
-
846
- export declare interface NavigationParser {
847
- id: string;
848
- priority?: number;
849
- canParse(location: string): boolean;
850
- parse(location: string): NavigationTarget;
851
- }
852
-
853
- export declare interface NavigationRegistry {
854
- store: WorkbenchStore<NavigationRegistryStoreState>;
855
- registerParser(parser: NavigationParser, metadata?: ContributionMetadata): Disposable_2;
856
- listParsers(): RegisteredNavigationParser[];
857
- resolveLocation(location: string): NavigationTarget;
858
- openTarget(target: NavigationTarget): Promise<readonly unknown[]>;
859
- navigate(location: string): Promise<readonly unknown[]>;
860
- registerNavigator(navigator: ResourceNavigator, metadata?: ContributionMetadata): Disposable_2;
861
- listNavigators(): RegisteredResourceNavigator[];
862
- createHref(resource: ResourceRef): string;
863
- navigateResource(resource: ResourceRef): Promise<unknown>;
864
- }
865
-
866
- declare interface NavigationRegistryStoreState {
867
- parsers: Record<string, RegisteredNavigationParser>;
868
- navigators: Record<string, RegisteredResourceNavigator>;
869
- }
870
-
871
- export declare type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
872
-
873
- export declare interface NavigationTargetCommand {
874
- kind: "command";
875
- commandId: string;
876
- args?: unknown;
877
- }
878
-
879
- export declare interface NavigationTargetCompound {
880
- kind: "compound";
881
- targets: readonly NavigationTargetItem[];
882
- }
883
-
884
- export declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetCommand;
885
-
886
- export declare interface NavigationTargetResource {
887
- kind: "resource";
888
- resource: ResourceRef;
889
- input?: OpenResourceInput;
890
- }
891
-
892
- export declare interface NavigationTargetView {
893
- kind: "view";
894
- widgetId: string;
895
- input?: OpenWidgetInput;
896
- }
897
-
898
- declare const NO_GROUPING = "none";
899
-
900
- export declare interface NotificationRegistry {
901
- store: WorkbenchStore<WorkbenchNotificationStoreState>;
902
- show(notification: WorkbenchNotification, metadata?: ContributionMetadata): RegisteredWorkbenchNotification;
903
- dismiss(id: string): boolean;
904
- clear(): void;
905
- listNotifications(): RegisteredWorkbenchNotification[];
906
- subscribe(listener: WorkbenchNotificationListener): Disposable_2;
907
- }
908
-
909
- export declare interface OpenResourceInput {
910
- replaceActive?: boolean;
911
- }
912
-
913
- declare interface OpenWidgetInput {
914
- resource?: ResourceRef;
915
- title?: string;
916
- area?: WorkbenchArea;
917
- ownerId?: string;
918
- source?: ContributionSource;
919
- pinned?: boolean;
920
- closable?: boolean;
921
- mountStrategy?: WidgetMountStrategy;
922
- hiddenByDefault?: boolean;
923
- replaceActive?: boolean;
924
- }
925
-
926
- export declare interface PersistedTreeRendererStates {
927
- statesByTreeId: Record<string, TreeRendererState>;
928
- }
929
-
930
- export declare interface PersistedWorkbenchPanels {
931
- openByAreaId: Record<string, boolean>;
932
- }
933
-
934
- export declare interface PlaceholderContribution {
935
- id: string;
936
- title: string;
937
- area: WorkbenchArea;
938
- rendererId: string;
939
- areaSize?: WorkbenchAreaSize;
940
- areaCollapsible?: boolean;
941
- config?: unknown;
942
- priority?: number;
943
- }
944
-
945
- export declare interface PreferencePersistenceAdapter {
946
- getValue(name: string, scope: PreferenceScopeRef): PreferenceValue | undefined;
947
- setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
948
- }
949
-
950
- export declare interface PreferencePropertySchema {
951
- type: "boolean" | "number" | "string" | "array" | "object";
952
- enum?: PreferenceValue[];
953
- default?: PreferenceValue;
954
- scope: PreferenceScope;
955
- description?: string;
956
- }
957
-
958
- export declare interface PreferenceRegistry {
959
- store: WorkbenchStore<PreferenceRegistryStoreState>;
960
- registerSchema(schema: PreferenceSchemaContribution, metadata?: ContributionMetadata): Disposable_2;
961
- getSchema(name: string): RegisteredPreferenceSchema | undefined;
962
- setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
963
- getValue(name: string, scope?: PreferenceScopeRef): PreferenceValue | undefined;
964
- }
965
-
966
- declare interface PreferenceRegistryStoreState {
967
- schemas: Record<string, RegisteredPreferenceSchema>;
968
- }
969
-
970
- export declare interface PreferenceSchemaContribution {
971
- properties: Record<string, PreferencePropertySchema>;
972
- }
973
-
974
- export declare type PreferenceScope = "default" | "user" | "project" | "repo" | "workspace" | "extension" | "session";
975
-
976
- export declare interface PreferenceScopeRef {
977
- scope: PreferenceScope;
978
- scopeId?: string;
979
- }
980
-
981
- export declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
982
-
983
- declare interface ProjectionSurface {
984
- role: "projection";
985
- reads: AnchorReadId[];
986
- navigator?: boolean;
987
- }
988
-
989
- export declare const reconcileAnchors: ({ layout, primary, isInScope }: ReconcileAnchorsInput) => AnchorReconcileAction[];
990
-
991
- export declare interface ReconcileAnchorsInput {
992
- layout: WorkbenchLayout;
993
- primary: ResourceRef | undefined;
994
- isInScope: (resource: ResourceRef, primary: ResourceRef | undefined) => boolean;
995
- }
996
-
997
- export declare interface RegisteredCommand extends RegisteredContributionMetadata {
998
- command: Command;
999
- handler: CommandHandler;
1000
- }
1001
-
1002
- export declare interface RegisteredContributionMetadata {
1003
- source: ContributionSource;
1004
- ownerId: string;
1005
- priority: number;
1006
- }
1007
-
1008
- export declare interface RegisteredControlsRendererContribution extends ControlsRendererContribution, RegisteredContributionMetadata {
1009
- }
1010
-
1011
- export declare interface RegisteredDataRendererContribution<TRow extends DataRendererRow = DataRendererRow> extends DataRendererContribution<TRow>, RegisteredContributionMetadata {
1012
- }
1013
-
1014
- export declare interface RegisteredFileRendererContribution extends FileRendererContribution, RegisteredContributionMetadata {
1015
- }
1016
-
1017
- export declare interface RegisteredKeepAliveHost {
1018
- rendererId: string;
1019
- host: HTMLElement;
1020
- attachedTo?: HTMLElement;
1021
- }
1022
-
1023
- export declare interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {
1024
- }
1025
-
1026
- export declare interface RegisteredMenuItem extends MenuItem, RegisteredContributionMetadata {
1027
- path: MenuPath;
1028
- }
1029
-
1030
- export declare type RegisteredNavigationParser = Omit<NavigationParser, "priority"> & RegisteredContributionMetadata;
1031
-
1032
- export declare type RegisteredPlaceholderContribution = Omit<PlaceholderContribution, "priority"> & RegisteredContributionMetadata;
1033
-
1034
- declare type RegisteredPreferenceSchema = PreferencePropertySchema & {
1035
- ownerId: string;
1036
- source: string;
1037
- };
1038
-
1039
- export declare interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {
1040
- }
1041
-
1042
- export declare type RegisteredResourceNavigator = Omit<ResourceNavigator, "priority"> & RegisteredContributionMetadata;
1043
-
1044
- export declare type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
1045
-
1046
- export declare type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
1047
-
1048
- export declare interface RegisteredTreeRendererContribution extends TreeRendererContribution, RegisteredContributionMetadata {
1049
- }
1050
-
1051
- export declare type RegisteredWidgetContribution = Omit<WidgetContribution, "priority" | "singleton" | "reuse"> & {
1052
- singleton: boolean;
1053
- reuse: WidgetReusePolicy;
1054
- } & RegisteredContributionMetadata;
1055
-
1056
- export declare interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
1057
- id: string;
1058
- level: WorkbenchNotificationLevel;
1059
- title: string;
1060
- message?: string;
1061
- createdAt: string;
1062
- resource?: ResourceRef;
1063
- actions?: WorkbenchNotificationAction[];
1064
- metadata?: Record<string, unknown>;
1065
- }
1066
-
1067
- export declare const resolveAnchorArea: (anchorId: AnchorId) => "status" | "secondary" | "main" | "nav" | "activity" | "left-header" | "left" | "main-header" | "main-left" | "main-right" | "secondary-header" | "overlay" | "floating-header" | "floating";
1068
-
1069
- declare type ResolvedResourceOpener = Required<ResourceOpener>;
1070
-
1071
- export declare interface ResourceBrowseEntry {
1072
- resource: ResourceRef;
1073
- searchText?: string;
1074
- description?: string;
1075
- group?: string;
1076
- order?: number;
1077
- activate?: (resource: ResourceRef) => unknown | Promise<unknown>;
1078
- }
1079
-
1080
- /** Row-level context menu action surfaced by the renderer. */
1081
- export declare interface ResourceContextAction {
1082
- key: string;
1083
- label: string;
1084
- onClick: () => Promise<void> | void;
1085
- isDisabled?: boolean;
1086
- icon?: ReactNode;
1087
- endContent?: ReactNode;
1088
- separatorBefore?: boolean;
1089
- }
1090
-
1091
- export declare const resourceContextMenuPath: (resourceKind: string) => MenuPath;
1092
-
1093
- export declare interface ResourceKindContribution {
1094
- kind: string;
1095
- label: string;
1096
- icon?: string;
1097
- surface?: ResourceSurface;
1098
- paletteOpenInput?: OpenResourceInput;
1099
- }
1100
-
1101
- export declare interface ResourceListContext {
1102
- primary?: ResourceRef;
1103
- }
1104
-
1105
- export declare interface ResourceNavigator<TResult = unknown> {
1106
- id: string;
1107
- priority?: number;
1108
- canNavigate(resource: ResourceRef): boolean;
1109
- createHref?(resource: ResourceRef): string;
1110
- navigate(resource: ResourceRef): TResult | Promise<TResult>;
1111
- }
1112
-
1113
- export declare interface ResourceOpener<TResult = unknown> {
1114
- id: string;
1115
- priority?: number;
1116
- canOpen(resource: ResourceRef): boolean;
1117
- open(resource: ResourceRef, input: OpenResourceInput): TResult | Promise<TResult>;
1118
- }
1119
-
1120
- export declare interface ResourceProvider {
1121
- id: string;
1122
- kind: string;
1123
- list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
1124
- }
1125
-
1126
- export declare interface ResourceRef {
1127
- kind: string;
1128
- uri: string;
1129
- id?: string;
1130
- label?: string;
1131
- icon?: string;
1132
- metadata?: Record<string, unknown>;
1133
- }
1134
-
1135
- export declare interface ResourceRegistry {
1136
- store: WorkbenchStore<ResourceRegistryStoreState>;
1137
- registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable_2;
1138
- getKind(kind: string): RegisteredResourceKind | undefined;
1139
- getSurface(resource: ResourceRef): ResourceSurface | undefined;
1140
- listKinds(): RegisteredResourceKind[];
1141
- registerOpener(opener: ResourceOpener): Disposable_2;
1142
- listOpeners(): ResolvedResourceOpener[];
1143
- registerProvider(provider: ResourceProvider): Disposable_2;
1144
- listProviders(): ResourceProvider[];
1145
- listResources(query: string): readonly ResourceBrowseEntry[];
1146
- openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<unknown>;
1147
- onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
1148
- }
1149
-
1150
- declare interface ResourceRegistryStoreState {
1151
- kinds: Record<string, RegisteredResourceKind>;
1152
- openers: Record<string, ResolvedResourceOpener>;
1153
- providers: Record<string, ResourceProvider>;
1154
- }
1155
-
1156
- export declare type ResourceSurface = "primary" | "secondary" | "attached";
1157
-
1158
- /** Auto-rendered as a param editor from the registered preference schema. */
1159
- export declare interface SchemaSettingsPanel extends SettingsPanelBase {
1160
- kind: "schema";
1161
- preferences: SettingsPanelPreference[];
1162
- /** "live" persists on change (default); "apply" stages edits behind Save/Discard. */
1163
- save?: "live" | "apply";
1164
- }
1165
-
1166
- /** A "+ create"-style action surfaced on a section or a collection's parent node. */
1167
- export declare interface SettingsAction {
1168
- id: string;
1169
- label: string;
1170
- icon?: string;
1171
- run(): void | Promise<void>;
1172
- }
1173
-
1174
- export declare interface SettingsCollectionGroupBy<TItem> {
1175
- key(item: TItem): string;
1176
- order?: string[];
1177
- label(key: string): string;
1178
- icon?(key: string): string | undefined;
1179
- }
1180
-
1181
- export declare interface SettingsPanelBase {
1182
- id: string;
1183
- title: string;
1184
- description?: string;
1185
- /** Section id this panel belongs to. */
1186
- section?: string;
1187
- icon?: string;
1188
- /** Lower sorts first; ties fall back to contribution priority then registration order. */
1189
- order?: number;
1190
- scope?: SettingsScope;
1191
- when?: string;
1192
- }
1193
-
1194
- export declare type SettingsPanelContribution = SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel;
1195
-
1196
- /** A preference this panel edits; a bare string uses the preference name as its label. */
1197
- export declare type SettingsPanelPreference = string | {
1198
- name: string;
1199
- label?: string;
1200
- };
1201
-
1202
- export declare interface SettingsRegistry {
1203
- store: WorkbenchStore<SettingsRegistryStoreState>;
1204
- registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable_2;
1205
- registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | CustomSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable_2;
1206
- getSection(id: string): RegisteredSettingsSection | undefined;
1207
- getPanel(id: string): RegisteredSettingsPanel | undefined;
1208
- listSections(): RegisteredSettingsSection[];
1209
- listPanels(): RegisteredSettingsPanel[];
1210
- /** Signal that a collection's backing data changed so the surface refreshes. */
1211
- refresh(): void;
1212
- }
1213
-
1214
- export declare interface SettingsRegistryStoreState {
1215
- sections: Record<string, RegisteredSettingsSection>;
1216
- panels: Record<string, RegisteredSettingsPanel>;
1217
- /** Bumped by refresh() so the surface re-reads collection items() after backing data changes. */
1218
- revision: number;
1219
- }
1220
-
1221
- /** Settings are stored either per-user (global) or per-project. Projectless surfaces show only global entries. */
1222
- export declare type SettingsScope = "global" | "project";
1223
-
1224
- /** An ordered sidebar container. Headerless when `title` is omitted. */
1225
- export declare interface SettingsSectionContribution {
1226
- id: string;
1227
- title?: string;
1228
- order?: number;
1229
- scope?: SettingsScope;
1230
- actions?: SettingsAction[];
1231
- }
1232
-
1233
- export declare type SortDirection = "asc" | "desc";
1234
-
1235
- export declare type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];
1236
-
1237
- export declare const standardResourceIcons: {
1238
- readonly project: "folder-root";
1239
- readonly workspace: "computer";
1240
- readonly worktree: "git-pull-request-draft";
1241
- readonly settings: "settings";
1242
- readonly dataRenderer: "table-properties";
1243
- };
1244
-
1245
- export declare type SurfaceDescriptor = AnchorSurface | ProjectionSurface | ChromeSurface | TransientSurface;
1246
-
1247
- export declare const surfaceMap: Record<WorkbenchArea, SurfaceDescriptor>;
1248
-
1249
- /**
1250
- * Core-owned contract for theme registrations. Structurally identical to
1251
- * @pstdio/ui's ThemePreferenceOption; the React layer bridges the two so core
1252
- * does not depend on UI package ownership.
1253
- */
1254
- export declare type ThemePreference = string;
1255
-
1256
- export declare type ThemePreferenceMode = "light" | "dark";
1257
-
1258
- export declare interface ThemePreferenceOption {
1259
- id: ThemePreference;
1260
- title?: string;
1261
- mode: ThemePreferenceMode;
1262
- tokens?: ThemePreferenceTokens;
1263
- monacoTheme?: unknown;
1264
- }
1265
-
1266
- export declare type ThemePreferenceTokens = Record<string, string>;
1267
-
1268
- export declare interface ThemeRegistry {
1269
- store: WorkbenchStore<WorkbenchThemeStoreState>;
1270
- register(themes: readonly ThemePreferenceOption[]): Disposable_2;
1271
- listThemes(): readonly ThemePreferenceOption[];
1272
- }
1273
-
1274
- declare interface TransientSurface {
1275
- role: "transient";
1276
- }
1277
-
1278
- export declare interface TreeAction {
1279
- id: string;
1280
- label?: string;
1281
- icon?: string;
1282
- commandId?: string;
1283
- args?: unknown;
1284
- params?: CommandParamSchema;
1285
- submitLabel?: string;
1286
- when?: string;
1287
- disabled?: boolean;
1288
- run?(args?: unknown): Promise<void> | void;
1289
- }
1290
-
1291
- export declare interface TreeContext {
1292
- filter?: string;
1293
- resource?: ResourceRef;
1294
- /** Widget/view contribution id for trees rendered through a view-backed widget. */
1295
- viewId?: string;
1296
- }
1297
-
1298
- export declare interface TreeNode {
1299
- id: string;
1300
- label: string;
1301
- icon?: string;
1302
- iconElement?: unknown;
1303
- iconColor?: string;
1304
- iconTooltip?: string;
1305
- endContent?: unknown;
1306
- commandId?: string;
1307
- resource?: ResourceRef;
1308
- target?: NavigationTarget;
1309
- /** Visual row variant for non-data rows such as placeholders. */
1310
- rowVariant?: TreeNodeRowVariant;
1311
- actions?: TreeAction[];
1312
- contextMenuActions?: TreeAction[];
1313
- contextMenuPath?: MenuPath;
1314
- menuPath?: MenuPath;
1315
- menuPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "left-start";
1316
- collapsible?: boolean;
1317
- disabled?: boolean;
1318
- children?: TreeNode[];
1319
- description?: string;
1320
- contextValue?: string;
1321
- hiddenByDefault?: boolean;
1322
- /** When true, the node (e.g. a header/footer row) opts in to the tree's hide/show customization menu. */
1323
- canHide?: boolean;
1324
- }
1325
-
1326
- declare type TreeNodeRowVariant = "empty-state";
1327
-
1328
- export declare interface TreeRendererContribution {
1329
- id: string;
1330
- title: string;
1331
- icon?: string;
1332
- when?: string;
1333
- defaultExpandedSectionIds?: string[];
1334
- defaultExpandedNodeIds?: string[];
1335
- getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1336
- getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1337
- getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1338
- getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
1339
- }
1340
-
1341
- export declare type TreeRendererImplementation = (input: WorkbenchWidgetRenderInput & {
1342
- treeId: string;
1343
- }) => unknown;
1344
-
1345
- export declare interface TreeRendererPersistenceAdapter {
1346
- getTreeStates(): PersistedTreeRendererStates | undefined;
1347
- setTreeStates(states: PersistedTreeRendererStates): void;
1348
- }
1349
-
1350
- export declare interface TreeRendererRefreshEvent {
1351
- treeId: string;
1352
- }
1353
-
1354
- declare type TreeRendererRefreshListener = (event: TreeRendererRefreshEvent) => void;
1355
-
1356
- export declare interface TreeRendererRegistry {
1357
- treeStore: WorkbenchStore<TreeRendererStoreState>;
1358
- registerTreeRenderer(view: TreeRendererContribution, metadata?: ContributionMetadata): Disposable_2;
1359
- setTreeRendererImplementation(impl: TreeRendererImplementation): void;
1360
- getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
1361
- listTreeRenderers(): RegisteredTreeRendererContribution[];
1362
- getBody(id: string, ctx?: TreeContext): Promise<TreeViewSection[]>;
1363
- getHeader(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1364
- getFooter(id: string, ctx?: TreeContext): Promise<TreeNode[]>;
1365
- getChildren(id: string, node: TreeNode, ctx?: TreeContext): Promise<TreeNode[]>;
1366
- getTreeState(id: string): TreeRendererState;
1367
- setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
1368
- setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
1369
- setSelectedNode(id: string, nodeId: string | undefined): void;
1370
- setLoading(id: string, loading: boolean): void;
1371
- refresh(id: string): void;
1372
- onDidRefresh(listener: TreeRendererRefreshListener): Disposable_2;
1373
- }
1374
-
1375
- export declare interface TreeRendererState {
1376
- expandedNodeIds: string[];
1377
- expandedSectionIds: string[];
1378
- selectedNodeId?: string;
1379
- loading?: boolean;
1380
- }
1381
-
1382
- export declare interface TreeRendererStoreState {
1383
- trees: Record<string, RegisteredTreeRendererContribution>;
1384
- statesByTreeId: Record<string, TreeRendererState>;
1385
- refreshKeysByTreeId: Record<string, number>;
1386
- }
1387
-
1388
- declare interface TreeSectionEmptyState {
1389
- title: string;
1390
- description?: string;
1391
- icon?: string;
1392
- }
1393
-
1394
- export declare interface TreeViewSection {
1395
- id: string;
1396
- label?: string;
1397
- actions?: TreeAction[];
1398
- collapsible?: boolean;
1399
- emptyState?: TreeSectionEmptyState;
1400
- nodes: TreeNode[];
1401
- hiddenByDefault?: boolean;
1402
- /** When true, the section (category) opts in to the tree's hide/show customization menu. */
1403
- canHide?: boolean;
1404
- }
1405
-
1406
- /**
1407
- * Core-owned contracts for data renderer contributions. @pstdio/ui's
1408
- * DataRenderer props are structurally identical; the React layer bridges the
1409
- * two, so drift surfaces as a compile error there instead of coupling core's
1410
- * API shape to UI package ownership.
1411
- */
1412
- export declare type ViewMode = "board" | "list";
1413
-
1414
- export declare interface WidgetContribution {
1415
- id: string;
1416
- title: string;
1417
- area: WorkbenchArea;
1418
- fallbackArea?: WorkbenchArea;
1419
- singleton?: boolean;
1420
- reuse?: WidgetReusePolicy;
1421
- mountStrategy?: WidgetMountStrategy;
1422
- closable?: boolean;
1423
- hiddenByDefault?: boolean;
1424
- areaSize?: WorkbenchAreaSize;
1425
- areaCollapsible?: boolean;
1426
- headerBorderBottom?: boolean;
1427
- resourceKinds?: string[];
1428
- priority?: number;
1429
- rendererId: string;
1430
- config?: unknown;
1431
- canOpen?(resource: ResourceRef): boolean;
1432
- }
1433
-
1434
- export declare type WidgetMountStrategy = "active" | "keep-mounted";
1435
-
1436
- export declare type WidgetReusePolicy = "resource" | "none";
1437
-
1438
- export declare type WorkbenchArea = (typeof workbenchAreas)[number];
1439
-
1440
- export declare const workbenchAreas: readonly ["nav", "activity", "left-header", "left", "main-header", "main-left", "main", "main-right", "secondary-header", "secondary", "status", "overlay", "floating-header", "floating"];
1441
-
1442
- export declare interface WorkbenchAreaSize {
1443
- defaultPx?: number;
1444
- minPx?: number;
1445
- maxPx?: number;
1446
- }
1447
-
1448
- export declare interface WorkbenchAreaState {
1449
- id: WorkbenchArea;
1450
- visible: boolean;
1451
- size?: number;
1452
- widgets: WorkbenchWidgetPlacement[];
1453
- activeWidgetId?: string;
1454
- }
1455
-
1456
- export declare const workbenchAreaTabLeadingMenuPath: (area: string) => MenuPath;
1457
-
1458
- export declare type WorkbenchBreadcrumbChangeListener = () => void;
1459
-
1460
- export declare interface WorkbenchBreadcrumbController {
1461
- store: WorkbenchStore<WorkbenchBreadcrumbState>;
1462
- setItems(items: WorkbenchBreadcrumbItem[]): Disposable_2;
1463
- clearItems(): void;
1464
- getItems(): WorkbenchBreadcrumbItem[] | undefined;
1465
- onDidChange(listener: WorkbenchBreadcrumbChangeListener): Disposable_2;
1466
- }
1467
-
1468
- export declare interface WorkbenchBreadcrumbItem {
1469
- title: unknown;
1470
- icon?: string;
1471
- url?: string;
1472
- onClick?: () => void;
1473
- resource?: ResourceRef;
1474
- }
1475
-
1476
- declare interface WorkbenchBreadcrumbState {
1477
- items: WorkbenchBreadcrumbItem[] | undefined;
1478
- }
1479
-
1480
- export declare interface WorkbenchCommandExecutionContext {
1481
- resource?: ResourceRef;
1482
- }
1483
-
1484
- export declare interface WorkbenchCommandExecutionError {
1485
- commandId: string;
1486
- args: unknown;
1487
- error: unknown;
1488
- }
1489
-
1490
- export declare type WorkbenchCommandExecutionErrorListener = (event: WorkbenchCommandExecutionError) => void;
1491
-
1492
- export declare type WorkbenchCommandPaletteChangeListener = (open: boolean) => void;
1493
-
1494
- export declare interface WorkbenchCommandPaletteController {
1495
- store: WorkbenchStore<WorkbenchCommandPaletteState>;
1496
- isOpen(): boolean;
1497
- getView(): WorkbenchCommandPaletteView;
1498
- getInitialQuery(): string;
1499
- getParamsRequest(): WorkbenchCommandParamsRequest | null;
1500
- open(input?: WorkbenchCommandPaletteOpenInput): void;
1501
- close(): void;
1502
- toggle(): void;
1503
- requestParams(request: WorkbenchCommandParamsRequest): void;
1504
- clearParams(): void;
1505
- onDidChange(listener: WorkbenchCommandPaletteChangeListener): Disposable_2;
1506
- }
1507
-
1508
- export declare const workbenchCommandPaletteMenuPath: readonly ["workbench", "commandPalette"];
1509
-
1510
- export declare interface WorkbenchCommandPaletteOpenInput {
1511
- view?: WorkbenchCommandPaletteView;
1512
- initialQuery?: string;
1513
- }
1514
-
1515
- export declare interface WorkbenchCommandPaletteState {
1516
- open: boolean;
1517
- view: WorkbenchCommandPaletteView;
1518
- initialQuery: string;
1519
- paramsRequest: WorkbenchCommandParamsRequest | null;
1520
- }
1521
-
1522
- export declare type WorkbenchCommandPaletteView = "main" | "theme" | "mode";
1523
-
1524
- declare interface WorkbenchCommandParamsRequest {
1525
- record: {
1526
- command: {
1527
- id: string;
1528
- label: string;
1529
- params?: CommandParamSchema;
1530
- };
1531
- };
1532
- label: string;
1533
- args?: unknown;
1534
- context?: WorkbenchCommandExecutionContext;
1535
- }
1536
-
1537
- export declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
1538
- registerModule(module: WorkbenchModuleContribution): Disposable_2;
1539
- unregisterModule(moduleId: string): void;
1540
- }
1541
-
1542
- export declare interface WorkbenchCoreContributionContext {
1543
- breadcrumbs: WorkbenchBreadcrumbController;
1544
- commandPalette: WorkbenchCommandPaletteController;
1545
- commandPaletteResources: CommandPaletteResourceRegistry;
1546
- commands: CommandRegistry;
1547
- context: ContextKeyService;
1548
- focus: WorkbenchFocusController;
1549
- history: HistoryController;
1550
- keybindings: KeybindingRegistry;
1551
- lastResource: WorkbenchLastResourceController;
1552
- layout: WorkbenchLayoutModel;
1553
- modes: WorkbenchModeRegistry;
1554
- navigation: NavigationRegistry;
1555
- notifications: NotificationRegistry;
1556
- panels: WorkbenchPanelsController;
1557
- preferences: PreferenceRegistry;
1558
- renderers: WorkbenchRenderers;
1559
- resources: ResourceRegistry;
1560
- settings: SettingsRegistry;
1561
- sessionPanel: WorkbenchSessionPanelController;
1562
- terminal: WorkbenchTerminalController;
1563
- themes: ThemeRegistry;
1564
- fileIconThemes: FileIconThemeRegistry;
1565
- getPrimaryResource(): ResourceRef | undefined;
1566
- onDidChangePrimaryResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1567
- getActiveResource(): ResourceRef | undefined;
1568
- onDidChangeActiveResource(listener: (resource: ResourceRef | undefined) => void): Disposable_2;
1569
- }
1570
-
1571
- export declare interface WorkbenchFileIconThemeStoreState {
1572
- themes: readonly FileIconThemePreferenceOption[];
1573
- }
1574
-
1575
- export declare type WorkbenchFocusArea = (typeof workbenchFocusAreas)[number];
1576
-
1577
- export declare const workbenchFocusAreas: readonly ["activityBar", "sideBar", "main", "panel", "statusBar"];
1578
-
1579
- export declare type WorkbenchFocusChangeListener = (area: WorkbenchFocusArea | undefined) => void;
1580
-
1581
- export declare interface WorkbenchFocusController {
1582
- store: WorkbenchStore<WorkbenchFocusState>;
1583
- setActiveArea(area: WorkbenchFocusArea): void;
1584
- clearFocus(): void;
1585
- getActiveArea(): WorkbenchFocusArea | undefined;
1586
- onDidChange(listener: WorkbenchFocusChangeListener): Disposable_2;
1587
- }
1588
-
1589
- export declare interface WorkbenchFocusState {
1590
- activeArea: WorkbenchFocusArea | undefined;
1591
- }
1592
-
1593
- export declare interface WorkbenchLastResourceController {
1594
- get(): ResourceRef | undefined;
1595
- set(resource: ResourceRef | undefined): void;
1596
- restore(): Promise<boolean>;
1597
- }
1598
-
1599
- export declare interface WorkbenchLayout {
1600
- areas: Record<WorkbenchArea, WorkbenchAreaState>;
1601
- activeWidgetId?: string;
1602
- activeResourceUri?: string;
1603
- }
1604
-
1605
- export declare type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
1606
-
1607
- export declare interface WorkbenchLayoutStoreState {
1608
- layout: WorkbenchLayout;
1609
- widgets: Record<string, RegisteredWidgetContribution>;
1610
- placeholders: Partial<Record<WorkbenchArea, RegisteredPlaceholderContribution>>;
1611
- }
1612
-
1613
- export declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
1614
-
1615
- export declare type WorkbenchModeActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
1616
-
1617
- declare type WorkbenchModeChangeListener = () => void;
1618
-
1619
- export declare interface WorkbenchModeContribution {
1620
- id: string;
1621
- label?: string;
1622
- activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
1623
- }
1624
-
1625
- export declare interface WorkbenchModeRegistry {
1626
- store: WorkbenchStore<WorkbenchModeStoreState>;
1627
- registerMode(mode: WorkbenchModeContribution): Disposable_2;
1628
- getMode(id: string): WorkbenchModeContribution | undefined;
1629
- listModes(): WorkbenchModeContribution[];
1630
- getActiveModeId(): string | undefined;
1631
- setActiveMode(id: string | undefined): void;
1632
- onDidChangeActive(listener: WorkbenchModeChangeListener): Disposable_2;
1633
- }
1634
-
1635
- declare interface WorkbenchModeStoreState {
1636
- modes: Record<string, WorkbenchModeContribution>;
1637
- activeModeId: string | undefined;
1638
- }
1639
-
1640
- declare type WorkbenchModuleActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
1641
-
1642
- export declare interface WorkbenchModuleContribution {
1643
- id: string;
1644
- source?: ContributionSource;
1645
- ownerId?: string;
1646
- activate(ctx: WorkbenchModuleContributionContext): WorkbenchModuleActivationResult;
1647
- }
1648
-
1649
- export declare type WorkbenchModuleContributionContext = WorkbenchCoreContributionContext;
1650
-
1651
- export declare interface WorkbenchNotification {
1652
- id?: string;
1653
- level: WorkbenchNotificationLevel;
1654
- title: string;
1655
- message?: string;
1656
- createdAt?: string;
1657
- resource?: ResourceRef;
1658
- actions?: WorkbenchNotificationAction[];
1659
- metadata?: Record<string, unknown>;
1660
- }
1661
-
1662
- export declare interface WorkbenchNotificationAction {
1663
- commandId: string;
1664
- title: string;
1665
- args?: unknown;
1666
- }
1667
-
1668
- export declare type WorkbenchNotificationEvent = {
1669
- type: "show";
1670
- id: string;
1671
- notification: RegisteredWorkbenchNotification;
1672
- } | {
1673
- type: "dismiss";
1674
- id: string;
1675
- };
1676
-
1677
- export declare type WorkbenchNotificationLevel = "info" | "success" | "warning" | "error";
1678
-
1679
- declare type WorkbenchNotificationListener = (event: WorkbenchNotificationEvent) => void;
1680
-
1681
- declare interface WorkbenchNotificationStoreState {
1682
- notifications: Record<string, RegisteredWorkbenchNotification>;
1683
- }
1684
-
1685
- export declare type WorkbenchPanelsChangeListener = (state: WorkbenchPanelsState) => void;
1686
-
1687
- export declare interface WorkbenchPanelsController {
1688
- store: WorkbenchStore<WorkbenchPanelsState>;
1689
- isOpen(areaId: string): boolean;
1690
- setOpen(areaId: string, open: boolean): void;
1691
- toggle(areaId: string): void;
1692
- onDidChange(listener: WorkbenchPanelsChangeListener): Disposable_2;
1693
- }
1694
-
1695
- export declare interface WorkbenchPanelsPersistenceAdapter {
1696
- getPanelStates(): PersistedWorkbenchPanels | undefined;
1697
- setPanelStates(state: PersistedWorkbenchPanels): void;
1698
- }
1699
-
1700
- export declare interface WorkbenchPanelsState {
1701
- openByAreaId: Record<string, boolean>;
1702
- }
1703
-
1704
- declare type WorkbenchRendererChangeListener = () => void;
1705
-
1706
- export declare type WorkbenchRendererRegistration = {
1707
- id: string;
1708
- keepAlive?: false;
1709
- render: (input: WorkbenchWidgetRenderInput) => unknown;
1710
- } | {
1711
- id: string;
1712
- keepAlive: true;
1713
- render: () => unknown;
1714
- };
1715
-
1716
- export declare interface WorkbenchRendererRegistry {
1717
- store: WorkbenchStore<WorkbenchRendererStoreState>;
1718
- registerRenderer(renderer: WorkbenchRendererRegistration): Disposable_2;
1719
- getRenderer(id: string): WorkbenchRendererRegistration | undefined;
1720
- listRenderers(): WorkbenchRendererRegistration[];
1721
- onDidChange(listener: WorkbenchRendererChangeListener): Disposable_2;
1722
- claim(rendererId: string, slot: HTMLElement, input: WorkbenchWidgetRenderInput): Disposable_2;
1723
- getHost(rendererId: string): HTMLElement | undefined;
1724
- getClaim(rendererId: string): WorkbenchWidgetRenderInput | undefined;
1725
- }
1726
-
1727
- export declare type WorkbenchRenderers = WorkbenchRendererRegistry & TreeRendererRegistry & DataRendererRegistry & FileRendererRegistry & ControlsRendererRegistry;
1728
-
1729
- export declare interface WorkbenchRendererStoreState {
1730
- renderers: Record<string, WorkbenchRendererRegistration>;
1731
- hosts: Record<string, RegisteredKeepAliveHost>;
1732
- claims: Record<string, WorkbenchWidgetRenderInput>;
1733
- }
1734
-
1735
- export declare const workbenchResourceIdContextKey = "workbench.resource.id";
1736
-
1737
- export declare const workbenchResourceKindContextKey = "workbench.resource.kind";
1738
-
1739
- export declare const workbenchResourceMetadataContextKey: (key: string) => string;
1740
-
1741
- export declare const workbenchSelectionResourceUriMetadataKey = "workbench.selectionResourceUri";
1742
-
1743
- export declare type WorkbenchSessionPanelChangeListener = (mode: WorkbenchSessionPanelMode) => void;
1744
-
1745
- export declare interface WorkbenchSessionPanelController {
1746
- store: WorkbenchStore<WorkbenchSessionPanelState>;
1747
- getMode(): WorkbenchSessionPanelMode;
1748
- setMode(mode: WorkbenchSessionPanelMode): void;
1749
- onDidChange(listener: WorkbenchSessionPanelChangeListener): Disposable_2;
1750
- }
1751
-
1752
- export declare type WorkbenchSessionPanelMode = "bubble" | "closed" | "attached";
1753
-
1754
- export declare interface WorkbenchSessionPanelState {
1755
- mode: WorkbenchSessionPanelMode;
1756
- }
1757
-
1758
- export declare interface WorkbenchStore<TState> {
1759
- getState(): TState;
1760
- getInitialState(): TState;
1761
- subscribe(listener: WorkbenchStoreListener<TState>): () => void;
1762
- subscribeSelector<TValue>(selector: WorkbenchStoreSelector<TState, TValue>, listener: WorkbenchStoreSelectorListener<TValue>, options?: {
1763
- equalityFn?: (left: TValue, right: TValue) => boolean;
1764
- fireImmediately?: boolean;
1765
- }): () => void;
1766
- }
1767
-
1768
- export declare type WorkbenchStoreListener<TState> = (state: TState, previousState: TState) => void;
1769
-
1770
- export declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
1771
-
1772
- export declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
1773
-
1774
- export declare interface WorkbenchTerminalController {
1775
- store: WorkbenchStore<WorkbenchTerminalState>;
1776
- /** True once the host injected a session opener. */
1777
- isAvailable(): boolean;
1778
- setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
1779
- /** Opens a session; the live adapter stays host-side and only the id is returned. */
1780
- open(input: {
1781
- request: WorkbenchTerminalSessionRequest;
1782
- title?: string;
1783
- }): Promise<{
1784
- sessionId: string;
1785
- }>;
1786
- write(input: {
1787
- sessionId: string;
1788
- data: string | Uint8Array;
1789
- }): void;
1790
- resize(input: {
1791
- sessionId: string;
1792
- cols: number;
1793
- rows: number;
1794
- }): void;
1795
- kill(input: {
1796
- sessionId: string;
1797
- signal?: string;
1798
- }): Promise<void>;
1799
- subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
1800
- getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
1801
- listSessions(): WorkbenchTerminalSessionModel[];
1802
- /** Kills every live session. Called when the owning workbench is torn down. */
1803
- dispose(): Promise<void>;
1804
- }
1805
-
1806
- export declare interface WorkbenchTerminalSessionAdapter {
1807
- readonly id: string;
1808
- write(data: string | Uint8Array): void;
1809
- resize(cols: number, rows: number): void;
1810
- kill(signal?: string): Promise<void> | void;
1811
- onData(handler: (chunk: Uint8Array) => void): () => void;
1812
- /** Foreground process name updates, when the opener can report them (real PTYs). */
1813
- onTitle?(handler: (title: string) => void): () => void;
1814
- onExit(handler: (exit: WorkbenchTerminalSessionExit) => void): () => void;
1815
- onError(handler: (error: WorkbenchTerminalSessionError) => void): () => void;
1816
- }
1817
-
1818
- export declare interface WorkbenchTerminalSessionError {
1819
- message: string;
1820
- }
1821
-
1822
- export declare interface WorkbenchTerminalSessionExit {
1823
- code: number | null;
1824
- signal: string | null;
1825
- }
1826
-
1827
- export declare interface WorkbenchTerminalSessionModel {
1828
- id: string;
1829
- title: string;
1830
- status: WorkbenchTerminalSessionStatus;
1831
- exit?: WorkbenchTerminalSessionExit;
1832
- }
1833
-
1834
- export declare type WorkbenchTerminalSessionOpener = (request: WorkbenchTerminalSessionRequest) => Promise<WorkbenchTerminalSessionAdapter>;
1835
-
1836
- export declare interface WorkbenchTerminalSessionRequest {
1837
- command?: string[];
1838
- cwd?: string;
1839
- env?: Record<string, string>;
1840
- cols: number;
1841
- rows: number;
1842
- }
1843
-
1844
- export declare interface WorkbenchTerminalSessionSink {
1845
- onData?(chunk: Uint8Array): void;
1846
- onExit?(exit: WorkbenchTerminalSessionExit): void;
1847
- onError?(error: WorkbenchTerminalSessionError): void;
1848
- }
1849
-
1850
- export declare type WorkbenchTerminalSessionStatus = "running" | "exited" | "killed";
1851
-
1852
- export declare interface WorkbenchTerminalState {
1853
- sessionsById: Record<string, WorkbenchTerminalSessionModel>;
1854
- }
1855
-
1856
- export declare interface WorkbenchThemeStoreState {
1857
- themes: readonly ThemePreferenceOption[];
1858
- }
1859
-
1860
- export declare const workbenchTopHeaderLeadingMenuPath: MenuPath;
1861
-
1862
- export declare const workbenchTopHeaderTrailingMenuPath: MenuPath;
1863
-
1864
- export declare interface WorkbenchWidgetPlacement {
1865
- widgetId: string;
1866
- contributionId: string;
1867
- ownerId?: string;
1868
- source?: ContributionSource;
1869
- resource?: ResourceRef;
1870
- resourceUri?: string;
1871
- title?: string;
1872
- pinned?: boolean;
1873
- closable?: boolean;
1874
- mountStrategy?: WidgetMountStrategy;
1875
- hiddenByDefault?: boolean;
1876
- }
1877
-
1878
- export declare interface WorkbenchWidgetRenderInput {
1879
- workbench: WorkbenchCore;
1880
- widget: RegisteredWidgetContribution | RegisteredPlaceholderContribution;
1881
- placement: WorkbenchWidgetPlacement;
1882
- refresh: () => void;
1883
- }
1884
-
1885
- export { }