@jmfederico/pi-web 1.202607.3 → 1.202608.1
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 +69 -7
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/{CodeViewer-CDVbMiN9.js → CodeViewer-mEiBZFA5.js} +2 -2
- package/dist/client/assets/{TerminalPanel-CTS1CgqF.js → TerminalPanel-O9381Eme.js} +6 -6
- package/dist/client/assets/index-uI2AGFUy.js +4091 -0
- package/dist/client/index.html +1 -1
- package/dist/config.js +109 -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/nativeServices/servicePlan.js +1 -1
- package/dist/nativeServices/servicePlan.js.map +1 -1
- 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 +1 -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/relays/package.json +1 -1
- package/dist/pi-web-plugins/relays/pi-web-plugin.js +3 -3
- package/dist/pi-web-plugins/relays/relayDiscovery.js +159 -27
- package/dist/pi-web-plugins/relays/relaysPanelElement.js +173 -16
- 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/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 +35 -37
- package/dist/server/app.js.map +1 -1
- package/dist/server/browserMessageProjection.js +0 -2
- package/dist/server/browserMessageProjection.js.map +1 -1
- package/dist/server/configRoutes.js +4 -31
- package/dist/server/configRoutes.js.map +1 -1
- 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 +167 -21
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineService.js +22 -0
- package/dist/server/machines/machineService.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 +40 -45
- 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/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/agentHttpDispatcher.js +108 -0
- package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -0
- package/dist/server/sessiond/agentProcessEnvironment.js +61 -0
- package/dist/server/sessiond/agentProcessEnvironment.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 +3 -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 +283 -96
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/askUserTool.js +0 -3
- package/dist/server/sessions/askUserTool.js.map +1 -1
- package/dist/server/sessions/authRoutes.js +0 -10
- package/dist/server/sessions/authRoutes.js.map +1 -1
- package/dist/server/sessions/authService.js +15 -78
- 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/messagePaging.js +2 -2
- package/dist/server/sessions/messagePaging.js.map +1 -1
- package/dist/server/sessions/modelCatalogRefresher.js +4 -3
- package/dist/server/sessions/modelCatalogRefresher.js.map +1 -1
- package/dist/server/sessions/oauthLoginFlowService.js +2 -5
- package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
- package/dist/server/sessions/pendingAskStore.js +0 -3
- package/dist/server/sessions/pendingAskStore.js.map +1 -1
- package/dist/server/sessions/piSessionManagerGateway.js +134 -3
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +318 -253
- 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 +82 -23
- package/dist/server/sessions/sessionFileHeader.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +88 -56
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/sessionSummaryScanner.js +491 -0
- package/dist/server/sessions/sessionSummaryScanner.js.map +1 -0
- package/dist/server/sessions/spawnSessionTool.js +8 -1
- package/dist/server/sessions/spawnSessionTool.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +11 -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/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/effectivePathAccess.js +0 -19
- package/dist/server/workspaces/effectivePathAccess.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 +39 -103
- 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 +13 -2
- 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 -14
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +8 -40
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/federatedRoutes.js +28 -8
- 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 +29 -0
- package/dist/shared/piWebStatusParsing.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +148 -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 +140 -47
- package/docs/plugins.md +386 -137
- 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 +32 -12
- package/server-plugin-api.d.ts +1 -0
- package/dist/client/assets/UnifiedDiffViewer-Cqke12ZX.js +0 -39
- package/dist/client/assets/index-LME0LfPb.js +0 -4068
- 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 -1234
- package/dist/shared/thinkingLevels.d.ts +0 -27
- package/plugin-api/unstable.d.ts +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { parseWorkspaceRemovalRequest, WORKSPACE_REMOVAL_REQUEST_BODY_MAX_BYTES, } from "../../shared/workspaceRemovalProtocol.js";
|
|
2
|
+
import { requestCancellation } from "../requestCancellation.js";
|
|
3
|
+
import { workspaceRemovalHttpStatus } from "../workspaces/workspaceRemovalService.js";
|
|
4
|
+
/** Internal sessiond endpoint for host-orchestrated provider workspace removal. */
|
|
5
|
+
export function registerWorkspaceRemovalRoutes(app, dependencies, prefix = "/workspace-removals") {
|
|
6
|
+
app.delete(`${prefix}/projects/:projectId/workspaces/:workspaceId`, { bodyLimit: WORKSPACE_REMOVAL_REQUEST_BODY_MAX_BYTES }, async (request, reply) => {
|
|
7
|
+
let precondition;
|
|
8
|
+
try {
|
|
9
|
+
precondition = parseWorkspaceRemovalRequest(request.body).precondition;
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
return reply.code(400).send({ error: errorMessage(error) });
|
|
13
|
+
}
|
|
14
|
+
let project;
|
|
15
|
+
try {
|
|
16
|
+
project = await dependencies.projects.requireProject(request.params.projectId);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
const message = errorMessage(error);
|
|
20
|
+
return reply.code(message === "Project not found" ? 404 : 500).send({ error: message });
|
|
21
|
+
}
|
|
22
|
+
const cancellation = requestCancellation(request, reply);
|
|
23
|
+
try {
|
|
24
|
+
return await dependencies.removals.remove(project, request.params.workspaceId, precondition, cancellation.signal);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return await removalRequestFailed(reply, error);
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
dependencies.onWorkspacesMutated();
|
|
31
|
+
cancellation.dispose();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function removalRequestFailed(reply, error) {
|
|
36
|
+
return reply.code(workspaceRemovalHttpStatus(error)).send({ error: errorMessage(error) });
|
|
37
|
+
}
|
|
38
|
+
function errorMessage(error) {
|
|
39
|
+
return error instanceof Error ? error.message : String(error);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=workspaceRemovalRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceRemovalRoutes.js","sourceRoot":"","sources":["../../../src/server/sessiond/workspaceRemovalRoutes.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,wCAAwC,GACzC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AA0BtF,mFAAmF;AACnF,MAAM,UAAU,8BAA8B,CAC5C,GAAoB,EACpB,YAA+C,EAC/C,MAAM,GAAG,qBAAqB;IAE9B,GAAG,CAAC,MAAM,CACR,GAAG,MAAM,8CAA8C,EACvD,EAAE,SAAS,EAAE,wCAAwC,EAAE,EACvD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACH,YAAY,GAAG,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,CACvC,OAAO,EACP,OAAO,CAAC,MAAM,CAAC,WAAW,EAC1B,YAAY,EACZ,YAAY,CAAC,MAAM,CACpB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,mBAAmB,EAAE,CAAC;YACnC,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAmB,EAAE,KAAc;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/server/sessiond.js
CHANGED
|
@@ -4,7 +4,9 @@ import { dirname } from "node:path";
|
|
|
4
4
|
import Fastify from "fastify";
|
|
5
5
|
import fastifyWebsocket from "@fastify/websocket";
|
|
6
6
|
import { WorkspaceActivityService } from "./activity/workspaceActivityService.js";
|
|
7
|
-
import {
|
|
7
|
+
import { MachineStatusService } from "./status/machineStatusService.js";
|
|
8
|
+
import { registerMachineStatusRoutes } from "./status/machineStatusRoutes.js";
|
|
9
|
+
import { CachedWorkspaceAttribution } from "./status/workspaceAttribution.js";
|
|
8
10
|
import { SessionEventHub } from "./realtime/sessionEventHub.js";
|
|
9
11
|
import { AuthService } from "./sessions/authService.js";
|
|
10
12
|
import { bootstrapAndFreezeGlobalExtensionProviders } from "./sessions/globalProviderPolicy.js";
|
|
@@ -14,97 +16,301 @@ import { PiSessionService } from "./sessions/piSessionService.js";
|
|
|
14
16
|
import { createPiSessionManagerGateway } from "./sessions/piSessionManagerGateway.js";
|
|
15
17
|
import { registerSessionRoutes } from "./sessions/sessionRoutes.js";
|
|
16
18
|
import { SessionNotificationStore } from "./sessions/sessionNotificationStore.js";
|
|
17
|
-
import {
|
|
19
|
+
import { SessionArchiveStore, defaultSessionArchiveFilePath } from "./sessions/sessionArchiveStore.js";
|
|
20
|
+
import { FileSessionUnreadPersistence, SessionUnreadStore, defaultSessionUnreadFilePath } from "./sessions/sessionUnreadStore.js";
|
|
18
21
|
import { ProjectScopedSpawnTargetResolver } from "./sessions/spawnTargetResolver.js";
|
|
19
|
-
import { RegisteredProjectWorkspaceCwds } from "./workspaces/projectWorkspaceCwds.js";
|
|
20
22
|
import { ProjectService } from "./projects/projectService.js";
|
|
21
|
-
import { ProjectStore } from "./storage/projectStore.js";
|
|
22
|
-
import {
|
|
23
|
+
import { ProjectStore, projectStorePath } from "./storage/projectStore.js";
|
|
24
|
+
import { eligibleWorkspaceProviderContributions, WorkspaceProviderRegistry, } from "./workspaces/workspaceProviderRegistry.js";
|
|
23
25
|
import { sessiondSocketPath } from "../sessiond/config.js";
|
|
24
26
|
import { TerminalService } from "./terminals/terminalService.js";
|
|
25
27
|
import { registerTerminalRoutes } from "./terminals/terminalRoutes.js";
|
|
26
28
|
import { getPiWebRuntimeComponent } from "./piWebStatus.js";
|
|
27
29
|
import { SESSIOND_RUNTIME_CAPABILITIES } from "../shared/capabilities.js";
|
|
28
|
-
import {
|
|
30
|
+
import { agentSessionDirEnvOverride, effectivePiWebConfig, maxUploadBytes, offlineModeEnabled, PI_CODING_AGENT_DIR_ENV, PI_CODING_AGENT_SESSION_DIR_ENV } from "../config.js";
|
|
29
31
|
import { createActiveAgentProfileDescriptor } from "../sessiond/activeAgentProfile.js";
|
|
32
|
+
import { loadServerPluginRecoveryConfig } from "../serverPluginRecovery.js";
|
|
33
|
+
import { PiWebPluginCatalog } from "./piWebPluginCatalog.js";
|
|
34
|
+
import { applyAgentHttpIdleTimeout } from "./sessiond/agentHttpDispatcher.js";
|
|
35
|
+
import { scrubNonAgentVisibleEnvKeys } from "./sessiond/agentProcessEnvironment.js";
|
|
36
|
+
import { claimSessiondStateOwnership } from "./sessiond/sessiondStateOwnership.js";
|
|
37
|
+
import { dockerEnvironmentPromptSections } from "./sessions/dockerEnvironmentFacts.js";
|
|
38
|
+
import { PI_WEB_SESSION_ENV, sessionEnvironmentPromptSections } from "./sessions/sessionEnvironmentFacts.js";
|
|
39
|
+
import { createServerPluginExecFile } from "./plugins/serverPluginExec.js";
|
|
40
|
+
import { createServerPluginRuntime } from "./plugins/serverPluginRuntime.js";
|
|
41
|
+
import { runSessionDaemonShutdown } from "./sessiond/sessionDaemonShutdown.js";
|
|
30
42
|
import { sessionServiceDependencies } from "./sessiond/sessionServiceDependencies.js";
|
|
43
|
+
import { registerWorkspaceCatalogRoutes } from "./sessiond/workspaceCatalogRoutes.js";
|
|
44
|
+
import { registerPluginBackendRoutes } from "./sessiond/pluginBackendRoutes.js";
|
|
45
|
+
import { registerWorkspaceRemovalRoutes } from "./sessiond/workspaceRemovalRoutes.js";
|
|
46
|
+
import { createWorkspaceProviderRuntimeSnapshot } from "./workspaces/workspaceCatalog.js";
|
|
47
|
+
import { WorkspaceRemovalService } from "./workspaces/workspaceRemovalService.js";
|
|
31
48
|
const daemonEnvironment = Object.freeze({ ...process.env });
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
const serverPluginRecovery = loadServerPluginRecoveryConfig({ env: daemonEnvironment });
|
|
50
|
+
const { config, deprecatedAgentInputs } = effectivePiWebConfig({ env: daemonEnvironment });
|
|
51
|
+
const activeAgentProfile = createActiveAgentProfileDescriptor(config.agent);
|
|
52
|
+
// Normalize the resolved agent state locations into the canonical pi SDK env
|
|
53
|
+
// vars before anything agent-visible can spawn: the embedded SDK's own
|
|
54
|
+
// resolution (getAgentDir(), its session-dir override), terminals, the bash
|
|
55
|
+
// tool, and subsessions then all observe the same values by inheritance. The
|
|
56
|
+
// exported canonical values are fully resolved, so agent processes that also
|
|
57
|
+
// inherit the deprecated PI_WEB_AGENT_* aliases still resolve to the same
|
|
58
|
+
// locations.
|
|
59
|
+
process.env[PI_CODING_AGENT_DIR_ENV] = activeAgentProfile.dir;
|
|
60
|
+
const agentSessionDirOverride = agentSessionDirEnvOverride(daemonEnvironment);
|
|
61
|
+
if (agentSessionDirOverride !== undefined) {
|
|
62
|
+
process.env[PI_CODING_AGENT_SESSION_DIR_ENV] = agentSessionDirOverride;
|
|
63
|
+
}
|
|
64
|
+
// Deliberately agent-visible nesting marker: every process spawned from a
|
|
65
|
+
// session can tell it runs inside this pi-web instance. The session
|
|
66
|
+
// environment facts below explain the precautions that follow from it.
|
|
67
|
+
process.env[PI_WEB_SESSION_ENV] = "1";
|
|
38
68
|
const app = Fastify({ logger: true, bodyLimit: maxUploadBytes(daemonEnvironment, config) });
|
|
69
|
+
if (deprecatedAgentInputs.length > 0) {
|
|
70
|
+
app.log.warn({ deprecatedAgentInputs }, "deprecated agent configuration inputs detected; support will be removed in a future release");
|
|
71
|
+
}
|
|
72
|
+
if (serverPluginRecovery.safeStartDiagnostic !== undefined) {
|
|
73
|
+
app.log.error({ component: "server-plugins", configPath: serverPluginRecovery.path }, serverPluginRecovery.safeStartDiagnostic);
|
|
74
|
+
}
|
|
39
75
|
await app.register(fastifyWebsocket);
|
|
76
|
+
let serverQuiescing = false;
|
|
77
|
+
app.addHook("onRequest", (_request, reply, done) => {
|
|
78
|
+
if (!serverQuiescing) {
|
|
79
|
+
done();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
void reply.code(503).send({ error: "Session daemon is shutting down" });
|
|
83
|
+
});
|
|
84
|
+
const serverPluginCatalog = new PiWebPluginCatalog({
|
|
85
|
+
cwd: process.cwd(),
|
|
86
|
+
agentDir: activeAgentProfile.dir,
|
|
87
|
+
configProvider: () => config,
|
|
88
|
+
warningSink: (message) => { app.log.warn({ component: "server-plugins" }, message); },
|
|
89
|
+
});
|
|
90
|
+
let runtimeShutdown;
|
|
91
|
+
let pendingShutdownSignal;
|
|
92
|
+
let shutdownStarted = false;
|
|
93
|
+
async function requestShutdown(signal) {
|
|
94
|
+
if (shutdownStarted)
|
|
95
|
+
return;
|
|
96
|
+
if (runtimeShutdown === undefined) {
|
|
97
|
+
pendingShutdownSignal = signal;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
shutdownStarted = true;
|
|
101
|
+
app.log.info({ signal }, "shutting down session daemon");
|
|
102
|
+
await runtimeShutdown();
|
|
103
|
+
}
|
|
104
|
+
process.once("SIGINT", (signal) => { void requestShutdown(signal); });
|
|
105
|
+
process.once("SIGTERM", (signal) => { void requestShutdown(signal); });
|
|
106
|
+
// Agent-executed processes (bash tool, terminals, subsessions) are spawned from
|
|
107
|
+
// this process and inherit its environment. The scrub removes only the keys
|
|
108
|
+
// that silently distort the tools agents run; the daemon's PI_WEB_* wiring
|
|
109
|
+
// stays visible on purpose, because a nested instance resolving the same state
|
|
110
|
+
// now fails loudly through the ownership claim below instead of corrupting it
|
|
111
|
+
// silently. The daemon keeps using the captured daemonEnvironment above; its
|
|
112
|
+
// runtime stores resolve their paths from it explicitly below.
|
|
113
|
+
const scrubbedEnvKeys = scrubNonAgentVisibleEnvKeys(process.env);
|
|
114
|
+
app.log.info({ scrubbedEnvKeys }, "daemon-only environment keys hidden from agent processes");
|
|
115
|
+
// Claim ownership of the instance's durable state before any runtime store can
|
|
116
|
+
// touch it: a second daemon resolving the same data directory finds a live
|
|
117
|
+
// owner here and fails with an actionable error. Service and tsx-watch
|
|
118
|
+
// restarts briefly overlap the outgoing daemon, so the claim waits out a short
|
|
119
|
+
// grace for it to release first. The web/API process of this instance shares
|
|
120
|
+
// the data directory but never claims it.
|
|
121
|
+
const stateOwnership = await claimSessiondStateOwnership({ env: daemonEnvironment, logger: app.log });
|
|
40
122
|
const runtime = await createSessionDaemonRuntime();
|
|
41
|
-
|
|
42
|
-
|
|
123
|
+
try {
|
|
124
|
+
registerSessionDaemonRoutes(runtime);
|
|
125
|
+
await listenSessionDaemon(runtime);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
try {
|
|
129
|
+
await runtime.shutdown();
|
|
130
|
+
}
|
|
131
|
+
catch (disposeError) {
|
|
132
|
+
app.log.error({ err: disposeError }, "session daemon startup failed and runtime disposal was incomplete");
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
43
136
|
async function createSessionDaemonRuntime() {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// any real session can load project resources.
|
|
58
|
-
await bootstrapAndFreezeGlobalExtensionProviders(auth.runtime, activeAgentProfile.dir, app.log);
|
|
59
|
-
// The shared model runtime is constructed offline so request paths never
|
|
60
|
-
// wait on provider-catalog fetches; this is the single bounded network
|
|
61
|
-
// refresher, and auth changes (login/logout) ask it for a prompt run. It
|
|
62
|
-
// stays fully inert when the operator asked for offline behavior.
|
|
63
|
-
const catalogRefresher = new ModelCatalogRefresher({
|
|
64
|
-
runtime: auth.runtime,
|
|
137
|
+
// Apply the active agent profile's httpIdleTimeoutMs before any other
|
|
138
|
+
// startup work so even catalog-refresh fetches run under the configured
|
|
139
|
+
// HTTP idle timeouts (issue #113).
|
|
140
|
+
const appliedHttpIdleTimeout = applyAgentHttpIdleTimeout({ agentDir: activeAgentProfile.dir, cwd: process.cwd() });
|
|
141
|
+
if (appliedHttpIdleTimeout.warning !== undefined) {
|
|
142
|
+
app.log.warn({ httpIdleTimeoutMs: appliedHttpIdleTimeout.timeoutMs }, appliedHttpIdleTimeout.warning);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
app.log.info({ httpIdleTimeoutMs: appliedHttpIdleTimeout.timeoutMs }, "applied agent profile HTTP idle timeout to the session daemon HTTP stack");
|
|
146
|
+
}
|
|
147
|
+
const serverPlugins = await createServerPluginRuntime({
|
|
148
|
+
catalog: serverPluginCatalog,
|
|
149
|
+
...(serverPluginRecovery.safeStart === undefined ? {} : { safeStart: serverPluginRecovery.safeStart }),
|
|
65
150
|
logger: app.log,
|
|
66
|
-
|
|
151
|
+
execFile: createServerPluginExecFile({ env: daemonEnvironment }),
|
|
67
152
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
153
|
+
try {
|
|
154
|
+
const eventHub = new SessionEventHub();
|
|
155
|
+
const notificationStore = new SessionNotificationStore();
|
|
156
|
+
const unreadStore = new SessionUnreadStore({
|
|
157
|
+
persistence: new FileSessionUnreadPersistence(defaultSessionUnreadFilePath(daemonEnvironment)),
|
|
158
|
+
onPersistenceError(operation, error) {
|
|
159
|
+
app.log.error({ err: error, operation }, "session unread persistence failed");
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
await unreadStore.load();
|
|
163
|
+
// Activity and status are mutually dependent by design: the record notifies
|
|
164
|
+
// the projection, the projection reads the record. The notification runs
|
|
165
|
+
// long after both are constructed.
|
|
166
|
+
const workspaceActivity = new WorkspaceActivityService(() => { machineStatus.notifyChanged(); });
|
|
167
|
+
const auth = await AuthService.create({ agentDir: activeAgentProfile.dir, logger: app.log });
|
|
168
|
+
// Capture providers registered by global extensions while the runtime is
|
|
169
|
+
// still mutable, then freeze every later extension-provider mutation before
|
|
170
|
+
// any real session can load project resources.
|
|
171
|
+
await bootstrapAndFreezeGlobalExtensionProviders(auth.runtime, activeAgentProfile.dir, app.log);
|
|
172
|
+
// The shared model runtime is constructed offline so request paths never
|
|
173
|
+
// wait on provider-catalog fetches; this is the single bounded network
|
|
174
|
+
// refresher, and auth changes (login/logout) ask it for a prompt run. It
|
|
175
|
+
// stays fully inert when the operator asked for offline behavior.
|
|
176
|
+
const catalogRefresher = new ModelCatalogRefresher({
|
|
177
|
+
runtime: auth.runtime,
|
|
178
|
+
logger: app.log,
|
|
179
|
+
offline: offlineModeEnabled(daemonEnvironment),
|
|
180
|
+
});
|
|
181
|
+
catalogRefresher.start();
|
|
182
|
+
auth.subscribe(() => { catalogRefresher.requestRefresh(); });
|
|
183
|
+
const projects = new ProjectService(new ProjectStore(projectStorePath(daemonEnvironment)));
|
|
184
|
+
const providerHealth = await serverPlugins.inspectHealth();
|
|
185
|
+
const workspaceProviders = new WorkspaceProviderRegistry({
|
|
186
|
+
contributions: eligibleWorkspaceProviderContributions(serverPlugins.providerContributions(), providerHealth),
|
|
187
|
+
logger: app.log,
|
|
188
|
+
});
|
|
189
|
+
const workspaceProviderRuntime = createWorkspaceProviderRuntimeSnapshot(serverPlugins.healthRecords(), providerHealth, serverPlugins.safeStartLevel(), serverPlugins.catalogDiagnostics());
|
|
190
|
+
const statusAttribution = new CachedWorkspaceAttribution({
|
|
191
|
+
projects,
|
|
192
|
+
workspaces: workspaceProviders,
|
|
193
|
+
logger: app.log,
|
|
194
|
+
});
|
|
195
|
+
const machineStatus = new MachineStatusService({
|
|
196
|
+
activity: workspaceActivity,
|
|
197
|
+
unread: unreadStore,
|
|
198
|
+
attribution: statusAttribution,
|
|
199
|
+
publisher: { publish: (snapshot) => { eventHub.publishRealtime({ type: "machine.status", status: snapshot }); } },
|
|
200
|
+
logger: app.log,
|
|
201
|
+
});
|
|
202
|
+
// Every global subscriber is handed the current projection on connect, so a
|
|
203
|
+
// browser never has to reconcile a snapshot fetch against live frames.
|
|
204
|
+
eventHub.setGlobalJoinFrame(() => ({ type: "machine.status", status: machineStatus.snapshot() }));
|
|
205
|
+
// Unread state was loaded from disk above, so the projection is computed
|
|
206
|
+
// once at startup instead of waiting for the first change. It is not
|
|
207
|
+
// awaited: resolving it lists workspaces through provider plugins, and
|
|
208
|
+
// daemon startup must not depend on how long that takes.
|
|
209
|
+
machineStatus.notifyChanged();
|
|
210
|
+
const projectWorkspaceDeps = { projects, workspaces: workspaceProviders };
|
|
211
|
+
const spawnTargets = config.spawnSessions ? new ProjectScopedSpawnTargetResolver(projectWorkspaceDeps) : undefined;
|
|
212
|
+
const sessions = new PiSessionService(eventHub, sessionServiceDependencies({
|
|
213
|
+
modelRuntime: auth.runtime,
|
|
90
214
|
agentDir: activeAgentProfile.dir,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
215
|
+
archiveStore: new SessionArchiveStore(defaultSessionArchiveFilePath(daemonEnvironment)),
|
|
216
|
+
workspaceActivity,
|
|
217
|
+
logger: app.log,
|
|
218
|
+
...(spawnTargets === undefined ? {} : { spawnTargets }),
|
|
219
|
+
subsessionsEnabled: config.subsessions,
|
|
220
|
+
askUserEnabled: config.askUser,
|
|
221
|
+
appendSystemPromptSections: [
|
|
222
|
+
// Sessions always run nested in this daemon, so they always get the
|
|
223
|
+
// session environment facts; Docker deployments add their container
|
|
224
|
+
// facts on top. Resolved once here, from the captured daemon
|
|
225
|
+
// environment, because the deployment cannot change while the daemon
|
|
226
|
+
// runs.
|
|
227
|
+
...sessionEnvironmentPromptSections({
|
|
228
|
+
env: daemonEnvironment,
|
|
229
|
+
enabled: config.environmentFacts,
|
|
230
|
+
}),
|
|
231
|
+
...dockerEnvironmentPromptSections({
|
|
232
|
+
env: daemonEnvironment,
|
|
233
|
+
enabled: config.environmentFacts,
|
|
234
|
+
logger: app.log,
|
|
235
|
+
}),
|
|
236
|
+
],
|
|
237
|
+
extensionDialogsTimeoutMs: config.extensionDialogsTimeoutMs,
|
|
238
|
+
notificationStore,
|
|
239
|
+
unreadStore,
|
|
240
|
+
onUnreadChanged: () => { machineStatus.notifyChanged(); },
|
|
241
|
+
catalogRefreshStatus: catalogRefresher,
|
|
242
|
+
sessionManager: createPiSessionManagerGateway({
|
|
243
|
+
agentDir: activeAgentProfile.dir,
|
|
244
|
+
env: daemonEnvironment,
|
|
245
|
+
}),
|
|
246
|
+
}));
|
|
247
|
+
auth.subscribe((change) => { sessions.applyAuthChange(change); });
|
|
248
|
+
const terminals = new TerminalService(eventHub, workspaceActivity);
|
|
249
|
+
const workspaceRemovals = new WorkspaceRemovalService(workspaceProviders, terminals);
|
|
250
|
+
const runtimeComponent = Object.freeze({
|
|
251
|
+
// The deprecated-input report is fixed at startup: it was detected from
|
|
252
|
+
// the captured pre-scrub daemon environment and the config snapshot this
|
|
253
|
+
// daemon actually honors, so it stays accurate for this daemon lifetime
|
|
254
|
+
// and clears only when the inputs are removed and the daemon restarts.
|
|
255
|
+
...getPiWebRuntimeComponent("sessiond", SESSIOND_RUNTIME_CAPABILITIES, deprecatedAgentInputs),
|
|
256
|
+
activeAgentProfile,
|
|
257
|
+
});
|
|
258
|
+
let disposed = false;
|
|
259
|
+
const shutdown = async () => {
|
|
260
|
+
if (disposed)
|
|
261
|
+
return;
|
|
262
|
+
disposed = true;
|
|
263
|
+
await runSessionDaemonShutdown({
|
|
264
|
+
logger: app.log,
|
|
265
|
+
dependencies: {
|
|
266
|
+
quiesceServer: () => { serverQuiescing = true; },
|
|
267
|
+
serverPlugins,
|
|
268
|
+
terminals,
|
|
269
|
+
catalogRefresher,
|
|
270
|
+
auth,
|
|
271
|
+
sessions,
|
|
272
|
+
unreadStore,
|
|
273
|
+
closeServer: () => app.close(),
|
|
274
|
+
},
|
|
275
|
+
onFailure: () => { process.exitCode = 1; },
|
|
276
|
+
});
|
|
277
|
+
// Release last: the daemon owns the instance state until everything that
|
|
278
|
+
// writes it is down. Best-effort; a leftover marker goes stale and the
|
|
279
|
+
// next start discards it.
|
|
280
|
+
await stateOwnership.release();
|
|
281
|
+
};
|
|
282
|
+
return { eventHub, machineStatus, statusAttribution, auth, sessions, terminals, unreadStore, activeAgentProfile, runtimeComponent, catalogRefresher, serverPlugins, projects, workspaceProviders, workspaceProviderRuntime, workspaceRemovals, shutdown };
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
try {
|
|
286
|
+
await serverPlugins.stop();
|
|
287
|
+
}
|
|
288
|
+
catch (disposeError) {
|
|
289
|
+
app.log.error({ err: disposeError }, "session daemon construction failed and server plugin disposal was incomplete");
|
|
290
|
+
}
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
102
293
|
}
|
|
103
|
-
function registerSessionDaemonRoutes({ eventHub,
|
|
104
|
-
|
|
294
|
+
function registerSessionDaemonRoutes({ eventHub, machineStatus, statusAttribution, auth, sessions, terminals, runtimeComponent, projects, workspaceProviders, workspaceProviderRuntime, workspaceRemovals }) {
|
|
295
|
+
registerMachineStatusRoutes(app, machineStatus);
|
|
105
296
|
registerAuthRoutes(app, auth);
|
|
106
297
|
registerSessionRoutes(app, sessions, eventHub);
|
|
107
298
|
registerTerminalRoutes(app, terminals);
|
|
299
|
+
registerWorkspaceCatalogRoutes(app, {
|
|
300
|
+
projects,
|
|
301
|
+
workspaces: workspaceProviders,
|
|
302
|
+
providerRuntime: workspaceProviderRuntime,
|
|
303
|
+
});
|
|
304
|
+
registerPluginBackendRoutes(app, {
|
|
305
|
+
projects,
|
|
306
|
+
backends: workspaceProviders,
|
|
307
|
+
onWorkspacesMutated: () => { statusAttribution.invalidate(); },
|
|
308
|
+
});
|
|
309
|
+
registerWorkspaceRemovalRoutes(app, {
|
|
310
|
+
projects,
|
|
311
|
+
removals: workspaceRemovals,
|
|
312
|
+
onWorkspacesMutated: () => { statusAttribution.invalidate(); },
|
|
313
|
+
});
|
|
108
314
|
app.get("/health", () => ({
|
|
109
315
|
ok: true,
|
|
110
316
|
activeSessions: sessions.activeCount(),
|
|
@@ -119,31 +325,12 @@ function registerSessionDaemonRoutes({ eventHub, workspaceActivity, auth, sessio
|
|
|
119
325
|
}));
|
|
120
326
|
app.get("/runtime", () => runtimeComponent);
|
|
121
327
|
}
|
|
122
|
-
async function listenSessionDaemon({
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
shuttingDown = true;
|
|
128
|
-
app.log.info({ signal }, "shutting down session daemon");
|
|
129
|
-
const attempt = async (operation, run) => {
|
|
130
|
-
try {
|
|
131
|
-
await run();
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
process.exitCode = 1;
|
|
135
|
-
app.log.error({ err: error, operation }, "session daemon shutdown operation failed");
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
await attempt("dispose terminals", () => { terminals.dispose(); });
|
|
139
|
-
await attempt("dispose catalog refresher", () => { catalogRefresher.dispose(); });
|
|
140
|
-
await attempt("dispose auth", () => { auth.dispose(); });
|
|
141
|
-
await attempt("dispose sessions", () => sessions.dispose());
|
|
142
|
-
await attempt("flush session unread state", () => unreadStore.flush());
|
|
143
|
-
await attempt("close server", () => app.close());
|
|
328
|
+
async function listenSessionDaemon({ shutdown }) {
|
|
329
|
+
runtimeShutdown = shutdown;
|
|
330
|
+
if (pendingShutdownSignal !== undefined) {
|
|
331
|
+
await requestShutdown(pendingShutdownSignal);
|
|
332
|
+
return;
|
|
144
333
|
}
|
|
145
|
-
process.once("SIGINT", (signal) => { void shutdown(signal); });
|
|
146
|
-
process.once("SIGTERM", (signal) => { void shutdown(signal); });
|
|
147
334
|
const portValue = daemonEnvironment["PI_WEB_SESSIOND_PORT"];
|
|
148
335
|
const port = portValue !== undefined && portValue !== "" ? Number(portValue) : undefined;
|
|
149
336
|
const host = daemonEnvironment["PI_WEB_SESSIOND_HOST"] ?? "127.0.0.1";
|
|
@@ -151,7 +338,7 @@ async function listenSessionDaemon({ auth, sessions, terminals, unreadStore, cat
|
|
|
151
338
|
await app.listen({ port, host });
|
|
152
339
|
}
|
|
153
340
|
else {
|
|
154
|
-
const path = sessiondSocketPath();
|
|
341
|
+
const path = sessiondSocketPath(daemonEnvironment);
|
|
155
342
|
await mkdir(dirname(path), { recursive: true });
|
|
156
343
|
await rm(path, { force: true });
|
|
157
344
|
await app.listen({ path });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessiond.js","sourceRoot":"","sources":["../../src/server/sessiond.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessiond.js","sourceRoot":"","sources":["../../src/server/sessiond.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,9 +52,6 @@ function toQuestion(param) {
|
|
|
52
52
|
question: param.question,
|
|
53
53
|
...(detail === undefined ? {} : { detail }),
|
|
54
54
|
options: (options ?? []).map(toOption),
|
|
55
|
-
// Keep the compatibility marker on the daemon wire even though the model no
|
|
56
|
-
// longer chooses whether a question accepts a custom answer.
|
|
57
|
-
allowOther: true,
|
|
58
55
|
...(multiple === undefined ? {} : { multiple }),
|
|
59
56
|
};
|
|
60
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"askUserTool.js","sourceRoot":"","sources":["../../../src/server/sessions/askUserTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,GAGzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAA6B,MAAM,sBAAsB,CAAC;AAe1F,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,sBAAsB;QACjC,WAAW,EAAE,4EAA4E;KAC1F,CAAC;IACF,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,wBAAwB;QACnC,WAAW,EAAE,kDAAkD;KAChE,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,SAAS,EAAE,wBAAwB;QACnC,WAAW,EAAE,+CAA+C;KAC7D,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,sBAAsB;QACjC,WAAW,EAAE,uEAAuE;KACrF,CAAC;IACF,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,wBAAwB;QACnC,WAAW,EAAE,8CAA8C;KAC5D,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,SAAS,EAAE,wBAAwB;QACnC,WAAW,EAAE,uDAAuD;KACrE,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;QACrD,QAAQ,EAAE,qBAAqB;QAC/B,WAAW,EAAE,2GAA2G;KACzH,CAAC,CAAC;IACH,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,WAAW,EAAE,kEAAkE;KAChF,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;QAC3C,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE,uGAAuG;KACrH,CAAC;CACH,CAAC,CAAC;AAEH,sFAAsF;AACtF,SAAS,UAAU,CAAC,KAA2C;IAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC5C,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QACtC,
|
|
1
|
+
{"version":3,"file":"askUserTool.js","sourceRoot":"","sources":["../../../src/server/sessions/askUserTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,16 +7,6 @@ export function registerAuthRoutes(app, auth, prefix = "") {
|
|
|
7
7
|
return reply.code(404).send({ error: error instanceof Error ? error.message : String(error) });
|
|
8
8
|
}
|
|
9
9
|
});
|
|
10
|
-
app.post(`${prefix}/auth/api-key`, async (request, reply) => {
|
|
11
|
-
try {
|
|
12
|
-
return await auth.saveApiKey(request.body.providerId, request.body.key);
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
// Additive endpoint for newer browsers; the one-secret route remains for
|
|
19
|
-
// rolling compatibility with older browser bundles.
|
|
20
10
|
app.post(`${prefix}/auth/api-key/interactive`, async (request, reply) => {
|
|
21
11
|
try {
|
|
22
12
|
return await auth.startApiKeyLogin(request.body.providerId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/authRoutes.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,IAAiB,EAAE,MAAM,GAAG,EAAE;IACrF,GAAG,CAAC,GAAG,CAAiF,GAAG,MAAM,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3I,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"authRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/authRoutes.ts"],"names":[],"mappings":"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"}
|