@chainingintention/pi-web-cn 1.202610.1 → 1.202610.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/README.md +60 -106
  2. package/dist/.plugins-ready +1 -0
  3. package/dist/cli.js +161 -45
  4. package/dist/cli.js.map +1 -1
  5. package/dist/client/assets/index-CFhaGb5m.js +4357 -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 +5 -5
  9. package/dist/config.js +30 -6
  10. package/dist/config.js.map +1 -1
  11. package/dist/docker/piWebDockerCommandPlan.js +13 -4
  12. package/dist/docker/piWebDockerCommandPlan.js.map +1 -1
  13. package/dist/nativeServices/installedServiceDefinitions.js +23 -10
  14. package/dist/nativeServices/installedServiceDefinitions.js.map +1 -1
  15. package/dist/nativeServices/serviceAction.js +78 -20
  16. package/dist/nativeServices/serviceAction.js.map +1 -1
  17. package/dist/nativeServices/serviceDoctor.js +339 -67
  18. package/dist/nativeServices/serviceDoctor.js.map +1 -1
  19. package/dist/nativeServices/servicePlan.js +2 -2
  20. package/dist/nativeServices/servicePlan.js.map +1 -1
  21. package/dist/pi-packages/captains-log/README.md +11 -0
  22. package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +29 -0
  23. package/dist/pi-packages/captains-log/dist/browser/index.js +146 -0
  24. package/dist/pi-packages/captains-log/dist/browser/markdown.js +67 -0
  25. package/dist/pi-packages/captains-log/dist/browser/panel.js +151 -0
  26. package/dist/pi-packages/captains-log/dist/browser/protocol.js +26 -0
  27. package/dist/pi-packages/captains-log/dist/companion.js +126 -0
  28. package/dist/pi-packages/captains-log/dist/roundtrip.js +62 -0
  29. package/dist/pi-packages/captains-log/dist/server.js +210 -0
  30. package/dist/pi-packages/captains-log/dist/store.js +75 -0
  31. package/dist/pi-packages/captains-log/docs/usage.md +29 -0
  32. package/dist/pi-packages/captains-log/package.json +35 -0
  33. package/dist/pi-packages/captains-log/tsconfig.json +21 -0
  34. package/dist/pi-packages/captains-log/vite.config.mjs +28 -0
  35. package/dist/pi-packages/relays/pi-web-plugin.js +9 -9
  36. package/dist/pi-packages/relays/prompts/relay.md +1 -1
  37. package/dist/pi-packages/relays/relaysPanelElement.js +8 -8
  38. package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +21 -13
  39. package/dist/pi-web-plugins/files/browser/assets/files-icon-DZObYhxb.svg +3 -0
  40. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +456 -0
  41. package/dist/pi-web-plugins/files/package.json +15 -0
  42. package/dist/pi-web-plugins/git/browser/git-panel.js +55 -32
  43. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +2 -2
  44. package/dist/pi-web-plugins/git/git-backend.js +19 -26
  45. package/dist/pi-web-plugins/git/gitStatusCache.js +48 -0
  46. package/dist/pi-web-plugins/git/package.json +1 -0
  47. package/dist/pi-web-plugins/git/server-plugin.js +11 -10
  48. package/dist/pi-web-plugins/info/infoInternals.js +4 -1
  49. package/dist/pi-web-plugins/info/package.json +1 -1
  50. package/dist/pi-web-plugins/info/pi-web-plugin.js +8 -8
  51. package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +3590 -0
  52. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +6 -0
  53. package/dist/pi-web-plugins/mermaid/package.json +13 -0
  54. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +210 -0
  55. package/dist/pi-web-plugins/terminal/package.json +16 -0
  56. package/dist/pi-web-plugins/terminal/server-plugin.js +365 -0
  57. package/dist/pi-web-plugins/terminal/terminalService.js +435 -0
  58. package/dist/pi-web-plugins/updates/package.json +1 -1
  59. package/dist/pi-web-plugins/updates/pi-web-plugin.js +69 -68
  60. package/dist/pi-web-plugins/workspace-tasks/package.json +1 -1
  61. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +3 -3
  62. package/dist/piWebVersionReport.js +47 -24
  63. package/dist/piWebVersionReport.js.map +1 -1
  64. package/dist/plugin-api.d.ts +260 -25
  65. package/dist/plugin-api.js +1 -0
  66. package/dist/pluginRecoveryCli.js +3 -2
  67. package/dist/pluginRecoveryCli.js.map +1 -1
  68. package/dist/server/activity/workspaceActivityService.js +5 -5
  69. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  70. package/dist/server/app.js +71 -44
  71. package/dist/server/app.js.map +1 -1
  72. package/dist/server/audit/managementAuditStore.js +1 -1
  73. package/dist/server/browserMessageProjection.js +0 -2
  74. package/dist/server/browserMessageProjection.js.map +1 -1
  75. package/dist/server/configRoutes.js +1 -2
  76. package/dist/server/configRoutes.js.map +1 -1
  77. package/dist/server/knownPiPackages.js +12 -0
  78. package/dist/server/knownPiPackages.js.map +1 -0
  79. package/dist/server/machines/machineClient.js +2 -2
  80. package/dist/server/machines/machineClient.js.map +1 -1
  81. package/dist/server/machines/machinePluginProxyRoutes.js +120 -21
  82. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  83. package/dist/server/machines/machineProxyRoutes.js +80 -22
  84. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  85. package/dist/server/machines/machineService.js +22 -0
  86. package/dist/server/machines/machineService.js.map +1 -1
  87. package/dist/server/managementEmbed.js +1 -1
  88. package/dist/server/managementEmbed.js.map +1 -1
  89. package/dist/server/managementPrivileges.js +7 -1
  90. package/dist/server/managementPrivileges.js.map +1 -1
  91. package/dist/server/managementTerminalProxyRoutes.js +124 -0
  92. package/dist/server/managementTerminalProxyRoutes.js.map +1 -0
  93. package/dist/server/normalAuth.js +5 -1
  94. package/dist/server/normalAuth.js.map +1 -1
  95. package/dist/server/notices/serverNoticeStore.js +50 -6
  96. package/dist/server/notices/serverNoticeStore.js.map +1 -1
  97. package/dist/server/piPackageService.js +5 -5
  98. package/dist/server/piPackageService.js.map +1 -1
  99. package/dist/server/piWebPluginCatalog.js +211 -34
  100. package/dist/server/piWebPluginCatalog.js.map +1 -1
  101. package/dist/server/piWebPluginLifecycle.js +29 -3
  102. package/dist/server/piWebPluginLifecycle.js.map +1 -1
  103. package/dist/server/piWebPluginService.js +176 -291
  104. package/dist/server/piWebPluginService.js.map +1 -1
  105. package/dist/server/piWebStatus.js +45 -55
  106. package/dist/server/piWebStatus.js.map +1 -1
  107. package/dist/server/pluginCallbackDrain.js +35 -0
  108. package/dist/server/pluginCallbackDrain.js.map +1 -0
  109. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +84 -0
  110. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -0
  111. package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js +234 -0
  112. package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js.map +1 -0
  113. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +63 -0
  114. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -0
  115. package/dist/server/plugins/pluginBackendProxyRoutes.js +7 -4
  116. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
  117. package/dist/server/plugins/pluginBackendRegistry.js +773 -0
  118. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -0
  119. package/dist/server/plugins/serverPluginPiSessionEventsCapability.js +34 -0
  120. package/dist/server/plugins/serverPluginPiSessionEventsCapability.js.map +1 -0
  121. package/dist/server/plugins/serverPluginPiSessionsCapability.js +185 -0
  122. package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -0
  123. package/dist/server/plugins/serverPluginRuntime.js +1049 -107
  124. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  125. package/dist/server/plugins/serverPluginWorkspacesCapability.js +114 -0
  126. package/dist/server/plugins/serverPluginWorkspacesCapability.js.map +1 -0
  127. package/dist/server/projectTrustRoutes.js +86 -0
  128. package/dist/server/projectTrustRoutes.js.map +1 -0
  129. package/dist/server/projects/projectLifecycleService.js +84 -0
  130. package/dist/server/projects/projectLifecycleService.js.map +1 -0
  131. package/dist/server/projects/projectService.js +2 -0
  132. package/dist/server/projects/projectService.js.map +1 -1
  133. package/dist/server/realtime/sessionEventHub.js +35 -41
  134. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  135. package/dist/server/sessiond/agentHttpDispatcher.js +108 -0
  136. package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -0
  137. package/dist/server/sessiond/pluginBackendChannelRoutes.js +397 -0
  138. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -0
  139. package/dist/server/sessiond/pluginBackendRoutes.js +19 -9
  140. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
  141. package/dist/server/sessiond/projectMutationRoutes.js +38 -0
  142. package/dist/server/sessiond/projectMutationRoutes.js.map +1 -0
  143. package/dist/server/sessiond/sessionDaemonShutdown.js +36 -0
  144. package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -0
  145. package/dist/server/sessiond/sessionDaemonStartup.js +30 -4
  146. package/dist/server/sessiond/sessionDaemonStartup.js.map +1 -1
  147. package/dist/server/sessiond/sessionProxyRoutes.js +47 -15
  148. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  149. package/dist/server/sessiond/sessionServiceDependencies.js +4 -0
  150. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  151. package/dist/server/sessiond/sessiondStateOwnership.js +174 -39
  152. package/dist/server/sessiond/sessiondStateOwnership.js.map +1 -1
  153. package/dist/server/sessiond/workspaceRemovalRoutes.js +1 -1
  154. package/dist/server/sessiond/workspaceRemovalRoutes.js.map +1 -1
  155. package/dist/server/sessiond.js +226 -56
  156. package/dist/server/sessiond.js.map +1 -1
  157. package/dist/server/sessions/askUserTool.js +0 -3
  158. package/dist/server/sessions/askUserTool.js.map +1 -1
  159. package/dist/server/sessions/attachmentService.js +0 -1
  160. package/dist/server/sessions/attachmentService.js.map +1 -1
  161. package/dist/server/sessions/authService.js +8 -1
  162. package/dist/server/sessions/authService.js.map +1 -1
  163. package/dist/server/sessions/builtinCommands.js +2 -2
  164. package/dist/server/sessions/builtinCommands.js.map +1 -1
  165. package/dist/server/sessions/clientSessionPreview.js +14 -0
  166. package/dist/server/sessions/clientSessionPreview.js.map +1 -0
  167. package/dist/server/sessions/dockerEnvironmentFacts.js +82 -9
  168. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
  169. package/dist/server/sessions/managementAgentTools.js +11 -6
  170. package/dist/server/sessions/managementAgentTools.js.map +1 -1
  171. package/dist/server/sessions/managementPermissionSystem.js +16 -4
  172. package/dist/server/sessions/managementPermissionSystem.js.map +1 -1
  173. package/dist/server/sessions/messagePaging.js +2 -2
  174. package/dist/server/sessions/messagePaging.js.map +1 -1
  175. package/dist/server/sessions/modelCatalogRefresher.js +4 -3
  176. package/dist/server/sessions/modelCatalogRefresher.js.map +1 -1
  177. package/dist/server/sessions/oauthLoginFlowService.js +2 -5
  178. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
  179. package/dist/server/sessions/pendingAskStore.js +0 -3
  180. package/dist/server/sessions/pendingAskStore.js.map +1 -1
  181. package/dist/server/sessions/piSessionEventConnections.js +65 -0
  182. package/dist/server/sessions/piSessionEventConnections.js.map +1 -0
  183. package/dist/server/sessions/piSessionManagerGateway.js +56 -3
  184. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  185. package/dist/server/sessions/piSessionService.js +774 -448
  186. package/dist/server/sessions/piSessionService.js.map +1 -1
  187. package/dist/server/sessions/projectAuthService.js +29 -2
  188. package/dist/server/sessions/projectAuthService.js.map +1 -1
  189. package/dist/server/sessions/projectSettingsScope.js +12 -4
  190. package/dist/server/sessions/projectSettingsScope.js.map +1 -1
  191. package/dist/server/sessions/projectTrust.js +119 -0
  192. package/dist/server/sessions/projectTrust.js.map +1 -0
  193. package/dist/server/sessions/sessionActivityMarker.js +105 -0
  194. package/dist/server/sessions/sessionActivityMarker.js.map +1 -0
  195. package/dist/server/sessions/sessionArchiveMapping.js +2 -8
  196. package/dist/server/sessions/sessionArchiveMapping.js.map +1 -1
  197. package/dist/server/sessions/sessionCommandService.js +12 -10
  198. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  199. package/dist/server/sessions/sessionEnvironmentFacts.js +5 -4
  200. package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -1
  201. package/dist/server/sessions/sessionModelScope.js +42 -5
  202. package/dist/server/sessions/sessionModelScope.js.map +1 -1
  203. package/dist/server/sessions/sessionNameGenerator.js +6 -6
  204. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  205. package/dist/server/sessions/sessionRoutes.js +63 -15
  206. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  207. package/dist/server/sessions/sessionTreeProjection.js +29 -29
  208. package/dist/server/sessions/sessionTreeProjection.js.map +1 -1
  209. package/dist/server/sessions/sessionUiEvents.js +6 -7
  210. package/dist/server/sessions/sessionUiEvents.js.map +1 -1
  211. package/dist/server/sessions/sessionUnreadStore.js +26 -1
  212. package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
  213. package/dist/server/sessions/spawnSessionTool.js +3 -3
  214. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  215. package/dist/server/sessions/spawnSubsessionTool.js +5 -5
  216. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  217. package/dist/server/sessions/spawnTargetResolver.js +1 -1
  218. package/dist/server/sessions/transcriptMessages.js +54 -0
  219. package/dist/server/sessions/transcriptMessages.js.map +1 -0
  220. package/dist/server/status/machineStatusService.js +3 -1
  221. package/dist/server/status/machineStatusService.js.map +1 -1
  222. package/dist/server/terminals/{terminalService.js → managementCommandRunService.js} +79 -107
  223. package/dist/server/terminals/managementCommandRunService.js.map +1 -0
  224. package/dist/server/terminals/managementTerminalRoutes.js +91 -0
  225. package/dist/server/terminals/managementTerminalRoutes.js.map +1 -0
  226. package/dist/server/terminals/requiredTerminalService.js +103 -0
  227. package/dist/server/terminals/requiredTerminalService.js.map +1 -0
  228. package/dist/server/webSocketBridge.js +339 -0
  229. package/dist/server/webSocketBridge.js.map +1 -1
  230. package/dist/server/workbench/gatewayIntegration.js +4 -1
  231. package/dist/server/workbench/gatewayIntegration.js.map +1 -1
  232. package/dist/server/workspaceExplorerRoutes.js +13 -12
  233. package/dist/server/workspaceExplorerRoutes.js.map +1 -1
  234. package/dist/server/workspaces/fileContentService.js +9 -7
  235. package/dist/server/workspaces/fileContentService.js.map +1 -1
  236. package/dist/server/workspaces/fileOperationService.js +4 -3
  237. package/dist/server/workspaces/fileOperationService.js.map +1 -1
  238. package/dist/server/workspaces/projectWorkspaceCwds.js +0 -5
  239. package/dist/server/workspaces/projectWorkspaceCwds.js.map +1 -1
  240. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +36 -12
  241. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
  242. package/dist/server/workspaces/workspaceCatalog.js +6 -4
  243. package/dist/server/workspaces/workspaceCatalog.js.map +1 -1
  244. package/dist/server/workspaces/workspaceDeletionRoutes.js +5 -57
  245. package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -1
  246. package/dist/server/workspaces/workspaceProviderRegistry.js +75 -24
  247. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
  248. package/dist/server/workspaces/workspaceRemovalService.js +25 -3
  249. package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
  250. package/dist/server-plugin-api.d.ts +274 -44
  251. package/dist/server-plugin-api.js +319 -2
  252. package/dist/server-plugin-api.js.map +1 -1
  253. package/dist/serverPluginRecovery.js +4 -0
  254. package/dist/serverPluginRecovery.js.map +1 -1
  255. package/dist/sessiond/activeAgentProfile.js +27 -2
  256. package/dist/sessiond/activeAgentProfile.js.map +1 -1
  257. package/dist/sessiond/config.js +4 -3
  258. package/dist/sessiond/config.js.map +1 -1
  259. package/dist/sessiond/sessionDaemonClient.js +29 -8
  260. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  261. package/dist/shared/activeAgentProfile.js +2 -34
  262. package/dist/shared/activeAgentProfile.js.map +1 -1
  263. package/dist/shared/activity.js +0 -3
  264. package/dist/shared/activity.js.map +1 -1
  265. package/dist/shared/apiTypes.js +7 -2
  266. package/dist/shared/apiTypes.js.map +1 -1
  267. package/dist/shared/capabilities.js +5 -0
  268. package/dist/shared/capabilities.js.map +1 -1
  269. package/dist/shared/federatedRoutes.js +49 -9
  270. package/dist/shared/federatedRoutes.js.map +1 -1
  271. package/dist/shared/machinePluginIds.js +30 -7
  272. package/dist/shared/machinePluginIds.js.map +1 -1
  273. package/dist/shared/machineStatus.js +35 -1
  274. package/dist/shared/machineStatus.js.map +1 -1
  275. package/dist/shared/piWebStatusParsing.js +29 -0
  276. package/dist/shared/piWebStatusParsing.js.map +1 -1
  277. package/dist/shared/pluginApiTypes.d.ts +24 -9
  278. package/dist/shared/pluginApiTypes.js +2 -0
  279. package/dist/shared/pluginApiTypes.js.map +1 -0
  280. package/dist/shared/pluginBackendProtocol.js +163 -2
  281. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  282. package/dist/shared/pluginIds.js +10 -1
  283. package/dist/shared/pluginIds.js.map +1 -1
  284. package/dist/shared/requiredTerminalPlugin.js +6 -0
  285. package/dist/shared/requiredTerminalPlugin.js.map +1 -0
  286. package/dist/shared/serverNoticeContract.js +88 -0
  287. package/dist/shared/serverNoticeContract.js.map +1 -0
  288. package/dist/shared/sessionDefaults.js +41 -0
  289. package/dist/shared/sessionDefaults.js.map +1 -0
  290. package/dist/shared/workspaceFiles.js.map +1 -1
  291. package/docs/config.md +270 -323
  292. package/docs/plugins.md +171 -956
  293. package/examples/session-bridge-plugin/README.md +20 -0
  294. package/examples/session-bridge-plugin/docs/usage.md +54 -0
  295. package/examples/session-bridge-plugin/package.json +26 -0
  296. package/examples/session-bridge-plugin/src/browser/index.ts +87 -0
  297. package/examples/session-bridge-plugin/src/browser/protocol.ts +24 -0
  298. package/examples/session-bridge-plugin/src/companion.ts +65 -0
  299. package/examples/session-bridge-plugin/src/reviewRun.ts +39 -0
  300. package/examples/session-bridge-plugin/src/server.ts +85 -0
  301. package/examples/session-bridge-plugin/src/store.ts +80 -0
  302. package/examples/session-bridge-plugin/tsconfig.json +21 -0
  303. package/examples/workspace-provider-plugin/README.md +39 -0
  304. package/examples/workspace-provider-plugin/package.json +25 -0
  305. package/examples/workspace-provider-plugin/src/browser/index.ts +69 -0
  306. package/examples/workspace-provider-plugin/src/server.ts +68 -0
  307. package/examples/workspace-provider-plugin/tsconfig.json +21 -0
  308. package/package.json +22 -13
  309. package/skills/README.md +27 -2
  310. package/skills/relay-runner/SKILL.md +21 -13
  311. package/dist/client/assets/CodeViewer-CZHnKRwQ.js +0 -4
  312. package/dist/client/assets/TerminalPanel-B_EaRPHY.js +0 -187
  313. package/dist/client/assets/index-Bv1v-Jz7.js +0 -4717
  314. package/dist/client/assets/vendor-editor-core-vUi74DnD.js +0 -12
  315. package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +0 -46
  316. package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +0 -1
  317. package/dist/client/assets/vendor-terminal-BrP-ENHg.css +0 -1
  318. package/dist/client/assets/vendor-terminal-D8k4UKM2.js +0 -35
  319. package/dist/server/git/gitService.js +0 -316
  320. package/dist/server/git/gitService.js.map +0 -1
  321. package/dist/server/gitRoutes.js +0 -23
  322. package/dist/server/gitRoutes.js.map +0 -1
  323. package/dist/server/terminalProxyRoutes.js +0 -181
  324. package/dist/server/terminalProxyRoutes.js.map +0 -1
  325. package/dist/server/terminals/terminalRoutes.js +0 -164
  326. package/dist/server/terminals/terminalRoutes.js.map +0 -1
  327. package/dist/server/terminals/terminalService.js.map +0 -1
  328. package/dist/server/terminals/terminalSize.js +0 -17
  329. package/dist/server/terminals/terminalSize.js.map +0 -1
  330. package/dist/server/workspaces/gitWorktreeDiscovery.js +0 -43
  331. package/dist/server/workspaces/gitWorktreeDiscovery.js.map +0 -1
  332. package/dist/server/workspaces/workspaceService.js +0 -52
  333. package/dist/server/workspaces/workspaceService.js.map +0 -1
@@ -5,6 +5,9 @@ import { join, resolve } from "node:path";
5
5
  import { getAgentDir } from "@earendil-works/pi-coding-agent";
6
6
  import { piWebDataDir } from "../../config.js";
7
7
  import { AuthService, createModelRuntimeForAgentDir } from "./authService.js";
8
+ import { bootstrapAndFreezeGlobalExtensionProviders } from "./globalProviderPolicy.js";
9
+ import { ModelCatalogRefresher } from "./modelCatalogRefresher.js";
10
+ const noopLogger = { error() { }, info() { }, warn() { } };
8
11
  /**
9
12
  * Owns the normal-mode auth/model registries that are scoped to registered
10
13
  * projects. Management-embed authentication intentionally stays outside this
@@ -17,6 +20,8 @@ export class ProjectAuthService {
17
20
  this.initializations = new Map();
18
21
  this.subscriptions = new Map();
19
22
  this.listeners = new Set();
23
+ this.refreshers = new Map();
24
+ this.disposed = false;
20
25
  this.dataDir = deps.dataDir ?? piWebDataDir();
21
26
  this.globalAgentDir = deps.globalAgentDir ?? getAgentDir();
22
27
  }
@@ -27,6 +32,8 @@ export class ProjectAuthService {
27
32
  };
28
33
  }
29
34
  async forProject(projectId) {
35
+ if (this.disposed)
36
+ throw new Error("Project auth service is disposed");
30
37
  const project = (await this.deps.projects.list()).find((candidate) => candidate.id === projectId);
31
38
  if (project === undefined)
32
39
  throw new Error("Project not found");
@@ -53,9 +60,15 @@ export class ProjectAuthService {
53
60
  return project;
54
61
  }
55
62
  async dispose() {
63
+ if (this.disposed)
64
+ return;
65
+ this.disposed = true;
56
66
  const pending = [...this.initializations.values()];
57
67
  this.initializations.clear();
58
68
  await Promise.allSettled(pending);
69
+ for (const refresher of this.refreshers.values())
70
+ refresher.dispose();
71
+ this.refreshers.clear();
59
72
  for (const unsubscribe of this.subscriptions.values())
60
73
  unsubscribe();
61
74
  this.subscriptions.clear();
@@ -66,6 +79,8 @@ export class ProjectAuthService {
66
79
  service.dispose();
67
80
  }
68
81
  async forProjectRecord(project) {
82
+ if (this.disposed)
83
+ throw new Error("Project auth service is disposed");
69
84
  const paths = projectAuthStoragePaths(this.dataDir, project.path);
70
85
  const existing = this.services.get(paths.directory);
71
86
  if (existing !== undefined)
@@ -75,12 +90,21 @@ export class ProjectAuthService {
75
90
  return pending;
76
91
  const initialization = (async () => {
77
92
  await initializeProjectAuthFiles(paths, this.globalAgentDir);
93
+ const modelRuntime = await (this.deps.createModelRuntime?.(paths) ?? createModelRuntimeForAgentDir(paths.directory));
94
+ const logger = this.deps.logger ?? noopLogger;
95
+ await (this.deps.bootstrapProviders ?? bootstrapAndFreezeGlobalExtensionProviders)(modelRuntime, this.globalAgentDir, logger);
96
+ if (this.disposed)
97
+ throw new Error("Project auth service is disposed");
78
98
  const service = new AuthService({
79
- modelRuntime: await (this.deps.createModelRuntime?.(paths)
80
- ?? createModelRuntimeForAgentDir(paths.directory)),
99
+ modelRuntime,
100
+ logger,
81
101
  });
102
+ const refresher = (this.deps.createCatalogRefresher ?? ((options) => new ModelCatalogRefresher(options)))({ runtime: modelRuntime, logger, offline: this.deps.offline ?? false });
103
+ this.refreshers.set(paths.directory, refresher);
104
+ refresher.start();
82
105
  this.services.set(paths.directory, service);
83
106
  this.subscriptions.set(paths.directory, service.subscribe((change) => {
107
+ refresher.requestRefresh();
84
108
  for (const listener of this.listeners)
85
109
  listener(change);
86
110
  }));
@@ -95,6 +119,9 @@ export class ProjectAuthService {
95
119
  this.initializations.delete(paths.directory);
96
120
  }
97
121
  }
122
+ isRefreshInFlight() {
123
+ return [...this.refreshers.values()].some((refresher) => refresher.isRefreshInFlight());
124
+ }
98
125
  }
99
126
  export function projectAuthStoragePaths(dataDir, projectPath) {
100
127
  const normalizedPath = normalizeProjectPath(projectPath);
@@ -1 +1 @@
1
- {"version":3,"file":"projectAuthService.js","sourceRoot":"","sources":["../../../src/server/sessions/projectAuthService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectAuthService.js","sourceRoot":"","sources":["../../../src/server/sessions/projectAuthService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAqB,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAmB,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,0CAA0C,EAAsC,MAAM,2BAA2B,CAAC;AAC3H,OAAO,EAAE,qBAAqB,EAAqC,MAAM,4BAA4B,CAAC;AA6BtG,MAAM,UAAU,GAAkC,EAAE,KAAK,KAAiB,CAAC,EAAE,IAAI,KAAiB,CAAC,EAAE,IAAI,KAAiB,CAAC,EAAE,CAAC;AAE9H;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAU7B,YAA6B,IAAoC;QAApC,SAAI,GAAJ,IAAI,CAAgC;QAThD,aAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC1C,oBAAe,GAAG,IAAI,GAAG,EAAgC,CAAC;QAC1D,kBAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC9C,cAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;QACjD,eAAU,GAAG,IAAI,GAAG,EAAqG,CAAC;QAGnI,aAAQ,GAAG,KAAK,CAAC;QAGvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC;IAC7D,CAAC;IAED,SAAS,CAAC,QAAmC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAClG,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACpE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAC1B,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAAE,SAAS,CAAC,OAAO,EAAE,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAAE,WAAW,EAAE,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAgB;QAC7C,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAE1C,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,6BAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACrH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,0CAA0C,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAC9H,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;gBAC9B,YAAY;gBACZ,MAAM;aACP,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;YAClL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChD,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnE,SAAS,CAAC,cAAc,EAAE,CAAC;gBAC3B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;oBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC,CAAC;YACJ,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC;YACH,OAAO,MAAM,cAAc,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,cAAc;gBAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,WAAmB;IAC1E,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACjE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,KAA8B,EAAE,cAAsB;IAC9F,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,MAAM,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACvF,MAAM,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,WAAmB,EAAE,MAAc,EAAE,QAAgB;IACxF,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,KAAK,CAAC;IAClF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,KAAK,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAY;IAC/C,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC1E,CAAC"}
@@ -53,7 +53,7 @@ export async function createScopedSettingsManager(options) {
53
53
  globalAgentDir: options.globalAgentDir,
54
54
  scopeDirectory: options.scopeDirectory,
55
55
  mode: options.mode,
56
- })), {
56
+ }), options.projectTrusted === undefined ? {} : { projectTrusted: options.projectTrusted }), {
57
57
  piWebScopeKey: resolve(options.scopeDirectory),
58
58
  piWebModelScopeEditable: options.mode === "normal",
59
59
  });
@@ -136,9 +136,13 @@ class PreferenceOverrideSettingsStorage {
136
136
  // keys that actually diverge from the real agent baseline so unrelated
137
137
  // writes cannot pin shared defaults into the override file.
138
138
  const nextPreferences = preferenceOverridesAgainstBaseline(pickScopedOverrides(nextSettings, this.mode), pickSettings(agentSettings, SESSION_PREFERENCE_KEYS), this.mode);
139
- const existingPreferences = readPreferenceOverrides(this.scopeDirectory, this.mode);
139
+ const existingPreferenceSettings = readPreferenceSettings(this.scopeDirectory);
140
+ const existingPreferences = pickScopedOverrides(existingPreferenceSettings, this.mode);
140
141
  if (!stableJsonEqual(existingPreferences, nextPreferences)) {
141
- writeJsonFile(this.preferencesPath, nextPreferences);
142
+ writeJsonFile(this.preferencesPath, {
143
+ ...omitScopedKeys(existingPreferenceSettings, this.mode),
144
+ ...nextPreferences,
145
+ });
142
146
  }
143
147
  const nextSharedSettings = settingsVisibleToSession(omitScopedKeys(nextSettings, this.mode));
144
148
  // Invalid agent settings are left for SettingsManager diagnostics on read.
@@ -210,10 +214,14 @@ export function migrateLegacyPreferenceOverrides(scopeDirectory, mode) {
210
214
  function readPreferenceOverrides(scopeDirectory, mode) {
211
215
  const preferencesPath = preferencesFilePath(scopeDirectory);
212
216
  if (existsSync(preferencesPath)) {
213
- return readPreferenceOverridesFromPath(preferencesPath, mode);
217
+ return pickScopedOverrides(readPreferenceSettings(scopeDirectory), mode);
214
218
  }
215
219
  return migrateLegacyPreferenceOverrides(scopeDirectory, mode);
216
220
  }
221
+ function readPreferenceSettings(scopeDirectory) {
222
+ const raw = readTextFileIfExists(preferencesFilePath(scopeDirectory));
223
+ return raw === undefined ? {} : parseSettingsObject(raw);
224
+ }
217
225
  function readPreferenceOverridesFromPath(preferencesPath, mode) {
218
226
  const raw = readTextFileIfExists(preferencesPath);
219
227
  if (raw === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"projectSettingsScope.js","sourceRoot":"","sources":["../../../src/server/sessions/projectSettingsScope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectSettingsScope.js","sourceRoot":"","sources":["../../../src/server/sessions/projectSettingsScope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { hasTrustRequiringProjectResources } from "@earendil-works/pi-coding-agent";
2
+ /**
3
+ * Run the `project_trust` event over a pre-trust extension set, mirroring
4
+ * `emitProjectTrustEvent` in the SDK's `dist/core/extensions/runner.js`. That
5
+ * helper is not part of the package's public exports (the main index exports
6
+ * only the `ProjectTrust*` types and `ProjectTrustStore`, and the package's
7
+ * `exports` map blocks subpath imports, so `resolveProjectTrusted`/
8
+ * `emitProjectTrustEvent` are not callable from here), so PI WEB reimplements
9
+ * its documented decision loop over the SDK-provided extension objects: per
10
+ * extension, the registered `project_trust` handlers run in order; the first
11
+ * handler returning `yes`/`no` decides and `undecided` falls through to the
12
+ * next handler/extension; a throwing handler is collected as an error and
13
+ * later handlers still get their chance.
14
+ */
15
+ export async function emitWebProjectTrustEvent(extensionsResult, event, ctx) {
16
+ const errors = [];
17
+ for (const extension of extensionsResult.extensions) {
18
+ // A single extension may register multiple handlers for the same event.
19
+ // The handlers map is keyed exactly as the extension registered it, so a
20
+ // `project_trust` key guarantees `ProjectTrustHandler` entries — the same
21
+ // assumption the SDK's emitProjectTrustEvent makes.
22
+ const handlers = extension.handlers.get("project_trust");
23
+ if (handlers === undefined || handlers.length === 0)
24
+ continue;
25
+ for (const handler of handlers) {
26
+ try {
27
+ const handlerResult = await handler(event, ctx);
28
+ // The SDK reads `trusted` straight off the handler result, so a
29
+ // non-object would throw there; PI WEB reports it as a handler error
30
+ // and lets the next handler/extension try.
31
+ if (typeof handlerResult !== "object" || handlerResult === null) {
32
+ errors.push({ extensionPath: extension.path, error: "project_trust handler returned a non-object result" });
33
+ continue;
34
+ }
35
+ const trusted = "trusted" in handlerResult ? handlerResult.trusted : undefined;
36
+ if (trusted === "undecided") {
37
+ continue;
38
+ }
39
+ // Rebuild the decision so only the documented `trusted`/`remember`
40
+ // fields carry over — the SDK's resolver reads exactly those two.
41
+ const remember = "remember" in handlerResult ? handlerResult.remember : undefined;
42
+ return {
43
+ result: {
44
+ trusted: trusted === "yes" ? "yes" : "no",
45
+ ...(remember === true ? { remember: true } : {}),
46
+ },
47
+ errors,
48
+ };
49
+ }
50
+ catch (error) {
51
+ errors.push({
52
+ extensionPath: extension.path,
53
+ error: error instanceof Error ? error.message : String(error),
54
+ });
55
+ }
56
+ }
57
+ }
58
+ return { errors };
59
+ }
60
+ /**
61
+ * PI WEB's headless project-trust context. `hasUI` is false because there is
62
+ * no browser trust prompt (chartered behavior: `ask` never loads untrusted
63
+ * resources), so the UI methods are inert — the same no-UI shape the SDK
64
+ * passes when pi runs without a trust UI. The host mode is `rpc`, mirroring
65
+ * how PI WEB binds its session extension contexts.
66
+ */
67
+ function webProjectTrustContext(cwd) {
68
+ return {
69
+ cwd,
70
+ mode: "rpc",
71
+ hasUI: false,
72
+ ui: {
73
+ select: () => Promise.resolve(undefined),
74
+ confirm: () => Promise.resolve(false),
75
+ input: () => Promise.resolve(undefined),
76
+ notify: () => undefined,
77
+ },
78
+ };
79
+ }
80
+ /**
81
+ * Resolve whether a workspace's project-local `.pi/` resources may load, the
82
+ * way `pi` resolves it — a faithful mirror of the SDK's `resolveProjectTrusted`
83
+ * (`dist/core/project-trust.js`, also not a public export). PI WEB has no
84
+ * browser trust prompt, so the precedence is, in order:
85
+ *
86
+ * 1. Nothing trust-requiring under `cwd` → trusted.
87
+ * 2. Pre-trust extensions (user/global — project-local ones are not loaded
88
+ * yet) may decide via the `project_trust` event; `remember: true` persists
89
+ * the decision to the agent dir's `trust.json`. Handler errors are reported
90
+ * through {@link WebProjectTrustResolution.onExtensionError} and never
91
+ * abort resolution.
92
+ * 3. Otherwise the saved `trust.json` decision wins.
93
+ * 4. Otherwise `defaultProjectTrust` decides (`always` trusts; `never`/`ask`
94
+ * do not — `ask` cannot prompt in the browser, matching `pi` run without a
95
+ * trust UI).
96
+ */
97
+ export async function resolveWebProjectTrusted(resolution) {
98
+ const { cwd, trustStore, settingsManager } = resolution;
99
+ if (!hasTrustRequiringProjectResources(cwd))
100
+ return true;
101
+ if (resolution.extensionsResult) {
102
+ const { result, errors } = await emitWebProjectTrustEvent(resolution.extensionsResult, { type: "project_trust", cwd }, webProjectTrustContext(cwd));
103
+ for (const error of errors) {
104
+ resolution.onExtensionError?.(`Extension "${error.extensionPath}" project_trust error: ${error.error}`);
105
+ }
106
+ if (result) {
107
+ const trusted = result.trusted === "yes";
108
+ if (result.remember === true) {
109
+ trustStore.set(cwd, trusted);
110
+ }
111
+ return trusted;
112
+ }
113
+ }
114
+ const saved = trustStore.get(cwd);
115
+ if (saved !== null)
116
+ return saved;
117
+ return settingsManager.getDefaultProjectTrust() === "always";
118
+ }
119
+ //# sourceMappingURL=projectTrust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectTrust.js","sourceRoot":"","sources":["../../../src/server/sessions/projectTrust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,iCAAiC,EAAkF,MAAM,iCAAiC,CAAC;AAkDxM;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,gBAA6C,EAC7C,KAAwB,EACxB,GAAwB;IAExB,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACpD,wEAAwE;QACxE,yEAAyE;QACzE,0EAA0E;QAC1E,oDAAoD;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,aAAa,GAAY,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzD,gEAAgE;gBAChE,qEAAqE;gBACrE,2CAA2C;gBAC3C,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;oBAChE,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;oBAC5G,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/E,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,mEAAmE;gBACnE,kEAAkE;gBAClE,MAAM,QAAQ,GAAG,UAAU,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,OAAO;oBACL,MAAM,EAAE;wBACN,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;wBACzC,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjD;oBACD,MAAM;iBACP,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,aAAa,EAAE,SAAS,CAAC,IAAI;oBAC7B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,OAAO;QACL,GAAG;QACH,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,EAAE,EAAE;YACF,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YACxC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YACrC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YACvC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;SACxB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAqC;IAClF,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;IACxD,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAChC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,wBAAwB,CACvD,UAAU,CAAC,gBAAgB,EAC3B,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,EAC9B,sBAAsB,CAAC,GAAG,CAAC,CAC5B,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,UAAU,CAAC,gBAAgB,EAAE,CAAC,cAAc,KAAK,CAAC,aAAa,0BAA0B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;YACzC,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,eAAe,CAAC,sBAAsB,EAAE,KAAK,QAAQ,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { readFile, stat, unlink, writeFile } from "node:fs/promises";
3
+ const markerPath = (sessionFile) => `${sessionFile}.pi-web-activity.json`;
4
+ const isMissing = (error) => typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
5
+ /** Best-effort advisory presence, not a lock or an atomic ownership claim. */
6
+ export class SessionActivityMarker {
7
+ constructor(options = {}) {
8
+ this.entries = new Map();
9
+ this.owner = options.owner ?? randomUUID();
10
+ this.now = options.now ?? Date.now;
11
+ this.onError = options.onError;
12
+ }
13
+ async refresh(sessionFile, busy) {
14
+ if (sessionFile === undefined || sessionFile === "" || this.disposal)
15
+ return;
16
+ let entry = this.entries.get(sessionFile);
17
+ if (!entry) {
18
+ entry = { pending: Promise.resolve(), activeElsewhere: false };
19
+ this.entries.set(sessionFile, entry);
20
+ }
21
+ const state = entry;
22
+ await this.enqueue(state, async () => {
23
+ const now = this.now();
24
+ if (state.busy === busy && state.refreshedAt !== undefined && now - state.refreshedAt < 2_000)
25
+ return;
26
+ state.busy = busy;
27
+ state.refreshedAt = now;
28
+ // Keep the last known activity visible until the filesystem read completes.
29
+ // Never create directories or sidecars for transcripts that do not exist.
30
+ await stat(sessionFile);
31
+ const marker = await this.readMarker(sessionFile);
32
+ state.activeElsewhere = marker !== undefined && marker.owner !== this.owner && now - marker.updatedAt <= 15_000;
33
+ if (state.activeElsewhere)
34
+ return;
35
+ if (busy) {
36
+ await writeFile(markerPath(sessionFile), JSON.stringify({ owner: this.owner, updatedAt: now }));
37
+ }
38
+ else if (marker?.owner === this.owner) {
39
+ await unlink(markerPath(sessionFile));
40
+ }
41
+ });
42
+ }
43
+ isActiveElsewhere(sessionFile) {
44
+ return sessionFile === undefined ? false : this.entries.get(sessionFile)?.activeElsewhere ?? false;
45
+ }
46
+ async release(sessionFile) {
47
+ if (sessionFile === undefined || sessionFile === "")
48
+ return;
49
+ const entry = this.entries.get(sessionFile);
50
+ if (!entry)
51
+ return;
52
+ const pending = this.enqueue(entry, async () => {
53
+ entry.activeElsewhere = false;
54
+ delete entry.refreshedAt;
55
+ delete entry.busy;
56
+ if ((await this.readMarker(sessionFile))?.owner === this.owner) {
57
+ await unlink(markerPath(sessionFile));
58
+ }
59
+ });
60
+ await pending;
61
+ if (entry.pending === pending)
62
+ this.entries.delete(sessionFile);
63
+ }
64
+ async dispose() {
65
+ this.disposal ??= Promise.all([...this.entries.keys()].map((file) => this.release(file))).then(() => undefined);
66
+ await this.disposal;
67
+ }
68
+ enqueue(entry, operation) {
69
+ entry.pending = entry.pending.then(operation).catch((error) => {
70
+ entry.activeElsewhere = false;
71
+ if (!isMissing(error)) {
72
+ // An error reporter must not turn advisory IO into a session failure.
73
+ try {
74
+ this.onError?.(error);
75
+ }
76
+ catch { /* Best effort only. */ }
77
+ }
78
+ });
79
+ return entry.pending;
80
+ }
81
+ async readMarker(sessionFile) {
82
+ let text;
83
+ try {
84
+ text = await readFile(markerPath(sessionFile), "utf8");
85
+ }
86
+ catch (error) {
87
+ if (isMissing(error))
88
+ return undefined;
89
+ throw error;
90
+ }
91
+ let value;
92
+ try {
93
+ value = JSON.parse(text);
94
+ }
95
+ catch {
96
+ return undefined;
97
+ }
98
+ if (typeof value !== "object" || value === null || !("owner" in value) || !("updatedAt" in value))
99
+ return undefined;
100
+ if (typeof value.owner !== "string" || typeof value.updatedAt !== "number" || !Number.isFinite(value.updatedAt))
101
+ return undefined;
102
+ return { owner: value.owner, updatedAt: value.updatedAt };
103
+ }
104
+ }
105
+ //# sourceMappingURL=sessionActivityMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionActivityMarker.js","sourceRoot":"","sources":["../../../src/server/sessions/sessionActivityMarker.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { clientSessionFirstMessagePreview } from "./clientSessionPreview.js";
1
2
  export function archiveInputFromListEntry(session) {
2
3
  return {
3
4
  sessionId: session.id,
@@ -91,17 +92,10 @@ export function clientSessionFromArchivedRecord(record, fallback) {
91
92
  created,
92
93
  modified,
93
94
  messageCount,
94
- firstMessage,
95
+ firstMessage: clientSessionFirstMessagePreview(firstMessage),
95
96
  ...(parentSessionPath === undefined ? {} : { parentSessionPath }),
96
97
  archived: true,
97
98
  archivedAt: record.archivedAt,
98
99
  };
99
100
  }
100
- export function compareArchivedRecords(a, b) {
101
- return archivedTimestamp(b) - archivedTimestamp(a);
102
- }
103
- function archivedTimestamp(record) {
104
- const time = Date.parse(record.archivedAt);
105
- return Number.isNaN(time) ? 0 : time;
106
- }
107
101
  //# sourceMappingURL=sessionArchiveMapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionArchiveMapping.js","sourceRoot":"","sources":["../../../src/server/sessions/sessionArchiveMapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionArchiveMapping.js","sourceRoot":"","sources":["../../../src/server/sessions/sessionArchiveMapping.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAW7E,MAAM,UAAU,yBAAyB,CAAC,OAA2B;IACnE,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;QACxC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;KACrG,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,6BAA6B,CAAC,OAAuB;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC;IAC9E,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;QACpC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QACrC,YAAY,EAAE,EAAE;QAChB,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3E,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAA2B;IACvE,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,OAAO;QAClB,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;KACrG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,MAA6B,EAAE,QAAwC;IACxH,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE,IAAI,CAAC;IACnD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,QAAQ,EAAE,iBAAiB,CAAC;IAClF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,SAAS;QACpB,IAAI;QACJ,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,IAAI;QACd,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC1D,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAuB,EAAE,QAAiB;IAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC;IAC9E,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,SAAS;QACrB,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;QACpC,QAAQ;QACR,aAAa,EAAE,OAAO;QACtB,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAoC;IAC5E,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,yBAAyB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7F,IAAI,SAAS,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,6BAA6B,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACzG,MAAM,IAAI,KAAK,CAAC,2CAA2C,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAA6B,EAAE,QAAwC;IACrH,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE,IAAI,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,CAAC;IACnE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,CAAC;IACnE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxJ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI,CAAC;IAC3C,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,QAAQ,EAAE,iBAAiB,CAAC;IAClF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,SAAS;QACpB,IAAI;QACJ,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,YAAY,EAAE,gCAAgC,CAAC,YAAY,CAAC;QAC5D,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC"}
@@ -53,7 +53,9 @@ export class SessionCommandService {
53
53
  /** Fork a tree entry into a new session file while preserving the original. */
54
54
  async forkEntry(sessionId, entryId, eventScope, options) {
55
55
  const active = await this.getActive(sessionId, eventScope);
56
- if (sessionHasActiveWork(active.runtime.session))
56
+ if (this.lifecycle.isTreeNavigationActive?.(active.runtime.session) === true)
57
+ return treeNavigationActiveUnsupported();
58
+ if (this.hasActiveWork(active.runtime.session))
57
59
  return forkActiveUnsupported("fork");
58
60
  const relatedName = await this.nextRelatedSessionName(active, "fork");
59
61
  if (this.lifecycle.isTreeNavigationActive?.(active.runtime.session) === true)
@@ -63,7 +65,7 @@ export class SessionCommandService {
63
65
  const result = await this.runSessionReplacement(active.runtime, async () => {
64
66
  const session = active.runtime.session;
65
67
  if (options !== undefined && session.sessionManager.getLeafId() !== options.expectedLeafId) {
66
- throw new Error("The session changed since /tree was opened. Reopen /tree and try again.");
68
+ throw new Error("打开 /tree 后会话已发生变化。请重新打开 /tree 后重试。");
67
69
  }
68
70
  const forkResult = await active.runtime.fork(entryId, { position: this.forkPosition(session, entryId) });
69
71
  if (!forkResult.cancelled)
@@ -101,7 +103,7 @@ export class SessionCommandService {
101
103
  return { type: "done", message: "已开始压缩…" };
102
104
  }
103
105
  async reload(session) {
104
- if (sessionHasActiveWork(session))
106
+ if (this.hasActiveWork(session))
105
107
  return { type: "unsupported", message: "会话活动期间无法重新加载,请先停止当前活动。" };
106
108
  if (this.lifecycle.reloadSession === undefined)
107
109
  return { type: "unsupported", message: "当前会话运行时不支持 /reload。" };
@@ -115,7 +117,7 @@ export class SessionCommandService {
115
117
  return { type: "done", message: "会话运行时资源已重新加载。扩展、技能、提示词模板、主题以及上下文/系统提示词文件已刷新;PI WEB 浏览器插件变更仍需另行刷新浏览器页面。" };
116
118
  }
117
119
  async clone(active, eventScope) {
118
- if (sessionHasActiveWork(active.runtime.session))
120
+ if (this.hasActiveWork(active.runtime.session))
119
121
  return forkActiveUnsupported("clone");
120
122
  const initialLeafId = active.runtime.session.sessionManager.getLeafId();
121
123
  if (initialLeafId === null || initialLeafId === "")
@@ -139,7 +141,7 @@ export class SessionCommandService {
139
141
  return { type: "done", message: "会话已克隆", session: clientSessionFromRuntime(active.runtime) };
140
142
  }
141
143
  fork(active, eventScope) {
142
- if (sessionHasActiveWork(active.runtime.session))
144
+ if (this.hasActiveWork(active.runtime.session))
143
145
  return forkActiveUnsupported("fork");
144
146
  const messages = active.runtime.session.getUserMessagesForForking();
145
147
  if (!messages.length)
@@ -155,7 +157,7 @@ export class SessionCommandService {
155
157
  }
156
158
  tree(session) {
157
159
  if (this.hasActiveWork(session)) {
158
- return { type: "unsupported", message: "Cannot open the session tree while the session is active. Stop current activity and try /tree again." };
160
+ return { type: "unsupported", message: "会话活动期间无法打开会话树。请先停止当前活动,再尝试 /tree。" };
159
161
  }
160
162
  if (this.lifecycle.getSessionTree === undefined)
161
163
  return treeUnavailableUnsupported();
@@ -164,12 +166,12 @@ export class SessionCommandService {
164
166
  if (tree === undefined)
165
167
  return treeUnavailableUnsupported();
166
168
  if (tree.nodes.length === 0)
167
- return { type: "unsupported", message: "Cannot navigate an empty session tree." };
169
+ return { type: "unsupported", message: "无法导航空会话树。" };
168
170
  return { type: "tree", tree };
169
171
  }
170
172
  catch (error) {
171
173
  const message = error instanceof Error ? error.message : String(error);
172
- return { type: "unsupported", message: `Unable to open the session tree: ${message}` };
174
+ return { type: "unsupported", message: `无法打开会话树: ${message}` };
173
175
  }
174
176
  }
175
177
  hasActiveWork(session) {
@@ -290,10 +292,10 @@ function forkActiveUnsupported(command) {
290
292
  return { type: "unsupported", message: `会话活动期间无法${command === "fork" ? "分叉" : "克隆"}。请先停止当前活动。` };
291
293
  }
292
294
  function treeUnavailableUnsupported() {
293
- return { type: "unsupported", message: "Session tree navigation is not available with this Pi runtime." };
295
+ return { type: "unsupported", message: "当前 Pi 运行时不支持会话树导航。" };
294
296
  }
295
297
  function treeNavigationActiveUnsupported() {
296
- return { type: "unsupported", message: "Cannot run commands while session tree navigation is active. Stop or finish the navigation first." };
298
+ return { type: "unsupported", message: "会话树导航期间无法运行命令。请先停止或完成导航。" };
297
299
  }
298
300
  function promptDraft(text) {
299
301
  return text === undefined ? {} : { promptDraft: text };