@jmfederico/pi-web 1.202608.0 → 1.202608.2
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 +4 -4
- package/dist/cli.js +287 -113
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/CodeViewer-BMWwxG7q.js +4 -0
- package/dist/client/assets/{TerminalPanel-fYrKc3jh.js → TerminalPanel-CacQDIYn.js} +6 -6
- package/dist/client/assets/index-DUW2xnoV.js +4279 -0
- package/dist/client/assets/vendor-editor-core-CXO8gGab.js +12 -0
- package/dist/client/assets/vendor-editor-languages-CpW4sJsX.js +46 -0
- package/dist/client/index.html +3 -3
- package/dist/config.js +110 -73
- package/dist/config.js.map +1 -1
- package/dist/docker/piWebDockerCommandPlan.js +4 -3
- package/dist/docker/piWebDockerCommandPlan.js.map +1 -1
- package/dist/environment.js +4 -0
- package/dist/environment.js.map +1 -0
- package/dist/nativeServices/installedServiceDefinitions.js +602 -0
- package/dist/nativeServices/installedServiceDefinitions.js.map +1 -0
- package/dist/nativeServices/serviceAction.js +174 -0
- package/dist/nativeServices/serviceAction.js.map +1 -0
- package/dist/nativeServices/serviceDoctor.js +374 -71
- package/dist/nativeServices/serviceDoctor.js.map +1 -1
- package/dist/nativeServices/servicePlan.js +1 -1
- package/dist/nativeServices/servicePlan.js.map +1 -1
- package/dist/{pi-web-plugins → pi-packages}/relays/markdownDocument.js +1 -1
- package/dist/pi-packages/relays/package.json +11 -0
- package/dist/{pi-web-plugins → pi-packages}/relays/pi-web-plugin.js +4 -4
- package/dist/pi-packages/relays/prompts/relay-worktree.md +157 -0
- package/dist/pi-packages/relays/prompts/relay.md +152 -0
- package/dist/{pi-web-plugins → pi-packages}/relays/relayDiscovery.js +1 -1
- package/dist/{pi-web-plugins → pi-packages}/relays/relaysPanelElement.js +1 -1
- package/dist/pi-packages/relays/skills/relay/SKILL.md +123 -0
- package/dist/pi-web-plugins/git/browser/git-contract.js +108 -0
- package/dist/pi-web-plugins/git/browser/git-panel.js +609 -0
- package/dist/pi-web-plugins/git/browser/gitFileList.js +43 -0
- package/dist/pi-web-plugins/git/browser/gitFileShared.js +16 -0
- package/dist/pi-web-plugins/git/browser/gitFileTree.js +81 -0
- package/dist/pi-web-plugins/git/browser/gitFileViewPreference.js +35 -0
- package/dist/pi-web-plugins/git/browser/gitRoute.js +42 -0
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +10 -0
- package/dist/pi-web-plugins/git/browser/unifiedDiff.js +301 -0
- package/dist/{server/git/gitService.js → pi-web-plugins/git/git-backend.js} +209 -60
- package/dist/pi-web-plugins/git/package.json +16 -0
- package/dist/pi-web-plugins/git/server-plugin.js +176 -0
- package/dist/pi-web-plugins/info/infoInternals.js +16 -2
- package/dist/pi-web-plugins/info/package.json +1 -1
- package/dist/pi-web-plugins/info/pi-web-plugin.js +2 -2
- package/dist/pi-web-plugins/updates/package.json +1 -1
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +1 -1
- package/dist/pi-web-plugins/workspace-tasks/package.json +1 -1
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +3 -3
- package/dist/piWebVersionReport.js +63 -10
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +33 -16
- package/dist/pluginRecoveryCli.js +172 -0
- package/dist/pluginRecoveryCli.js.map +1 -0
- package/dist/server/activity/workspaceActivityService.js +27 -19
- package/dist/server/activity/workspaceActivityService.js.map +1 -1
- package/dist/server/app.js +41 -15
- package/dist/server/app.js.map +1 -1
- package/dist/server/configRoutes.js +3 -21
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/knownAutoInstallPiPackages.js +30 -0
- package/dist/server/knownAutoInstallPiPackages.js.map +1 -0
- package/dist/server/machines/machineClient.js +23 -4
- package/dist/server/machines/machineClient.js.map +1 -1
- package/dist/server/machines/machinePluginProxyRoutes.js +74 -17
- package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +165 -8
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineService.js +23 -0
- package/dist/server/machines/machineService.js.map +1 -1
- package/dist/server/piPackageIdentity.js +25 -0
- package/dist/server/piPackageIdentity.js.map +1 -0
- package/dist/server/piPackageService.js +69 -8
- package/dist/server/piPackageService.js.map +1 -1
- package/dist/server/piWebPluginCatalog.js +584 -0
- package/dist/server/piWebPluginCatalog.js.map +1 -0
- package/dist/server/piWebPluginLifecycle.js +162 -0
- package/dist/server/piWebPluginLifecycle.js.map +1 -0
- package/dist/server/piWebPluginService.js +159 -261
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +41 -9
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/plugins/pluginBackendProxyRoutes.js +69 -0
- package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -0
- package/dist/server/plugins/serverPluginExec.js +184 -0
- package/dist/server/plugins/serverPluginExec.js.map +1 -0
- package/dist/server/plugins/serverPluginRuntime.js +480 -0
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -0
- package/dist/server/projectTrustRoutes.js +80 -0
- package/dist/server/projectTrustRoutes.js.map +1 -0
- package/dist/server/projects/projectService.js +3 -1
- package/dist/server/projects/projectService.js.map +1 -1
- package/dist/server/realtime/sessionEventHub.js +26 -11
- package/dist/server/realtime/sessionEventHub.js.map +1 -1
- package/dist/server/requestCancellation.js +32 -0
- package/dist/server/requestCancellation.js.map +1 -0
- package/dist/server/sessiond/agentProcessEnvironment.js +29 -30
- package/dist/server/sessiond/agentProcessEnvironment.js.map +1 -1
- package/dist/server/sessiond/autoInstallPiPackages.js +63 -0
- package/dist/server/sessiond/autoInstallPiPackages.js.map +1 -0
- package/dist/server/sessiond/pluginBackendRoutes.js +64 -0
- package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -0
- package/dist/server/sessiond/sessionDaemonShutdown.js +24 -0
- package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -0
- package/dist/server/sessiond/sessionProxyRoutes.js +2 -2
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionServiceDependencies.js +2 -1
- package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
- package/dist/server/sessiond/sessiondStateOwnership.js +235 -0
- package/dist/server/sessiond/sessiondStateOwnership.js.map +1 -0
- package/dist/server/sessiond/workspaceCatalogRoutes.js +31 -0
- package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -0
- package/dist/server/sessiond/workspaceRemovalRoutes.js +41 -0
- package/dist/server/sessiond/workspaceRemovalRoutes.js.map +1 -0
- package/dist/server/sessiond.js +284 -98
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/authService.js +15 -54
- package/dist/server/sessions/authService.js.map +1 -1
- package/dist/server/sessions/dockerEnvironmentFacts.js +254 -0
- package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -0
- package/dist/server/sessions/modelCatalogRefresher.js +4 -3
- package/dist/server/sessions/modelCatalogRefresher.js.map +1 -1
- package/dist/server/sessions/piSessionManagerGateway.js +18 -67
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +495 -142
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionCommandService.js +24 -1
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionEnvironmentFacts.js +48 -0
- package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -0
- package/dist/server/sessions/sessionFileFormat.js +27 -0
- package/dist/server/sessions/sessionFileFormat.js.map +1 -0
- package/dist/server/sessions/sessionFileHeader.js +1 -14
- package/dist/server/sessions/sessionFileHeader.js.map +1 -1
- package/dist/server/sessions/sessionModelScope.js +160 -0
- package/dist/server/sessions/sessionModelScope.js.map +1 -0
- package/dist/server/sessions/sessionNameGenerator.js +6 -6
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +55 -0
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/sessionSummaryScanner.js +96 -224
- package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +5 -9
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
- package/dist/server/sessions/spawnTargetResolver.js +1 -1
- package/dist/server/status/machineStatusRoutes.js +8 -0
- package/dist/server/status/machineStatusRoutes.js.map +1 -0
- package/dist/server/status/machineStatusService.js +181 -0
- package/dist/server/status/machineStatusService.js.map +1 -0
- package/dist/server/status/workspaceAttribution.js +87 -0
- package/dist/server/status/workspaceAttribution.js.map +1 -0
- package/dist/server/storage/piPackageDismissalStore.js +78 -0
- package/dist/server/storage/piPackageDismissalStore.js.map +1 -0
- package/dist/server/terminalProxyRoutes.js +2 -1
- package/dist/server/terminalProxyRoutes.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +20 -13
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/fileContentService.js +18 -9
- package/dist/server/workspaces/fileContentService.js.map +1 -1
- package/dist/server/workspaces/filePreviewResponseHeaders.js +18 -0
- package/dist/server/workspaces/filePreviewResponseHeaders.js.map +1 -0
- package/dist/server/workspaces/filePreviewResponsePolicy.js +55 -0
- package/dist/server/workspaces/filePreviewResponsePolicy.js.map +1 -0
- package/dist/server/workspaces/filePreviewService.js +81 -0
- package/dist/server/workspaces/filePreviewService.js.map +1 -0
- package/dist/server/workspaces/projectWorkspaceCwds.js +0 -5
- package/dist/server/workspaces/projectWorkspaceCwds.js.map +1 -1
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +402 -0
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -0
- package/dist/server/workspaces/workspaceCatalog.js +47 -0
- package/dist/server/workspaces/workspaceCatalog.js.map +1 -0
- package/dist/server/workspaces/workspaceContext.js +1 -3
- package/dist/server/workspaces/workspaceContext.js.map +1 -1
- package/dist/server/workspaces/workspaceDeletionRoutes.js +35 -125
- package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -1
- package/dist/server/workspaces/workspaceProviderRegistry.js +651 -0
- package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -0
- package/dist/server/workspaces/workspaceRemovalService.js +256 -0
- package/dist/server/workspaces/workspaceRemovalService.js.map +1 -0
- package/dist/server/workspaces/workspaceRouteErrors.js +7 -0
- package/dist/server/workspaces/workspaceRouteErrors.js.map +1 -0
- package/dist/server/workspaces/worktreePreRemoveHook.js +39 -0
- package/dist/server/workspaces/worktreePreRemoveHook.js.map +1 -0
- package/dist/server-plugin-api.d.ts +140 -0
- package/dist/server-plugin-api.js +2 -0
- package/dist/server-plugin-api.js.map +1 -0
- package/dist/serverPluginRecovery.js +138 -0
- package/dist/serverPluginRecovery.js.map +1 -0
- package/dist/sessiond/activeAgentProfile.js +3 -22
- package/dist/sessiond/activeAgentProfile.js.map +1 -1
- package/dist/sessiond/config.js +11 -0
- package/dist/sessiond/config.js.map +1 -1
- package/dist/sessiond/sessionDaemonClient.js +11 -9
- package/dist/sessiond/sessionDaemonClient.js.map +1 -1
- package/dist/shared/activeAgentProfile.js +2 -41
- package/dist/shared/activeAgentProfile.js.map +1 -1
- package/dist/shared/activity.js +0 -3
- package/dist/shared/activity.js.map +1 -1
- package/dist/shared/apiTypes.js +7 -5
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +8 -6
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/federatedRoutes.js +36 -5
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/machinePluginIds.js +4 -2
- package/dist/shared/machinePluginIds.js.map +1 -1
- package/dist/shared/machineStatus.js +94 -0
- package/dist/shared/machineStatus.js.map +1 -0
- package/dist/shared/piWebStatusParsing.js +33 -0
- package/dist/shared/piWebStatusParsing.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +150 -0
- package/dist/shared/pluginApiTypes.js +3 -0
- package/dist/shared/pluginApiTypes.js.map +1 -0
- package/dist/shared/pluginBackendProtocol.js +110 -0
- package/dist/shared/pluginBackendProtocol.js.map +1 -0
- package/dist/shared/pluginIds.js +5 -0
- package/dist/shared/pluginIds.js.map +1 -1
- package/dist/shared/pluginRecoveryCommands.js +14 -0
- package/dist/shared/pluginRecoveryCommands.js.map +1 -0
- package/dist/shared/workspaceFiles.js +41 -2
- package/dist/shared/workspaceFiles.js.map +1 -1
- package/dist/shared/workspaceRemovalProtocol.js +24 -0
- package/dist/shared/workspaceRemovalProtocol.js.map +1 -0
- package/docs/config.md +105 -52
- package/docs/plugins.md +403 -146
- package/examples/workspace-provider-plugin/README.md +52 -0
- package/examples/workspace-provider-plugin/package.json +25 -0
- package/examples/workspace-provider-plugin/src/browser/index.ts +69 -0
- package/examples/workspace-provider-plugin/src/server.ts +64 -0
- package/examples/workspace-provider-plugin/tsconfig.json +21 -0
- package/package.json +30 -11
- package/server-plugin-api.d.ts +1 -0
- package/dist/client/assets/CodeViewer-D91Sp61M.js +0 -4
- package/dist/client/assets/UnifiedDiffViewer-BafLWGtF.js +0 -39
- package/dist/client/assets/index-CA8q9_o7.js +0 -4025
- package/dist/client/assets/vendor-editor-core-vUi74DnD.js +0 -12
- package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +0 -46
- package/dist/pi-web-plugins/relays/package.json +0 -9
- package/dist/plugin-api/unstable.d.ts +0 -22
- package/dist/server/activity/workspaceActivityRoutes.js +0 -4
- package/dist/server/activity/workspaceActivityRoutes.js.map +0 -1
- package/dist/server/git/gitService.js.map +0 -1
- package/dist/server/gitRoutes.js +0 -23
- package/dist/server/gitRoutes.js.map +0 -1
- package/dist/server/sessions/parentSessionLocator.js +0 -75
- package/dist/server/sessions/parentSessionLocator.js.map +0 -1
- package/dist/server/workspaces/gitWorktreeDiscovery.js +0 -43
- package/dist/server/workspaces/gitWorktreeDiscovery.js.map +0 -1
- package/dist/server/workspaces/imagePreviewService.js +0 -40
- package/dist/server/workspaces/imagePreviewService.js.map +0 -1
- package/dist/server/workspaces/workspaceService.js +0 -52
- package/dist/server/workspaces/workspaceService.js.map +0 -1
- package/dist/shared/apiTypes.d.ts +0 -1217
- package/dist/shared/thinkingLevels.d.ts +0 -27
- package/plugin-api/unstable.d.ts +0 -1
- /package/dist/{pi-web-plugins → pi-packages}/relays/vendor/README.md +0 -0
- /package/dist/{pi-web-plugins → pi-packages}/relays/vendor/marked.esm.js +0 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { isPiWebPluginId } from "../../shared/pluginIds.js";
|
|
3
|
+
import { WorkspaceCatalogProtocolError, WorkspaceCatalogRequestError, WorkspaceCatalogUnavailableError, WORKSPACE_PROVIDER_RUNTIME_PROTOCOL_VERSION, } from "./workspaceCatalog.js";
|
|
4
|
+
const WORKSPACE_CATALOG_PATH = "/workspace-catalog";
|
|
5
|
+
/** Narrow web adapter over sessiond's internal workspace-authority protocol. */
|
|
6
|
+
export class SessionDaemonWorkspaceCatalog {
|
|
7
|
+
constructor(daemon) {
|
|
8
|
+
this.daemon = daemon;
|
|
9
|
+
}
|
|
10
|
+
async resolveProject(projectId) {
|
|
11
|
+
const value = await this.requestJson(`${WORKSPACE_CATALOG_PATH}/projects/${encodedId(projectId, "project")}/workspaces`);
|
|
12
|
+
return parseWorkspaceProviderResolution(value, projectId);
|
|
13
|
+
}
|
|
14
|
+
async list(projectId) {
|
|
15
|
+
return [...(await this.resolveProject(projectId)).workspaces];
|
|
16
|
+
}
|
|
17
|
+
async resolve(projectId, workspaceId) {
|
|
18
|
+
const value = await this.requestJson(`${WORKSPACE_CATALOG_PATH}/projects/${encodedId(projectId, "project")}/workspaces/${encodedId(workspaceId, "workspace")}`);
|
|
19
|
+
const workspace = parseWorkspace(value, "workspace resolution response");
|
|
20
|
+
if (workspace.projectId !== projectId || workspace.id !== workspaceId) {
|
|
21
|
+
throw protocolError("workspace resolution response did not match the requested project and workspace");
|
|
22
|
+
}
|
|
23
|
+
return workspace;
|
|
24
|
+
}
|
|
25
|
+
async providerRuntime() {
|
|
26
|
+
return parseProviderRuntimeSnapshot(await this.requestJson(`${WORKSPACE_CATALOG_PATH}/provider-runtime`));
|
|
27
|
+
}
|
|
28
|
+
async requestJson(path) {
|
|
29
|
+
let response;
|
|
30
|
+
try {
|
|
31
|
+
response = await this.daemon.request("GET", path);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new WorkspaceCatalogUnavailableError(`Session daemon workspace authority unavailable: ${errorMessage(error)}`, { cause: error });
|
|
35
|
+
}
|
|
36
|
+
if (response.statusCode < 200 || response.statusCode >= 300) {
|
|
37
|
+
if (isUnknownWorkspaceCatalogRoute(response.statusCode, response.body)) {
|
|
38
|
+
throw new WorkspaceCatalogProtocolError("Session daemon does not support workspace authority operations; restart or upgrade the session daemon");
|
|
39
|
+
}
|
|
40
|
+
throw new WorkspaceCatalogRequestError(workspaceCatalogRequestMessage(response.statusCode, response.body), response.statusCode);
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
if (response.body === "")
|
|
44
|
+
return undefined;
|
|
45
|
+
const value = JSON.parse(response.body);
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw new WorkspaceCatalogProtocolError("Session daemon workspace authority returned invalid JSON", { cause: error });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function parseWorkspaceProviderResolution(value, expectedProjectId) {
|
|
54
|
+
if (!isRecord(value))
|
|
55
|
+
throw protocolError("workspace resolution response must be an object");
|
|
56
|
+
const status = parseWorkspaceProviderResolutionStatus(value["status"]);
|
|
57
|
+
const projectId = requireString(value, "projectId", "workspace resolution response");
|
|
58
|
+
if (projectId !== expectedProjectId)
|
|
59
|
+
throw protocolError("workspace resolution response did not match the requested project");
|
|
60
|
+
const ownerPluginId = optionalPluginId(value, "ownerPluginId", "workspace resolution response");
|
|
61
|
+
if (status === "provider" && ownerPluginId === undefined) {
|
|
62
|
+
throw protocolError("provider workspace resolution must identify its owner");
|
|
63
|
+
}
|
|
64
|
+
if (status === "folder" && ownerPluginId !== undefined) {
|
|
65
|
+
throw protocolError("folder workspace resolution must not identify a provider owner");
|
|
66
|
+
}
|
|
67
|
+
const workspaces = parseWorkspaceList(value["workspaces"], projectId);
|
|
68
|
+
const diagnostics = parseArray(value["diagnostics"], "workspace provider diagnostics", parseWorkspaceProviderDiagnostic);
|
|
69
|
+
return Object.freeze({
|
|
70
|
+
status,
|
|
71
|
+
projectId,
|
|
72
|
+
...(ownerPluginId === undefined ? {} : { ownerPluginId }),
|
|
73
|
+
workspaces: Object.freeze(workspaces),
|
|
74
|
+
diagnostics: Object.freeze(diagnostics),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function parseWorkspaceProviderResolutionStatus(value) {
|
|
78
|
+
if (value === "provider" || value === "folder" || value === "degraded")
|
|
79
|
+
return value;
|
|
80
|
+
throw protocolError("workspace resolution status is invalid");
|
|
81
|
+
}
|
|
82
|
+
function parseWorkspaceProviderDiagnostic(value, index) {
|
|
83
|
+
const label = `workspace provider diagnostic ${String(index + 1)}`;
|
|
84
|
+
if (!isRecord(value))
|
|
85
|
+
throw protocolError(`${label} must be an object`);
|
|
86
|
+
const code = parseWorkspaceProviderDiagnosticCode(value["code"], label);
|
|
87
|
+
const tier = parseWorkspaceProviderTier(value["tier"], label);
|
|
88
|
+
const pluginId = optionalPluginId(value, "pluginId", label);
|
|
89
|
+
const pluginIds = value["pluginIds"] === undefined
|
|
90
|
+
? undefined
|
|
91
|
+
: parsePluginIds(value["pluginIds"], `${label} pluginIds`);
|
|
92
|
+
return Object.freeze({
|
|
93
|
+
code,
|
|
94
|
+
message: requireString(value, "message", label),
|
|
95
|
+
tier,
|
|
96
|
+
...(pluginId === undefined ? {} : { pluginId }),
|
|
97
|
+
...(pluginIds === undefined ? {} : { pluginIds: Object.freeze(pluginIds) }),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function parseWorkspaceProviderDiagnosticCode(value, label) {
|
|
101
|
+
if (value === "probe-failed" || value === "claim-conflict" || value === "list-failed")
|
|
102
|
+
return value;
|
|
103
|
+
throw protocolError(`${label} code is invalid`);
|
|
104
|
+
}
|
|
105
|
+
function parseWorkspaceProviderTier(value, label) {
|
|
106
|
+
if (value === "primary" || value === "fallback")
|
|
107
|
+
return value;
|
|
108
|
+
throw protocolError(`${label} tier is invalid`);
|
|
109
|
+
}
|
|
110
|
+
function parsePluginIds(value, label) {
|
|
111
|
+
if (!Array.isArray(value))
|
|
112
|
+
throw protocolError(`${label} must be an array`);
|
|
113
|
+
return value.map((pluginId, index) => {
|
|
114
|
+
if (typeof pluginId !== "string" || !isPiWebPluginId(pluginId)) {
|
|
115
|
+
throw protocolError(`${label} item ${String(index + 1)} is invalid`);
|
|
116
|
+
}
|
|
117
|
+
return pluginId;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function parseWorkspaceList(value, projectId) {
|
|
121
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
122
|
+
throw protocolError("workspace list must be a non-empty array");
|
|
123
|
+
const ids = new Set();
|
|
124
|
+
const paths = new Set();
|
|
125
|
+
const workspaces = value.map((item, index) => parseWorkspace(item, `workspace list item ${String(index + 1)}`));
|
|
126
|
+
let mainCount = 0;
|
|
127
|
+
for (const workspace of workspaces) {
|
|
128
|
+
if (workspace.projectId !== projectId)
|
|
129
|
+
throw protocolError("workspace list contained a workspace for another project");
|
|
130
|
+
if (ids.has(workspace.id))
|
|
131
|
+
throw protocolError(`workspace list contained duplicate id: ${workspace.id}`);
|
|
132
|
+
if (paths.has(workspace.path))
|
|
133
|
+
throw protocolError(`workspace list contained duplicate path: ${workspace.path}`);
|
|
134
|
+
ids.add(workspace.id);
|
|
135
|
+
paths.add(workspace.path);
|
|
136
|
+
if (workspace.isMain)
|
|
137
|
+
mainCount += 1;
|
|
138
|
+
}
|
|
139
|
+
if (mainCount !== 1)
|
|
140
|
+
throw protocolError("workspace list must contain exactly one main workspace");
|
|
141
|
+
return workspaces;
|
|
142
|
+
}
|
|
143
|
+
function parseWorkspace(value, label) {
|
|
144
|
+
if (!isRecord(value))
|
|
145
|
+
throw protocolError(`${label} must be an object`);
|
|
146
|
+
const path = requireString(value, "path", label);
|
|
147
|
+
if (!isAbsolute(path))
|
|
148
|
+
throw protocolError(`${label} path must be absolute`);
|
|
149
|
+
const provider = value["provider"] === undefined ? undefined : parseProvider(value["provider"], label);
|
|
150
|
+
const removal = value["removal"] === undefined ? undefined : parseRemoval(value["removal"], label);
|
|
151
|
+
return Object.freeze({
|
|
152
|
+
id: requireString(value, "id", label),
|
|
153
|
+
projectId: requireString(value, "projectId", label),
|
|
154
|
+
path,
|
|
155
|
+
label: requireString(value, "label", label),
|
|
156
|
+
isMain: requireBoolean(value, "isMain", label),
|
|
157
|
+
...(provider === undefined ? {} : { provider }),
|
|
158
|
+
...(removal === undefined ? {} : { removal }),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function parseProvider(value, workspaceLabel) {
|
|
162
|
+
const label = `${workspaceLabel} provider`;
|
|
163
|
+
if (!isRecord(value))
|
|
164
|
+
throw protocolError(`${label} must be an object`);
|
|
165
|
+
const capabilities = value["capabilities"];
|
|
166
|
+
if (!isRecord(capabilities))
|
|
167
|
+
throw protocolError(`${label} capabilities must be an object`);
|
|
168
|
+
const metadata = value["metadata"] === undefined ? undefined : parseJsonObject(value["metadata"], `${label} metadata`);
|
|
169
|
+
return Object.freeze({
|
|
170
|
+
pluginId: requirePluginId(value, "pluginId", label),
|
|
171
|
+
capabilities: Object.freeze({
|
|
172
|
+
request: requireBoolean(capabilities, "request", `${label} capabilities`),
|
|
173
|
+
remove: requireBoolean(capabilities, "remove", `${label} capabilities`),
|
|
174
|
+
}),
|
|
175
|
+
...(metadata === undefined ? {} : { metadata }),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function parseRemoval(value, workspaceLabel) {
|
|
179
|
+
const label = `${workspaceLabel} removal`;
|
|
180
|
+
if (!isRecord(value))
|
|
181
|
+
throw protocolError(`${label} must be an object`);
|
|
182
|
+
return Object.freeze({
|
|
183
|
+
actionLabel: requireString(value, "actionLabel", label),
|
|
184
|
+
confirmation: requireString(value, "confirmation", label),
|
|
185
|
+
precondition: requireString(value, "precondition", label),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function parseProviderRuntimeSnapshot(value) {
|
|
189
|
+
if (!isRecord(value))
|
|
190
|
+
throw protocolError("provider runtime response must be an object");
|
|
191
|
+
if (value["protocolVersion"] !== WORKSPACE_PROVIDER_RUNTIME_PROTOCOL_VERSION) {
|
|
192
|
+
throw protocolError("provider runtime protocol is unsupported; restart or upgrade the session daemon");
|
|
193
|
+
}
|
|
194
|
+
const safeStart = parseSafeStart(value["safeStart"]);
|
|
195
|
+
const records = parseArray(value["records"], "provider runtime records", parseRuntimeRecord);
|
|
196
|
+
const health = parseArray(value["health"], "provider runtime health", parseHealthInspection);
|
|
197
|
+
const diagnostics = parseArray(value["diagnostics"], "provider runtime diagnostics", parseCatalogDiagnostic);
|
|
198
|
+
return Object.freeze({
|
|
199
|
+
protocolVersion: WORKSPACE_PROVIDER_RUNTIME_PROTOCOL_VERSION,
|
|
200
|
+
...(safeStart === undefined ? {} : { safeStart }),
|
|
201
|
+
records: Object.freeze(records),
|
|
202
|
+
health: Object.freeze(health),
|
|
203
|
+
diagnostics: Object.freeze(diagnostics),
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function parseRuntimeRecord(value, index) {
|
|
207
|
+
const label = `provider runtime record ${String(index + 1)}`;
|
|
208
|
+
if (!isRecord(value))
|
|
209
|
+
throw protocolError(`${label} must be an object`);
|
|
210
|
+
const state = value["state"];
|
|
211
|
+
const scope = value["scope"];
|
|
212
|
+
const phase = value["phase"];
|
|
213
|
+
if (!isRuntimeState(state))
|
|
214
|
+
throw protocolError(`${label} state is invalid`);
|
|
215
|
+
if (scope !== "bundled" && scope !== "local" && scope !== "user" && scope !== "project") {
|
|
216
|
+
throw protocolError(`${label} scope is invalid`);
|
|
217
|
+
}
|
|
218
|
+
if (phase !== undefined && !isLifecyclePhase(phase))
|
|
219
|
+
throw protocolError(`${label} phase is invalid`);
|
|
220
|
+
const name = optionalString(value, "name", label);
|
|
221
|
+
const message = optionalString(value, "message", label);
|
|
222
|
+
const browserRevision = optionalString(value, "browserRevision", label);
|
|
223
|
+
return Object.freeze({
|
|
224
|
+
pluginId: requirePluginId(value, "pluginId", label),
|
|
225
|
+
source: requireString(value, "source", label),
|
|
226
|
+
scope,
|
|
227
|
+
moduleRevision: requireString(value, "moduleRevision", label),
|
|
228
|
+
...(browserRevision === undefined ? {} : { browserRevision }),
|
|
229
|
+
settingsRevision: requireString(value, "settingsRevision", label),
|
|
230
|
+
machineSpecific: requireBoolean(value, "machineSpecific", label),
|
|
231
|
+
state,
|
|
232
|
+
...(name === undefined ? {} : { name }),
|
|
233
|
+
...(phase === undefined ? {} : { phase }),
|
|
234
|
+
...(message === undefined ? {} : { message }),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
function parseCatalogDiagnostic(value, index) {
|
|
238
|
+
const label = `provider runtime diagnostic ${String(index + 1)}`;
|
|
239
|
+
if (!isRecord(value))
|
|
240
|
+
throw protocolError(`${label} must be an object`);
|
|
241
|
+
const code = value["code"];
|
|
242
|
+
if (!isCatalogDiagnosticCode(code))
|
|
243
|
+
throw protocolError(`${label} code is invalid`);
|
|
244
|
+
const pluginId = optionalPluginId(value, "pluginId", label);
|
|
245
|
+
return Object.freeze({
|
|
246
|
+
code,
|
|
247
|
+
source: requireString(value, "source", label),
|
|
248
|
+
message: requireString(value, "message", label),
|
|
249
|
+
...(pluginId === undefined ? {} : { pluginId }),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
function parseHealthInspection(value, index) {
|
|
253
|
+
const label = `provider runtime health item ${String(index + 1)}`;
|
|
254
|
+
if (!isRecord(value))
|
|
255
|
+
throw protocolError(`${label} must be an object`);
|
|
256
|
+
const phase = value["phase"];
|
|
257
|
+
if (phase !== undefined && phase !== "health")
|
|
258
|
+
throw protocolError(`${label} phase is invalid`);
|
|
259
|
+
const error = optionalString(value, "error", label);
|
|
260
|
+
return Object.freeze({
|
|
261
|
+
pluginId: requirePluginId(value, "pluginId", label),
|
|
262
|
+
health: parseHealth(value["health"], label),
|
|
263
|
+
...(phase === undefined ? {} : { phase }),
|
|
264
|
+
...(error === undefined ? {} : { error }),
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
function parseHealth(value, inspectionLabel) {
|
|
268
|
+
const label = `${inspectionLabel} health`;
|
|
269
|
+
if (!isRecord(value))
|
|
270
|
+
throw protocolError(`${label} must be an object`);
|
|
271
|
+
const status = value["status"];
|
|
272
|
+
if (status !== "healthy" && status !== "degraded" && status !== "unhealthy") {
|
|
273
|
+
throw protocolError(`${label} status is invalid`);
|
|
274
|
+
}
|
|
275
|
+
const message = optionalString(value, "message", label);
|
|
276
|
+
const details = value["details"] === undefined ? undefined : parseJsonObject(value["details"], `${label} details`);
|
|
277
|
+
return Object.freeze({
|
|
278
|
+
status,
|
|
279
|
+
...(message === undefined ? {} : { message }),
|
|
280
|
+
...(details === undefined ? {} : { details }),
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function parseSafeStart(value) {
|
|
284
|
+
if (value === undefined)
|
|
285
|
+
return undefined;
|
|
286
|
+
if (value === "bundled-only" || value === "none")
|
|
287
|
+
return value;
|
|
288
|
+
throw protocolError("provider runtime safeStart is invalid");
|
|
289
|
+
}
|
|
290
|
+
function parseArray(value, label, parse) {
|
|
291
|
+
if (!Array.isArray(value))
|
|
292
|
+
throw protocolError(`${label} must be an array`);
|
|
293
|
+
return value.map(parse);
|
|
294
|
+
}
|
|
295
|
+
function parseJsonObject(value, label) {
|
|
296
|
+
if (!isRecord(value))
|
|
297
|
+
throw protocolError(`${label} must be a JSON object`);
|
|
298
|
+
const output = Object.fromEntries(Object.entries(value).map(([key, child]) => [key, parseJsonValue(child, label)]));
|
|
299
|
+
Object.freeze(output);
|
|
300
|
+
return output;
|
|
301
|
+
}
|
|
302
|
+
function parseJsonValue(value, label) {
|
|
303
|
+
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
304
|
+
return value;
|
|
305
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
306
|
+
return value;
|
|
307
|
+
if (Array.isArray(value)) {
|
|
308
|
+
const output = value.map((item) => parseJsonValue(item, label));
|
|
309
|
+
Object.freeze(output);
|
|
310
|
+
return output;
|
|
311
|
+
}
|
|
312
|
+
if (isRecord(value))
|
|
313
|
+
return parseJsonObject(value, label);
|
|
314
|
+
throw protocolError(`${label} must contain only JSON values`);
|
|
315
|
+
}
|
|
316
|
+
function requireString(record, field, label) {
|
|
317
|
+
const value = record[field];
|
|
318
|
+
if (typeof value !== "string" || value === "")
|
|
319
|
+
throw protocolError(`${label} ${field} must be a non-empty string`);
|
|
320
|
+
return value;
|
|
321
|
+
}
|
|
322
|
+
function optionalString(record, field, label) {
|
|
323
|
+
const value = record[field];
|
|
324
|
+
if (value === undefined)
|
|
325
|
+
return undefined;
|
|
326
|
+
if (typeof value !== "string")
|
|
327
|
+
throw protocolError(`${label} ${field} must be a string`);
|
|
328
|
+
return value;
|
|
329
|
+
}
|
|
330
|
+
function requirePluginId(record, field, label) {
|
|
331
|
+
const value = requireString(record, field, label);
|
|
332
|
+
if (!isPiWebPluginId(value))
|
|
333
|
+
throw protocolError(`${label} ${field} is invalid`);
|
|
334
|
+
return value;
|
|
335
|
+
}
|
|
336
|
+
function optionalPluginId(record, field, label) {
|
|
337
|
+
const value = optionalString(record, field, label);
|
|
338
|
+
if (value !== undefined && !isPiWebPluginId(value))
|
|
339
|
+
throw protocolError(`${label} ${field} is invalid`);
|
|
340
|
+
return value;
|
|
341
|
+
}
|
|
342
|
+
function requireBoolean(record, field, label) {
|
|
343
|
+
const value = record[field];
|
|
344
|
+
if (typeof value !== "boolean")
|
|
345
|
+
throw protocolError(`${label} ${field} must be a boolean`);
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
function isRuntimeState(value) {
|
|
349
|
+
return value === "active" || value === "failed" || value === "incompatible" || value === "disabled";
|
|
350
|
+
}
|
|
351
|
+
function isLifecyclePhase(value) {
|
|
352
|
+
return value === "import" || value === "activate" || value === "validate" || value === "start" || value === "health" || value === "stop";
|
|
353
|
+
}
|
|
354
|
+
function isCatalogDiagnosticCode(value) {
|
|
355
|
+
return value === "invalid-package" || value === "duplicate-id";
|
|
356
|
+
}
|
|
357
|
+
function encodedId(value, label) {
|
|
358
|
+
if (value === "")
|
|
359
|
+
throw new Error(`${label} id must be a non-empty string`);
|
|
360
|
+
return encodeURIComponent(value);
|
|
361
|
+
}
|
|
362
|
+
function workspaceCatalogRequestMessage(statusCode, body) {
|
|
363
|
+
const detail = responseError(body);
|
|
364
|
+
if (statusCode < 500 && detail !== undefined)
|
|
365
|
+
return detail;
|
|
366
|
+
return `Session daemon workspace authority returned HTTP ${String(statusCode)}${detail === undefined ? "" : `: ${detail}`}`;
|
|
367
|
+
}
|
|
368
|
+
function responseError(body) {
|
|
369
|
+
const value = parseResponseBody(body);
|
|
370
|
+
return isRecord(value) && typeof value["error"] === "string" ? value["error"] : undefined;
|
|
371
|
+
}
|
|
372
|
+
function isUnknownWorkspaceCatalogRoute(statusCode, body) {
|
|
373
|
+
if (statusCode !== 404)
|
|
374
|
+
return false;
|
|
375
|
+
const value = parseResponseBody(body);
|
|
376
|
+
if (!isRecord(value))
|
|
377
|
+
return true;
|
|
378
|
+
const error = value["error"];
|
|
379
|
+
const message = value["message"];
|
|
380
|
+
return error === "Not Found" || (typeof message === "string" && /^Route .* not found$/u.test(message));
|
|
381
|
+
}
|
|
382
|
+
function parseResponseBody(body) {
|
|
383
|
+
try {
|
|
384
|
+
if (body === "")
|
|
385
|
+
return undefined;
|
|
386
|
+
const value = JSON.parse(body);
|
|
387
|
+
return value;
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
return undefined;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
function protocolError(message) {
|
|
394
|
+
return new WorkspaceCatalogProtocolError(`Invalid session daemon workspace authority response: ${message}`);
|
|
395
|
+
}
|
|
396
|
+
function errorMessage(error) {
|
|
397
|
+
return error instanceof Error ? error.message : String(error);
|
|
398
|
+
}
|
|
399
|
+
function isRecord(value) {
|
|
400
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=sessionDaemonWorkspaceCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionDaemonWorkspaceCatalog.js","sourceRoot":"","sources":["../../../src/server/workspaces/sessionDaemonWorkspaceCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const WORKSPACE_PROVIDER_RUNTIME_PROTOCOL_VERSION = 1;
|
|
2
|
+
export function createWorkspaceProviderRuntimeSnapshot(records, health, safeStart, diagnostics = []) {
|
|
3
|
+
return Object.freeze({
|
|
4
|
+
protocolVersion: WORKSPACE_PROVIDER_RUNTIME_PROTOCOL_VERSION,
|
|
5
|
+
...(safeStart === undefined ? {} : { safeStart }),
|
|
6
|
+
records: Object.freeze(records.map((record) => Object.freeze({ ...record }))),
|
|
7
|
+
health: Object.freeze(health.map((inspection) => Object.freeze({
|
|
8
|
+
...inspection,
|
|
9
|
+
health: Object.freeze({ ...inspection.health }),
|
|
10
|
+
}))),
|
|
11
|
+
diagnostics: Object.freeze(diagnostics.map((diagnostic) => Object.freeze({ ...diagnostic }))),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export class WorkspaceCatalogUnavailableError extends Error {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.name = "WorkspaceCatalogUnavailableError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class WorkspaceCatalogProtocolError extends Error {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.name = "WorkspaceCatalogProtocolError";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class WorkspaceCatalogRequestError extends Error {
|
|
27
|
+
constructor(message, statusCode) {
|
|
28
|
+
super(message);
|
|
29
|
+
this.statusCode = statusCode;
|
|
30
|
+
this.name = "WorkspaceCatalogRequestError";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Preserve route-specific legacy status codes while making authority failures explicit. */
|
|
34
|
+
export function workspaceCatalogHttpStatus(error, fallbackStatus) {
|
|
35
|
+
if (error instanceof WorkspaceCatalogUnavailableError)
|
|
36
|
+
return 503;
|
|
37
|
+
if (error instanceof WorkspaceCatalogProtocolError)
|
|
38
|
+
return 502;
|
|
39
|
+
if (error instanceof WorkspaceCatalogRequestError) {
|
|
40
|
+
if (error.statusCode === 503)
|
|
41
|
+
return 503;
|
|
42
|
+
if (error.statusCode >= 500)
|
|
43
|
+
return 502;
|
|
44
|
+
}
|
|
45
|
+
return fallbackStatus;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=workspaceCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceCatalog.js","sourceRoot":"","sources":["../../../src/server/workspaces/workspaceCatalog.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,2CAA2C,GAAG,CAAC,CAAC;AAwB7D,MAAM,UAAU,sCAAsC,CACpD,OAA6C,EAC7C,MAA+C,EAC/C,SAAiC,EACjC,cAAuD,EAAE;IAEzD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,eAAe,EAAE,2CAA2C;QAC5D,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7D,GAAG,UAAU;YACb,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;SAChD,CAAC,CAAC,CAAC;QACJ,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;KAC9F,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAA3D;;QACW,SAAI,GAAG,kCAAkC,CAAC;IACrD,CAAC;CAAA;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAAxD;;QACW,SAAI,GAAG,+BAA+B,CAAC;IAClD,CAAC;CAAA;AAED,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAGrD,YAAY,OAAe,EAAW,UAAkB;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,eAAU,GAAV,UAAU,CAAQ;QAF/C,SAAI,GAAG,8BAA8B,CAAC;IAI/C,CAAC;CACF;AAED,4FAA4F;AAC5F,MAAM,UAAU,0BAA0B,CAAC,KAAc,EAAE,cAAsB;IAC/E,IAAI,KAAK,YAAY,gCAAgC;QAAE,OAAO,GAAG,CAAC;IAClE,IAAI,KAAK,YAAY,6BAA6B;QAAE,OAAO,GAAG,CAAC;IAC/D,IAAI,KAAK,YAAY,4BAA4B,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QACzC,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IAC1C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export async function resolveWorkspaceContext(projects, workspaces, projectId, workspaceId) {
|
|
2
2
|
const project = await projects.requireProject(projectId);
|
|
3
|
-
const workspace =
|
|
4
|
-
if (!workspace)
|
|
5
|
-
throw new Error("Workspace not found");
|
|
3
|
+
const workspace = await workspaces.resolve(project.id, workspaceId);
|
|
6
4
|
return { project, workspace, root: workspace.path };
|
|
7
5
|
}
|
|
8
6
|
//# sourceMappingURL=workspaceContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceContext.js","sourceRoot":"","sources":["../../../src/server/workspaces/workspaceContext.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,uBAAuB,
|
|
1
|
+
{"version":3,"file":"workspaceContext.js","sourceRoot":"","sources":["../../../src/server/workspaces/workspaceContext.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAwB,EACxB,UAA4B,EAC5B,SAAiB,EACjB,WAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC"}
|