@jmfederico/pi-web 1.202609.0 → 1.202609.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 (196) hide show
  1. package/README.md +3 -3
  2. package/dist/.plugins-ready +1 -0
  3. package/dist/cli.js +5 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/client/assets/index-AroYaCLx.js +4130 -0
  6. package/dist/client/assets/vendor-editor-core-YWog6mAR.js +10 -0
  7. package/dist/client/assets/vendor-editor-languages-DOCw3vc9.js +28 -0
  8. package/dist/client/index.html +4 -4
  9. package/dist/docker/piWebDockerCommandPlan.js +9 -1
  10. package/dist/docker/piWebDockerCommandPlan.js.map +1 -1
  11. package/dist/nativeServices/installedServiceDefinitions.js +24 -17
  12. package/dist/nativeServices/installedServiceDefinitions.js.map +1 -1
  13. package/dist/nativeServices/serviceAction.js +38 -26
  14. package/dist/nativeServices/serviceAction.js.map +1 -1
  15. package/dist/nativeServices/servicePlan.js +3 -3
  16. package/dist/nativeServices/servicePlan.js.map +1 -1
  17. package/dist/pi-packages/captains-log/README.md +11 -0
  18. package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +29 -0
  19. package/dist/pi-packages/captains-log/dist/browser/index.js +144 -0
  20. package/dist/pi-packages/captains-log/dist/browser/markdown.js +67 -0
  21. package/dist/pi-packages/captains-log/dist/browser/panel.js +105 -0
  22. package/dist/pi-packages/captains-log/dist/browser/protocol.js +26 -0
  23. package/dist/pi-packages/captains-log/dist/companion.js +126 -0
  24. package/dist/pi-packages/captains-log/dist/roundtrip.js +62 -0
  25. package/dist/pi-packages/captains-log/dist/server.js +210 -0
  26. package/dist/pi-packages/captains-log/dist/store.js +75 -0
  27. package/dist/pi-packages/captains-log/docs/usage.md +30 -0
  28. package/dist/pi-packages/captains-log/package.json +35 -0
  29. package/dist/pi-packages/captains-log/tsconfig.json +21 -0
  30. package/dist/pi-packages/captains-log/vite.config.mjs +28 -0
  31. package/dist/pi-packages/relays/pi-web-plugin.js +1 -1
  32. package/dist/pi-packages/relays/prompts/relay.md +1 -1
  33. package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +21 -13
  34. package/dist/pi-web-plugins/files/browser/assets/files-icon-DZObYhxb.svg +3 -0
  35. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +439 -0
  36. package/dist/pi-web-plugins/files/package.json +15 -0
  37. package/dist/pi-web-plugins/git/browser/git-panel.js +54 -24
  38. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +1 -1
  39. package/dist/pi-web-plugins/git/git-backend.js +5 -5
  40. package/dist/pi-web-plugins/git/server-plugin.js +5 -3
  41. package/dist/pi-web-plugins/info/pi-web-plugin.js +1 -1
  42. package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +3590 -0
  43. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +6 -0
  44. package/dist/pi-web-plugins/mermaid/package.json +13 -0
  45. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +210 -0
  46. package/dist/pi-web-plugins/terminal/package.json +16 -0
  47. package/dist/pi-web-plugins/terminal/server-plugin.js +365 -0
  48. package/dist/{server/terminals → pi-web-plugins/terminal}/terminalService.js +159 -79
  49. package/dist/pi-web-plugins/updates/pi-web-plugin.js +1 -1
  50. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +1 -1
  51. package/dist/piWebVersionReport.js +12 -4
  52. package/dist/piWebVersionReport.js.map +1 -1
  53. package/dist/plugin-api.d.ts +222 -23
  54. package/dist/plugin-api.js +1 -0
  55. package/dist/pluginRecoveryCli.js +3 -2
  56. package/dist/pluginRecoveryCli.js.map +1 -1
  57. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  58. package/dist/server/app.js +20 -9
  59. package/dist/server/app.js.map +1 -1
  60. package/dist/server/knownPiPackages.js +12 -0
  61. package/dist/server/knownPiPackages.js.map +1 -0
  62. package/dist/server/machines/machineClient.js +2 -2
  63. package/dist/server/machines/machineClient.js.map +1 -1
  64. package/dist/server/machines/machinePluginProxyRoutes.js +53 -11
  65. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  66. package/dist/server/machines/machineProxyRoutes.js +70 -7
  67. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  68. package/dist/server/notices/serverNoticeStore.js +45 -4
  69. package/dist/server/notices/serverNoticeStore.js.map +1 -1
  70. package/dist/server/piPackageService.js +5 -5
  71. package/dist/server/piPackageService.js.map +1 -1
  72. package/dist/server/piWebPluginCatalog.js +46 -12
  73. package/dist/server/piWebPluginCatalog.js.map +1 -1
  74. package/dist/server/piWebPluginLifecycle.js +26 -3
  75. package/dist/server/piWebPluginLifecycle.js.map +1 -1
  76. package/dist/server/piWebPluginService.js +37 -2
  77. package/dist/server/piWebPluginService.js.map +1 -1
  78. package/dist/server/pluginCallbackDrain.js +35 -0
  79. package/dist/server/pluginCallbackDrain.js.map +1 -0
  80. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +84 -0
  81. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -0
  82. package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js +234 -0
  83. package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js.map +1 -0
  84. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +52 -0
  85. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -0
  86. package/dist/server/plugins/pluginBackendProxyRoutes.js +38 -31
  87. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
  88. package/dist/server/plugins/pluginBackendRegistry.js +740 -0
  89. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -0
  90. package/dist/server/plugins/serverPluginPiSessionEventsCapability.js +34 -0
  91. package/dist/server/plugins/serverPluginPiSessionEventsCapability.js.map +1 -0
  92. package/dist/server/plugins/serverPluginPiSessionsCapability.js +185 -0
  93. package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -0
  94. package/dist/server/plugins/serverPluginRuntime.js +1028 -107
  95. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  96. package/dist/server/plugins/serverPluginWorkspacesCapability.js +114 -0
  97. package/dist/server/plugins/serverPluginWorkspacesCapability.js.map +1 -0
  98. package/dist/server/sessiond/pluginBackendChannelRoutes.js +393 -0
  99. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -0
  100. package/dist/server/sessiond/pluginBackendRoutes.js +10 -7
  101. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
  102. package/dist/server/sessiond/sessionDaemonShutdown.js +9 -2
  103. package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -1
  104. package/dist/server/sessiond.js +71 -21
  105. package/dist/server/sessiond.js.map +1 -1
  106. package/dist/server/sessions/builtinCommands.js +2 -2
  107. package/dist/server/sessions/builtinCommands.js.map +1 -1
  108. package/dist/server/sessions/clientSessionPreview.js +14 -0
  109. package/dist/server/sessions/clientSessionPreview.js.map +1 -0
  110. package/dist/server/sessions/piSessionEventConnections.js +65 -0
  111. package/dist/server/sessions/piSessionEventConnections.js.map +1 -0
  112. package/dist/server/sessions/piSessionService.js +269 -86
  113. package/dist/server/sessions/piSessionService.js.map +1 -1
  114. package/dist/server/sessions/sessionActivityMarker.js +105 -0
  115. package/dist/server/sessions/sessionActivityMarker.js.map +1 -0
  116. package/dist/server/sessions/sessionEnvironmentFacts.js +5 -4
  117. package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -1
  118. package/dist/server/sessions/sessionNameGenerator.js +3 -2
  119. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  120. package/dist/server/sessions/sessionRoutes.js +18 -0
  121. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  122. package/dist/server/sessions/spawnSessionTool.js +1 -1
  123. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  124. package/dist/server/sessions/spawnSubsessionTool.js +1 -1
  125. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  126. package/dist/server/sessions/transcriptMessages.js +54 -0
  127. package/dist/server/sessions/transcriptMessages.js.map +1 -0
  128. package/dist/server/terminals/requiredTerminalService.js +103 -0
  129. package/dist/server/terminals/requiredTerminalService.js.map +1 -0
  130. package/dist/server/webSocketBridge.js +339 -0
  131. package/dist/server/webSocketBridge.js.map +1 -1
  132. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +23 -3
  133. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
  134. package/dist/server/workspaces/workspaceCatalog.js +3 -1
  135. package/dist/server/workspaces/workspaceCatalog.js.map +1 -1
  136. package/dist/server/workspaces/workspaceProviderRegistry.js +64 -149
  137. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
  138. package/dist/server/workspaces/workspaceRemovalService.js +23 -1
  139. package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
  140. package/dist/server-plugin-api.d.ts +216 -22
  141. package/dist/server-plugin-api.js +319 -2
  142. package/dist/server-plugin-api.js.map +1 -1
  143. package/dist/serverPluginRecovery.js +4 -0
  144. package/dist/serverPluginRecovery.js.map +1 -1
  145. package/dist/sessiond/sessionDaemonClient.js +3 -3
  146. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  147. package/dist/shared/apiTypes.js +1 -1
  148. package/dist/shared/apiTypes.js.map +1 -1
  149. package/dist/shared/federatedRoutes.js +45 -17
  150. package/dist/shared/federatedRoutes.js.map +1 -1
  151. package/dist/shared/machinePluginIds.js +28 -7
  152. package/dist/shared/machinePluginIds.js.map +1 -1
  153. package/dist/shared/pluginApiTypes.d.ts +21 -1
  154. package/dist/shared/pluginApiTypes.js +0 -1
  155. package/dist/shared/pluginBackendProtocol.js +163 -2
  156. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  157. package/dist/shared/pluginIds.js +8 -1
  158. package/dist/shared/pluginIds.js.map +1 -1
  159. package/dist/shared/requiredTerminalPlugin.js +6 -0
  160. package/dist/shared/requiredTerminalPlugin.js.map +1 -0
  161. package/dist/shared/serverNoticeContract.js +88 -0
  162. package/dist/shared/serverNoticeContract.js.map +1 -0
  163. package/dist/shared/sessionDefaults.js +41 -0
  164. package/dist/shared/sessionDefaults.js.map +1 -0
  165. package/docs/config.md +50 -36
  166. package/docs/plugins.md +146 -1217
  167. package/examples/session-bridge-plugin/README.md +20 -0
  168. package/examples/session-bridge-plugin/docs/usage.md +54 -0
  169. package/examples/session-bridge-plugin/package.json +26 -0
  170. package/examples/session-bridge-plugin/src/browser/index.ts +84 -0
  171. package/examples/session-bridge-plugin/src/browser/protocol.ts +24 -0
  172. package/examples/session-bridge-plugin/src/companion.ts +65 -0
  173. package/examples/session-bridge-plugin/src/reviewRun.ts +39 -0
  174. package/examples/session-bridge-plugin/src/server.ts +85 -0
  175. package/examples/session-bridge-plugin/src/store.ts +57 -0
  176. package/examples/session-bridge-plugin/tsconfig.json +21 -0
  177. package/examples/workspace-provider-plugin/README.md +4 -4
  178. package/examples/workspace-provider-plugin/package.json +1 -1
  179. package/examples/workspace-provider-plugin/src/browser/index.ts +9 -9
  180. package/examples/workspace-provider-plugin/src/server.ts +15 -11
  181. package/package.json +17 -11
  182. package/dist/client/assets/CodeViewer-CGAlg9S8.js +0 -4
  183. package/dist/client/assets/TerminalPanel-xhJRhOas.js +0 -187
  184. package/dist/client/assets/index-DXQKhn1P.js +0 -4326
  185. package/dist/client/assets/vendor-editor-core-CXO8gGab.js +0 -12
  186. package/dist/client/assets/vendor-editor-languages-CpW4sJsX.js +0 -46
  187. package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +0 -1
  188. package/dist/client/assets/vendor-terminal-BrP-ENHg.css +0 -1
  189. package/dist/client/assets/vendor-terminal-D8k4UKM2.js +0 -35
  190. package/dist/server/terminalProxyRoutes.js +0 -141
  191. package/dist/server/terminalProxyRoutes.js.map +0 -1
  192. package/dist/server/terminals/terminalRoutes.js +0 -155
  193. package/dist/server/terminals/terminalRoutes.js.map +0 -1
  194. package/dist/server/terminals/terminalService.js.map +0 -1
  195. package/dist/server/terminals/terminalSize.js +0 -17
  196. package/dist/server/terminals/terminalSize.js.map +0 -1
@@ -26,11 +26,10 @@ import { ProjectService } from "./projects/projectService.js";
26
26
  import { ProjectStore, projectStorePath } from "./storage/projectStore.js";
27
27
  import { eligibleWorkspaceProviderContributions, WorkspaceProviderRegistry, } from "./workspaces/workspaceProviderRegistry.js";
28
28
  import { sessiondSocketPath } from "../sessiond/config.js";
29
- import { TerminalService } from "./terminals/terminalService.js";
30
- import { registerTerminalRoutes } from "./terminals/terminalRoutes.js";
29
+ import { PI_WEB_HOST_PI_SESSIONS_CAPABILITY, PI_WEB_HOST_PI_SESSION_EVENTS_CAPABILITY, PI_WEB_HOST_WORKSPACES_CAPABILITY, } from "../server-plugin-api.js";
31
30
  import { getPiWebRuntimeComponent } from "./piWebStatus.js";
32
31
  import { SESSIOND_RUNTIME_CAPABILITIES } from "../shared/capabilities.js";
33
- import { agentSessionDirEnvOverride, effectivePiWebConfig, maxUploadBytes, offlineModeEnabled, PI_CODING_AGENT_DIR_ENV, PI_CODING_AGENT_SESSION_DIR_ENV } from "../config.js";
32
+ import { agentSessionDirEnvOverride, effectivePiWebConfig, maxUploadBytes, offlineModeEnabled, piWebDataDir, PI_CODING_AGENT_DIR_ENV, PI_CODING_AGENT_SESSION_DIR_ENV } from "../config.js";
34
33
  import { createFilePiWebConfigService } from "./configRoutes.js";
35
34
  import { createActiveAgentProfileDescriptor } from "../sessiond/activeAgentProfile.js";
36
35
  import { loadServerPluginRecoveryConfig } from "../serverPluginRecovery.js";
@@ -45,10 +44,17 @@ import { dockerEnvironmentPromptSections } from "./sessions/dockerEnvironmentFac
45
44
  import { PI_WEB_SESSION_ENV, sessionEnvironmentPromptSections } from "./sessions/sessionEnvironmentFacts.js";
46
45
  import { createServerPluginExecFile } from "./plugins/serverPluginExec.js";
47
46
  import { createServerPluginRuntime } from "./plugins/serverPluginRuntime.js";
47
+ import { createServerPluginPiSessionsCapabilityFactory } from "./plugins/serverPluginPiSessionsCapability.js";
48
+ import { createServerPluginPiSessionEventsCapabilityFactory } from "./plugins/serverPluginPiSessionEventsCapability.js";
49
+ import { createServerPluginWorkspacesCapabilityFactory } from "./plugins/serverPluginWorkspacesCapability.js";
50
+ import { REQUIRED_TERMINAL_SERVICE_CAPABILITY, unavailableRequiredTerminalService, } from "./terminals/requiredTerminalService.js";
51
+ import { eligiblePluginBackendContributions, PluginBackendRegistry, } from "./plugins/pluginBackendRegistry.js";
48
52
  import { runSessionDaemonShutdown } from "./sessiond/sessionDaemonShutdown.js";
49
53
  import { sessionServiceDependencies } from "./sessiond/sessionServiceDependencies.js";
50
54
  import { registerWorkspaceCatalogRoutes } from "./sessiond/workspaceCatalogRoutes.js";
51
- import { registerPluginBackendRoutes } from "./sessiond/pluginBackendRoutes.js";
55
+ import { registerPluginBackendChannelRoutes } from "./sessiond/pluginBackendChannelRoutes.js";
56
+ import { installPluginBackendChannelWebSocketPayloadLimit } from "./webSocketBridge.js";
57
+ import { registerPairedPluginBackendRoutes } from "./sessiond/pluginBackendRoutes.js";
52
58
  import { registerWorkspaceRemovalRoutes } from "./sessiond/workspaceRemovalRoutes.js";
53
59
  import { createWorkspaceProviderRuntimeSnapshot } from "./workspaces/workspaceCatalog.js";
54
60
  import { WorkspaceRemovalService } from "./workspaces/workspaceRemovalService.js";
@@ -84,6 +90,7 @@ if (serverPluginRecovery.safeStartDiagnostic !== undefined) {
84
90
  app.log.error({ component: "server-plugins", configPath: serverPluginRecovery.path }, serverPluginRecovery.safeStartDiagnostic);
85
91
  }
86
92
  await app.register(fastifyWebsocket);
93
+ installPluginBackendChannelWebSocketPayloadLimit(app.websocketServer);
87
94
  let serverQuiescing = false;
88
95
  app.addHook("onRequest", (_request, reply, done) => {
89
96
  if (!serverQuiescing) {
@@ -171,15 +178,19 @@ async function createSessionDaemonRuntime() {
171
178
  }).catch((error) => {
172
179
  app.log.warn({ err: error }, "Pi package auto-install reconciliation failed unexpectedly; continuing without it");
173
180
  });
181
+ const eventHub = new SessionEventHub();
182
+ const serverNotices = new ServerNoticeService(new ServerNoticeStore(), eventHub);
174
183
  const serverPlugins = await createServerPluginRuntime({
175
184
  catalog: serverPluginCatalog,
176
185
  ...(serverPluginRecovery.safeStart === undefined ? {} : { safeStart: serverPluginRecovery.safeStart }),
177
186
  logger: app.log,
178
187
  execFile: createServerPluginExecFile({ env: daemonEnvironment }),
188
+ noticeSink: (source, input) => { serverNotices.record({ ...input, source }); },
189
+ dataDir: piWebDataDir(daemonEnvironment),
190
+ lateHostCapabilities: [PI_WEB_HOST_WORKSPACES_CAPABILITY, PI_WEB_HOST_PI_SESSIONS_CAPABILITY, PI_WEB_HOST_PI_SESSION_EVENTS_CAPABILITY],
179
191
  });
192
+ let sessionsForFailedConstruction;
180
193
  try {
181
- const eventHub = new SessionEventHub();
182
- const serverNotices = new ServerNoticeService(new ServerNoticeStore(), eventHub);
183
194
  const notificationStore = new SessionNotificationStore();
184
195
  const unreadStore = new SessionUnreadStore({
185
196
  persistence: new FileSessionUnreadPersistence(defaultSessionUnreadFilePath(daemonEnvironment)),
@@ -209,12 +220,16 @@ async function createSessionDaemonRuntime() {
209
220
  catalogRefresher.start();
210
221
  auth.subscribe(() => { catalogRefresher.requestRefresh(); });
211
222
  const projects = new ProjectService(new ProjectStore(projectStorePath(daemonEnvironment)));
212
- const providerHealth = await serverPlugins.inspectHealth();
223
+ // Only dependency-ready providers can define the aggregate topology. The
224
+ // runtime has already rejected any staged provider that depends on late
225
+ // host authority as a cycle, so this snapshot cannot omit a future owner.
226
+ const providerContributions = serverPlugins.providerContributions();
227
+ const providerPluginIds = providerContributions.map(({ pluginId }) => pluginId);
228
+ const providerHealth = await serverPlugins.inspectHealth(providerPluginIds);
213
229
  const workspaceProviders = new WorkspaceProviderRegistry({
214
- contributions: eligibleWorkspaceProviderContributions(serverPlugins.providerContributions(), providerHealth),
230
+ contributions: eligibleWorkspaceProviderContributions(providerContributions, providerHealth),
215
231
  logger: app.log,
216
232
  });
217
- const workspaceProviderRuntime = createWorkspaceProviderRuntimeSnapshot(serverPlugins.healthRecords(), providerHealth, serverPlugins.safeStartLevel(), serverPlugins.catalogDiagnostics());
218
233
  const statusAttribution = new CachedWorkspaceAttribution({
219
234
  projects,
220
235
  workspaces: workspaceProviders,
@@ -230,11 +245,6 @@ async function createSessionDaemonRuntime() {
230
245
  // Every global subscriber is handed the current projection on connect, so a
231
246
  // browser never has to reconcile a snapshot fetch against live frames.
232
247
  eventHub.setGlobalJoinFrame(() => ({ type: "machine.status", status: machineStatus.snapshot() }));
233
- // Unread state was loaded from disk above, so the projection is computed
234
- // once at startup instead of waiting for the first change. It is not
235
- // awaited: resolving it lists workspaces through provider plugins, and
236
- // daemon startup must not depend on how long that takes.
237
- machineStatus.notifyChanged();
238
248
  const projectWorkspaceDeps = { projects, workspaces: workspaceProviders };
239
249
  const spawnTargets = config.spawnSessions ? new ProjectScopedSpawnTargetResolver(projectWorkspaceDeps) : undefined;
240
250
  const sessions = new PiSessionService(eventHub, sessionServiceDependencies({
@@ -273,8 +283,40 @@ async function createSessionDaemonRuntime() {
273
283
  env: daemonEnvironment,
274
284
  }),
275
285
  }));
286
+ sessionsForFailedConstruction = sessions;
276
287
  auth.subscribe((change) => { sessions.applyAuthChange(change); });
277
- const terminals = new TerminalService(eventHub, workspaceActivity, serverNotices);
288
+ // Current workspace authority and session ownership become available at
289
+ // one atomic late boundary, so no dependent can start against a partial host.
290
+ await serverPlugins.resumeWithHostCapabilityFactories([
291
+ createServerPluginWorkspacesCapabilityFactory({ projects, workspaces: workspaceProviders }),
292
+ createServerPluginPiSessionsCapabilityFactory({ projects, workspaces: workspaceProviders, sessions }),
293
+ createServerPluginPiSessionEventsCapabilityFactory({ projects, workspaces: workspaceProviders, sessions }),
294
+ ]);
295
+ const providerPluginIdSet = new Set(providerPluginIds);
296
+ const remainingActivePluginIds = serverPlugins.healthRecords()
297
+ .filter(({ pluginId, state }) => state === "active" && !providerPluginIdSet.has(pluginId))
298
+ .map(({ pluginId }) => pluginId);
299
+ const remainingHealth = await serverPlugins.inspectHealth(remainingActivePluginIds);
300
+ const pluginHealth = Object.freeze([...providerHealth, ...remainingHealth]
301
+ .sort((left, right) => left.pluginId.localeCompare(right.pluginId)));
302
+ const pluginBackends = new PluginBackendRegistry({
303
+ contributions: eligiblePluginBackendContributions(serverPlugins.pairedBackendContributions(), pluginHealth),
304
+ workspaces: workspaceProviders,
305
+ logger: app.log,
306
+ });
307
+ const workspaceProviderRuntime = createWorkspaceProviderRuntimeSnapshot(serverPlugins.healthRecords(), pluginHealth, serverPlugins.safeStartLevel(), serverPlugins.catalogDiagnostics());
308
+ // Unread state was loaded from disk above, so the projection is computed
309
+ // once at startup instead of waiting for the first change. It is not
310
+ // awaited: resolving it lists workspaces through provider plugins, and
311
+ // daemon startup must not depend on how long that takes.
312
+ machineStatus.notifyChanged();
313
+ const terminals = serverPlugins.safeStartLevel() === "none"
314
+ ? unavailableRequiredTerminalService()
315
+ : serverPlugins.resolve(REQUIRED_TERMINAL_SERVICE_CAPABILITY);
316
+ terminals.bindActivitySink({
317
+ updateTerminal: (terminal) => { workspaceActivity.updateTerminal(terminal); },
318
+ removeTerminal: (terminalId, cwd) => { workspaceActivity.removeTerminal(terminalId, cwd); },
319
+ });
278
320
  const workspaceRemovals = new WorkspaceRemovalService(workspaceProviders, terminals, { notices: serverNotices });
279
321
  const runtimeComponent = Object.freeze({
280
322
  // The deprecated-input report is fixed at startup: it was detected from
@@ -294,11 +336,13 @@ async function createSessionDaemonRuntime() {
294
336
  dependencies: {
295
337
  quiesceServer: () => { serverQuiescing = true; },
296
338
  serverPlugins,
297
- terminals,
298
339
  catalogRefresher,
299
340
  auth,
300
341
  sessions,
301
342
  unreadStore,
343
+ pluginBackends,
344
+ workspaceProviders,
345
+ workspaceRemovals,
302
346
  closeServer: () => app.close(),
303
347
  },
304
348
  onFailure: () => { process.exitCode = 1; },
@@ -308,7 +352,7 @@ async function createSessionDaemonRuntime() {
308
352
  // next start discards it.
309
353
  await stateOwnership.release();
310
354
  };
311
- return { eventHub, machineStatus, statusAttribution, auth, sessions, terminals, serverNotices, unreadStore, activeAgentProfile, runtimeComponent, catalogRefresher, serverPlugins, projects, workspaceProviders, workspaceProviderRuntime, workspaceRemovals, shutdown };
355
+ return { eventHub, machineStatus, statusAttribution, auth, sessions, serverNotices, unreadStore, activeAgentProfile, runtimeComponent, catalogRefresher, serverPlugins, projects, workspaceProviders, pluginBackends, workspaceProviderRuntime, workspaceRemovals, shutdown };
312
356
  }
313
357
  catch (error) {
314
358
  try {
@@ -317,25 +361,31 @@ async function createSessionDaemonRuntime() {
317
361
  catch (disposeError) {
318
362
  app.log.error({ err: disposeError }, "session daemon construction failed and server plugin disposal was incomplete");
319
363
  }
364
+ try {
365
+ await sessionsForFailedConstruction?.dispose();
366
+ }
367
+ catch (disposeError) {
368
+ app.log.error({ err: disposeError }, "session daemon construction failed and PI session disposal was incomplete");
369
+ }
320
370
  throw error;
321
371
  }
322
372
  }
323
- function registerSessionDaemonRoutes({ eventHub, machineStatus, statusAttribution, auth, sessions, terminals, serverNotices, runtimeComponent, projects, workspaceProviders, workspaceProviderRuntime, workspaceRemovals }) {
373
+ function registerSessionDaemonRoutes({ eventHub, machineStatus, statusAttribution, auth, sessions, serverNotices, runtimeComponent, projects, workspaceProviders, pluginBackends, workspaceProviderRuntime, workspaceRemovals }) {
324
374
  registerMachineStatusRoutes(app, machineStatus);
325
375
  registerServerNoticeRoutes(app, serverNotices);
326
376
  registerAuthRoutes(app, auth);
327
377
  registerSessionRoutes(app, sessions, eventHub);
328
- registerTerminalRoutes(app, terminals);
329
378
  registerWorkspaceCatalogRoutes(app, {
330
379
  projects,
331
380
  workspaces: workspaceProviders,
332
381
  providerRuntime: workspaceProviderRuntime,
333
382
  });
334
- registerPluginBackendRoutes(app, {
383
+ registerPairedPluginBackendRoutes(app, {
335
384
  projects,
336
- backends: workspaceProviders,
385
+ backends: pluginBackends,
337
386
  onWorkspacesMutated: () => { statusAttribution.invalidate(); },
338
387
  });
388
+ registerPluginBackendChannelRoutes(app, { projects, backends: pluginBackends });
339
389
  registerWorkspaceRemovalRoutes(app, {
340
390
  projects,
341
391
  removals: workspaceRemovals,
@@ -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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"}
@@ -6,7 +6,7 @@ export const BUILTIN_COMMANDS = [
6
6
  { name: "import", description: "Import and resume a session from JSONL", source: "builtin" },
7
7
  { name: "share", description: "Share session as a secret GitHub gist", source: "builtin" },
8
8
  { name: "copy", description: "Copy last agent message", source: "builtin" },
9
- { name: "name", description: "Set session display name", source: "builtin" },
9
+ { name: "name", description: "Set session display name", argumentHint: "<session name>", source: "builtin" },
10
10
  { name: "session", description: "Show session info and stats", source: "builtin" },
11
11
  { name: "changelog", description: "Show changelog entries", source: "builtin" },
12
12
  { name: "hotkeys", description: "Show keyboard shortcuts", source: "builtin" },
@@ -16,7 +16,7 @@ export const BUILTIN_COMMANDS = [
16
16
  { name: "login", description: "Configure provider authentication", source: "builtin" },
17
17
  { name: "logout", description: "Remove provider authentication", source: "builtin" },
18
18
  { name: "new", description: "Start a new session", source: "builtin" },
19
- { name: "compact", description: "Manually compact session context", source: "builtin" },
19
+ { name: "compact", description: "Manually compact session context", argumentHint: "[instructions]", source: "builtin" },
20
20
  { name: "resume", description: "Resume a different session", source: "builtin" },
21
21
  { name: "reload", description: "Reload Pi runtime resources for this session", source: "builtin" },
22
22
  { name: "quit", description: "Quit pi", source: "builtin" },
@@ -1 +1 @@
1
- {"version":3,"file":"builtinCommands.js","sourceRoot":"","sources":["../../../src/server/sessions/builtinCommands.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC1E,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE;IACjE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,mCAAmC,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE;IACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5F,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uCAAuC,EAAE,MAAM,EAAE,SAAS,EAAE;IAC1F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC3E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,EAAE,SAAS,EAAE;IAClF,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC/E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gDAAgD,EAAE,MAAM,EAAE,SAAS,EAAE;IAClG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,+CAA+C,EAAE,MAAM,EAAE,SAAS,EAAE;IAClG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAE;IACzE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE,MAAM,EAAE,SAAS,EAAE;IACtF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE,MAAM,EAAE,SAAS,EAAE;IACpF,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE;IACtE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE,MAAM,EAAE,SAAS,EAAE;IACvF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE;IAChF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE,MAAM,EAAE,SAAS,EAAE;IAClG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;CAC5D,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"builtinCommands.js","sourceRoot":"","sources":["../../../src/server/sessions/builtinCommands.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC1E,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE;IACjE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,mCAAmC,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE;IACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5F,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uCAAuC,EAAE,MAAM,EAAE,SAAS,EAAE;IAC1F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC3E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5G,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,EAAE,SAAS,EAAE;IAClF,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC/E,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gDAAgD,EAAE,MAAM,EAAE,SAAS,EAAE;IAClG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,+CAA+C,EAAE,MAAM,EAAE,SAAS,EAAE;IAClG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAE;IACzE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE,MAAM,EAAE,SAAS,EAAE;IACtF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE,MAAM,EAAE,SAAS,EAAE;IACpF,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE;IACtE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE;IACvH,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE;IAChF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE,MAAM,EAAE,SAAS,EAAE;IAClG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;CAC5D,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const CLIENT_SESSION_FIRST_MESSAGE_MAX_LENGTH = 512;
2
+ const TRUNCATION_MARKER = "...";
3
+ export function clientSessionFirstMessagePreview(value) {
4
+ if (value.length <= CLIENT_SESSION_FIRST_MESSAGE_MAX_LENGTH)
5
+ return value;
6
+ const rawEnd = CLIENT_SESSION_FIRST_MESSAGE_MAX_LENGTH - TRUNCATION_MARKER.length;
7
+ const end = endsAfterHighSurrogate(value, rawEnd) ? rawEnd - 1 : rawEnd;
8
+ return `${value.slice(0, end)}${TRUNCATION_MARKER}`;
9
+ }
10
+ function endsAfterHighSurrogate(value, end) {
11
+ const code = value.charCodeAt(end - 1);
12
+ return code >= 0xd800 && code <= 0xdbff;
13
+ }
14
+ //# sourceMappingURL=clientSessionPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientSessionPreview.js","sourceRoot":"","sources":["../../../src/server/sessions/clientSessionPreview.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAE3D,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,IAAI,KAAK,CAAC,MAAM,IAAI,uCAAuC;QAAE,OAAO,KAAK,CAAC;IAE1E,MAAM,MAAM,GAAG,uCAAuC,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAClF,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,GAAW;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,65 @@
1
+ /** Buses belong to concrete native sessions, never to a cwd or a reusable id. */
2
+ export class PiSessionEventConnections {
3
+ constructor() {
4
+ this.sessions = new WeakMap();
5
+ }
6
+ register(session, bus) {
7
+ this.close(session);
8
+ this.sessions.set(session, { bus, connections: new Set() });
9
+ }
10
+ connect(session, lifetime) {
11
+ lifetime.throwIfAborted();
12
+ const hosted = this.sessions.get(session);
13
+ if (hosted === undefined)
14
+ throw new Error("Hosted session does not have a package event bus");
15
+ const controller = new AbortController();
16
+ const subscriptions = new Set();
17
+ const close = () => {
18
+ if (controller.signal.aborted)
19
+ return;
20
+ for (const unsubscribe of subscriptions)
21
+ unsubscribe();
22
+ subscriptions.clear();
23
+ hosted.connections.delete(connection);
24
+ lifetime.removeEventListener("abort", close);
25
+ controller.abort(new Error("PI session events connection closed"));
26
+ };
27
+ const assertChannel = (channel) => {
28
+ controller.signal.throwIfAborted();
29
+ if (typeof channel !== "string" || channel.trim() === "")
30
+ throw new Error("PI event channel must be non-empty");
31
+ };
32
+ const connection = Object.freeze({
33
+ signal: controller.signal,
34
+ on: (channel, handler) => {
35
+ assertChannel(channel);
36
+ if (typeof handler !== "function")
37
+ throw new Error("PI event handler must be a function");
38
+ // Native Pi awaits/catches handler results despite its void callback type.
39
+ // Return async work to that error boundary instead of dropping rejections.
40
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
41
+ const detach = hosted.bus.on(channel, (data) => {
42
+ if (!controller.signal.aborted)
43
+ return handler(data);
44
+ });
45
+ const unsubscribe = () => { detach(); subscriptions.delete(unsubscribe); };
46
+ subscriptions.add(unsubscribe);
47
+ return unsubscribe;
48
+ },
49
+ emit: (channel, data) => { assertChannel(channel); hosted.bus.emit(channel, data); },
50
+ close,
51
+ });
52
+ hosted.connections.add(connection);
53
+ lifetime.addEventListener("abort", close, { once: true });
54
+ return connection;
55
+ }
56
+ close(session) {
57
+ const hosted = this.sessions.get(session);
58
+ if (hosted === undefined)
59
+ return;
60
+ for (const connection of hosted.connections)
61
+ connection.close();
62
+ this.sessions.delete(session);
63
+ }
64
+ }
65
+ //# sourceMappingURL=piSessionEventConnections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piSessionEventConnections.js","sourceRoot":"","sources":["../../../src/server/sessions/piSessionEventConnections.ts"],"names":[],"mappings":"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"}