@jmfederico/pi-web 1.202608.0 → 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.
Files changed (216) hide show
  1. package/README.md +4 -4
  2. package/dist/cli.js +69 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/assets/{CodeViewer-D91Sp61M.js → CodeViewer-mEiBZFA5.js} +2 -2
  5. package/dist/client/assets/{TerminalPanel-fYrKc3jh.js → TerminalPanel-O9381Eme.js} +6 -6
  6. package/dist/client/assets/index-uI2AGFUy.js +4091 -0
  7. package/dist/client/index.html +1 -1
  8. package/dist/config.js +109 -73
  9. package/dist/config.js.map +1 -1
  10. package/dist/docker/piWebDockerCommandPlan.js +4 -3
  11. package/dist/docker/piWebDockerCommandPlan.js.map +1 -1
  12. package/dist/nativeServices/servicePlan.js +1 -1
  13. package/dist/nativeServices/servicePlan.js.map +1 -1
  14. package/dist/pi-web-plugins/git/browser/git-contract.js +108 -0
  15. package/dist/pi-web-plugins/git/browser/git-panel.js +609 -0
  16. package/dist/pi-web-plugins/git/browser/gitFileList.js +43 -0
  17. package/dist/pi-web-plugins/git/browser/gitFileShared.js +16 -0
  18. package/dist/pi-web-plugins/git/browser/gitFileTree.js +81 -0
  19. package/dist/pi-web-plugins/git/browser/gitFileViewPreference.js +35 -0
  20. package/dist/pi-web-plugins/git/browser/gitRoute.js +42 -0
  21. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +10 -0
  22. package/dist/pi-web-plugins/git/browser/unifiedDiff.js +301 -0
  23. package/dist/{server/git/gitService.js → pi-web-plugins/git/git-backend.js} +209 -60
  24. package/dist/pi-web-plugins/git/package.json +16 -0
  25. package/dist/pi-web-plugins/git/server-plugin.js +176 -0
  26. package/dist/pi-web-plugins/info/infoInternals.js +1 -2
  27. package/dist/pi-web-plugins/info/package.json +1 -1
  28. package/dist/pi-web-plugins/info/pi-web-plugin.js +2 -2
  29. package/dist/pi-web-plugins/relays/package.json +1 -1
  30. package/dist/pi-web-plugins/relays/pi-web-plugin.js +3 -3
  31. package/dist/pi-web-plugins/updates/package.json +1 -1
  32. package/dist/pi-web-plugins/updates/pi-web-plugin.js +1 -1
  33. package/dist/pi-web-plugins/workspace-tasks/package.json +1 -1
  34. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +3 -3
  35. package/dist/plugin-api.d.ts +33 -16
  36. package/dist/pluginRecoveryCli.js +172 -0
  37. package/dist/pluginRecoveryCli.js.map +1 -0
  38. package/dist/server/activity/workspaceActivityService.js +27 -19
  39. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  40. package/dist/server/app.js +35 -15
  41. package/dist/server/app.js.map +1 -1
  42. package/dist/server/configRoutes.js +3 -21
  43. package/dist/server/configRoutes.js.map +1 -1
  44. package/dist/server/machines/machineClient.js +23 -4
  45. package/dist/server/machines/machineClient.js.map +1 -1
  46. package/dist/server/machines/machinePluginProxyRoutes.js +74 -17
  47. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  48. package/dist/server/machines/machineProxyRoutes.js +165 -8
  49. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  50. package/dist/server/machines/machineService.js +22 -0
  51. package/dist/server/machines/machineService.js.map +1 -1
  52. package/dist/server/piWebPluginCatalog.js +584 -0
  53. package/dist/server/piWebPluginCatalog.js.map +1 -0
  54. package/dist/server/piWebPluginLifecycle.js +162 -0
  55. package/dist/server/piWebPluginLifecycle.js.map +1 -0
  56. package/dist/server/piWebPluginService.js +159 -261
  57. package/dist/server/piWebPluginService.js.map +1 -1
  58. package/dist/server/piWebStatus.js +28 -7
  59. package/dist/server/piWebStatus.js.map +1 -1
  60. package/dist/server/plugins/pluginBackendProxyRoutes.js +69 -0
  61. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -0
  62. package/dist/server/plugins/serverPluginExec.js +184 -0
  63. package/dist/server/plugins/serverPluginExec.js.map +1 -0
  64. package/dist/server/plugins/serverPluginRuntime.js +480 -0
  65. package/dist/server/plugins/serverPluginRuntime.js.map +1 -0
  66. package/dist/server/realtime/sessionEventHub.js +26 -11
  67. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  68. package/dist/server/requestCancellation.js +32 -0
  69. package/dist/server/requestCancellation.js.map +1 -0
  70. package/dist/server/sessiond/agentProcessEnvironment.js +29 -30
  71. package/dist/server/sessiond/agentProcessEnvironment.js.map +1 -1
  72. package/dist/server/sessiond/pluginBackendRoutes.js +64 -0
  73. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -0
  74. package/dist/server/sessiond/sessionDaemonShutdown.js +24 -0
  75. package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -0
  76. package/dist/server/sessiond/sessionProxyRoutes.js +2 -2
  77. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  78. package/dist/server/sessiond/sessionServiceDependencies.js +2 -1
  79. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  80. package/dist/server/sessiond/sessiondStateOwnership.js +235 -0
  81. package/dist/server/sessiond/sessiondStateOwnership.js.map +1 -0
  82. package/dist/server/sessiond/workspaceCatalogRoutes.js +31 -0
  83. package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -0
  84. package/dist/server/sessiond/workspaceRemovalRoutes.js +41 -0
  85. package/dist/server/sessiond/workspaceRemovalRoutes.js.map +1 -0
  86. package/dist/server/sessiond.js +265 -99
  87. package/dist/server/sessiond.js.map +1 -1
  88. package/dist/server/sessions/authService.js +15 -54
  89. package/dist/server/sessions/authService.js.map +1 -1
  90. package/dist/server/sessions/dockerEnvironmentFacts.js +254 -0
  91. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -0
  92. package/dist/server/sessions/modelCatalogRefresher.js +4 -3
  93. package/dist/server/sessions/modelCatalogRefresher.js.map +1 -1
  94. package/dist/server/sessions/piSessionManagerGateway.js +18 -67
  95. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  96. package/dist/server/sessions/piSessionService.js +141 -134
  97. package/dist/server/sessions/piSessionService.js.map +1 -1
  98. package/dist/server/sessions/sessionCommandService.js +24 -1
  99. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  100. package/dist/server/sessions/sessionEnvironmentFacts.js +48 -0
  101. package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -0
  102. package/dist/server/sessions/sessionFileFormat.js +27 -0
  103. package/dist/server/sessions/sessionFileFormat.js.map +1 -0
  104. package/dist/server/sessions/sessionFileHeader.js +1 -14
  105. package/dist/server/sessions/sessionFileHeader.js.map +1 -1
  106. package/dist/server/sessions/sessionRoutes.js +14 -0
  107. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  108. package/dist/server/sessions/sessionSummaryScanner.js +96 -224
  109. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
  110. package/dist/server/sessions/spawnSubsessionTool.js +5 -9
  111. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  112. package/dist/server/sessions/spawnTargetResolver.js +1 -1
  113. package/dist/server/status/machineStatusRoutes.js +8 -0
  114. package/dist/server/status/machineStatusRoutes.js.map +1 -0
  115. package/dist/server/status/machineStatusService.js +181 -0
  116. package/dist/server/status/machineStatusService.js.map +1 -0
  117. package/dist/server/status/workspaceAttribution.js +87 -0
  118. package/dist/server/status/workspaceAttribution.js.map +1 -0
  119. package/dist/server/terminalProxyRoutes.js +2 -1
  120. package/dist/server/terminalProxyRoutes.js.map +1 -1
  121. package/dist/server/workspaceExplorerRoutes.js +20 -13
  122. package/dist/server/workspaceExplorerRoutes.js.map +1 -1
  123. package/dist/server/workspaces/fileContentService.js +18 -9
  124. package/dist/server/workspaces/fileContentService.js.map +1 -1
  125. package/dist/server/workspaces/filePreviewResponseHeaders.js +18 -0
  126. package/dist/server/workspaces/filePreviewResponseHeaders.js.map +1 -0
  127. package/dist/server/workspaces/filePreviewResponsePolicy.js +55 -0
  128. package/dist/server/workspaces/filePreviewResponsePolicy.js.map +1 -0
  129. package/dist/server/workspaces/filePreviewService.js +81 -0
  130. package/dist/server/workspaces/filePreviewService.js.map +1 -0
  131. package/dist/server/workspaces/projectWorkspaceCwds.js +0 -5
  132. package/dist/server/workspaces/projectWorkspaceCwds.js.map +1 -1
  133. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +402 -0
  134. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -0
  135. package/dist/server/workspaces/workspaceCatalog.js +47 -0
  136. package/dist/server/workspaces/workspaceCatalog.js.map +1 -0
  137. package/dist/server/workspaces/workspaceContext.js +1 -3
  138. package/dist/server/workspaces/workspaceContext.js.map +1 -1
  139. package/dist/server/workspaces/workspaceDeletionRoutes.js +35 -125
  140. package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -1
  141. package/dist/server/workspaces/workspaceProviderRegistry.js +651 -0
  142. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -0
  143. package/dist/server/workspaces/workspaceRemovalService.js +256 -0
  144. package/dist/server/workspaces/workspaceRemovalService.js.map +1 -0
  145. package/dist/server/workspaces/workspaceRouteErrors.js +7 -0
  146. package/dist/server/workspaces/workspaceRouteErrors.js.map +1 -0
  147. package/dist/server/workspaces/worktreePreRemoveHook.js +39 -0
  148. package/dist/server/workspaces/worktreePreRemoveHook.js.map +1 -0
  149. package/dist/server-plugin-api.d.ts +140 -0
  150. package/dist/server-plugin-api.js +2 -0
  151. package/dist/server-plugin-api.js.map +1 -0
  152. package/dist/serverPluginRecovery.js +138 -0
  153. package/dist/serverPluginRecovery.js.map +1 -0
  154. package/dist/sessiond/activeAgentProfile.js +3 -22
  155. package/dist/sessiond/activeAgentProfile.js.map +1 -1
  156. package/dist/sessiond/config.js +11 -0
  157. package/dist/sessiond/config.js.map +1 -1
  158. package/dist/sessiond/sessionDaemonClient.js +11 -9
  159. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  160. package/dist/shared/activeAgentProfile.js +2 -41
  161. package/dist/shared/activeAgentProfile.js.map +1 -1
  162. package/dist/shared/activity.js +0 -3
  163. package/dist/shared/activity.js.map +1 -1
  164. package/dist/shared/apiTypes.js +7 -5
  165. package/dist/shared/apiTypes.js.map +1 -1
  166. package/dist/shared/capabilities.js +8 -6
  167. package/dist/shared/capabilities.js.map +1 -1
  168. package/dist/shared/federatedRoutes.js +28 -5
  169. package/dist/shared/federatedRoutes.js.map +1 -1
  170. package/dist/shared/machinePluginIds.js +4 -2
  171. package/dist/shared/machinePluginIds.js.map +1 -1
  172. package/dist/shared/machineStatus.js +94 -0
  173. package/dist/shared/machineStatus.js.map +1 -0
  174. package/dist/shared/piWebStatusParsing.js +29 -0
  175. package/dist/shared/piWebStatusParsing.js.map +1 -1
  176. package/dist/shared/pluginApiTypes.d.ts +148 -0
  177. package/dist/shared/pluginApiTypes.js +3 -0
  178. package/dist/shared/pluginApiTypes.js.map +1 -0
  179. package/dist/shared/pluginBackendProtocol.js +110 -0
  180. package/dist/shared/pluginBackendProtocol.js.map +1 -0
  181. package/dist/shared/pluginIds.js +5 -0
  182. package/dist/shared/pluginIds.js.map +1 -1
  183. package/dist/shared/pluginRecoveryCommands.js +14 -0
  184. package/dist/shared/pluginRecoveryCommands.js.map +1 -0
  185. package/dist/shared/workspaceFiles.js +41 -2
  186. package/dist/shared/workspaceFiles.js.map +1 -1
  187. package/dist/shared/workspaceRemovalProtocol.js +24 -0
  188. package/dist/shared/workspaceRemovalProtocol.js.map +1 -0
  189. package/docs/config.md +89 -51
  190. package/docs/plugins.md +383 -136
  191. package/examples/workspace-provider-plugin/README.md +52 -0
  192. package/examples/workspace-provider-plugin/package.json +25 -0
  193. package/examples/workspace-provider-plugin/src/browser/index.ts +69 -0
  194. package/examples/workspace-provider-plugin/src/server.ts +64 -0
  195. package/examples/workspace-provider-plugin/tsconfig.json +21 -0
  196. package/package.json +29 -10
  197. package/server-plugin-api.d.ts +1 -0
  198. package/dist/client/assets/UnifiedDiffViewer-BafLWGtF.js +0 -39
  199. package/dist/client/assets/index-CA8q9_o7.js +0 -4025
  200. package/dist/plugin-api/unstable.d.ts +0 -22
  201. package/dist/server/activity/workspaceActivityRoutes.js +0 -4
  202. package/dist/server/activity/workspaceActivityRoutes.js.map +0 -1
  203. package/dist/server/git/gitService.js.map +0 -1
  204. package/dist/server/gitRoutes.js +0 -23
  205. package/dist/server/gitRoutes.js.map +0 -1
  206. package/dist/server/sessions/parentSessionLocator.js +0 -75
  207. package/dist/server/sessions/parentSessionLocator.js.map +0 -1
  208. package/dist/server/workspaces/gitWorktreeDiscovery.js +0 -43
  209. package/dist/server/workspaces/gitWorktreeDiscovery.js.map +0 -1
  210. package/dist/server/workspaces/imagePreviewService.js +0 -40
  211. package/dist/server/workspaces/imagePreviewService.js.map +0 -1
  212. package/dist/server/workspaces/workspaceService.js +0 -52
  213. package/dist/server/workspaces/workspaceService.js.map +0 -1
  214. package/dist/shared/apiTypes.d.ts +0 -1217
  215. package/dist/shared/thinkingLevels.d.ts +0 -27
  216. package/plugin-api/unstable.d.ts +0 -1
@@ -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 { registerWorkspaceActivityRoutes } from "./activity/workspaceActivityRoutes.js";
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";
@@ -17,39 +19,120 @@ import { SessionNotificationStore } from "./sessions/sessionNotificationStore.js
17
19
  import { SessionArchiveStore, defaultSessionArchiveFilePath } from "./sessions/sessionArchiveStore.js";
18
20
  import { FileSessionUnreadPersistence, SessionUnreadStore, defaultSessionUnreadFilePath } from "./sessions/sessionUnreadStore.js";
19
21
  import { ProjectScopedSpawnTargetResolver } from "./sessions/spawnTargetResolver.js";
20
- import { RegisteredProjectWorkspaceCwds } from "./workspaces/projectWorkspaceCwds.js";
21
22
  import { ProjectService } from "./projects/projectService.js";
22
23
  import { ProjectStore, projectStorePath } from "./storage/projectStore.js";
23
- import { WorkspaceService } from "./workspaces/workspaceService.js";
24
+ import { eligibleWorkspaceProviderContributions, WorkspaceProviderRegistry, } from "./workspaces/workspaceProviderRegistry.js";
24
25
  import { sessiondSocketPath } from "../sessiond/config.js";
25
26
  import { TerminalService } from "./terminals/terminalService.js";
26
27
  import { registerTerminalRoutes } from "./terminals/terminalRoutes.js";
27
28
  import { getPiWebRuntimeComponent } from "./piWebStatus.js";
28
29
  import { SESSIOND_RUNTIME_CAPABILITIES } from "../shared/capabilities.js";
29
- import { agentSessionDirEnvKeys, effectivePiWebConfig, maxUploadBytes, offlineModeEnabled } from "../config.js";
30
+ import { agentSessionDirEnvOverride, effectivePiWebConfig, maxUploadBytes, offlineModeEnabled, PI_CODING_AGENT_DIR_ENV, PI_CODING_AGENT_SESSION_DIR_ENV } from "../config.js";
30
31
  import { createActiveAgentProfileDescriptor } from "../sessiond/activeAgentProfile.js";
32
+ import { loadServerPluginRecoveryConfig } from "../serverPluginRecovery.js";
33
+ import { PiWebPluginCatalog } from "./piWebPluginCatalog.js";
31
34
  import { applyAgentHttpIdleTimeout } from "./sessiond/agentHttpDispatcher.js";
32
- import { sessionServiceDependencies } from "./sessiond/sessionServiceDependencies.js";
33
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";
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";
34
48
  const daemonEnvironment = Object.freeze({ ...process.env });
35
- const { config } = effectivePiWebConfig({ env: daemonEnvironment });
36
- const activeAgentProfile = createActiveAgentProfileDescriptor({
37
- command: config.agent.command,
38
- dir: config.agent.dir,
39
- sessionDirEnvKeys: agentSessionDirEnvKeys(config.agent.command),
40
- });
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";
41
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
+ }
42
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); });
43
106
  // Agent-executed processes (bash tool, terminals, subsessions) are spawned from
44
- // this process and inherit its environment, so hide the daemon's own
45
- // configuration keys before any of them can start. The daemon keeps using the
46
- // captured daemonEnvironment above; its runtime stores resolve their paths from
47
- // it explicitly below.
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.
48
113
  const scrubbedEnvKeys = scrubNonAgentVisibleEnvKeys(process.env);
49
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 });
50
122
  const runtime = await createSessionDaemonRuntime();
51
- registerSessionDaemonRoutes(runtime);
52
- await listenSessionDaemon(runtime);
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
+ }
53
136
  async function createSessionDaemonRuntime() {
54
137
  // Apply the active agent profile's httpIdleTimeoutMs before any other
55
138
  // startup work so even catalog-refresh fetches run under the configured
@@ -61,71 +144,173 @@ async function createSessionDaemonRuntime() {
61
144
  else {
62
145
  app.log.info({ httpIdleTimeoutMs: appliedHttpIdleTimeout.timeoutMs }, "applied agent profile HTTP idle timeout to the session daemon HTTP stack");
63
146
  }
64
- const eventHub = new SessionEventHub();
65
- const notificationStore = new SessionNotificationStore();
66
- const unreadStore = new SessionUnreadStore({
67
- persistence: new FileSessionUnreadPersistence(defaultSessionUnreadFilePath(daemonEnvironment)),
68
- onPersistenceError(operation, error) {
69
- app.log.error({ err: error, operation }, "session unread persistence failed");
70
- },
71
- });
72
- await unreadStore.load();
73
- const workspaceActivity = new WorkspaceActivityService(eventHub);
74
- const auth = await AuthService.create({ agentDir: activeAgentProfile.dir, logger: app.log });
75
- // Capture providers registered by global extensions while the runtime is
76
- // still mutable, then freeze every later extension-provider mutation before
77
- // any real session can load project resources.
78
- await bootstrapAndFreezeGlobalExtensionProviders(auth.runtime, activeAgentProfile.dir, app.log);
79
- // The shared model runtime is constructed offline so request paths never
80
- // wait on provider-catalog fetches; this is the single bounded network
81
- // refresher, and auth changes (login/logout) ask it for a prompt run. It
82
- // stays fully inert when the operator asked for offline behavior.
83
- const catalogRefresher = new ModelCatalogRefresher({
84
- runtime: auth.runtime,
147
+ const serverPlugins = await createServerPluginRuntime({
148
+ catalog: serverPluginCatalog,
149
+ ...(serverPluginRecovery.safeStart === undefined ? {} : { safeStart: serverPluginRecovery.safeStart }),
85
150
  logger: app.log,
86
- offline: offlineModeEnabled(daemonEnvironment),
151
+ execFile: createServerPluginExecFile({ env: daemonEnvironment }),
87
152
  });
88
- catalogRefresher.start();
89
- auth.subscribe(() => { catalogRefresher.requestRefresh(); });
90
- // Cross-workspace session relationships are reported regardless of whether
91
- // agents may spawn sessions: children can predate a config change, and the
92
- // session tree should stay honest about them either way.
93
- const projectWorkspaceDeps = { projects: new ProjectService(new ProjectStore(projectStorePath(daemonEnvironment))), workspaces: new WorkspaceService() };
94
- const projectWorkspaces = new RegisteredProjectWorkspaceCwds(projectWorkspaceDeps);
95
- const spawnTargets = config.spawnSessions ? new ProjectScopedSpawnTargetResolver(projectWorkspaceDeps) : undefined;
96
- const sessions = new PiSessionService(eventHub, sessionServiceDependencies({
97
- modelRuntime: auth.runtime,
98
- agentDir: activeAgentProfile.dir,
99
- archiveStore: new SessionArchiveStore(defaultSessionArchiveFilePath(daemonEnvironment)),
100
- workspaceActivity,
101
- logger: app.log,
102
- ...(spawnTargets === undefined ? {} : { spawnTargets }),
103
- projectWorkspaces,
104
- subsessionsEnabled: config.subsessions,
105
- askUserEnabled: config.askUser,
106
- extensionDialogsTimeoutMs: config.extensionDialogsTimeoutMs,
107
- notificationStore,
108
- unreadStore,
109
- catalogRefreshStatus: catalogRefresher,
110
- sessionManager: createPiSessionManagerGateway({
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,
111
214
  agentDir: activeAgentProfile.dir,
112
- env: daemonEnvironment,
113
- sessionDirEnvKeys: activeAgentProfile.sessionDirEnvKeys,
114
- }),
115
- }));
116
- auth.subscribe((change) => { sessions.applyAuthChange(change); });
117
- const terminals = new TerminalService(eventHub, workspaceActivity);
118
- const runtimeComponent = Object.freeze({
119
- ...getPiWebRuntimeComponent("sessiond", SESSIOND_RUNTIME_CAPABILITIES),
120
- activeAgentProfile,
121
- });
122
- return { eventHub, workspaceActivity, auth, sessions, terminals, unreadStore, activeAgentProfile, runtimeComponent, catalogRefresher };
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
+ }
123
293
  }
124
- function registerSessionDaemonRoutes({ eventHub, workspaceActivity, auth, sessions, terminals, runtimeComponent }) {
125
- registerWorkspaceActivityRoutes(app, workspaceActivity);
294
+ function registerSessionDaemonRoutes({ eventHub, machineStatus, statusAttribution, auth, sessions, terminals, runtimeComponent, projects, workspaceProviders, workspaceProviderRuntime, workspaceRemovals }) {
295
+ registerMachineStatusRoutes(app, machineStatus);
126
296
  registerAuthRoutes(app, auth);
127
297
  registerSessionRoutes(app, sessions, eventHub);
128
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
+ });
129
314
  app.get("/health", () => ({
130
315
  ok: true,
131
316
  activeSessions: sessions.activeCount(),
@@ -140,31 +325,12 @@ function registerSessionDaemonRoutes({ eventHub, workspaceActivity, auth, sessio
140
325
  }));
141
326
  app.get("/runtime", () => runtimeComponent);
142
327
  }
143
- async function listenSessionDaemon({ auth, sessions, terminals, unreadStore, catalogRefresher }) {
144
- let shuttingDown = false;
145
- async function shutdown(signal) {
146
- if (shuttingDown)
147
- return;
148
- shuttingDown = true;
149
- app.log.info({ signal }, "shutting down session daemon");
150
- const attempt = async (operation, run) => {
151
- try {
152
- await run();
153
- }
154
- catch (error) {
155
- process.exitCode = 1;
156
- app.log.error({ err: error, operation }, "session daemon shutdown operation failed");
157
- }
158
- };
159
- await attempt("dispose terminals", () => { terminals.dispose(); });
160
- await attempt("dispose catalog refresher", () => { catalogRefresher.dispose(); });
161
- await attempt("dispose auth", () => { auth.dispose(); });
162
- await attempt("dispose sessions", () => sessions.dispose());
163
- await attempt("flush session unread state", () => unreadStore.flush());
164
- await attempt("close server", () => app.close());
328
+ async function listenSessionDaemon({ shutdown }) {
329
+ runtimeShutdown = shutdown;
330
+ if (pendingShutdownSignal !== undefined) {
331
+ await requestShutdown(pendingShutdownSignal);
332
+ return;
165
333
  }
166
- process.once("SIGINT", (signal) => { void shutdown(signal); });
167
- process.once("SIGTERM", (signal) => { void shutdown(signal); });
168
334
  const portValue = daemonEnvironment["PI_WEB_SESSIOND_PORT"];
169
335
  const port = portValue !== undefined && portValue !== "" ? Number(portValue) : undefined;
170
336
  const host = daemonEnvironment["PI_WEB_SESSIOND_HOST"] ?? "127.0.0.1";
@@ -1 +1 @@
1
- {"version":3,"file":"sessiond.js","sourceRoot":"","sources":["../../src/server/sessiond.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAClI,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAEpF,MAAM,iBAAiB,GAAsB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACpE,MAAM,kBAAkB,GAAG,kCAAkC,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;IAC7B,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;IACrB,iBAAiB,EAAE,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAChE,CAAC,CAAC;AACH,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5F,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAErC,gFAAgF;AAChF,qEAAqE;AACrE,8EAA8E;AAC9E,gFAAgF;AAChF,uBAAuB;AACvB,MAAM,eAAe,GAAG,2BAA2B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,EAAE,0DAA0D,CAAC,CAAC;AAE9F,MAAM,OAAO,GAAG,MAAM,0BAA0B,EAAE,CAAC;AACnD,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAInC,KAAK,UAAU,0BAA0B;IACvC,sEAAsE;IACtE,wEAAwE;IACxE,mCAAmC;IACnC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnH,IAAI,sBAAsB,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,SAAS,EAAE,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,SAAS,EAAE,EAAE,0EAA0E,CAAC,CAAC;IACpJ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC;QACzC,WAAW,EAAE,IAAI,4BAA4B,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;QAC9F,kBAAkB,CAAC,SAAS,EAAE,KAAK;YACjC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,mCAAmC,CAAC,CAAC;QAChF,CAAC;KACF,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7F,yEAAyE;IACzE,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,0CAA0C,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAChG,yEAAyE;IACzE,uEAAuE;IACvE,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,CAAC;QACjD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,GAAG,CAAC,GAAG;QACf,OAAO,EAAE,kBAAkB,CAAC,iBAAiB,CAAC;KAC/C,CAAC,CAAC;IACH,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,2EAA2E;IAC3E,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,oBAAoB,GAAG,EAAE,QAAQ,EAAE,IAAI,cAAc,CAAC,IAAI,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,gBAAgB,EAAE,EAAE,CAAC;IACzJ,MAAM,iBAAiB,GAAG,IAAI,8BAA8B,CAAC,oBAAoB,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,gCAAgC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnH,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,CAAC;QACzE,YAAY,EAAE,IAAI,CAAC,OAAO;QAC1B,QAAQ,EAAE,kBAAkB,CAAC,GAAG;QAChC,YAAY,EAAE,IAAI,mBAAmB,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;QACvF,iBAAiB;QACjB,MAAM,EAAE,GAAG,CAAC,GAAG;QACf,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,iBAAiB;QACjB,kBAAkB,EAAE,MAAM,CAAC,WAAW;QACtC,cAAc,EAAE,MAAM,CAAC,OAAO;QAC9B,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,iBAAiB;QACjB,WAAW;QACX,oBAAoB,EAAE,gBAAgB;QACtC,cAAc,EAAE,6BAA6B,CAAC;YAC5C,QAAQ,EAAE,kBAAkB,CAAC,GAAG;YAChC,GAAG,EAAE,iBAAiB;YACtB,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;SACxD,CAAC;KACH,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,GAAG,wBAAwB,CAAC,UAAU,EAAE,6BAA6B,CAAC;QACtE,kBAAkB;KACnB,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AACzI,CAAC;AAED,SAAS,2BAA2B,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAwB;IACrI,+BAA+B,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACxD,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/C,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAEvC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,IAAI;QACR,cAAc,EAAE,QAAQ,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO,EAAE;YACP,SAAS,EAAE,gBAAgB,CAAC,SAAS;YACrC,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,GAAG,CAAC,gBAAgB,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE,CAAC;YAC7G,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,gBAAgB,CAAC,SAAS;SACtC;KACF,CAAC,CAAC,CAAC;IAEJ,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAwB;IACnH,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,UAAU,QAAQ,CAAC,MAAsB;QAC5C,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,KAAK,EAAE,SAAiB,EAAE,GAA+B,EAAiB,EAAE;YAC1F,IAAI,CAAC;gBACH,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,0CAA0C,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC;QACF,MAAM,OAAO,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,CAAC,2BAA2B,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,IAAI,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,WAAW,CAAC;IAEtE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"sessiond.js","sourceRoot":"","sources":["../../src/server/sessiond.ts"],"names":[],"mappings":"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"}
@@ -4,61 +4,22 @@ import { getLoginProviderOptions, getLogoutProviderOptions } from "./authProvide
4
4
  import { OAuthLoginFlowService } from "./oauthLoginFlowService.js";
5
5
  const noopLogger = { error() { } };
6
6
  /**
7
- * Serializes the `PI_OFFLINE` windows below, which is what keeps their
8
- * save/restore pairs properly nested. Two overlapping calls would otherwise both
9
- * capture the forced `"1"` and restore it, leaving the whole process offline
10
- * permanently. Owned by this module only; nothing else may mutate it.
11
- */
12
- let offlineRuntimeCreations = Promise.resolve();
13
- /**
14
- * Create the shared model runtime with runtime-owned network refreshes disabled.
15
- *
16
- * Upstream `ModelRuntime.refresh()`, `login()`, and `logout()` always refresh
17
- * with `allowNetwork: modelNetworkEnabled` by default, and `login()`/`logout()`
18
- * accept no abort signal. With the default (`PI_OFFLINE` unset) a single stalled
19
- * provider-catalog fetch can block those call paths for minutes — and, because
20
- * pi-web shares one runtime and pi coalesces per-provider refreshes, session
21
- * creation joins the same stalled fetch. Forcing `PI_OFFLINE` during construction makes every runtime-driven
22
- * refresh local-only; pi-web performs its own bounded catalog refreshes in the
23
- * background instead (see modelCatalogRefresher.ts).
24
- *
25
- * `modelNetworkEnabled` is computed once from the environment inside
26
- * `ModelRuntime.create()`, so the env var is the only lever upstream exposes.
27
- * Calls are queued so their env windows never overlap.
28
- */
29
- function createOfflineModelRuntime(options) {
30
- const created = offlineRuntimeCreations.then(() => forceOfflineWhile(() => ModelRuntime.create(options)));
31
- // A failed creation must not poison the queue; the caller still sees the rejection.
32
- offlineRuntimeCreations = created.then(() => undefined, () => undefined);
33
- return created;
34
- }
35
- /**
36
- * Force `PI_OFFLINE` for the duration of `create`, then restore what was there.
7
+ * Model-runtime network policy for the shared runtime.
37
8
  *
38
- * `process.env` is process-wide, so this window is a real global side effect:
39
- * anything reading `PI_OFFLINE` while `create` awaits observes offline mode,
40
- * including upstream's package manager, tools manager, and version check. That
41
- * is acceptable because pi-web only builds runtimes during daemon startup and in
42
- * tests, and the window is one `ModelRuntime.create()` call — but it is why
43
- * callers must stay serialized rather than run concurrently.
9
+ * Pi 0.84 made every runtime-owned refresh local-only: `ModelRuntime.create()`
10
+ * fetches catalogs over the network only when `allowModelNetwork: true`, and
11
+ * `login()`/`logout()`/runtime-API-key mutations synchronize provider state
12
+ * with a hard-coded `allowNetwork: false`, provider-scoped and abortable.
13
+ * Pi-web's own request-path refreshes pass `allowNetwork: false` explicitly
14
+ * (see below), so no request path can stall on a provider-catalog fetch. The
15
+ * single deliberate network path is the bounded background refresher in
16
+ * modelCatalogRefresher.ts.
44
17
  */
45
- async function forceOfflineWhile(create) {
46
- const previous = process.env["PI_OFFLINE"];
47
- process.env["PI_OFFLINE"] = "1";
48
- try {
49
- return await create();
50
- }
51
- finally {
52
- if (previous === undefined)
53
- delete process.env["PI_OFFLINE"];
54
- else
55
- process.env["PI_OFFLINE"] = previous;
56
- }
57
- }
58
18
  export function createModelRuntimeForAgentDir(agentDir) {
59
- return createOfflineModelRuntime({
19
+ return ModelRuntime.create({
60
20
  authPath: join(agentDir, "auth.json"),
61
21
  modelsPath: join(agentDir, "models.json"),
22
+ allowModelNetwork: false,
62
23
  });
63
24
  }
64
25
  export class AuthService {
@@ -69,7 +30,7 @@ export class AuthService {
69
30
  this.logger = logger;
70
31
  }
71
32
  static async create(deps = {}) {
72
- const runtime = deps.runtime ?? (deps.agentDir === undefined ? await createOfflineModelRuntime({}) : await createModelRuntimeForAgentDir(deps.agentDir));
33
+ const runtime = deps.runtime ?? (deps.agentDir === undefined ? await ModelRuntime.create({ allowModelNetwork: false }) : await createModelRuntimeForAgentDir(deps.agentDir));
73
34
  const logger = deps.logger ?? noopLogger;
74
35
  const authFlows = deps.authFlows ?? new OAuthLoginFlowService({ logger });
75
36
  return new AuthService(runtime, authFlows, logger);
@@ -85,7 +46,7 @@ export class AuthService {
85
46
  this.listeners.clear();
86
47
  }
87
48
  async authProviders(mode, authType) {
88
- await this.runtime.refresh();
49
+ await this.runtime.refresh({ allowNetwork: false });
89
50
  const providers = mode === "logout" ? await getLogoutProviderOptions(this.runtime) : getLoginProviderOptions(this.runtime, authType);
90
51
  return { providers };
91
52
  }
@@ -140,7 +101,7 @@ export class AuthService {
140
101
  }
141
102
  }
142
103
  async requireApiKeyLoginProvider(providerId) {
143
- await this.runtime.refresh();
104
+ await this.runtime.refresh({ allowNetwork: false });
144
105
  const provider = getLoginProviderOptions(this.runtime, "api_key").find((option) => option.id === providerId);
145
106
  if (provider !== undefined)
146
107
  return provider;
@@ -151,7 +112,7 @@ export class AuthService {
151
112
  throw new Error(`API key provider not found: ${providerId}`);
152
113
  }
153
114
  async requireOAuthLoginProvider(providerId) {
154
- await this.runtime.refresh();
115
+ await this.runtime.refresh({ allowNetwork: false });
155
116
  const provider = getLoginProviderOptions(this.runtime, "oauth").find((option) => option.id === providerId);
156
117
  if (provider === undefined)
157
118
  throw new Error(`OAuth provider not found: ${providerId}`);
@@ -1 +1 @@
1
- {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../../src/server/sessions/authService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../../src/server/sessions/authService.ts"],"names":[],"mappings":"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"}