@pstdio/workbench 0.39.0 → 0.41.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.
@@ -1,4 +1,5 @@
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";
1
+ import { ControlValue, ControlValueMap, ControlsQueryResult, ControlsQueryResult as ControlsQueryResult$1, DataTableRendererSettings, DockedWorkbenchRegion, DockedWorkbenchRegion as DockedWorkbenchRegion$1, FileRendererSectionTarget, KanbanRendererAttributeDisplay, Localizable, ModeRegionSettings, NavigationTargetPage, NavigationTargetPanel, PageDocumentDeclaration, PageLocation, PageMain, PageOpenIntent, PageRef, PageSlot, PlacementIdentity, PlacementItem, PlacementRef, ResourceConstraint, ResourceRef, ResourceRef as ResourceRef$1, ViewFilterGroup, ViewSort, defaultPageResourceCodec, dockedWorkbenchRegions } from "@pstdio/sdk/extensions";
2
+ import { TerminalSessionAdapter, TerminalSessionError, TerminalSessionExit, TerminalSessionRequest } from "@pstdio/sdk/api";
2
3
  //#region src/core/shared/disposable.d.ts
3
4
  interface Disposable {
4
5
  dispose(): void;
@@ -79,6 +80,7 @@ interface ResourceHierarchyCycle {
79
80
  //#endregion
80
81
  //#region src/core/registries/resources/resource-registry.d.ts
81
82
  declare const workbenchResourceTypeContextKey = "workbench.resource.type";
83
+ declare const workbenchResourceOwnerContextKey = "workbench.resource.extensionId";
82
84
  declare const workbenchResourceIdContextKey = "workbench.resource.id";
83
85
  declare const workbenchResourceMetadataContextKey: (key: string) => string;
84
86
  declare const workbenchSelectionResourceKeyMetadataKey = "workbench.selectionResourceKey";
@@ -135,6 +137,8 @@ interface WorkbenchBreadcrumbItem {
135
137
  title: unknown;
136
138
  icon?: string;
137
139
  indicator?: "session-status";
140
+ /** The crumb leaves the project navigation: it opens a Sidenav level or a mode that replaces the Sidenav. */
141
+ startsLevel?: boolean;
138
142
  url?: string;
139
143
  onClick?: () => void;
140
144
  resource?: ResourceRef$1;
@@ -556,12 +560,17 @@ interface WorkbenchPanelInstance {
556
560
  tabRetention?: WorkbenchTabRetention;
557
561
  tab?: WorkbenchPanelTab;
558
562
  }
563
+ type WorkbenchSidePanelMode = "floating" | "closed" | "attached";
559
564
  interface WorkbenchRegionState {
560
565
  id: WorkbenchRegion;
561
566
  visible: boolean;
562
567
  size?: number;
563
568
  widgets: WorkbenchWidgetPlacement[];
569
+ /** Page snapshots retain mixed-owner order without storing shared mode content. Consumed on restore. */
570
+ savedWidgetOrder?: string[];
564
571
  activeWidgetId?: string;
572
+ /** Side region only: how the open Side Panel is shown. `visible` says whether it is open. */
573
+ presentation?: Exclude<WorkbenchSidePanelMode, "closed">;
565
574
  }
566
575
  interface WorkbenchLayout {
567
576
  regions: Record<WorkbenchRegion, WorkbenchRegionState>;
@@ -662,6 +671,7 @@ interface LayoutModel {
662
671
  getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
663
672
  setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
664
673
  setRegionSize(regionId: WorkbenchRegion, size: number): void;
674
+ setSidePanelMode(mode: WorkbenchSidePanelMode): void;
665
675
  listPlaceholders(): RegisteredPlaceholderContribution[];
666
676
  listWidgets(): RegisteredWidgetContribution[];
667
677
  listPanels(): WorkbenchPanelContribution[];
@@ -721,78 +731,6 @@ interface WorkbenchFocusController {
721
731
  onDidChange(listener: WorkbenchFocusChangeListener): Disposable;
722
732
  }
723
733
  //#endregion
724
- //#region src/core/registries/layout/placement-reconciliation.d.ts
725
- interface ResolvedOwnedPlacement<Value = unknown> {
726
- identity: PlacementIdentity;
727
- region: WorkbenchRegion;
728
- order: number;
729
- value: Value;
730
- }
731
- interface OwnedPlacementUpdate<Value> {
732
- current: ResolvedOwnedPlacement<Value>;
733
- desired: ResolvedOwnedPlacement<Value>;
734
- }
735
- interface OwnedPlacementReconciliation<Value> {
736
- add: readonly ResolvedOwnedPlacement<Value>[];
737
- retain: readonly ResolvedOwnedPlacement<Value>[];
738
- update: readonly OwnedPlacementUpdate<Value>[];
739
- activate: readonly ResolvedOwnedPlacement<Value>[];
740
- remove: readonly ResolvedOwnedPlacement<Value>[];
741
- }
742
- //#endregion
743
- //#region src/core/registries/renderers/renderer-registry.d.ts
744
- interface WorkbenchPanelRenderInput {
745
- workbench: WorkbenchCore;
746
- panel: WorkbenchPanelContribution | PlaceholderContribution | RegisteredPlaceholderContribution;
747
- instance: WorkbenchPanelInstance;
748
- refresh: () => void;
749
- }
750
- interface WorkbenchRendererRegistration {
751
- id: string;
752
- render: (input: WorkbenchPanelRenderInput) => unknown;
753
- }
754
- //#endregion
755
- //#region src/core/registries/renderers/controls-renderer-registry.d.ts
756
- type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
757
- interface ControlsRendererLayout {
758
- region?: ControlsRendererRegion;
759
- defaultPx?: number;
760
- minPx?: number;
761
- maxPx?: number;
762
- }
763
- interface ControlsUpdateValueInput {
764
- controlId: string;
765
- value: ControlValue;
766
- values: ControlValueMap;
767
- resource?: ResourceRef$1;
768
- }
769
- interface ControlsApplyInput {
770
- values: ControlValueMap;
771
- resource?: ResourceRef$1;
772
- }
773
- interface ControlsResetInput {
774
- controlIds?: string[];
775
- resource?: ResourceRef$1;
776
- }
777
- interface ControlsRendererContribution {
778
- id: string;
779
- title: string;
780
- resourceKind?: string;
781
- emptyTitle?: string;
782
- emptyDescription?: string;
783
- layout?: ControlsRendererLayout;
784
- defaultValues?: ControlValueMap;
785
- /** Load the control declarations + current values for the active resource. */
786
- executeQuery(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<ControlsQueryResult> | ControlsQueryResult;
787
- /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
788
- updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
789
- /** Commit the full value map from a sticky footer. */
790
- apply?(input: ControlsApplyInput): Promise<void> | void;
791
- /** Reset some or all controls to their defaults. */
792
- reset?(input: ControlsResetInput): Promise<void> | void;
793
- subscribe?: (listener: () => void) => Disposable | (() => void);
794
- }
795
- //#endregion
796
734
  //#region src/core/registries/menus/menu-registry.d.ts
797
735
  type MenuPath = readonly string[];
798
736
  interface MenuItem {
@@ -823,6 +761,18 @@ interface MenuRegistry {
823
761
  listMenuItems(path: MenuPath): RegisteredMenuItem[];
824
762
  }
825
763
  //#endregion
764
+ //#region src/core/registries/renderers/renderer-registry.d.ts
765
+ interface WorkbenchPanelRenderInput {
766
+ workbench: WorkbenchCore;
767
+ panel: WorkbenchPanelContribution | PlaceholderContribution | RegisteredPlaceholderContribution;
768
+ instance: WorkbenchPanelInstance;
769
+ refresh: () => void;
770
+ }
771
+ interface WorkbenchRendererRegistration {
772
+ id: string;
773
+ render: (input: WorkbenchPanelRenderInput) => unknown;
774
+ }
775
+ //#endregion
826
776
  //#region src/core/registries/renderers/tree-renderer-types.d.ts
827
777
  interface TreeQueryContext {
828
778
  signal?: AbortSignal;
@@ -993,160 +943,100 @@ interface TreeRendererRegistry {
993
943
  onDidRefresh(listener: TreeRendererRefreshListener): Disposable;
994
944
  }
995
945
  //#endregion
996
- //#region src/core/registries/renderers/view-toolbar-action.d.ts
997
- interface ViewToolbarAction extends TreeAction {
998
- presentation?: "primary" | "secondary";
999
- }
1000
- //#endregion
1001
- //#region src/core/registries/renderers/data-table-renderer-registry.d.ts
1002
- interface DataTableRendererThemeColor {
1003
- light: string;
1004
- dark: string;
1005
- foreground?: {
1006
- light: string;
1007
- dark: string;
1008
- };
1009
- }
1010
- type DataTableRendererColumnStat = {
1011
- type: "unique";
1012
- } | {
1013
- type: "histogram";
1014
- bins?: number;
1015
- } | {
1016
- type: "top-values";
1017
- limit?: number;
1018
- };
1019
- type DataTableRendererBadgePalette = "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink";
1020
- type DataTableRendererColumnRenderer = {
1021
- type: "json";
1022
- } | {
1023
- type: "color-scale";
1024
- stops: Array<{
1025
- value: number;
1026
- color: DataTableRendererThemeColor;
1027
- }>;
1028
- } | {
1029
- type: "categorical-color";
1030
- categories: Array<{
1031
- value: string | number | boolean | null;
1032
- color: DataTableRendererThemeColor;
1033
- }>;
1034
- } | {
1035
- type: "badge";
1036
- categories?: Array<{
1037
- value: string | number | boolean | null;
1038
- palette: DataTableRendererBadgePalette;
1039
- }>;
1040
- } | {
1041
- type: "diff";
1042
- } | {
1043
- type: "date";
1044
- } | {
1045
- type: "path";
1046
- };
1047
- interface DataTableRendererColumn {
946
+ //#region src/core/registries/navigation/navigation-tree-registry.d.ts
947
+ type NavigationTreeSlot = "header" | "content" | "footer";
948
+ interface NavigationTreeOwner {
949
+ kind: "mode" | "page";
1048
950
  id: string;
1049
- label?: string;
1050
- description?: string;
1051
- icon?: unknown;
1052
- hidden?: boolean;
1053
- /** Starts unchecked in the column menu; viewers can still show the column. */
1054
- defaultHidden?: boolean;
1055
- stat?: DataTableRendererColumnStat;
1056
- renderer?: DataTableRendererColumnRenderer;
951
+ extensionId: string;
1057
952
  }
1058
- interface DataTableRendererRow {
1059
- id: string;
1060
- values: Record<string, unknown>;
953
+ interface NavigationTreeContext {
1061
954
  resource?: ResourceRef$1;
955
+ signal?: AbortSignal;
1062
956
  }
1063
- interface DataTableRendererQueryResult {
1064
- rows: DataTableRendererRow[];
1065
- columns?: DataTableRendererColumn[];
957
+ interface NavigationTreeContribution {
958
+ id: string;
959
+ /** Prefix projected section and node ids when they come from an independent tree renderer. */
960
+ idScope?: string;
961
+ owner: NavigationTreeOwner;
962
+ sourceExtensionId: string;
963
+ declarationIndex: number;
964
+ slot?: NavigationTreeSlot;
965
+ viewId?: string;
966
+ defaultExpandedSectionIds?: string[];
967
+ /** Resolve the data resource independently of the selected navigation item. */
968
+ resolveResource?(resource: ResourceRef$1 | undefined): ResourceRef$1 | undefined;
969
+ getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
970
+ getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
1066
971
  }
1067
- interface DataTableRendererQueryContext {
1068
- resource?: ResourceRef$1;
1069
- modeId?: string;
972
+ interface NavigationTreeRegistry {
973
+ registerContribution(contribution: NavigationTreeContribution): Disposable;
974
+ resolveOwner(kind: NavigationTreeOwner["kind"], id: string, slot?: NavigationTreeSlot): NavigationTreeOwner | undefined;
975
+ getReadKey(owner: NavigationTreeOwner, context?: NavigationTreeContext): string;
976
+ getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
977
+ getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
978
+ getDefaultExpandedSectionIds(owner: NavigationTreeOwner, slot?: NavigationTreeSlot): string[];
979
+ onDidChange(listener: () => void): Disposable;
1070
980
  }
1071
- interface DataTableRendererRowAction {
1072
- id: string;
1073
- label: string;
1074
- icon?: unknown;
1075
- destructive?: boolean;
1076
- run(row: DataTableRendererRow): Promise<void> | void;
981
+ //#endregion
982
+ //#region src/core/registries/layout/placement-reconciliation.d.ts
983
+ interface ResolvedOwnedPlacement<Value = unknown> {
984
+ identity: PlacementIdentity;
985
+ region: WorkbenchRegion;
986
+ order: number;
987
+ value: Value;
1077
988
  }
1078
- interface DataTableRendererSelectionAction {
1079
- id: string;
1080
- label: string;
1081
- icon?: unknown;
1082
- destructive?: boolean;
1083
- run(rows: DataTableRendererRow[]): Promise<void> | void;
989
+ interface OwnedPlacementUpdate<Value> {
990
+ current: ResolvedOwnedPlacement<Value>;
991
+ desired: ResolvedOwnedPlacement<Value>;
1084
992
  }
1085
- interface DataTableRendererContribution {
1086
- id: string;
1087
- title: string;
1088
- toolbarActions?: ViewToolbarAction[];
1089
- resourceKind?: string;
1090
- columns?: DataTableRendererColumn[];
1091
- selectionMode?: "none" | "multiple";
1092
- selectionActions?: DataTableRendererSelectionAction[];
1093
- rowActions?: DataTableRendererRowAction[];
1094
- initialPageSize?: number;
1095
- pageSizeOptions?: number[];
1096
- /** Whether column statistics start visible. Defaults to `true`. */
1097
- defaultShowStats?: boolean;
1098
- emptyTitle?: string;
1099
- emptyDescription?: string;
1100
- /** Context keys that choose which rows the query returns. A change drops the old rows and starts a new read. */
1101
- contextKeys?: string[];
1102
- executeQuery(context: DataTableRendererQueryContext, signal: AbortSignal): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
1103
- subscribe?: (listener: () => void) => Disposable | (() => void);
1104
- onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
993
+ interface OwnedPlacementReconciliation<Value> {
994
+ add: readonly ResolvedOwnedPlacement<Value>[];
995
+ retain: readonly ResolvedOwnedPlacement<Value>[];
996
+ update: readonly OwnedPlacementUpdate<Value>[];
997
+ activate: readonly ResolvedOwnedPlacement<Value>[];
998
+ remove: readonly ResolvedOwnedPlacement<Value>[];
1105
999
  }
1106
- interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {}
1107
1000
  //#endregion
1108
- //#region src/core/registries/renderers/file-renderer-registry.d.ts
1109
- interface FileRendererContent {
1110
- fileName?: string;
1111
- /** Workspace-relative path shown above the file preview. */
1112
- filePath?: string;
1113
- mimeType?: string;
1114
- content?: string;
1115
- dataUrl?: string;
1116
- placeholder?: string;
1117
- /** Override contribution-level save support for one loaded file. */
1118
- editable?: boolean;
1119
- /** Request Monaco for text that automatic dispatch would open as markdown. */
1120
- textRenderer?: "automatic" | "monaco";
1121
- /** Represent a deliberate no-file selection without an editable blank document. */
1122
- emptyState?: {
1123
- title: string;
1124
- description?: string;
1125
- };
1126
- /** Ordered backing-store revision when one is available. */
1127
- revision?: string;
1001
+ //#region src/core/registries/renderers/controls-renderer-registry.d.ts
1002
+ type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
1003
+ interface ControlsRendererLayout {
1004
+ region?: ControlsRendererRegion;
1005
+ defaultPx?: number;
1006
+ minPx?: number;
1007
+ maxPx?: number;
1128
1008
  }
1129
- interface FileRendererRefreshOrigin {
1130
- rendererId: string;
1131
- instanceId: string;
1132
- operationId: string;
1009
+ interface ControlsUpdateValueInput {
1010
+ controlId: string;
1011
+ value: ControlValue;
1012
+ values: ControlValueMap;
1013
+ resource?: ResourceRef$1;
1133
1014
  }
1134
- interface FileRendererRefreshEnvelope {
1135
- resourceKey?: string;
1136
- origin?: FileRendererRefreshOrigin;
1137
- revision?: string;
1015
+ interface ControlsApplyInput {
1016
+ values: ControlValueMap;
1017
+ resource?: ResourceRef$1;
1138
1018
  }
1139
- interface FileRendererSaveResult {
1140
- revision?: string;
1019
+ interface ControlsResetInput {
1020
+ controlIds?: string[];
1021
+ resource?: ResourceRef$1;
1141
1022
  }
1142
- interface FileRendererContribution {
1023
+ interface ControlsRendererContribution {
1143
1024
  id: string;
1144
1025
  title: string;
1145
1026
  resourceKind?: string;
1146
- /** Resolve the file's content (and identity) for the bound resource. */
1147
- load(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<FileRendererContent> | FileRendererContent;
1148
- /** Persist edited text. Absent ⇒ read-only. Never called for images. */
1149
- save?(resource: ResourceRef$1 | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
1027
+ emptyTitle?: string;
1028
+ emptyDescription?: string;
1029
+ layout?: ControlsRendererLayout;
1030
+ defaultValues?: ControlValueMap;
1031
+ /** Load the control declarations + current values for the active resource. */
1032
+ executeQuery(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<ControlsQueryResult> | ControlsQueryResult;
1033
+ /** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
1034
+ updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
1035
+ /** Commit the full value map from a sticky footer. */
1036
+ apply?(input: ControlsApplyInput): Promise<void> | void;
1037
+ /** Reset some or all controls to their defaults. */
1038
+ reset?(input: ControlsResetInput): Promise<void> | void;
1039
+ subscribe?: (listener: () => void) => Disposable | (() => void);
1150
1040
  }
1151
1041
  //#endregion
1152
1042
  //#region src/core/registries/renderers/kanban-renderer-contracts.d.ts
@@ -1157,9 +1047,7 @@ interface FileRendererContribution {
1157
1047
  * API shape to UI package ownership.
1158
1048
  */
1159
1049
  type ViewMode = "board" | "list";
1160
- type SortDirection = "asc" | "desc";
1161
1050
  declare const NO_GROUPING = "none";
1162
- declare const MANUAL_ORDERING = "manual";
1163
1051
  interface EnumOption {
1164
1052
  value: string;
1165
1053
  label: string;
@@ -1182,6 +1070,9 @@ type AttributeType = {
1182
1070
  } | {
1183
1071
  kind: "enum-multi";
1184
1072
  options: EnumOptions;
1073
+ } | {
1074
+ kind: "boolean";
1075
+ legacyValues?: Record<string, boolean>;
1185
1076
  } | {
1186
1077
  kind: "string";
1187
1078
  } | {
@@ -1225,24 +1116,22 @@ interface KanbanRendererRow {
1225
1116
  resource?: unknown;
1226
1117
  attributes: Record<string, unknown>;
1227
1118
  }
1228
- interface KanbanRendererOrdering {
1229
- attributeId: string | typeof MANUAL_ORDERING;
1230
- direction: SortDirection;
1231
- }
1119
+ /** Board display settings. Order lives in the view's sorts. */
1232
1120
  interface KanbanRendererSettings {
1233
1121
  viewMode: ViewMode;
1234
1122
  columnGrouping: string | typeof NO_GROUPING;
1235
1123
  rowGrouping: string | typeof NO_GROUPING;
1236
- ordering: KanbanRendererOrdering;
1237
1124
  displayProperties: string[];
1238
1125
  }
1239
- type KanbanRendererFilterState = Record<string, string[]>;
1240
- interface KanbanRendererSavedView {
1126
+ /** A view stores display settings, one filter, and its sorts. Search is screen state and never saved. */
1127
+ interface CollectionSavedView<TSettings> {
1241
1128
  id: string;
1242
1129
  title: string;
1243
- settings: KanbanRendererSettings;
1244
- filters: KanbanRendererFilterState;
1130
+ settings: TSettings;
1131
+ filter: ViewFilterGroup;
1132
+ sorts: ViewSort[];
1245
1133
  }
1134
+ type KanbanRendererSavedView = CollectionSavedView<KanbanRendererSettings>;
1246
1135
  type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
1247
1136
  interface KanbanRendererCreateField {
1248
1137
  id: string;
@@ -1303,34 +1192,209 @@ interface ResourceContextAction<TNode = unknown> {
1303
1192
  endContent?: TNode;
1304
1193
  separatorBefore?: boolean;
1305
1194
  }
1306
- interface KanbanRendererViewsSource {
1307
- views: (KanbanRendererSavedView & {
1195
+ interface CollectionViewsSource<TSettings> {
1196
+ views: (CollectionSavedView<TSettings> & {
1308
1197
  builtIn: boolean;
1309
1198
  })[];
1310
1199
  defaultViewId: string;
1311
1200
  onCreateView: (input: {
1312
1201
  title: string;
1313
- settings: KanbanRendererSettings;
1314
- filters: KanbanRendererFilterState;
1202
+ settings: TSettings;
1203
+ filter: ViewFilterGroup;
1204
+ sorts: ViewSort[];
1315
1205
  copyFrom?: string;
1316
- }) => Promise<KanbanRendererSavedView>;
1206
+ }) => Promise<CollectionSavedView<TSettings>>;
1317
1207
  onUpdateView: (id: string, input: {
1318
1208
  title?: string;
1319
- settings?: KanbanRendererSettings;
1320
- filters?: KanbanRendererFilterState;
1209
+ settings?: TSettings;
1210
+ filter?: ViewFilterGroup;
1211
+ sorts?: ViewSort[];
1321
1212
  }) => Promise<void>;
1322
1213
  onDeleteView: (id: string) => Promise<void>;
1323
1214
  onSetDefaultView: (id: string | null) => Promise<void>;
1324
1215
  }
1325
- interface KanbanRendererViewsProvider {
1326
- getSnapshot: () => KanbanRendererViewsSource | undefined;
1216
+ interface CollectionViewsProvider<TSettings> {
1217
+ getSnapshot: () => CollectionViewsSource<TSettings> | undefined;
1327
1218
  subscribe: (listener: () => void) => () => void;
1328
1219
  }
1220
+ type KanbanRendererViewsSource = CollectionViewsSource<KanbanRendererSettings>;
1221
+ type KanbanRendererViewsProvider = CollectionViewsProvider<KanbanRendererSettings>;
1222
+ //#endregion
1223
+ //#region src/core/registries/renderers/view-toolbar-action.d.ts
1224
+ interface ViewToolbarAction extends TreeAction {
1225
+ presentation?: "primary" | "secondary";
1226
+ }
1227
+ //#endregion
1228
+ //#region src/core/registries/renderers/data-table-renderer-registry.d.ts
1229
+ interface DataTableRendererThemeColor {
1230
+ light: string;
1231
+ dark: string;
1232
+ foreground?: {
1233
+ light: string;
1234
+ dark: string;
1235
+ };
1236
+ }
1237
+ type DataTableRendererColumnStat = {
1238
+ type: "unique";
1239
+ } | {
1240
+ type: "histogram";
1241
+ bins?: number;
1242
+ } | {
1243
+ type: "top-values";
1244
+ limit?: number;
1245
+ };
1246
+ type DataTableRendererBadgePalette = "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink";
1247
+ type DataTableRendererColumnRenderer = {
1248
+ type: "json";
1249
+ } | {
1250
+ type: "color-scale";
1251
+ stops: Array<{
1252
+ value: number;
1253
+ color: DataTableRendererThemeColor;
1254
+ }>;
1255
+ } | {
1256
+ type: "categorical-color";
1257
+ categories: Array<{
1258
+ value: string | number | boolean | null;
1259
+ color: DataTableRendererThemeColor;
1260
+ }>;
1261
+ } | {
1262
+ type: "badge";
1263
+ categories?: Array<{
1264
+ value: string | number | boolean | null;
1265
+ palette: DataTableRendererBadgePalette;
1266
+ }>;
1267
+ } | {
1268
+ type: "diff";
1269
+ } | {
1270
+ type: "date";
1271
+ } | {
1272
+ type: "path";
1273
+ };
1274
+ interface DataTableRendererColumn {
1275
+ id: string;
1276
+ label?: string;
1277
+ /** How filters and sorts compare the column. Without it, the type is inferred from the values. */
1278
+ type?: "string" | "number" | "boolean" | "date";
1279
+ /** Offers the column under Grouping in the table's Display menu. */
1280
+ groupable?: boolean;
1281
+ /** Whether this column can be filtered. Defaults to true. */
1282
+ filterable?: boolean;
1283
+ description?: string;
1284
+ icon?: unknown;
1285
+ hidden?: boolean;
1286
+ stat?: DataTableRendererColumnStat;
1287
+ renderer?: DataTableRendererColumnRenderer;
1288
+ }
1289
+ interface DataTableRendererRow {
1290
+ id: string;
1291
+ values: Record<string, unknown>;
1292
+ resource?: ResourceRef$1;
1293
+ }
1294
+ interface DataTableRendererQueryResult {
1295
+ rows: DataTableRendererRow[];
1296
+ columns?: DataTableRendererColumn[];
1297
+ }
1298
+ interface DataTableRendererQueryContext {
1299
+ resource?: ResourceRef$1;
1300
+ modeId?: string;
1301
+ filter: ViewFilterGroup;
1302
+ sorts: ViewSort[];
1303
+ settings: DataTableRendererSettings;
1304
+ }
1305
+ type DataTableRendererSavedView = CollectionSavedView<DataTableRendererSettings>;
1306
+ interface DataTableRendererRowAction {
1307
+ id: string;
1308
+ label: string;
1309
+ icon?: unknown;
1310
+ destructive?: boolean;
1311
+ run(row: DataTableRendererRow): Promise<void> | void;
1312
+ }
1313
+ interface DataTableRendererSelectionAction {
1314
+ id: string;
1315
+ label: string;
1316
+ icon?: unknown;
1317
+ destructive?: boolean;
1318
+ run(rows: DataTableRendererRow[]): Promise<void> | void;
1319
+ }
1320
+ interface DataTableRendererContribution {
1321
+ id: string;
1322
+ title: string;
1323
+ toolbarActions?: ViewToolbarAction[];
1324
+ resourceKind?: string;
1325
+ columns?: DataTableRendererColumn[];
1326
+ selectionMode?: "none" | "multiple";
1327
+ selectionActions?: DataTableRendererSelectionAction[];
1328
+ rowActions?: DataTableRendererRowAction[];
1329
+ initialPageSize?: number;
1330
+ pageSizeOptions?: number[];
1331
+ /** The view state used before a saved view is active, such as hidden columns or statistics. */
1332
+ defaultSettings?: Partial<DataTableRendererSettings>;
1333
+ defaultFilter?: ViewFilterGroup;
1334
+ defaultSorts?: ViewSort[];
1335
+ defaultViews?: DataTableRendererSavedView[];
1336
+ defaultActiveViewId?: string;
1337
+ /** Shared saved views. Without it the table offers its default views only. */
1338
+ viewsProvider?: CollectionViewsProvider<DataTableRendererSettings>;
1339
+ emptyTitle?: string;
1340
+ emptyDescription?: string;
1341
+ /** Context keys that choose which rows the query returns. A change drops the old rows and starts a new read. */
1342
+ contextKeys?: string[];
1343
+ executeQuery(context: DataTableRendererQueryContext, signal: AbortSignal): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
1344
+ subscribe?: (listener: () => void) => Disposable | (() => void);
1345
+ onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
1346
+ }
1347
+ interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {}
1348
+ //#endregion
1349
+ //#region src/core/registries/renderers/file-renderer-registry.d.ts
1350
+ interface FileRendererContent {
1351
+ fileName?: string;
1352
+ /** Workspace-relative path shown above the file preview. */
1353
+ filePath?: string;
1354
+ mimeType?: string;
1355
+ content?: string;
1356
+ dataUrl?: string;
1357
+ placeholder?: string;
1358
+ /** Override contribution-level save support for one loaded file. */
1359
+ editable?: boolean;
1360
+ /** Request Monaco for text that automatic dispatch would open as markdown. */
1361
+ textRenderer?: "automatic" | "monaco";
1362
+ /** Represent a deliberate no-file selection without an editable blank document. */
1363
+ emptyState?: {
1364
+ title: string;
1365
+ description?: string;
1366
+ };
1367
+ /** Ordered backing-store revision when one is available. */
1368
+ revision?: string;
1369
+ }
1370
+ interface FileRendererRefreshOrigin {
1371
+ rendererId: string;
1372
+ instanceId: string;
1373
+ operationId: string;
1374
+ }
1375
+ interface FileRendererRefreshEnvelope {
1376
+ resourceKey?: string;
1377
+ origin?: FileRendererRefreshOrigin;
1378
+ revision?: string;
1379
+ }
1380
+ interface FileRendererSaveResult {
1381
+ revision?: string;
1382
+ }
1383
+ interface FileRendererContribution {
1384
+ id: string;
1385
+ title: string;
1386
+ resourceKind?: string;
1387
+ /** Resolve the file's content (and identity) for the bound resource. */
1388
+ load(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<FileRendererContent> | FileRendererContent;
1389
+ /** Persist edited text. Absent ⇒ read-only. Never called for images. */
1390
+ save?(resource: ResourceRef$1 | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
1391
+ }
1329
1392
  //#endregion
1330
1393
  //#region src/core/registries/renderers/kanban-renderer-registry.d.ts
1331
1394
  interface KanbanRendererQueryState {
1332
1395
  settings: KanbanRendererSettings;
1333
- filters: KanbanRendererFilterState;
1396
+ filter: ViewFilterGroup;
1397
+ sorts: ViewSort[];
1334
1398
  }
1335
1399
  interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
1336
1400
  id: string;
@@ -1354,9 +1418,10 @@ interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRend
1354
1418
  hideToolbar?: boolean;
1355
1419
  emptyTitle?: string;
1356
1420
  emptyDescription?: string;
1357
- /** Initial settings/filters applied when the kanban renderer mounts. */
1421
+ /** The view state used before a saved view is active. */
1358
1422
  defaultSettings?: Partial<KanbanRendererSettings>;
1359
- defaultFilters?: KanbanRendererFilterState;
1423
+ defaultFilter?: ViewFilterGroup;
1424
+ defaultSorts?: ViewSort[];
1360
1425
  viewsProvider?: KanbanRendererViewsProvider;
1361
1426
  defaultViews?: KanbanRendererSavedView[];
1362
1427
  defaultActiveViewId?: string;
@@ -1377,7 +1442,7 @@ interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRend
1377
1442
  * column value).
1378
1443
  */
1379
1444
  onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
1380
- /** Manual within-column reorder (only fires when ordering is manual). */
1445
+ /** Manual within-column reorder. Only fires while the view has no sorts. */
1381
1446
  onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
1382
1447
  createRow?: KanbanRendererCreateRowConfig;
1383
1448
  onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
@@ -1484,6 +1549,7 @@ interface WorkbenchPageContribution {
1484
1549
  modeId: string;
1485
1550
  parentId?: string;
1486
1551
  resource?: ResourceConstraint;
1552
+ document?: PageDocumentDeclaration;
1487
1553
  main: WorkbenchPageMain;
1488
1554
  slots: readonly WorkbenchPageSlot[];
1489
1555
  }
@@ -1526,7 +1592,7 @@ interface WorkbenchPageRegistry<Value> {
1526
1592
  };
1527
1593
  getPage(pageId: string): WorkbenchPageContribution | undefined;
1528
1594
  listPages(): WorkbenchPageContribution[];
1529
- pinPlacement(identity: PlacementIdentity): void;
1595
+ pinPlacement(identity: PlacementIdentity, open?: PageOpenIntent): void;
1530
1596
  openSlot(input: WorkbenchPageSlotOpenInput): void;
1531
1597
  }
1532
1598
  //#endregion
@@ -1545,9 +1611,13 @@ interface WorkbenchPageLocationBrowser {
1545
1611
  dispose(): void;
1546
1612
  };
1547
1613
  }
1614
+ interface PersistedWorkbenchPageLocation {
1615
+ location: PageLocation;
1616
+ rootLevel?: PageLocation;
1617
+ }
1548
1618
  interface WorkbenchPageLocationPersistence {
1549
- load(projectId: string): PageLocation | undefined;
1550
- save(projectId: string, location: PageLocation): void;
1619
+ load(projectId: string): PersistedWorkbenchPageLocation | undefined;
1620
+ save(projectId: string, persisted: PersistedWorkbenchPageLocation): void;
1551
1621
  }
1552
1622
  interface WorkbenchPageLocationDiagnostic {
1553
1623
  code: "page-location-unresolved";
@@ -1572,6 +1642,8 @@ interface WorkbenchPageLocationController {
1572
1642
  navigate(target: NavigationTargetPage): WorkbenchPageNavigationResult;
1573
1643
  replay(location: PageLocation): WorkbenchPageNavigationResult;
1574
1644
  navigateToParent(): WorkbenchPageNavigationResult;
1645
+ /** Opens the last location outside every Sidenav level, or the start page when there is none. */
1646
+ navigateToRootLevel(): WorkbenchPageNavigationResult;
1575
1647
  closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
1576
1648
  removeResource(resource: ResourceRef, retained: readonly PlacementIdentity[]): void;
1577
1649
  goBack(): void;
@@ -1606,22 +1678,13 @@ interface WorkbenchPanelMenuStateController {
1606
1678
  }
1607
1679
  //#endregion
1608
1680
  //#region src/core/controllers/side-panel/side-panel-controller.d.ts
1609
- type WorkbenchSidePanelMode = "floating" | "closed" | "attached";
1610
1681
  type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
1611
- interface WorkbenchSidePanelState {
1612
- mode: WorkbenchSidePanelMode;
1613
- }
1614
1682
  interface WorkbenchSidePanelController {
1615
1683
  canFloat(): boolean;
1616
- store: WorkbenchStore<WorkbenchSidePanelState>;
1617
1684
  getMode(): WorkbenchSidePanelMode;
1618
1685
  setMode(mode: WorkbenchSidePanelMode): void;
1619
1686
  onDidChange(listener: WorkbenchSidePanelChangeListener): Disposable;
1620
1687
  }
1621
- interface WorkbenchSidePanelPersistenceAdapter {
1622
- getMode(): WorkbenchSidePanelMode | undefined;
1623
- setMode(mode: WorkbenchSidePanelMode): void;
1624
- }
1625
1688
  //#endregion
1626
1689
  //#region src/core/controllers/shell/shell-controller.d.ts
1627
1690
  type WorkbenchSidePanelPresentation = WorkbenchSidePanelMode;
@@ -1640,31 +1703,10 @@ interface WorkbenchShellController {
1640
1703
  }
1641
1704
  //#endregion
1642
1705
  //#region src/core/controllers/terminal/terminal-controller.d.ts
1643
- interface WorkbenchTerminalSessionRequest {
1644
- command?: string[];
1645
- cwd?: string;
1646
- env?: Record<string, string>;
1647
- cols: number;
1648
- rows: number;
1649
- }
1650
- interface WorkbenchTerminalSessionExit {
1651
- code: number | null;
1652
- signal: string | null;
1653
- }
1654
- interface WorkbenchTerminalSessionError {
1655
- message: string;
1656
- }
1657
- interface WorkbenchTerminalSessionAdapter {
1658
- readonly id: string;
1659
- write(data: string | Uint8Array): void;
1660
- resize(cols: number, rows: number): void;
1661
- kill(signal?: string): Promise<void> | void;
1662
- onData(handler: (chunk: Uint8Array) => void): () => void;
1663
- /** Foreground process name updates, when the opener can report them (real PTYs). */
1664
- onTitle?(handler: (title: string) => void): () => void;
1665
- onExit(handler: (exit: WorkbenchTerminalSessionExit) => void): () => void;
1666
- onError(handler: (error: WorkbenchTerminalSessionError) => void): () => void;
1667
- }
1706
+ type WorkbenchTerminalSessionRequest = TerminalSessionRequest;
1707
+ type WorkbenchTerminalSessionExit = TerminalSessionExit;
1708
+ type WorkbenchTerminalSessionError = TerminalSessionError;
1709
+ type WorkbenchTerminalSessionAdapter = TerminalSessionAdapter;
1668
1710
  type WorkbenchTerminalSessionOpener = (request: WorkbenchTerminalSessionRequest) => Promise<WorkbenchTerminalSessionAdapter>;
1669
1711
  type WorkbenchTerminalSessionStatus = "running" | "exited" | "killed";
1670
1712
  interface WorkbenchTerminalSessionModel {
@@ -1818,42 +1860,6 @@ interface WorkbenchModePlacementRegistry {
1818
1860
  onDidChange(listener: () => void): Disposable;
1819
1861
  }
1820
1862
  //#endregion
1821
- //#region src/core/registries/navigation/navigation-tree-registry.d.ts
1822
- type NavigationTreeSlot = "header" | "content" | "footer";
1823
- interface NavigationTreeOwner {
1824
- kind: "mode" | "page";
1825
- id: string;
1826
- extensionId: string;
1827
- }
1828
- interface NavigationTreeContext {
1829
- resource?: ResourceRef$1;
1830
- signal?: AbortSignal;
1831
- }
1832
- interface NavigationTreeContribution {
1833
- id: string;
1834
- /** Prefix projected section and node ids when they come from an independent tree renderer. */
1835
- idScope?: string;
1836
- owner: NavigationTreeOwner;
1837
- sourceExtensionId: string;
1838
- declarationIndex: number;
1839
- slot?: NavigationTreeSlot;
1840
- viewId?: string;
1841
- defaultExpandedSectionIds?: string[];
1842
- /** Resolve the data resource independently of the selected navigation item. */
1843
- resolveResource?(resource: ResourceRef$1 | undefined): ResourceRef$1 | undefined;
1844
- getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
1845
- getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
1846
- }
1847
- interface NavigationTreeRegistry {
1848
- registerContribution(contribution: NavigationTreeContribution): Disposable;
1849
- resolveOwner(kind: NavigationTreeOwner["kind"], id: string, slot?: NavigationTreeSlot): NavigationTreeOwner | undefined;
1850
- getReadKey(owner: NavigationTreeOwner, context?: NavigationTreeContext): string;
1851
- getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
1852
- getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
1853
- getDefaultExpandedSectionIds(owner: NavigationTreeOwner, slot?: NavigationTreeSlot): string[];
1854
- onDidChange(listener: () => void): Disposable;
1855
- }
1856
- //#endregion
1857
1863
  //#region src/core/registries/notifications/notification-registry.d.ts
1858
1864
  type WorkbenchNotificationLevel = "info" | "success" | "warning" | "error";
1859
1865
  interface WorkbenchNotificationAction {
@@ -2098,16 +2104,28 @@ interface WorkbenchStatusBarItem {
2098
2104
  }
2099
2105
  interface WorkbenchStatusBarRegistryState {
2100
2106
  items: Record<string, WorkbenchStatusBarItem>;
2107
+ order: string[];
2108
+ }
2109
+ interface WorkbenchStatusBarPersistenceAdapter {
2110
+ getOrder(): string[] | undefined;
2111
+ setOrder(ids: string[]): void;
2101
2112
  }
2113
+ type WorkbenchStatusBarPosition = {
2114
+ beforeItemId: string;
2115
+ } | {
2116
+ afterItemId: string;
2117
+ };
2102
2118
  interface WorkbenchStatusBarRegistry {
2103
2119
  store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
2104
2120
  registerItem(item: WorkbenchStatusBarItem): Disposable;
2105
2121
  getItem(id: string): WorkbenchStatusBarItem | undefined;
2106
2122
  listItems(): WorkbenchStatusBarItem[];
2107
2123
  listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
2124
+ reorderItem(id: string, position: WorkbenchStatusBarPosition): void;
2108
2125
  }
2109
2126
  interface CreateWorkbenchStatusBarRegistryInput {
2110
2127
  hasView(viewId: string): boolean;
2128
+ persistence?: WorkbenchStatusBarPersistenceAdapter;
2111
2129
  }
2112
2130
  declare const createStatusBarRegistry: (input: CreateWorkbenchStatusBarRegistryInput) => WorkbenchStatusBarRegistry;
2113
2131
  //#endregion
@@ -2220,7 +2238,11 @@ type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
2220
2238
  type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
2221
2239
  type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
2222
2240
  interface WorkbenchCoreContributionContext {
2223
- pinPlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
2241
+ pinPlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity, pinned?: boolean): void;
2242
+ getPanelDestinations(instanceId: string): WorkbenchPanelRegion[];
2243
+ movePanel(instanceId: string, region: WorkbenchPanelRegion, position?: WorkbenchTabPosition): void;
2244
+ resetLayout(): void;
2245
+ onDidResetLayout(listener: () => void): Disposable;
2224
2246
  closePlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
2225
2247
  breadcrumbs: WorkbenchBreadcrumbController;
2226
2248
  commandPalette: WorkbenchCommandPaletteController;
@@ -2309,10 +2331,10 @@ interface createWorkbenchInput {
2309
2331
  preferencePersistence?: PreferencePersistenceAdapter;
2310
2332
  treePersistence?: TreeRendererPersistenceAdapter;
2311
2333
  panelMenuStatePersistence?: WorkbenchPanelMenuStatePersistenceAdapter;
2334
+ statusBarPersistence?: WorkbenchStatusBarPersistenceAdapter;
2312
2335
  defaultPanelOpenByRegionId?: Partial<Record<WorkbenchRegion, boolean>>;
2313
2336
  /** Host-level region layout policy. The active mode's regionSettings win over it. */
2314
2337
  regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
2315
- sidePanelPersistence?: WorkbenchSidePanelPersistenceAdapter;
2316
2338
  /** Default floating policy. The active mode may override it. */
2317
2339
  floatingPanels?: "visible" | "hidden";
2318
2340
  initialSidePanelMode?: WorkbenchSidePanelMode;
@@ -2329,11 +2351,7 @@ interface WorkbenchModuleContribution {
2329
2351
  //#region src/core/workbench-core.d.ts
2330
2352
  declare const createWorkbench: (input?: createWorkbenchInput) => WorkbenchCore;
2331
2353
  //#endregion
2332
- //#region src/core/registries/modes/mode-layout.d.ts
2333
- declare const getWorkbenchModePanelForRegion: (region: WorkbenchRegion) => "main" | "secondary" | "side" | undefined;
2334
- declare const isWorkbenchModePanelAvailable: (mode: WorkbenchModeContribution | undefined, panel: WorkbenchPanelRegion) => boolean;
2335
- //#endregion
2336
- //#region src/core/registries/modes/mode-registry.d.ts
2354
+ //#region src/core/registries/modes/mode-registry-types.d.ts
2337
2355
  type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
2338
2356
  type WorkbenchModeActivationResult = Disposable | readonly Disposable[] | undefined;
2339
2357
  interface WorkbenchModeAddablePanel {
@@ -2383,10 +2401,14 @@ interface WorkbenchModeRegistry {
2383
2401
  onDidChangeActive(listener: WorkbenchModeChangeListener): Disposable;
2384
2402
  }
2385
2403
  //#endregion
2404
+ //#region src/core/registries/modes/mode-layout.d.ts
2405
+ declare const getWorkbenchModePanelForRegion: (region: WorkbenchRegion) => "main" | "secondary" | "side" | undefined;
2406
+ declare const isWorkbenchModePanelAvailable: (mode: WorkbenchModeContribution | undefined, panel: WorkbenchPanelRegion) => boolean;
2407
+ //#endregion
2386
2408
  //#region src/core/controllers/composition/composition-controller.d.ts
2387
2409
  interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
2388
2410
  contribution: RegisteredWidgetContribution;
2389
- open?(resource?: ResourceRef$1): void;
2411
+ open?(resource?: ResourceRef$1): void | Promise<void>;
2390
2412
  }
2391
2413
  interface WorkbenchCompositionRegionPanels {
2392
2414
  open: readonly WorkbenchWidgetPlacement[];
@@ -2449,9 +2471,14 @@ declare const rendererReadKey: (placement: WorkbenchPanelInstance, lane?: string
2449
2471
  //#region src/core/registries/views/settle-read-batch.d.ts
2450
2472
  declare const settleReadBatch: <T>(tasks: ((signal: AbortSignal) => Promise<T> | T)[], signal?: AbortSignal) => Promise<Awaited<T>[]>;
2451
2473
  //#endregion
2474
+ //#region src/core/shared/run-user-action.d.ts
2475
+ declare const runUserAction: (workbench: {
2476
+ notifications: Pick<NotificationRegistry, "show">;
2477
+ }, label: string, run: () => unknown) => Promise<void>;
2478
+ //#endregion
2452
2479
  //#region src/core/shared/store/workbench-batch.d.ts
2453
2480
  /** Commit related stores before their subscribers read the resulting workbench state. */
2454
2481
  declare const batchWorkbenchChanges: <Result>(commit: () => Result) => Result;
2455
2482
  //#endregion
2456
- export { createStatusRegistry as $, WorkbenchHierarchyNode as $i, KanbanRendererFilterState as $n, WorkbenchLayout as $r, WorkbenchTerminalSessionAdapter as $t, WorkbenchCoreContributionContext as A, CommandParamDescriptor as Ai, WorkbenchViewRegistryStoreState as An, TreeNodeInlineInput as Ar, RegisteredWorkbenchNotification as At, ThemeRegistry as B, ResourceListContext as Bi, AttributeDisplayDescriptor as Bn, ControlsApplyInput as Br, WorkbenchModePlacementContribution as Bt, WorkbenchModeAddablePanelContext as C, NavigationTargetCompound as Ci, WorkbenchViewMenuContribution as Cn, DataTableRendererThemeColor as Cr, WorkbenchShellPlacementContribution as Ct, isWorkbenchModePanelAvailable as D, WorkbenchCommandPaletteOpenInput as Di, WorkbenchViewBody as Dn, TreeMoveEndpoint as Dr, WorkbenchOverlayContribution as Dt, getWorkbenchModePanelForRegion as E, WorkbenchCommandPaletteController as Ei, WorkbenchReactViewBody as En, TreeContext as Er, WorkbenchPlaceholderRegistry as Et, WorkbenchPagePersistenceScope as F, WorkbenchCommandExecutionError as Fi, RendererReadRequest as Fn, TreeViewSection as Fr, NavigationTreeContext as Ft, FileIconThemeRegistry as G, createWorkbenchSelectionResourceMetadata as Gi, BoardColumnConfig as Gn, ControlsUpdateValueInput as Gr, KeybindingSequence as Gt, ThemePreferenceMode as H, ResourceRef$1 as Hi, AttributeType as Hn, ControlsRendererContribution as Hr, WorkbenchOwnedPlacementItem as Ht, WorkbenchPagePersistenceScopeInput as I, WorkbenchBreadcrumbController as Ii, createRendererReadRegistry as In, MenuItem as Ir, NavigationTreeContribution as It, WorkbenchStatusRegistry as J, workbenchResourceMetadataContextKey as Ji, EnumOptionsSource as Jn, WorkbenchFocusRegionId as Jr, CommandPaletteResourceProviderResult as Jt, FileIconThemeFont as K, getWorkbenchSelectionResourceKeys as Ki, EnumOption as Kn, WorkbenchPanelRenderInput as Kr, getKeybindingSteps as Kt, WorkbenchPersistenceAdapter as L, WorkbenchBreadcrumbItem as Li, KanbanRendererContribution as Ln, MenuPath as Lr, NavigationTreeOwner as Lt, WorkbenchModuleContext as M, CommandParamSchema as Mi, workbenchViewIdContextKey as Mn, TreeRendererContribution as Mr, WorkbenchNotificationAction as Mt, WorkbenchModuleContribution as N, CommandRegistry as Ni, RendererReadBinding as Nn, TreeRendererPersistenceAdapter as Nr, WorkbenchNotificationEvent as Nt, createWorkbench as O, Command as Oi, WorkbenchViewContribution as On, TreeMovePolicy as Or, WorkbenchOverlayRegistry as Ot, WorkbenchModuleContributionContext as P, WorkbenchCommandExecutionContext as Pi, RendererReadRegistry as Pn, TreeRendererState as Pr, WorkbenchNotificationLevel as Pt, WorkflowStatusAction as Q, ResourceHierarchyProvider as Qi, KanbanRendererCreateSubmission as Qn, WorkbenchCommandTarget as Qr, WorkbenchTerminalController as Qt, WorkbenchSnapshot as R, ResourceBrowseEntry as Ri, KanbanRendererQueryState as Rn, MenuRegistry as Rr, NavigationTreeRegistry as Rt, WorkbenchModeAddablePanel as S, NavigationTargetCommand as Si, WorkbenchPlacementPresentation as Sn, DataTableRendererSelectionAction as Sr, PreferenceValue as St, WorkbenchModeRegistry as T, NavigationTargetPanel$1 as Ti, RegisteredWorkbenchView as Tn, TreeAction as Tr, WorkbenchPlaceholderContribution as Tt, ThemePreferenceOption as U, ResourceRegistry as Ui, AttributesSource as Un, ControlsRendererLayout as Ur, Keybinding as Ut, ThemePreference as V, ResourceProvider as Vi, AttributeKind as Vn, ControlsQueryResult$1 as Vr, WorkbenchModePlacementRegistry as Vt, ThemePreferenceTokens as W, createWorkbenchResourceContextValues as Wi, BoardColumnAction as Wn, ControlsResetInput as Wr, KeybindingRegistry as Wt, WorkbenchStatusSetContribution as X, workbenchSelectionResourceKeyMetadataKey as Xi, KanbanRendererCreateFieldType as Xn, RegisteredPlaceholderContribution as Xr, CommandPaletteResourceRegistry as Xt, WorkbenchStatusRegistryState as Y, workbenchResourceTypeContextKey as Yi, KanbanRendererCreateField as Yn, LayoutPersistenceAdapter as Yr, CommandPaletteResourceQueryContext as Yt, WorkflowStatus as Z, ResourceHierarchyCycle as Zi, KanbanRendererCreateRowConfig as Zn, RegisteredWidgetContribution as Zr, CommandPaletteResourceResult as Zt, resolveAnchorRegion as _, workbenchRegions as _i, WorkbenchPageLocationController as _n, DataTableRendererContribution as _r, PreferencePropertySchema as _t, standardResourceIcons as a, ContextKeyScope as aa, WorkbenchTabMenuGroup as ai, WorkbenchTerminalSessionSink as an, ResourceContextAction as ar, CollectionSettingsPanel as at, WorkbenchModeActivationContext as b, NavigationRegistry as bi, WorkbenchPageNavigationResult as bn, DataTableRendererRow as br, PreferenceScope as bt, headerLeadingMenuPath as c, matchesContextExpression as ca, WorkbenchTabRetention as ci, WorkbenchShellController as cn, FileRendererContent as cr, SettingsCollectionGroupBy as ct, workbenchCommandPaletteMenuPath as d, WorkbenchWidgetTab as di, WorkbenchSidePanelPresentation as dn, FileRendererRefreshOrigin as dr, SettingsPanelPreference as dt, WorkbenchViewHierarchyNode as ea, WorkbenchPanelInstance as ei, WorkbenchTerminalSessionError as en, KanbanRendererOrdering as er, WorkbenchStatusBarItem as et, workbenchRegionTabAddMenuPath as f, WorkbenchPanelMenuRegion as fi, WorkbenchSidePanelMode as fn, FileRendererSaveResult as fr, SettingsRegistry as ft, AnchorId as g, workbenchPanelRegions as gi, WorkbenchPageLocationBrowser as gn, DataTableRendererColumnStat as gr, PreferencePersistenceAdapter as gt, workbenchTopHeaderTrailingMenuPath as h, WorkbenchRegion as hi, WorkbenchPageBrowserEntry as hn, DataTableRendererColumnRenderer as hr, ViewSettingsPanel as ht, StandardResourceIcon as i, ContributionSource as ia, WorkbenchTabAction as ii, WorkbenchTerminalSessionRequest as in, KanbanRendererViewsSource as ir, createStatusBarRegistry as it, WorkbenchHost as j, CommandParamOption as ji, createViewRegistry as jn, TreeQueryContext as jr, WorkbenchNotification as jt, WorkbenchCore as k, CommandHandler as ki, WorkbenchViewRegistry as kn, TreeNode as kr, NotificationRegistry as kt, headerTrailingMenuPath as l, WorkbenchStore as la, WorkbenchTabSnapshot as li, WorkbenchShellOpenRegion as ln, FileRendererContribution as lr, SettingsPanelBase as lt, workbenchTopHeaderLeadingMenuPath as m, WorkbenchPanelRegion as mi, WorkbenchPanelMenuStatePersistenceAdapter as mn, DataTableRendererColumn as mr, SettingsSectionContribution as mt, settleReadBatch as n, resourceHierarchyCycleCode as na, WorkbenchPanelTab as ni, WorkbenchTerminalSessionModel as nn, KanbanRendererSettings as nr, WorkbenchStatusBarRegistryState as nt, DockedWorkbenchRegion$1 as o, ContextKeyService as oa, WorkbenchTabMenuRow as oi, WorkbenchTerminalSessionStatus as on, SortDirection as or, SchemaSettingsPanel as ot, workbenchRegionTabLeadingMenuPath as p, WorkbenchPanelMenuSide as pi, WorkbenchSidePanelPersistenceAdapter as pn, DataTableRendererBadgePalette as pr, SettingsScope as pt, FileIconThemePreferenceOption as q, workbenchResourceIdContextKey as qi, EnumOptions as qn, WorkbenchFocusController as qr, CommandPaletteResourceProvider as qt, rendererReadKey as r, ContributionMetadata as ra, WorkbenchRegionSize as ri, WorkbenchTerminalSessionOpener as rn, KanbanRendererViewsProvider as rr, WorkbenchStatusBarSlot as rt, dockedWorkbenchRegions as s, ContextKeyValue as sa, WorkbenchTabPosition as si, WorkbenchTerminalState as sn, ViewMode as sr, SettingsAction as st, batchWorkbenchChanges as t, isWorkbenchViewHierarchyNode as ta, WorkbenchPanelMountStrategy as ti, WorkbenchTerminalSessionExit as tn, KanbanRendererRow as tr, WorkbenchStatusBarRegistry as tt, resourceContextMenuPath as u, Disposable as ua, WorkbenchWidgetPlacement as ui, WorkbenchShellRegionState as un, FileRendererRefreshEnvelope as ur, SettingsPanelContribution as ut, defaultPageResourceCodec as v, NavigationDispatcherContext as vi, WorkbenchPageLocationDiagnostic as vn, DataTableRendererQueryContext as vr, PreferenceRegistry as vt, WorkbenchModeContribution as w, NavigationTargetItem as wi, WorkbenchViewMenuRegistry as wn, RegisteredDataTableRendererContribution as wr, WorkbenchShellPlacementRegistry as wt, WorkbenchModeActivationResult as x, NavigationTarget$1 as xi, WorkbenchPageContribution as xn, DataTableRendererRowAction as xr, PreferenceScopeRef as xt, createLevelNavigation as y, NavigationParser as yi, WorkbenchPageLocationPersistence as yn, DataTableRendererQueryResult as yr, PreferenceSchemaContribution as yt, createWorkbenchInput as z, ResourceKindContribution as zi, AttributeDescriptor as zn, RegisteredMenuItem as zr, NavigationTreeSlot as zt };
2483
+ export { WorkflowStatusAction as $, workbenchResourceTypeContextKey as $i, AttributeDescriptor as $n, RegisteredWidgetContribution as $r, WorkbenchTerminalSessionExit as $t, WorkbenchCore as A, WorkbenchCommandPaletteOpenInput as Ai, RendererReadBinding as An, NavigationTreeOwner as Ar, WorkbenchOverlayContribution as At, createWorkbenchInput as B, WorkbenchBreadcrumbItem as Bi, FileRendererSaveResult as Bn, TreeRendererContribution as Br, WorkbenchOwnedPlacementItem as Bt, WorkbenchModeActivationContext as C, NavigationRegistry as Ci, WorkbenchReactViewBody as Cn, ControlsQueryResult$1 as Cr, PreferenceScope as Ct, WorkbenchModeContribution as D, NavigationTargetItem as Di, WorkbenchViewRegistryStoreState as Dn, ControlsUpdateValueInput as Dr, WorkbenchShellPlacementRegistry as Dt, WorkbenchModeAddablePanelContext as E, NavigationTargetCompound as Ei, WorkbenchViewRegistry as En, ControlsResetInput as Er, WorkbenchShellPlacementContribution as Et, WorkbenchModuleContributionContext as F, CommandParamSchema as Fi, KanbanRendererQueryState as Fn, TreeMoveEndpoint as Fr, WorkbenchNotificationAction as Ft, ThemePreferenceTokens as G, ResourceRef$1 as Gi, DataTableRendererContribution as Gn, MenuItem as Gr, CommandPaletteResourceProvider as Gt, ThemePreference as H, ResourceKindContribution as Hi, DataTableRendererColumn as Hn, TreeRendererState as Hr, KeybindingRegistry as Ht, WorkbenchPagePersistenceScope as I, CommandRegistry as Ii, FileRendererContent as In, TreeMovePolicy as Ir, WorkbenchNotificationEvent as It, FileIconThemePreferenceOption as J, createWorkbenchSelectionResourceMetadata as Ji, DataTableRendererRow as Jn, RegisteredMenuItem as Jr, CommandPaletteResourceRegistry as Jt, FileIconThemeRegistry as K, ResourceRegistry as Ki, DataTableRendererQueryContext as Kn, MenuPath as Kr, CommandPaletteResourceProviderResult as Kt, WorkbenchPagePersistenceScopeInput as L, WorkbenchCommandExecutionContext as Li, FileRendererContribution as Ln, TreeNode as Lr, WorkbenchNotificationLevel as Lt, WorkbenchHost as M, CommandHandler as Mi, RendererReadRequest as Mn, NavigationTreeSlot as Mr, NotificationRegistry as Mt, WorkbenchModuleContext as N, CommandParamDescriptor as Ni, createRendererReadRegistry as Nn, TreeAction as Nr, RegisteredWorkbenchNotification as Nt, WorkbenchModeRegistry as O, NavigationTargetPanel$1 as Oi, createViewRegistry as On, NavigationTreeContext as Or, WorkbenchPlaceholderContribution as Ot, WorkbenchModuleContribution as P, CommandParamOption as Pi, KanbanRendererContribution as Pn, TreeContext as Pr, WorkbenchNotification as Pt, WorkflowStatus as Q, workbenchResourceOwnerContextKey as Qi, RegisteredDataTableRendererContribution as Qn, RegisteredPlaceholderContribution as Qr, WorkbenchTerminalSessionError as Qt, WorkbenchPersistenceAdapter as R, WorkbenchCommandExecutionError as Ri, FileRendererRefreshEnvelope as Rn, TreeNodeInlineInput as Rr, WorkbenchModePlacementContribution as Rt, isWorkbenchModePanelAvailable as S, NavigationParser as Si, RegisteredWorkbenchView as Sn, ControlsApplyInput as Sr, PreferenceSchemaContribution as St, WorkbenchModeAddablePanel as T, NavigationTargetCommand as Ti, WorkbenchViewContribution as Tn, ControlsRendererLayout as Tr, PreferenceValue as Tt, ThemePreferenceMode as U, ResourceListContext as Ui, DataTableRendererColumnRenderer as Un, TreeViewSection as Ur, KeybindingSequence as Ut, ThemeRegistry as V, ResourceBrowseEntry as Vi, DataTableRendererBadgePalette as Vn, TreeRendererPersistenceAdapter as Vr, Keybinding as Vt, ThemePreferenceOption as W, ResourceProvider as Wi, DataTableRendererColumnStat as Wn, WorkbenchPanelRenderInput as Wr, getKeybindingSteps as Wt, WorkbenchStatusRegistryState as X, workbenchResourceIdContextKey as Xi, DataTableRendererSelectionAction as Xn, WorkbenchFocusRegionId as Xr, WorkbenchTerminalController as Xt, WorkbenchStatusRegistry as Y, getWorkbenchSelectionResourceKeys as Yi, DataTableRendererRowAction as Yn, WorkbenchFocusController as Yr, CommandPaletteResourceResult as Yt, WorkbenchStatusSetContribution as Z, workbenchResourceMetadataContextKey as Zi, DataTableRendererThemeColor as Zn, LayoutPersistenceAdapter as Zr, WorkbenchTerminalSessionAdapter as Zt, AnchorId as _, WorkbenchPanelRegion as _i, WorkbenchPageNavigationResult as _n, KanbanRendererSettings as _r, SettingsSectionContribution as _t, StandardResourceIcon as a, isWorkbenchViewHierarchyNode as aa, WorkbenchRegionSize as ai, WorkbenchTerminalState as an, BoardColumnConfig as ar, WorkbenchStatusBarRegistryState as at, createLevelNavigation as b, workbenchRegions as bi, WorkbenchViewMenuContribution as bn, ResourceContextAction as br, PreferencePropertySchema as bt, dockedWorkbenchRegions as c, ContributionSource as ca, WorkbenchTabMenuGroup as ci, WorkbenchShellRegionState as cn, CollectionViewsSource as cr, CollectionSettingsPanel as ct, resourceContextMenuPath as d, ContextKeyValue as da, WorkbenchTabRetention as di, PersistedWorkbenchPageLocation as dn, EnumOptionsSource as dr, SettingsCollectionGroupBy as dt, workbenchSelectionResourceKeyMetadataKey as ea, WorkbenchCommandTarget as ei, WorkbenchTerminalSessionModel as en, AttributeDisplayDescriptor as er, createStatusRegistry as et, workbenchCommandPaletteMenuPath as f, matchesContextExpression as fa, WorkbenchTabSnapshot as fi, WorkbenchPageBrowserEntry as fn, KanbanRendererCreateField as fr, SettingsPanelBase as ft, workbenchTopHeaderTrailingMenuPath as g, WorkbenchPanelMenuSide as gi, WorkbenchPageLocationPersistence as gn, KanbanRendererRow as gr, SettingsScope as gt, workbenchTopHeaderLeadingMenuPath as h, WorkbenchPanelMenuRegion as hi, WorkbenchPageLocationDiagnostic as hn, KanbanRendererCreateSubmission as hr, SettingsRegistry as ht, rendererReadKey as i, WorkbenchViewHierarchyNode as ia, WorkbenchPanelTab as ii, WorkbenchTerminalSessionStatus as in, BoardColumnAction as ir, WorkbenchStatusBarRegistry as it, WorkbenchCoreContributionContext as j, Command as ji, RendererReadRegistry as jn, NavigationTreeRegistry as jr, WorkbenchOverlayRegistry as jt, createWorkbench as k, WorkbenchCommandPaletteController as ki, workbenchViewIdContextKey as kn, NavigationTreeContribution as kr, WorkbenchPlaceholderRegistry as kt, headerLeadingMenuPath as l, ContextKeyScope as la, WorkbenchTabMenuRow as li, WorkbenchSidePanelPresentation as ln, EnumOption as lr, SchemaSettingsPanel as lt, workbenchRegionTabLeadingMenuPath as m, Disposable as ma, WorkbenchWidgetTab as mi, WorkbenchPageLocationController as mn, KanbanRendererCreateRowConfig as mr, SettingsPanelPreference as mt, runUserAction as n, ResourceHierarchyProvider as na, WorkbenchPanelInstance as ni, WorkbenchTerminalSessionRequest as nn, AttributeType as nr, WorkbenchStatusBarPersistenceAdapter as nt, standardResourceIcons as o, resourceHierarchyCycleCode as oa, WorkbenchSidePanelMode as oi, WorkbenchShellController as on, CollectionSavedView as or, WorkbenchStatusBarSlot as ot, workbenchRegionTabAddMenuPath as p, WorkbenchStore as pa, WorkbenchWidgetPlacement as pi, WorkbenchPageLocationBrowser as pn, KanbanRendererCreateFieldType as pr, SettingsPanelContribution as pt, FileIconThemeFont as q, createWorkbenchResourceContextValues as qi, DataTableRendererQueryResult as qn, MenuRegistry as qr, CommandPaletteResourceQueryContext as qt, settleReadBatch as r, WorkbenchHierarchyNode as ra, WorkbenchPanelMountStrategy as ri, WorkbenchTerminalSessionSink as rn, AttributesSource as rr, WorkbenchStatusBarPosition as rt, DockedWorkbenchRegion$1 as s, ContributionMetadata as sa, WorkbenchTabAction as si, WorkbenchShellOpenRegion as sn, CollectionViewsProvider as sr, createStatusBarRegistry as st, batchWorkbenchChanges as t, ResourceHierarchyCycle as ta, WorkbenchLayout as ti, WorkbenchTerminalSessionOpener as tn, AttributeKind as tr, WorkbenchStatusBarItem as tt, headerTrailingMenuPath as u, ContextKeyService as ua, WorkbenchTabPosition as ui, WorkbenchPanelMenuStatePersistenceAdapter as un, EnumOptions as ur, SettingsAction as ut, resolveAnchorRegion as v, WorkbenchRegion as vi, WorkbenchPageContribution as vn, KanbanRendererViewsProvider as vr, ViewSettingsPanel as vt, WorkbenchModeActivationResult as w, NavigationTarget$1 as wi, WorkbenchViewBody as wn, ControlsRendererContribution as wr, PreferenceScopeRef as wt, getWorkbenchModePanelForRegion as x, NavigationDispatcherContext as xi, WorkbenchViewMenuRegistry as xn, ViewMode as xr, PreferenceRegistry as xt, defaultPageResourceCodec as y, workbenchPanelRegions as yi, WorkbenchPlacementPresentation as yn, KanbanRendererViewsSource as yr, PreferencePersistenceAdapter as yt, WorkbenchSnapshot as z, WorkbenchBreadcrumbController as zi, FileRendererRefreshOrigin as zn, TreeQueryContext as zr, WorkbenchModePlacementRegistry as zt };
2457
2484
  export {};