@pstdio/workbench 0.7.0 → 0.8.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.
- package/README.md +1 -1
- package/dist/extensions.d.ts +325 -40
- package/dist/extensions.js +1813 -1439
- package/dist/extensions.js.map +1 -1
- package/dist/index.d.ts +193 -13
- package/dist/index.js +2429 -2014
- package/dist/index.js.map +1 -1
- package/dist/layout-types-DMoZz38-.js.map +1 -1
- package/dist/react.d.ts +178 -10
- package/dist/react.js +2008 -1917
- package/dist/react.js.map +1 -1
- package/dist/storage.d.ts +6 -2
- package/dist/testing.d.ts +167 -8
- package/dist/webview-runtime.js +1 -1
- package/dist/webview-runtime.js.map +1 -1
- package/dist/{workbench-built-ins-BncLJfQA.js → workbench-built-ins-BCJ6-fIM.js} +464 -466
- package/dist/workbench-built-ins-BCJ6-fIM.js.map +1 -0
- package/dist/workbench-menu-paths-D-e7iscN.js +43 -0
- package/dist/workbench-menu-paths-D-e7iscN.js.map +1 -0
- package/dist/workflow-status-settings-DLiu9FZ0.js +144 -0
- package/dist/workflow-status-settings-DLiu9FZ0.js.map +1 -0
- package/package.json +4 -4
- package/dist/icon-B9XolQG8.js +0 -35
- package/dist/icon-B9XolQG8.js.map +0 -1
- package/dist/workbench-built-ins-BncLJfQA.js.map +0 -1
- package/dist/workbench-menu-paths-Bb0ICxeG.js +0 -20
- package/dist/workbench-menu-paths-Bb0ICxeG.js.map +0 -1
package/dist/storage.d.ts
CHANGED
|
@@ -93,7 +93,7 @@ declare interface PersistedTreeRendererStates {
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
declare interface PersistedWorkbenchHistory extends Omit<HistoryStoreState, "hydrating"> {
|
|
96
|
-
version: 1;
|
|
96
|
+
version: 1 | 2;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
declare interface PersistedWorkbenchPanels {
|
|
@@ -165,6 +165,7 @@ declare interface WorkbenchLayout_2 {
|
|
|
165
165
|
declare interface WorkbenchLocationRef {
|
|
166
166
|
key: string;
|
|
167
167
|
modeId?: string;
|
|
168
|
+
viewId?: string;
|
|
168
169
|
resource?: ResourceRef;
|
|
169
170
|
contributionId?: string;
|
|
170
171
|
instanceKey?: string;
|
|
@@ -176,9 +177,10 @@ declare interface WorkbenchNavigationEntry {
|
|
|
176
177
|
recordedAt: number;
|
|
177
178
|
location: WorkbenchLocationRef;
|
|
178
179
|
selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
|
|
179
|
-
kind: "resource" | "widget" | "mode";
|
|
180
|
+
kind: "resource" | "view" | "widget" | "mode";
|
|
180
181
|
modeId?: string;
|
|
181
182
|
resource?: ResourceRef;
|
|
183
|
+
viewId?: string;
|
|
182
184
|
widgetId?: string;
|
|
183
185
|
contributionId?: string;
|
|
184
186
|
title?: string;
|
|
@@ -265,6 +267,7 @@ declare type WorkbenchTabRetention_2 = "preview" | "persistent";
|
|
|
265
267
|
declare interface WorkbenchWidgetPlacement {
|
|
266
268
|
widgetId: string;
|
|
267
269
|
contributionId: string;
|
|
270
|
+
viewId?: string;
|
|
268
271
|
ownerId?: string;
|
|
269
272
|
source?: ContributionSource;
|
|
270
273
|
resource?: ResourceRef;
|
|
@@ -283,6 +286,7 @@ declare interface WorkbenchWidgetPlacement {
|
|
|
283
286
|
declare interface WorkbenchWidgetPlacement_2 {
|
|
284
287
|
widgetId: string;
|
|
285
288
|
contributionId: string;
|
|
289
|
+
viewId?: string;
|
|
286
290
|
ownerId?: string;
|
|
287
291
|
source?: ContributionSource_2;
|
|
288
292
|
resource?: ResourceRef_2;
|
package/dist/testing.d.ts
CHANGED
|
@@ -151,6 +151,7 @@ declare interface CommandParamDescriptor {
|
|
|
151
151
|
accept?: string;
|
|
152
152
|
multiple?: boolean;
|
|
153
153
|
metadata?: Record<string, unknown>;
|
|
154
|
+
resolvedFrom?: "resource";
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
declare interface CommandParamOption {
|
|
@@ -557,6 +558,7 @@ declare interface HistoryController {
|
|
|
557
558
|
restore(): HistoryEntry | undefined;
|
|
558
559
|
flush(): void;
|
|
559
560
|
clear(): void;
|
|
561
|
+
migrateState(transform: (state: HistoryStoreState) => HistoryStoreState): void;
|
|
560
562
|
}
|
|
561
563
|
|
|
562
564
|
declare type HistoryEntry = WorkbenchNavigationEntry;
|
|
@@ -890,7 +892,12 @@ declare interface NavigationTargetCompound {
|
|
|
890
892
|
targets: readonly NavigationTargetItem[];
|
|
891
893
|
}
|
|
892
894
|
|
|
893
|
-
declare
|
|
895
|
+
declare interface NavigationTargetHref {
|
|
896
|
+
kind: "href";
|
|
897
|
+
href: string;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
|
|
894
901
|
|
|
895
902
|
declare interface NavigationTargetPanel {
|
|
896
903
|
kind: "panel";
|
|
@@ -904,6 +911,12 @@ declare interface NavigationTargetResource {
|
|
|
904
911
|
input?: OpenResourceInput;
|
|
905
912
|
}
|
|
906
913
|
|
|
914
|
+
declare interface NavigationTargetView {
|
|
915
|
+
kind: "view";
|
|
916
|
+
viewId: string;
|
|
917
|
+
input?: OpenWorkbenchViewInput;
|
|
918
|
+
}
|
|
919
|
+
|
|
907
920
|
declare const NO_GROUPING = "none";
|
|
908
921
|
|
|
909
922
|
declare interface NotificationRegistry {
|
|
@@ -920,7 +933,8 @@ declare interface OpenResourceInput {
|
|
|
920
933
|
}
|
|
921
934
|
|
|
922
935
|
declare interface OpenWidgetInput {
|
|
923
|
-
|
|
936
|
+
viewId?: string | null;
|
|
937
|
+
resource?: ResourceRef | null;
|
|
924
938
|
title?: string;
|
|
925
939
|
region?: WorkbenchRegion;
|
|
926
940
|
role?: WorkbenchWidgetRole;
|
|
@@ -938,7 +952,10 @@ declare interface OpenWidgetInput {
|
|
|
938
952
|
}
|
|
939
953
|
|
|
940
954
|
declare interface OpenWorkbenchPanelInput {
|
|
941
|
-
|
|
955
|
+
/** Set by the view registry. Low-level layout callers should leave this undefined. */
|
|
956
|
+
viewId?: string | null;
|
|
957
|
+
/** `null` explicitly clears an existing singleton placement's resource binding. */
|
|
958
|
+
resource?: ResourceRef | null;
|
|
942
959
|
title?: string;
|
|
943
960
|
region?: WorkbenchRegion;
|
|
944
961
|
role?: WorkbenchWidgetRole;
|
|
@@ -950,6 +967,8 @@ declare interface OpenWorkbenchPanelInput {
|
|
|
950
967
|
strategy?: WorkbenchPanelOpenStrategy;
|
|
951
968
|
}
|
|
952
969
|
|
|
970
|
+
declare type OpenWorkbenchViewInput = Omit<OpenWorkbenchPanelInput, "viewId">;
|
|
971
|
+
|
|
953
972
|
declare interface PlaceholderContribution {
|
|
954
973
|
id: string;
|
|
955
974
|
title: string;
|
|
@@ -1070,6 +1089,10 @@ declare interface RegisteredWorkbenchNotification extends RegisteredContribution
|
|
|
1070
1089
|
metadata?: Record<string, unknown>;
|
|
1071
1090
|
}
|
|
1072
1091
|
|
|
1092
|
+
declare type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
|
|
1093
|
+
|
|
1094
|
+
declare type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
|
|
1095
|
+
|
|
1073
1096
|
declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
|
|
1074
1097
|
|
|
1075
1098
|
declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
|
|
@@ -1098,7 +1121,7 @@ declare interface ResourceContextAction {
|
|
|
1098
1121
|
|
|
1099
1122
|
declare interface ResourceHierarchyCycle {
|
|
1100
1123
|
code: typeof resourceHierarchyCycleCode;
|
|
1101
|
-
path:
|
|
1124
|
+
path: WorkbenchHierarchyNode[];
|
|
1102
1125
|
repeatedUri: string;
|
|
1103
1126
|
}
|
|
1104
1127
|
|
|
@@ -1108,7 +1131,7 @@ declare interface ResourceHierarchyProvider {
|
|
|
1108
1131
|
id: string;
|
|
1109
1132
|
priority?: number;
|
|
1110
1133
|
canResolve(resource: ResourceRef): boolean;
|
|
1111
|
-
getParent(resource: ResourceRef):
|
|
1134
|
+
getParent(resource: ResourceRef): WorkbenchHierarchyNode | undefined;
|
|
1112
1135
|
}
|
|
1113
1136
|
|
|
1114
1137
|
declare interface ResourceKindContribution {
|
|
@@ -1176,7 +1199,7 @@ declare interface ResourceRegistry {
|
|
|
1176
1199
|
listResources(query: string): readonly ResourceBrowseEntry[];
|
|
1177
1200
|
registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable_2;
|
|
1178
1201
|
listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
|
|
1179
|
-
walkHierarchy(resource: ResourceRef | undefined):
|
|
1202
|
+
walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
|
|
1180
1203
|
onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
|
|
1181
1204
|
isOpeningResource(): boolean;
|
|
1182
1205
|
openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
|
|
@@ -1598,6 +1621,7 @@ declare interface WorkbenchCompositionRegionPanels {
|
|
|
1598
1621
|
|
|
1599
1622
|
declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
1600
1623
|
host: WorkbenchHost;
|
|
1624
|
+
layout: WorkbenchLayoutModel;
|
|
1601
1625
|
registerModule(module: WorkbenchModuleContribution): Disposable_2;
|
|
1602
1626
|
unregisterModule(moduleId: string): void;
|
|
1603
1627
|
}
|
|
@@ -1613,7 +1637,7 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1613
1637
|
history: HistoryController;
|
|
1614
1638
|
keybindings: KeybindingRegistry;
|
|
1615
1639
|
lastResource: WorkbenchLastResourceController;
|
|
1616
|
-
layout:
|
|
1640
|
+
layout: WorkbenchModuleLayoutModel;
|
|
1617
1641
|
modes: WorkbenchModeRegistry;
|
|
1618
1642
|
navigation: NavigationRegistry;
|
|
1619
1643
|
navigator: WorkbenchNavigator;
|
|
@@ -1622,7 +1646,10 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1622
1646
|
preferences: PreferenceRegistry;
|
|
1623
1647
|
renderers: WorkbenchRenderers;
|
|
1624
1648
|
resources: ResourceRegistry;
|
|
1649
|
+
views: WorkbenchViewRegistry;
|
|
1625
1650
|
settings: SettingsRegistry;
|
|
1651
|
+
statusBar: WorkbenchStatusBarRegistry;
|
|
1652
|
+
statuses: WorkbenchStatusRegistry;
|
|
1626
1653
|
shell: WorkbenchShellController;
|
|
1627
1654
|
sidePanel: WorkbenchSidePanelController;
|
|
1628
1655
|
terminal: WorkbenchTerminalController;
|
|
@@ -1658,6 +1685,8 @@ declare interface WorkbenchFocusState {
|
|
|
1658
1685
|
activeRegion: WorkbenchFocusRegionId | undefined;
|
|
1659
1686
|
}
|
|
1660
1687
|
|
|
1688
|
+
declare type WorkbenchHierarchyNode = ResourceRef | WorkbenchViewHierarchyNode;
|
|
1689
|
+
|
|
1661
1690
|
declare interface WorkbenchHost {
|
|
1662
1691
|
getSnapshot(): WorkbenchSnapshot;
|
|
1663
1692
|
restoreSnapshot(snapshot: WorkbenchSnapshot): void;
|
|
@@ -1696,11 +1725,16 @@ declare interface WorkbenchLocationEligibility {
|
|
|
1696
1725
|
resourceKinds?: string[];
|
|
1697
1726
|
resourceIds?: string[];
|
|
1698
1727
|
canOpen?(resource: ResourceRef): boolean;
|
|
1728
|
+
canOpenLocation?(location: {
|
|
1729
|
+
resource?: ResourceRef;
|
|
1730
|
+
viewId?: string;
|
|
1731
|
+
}): boolean;
|
|
1699
1732
|
}
|
|
1700
1733
|
|
|
1701
1734
|
declare interface WorkbenchLocationRef {
|
|
1702
1735
|
key: string;
|
|
1703
1736
|
modeId?: string;
|
|
1737
|
+
viewId?: string;
|
|
1704
1738
|
resource?: ResourceRef;
|
|
1705
1739
|
contributionId?: string;
|
|
1706
1740
|
instanceKey?: string;
|
|
@@ -1771,6 +1805,8 @@ declare interface WorkbenchModuleContribution {
|
|
|
1771
1805
|
|
|
1772
1806
|
declare type WorkbenchModuleContributionContext = WorkbenchModuleContext;
|
|
1773
1807
|
|
|
1808
|
+
declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerWidget">;
|
|
1809
|
+
|
|
1774
1810
|
declare interface WorkbenchNavigationCommit {
|
|
1775
1811
|
modeId: string | undefined;
|
|
1776
1812
|
resource: ResourceRef | undefined;
|
|
@@ -1784,9 +1820,10 @@ declare interface WorkbenchNavigationEntry {
|
|
|
1784
1820
|
recordedAt: number;
|
|
1785
1821
|
location: WorkbenchLocationRef;
|
|
1786
1822
|
selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
|
|
1787
|
-
kind: "resource" | "widget" | "mode";
|
|
1823
|
+
kind: "resource" | "view" | "widget" | "mode";
|
|
1788
1824
|
modeId?: string;
|
|
1789
1825
|
resource?: ResourceRef;
|
|
1826
|
+
viewId?: string;
|
|
1790
1827
|
widgetId?: string;
|
|
1791
1828
|
contributionId?: string;
|
|
1792
1829
|
title?: string;
|
|
@@ -1905,6 +1942,7 @@ declare interface WorkbenchPanelContribution {
|
|
|
1905
1942
|
declare interface WorkbenchPanelInstance {
|
|
1906
1943
|
instanceId: string;
|
|
1907
1944
|
panelId: string;
|
|
1945
|
+
viewId?: string;
|
|
1908
1946
|
ownerId?: string;
|
|
1909
1947
|
source?: ContributionSource;
|
|
1910
1948
|
resource?: ResourceRef;
|
|
@@ -1922,6 +1960,7 @@ declare interface WorkbenchPanelInstance {
|
|
|
1922
1960
|
declare interface WorkbenchPanelInstance_2 {
|
|
1923
1961
|
instanceId: string;
|
|
1924
1962
|
panelId: string;
|
|
1963
|
+
viewId?: string;
|
|
1925
1964
|
ownerId?: string;
|
|
1926
1965
|
source?: ContributionSource_2;
|
|
1927
1966
|
resource?: ResourceRef_2;
|
|
@@ -2126,6 +2165,52 @@ declare interface WorkbenchSnapshot {
|
|
|
2126
2165
|
layout: WorkbenchLayout;
|
|
2127
2166
|
}
|
|
2128
2167
|
|
|
2168
|
+
declare interface WorkbenchStatusBarItem {
|
|
2169
|
+
id: string;
|
|
2170
|
+
viewId: string;
|
|
2171
|
+
slot: WorkbenchStatusBarSlot;
|
|
2172
|
+
order?: number;
|
|
2173
|
+
isVisible?(): boolean;
|
|
2174
|
+
}
|
|
2175
|
+
|
|
2176
|
+
declare interface WorkbenchStatusBarRegistry {
|
|
2177
|
+
store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
|
|
2178
|
+
registerItem(item: WorkbenchStatusBarItem): Disposable_2;
|
|
2179
|
+
getItem(id: string): WorkbenchStatusBarItem | undefined;
|
|
2180
|
+
listItems(): WorkbenchStatusBarItem[];
|
|
2181
|
+
listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
declare interface WorkbenchStatusBarRegistryState {
|
|
2185
|
+
items: Record<string, WorkbenchStatusBarItem>;
|
|
2186
|
+
}
|
|
2187
|
+
|
|
2188
|
+
declare type WorkbenchStatusBarSlot = "leading" | "trailing";
|
|
2189
|
+
|
|
2190
|
+
declare interface WorkbenchStatusRegistry {
|
|
2191
|
+
store: WorkbenchStore<WorkbenchStatusRegistryState>;
|
|
2192
|
+
registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable_2;
|
|
2193
|
+
getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
|
|
2194
|
+
listStatusSets(): RegisteredWorkbenchStatusSet[];
|
|
2195
|
+
getStatuses(id: string): readonly WorkflowStatus[] | undefined;
|
|
2196
|
+
load(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2197
|
+
query(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2198
|
+
save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
|
|
2199
|
+
}
|
|
2200
|
+
|
|
2201
|
+
declare interface WorkbenchStatusRegistryState {
|
|
2202
|
+
statusSets: Record<string, RegisteredWorkbenchStatusSet>;
|
|
2203
|
+
values: Record<string, readonly WorkflowStatus[]>;
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
declare interface WorkbenchStatusSetContribution {
|
|
2207
|
+
id: string;
|
|
2208
|
+
title: string;
|
|
2209
|
+
actions?: readonly WorkflowStatusAction[];
|
|
2210
|
+
query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2211
|
+
save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2129
2214
|
declare interface WorkbenchStore<TState> {
|
|
2130
2215
|
getState(): TState;
|
|
2131
2216
|
getInitialState(): TState;
|
|
@@ -2170,6 +2255,7 @@ declare interface WorkbenchTerminalController {
|
|
|
2170
2255
|
setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
|
|
2171
2256
|
/** Opens a session; the live adapter stays host-side and only the id is returned. */
|
|
2172
2257
|
open(input: {
|
|
2258
|
+
bindingId?: string;
|
|
2173
2259
|
request: WorkbenchTerminalSessionRequest;
|
|
2174
2260
|
title?: string;
|
|
2175
2261
|
}): Promise<{
|
|
@@ -2188,6 +2274,7 @@ declare interface WorkbenchTerminalController {
|
|
|
2188
2274
|
sessionId: string;
|
|
2189
2275
|
signal?: string;
|
|
2190
2276
|
}): Promise<void>;
|
|
2277
|
+
killBinding(bindingId: string): Promise<void>;
|
|
2191
2278
|
subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
|
|
2192
2279
|
getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
|
|
2193
2280
|
listSessions(): WorkbenchTerminalSessionModel[];
|
|
@@ -2249,9 +2336,58 @@ declare interface WorkbenchThemeStoreState {
|
|
|
2249
2336
|
themes: readonly ThemePreferenceOption[];
|
|
2250
2337
|
}
|
|
2251
2338
|
|
|
2339
|
+
declare interface WorkbenchViewContribution {
|
|
2340
|
+
id: string;
|
|
2341
|
+
panelId: string;
|
|
2342
|
+
title?: string;
|
|
2343
|
+
icon?: string;
|
|
2344
|
+
path?: string;
|
|
2345
|
+
pathAliases?: readonly string[];
|
|
2346
|
+
aliases?: readonly string[];
|
|
2347
|
+
resource?: ResourceRef;
|
|
2348
|
+
canResolve?(): boolean;
|
|
2349
|
+
resolveInput?(input: OpenWorkbenchViewInput): OpenWorkbenchPanelInput;
|
|
2350
|
+
}
|
|
2351
|
+
|
|
2352
|
+
declare interface WorkbenchViewHierarchyNode {
|
|
2353
|
+
type: "view";
|
|
2354
|
+
viewId: string;
|
|
2355
|
+
label?: string;
|
|
2356
|
+
icon?: string;
|
|
2357
|
+
}
|
|
2358
|
+
|
|
2359
|
+
declare interface WorkbenchViewOpenEvent {
|
|
2360
|
+
viewId: string;
|
|
2361
|
+
input: OpenWorkbenchViewInput;
|
|
2362
|
+
instance: WorkbenchPanelInstance;
|
|
2363
|
+
}
|
|
2364
|
+
|
|
2365
|
+
declare interface WorkbenchViewRegistry {
|
|
2366
|
+
store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
|
|
2367
|
+
registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
|
|
2368
|
+
getView(viewId: string): RegisteredWorkbenchView | undefined;
|
|
2369
|
+
listViews(): RegisteredWorkbenchView[];
|
|
2370
|
+
resolveViewId(viewId: string): string | undefined;
|
|
2371
|
+
resolvePath(path: string): {
|
|
2372
|
+
kind: "view";
|
|
2373
|
+
viewId: string;
|
|
2374
|
+
} | undefined;
|
|
2375
|
+
canResolveView(viewId: string): boolean;
|
|
2376
|
+
isOpeningView(): boolean;
|
|
2377
|
+
openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<WorkbenchPanelInstance>;
|
|
2378
|
+
onDidOpenView(listener: (event: WorkbenchViewOpenEvent) => void): Disposable_2;
|
|
2379
|
+
}
|
|
2380
|
+
|
|
2381
|
+
declare interface WorkbenchViewRegistryStoreState {
|
|
2382
|
+
views: Record<string, RegisteredWorkbenchView>;
|
|
2383
|
+
aliases: Record<string, string>;
|
|
2384
|
+
paths: Record<string, string>;
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2252
2387
|
declare interface WorkbenchWidgetPlacement {
|
|
2253
2388
|
widgetId: string;
|
|
2254
2389
|
contributionId: string;
|
|
2390
|
+
viewId?: string;
|
|
2255
2391
|
ownerId?: string;
|
|
2256
2392
|
source?: ContributionSource;
|
|
2257
2393
|
resource?: ResourceRef;
|
|
@@ -2281,4 +2417,27 @@ declare interface WorkbenchWidgetTab_2 {
|
|
|
2281
2417
|
customMenuRendererId?: string;
|
|
2282
2418
|
}
|
|
2283
2419
|
|
|
2420
|
+
declare interface WorkflowStatus {
|
|
2421
|
+
id: string;
|
|
2422
|
+
label: string;
|
|
2423
|
+
color: string;
|
|
2424
|
+
icon?: string | null;
|
|
2425
|
+
sortOrder: number;
|
|
2426
|
+
isDefault?: boolean;
|
|
2427
|
+
board?: WorkflowStatusBoardRules;
|
|
2428
|
+
}
|
|
2429
|
+
|
|
2430
|
+
declare interface WorkflowStatusAction {
|
|
2431
|
+
id: string;
|
|
2432
|
+
label: string;
|
|
2433
|
+
icon?: string;
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
declare interface WorkflowStatusBoardRules {
|
|
2437
|
+
canCreate?: boolean;
|
|
2438
|
+
canDragIn?: boolean;
|
|
2439
|
+
canDragOut?: boolean;
|
|
2440
|
+
actions?: readonly string[];
|
|
2441
|
+
}
|
|
2442
|
+
|
|
2284
2443
|
export { }
|
package/dist/webview-runtime.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const r = '// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\nfunction d(){let P=globalThis;if(P.window!==void 0&&P.document!==void 0)return"browser";if(P.WorkerGlobalScope!==void 0&&P.self!==void 0&&P.self instanceof P.WorkerGlobalScope||P.window===void 0&&P.self!==void 0&&typeof P.importScripts=="function")return"worker";let G=P.process;if(G&&typeof G=="object"){let R=G.versions??{},J=G.release?.name;if(R.bun||J==="bun"||P.Bun!==void 0)return"bun";if(R.node&&J==="node")return"node"}return P.Bun===void 0?"browser":"bun"}function V(){return d()}function b(){return V()==="worker"}function x(){let P=V();return P==="node"||P==="bun"}function u(){return window.self!==window.top}function p(P){let G={};return function R(J,X=""){Object.keys(J).forEach((Q)=>{let K=X?`${X}.${Q}`:Q;J[Q]===Object(J[Q])&&R(J[Q],K),typeof J[Q]=="function"&&(G[K]=J[Q],delete J[Q])})}(P),G}function i(P){return!P||P==="null"?"*":P}function l(P,G,R){if(!P||typeof P!="object")return P;let J=Array.isArray(G)?G:G.split(".").map((Q)=>Q.match(/^\\d+$/)?Number(Q):Q),X=P;for(let Q=0;Q<J.length;Q++){let K=J[Q];Q===J.length-1?X[K]=R:((!X[K]||typeof X[K]!="object")&&(X[K]=typeof J[Q+1]=="number"?[]:{}),X=X[K])}return P}function r(P=10){let G="";for(let R=0;R<P;R++)G+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*62));return G}var E=V(),_=null;if(E==="node"||E==="bun")try{let P=globalThis.require;_=P?.("node:worker_threads")?.parentPort??null}catch{}function s(){if(x())return _;if(b())return self;if(u())return window.parent;throw Error("No valid target found for postMessage")}function D(P,G,R,J){if(!P)throw Error("Rimless Error: No target specified for postMessage");if(x()&&P===_){P.postMessage(G,{transfer:J});return}if(b()){P.postMessage(G,{transfer:J});return}if(P.postMessage){P.postMessage(G,{targetOrigin:i(R),transfer:J});return}throw Error("Rimless Error: Invalid target for postMessage")}function S(P){return _!==null&&P===_}function j(P,G,R){S(P)?P.on(G,R):("addEventListener"in P)&&P.addEventListener(G,R)}function H(P,G,R){S(P)?P.off(G,R):("removeEventListener"in P)&&P.removeEventListener(G,R)}function w(P){return P.data||P}var L=function(P){return P.MESSAGE="message",P}({}),M=function(P){return P.HANDSHAKE_REQUEST="RIMLESS/HANDSHAKE_REQUEST",P.HANDSHAKE_REPLY="RIMLESS/HANDSHAKE_REPLY",P.RPC_REQUEST="RIMLESS/RPC_REQUEST",P.RPC_RESOLVE="RIMLESS/RPC_RESOLVE",P.RPC_REJECT="RIMLESS/RPC_REJECT",P}({}),A=Symbol();function o(P={},G,R,J,X){let Q=[];for(let[K,Z]of Object.entries(P)){async function Y(B){let{action:N,callID:q,connectionID:$,callName:O,args:U=[]}=w(B);if(N!==M.RPC_REQUEST||!q||!O||O!==K||$!==G)return;let F={action:M.RPC_RESOLVE,callID:q,callName:O,connectionID:$,error:null,result:null},T;try{F.result=await Z(...U,X),F.result?.[A]&&(T=F.result[A]??[],delete F.result[A])}catch(C){F.action=M.RPC_REJECT,F.error=JSON.parse(JSON.stringify(C,Object.getOwnPropertyNames(C)))}D(J,F,B?.origin,T)}j(R,L.MESSAGE,Y),Q.push(()=>H(R,L.MESSAGE,Y))}return()=>Q.forEach((K)=>K())}function t(P,G,R,J=[],X,Q){return(...K)=>new Promise((Z,Y)=>{let B=r();function N(O){let{callID:U,connectionID:F,callName:T,result:C,error:v,action:I}=w(O);if(!(!U||!T)&&T===P&&U===B&&F===G){if(I===M.RPC_RESOLVE)return Z(C);if(I===M.RPC_REJECT)return Y(v)}}let q={action:M.RPC_REQUEST,args:K,callID:B,callName:P,connectionID:G},$=K.reduce((O,U)=>U[A]?.length?O.concat(U[A]):O,K[A]??[]);j(X,L.MESSAGE,N),J.push(()=>H(X,L.MESSAGE,N)),D(Q,q,R?.origin,$)})}function a(P={},G=[],R,J,X,Q){let K={...P},Z=[];for(let Y of G)l(K,Y,t(Y,R,J,Z,X,Q));return{remote:K,unregisterRemote:()=>Z.forEach((Y)=>Y())}}function n(P={},G){return new Promise(async(R)=>{let J=p(P),X=s(),Q=self||window;async function K(Z){let Y=w(Z);if(Y?.action!==M.HANDSHAKE_REPLY)return;let{remote:B,unregisterRemote:N}=a(Y.schema,Y.methodNames,Y.connectionID,Z,Q,X),q=o(J,Y.connectionID,Q,X,B);return await G?.onConnectionSetup?.(B),D(X,{action:M.HANDSHAKE_REPLY,connectionID:Y.connectionID},Z?.origin),R({remote:B,close:()=>{H(Q,L.MESSAGE,K),N(),q()},id:Y.connectionID})}j(Q,L.MESSAGE,K),D(X,{action:M.HANDSHAKE_REQUEST,methodNames:Object.keys(J),schema:P})})}var f={connect:n};var e=(P)=>typeof P==="object"&&P!==null,y=(P)=>{try{let G=JSON.stringify(P);if(typeof G==="string"&&G.length>0)return G}catch{}try{return String(P)}catch{return"Unknown error"}},k=(P)=>{if(P instanceof Error)return{message:P.message,stack:P.stack};if(typeof P==="string")return{message:P};if(e(P)){let G=typeof P.message==="string"?P.message:null,R=typeof P.stack==="string"?P.stack:void 0;if(G)return R?{message:G,stack:R}:{message:G};return{message:y(P)}}if(P===null||P===void 0)return{message:"Unknown error"};return{message:y(P)}};var z=(P)=>({id:P}),W=(P,G)=>({id:P,kind:G.kind,label:G.label,description:G.description,metadata:G.metadata}),zP={sidenav:W("project.sidenav",{kind:"panel"}),headerPrimary:W("project.headerPrimary",{kind:"menu"}),headerOverflow:W("project.headerOverflow",{kind:"menu"}),settingsPanels:W("project.settingsPanels",{kind:"settings"})},BP={headerPrimary:W("session.headerPrimary",{kind:"menu"}),headerOverflow:W("session.headerOverflow",{kind:"menu"}),transcriptActions:W("session.transcriptActions",{kind:"menu"})},WP={headerPrimary:W("workspace.headerPrimary",{kind:"menu"}),headerOverflow:W("workspace.headerOverflow",{kind:"menu"}),sidenav:W("workspace.sidenav",{kind:"panel"})},qP={opened:z("project.opened")},FP={started:z("session.started"),resumed:z("session.resumed"),awaitingInput:z("session.awaitingInput"),succeeded:z("session.succeeded"),failed:z("session.failed"),completed:z("session.completed")},MP={created:z("workspace.created"),provision:z("workspace.provision"),ready:z("workspace.ready"),archived:z("workspace.archived"),deleted:z("workspace.deleted")},NP={removed:z("worktree.removed")},OP={committed:z("git.committed"),rebased:z("git.rebased"),merged:z("git.merged"),conflicted:z("git.conflicted")};var PP=["commands.execute","resource.open","notification.show","notification.action","notification.resolve","notification.dismiss","preferences.get","preferences.set","extension.settings.all","extension.settings.get","extension.settings.set","extension.settings.delete","terminal.session","files.upload","files.list","files.delete"],GP=["host.dispatchKeyboardEvent"],UP=[...PP,...GP];var c=(P,G)=>({call:async(R,J)=>await P({method:R,params:J}),onEvent:G}),g=(P)=>{let G=P,R=new Set;return{get:()=>G,subscribe:(J)=>{return R.add(J),()=>R.delete(J)},set:(J)=>{G=J;for(let X of R)X(G)}}};var h="pstdio-extension-mount",RP=()=>{let P=new Map;return{get length(){return P.size},clear:()=>P.clear(),getItem:(G)=>P.get(G)??null,key:(G)=>Array.from(P.keys())[G]??null,removeItem:(G)=>P.delete(G),setItem:(G,R)=>P.set(G,R)}},JP=()=>{for(let P of["localStorage","sessionStorage"])try{window[P]}catch{Object.defineProperty(window,P,{configurable:!0,value:RP()})}},m=(P,G)=>{let R=document.documentElement,J=P==="dark"?"light":"dark";R.classList.remove(J),R.classList.add(P),R.setAttribute("data-theme",P),R.style.colorScheme=P;for(let[X,Q]of Object.entries(G))if(X.startsWith("--"))R.style.setProperty(X,Q)},KP=(P)=>{for(let G of P){let R=document.createElement("link");R.rel="stylesheet",R.href=G,document.head.appendChild(R)}},QP=()=>{let P=document.getElementById(h);if(!P)P=document.createElement("div"),P.id=h,P.style.height="100%",P.style.width="100%",document.body.appendChild(P);return P},XP=(P)=>P instanceof HTMLInputElement||P instanceof HTMLTextAreaElement||P instanceof HTMLSelectElement||P instanceof HTMLElement&&P.isContentEditable,YP=async()=>{JP();let P=g(void 0),G=new Map,R=(K,Z)=>{let Y=G.get(K)??new Set;return Y.add(Z),G.set(K,Y),()=>{Y.delete(Z)}},J,X=!1,Q=await f.connect({init:async(K)=>{try{m(K.theme,K.themeVariables),KP(K.styles),P.set(K.props);let Z=QP(),Y=await import(K.moduleUrl),B=Y.default??(Y.mount?Y:void 0);if(!B?.mount)throw Error("Extension module does not export a default view (defineExtensionView).");let N=c(($)=>Q.remote.call($),R),q=await B.mount(Z,N,P);if(J=typeof q==="function"?q:void 0,!X)X=!0,document.addEventListener("keydown",($)=>{if(!$.ctrlKey&&!$.metaKey&&!$.altKey)return;if(XP($.target)&&!$.shiftKey)return;Q.remote.call({method:"host.dispatchKeyboardEvent",params:{key:$.key,code:$.code,ctrlKey:$.ctrlKey,metaKey:$.metaKey,altKey:$.altKey,shiftKey:$.shiftKey,repeat:$.repeat}}).catch(()=>{})},!0)}catch(Z){let Y=k(Z);throw Q.remote.runtimeError(Y),Z instanceof Error?Z:Error(Y.message)}},themeUpdate:(K)=>{m(K.theme,K.variables)},propsUpdate:(K)=>{P.set(K.props)},hostEvent:(K)=>{for(let Z of G.get(K.scope)??[])Z(K.payload)}});Q.remote.ready({}),window.addEventListener("beforeunload",()=>{J?.()})};YP();\n', t = "pstdio-extension-mount", o = (e) => e.replaceAll("&", "&").replaceAll('"', """).replaceAll("<", "<"), i = (e) => e.replaceAll("<\/script", "<\\/script").replaceAll("<!--", "<\\!--"), n = (e) => `<!doctype html>
|
|
1
|
+
const r = '// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\nfunction a(){let G=globalThis;if(G.window!==void 0&&G.document!==void 0)return"browser";if(G.WorkerGlobalScope!==void 0&&G.self!==void 0&&G.self instanceof G.WorkerGlobalScope||G.window===void 0&&G.self!==void 0&&typeof G.importScripts=="function")return"worker";let J=G.process;if(J&&typeof J=="object"){let P=J.versions??{},Q=J.release?.name;if(P.bun||Q==="bun"||G.Bun!==void 0)return"bun";if(P.node&&Q==="node")return"node"}return G.Bun===void 0?"browser":"bun"}function K(){return a()}function h(){return K()==="worker"}function m(){let G=K();return G==="node"||G==="bun"}function t(){return window.self!==window.top}function n(G){let J={};return function P(Q,$=""){Object.keys(Q).forEach((Z)=>{let Y=$?`${$}.${Z}`:Z;Q[Z]===Object(Q[Z])&&P(Q[Z],Y),typeof Q[Z]=="function"&&(J[Y]=Q[Z],delete Q[Z])})}(G),J}function e(G){return!G||G==="null"?"*":G}function GG(G,J,P){if(!G||typeof G!="object")return G;let Q=Array.isArray(J)?J:J.split(".").map((Z)=>Z.match(/^\\d+$/)?Number(Z):Z),$=G;for(let Z=0;Z<Q.length;Z++){let Y=Q[Z];Z===Q.length-1?$[Y]=P:((!$[Y]||typeof $[Y]!="object")&&($[Y]=typeof Q[Z+1]=="number"?[]:{}),$=$[Y])}return G}function JG(G=10){let J="";for(let P=0;P<G;P++)J+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*62));return J}var g=K(),A=null;if(g==="node"||g==="bun")try{let G=globalThis.require;A=G?.("node:worker_threads")?.parentPort??null}catch{}function PG(){if(m())return A;if(h())return self;if(t())return window.parent;throw Error("No valid target found for postMessage")}function x(G,J,P,Q){if(!G)throw Error("Rimless Error: No target specified for postMessage");if(m()&&G===A){G.postMessage(J,{transfer:Q});return}if(h()){G.postMessage(J,{transfer:Q});return}if(G.postMessage){G.postMessage(J,{targetOrigin:e(P),transfer:Q});return}throw Error("Rimless Error: Invalid target for postMessage")}function v(G){return A!==null&&G===A}function w(G,J,P){v(G)?G.on(J,P):("addEventListener"in G)&&G.addEventListener(J,P)}function E(G,J,P){v(G)?G.off(J,P):("removeEventListener"in G)&&G.removeEventListener(J,P)}function b(G){return G.data||G}var V=function(G){return G.MESSAGE="message",G}({}),B=function(G){return G.HANDSHAKE_REQUEST="RIMLESS/HANDSHAKE_REQUEST",G.HANDSHAKE_REPLY="RIMLESS/HANDSHAKE_REPLY",G.RPC_REQUEST="RIMLESS/RPC_REQUEST",G.RPC_RESOLVE="RIMLESS/RPC_RESOLVE",G.RPC_REJECT="RIMLESS/RPC_REJECT",G}({}),T=Symbol();function QG(G={},J,P,Q,$){let Z=[];for(let[Y,q]of Object.entries(G)){async function z(M){let{action:H,callID:O,connectionID:U,callName:W,args:L=[]}=b(M);if(H!==B.RPC_REQUEST||!O||!W||W!==Y||U!==J)return;let N={action:B.RPC_RESOLVE,callID:O,callName:W,connectionID:U,error:null,result:null},_;try{N.result=await q(...L,$),N.result?.[T]&&(_=N.result[T]??[],delete N.result[T])}catch(R){N.action=B.RPC_REJECT,N.error=JSON.parse(JSON.stringify(R,Object.getOwnPropertyNames(R)))}x(Q,N,M?.origin,_)}w(P,V.MESSAGE,z),Z.push(()=>E(P,V.MESSAGE,z))}return()=>Z.forEach((Y)=>Y())}function YG(G,J,P,Q=[],$,Z){return(...Y)=>new Promise((q,z)=>{let M=JG();function H(W){let{callID:L,connectionID:N,callName:_,result:R,error:o,action:f}=b(W);if(!(!L||!_)&&_===G&&L===M&&N===J){if(f===B.RPC_RESOLVE)return q(R);if(f===B.RPC_REJECT)return z(o)}}let O={action:B.RPC_REQUEST,args:Y,callID:M,callName:G,connectionID:J},U=Y.reduce((W,L)=>L[T]?.length?W.concat(L[T]):W,Y[T]??[]);w($,V.MESSAGE,H),Q.push(()=>E($,V.MESSAGE,H)),x(Z,O,P?.origin,U)})}function ZG(G={},J=[],P,Q,$,Z){let Y={...G},q=[];for(let z of J)GG(Y,z,YG(z,P,Q,q,$,Z));return{remote:Y,unregisterRemote:()=>q.forEach((z)=>z())}}function $G(G={},J){return new Promise(async(P)=>{let Q=n(G),$=PG(),Z=self||window;async function Y(q){let z=b(q);if(z?.action!==B.HANDSHAKE_REPLY)return;let{remote:M,unregisterRemote:H}=ZG(z.schema,z.methodNames,z.connectionID,q,Z,$),O=QG(Q,z.connectionID,Z,$,M);return await J?.onConnectionSetup?.(M),x($,{action:B.HANDSHAKE_REPLY,connectionID:z.connectionID},q?.origin),P({remote:M,close:()=>{E(Z,V.MESSAGE,Y),H(),O()},id:z.connectionID})}w(Z,V.MESSAGE,Y),x($,{action:B.HANDSHAKE_REQUEST,methodNames:Object.keys(Q),schema:G})})}var c={connect:$G};var zG=(G)=>typeof G==="object"&&G!==null,p=(G)=>{try{let J=JSON.stringify(G);if(typeof J==="string"&&J.length>0)return J}catch{}try{return String(G)}catch{return"Unknown error"}},u=(G)=>{if(G instanceof Error)return{message:G.message,stack:G.stack};if(typeof G==="string")return{message:G};if(zG(G)){let J=typeof G.message==="string"?G.message:null,P=typeof G.stack==="string"?G.stack:void 0;if(J)return P?{message:J,stack:P}:{message:J};return{message:p(G)}}if(G===null||G===void 0)return{message:"Unknown error"};return{message:p(G)}};var j=(G,J)=>({extensionId:"pstdio",kind:G,id:J}),LG={switchMode:j("command","workbench.action.switchMode")},TG={project:j("mode","project"),settings:j("mode","settings")},y=(G,J,P)=>({id:G,ref:j("resource-kind",G),surface:"primary",label:J,menuSlots:P}),S=[{id:"headerPrimary",placement:"header-primary",access:"public"},{id:"headerOverflow",placement:"header-overflow",access:"public"}],k={project:y("project","Extension",S),session:y("session","Session",S),workspace:y("workspace","Workspace",S)},D={project:k.project.ref,session:k.session.ref,workspace:k.workspace.ref},VG={projectNavigation:j("navigation-item","project.navigation"),projectSettings:j("settings-panel","project.settings"),statusBarLeading:j("status-bar-item","status-bar.leading"),statusBarTrailing:j("status-bar-item","status-bar.trailing")},d=(G)=>({...G,kind:"command"}),DG=Object.assign(d,{forExtension:(G)=>(J)=>d({extensionId:`${G.publisher}.${G.name}`,id:J})}),XG=(G)=>({...G,kind:"event"}),I=(G,J)=>({id:G,kind:J.kind,label:J.label,description:J.description,metadata:J.metadata}),F=(G)=>XG({extensionId:"pstdio",id:G}),C=(G,J)=>I(`${G.id}.${J}`,{kind:"menu"}),CG={sidenav:I("project.sidenav",{kind:"panel"}),headerPrimary:C(D.project,"headerPrimary"),headerOverflow:C(D.project,"headerOverflow"),settingsPanels:I("project.settingsPanels",{kind:"settings"})},_G={headerPrimary:C(D.session,"headerPrimary"),headerOverflow:C(D.session,"headerOverflow")},AG={headerPrimary:C(D.workspace,"headerPrimary"),headerOverflow:C(D.workspace,"headerOverflow"),sidenav:I("workspace.sidenav",{kind:"panel"})},RG={opened:F("project.opened")},xG={started:F("session.started"),resumed:F("session.resumed"),awaitingInput:F("session.awaitingInput"),succeeded:F("session.succeeded"),failed:F("session.failed"),completed:F("session.completed")},IG={created:F("workspace.created"),provision:F("workspace.provision"),ready:F("workspace.ready"),archived:F("workspace.archived"),deleted:F("workspace.deleted")},KG={removed:F("worktree.removed")},wG={committed:F("git.committed"),rebased:F("git.rebased"),merged:F("git.merged"),conflicted:F("git.conflicted")};var qG=["commands.execute","resource.open","notification.show","notification.action","notification.resolve","notification.dismiss","preferences.get","preferences.set","extension.settings.all","extension.settings.get","extension.settings.set","extension.settings.delete","terminal.session","files.upload","files.list","files.delete"],UG=["host.dispatchKeyboardEvent"],EG=[...qG,...UG];var X=(G)=>(J)=>({...J,ref:{kind:G,id:J.id}}),bG=X("view"),yG=X("view-menu"),SG=X("placement"),kG=X("resource-kind");var fG=X("resource-view"),gG=X("navigation-item"),hG=X("mode"),mG=X("status-bar-item"),vG=X("status"),cG=X("settings-panel"),pG=X("activity-item"),uG=X("settings-section"),dG=X("command-palette-resource"),lG=X("keybinding"),rG=X("schedule"),sG=X("artifact-mount"),iG=X("template-type"),oG=X("template"),aG=X("skill"),tG=X("theme"),nG=X("file-icon-theme"),eG=X("workspace-type"),GJ=X("harness"),JJ=X("connection");var l=(G,J,P)=>({call:async(Q,$)=>await G({method:Q,params:$}),onEvent:J,extensionId:P}),r=(G)=>{let J=G,P=new Set;return{get:()=>J,subscribe:(Q)=>{return P.add(Q),()=>P.delete(Q)},set:(Q)=>{J=Q;for(let $ of P)$(J)}}};var s="pstdio-extension-mount",FG=()=>{let G=new Map;return{get length(){return G.size},clear:()=>G.clear(),getItem:(J)=>G.get(J)??null,key:(J)=>Array.from(G.keys())[J]??null,removeItem:(J)=>G.delete(J),setItem:(J,P)=>G.set(J,P)}},MG=()=>{for(let G of["localStorage","sessionStorage"])try{window[G]}catch{Object.defineProperty(window,G,{configurable:!0,value:FG()})}},i=(G,J)=>{let P=document.documentElement,Q=G==="dark"?"light":"dark";P.classList.remove(Q),P.classList.add(G),P.setAttribute("data-theme",G),P.style.colorScheme=G;for(let[$,Z]of Object.entries(J))if($.startsWith("--"))P.style.setProperty($,Z)},OG=(G)=>{for(let J of G){let P=document.createElement("link");P.rel="stylesheet",P.href=J,document.head.appendChild(P)}},NG=()=>{let G=document.getElementById(s);if(!G)G=document.createElement("div"),G.id=s,G.style.height="100%",G.style.width="100%",document.body.appendChild(G);return G},BG=(G)=>G instanceof HTMLInputElement||G instanceof HTMLTextAreaElement||G instanceof HTMLSelectElement||G instanceof HTMLElement&&G.isContentEditable,HG=async()=>{MG();let G=r(void 0),J=new Map,P=(Y,q)=>{let z=J.get(Y)??new Set;return z.add(q),J.set(Y,z),()=>{z.delete(q)}},Q,$=!1,Z=await c.connect({init:async(Y)=>{try{i(Y.theme,Y.themeVariables),OG(Y.styles),G.set(Y.props);let q=NG(),z=await import(Y.moduleUrl),M=z.default??(z.mount?z:void 0);if(!M?.mount)throw Error("Extension module does not export a default view (defineExtensionView).");let H=l((U)=>Z.remote.call(U),P,Y.extensionId),O=await M.mount(q,H,G);if(Q=typeof O==="function"?O:void 0,!$)$=!0,document.addEventListener("keydown",(U)=>{if(!U.ctrlKey&&!U.metaKey&&!U.altKey)return;if(BG(U.target)&&!U.shiftKey)return;Z.remote.call({method:"host.dispatchKeyboardEvent",params:{key:U.key,code:U.code,ctrlKey:U.ctrlKey,metaKey:U.metaKey,altKey:U.altKey,shiftKey:U.shiftKey,repeat:U.repeat}}).catch(()=>{})},!0)}catch(q){let z=u(q);throw Z.remote.runtimeError(z),q instanceof Error?q:Error(z.message)}},themeUpdate:(Y)=>{i(Y.theme,Y.variables)},propsUpdate:(Y)=>{G.set(Y.props)},hostEvent:(Y)=>{for(let q of J.get(Y.scope)??[])q(Y.payload)}});Z.remote.ready({}),window.addEventListener("beforeunload",()=>{Q?.()})};HG();\n', t = "pstdio-extension-mount", o = (e) => e.replaceAll("&", "&").replaceAll('"', """).replaceAll("<", "<"), i = (e) => e.replaceAll("<\/script", "<\\/script").replaceAll("<!--", "<\\!--"), n = (e) => `<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview-runtime.js","sources":["../../pstdio-extensions/src/bridge/webview-runtime/runtime.bundle.js?raw","../../pstdio-extensions/src/bridge/webview-runtime/runtime-html.ts","../src/webview-runtime/index.ts"],"sourcesContent":["export default \"// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\\nfunction d(){let P=globalThis;if(P.window!==void 0&&P.document!==void 0)return\\\"browser\\\";if(P.WorkerGlobalScope!==void 0&&P.self!==void 0&&P.self instanceof P.WorkerGlobalScope||P.window===void 0&&P.self!==void 0&&typeof P.importScripts==\\\"function\\\")return\\\"worker\\\";let G=P.process;if(G&&typeof G==\\\"object\\\"){let R=G.versions??{},J=G.release?.name;if(R.bun||J===\\\"bun\\\"||P.Bun!==void 0)return\\\"bun\\\";if(R.node&&J===\\\"node\\\")return\\\"node\\\"}return P.Bun===void 0?\\\"browser\\\":\\\"bun\\\"}function V(){return d()}function b(){return V()===\\\"worker\\\"}function x(){let P=V();return P===\\\"node\\\"||P===\\\"bun\\\"}function u(){return window.self!==window.top}function p(P){let G={};return function R(J,X=\\\"\\\"){Object.keys(J).forEach((Q)=>{let K=X?`${X}.${Q}`:Q;J[Q]===Object(J[Q])&&R(J[Q],K),typeof J[Q]==\\\"function\\\"&&(G[K]=J[Q],delete J[Q])})}(P),G}function i(P){return!P||P===\\\"null\\\"?\\\"*\\\":P}function l(P,G,R){if(!P||typeof P!=\\\"object\\\")return P;let J=Array.isArray(G)?G:G.split(\\\".\\\").map((Q)=>Q.match(/^\\\\d+$/)?Number(Q):Q),X=P;for(let Q=0;Q<J.length;Q++){let K=J[Q];Q===J.length-1?X[K]=R:((!X[K]||typeof X[K]!=\\\"object\\\")&&(X[K]=typeof J[Q+1]==\\\"number\\\"?[]:{}),X=X[K])}return P}function r(P=10){let G=\\\"\\\";for(let R=0;R<P;R++)G+=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\\".charAt(Math.floor(Math.random()*62));return G}var E=V(),_=null;if(E===\\\"node\\\"||E===\\\"bun\\\")try{let P=globalThis.require;_=P?.(\\\"node:worker_threads\\\")?.parentPort??null}catch{}function s(){if(x())return _;if(b())return self;if(u())return window.parent;throw Error(\\\"No valid target found for postMessage\\\")}function D(P,G,R,J){if(!P)throw Error(\\\"Rimless Error: No target specified for postMessage\\\");if(x()&&P===_){P.postMessage(G,{transfer:J});return}if(b()){P.postMessage(G,{transfer:J});return}if(P.postMessage){P.postMessage(G,{targetOrigin:i(R),transfer:J});return}throw Error(\\\"Rimless Error: Invalid target for postMessage\\\")}function S(P){return _!==null&&P===_}function j(P,G,R){S(P)?P.on(G,R):(\\\"addEventListener\\\"in P)&&P.addEventListener(G,R)}function H(P,G,R){S(P)?P.off(G,R):(\\\"removeEventListener\\\"in P)&&P.removeEventListener(G,R)}function w(P){return P.data||P}var L=function(P){return P.MESSAGE=\\\"message\\\",P}({}),M=function(P){return P.HANDSHAKE_REQUEST=\\\"RIMLESS/HANDSHAKE_REQUEST\\\",P.HANDSHAKE_REPLY=\\\"RIMLESS/HANDSHAKE_REPLY\\\",P.RPC_REQUEST=\\\"RIMLESS/RPC_REQUEST\\\",P.RPC_RESOLVE=\\\"RIMLESS/RPC_RESOLVE\\\",P.RPC_REJECT=\\\"RIMLESS/RPC_REJECT\\\",P}({}),A=Symbol();function o(P={},G,R,J,X){let Q=[];for(let[K,Z]of Object.entries(P)){async function Y(B){let{action:N,callID:q,connectionID:$,callName:O,args:U=[]}=w(B);if(N!==M.RPC_REQUEST||!q||!O||O!==K||$!==G)return;let F={action:M.RPC_RESOLVE,callID:q,callName:O,connectionID:$,error:null,result:null},T;try{F.result=await Z(...U,X),F.result?.[A]&&(T=F.result[A]??[],delete F.result[A])}catch(C){F.action=M.RPC_REJECT,F.error=JSON.parse(JSON.stringify(C,Object.getOwnPropertyNames(C)))}D(J,F,B?.origin,T)}j(R,L.MESSAGE,Y),Q.push(()=>H(R,L.MESSAGE,Y))}return()=>Q.forEach((K)=>K())}function t(P,G,R,J=[],X,Q){return(...K)=>new Promise((Z,Y)=>{let B=r();function N(O){let{callID:U,connectionID:F,callName:T,result:C,error:v,action:I}=w(O);if(!(!U||!T)&&T===P&&U===B&&F===G){if(I===M.RPC_RESOLVE)return Z(C);if(I===M.RPC_REJECT)return Y(v)}}let q={action:M.RPC_REQUEST,args:K,callID:B,callName:P,connectionID:G},$=K.reduce((O,U)=>U[A]?.length?O.concat(U[A]):O,K[A]??[]);j(X,L.MESSAGE,N),J.push(()=>H(X,L.MESSAGE,N)),D(Q,q,R?.origin,$)})}function a(P={},G=[],R,J,X,Q){let K={...P},Z=[];for(let Y of G)l(K,Y,t(Y,R,J,Z,X,Q));return{remote:K,unregisterRemote:()=>Z.forEach((Y)=>Y())}}function n(P={},G){return new Promise(async(R)=>{let J=p(P),X=s(),Q=self||window;async function K(Z){let Y=w(Z);if(Y?.action!==M.HANDSHAKE_REPLY)return;let{remote:B,unregisterRemote:N}=a(Y.schema,Y.methodNames,Y.connectionID,Z,Q,X),q=o(J,Y.connectionID,Q,X,B);return await G?.onConnectionSetup?.(B),D(X,{action:M.HANDSHAKE_REPLY,connectionID:Y.connectionID},Z?.origin),R({remote:B,close:()=>{H(Q,L.MESSAGE,K),N(),q()},id:Y.connectionID})}j(Q,L.MESSAGE,K),D(X,{action:M.HANDSHAKE_REQUEST,methodNames:Object.keys(J),schema:P})})}var f={connect:n};var e=(P)=>typeof P===\\\"object\\\"&&P!==null,y=(P)=>{try{let G=JSON.stringify(P);if(typeof G===\\\"string\\\"&&G.length>0)return G}catch{}try{return String(P)}catch{return\\\"Unknown error\\\"}},k=(P)=>{if(P instanceof Error)return{message:P.message,stack:P.stack};if(typeof P===\\\"string\\\")return{message:P};if(e(P)){let G=typeof P.message===\\\"string\\\"?P.message:null,R=typeof P.stack===\\\"string\\\"?P.stack:void 0;if(G)return R?{message:G,stack:R}:{message:G};return{message:y(P)}}if(P===null||P===void 0)return{message:\\\"Unknown error\\\"};return{message:y(P)}};var z=(P)=>({id:P}),W=(P,G)=>({id:P,kind:G.kind,label:G.label,description:G.description,metadata:G.metadata}),zP={sidenav:W(\\\"project.sidenav\\\",{kind:\\\"panel\\\"}),headerPrimary:W(\\\"project.headerPrimary\\\",{kind:\\\"menu\\\"}),headerOverflow:W(\\\"project.headerOverflow\\\",{kind:\\\"menu\\\"}),settingsPanels:W(\\\"project.settingsPanels\\\",{kind:\\\"settings\\\"})},BP={headerPrimary:W(\\\"session.headerPrimary\\\",{kind:\\\"menu\\\"}),headerOverflow:W(\\\"session.headerOverflow\\\",{kind:\\\"menu\\\"}),transcriptActions:W(\\\"session.transcriptActions\\\",{kind:\\\"menu\\\"})},WP={headerPrimary:W(\\\"workspace.headerPrimary\\\",{kind:\\\"menu\\\"}),headerOverflow:W(\\\"workspace.headerOverflow\\\",{kind:\\\"menu\\\"}),sidenav:W(\\\"workspace.sidenav\\\",{kind:\\\"panel\\\"})},qP={opened:z(\\\"project.opened\\\")},FP={started:z(\\\"session.started\\\"),resumed:z(\\\"session.resumed\\\"),awaitingInput:z(\\\"session.awaitingInput\\\"),succeeded:z(\\\"session.succeeded\\\"),failed:z(\\\"session.failed\\\"),completed:z(\\\"session.completed\\\")},MP={created:z(\\\"workspace.created\\\"),provision:z(\\\"workspace.provision\\\"),ready:z(\\\"workspace.ready\\\"),archived:z(\\\"workspace.archived\\\"),deleted:z(\\\"workspace.deleted\\\")},NP={removed:z(\\\"worktree.removed\\\")},OP={committed:z(\\\"git.committed\\\"),rebased:z(\\\"git.rebased\\\"),merged:z(\\\"git.merged\\\"),conflicted:z(\\\"git.conflicted\\\")};var PP=[\\\"commands.execute\\\",\\\"resource.open\\\",\\\"notification.show\\\",\\\"notification.action\\\",\\\"notification.resolve\\\",\\\"notification.dismiss\\\",\\\"preferences.get\\\",\\\"preferences.set\\\",\\\"extension.settings.all\\\",\\\"extension.settings.get\\\",\\\"extension.settings.set\\\",\\\"extension.settings.delete\\\",\\\"terminal.session\\\",\\\"files.upload\\\",\\\"files.list\\\",\\\"files.delete\\\"],GP=[\\\"host.dispatchKeyboardEvent\\\"],UP=[...PP,...GP];var c=(P,G)=>({call:async(R,J)=>await P({method:R,params:J}),onEvent:G}),g=(P)=>{let G=P,R=new Set;return{get:()=>G,subscribe:(J)=>{return R.add(J),()=>R.delete(J)},set:(J)=>{G=J;for(let X of R)X(G)}}};var h=\\\"pstdio-extension-mount\\\",RP=()=>{let P=new Map;return{get length(){return P.size},clear:()=>P.clear(),getItem:(G)=>P.get(G)??null,key:(G)=>Array.from(P.keys())[G]??null,removeItem:(G)=>P.delete(G),setItem:(G,R)=>P.set(G,R)}},JP=()=>{for(let P of[\\\"localStorage\\\",\\\"sessionStorage\\\"])try{window[P]}catch{Object.defineProperty(window,P,{configurable:!0,value:RP()})}},m=(P,G)=>{let R=document.documentElement,J=P===\\\"dark\\\"?\\\"light\\\":\\\"dark\\\";R.classList.remove(J),R.classList.add(P),R.setAttribute(\\\"data-theme\\\",P),R.style.colorScheme=P;for(let[X,Q]of Object.entries(G))if(X.startsWith(\\\"--\\\"))R.style.setProperty(X,Q)},KP=(P)=>{for(let G of P){let R=document.createElement(\\\"link\\\");R.rel=\\\"stylesheet\\\",R.href=G,document.head.appendChild(R)}},QP=()=>{let P=document.getElementById(h);if(!P)P=document.createElement(\\\"div\\\"),P.id=h,P.style.height=\\\"100%\\\",P.style.width=\\\"100%\\\",document.body.appendChild(P);return P},XP=(P)=>P instanceof HTMLInputElement||P instanceof HTMLTextAreaElement||P instanceof HTMLSelectElement||P instanceof HTMLElement&&P.isContentEditable,YP=async()=>{JP();let P=g(void 0),G=new Map,R=(K,Z)=>{let Y=G.get(K)??new Set;return Y.add(Z),G.set(K,Y),()=>{Y.delete(Z)}},J,X=!1,Q=await f.connect({init:async(K)=>{try{m(K.theme,K.themeVariables),KP(K.styles),P.set(K.props);let Z=QP(),Y=await import(K.moduleUrl),B=Y.default??(Y.mount?Y:void 0);if(!B?.mount)throw Error(\\\"Extension module does not export a default view (defineExtensionView).\\\");let N=c(($)=>Q.remote.call($),R),q=await B.mount(Z,N,P);if(J=typeof q===\\\"function\\\"?q:void 0,!X)X=!0,document.addEventListener(\\\"keydown\\\",($)=>{if(!$.ctrlKey&&!$.metaKey&&!$.altKey)return;if(XP($.target)&&!$.shiftKey)return;Q.remote.call({method:\\\"host.dispatchKeyboardEvent\\\",params:{key:$.key,code:$.code,ctrlKey:$.ctrlKey,metaKey:$.metaKey,altKey:$.altKey,shiftKey:$.shiftKey,repeat:$.repeat}}).catch(()=>{})},!0)}catch(Z){let Y=k(Z);throw Q.remote.runtimeError(Y),Z instanceof Error?Z:Error(Y.message)}},themeUpdate:(K)=>{m(K.theme,K.variables)},propsUpdate:(K)=>{P.set(K.props)},hostEvent:(K)=>{for(let Z of G.get(K.scope)??[])Z(K.payload)}});Q.remote.ready({}),window.addEventListener(\\\"beforeunload\\\",()=>{J?.()})};YP();\\n\"","const MOUNT_ID = \"pstdio-extension-mount\";\n\nconst escapeAttribute = (value: string) =>\n value.replaceAll(\"&\", \"&\").replaceAll('\"', \""\").replaceAll(\"<\", \"<\");\n\nconst escapeScriptContent = (value: string) => value.replaceAll(\"</script\", \"<\\\\/script\").replaceAll(\"<!--\", \"<\\\\!--\");\n\nconst renderRuntimeHostDocument = (scriptTag: string) => `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n background: transparent;\n }\n body {\n overflow-x: hidden !important;\n overflow-y: auto !important;\n }\n #${MOUNT_ID} {\n height: 100%;\n width: 100%;\n display: block;\n min-height: 0;\n }\n </style>\n </head>\n <body>\n <div id=\"${MOUNT_ID}\"></div>\n ${scriptTag}\n </body>\n</html>\n`;\n\nexport const getExtensionRuntimeScriptUrl = () => new URL(\"./runtime.bundle.js\", import.meta.url).href;\n\nexport const renderExtensionRuntimeHtml = (scriptUrl: string) =>\n renderRuntimeHostDocument(`<script src=\"${escapeAttribute(scriptUrl)}\"></script>`);\n\nexport const renderInlineExtensionRuntimeHtml = (runtimeScript: string) =>\n renderRuntimeHostDocument(`<script>${escapeScriptContent(runtimeScript)}</script>`);\n","import runtimeScript from \"pstdio-extensions/bridge/webview-runtime.bundle.js?raw\";\n\nexport {\n renderExtensionRuntimeHtml,\n renderInlineExtensionRuntimeHtml,\n} from \"pstdio-extensions/bridge/webview-runtime-html\";\n\n// The guest runtime bundle is inlined here so a host app can serve it without\n// depending on the private pstdio-extensions package.\nexport const getExtensionRuntimeScript = () => runtimeScript;\n"],"names":["runtimeScript","MOUNT_ID","escapeAttribute","value","replaceAll","escapeScriptContent","renderRuntimeHostDocument","scriptTag","renderExtensionRuntimeHtml","scriptUrl","renderInlineExtensionRuntimeHtml","getExtensionRuntimeScript"],"mappings":"AAAA,MAAAA,IAAe,q/QCATC,IAAW,0BAEXC,IAAkBA,CAACC,MACvBA,EAAMC,WAAW,KAAK,OAAO,EAAEA,WAAW,KAAK,QAAQ,EAAEA,WAAW,KAAK,MAAM,GAE3EC,IAAsBA,CAACF,MAAkBA,EAAMC,WAAW,aAAY,YAAY,EAAEA,WAAW,QAAQ,QAAQ,GAE/GE,IAA4BA,CAACC,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAehDN,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eASFA,CAAQ;AAAA,MACjBM,CAAS;AAAA;AAAA;AAAA,GAOFC,IAA6BA,CAACC,MACzCH,EAA0B,gBAAgBJ,EAAgBO,CAAS,CAAC,cAAa,GAEtEC,IAAmCA,CAACV,MAC/CM,EAA0B,WAAWD,EAAoBL,CAAa,CAAC,YAAW,GClCvEW,IAA4BA,MAAMX;"}
|
|
1
|
+
{"version":3,"file":"webview-runtime.js","sources":["../../pstdio-extensions/src/bridge/webview-runtime/runtime.bundle.js?raw","../../pstdio-extensions/src/bridge/webview-runtime/runtime-html.ts","../src/webview-runtime/index.ts"],"sourcesContent":["export default \"// Generated by packages/pstdio-extensions/scripts/build-runtime.ts\\nfunction a(){let G=globalThis;if(G.window!==void 0&&G.document!==void 0)return\\\"browser\\\";if(G.WorkerGlobalScope!==void 0&&G.self!==void 0&&G.self instanceof G.WorkerGlobalScope||G.window===void 0&&G.self!==void 0&&typeof G.importScripts==\\\"function\\\")return\\\"worker\\\";let J=G.process;if(J&&typeof J==\\\"object\\\"){let P=J.versions??{},Q=J.release?.name;if(P.bun||Q===\\\"bun\\\"||G.Bun!==void 0)return\\\"bun\\\";if(P.node&&Q===\\\"node\\\")return\\\"node\\\"}return G.Bun===void 0?\\\"browser\\\":\\\"bun\\\"}function K(){return a()}function h(){return K()===\\\"worker\\\"}function m(){let G=K();return G===\\\"node\\\"||G===\\\"bun\\\"}function t(){return window.self!==window.top}function n(G){let J={};return function P(Q,$=\\\"\\\"){Object.keys(Q).forEach((Z)=>{let Y=$?`${$}.${Z}`:Z;Q[Z]===Object(Q[Z])&&P(Q[Z],Y),typeof Q[Z]==\\\"function\\\"&&(J[Y]=Q[Z],delete Q[Z])})}(G),J}function e(G){return!G||G===\\\"null\\\"?\\\"*\\\":G}function GG(G,J,P){if(!G||typeof G!=\\\"object\\\")return G;let Q=Array.isArray(J)?J:J.split(\\\".\\\").map((Z)=>Z.match(/^\\\\d+$/)?Number(Z):Z),$=G;for(let Z=0;Z<Q.length;Z++){let Y=Q[Z];Z===Q.length-1?$[Y]=P:((!$[Y]||typeof $[Y]!=\\\"object\\\")&&($[Y]=typeof Q[Z+1]==\\\"number\\\"?[]:{}),$=$[Y])}return G}function JG(G=10){let J=\\\"\\\";for(let P=0;P<G;P++)J+=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\\".charAt(Math.floor(Math.random()*62));return J}var g=K(),A=null;if(g===\\\"node\\\"||g===\\\"bun\\\")try{let G=globalThis.require;A=G?.(\\\"node:worker_threads\\\")?.parentPort??null}catch{}function PG(){if(m())return A;if(h())return self;if(t())return window.parent;throw Error(\\\"No valid target found for postMessage\\\")}function x(G,J,P,Q){if(!G)throw Error(\\\"Rimless Error: No target specified for postMessage\\\");if(m()&&G===A){G.postMessage(J,{transfer:Q});return}if(h()){G.postMessage(J,{transfer:Q});return}if(G.postMessage){G.postMessage(J,{targetOrigin:e(P),transfer:Q});return}throw Error(\\\"Rimless Error: Invalid target for postMessage\\\")}function v(G){return A!==null&&G===A}function w(G,J,P){v(G)?G.on(J,P):(\\\"addEventListener\\\"in G)&&G.addEventListener(J,P)}function E(G,J,P){v(G)?G.off(J,P):(\\\"removeEventListener\\\"in G)&&G.removeEventListener(J,P)}function b(G){return G.data||G}var V=function(G){return G.MESSAGE=\\\"message\\\",G}({}),B=function(G){return G.HANDSHAKE_REQUEST=\\\"RIMLESS/HANDSHAKE_REQUEST\\\",G.HANDSHAKE_REPLY=\\\"RIMLESS/HANDSHAKE_REPLY\\\",G.RPC_REQUEST=\\\"RIMLESS/RPC_REQUEST\\\",G.RPC_RESOLVE=\\\"RIMLESS/RPC_RESOLVE\\\",G.RPC_REJECT=\\\"RIMLESS/RPC_REJECT\\\",G}({}),T=Symbol();function QG(G={},J,P,Q,$){let Z=[];for(let[Y,q]of Object.entries(G)){async function z(M){let{action:H,callID:O,connectionID:U,callName:W,args:L=[]}=b(M);if(H!==B.RPC_REQUEST||!O||!W||W!==Y||U!==J)return;let N={action:B.RPC_RESOLVE,callID:O,callName:W,connectionID:U,error:null,result:null},_;try{N.result=await q(...L,$),N.result?.[T]&&(_=N.result[T]??[],delete N.result[T])}catch(R){N.action=B.RPC_REJECT,N.error=JSON.parse(JSON.stringify(R,Object.getOwnPropertyNames(R)))}x(Q,N,M?.origin,_)}w(P,V.MESSAGE,z),Z.push(()=>E(P,V.MESSAGE,z))}return()=>Z.forEach((Y)=>Y())}function YG(G,J,P,Q=[],$,Z){return(...Y)=>new Promise((q,z)=>{let M=JG();function H(W){let{callID:L,connectionID:N,callName:_,result:R,error:o,action:f}=b(W);if(!(!L||!_)&&_===G&&L===M&&N===J){if(f===B.RPC_RESOLVE)return q(R);if(f===B.RPC_REJECT)return z(o)}}let O={action:B.RPC_REQUEST,args:Y,callID:M,callName:G,connectionID:J},U=Y.reduce((W,L)=>L[T]?.length?W.concat(L[T]):W,Y[T]??[]);w($,V.MESSAGE,H),Q.push(()=>E($,V.MESSAGE,H)),x(Z,O,P?.origin,U)})}function ZG(G={},J=[],P,Q,$,Z){let Y={...G},q=[];for(let z of J)GG(Y,z,YG(z,P,Q,q,$,Z));return{remote:Y,unregisterRemote:()=>q.forEach((z)=>z())}}function $G(G={},J){return new Promise(async(P)=>{let Q=n(G),$=PG(),Z=self||window;async function Y(q){let z=b(q);if(z?.action!==B.HANDSHAKE_REPLY)return;let{remote:M,unregisterRemote:H}=ZG(z.schema,z.methodNames,z.connectionID,q,Z,$),O=QG(Q,z.connectionID,Z,$,M);return await J?.onConnectionSetup?.(M),x($,{action:B.HANDSHAKE_REPLY,connectionID:z.connectionID},q?.origin),P({remote:M,close:()=>{E(Z,V.MESSAGE,Y),H(),O()},id:z.connectionID})}w(Z,V.MESSAGE,Y),x($,{action:B.HANDSHAKE_REQUEST,methodNames:Object.keys(Q),schema:G})})}var c={connect:$G};var zG=(G)=>typeof G===\\\"object\\\"&&G!==null,p=(G)=>{try{let J=JSON.stringify(G);if(typeof J===\\\"string\\\"&&J.length>0)return J}catch{}try{return String(G)}catch{return\\\"Unknown error\\\"}},u=(G)=>{if(G instanceof Error)return{message:G.message,stack:G.stack};if(typeof G===\\\"string\\\")return{message:G};if(zG(G)){let J=typeof G.message===\\\"string\\\"?G.message:null,P=typeof G.stack===\\\"string\\\"?G.stack:void 0;if(J)return P?{message:J,stack:P}:{message:J};return{message:p(G)}}if(G===null||G===void 0)return{message:\\\"Unknown error\\\"};return{message:p(G)}};var j=(G,J)=>({extensionId:\\\"pstdio\\\",kind:G,id:J}),LG={switchMode:j(\\\"command\\\",\\\"workbench.action.switchMode\\\")},TG={project:j(\\\"mode\\\",\\\"project\\\"),settings:j(\\\"mode\\\",\\\"settings\\\")},y=(G,J,P)=>({id:G,ref:j(\\\"resource-kind\\\",G),surface:\\\"primary\\\",label:J,menuSlots:P}),S=[{id:\\\"headerPrimary\\\",placement:\\\"header-primary\\\",access:\\\"public\\\"},{id:\\\"headerOverflow\\\",placement:\\\"header-overflow\\\",access:\\\"public\\\"}],k={project:y(\\\"project\\\",\\\"Extension\\\",S),session:y(\\\"session\\\",\\\"Session\\\",S),workspace:y(\\\"workspace\\\",\\\"Workspace\\\",S)},D={project:k.project.ref,session:k.session.ref,workspace:k.workspace.ref},VG={projectNavigation:j(\\\"navigation-item\\\",\\\"project.navigation\\\"),projectSettings:j(\\\"settings-panel\\\",\\\"project.settings\\\"),statusBarLeading:j(\\\"status-bar-item\\\",\\\"status-bar.leading\\\"),statusBarTrailing:j(\\\"status-bar-item\\\",\\\"status-bar.trailing\\\")},d=(G)=>({...G,kind:\\\"command\\\"}),DG=Object.assign(d,{forExtension:(G)=>(J)=>d({extensionId:`${G.publisher}.${G.name}`,id:J})}),XG=(G)=>({...G,kind:\\\"event\\\"}),I=(G,J)=>({id:G,kind:J.kind,label:J.label,description:J.description,metadata:J.metadata}),F=(G)=>XG({extensionId:\\\"pstdio\\\",id:G}),C=(G,J)=>I(`${G.id}.${J}`,{kind:\\\"menu\\\"}),CG={sidenav:I(\\\"project.sidenav\\\",{kind:\\\"panel\\\"}),headerPrimary:C(D.project,\\\"headerPrimary\\\"),headerOverflow:C(D.project,\\\"headerOverflow\\\"),settingsPanels:I(\\\"project.settingsPanels\\\",{kind:\\\"settings\\\"})},_G={headerPrimary:C(D.session,\\\"headerPrimary\\\"),headerOverflow:C(D.session,\\\"headerOverflow\\\")},AG={headerPrimary:C(D.workspace,\\\"headerPrimary\\\"),headerOverflow:C(D.workspace,\\\"headerOverflow\\\"),sidenav:I(\\\"workspace.sidenav\\\",{kind:\\\"panel\\\"})},RG={opened:F(\\\"project.opened\\\")},xG={started:F(\\\"session.started\\\"),resumed:F(\\\"session.resumed\\\"),awaitingInput:F(\\\"session.awaitingInput\\\"),succeeded:F(\\\"session.succeeded\\\"),failed:F(\\\"session.failed\\\"),completed:F(\\\"session.completed\\\")},IG={created:F(\\\"workspace.created\\\"),provision:F(\\\"workspace.provision\\\"),ready:F(\\\"workspace.ready\\\"),archived:F(\\\"workspace.archived\\\"),deleted:F(\\\"workspace.deleted\\\")},KG={removed:F(\\\"worktree.removed\\\")},wG={committed:F(\\\"git.committed\\\"),rebased:F(\\\"git.rebased\\\"),merged:F(\\\"git.merged\\\"),conflicted:F(\\\"git.conflicted\\\")};var qG=[\\\"commands.execute\\\",\\\"resource.open\\\",\\\"notification.show\\\",\\\"notification.action\\\",\\\"notification.resolve\\\",\\\"notification.dismiss\\\",\\\"preferences.get\\\",\\\"preferences.set\\\",\\\"extension.settings.all\\\",\\\"extension.settings.get\\\",\\\"extension.settings.set\\\",\\\"extension.settings.delete\\\",\\\"terminal.session\\\",\\\"files.upload\\\",\\\"files.list\\\",\\\"files.delete\\\"],UG=[\\\"host.dispatchKeyboardEvent\\\"],EG=[...qG,...UG];var X=(G)=>(J)=>({...J,ref:{kind:G,id:J.id}}),bG=X(\\\"view\\\"),yG=X(\\\"view-menu\\\"),SG=X(\\\"placement\\\"),kG=X(\\\"resource-kind\\\");var fG=X(\\\"resource-view\\\"),gG=X(\\\"navigation-item\\\"),hG=X(\\\"mode\\\"),mG=X(\\\"status-bar-item\\\"),vG=X(\\\"status\\\"),cG=X(\\\"settings-panel\\\"),pG=X(\\\"activity-item\\\"),uG=X(\\\"settings-section\\\"),dG=X(\\\"command-palette-resource\\\"),lG=X(\\\"keybinding\\\"),rG=X(\\\"schedule\\\"),sG=X(\\\"artifact-mount\\\"),iG=X(\\\"template-type\\\"),oG=X(\\\"template\\\"),aG=X(\\\"skill\\\"),tG=X(\\\"theme\\\"),nG=X(\\\"file-icon-theme\\\"),eG=X(\\\"workspace-type\\\"),GJ=X(\\\"harness\\\"),JJ=X(\\\"connection\\\");var l=(G,J,P)=>({call:async(Q,$)=>await G({method:Q,params:$}),onEvent:J,extensionId:P}),r=(G)=>{let J=G,P=new Set;return{get:()=>J,subscribe:(Q)=>{return P.add(Q),()=>P.delete(Q)},set:(Q)=>{J=Q;for(let $ of P)$(J)}}};var s=\\\"pstdio-extension-mount\\\",FG=()=>{let G=new Map;return{get length(){return G.size},clear:()=>G.clear(),getItem:(J)=>G.get(J)??null,key:(J)=>Array.from(G.keys())[J]??null,removeItem:(J)=>G.delete(J),setItem:(J,P)=>G.set(J,P)}},MG=()=>{for(let G of[\\\"localStorage\\\",\\\"sessionStorage\\\"])try{window[G]}catch{Object.defineProperty(window,G,{configurable:!0,value:FG()})}},i=(G,J)=>{let P=document.documentElement,Q=G===\\\"dark\\\"?\\\"light\\\":\\\"dark\\\";P.classList.remove(Q),P.classList.add(G),P.setAttribute(\\\"data-theme\\\",G),P.style.colorScheme=G;for(let[$,Z]of Object.entries(J))if($.startsWith(\\\"--\\\"))P.style.setProperty($,Z)},OG=(G)=>{for(let J of G){let P=document.createElement(\\\"link\\\");P.rel=\\\"stylesheet\\\",P.href=J,document.head.appendChild(P)}},NG=()=>{let G=document.getElementById(s);if(!G)G=document.createElement(\\\"div\\\"),G.id=s,G.style.height=\\\"100%\\\",G.style.width=\\\"100%\\\",document.body.appendChild(G);return G},BG=(G)=>G instanceof HTMLInputElement||G instanceof HTMLTextAreaElement||G instanceof HTMLSelectElement||G instanceof HTMLElement&&G.isContentEditable,HG=async()=>{MG();let G=r(void 0),J=new Map,P=(Y,q)=>{let z=J.get(Y)??new Set;return z.add(q),J.set(Y,z),()=>{z.delete(q)}},Q,$=!1,Z=await c.connect({init:async(Y)=>{try{i(Y.theme,Y.themeVariables),OG(Y.styles),G.set(Y.props);let q=NG(),z=await import(Y.moduleUrl),M=z.default??(z.mount?z:void 0);if(!M?.mount)throw Error(\\\"Extension module does not export a default view (defineExtensionView).\\\");let H=l((U)=>Z.remote.call(U),P,Y.extensionId),O=await M.mount(q,H,G);if(Q=typeof O===\\\"function\\\"?O:void 0,!$)$=!0,document.addEventListener(\\\"keydown\\\",(U)=>{if(!U.ctrlKey&&!U.metaKey&&!U.altKey)return;if(BG(U.target)&&!U.shiftKey)return;Z.remote.call({method:\\\"host.dispatchKeyboardEvent\\\",params:{key:U.key,code:U.code,ctrlKey:U.ctrlKey,metaKey:U.metaKey,altKey:U.altKey,shiftKey:U.shiftKey,repeat:U.repeat}}).catch(()=>{})},!0)}catch(q){let z=u(q);throw Z.remote.runtimeError(z),q instanceof Error?q:Error(z.message)}},themeUpdate:(Y)=>{i(Y.theme,Y.variables)},propsUpdate:(Y)=>{G.set(Y.props)},hostEvent:(Y)=>{for(let q of J.get(Y.scope)??[])q(Y.payload)}});Z.remote.ready({}),window.addEventListener(\\\"beforeunload\\\",()=>{Q?.()})};HG();\\n\"","const MOUNT_ID = \"pstdio-extension-mount\";\n\nconst escapeAttribute = (value: string) =>\n value.replaceAll(\"&\", \"&\").replaceAll('\"', \""\").replaceAll(\"<\", \"<\");\n\nconst escapeScriptContent = (value: string) => value.replaceAll(\"</script\", \"<\\\\/script\").replaceAll(\"<!--\", \"<\\\\!--\");\n\nconst renderRuntimeHostDocument = (scriptTag: string) => `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n background: transparent;\n }\n body {\n overflow-x: hidden !important;\n overflow-y: auto !important;\n }\n #${MOUNT_ID} {\n height: 100%;\n width: 100%;\n display: block;\n min-height: 0;\n }\n </style>\n </head>\n <body>\n <div id=\"${MOUNT_ID}\"></div>\n ${scriptTag}\n </body>\n</html>\n`;\n\nexport const getExtensionRuntimeScriptUrl = () => new URL(\"./runtime.bundle.js\", import.meta.url).href;\n\nexport const renderExtensionRuntimeHtml = (scriptUrl: string) =>\n renderRuntimeHostDocument(`<script src=\"${escapeAttribute(scriptUrl)}\"></script>`);\n\nexport const renderInlineExtensionRuntimeHtml = (runtimeScript: string) =>\n renderRuntimeHostDocument(`<script>${escapeScriptContent(runtimeScript)}</script>`);\n","import runtimeScript from \"pstdio-extensions/bridge/webview-runtime.bundle.js?raw\";\n\nexport {\n renderExtensionRuntimeHtml,\n renderInlineExtensionRuntimeHtml,\n} from \"pstdio-extensions/bridge/webview-runtime-html\";\n\n// The guest runtime bundle is inlined here so a host app can serve it without\n// depending on the private pstdio-extensions package.\nexport const getExtensionRuntimeScript = () => runtimeScript;\n"],"names":["runtimeScript","MOUNT_ID","escapeAttribute","value","replaceAll","escapeScriptContent","renderRuntimeHostDocument","scriptTag","renderExtensionRuntimeHtml","scriptUrl","renderInlineExtensionRuntimeHtml","getExtensionRuntimeScript"],"mappings":"AAAA,MAAAA,IAAe,m7TCATC,IAAW,0BAEXC,IAAkBA,CAACC,MACvBA,EAAMC,WAAW,KAAK,OAAO,EAAEA,WAAW,KAAK,QAAQ,EAAEA,WAAW,KAAK,MAAM,GAE3EC,IAAsBA,CAACF,MAAkBA,EAAMC,WAAW,aAAY,YAAY,EAAEA,WAAW,QAAQ,QAAQ,GAE/GE,IAA4BA,CAACC,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAehDN,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eASFA,CAAQ;AAAA,MACjBM,CAAS;AAAA;AAAA;AAAA,GAOFC,IAA6BA,CAACC,MACzCH,EAA0B,gBAAgBJ,EAAgBO,CAAS,CAAC,cAAa,GAEtEC,IAAmCA,CAACV,MAC/CM,EAA0B,WAAWD,EAAoBL,CAAa,CAAC,YAAW,GClCvEW,IAA4BA,MAAMX;"}
|