@chainingintention/pi-web-cn 1.202610.4 → 2.202610.0

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 (299) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +31 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/assets/PiWebApp-BXSziMEg.js +4921 -0
  5. package/dist/client/assets/classic-CyM97Akm.css +54 -0
  6. package/dist/client/assets/external-B9K8duyP.js +2 -0
  7. package/dist/client/assets/graphite-DquaqFXU.css +54 -0
  8. package/dist/client/assets/index-cdtUOfOW.js +2 -0
  9. package/dist/client/assets/paper-CB1oLuRr.css +54 -0
  10. package/dist/client/assets/pi-web-dark-D_KtbM95.css +54 -0
  11. package/dist/client/assets/pi-web-light-DSNLMIBI.css +54 -0
  12. package/dist/client/assets/vendor-editor-core-BfnHL1Dg.js +10 -0
  13. package/dist/client/assets/{vendor-editor-languages-DOCw3vc9.js → vendor-editor-languages-bNquDJP0.js} +1 -1
  14. package/dist/client/index.html +3 -47
  15. package/dist/config.js +11 -2
  16. package/dist/config.js.map +1 -1
  17. package/dist/nativeServices/installedServiceDefinitions.js +10 -7
  18. package/dist/nativeServices/installedServiceDefinitions.js.map +1 -1
  19. package/dist/pi-packages/captains-log/dist/browser/index.js +43 -47
  20. package/dist/pi-packages/captains-log/dist/browser/panel.js +6 -10
  21. package/dist/pi-packages/captains-log/dist/companion.js +1 -1
  22. package/dist/pi-packages/captains-log/package.json +4 -4
  23. package/dist/pi-packages/relays/extensions/index.js +61 -0
  24. package/dist/pi-packages/relays/package.json +10 -1
  25. package/dist/pi-packages/relays/pi-web-plugin.js +52 -2
  26. package/dist/pi-packages/relays/prompts/relay-worktree.md +6 -16
  27. package/dist/pi-packages/relays/prompts/relay.md +6 -33
  28. package/dist/pi-packages/relays/relayDispatch.js +67 -0
  29. package/dist/pi-packages/relays/relayIdentity.js +37 -0
  30. package/dist/pi-packages/relays/relaysPanelElement.js +75 -37
  31. package/dist/pi-packages/relays/skills/relay/SKILL.md +24 -68
  32. package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +40 -219
  33. package/dist/pi-packages/workflows/browser/pi-web-plugin.js +42 -0
  34. package/dist/pi-packages/workflows/browser/worktreeDialog.js +170 -0
  35. package/dist/pi-packages/workflows/package.json +23 -0
  36. package/dist/pi-packages/workflows/prompts/worktree.md +21 -0
  37. package/dist/pi-packages/workflows/server-plugin.js +586 -0
  38. package/dist/pi-packages/workflows/vite.config.mjs +17 -0
  39. package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +22 -0
  40. package/dist/pi-web-plugins/code-highlight/package.json +13 -0
  41. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +115 -105
  42. package/dist/pi-web-plugins/git/browser/git-panel.js +60 -46
  43. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +23 -3
  44. package/dist/pi-web-plugins/git/git-backend.js +20 -1
  45. package/dist/pi-web-plugins/git/server-plugin.js +20 -3
  46. package/dist/pi-web-plugins/git/workspace-discovery-notify.cjs +14 -0
  47. package/dist/pi-web-plugins/git/workspaceDiscoveryHooks.js +186 -0
  48. package/dist/pi-web-plugins/info/infoInternals.js +3 -3
  49. package/dist/pi-web-plugins/info/pi-web-plugin.js +1 -1
  50. package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +1087 -422
  51. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +8 -3
  52. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +39 -33
  53. package/dist/pi-web-plugins/updates/pi-web-plugin.js +13 -13
  54. package/dist/pi-web-plugins/updates/updatesLogic.js +4 -5
  55. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +21 -1
  56. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +39 -22
  57. package/dist/pi-web-plugins/zh-cn/bundled.json +44 -1
  58. package/dist/pi-web-plugins/zh-cn/cli.json +60 -1
  59. package/dist/pi-web-plugins/zh-cn/client.json +7 -1
  60. package/dist/pi-web-plugins/zh-cn/components.json +252 -2
  61. package/dist/pi-web-plugins/zh-cn/config-errors.json +17 -1
  62. package/dist/pi-web-plugins/zh-cn/files.json +10 -1
  63. package/dist/pi-web-plugins/zh-cn/main.json +1 -1
  64. package/dist/pi-web-plugins/zh-cn/provider-auth.json +2 -1
  65. package/dist/pi-web-plugins/zh-cn/server.json +83 -1
  66. package/dist/piAi.js +4 -0
  67. package/dist/piAi.js.map +1 -0
  68. package/dist/piRuntime.js +150 -0
  69. package/dist/piRuntime.js.map +1 -0
  70. package/dist/piSdk.js +5 -0
  71. package/dist/piSdk.js.map +1 -0
  72. package/dist/piWebUpdate.js +508 -0
  73. package/dist/piWebUpdate.js.map +1 -0
  74. package/dist/piWebVersionReport.js +43 -1
  75. package/dist/piWebVersionReport.js.map +1 -1
  76. package/dist/plugin-api.d.ts +393 -51
  77. package/dist/server/activity/workspaceActivityService.js +8 -1
  78. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  79. package/dist/server/app.js +19 -4
  80. package/dist/server/app.js.map +1 -1
  81. package/dist/server/browserMessageProjection.js +39 -20
  82. package/dist/server/browserMessageProjection.js.map +1 -1
  83. package/dist/server/configRoutes.js +8 -0
  84. package/dist/server/configRoutes.js.map +1 -1
  85. package/dist/server/index.js +10 -1
  86. package/dist/server/index.js.map +1 -1
  87. package/dist/server/knownAutoInstallPiPackages.js +6 -0
  88. package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
  89. package/dist/server/machines/machineProxyRoutes.js +37 -2
  90. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  91. package/dist/server/navigationPreferenceRoutes.js +59 -0
  92. package/dist/server/navigationPreferenceRoutes.js.map +1 -0
  93. package/dist/server/piPackageService.js +1 -1
  94. package/dist/server/piPackageService.js.map +1 -1
  95. package/dist/server/piWebPluginCatalog.js +1 -1
  96. package/dist/server/piWebPluginCatalog.js.map +1 -1
  97. package/dist/server/piWebPluginService.js +7 -1
  98. package/dist/server/piWebPluginService.js.map +1 -1
  99. package/dist/server/piWebStatus.js +17 -56
  100. package/dist/server/piWebStatus.js.map +1 -1
  101. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +1 -1
  102. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -1
  103. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +40 -42
  104. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -1
  105. package/dist/server/plugins/pluginBackendProxyRoutes.js +40 -44
  106. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
  107. package/dist/server/plugins/pluginBackendRegistry.js +66 -35
  108. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
  109. package/dist/server/plugins/projectPluginSettings.js +95 -0
  110. package/dist/server/plugins/projectPluginSettings.js.map +1 -0
  111. package/dist/server/plugins/serverPluginCatalogCapability.js +106 -0
  112. package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -0
  113. package/dist/server/plugins/serverPluginRuntime.js +47 -11
  114. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  115. package/dist/server/projectTrustRoutes.js +1 -1
  116. package/dist/server/projectTrustRoutes.js.map +1 -1
  117. package/dist/server/projects/projectLifecycleService.js +17 -7
  118. package/dist/server/projects/projectLifecycleService.js.map +1 -1
  119. package/dist/server/realtime/sessionEventHub.js +22 -9
  120. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  121. package/dist/server/sessiond/agentHttpDispatcher.js +1 -1
  122. package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -1
  123. package/dist/server/sessiond/autoInstallPiPackages.js +3 -3
  124. package/dist/server/sessiond/pluginBackendChannelRoutes.js +27 -14
  125. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
  126. package/dist/server/sessiond/pluginBackendRoutes.js +56 -49
  127. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
  128. package/dist/server/sessiond/pluginCatalogRoutes.js +41 -0
  129. package/dist/server/sessiond/pluginCatalogRoutes.js.map +1 -0
  130. package/dist/server/sessiond/sessionProxyRoutes.js +46 -1
  131. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  132. package/dist/server/sessiond/sessionServiceDependencies.js +1 -0
  133. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  134. package/dist/server/sessiond/workspaceCatalogRoutes.js +6 -2
  135. package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -1
  136. package/dist/server/sessiond/workspaceNotificationRoutes.js +55 -0
  137. package/dist/server/sessiond/workspaceNotificationRoutes.js.map +1 -0
  138. package/dist/server/sessiond.js +58 -8
  139. package/dist/server/sessiond.js.map +1 -1
  140. package/dist/server/sessions/askUserDomain.js +232 -0
  141. package/dist/server/sessions/askUserDomain.js.map +1 -0
  142. package/dist/server/sessions/askUserTool.js +18 -18
  143. package/dist/server/sessions/askUserTool.js.map +1 -1
  144. package/dist/server/sessions/attachmentService.js +1 -1
  145. package/dist/server/sessions/attachmentService.js.map +1 -1
  146. package/dist/server/sessions/authRoutes.js +12 -0
  147. package/dist/server/sessions/authRoutes.js.map +1 -1
  148. package/dist/server/sessions/authService.js +11 -1
  149. package/dist/server/sessions/authService.js.map +1 -1
  150. package/dist/server/sessions/builtinExtensionFactories.js +36 -0
  151. package/dist/server/sessions/builtinExtensionFactories.js.map +1 -0
  152. package/dist/server/sessions/companionBackend.js +286 -0
  153. package/dist/server/sessions/companionBackend.js.map +1 -0
  154. package/dist/server/sessions/dockerEnvironmentFacts.js +16 -1
  155. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
  156. package/dist/server/sessions/extensionSessionDispatch.js +76 -0
  157. package/dist/server/sessions/extensionSessionDispatch.js.map +1 -0
  158. package/dist/server/sessions/globalProviderPolicy.js +88 -19
  159. package/dist/server/sessions/globalProviderPolicy.js.map +1 -1
  160. package/dist/server/sessions/managementAgentTools.js +2 -2
  161. package/dist/server/sessions/managementAgentTools.js.map +1 -1
  162. package/dist/server/sessions/mcpAuthFlowService.js +289 -0
  163. package/dist/server/sessions/mcpAuthFlowService.js.map +1 -0
  164. package/dist/server/sessions/mcpAuthRoutes.js +104 -0
  165. package/dist/server/sessions/mcpAuthRoutes.js.map +1 -0
  166. package/dist/server/sessions/mcpOAuthCredentialAdapter.js +92 -0
  167. package/dist/server/sessions/mcpOAuthCredentialAdapter.js.map +1 -0
  168. package/dist/server/sessions/messageHistoryTarget.js +79 -0
  169. package/dist/server/sessions/messageHistoryTarget.js.map +1 -0
  170. package/dist/server/sessions/piSessionEventConnections.js +5 -2
  171. package/dist/server/sessions/piSessionEventConnections.js.map +1 -1
  172. package/dist/server/sessions/piSessionManagerGateway.js +32 -27
  173. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  174. package/dist/server/sessions/piSessionService.js +1296 -341
  175. package/dist/server/sessions/piSessionService.js.map +1 -1
  176. package/dist/server/sessions/plainTextTheme.js +1 -1
  177. package/dist/server/sessions/plainTextTheme.js.map +1 -1
  178. package/dist/server/sessions/projectAuthService.js +1 -1
  179. package/dist/server/sessions/projectAuthService.js.map +1 -1
  180. package/dist/server/sessions/projectSettingsScope.js +1 -1
  181. package/dist/server/sessions/projectSettingsScope.js.map +1 -1
  182. package/dist/server/sessions/projectTrust.js +1 -1
  183. package/dist/server/sessions/projectTrust.js.map +1 -1
  184. package/dist/server/sessions/queuedMessageMutation.js +170 -0
  185. package/dist/server/sessions/queuedMessageMutation.js.map +1 -0
  186. package/dist/server/sessions/relaySkill.js +57 -7
  187. package/dist/server/sessions/relaySkill.js.map +1 -1
  188. package/dist/server/sessions/sessionArchiveMapping.js +6 -0
  189. package/dist/server/sessions/sessionArchiveMapping.js.map +1 -1
  190. package/dist/server/sessions/sessionArchiveStore.js +5 -1
  191. package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
  192. package/dist/server/sessions/sessionArchiveTree.js +2 -2
  193. package/dist/server/sessions/sessionArchiveTree.js.map +1 -1
  194. package/dist/server/sessions/sessionCommandService.js +11 -24
  195. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  196. package/dist/server/sessions/sessionImageDimensions.js +31 -0
  197. package/dist/server/sessions/sessionImageDimensions.js.map +1 -0
  198. package/dist/server/sessions/sessionMediaIndex.js +191 -0
  199. package/dist/server/sessions/sessionMediaIndex.js.map +1 -0
  200. package/dist/server/sessions/sessionMetadata.js +51 -0
  201. package/dist/server/sessions/sessionMetadata.js.map +1 -0
  202. package/dist/server/sessions/sessionModelScope.js +2 -2
  203. package/dist/server/sessions/sessionModelScope.js.map +1 -1
  204. package/dist/server/sessions/sessionNameGenerator.js +13 -33
  205. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  206. package/dist/server/sessions/sessionReadAccess.js +41 -0
  207. package/dist/server/sessions/sessionReadAccess.js.map +1 -0
  208. package/dist/server/sessions/sessionRoutes.js +61 -6
  209. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  210. package/dist/server/sessions/sessionSummaryScanner.js +62 -5
  211. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
  212. package/dist/server/sessions/sessionUiEvents.js +17 -4
  213. package/dist/server/sessions/sessionUiEvents.js.map +1 -1
  214. package/dist/server/sessions/spawnSessionTool.js +11 -3
  215. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  216. package/dist/server/sessions/spawnSubsessionTool.js +35 -19
  217. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  218. package/dist/server/sessions/subsessionCompletionDelivery.js +15 -0
  219. package/dist/server/sessions/subsessionCompletionDelivery.js.map +1 -0
  220. package/dist/server/sessions/subsessionCompletionInbox.js +134 -0
  221. package/dist/server/sessions/subsessionCompletionInbox.js.map +1 -0
  222. package/dist/server/sessions/subsessionProvenance.js +27 -0
  223. package/dist/server/sessions/subsessionProvenance.js.map +1 -0
  224. package/dist/server/sessions/transcriptMarkdown.js +48 -0
  225. package/dist/server/sessions/transcriptMarkdown.js.map +1 -0
  226. package/dist/server/sessions/transcriptMessages.js +3 -0
  227. package/dist/server/sessions/transcriptMessages.js.map +1 -1
  228. package/dist/server/startupLogger.js +13 -0
  229. package/dist/server/startupLogger.js.map +1 -0
  230. package/dist/server/startupUrls.js +27 -0
  231. package/dist/server/startupUrls.js.map +1 -0
  232. package/dist/server/status/machineStatusService.js +15 -9
  233. package/dist/server/status/machineStatusService.js.map +1 -1
  234. package/dist/server/storage/navigationPreferenceStore.js +138 -0
  235. package/dist/server/storage/navigationPreferenceStore.js.map +1 -0
  236. package/dist/server/webSocketBridge.js +9 -0
  237. package/dist/server/webSocketBridge.js.map +1 -1
  238. package/dist/server/workbench/skillSync.js +1 -1
  239. package/dist/server/workbench/skillSync.js.map +1 -1
  240. package/dist/server/workbench/workbenchTools.js +2 -2
  241. package/dist/server/workbench/workbenchTools.js.map +1 -1
  242. package/dist/server/workspaces/filePreviewService.js +5 -2
  243. package/dist/server/workspaces/filePreviewService.js.map +1 -1
  244. package/dist/server/workspaces/projectPiWebConfig.js +87 -6
  245. package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
  246. package/dist/server/workspaces/workspaceChangeNotifier.js +12 -0
  247. package/dist/server/workspaces/workspaceChangeNotifier.js.map +1 -0
  248. package/dist/server/workspaces/workspaceNotificationCommand.js +64 -0
  249. package/dist/server/workspaces/workspaceNotificationCommand.js.map +1 -0
  250. package/dist/server/workspaces/workspaceProviderRegistry.js +53 -0
  251. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
  252. package/dist/server-plugin-api.d.ts +83 -15
  253. package/dist/server-plugin-api.js +25 -0
  254. package/dist/server-plugin-api.js.map +1 -1
  255. package/dist/sessiond/sessionDaemonClient.js +27 -3
  256. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  257. package/dist/shared/apiTypes.js +3 -2
  258. package/dist/shared/apiTypes.js.map +1 -1
  259. package/dist/shared/capabilities.js +3 -0
  260. package/dist/shared/capabilities.js.map +1 -1
  261. package/dist/shared/federatedRoutes.js +25 -5
  262. package/dist/shared/federatedRoutes.js.map +1 -1
  263. package/dist/shared/machineStatus.js +11 -2
  264. package/dist/shared/machineStatus.js.map +1 -1
  265. package/dist/shared/navigationPreferences.js +6 -0
  266. package/dist/shared/navigationPreferences.js.map +1 -0
  267. package/dist/shared/piWebConfigParsing.js +54 -0
  268. package/dist/shared/piWebConfigParsing.js.map +1 -1
  269. package/dist/shared/pluginApiTypes.d.ts +55 -0
  270. package/dist/shared/pluginBackendProtocol.js +56 -1
  271. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  272. package/dist/shared/pluginCatalogTypes.d.ts +49 -0
  273. package/dist/shared/pluginCatalogTypes.js +156 -0
  274. package/dist/shared/pluginCatalogTypes.js.map +1 -0
  275. package/dist/shared/sessionMedia.js +12 -0
  276. package/dist/shared/sessionMedia.js.map +1 -0
  277. package/dist/shared/streamingBehavior.js +8 -0
  278. package/dist/shared/streamingBehavior.js.map +1 -0
  279. package/dist/shared/themePreference.js +24 -0
  280. package/dist/shared/themePreference.js.map +1 -0
  281. package/dist/workspaceNotificationCli.js +95 -0
  282. package/dist/workspaceNotificationCli.js.map +1 -0
  283. package/docs/README.md +31 -0
  284. package/docs/config.md +77 -4
  285. package/docs/plugins.md +60 -11
  286. package/examples/session-bridge-plugin/package.json +2 -2
  287. package/examples/session-bridge-plugin/src/browser/index.ts +1 -1
  288. package/examples/session-bridge-plugin/src/companion.ts +1 -1
  289. package/extensions/pi-web.ts +3 -1
  290. package/package.json +46 -34
  291. package/skills/README.md +10 -9
  292. package/skills/relay/SKILL.md +24 -68
  293. package/skills/relay-runner/SKILL.md +40 -219
  294. package/dist/client/assets/PiWebApp-CN3g7SqA.js +0 -4362
  295. package/dist/client/assets/external-DUGCSDhZ.js +0 -2
  296. package/dist/client/assets/index-JduZlbIF.js +0 -2
  297. package/dist/client/assets/vendor-editor-core-YWog6mAR.js +0 -10
  298. package/dist/server/sessions/pendingAskStore.js +0 -275
  299. package/dist/server/sessions/pendingAskStore.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piRuntime.js","sourceRoot":"","sources":["../src/piRuntime.ts"],"names":[],"mappings":"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"}
package/dist/piSdk.js ADDED
@@ -0,0 +1,5 @@
1
+ import { loadPiSdk } from "./piRuntime.js";
2
+ // Runtime values share the hosting Pi installation; canonical imports supply development types only.
3
+ const sdk = await loadPiSdk();
4
+ export const { AgentSession, CONFIG_DIR_NAME, CredentialSynchronizationError, DefaultPackageManager, DefaultResourceLoader, ModelRuntime, ProjectTrustStore, SessionManager, SettingsManager, Theme, VERSION, createAgentSession, createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, createCodemodeExtension, createEditToolDefinition, createEventBus, createFindToolDefinition, createGrepToolDefinition, createLsToolDefinition, createMcpExtension, createReadToolDefinition, createToolSearchExtension, createWriteToolDefinition, defineTool, formatDimensionNote, getAgentDir, hasTrustRequiringProjectResources, loadSkills, readStoredCredential, resizeImage, resolveModelScopeWithDiagnostics, withFileMutationQueue, } = sdk;
5
+ //# sourceMappingURL=piSdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piSdk.js","sourceRoot":"","sources":["../src/piSdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qGAAqG;AACrG,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,EACX,YAAY,EACZ,eAAe,EACf,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,iCAAiC,EACjC,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,gCAAgC,EAChC,qBAAqB,GACtB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,508 @@
1
+ import { execFile, spawn } from "node:child_process";
2
+ import { mkdir, readFile, realpath, rm, writeFile } from "node:fs/promises";
3
+ import { existsSync } from "node:fs";
4
+ import { createHash, randomUUID } from "node:crypto";
5
+ import { homedir, userInfo } from "node:os";
6
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
7
+ import { createInterface } from "node:readline/promises";
8
+ import { isatty } from "node:tty";
9
+ import { promisify } from "node:util";
10
+ import { effectivePiWebConfig, isHostAbsoluteAgentDir, PI_CODING_AGENT_DIR_ENV } from "./config.js";
11
+ import { detectPiWebInstallation } from "./server/piWebStatus.js";
12
+ import { SessionDaemonClient } from "./sessiond/sessionDaemonClient.js";
13
+ import { nativeServiceManagerRefs } from "./nativeServices/servicePlan.js";
14
+ import { piRuntimeCliPath } from "./piRuntime.js";
15
+ import { loadNodeTranslator } from "./localization.js";
16
+ import { createTranslator } from "./shared/i18n.js";
17
+ const selectedPiCliPath = await piRuntimeCliPath();
18
+ const PACKAGE_NAME = "@chainingintention/pi-web-cn";
19
+ const INTERNAL_NPM_VERSION = "PI_WEB_INTERNAL_NPM_UPDATE_VERSION";
20
+ const INTERNAL_UPDATE_PROFILE = "PI_WEB_INTERNAL_UPDATE_PROFILE";
21
+ const INTERNAL_UPDATE_INSTALLATION = "PI_WEB_INTERNAL_UPDATE_INSTALLATION";
22
+ const VERSION_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
23
+ const UPDATE_HANDOFF_LABEL_PREFIX = "com.pi-web.update";
24
+ const WARNING = "Updating PI WEB will restart services and interrupt active sessions and terminals, including this terminal.";
25
+ const HELP = "Usage: pi-web update [--yes] [--force]\n--force reinstalls an npm-global installation even when already current. Without --yes, an interactive confirmation is required. Nested Linux updates use a detached systemd user service. Nested macOS updates use a detached launchd user agent.";
26
+ function defaultDependencies() {
27
+ const translator = loadNodeTranslator("cli");
28
+ return {
29
+ translator,
30
+ env: { ...process.env },
31
+ nodeExecutable: process.execPath,
32
+ platform: process.platform,
33
+ home: homedir(),
34
+ userId: userInfo().uid,
35
+ cwd: process.cwd(),
36
+ uniqueId: randomUUID,
37
+ exists: existsSync,
38
+ mkdir: (path) => mkdir(path, { recursive: true }).then(() => undefined),
39
+ writeFile: (path, contents) => writeFile(path, contents, { encoding: "utf8", mode: 0o600 }),
40
+ removeFile: (path) => rm(path, { force: true }),
41
+ readFile: (path) => readFile(path, "utf8"),
42
+ // Use the selected package's declared CLI, not a different pi on PATH.
43
+ piCliPath: selectedPiCliPath,
44
+ interactive: isatty(0) && isatty(1),
45
+ async agentDir() {
46
+ const active = await new SessionDaemonClient().getActiveAgentProfile();
47
+ if (active.status === "available")
48
+ return active.profile.dir;
49
+ if (active.status === "invalid")
50
+ throw new Error(translator("update.profileInvalid", "Cannot safely resolve the active Pi profile: {error}", { error: active.error }));
51
+ return effectivePiWebConfig().config.agent.dir;
52
+ },
53
+ detectInstallation: detectPiWebInstallation,
54
+ realpath,
55
+ async capture(command) {
56
+ const result = await promisify(execFile)(command.executable, command.args, { env: command.env, encoding: "utf8" });
57
+ return result.stdout.trim();
58
+ },
59
+ run(command) {
60
+ return new Promise((resolveRun, reject) => {
61
+ const child = spawn(command.executable, command.args, { env: command.env, stdio: "inherit" });
62
+ child.once("error", reject);
63
+ child.once("exit", (code, signal) => {
64
+ if (code === 0)
65
+ resolveRun();
66
+ else
67
+ reject(new Error(translator("update.commandFailed", "{command} failed ({result}); no further update/restart steps were run.", { command: command.executable, result: signal ?? `exit ${String(code)}` })));
68
+ });
69
+ });
70
+ },
71
+ async confirm(message) {
72
+ const input = createInterface({ input: process.stdin, output: process.stdout });
73
+ try {
74
+ return /^(y|yes)$/i.test((await input.question(`${message} [y/N] `)).trim());
75
+ }
76
+ finally {
77
+ input.close();
78
+ }
79
+ },
80
+ log: console.log,
81
+ };
82
+ }
83
+ /** CLI arguments exclude `update`. Throws on invalid/unsafe requests and failed commands. */
84
+ export async function runPiWebUpdate(args, injected) {
85
+ const help = args.length === 1 && ["--help", "-h"].includes(args[0] ?? "");
86
+ const valid = help || (new Set(args).size === args.length && args.every((arg) => ["--yes", "--force"].includes(arg)));
87
+ if (!valid) {
88
+ const translation = injected ?? { translator: loadNodeTranslator("cli") };
89
+ throw new Error(updateText(translation, "update.invalidArguments", "Invalid update arguments. {help}", { help: updateText(translation, "update.help", HELP) }));
90
+ }
91
+ const original = injected ?? defaultDependencies();
92
+ const deps = { ...original, env: { ...original.env } };
93
+ const pinnedVersion = deps.env[INTERNAL_NPM_VERSION];
94
+ const expectedProfile = deps.env[INTERNAL_UPDATE_PROFILE];
95
+ const expectedInstallation = deps.env[INTERNAL_UPDATE_INSTALLATION];
96
+ delete deps.env["PI_WEB_INTERNAL_NPM_UPDATE_VERSION"];
97
+ delete deps.env["PI_WEB_INTERNAL_UPDATE_PROFILE"];
98
+ delete deps.env["PI_WEB_INTERNAL_UPDATE_INSTALLATION"];
99
+ if (injected === undefined) {
100
+ delete process.env["PI_WEB_INTERNAL_NPM_UPDATE_VERSION"];
101
+ delete process.env["PI_WEB_INTERNAL_UPDATE_PROFILE"];
102
+ delete process.env["PI_WEB_INTERNAL_UPDATE_INSTALLATION"];
103
+ }
104
+ if (help) {
105
+ deps.log(updateText(deps, "update.help", HELP));
106
+ return;
107
+ }
108
+ const nested = truthy(deps.env["PI_WEB_SESSION"]);
109
+ const hasExpectedIdentity = expectedProfile !== undefined || expectedInstallation !== undefined;
110
+ if (hasExpectedIdentity && (deps.platform !== "darwin" || nested || !args.includes("--yes")
111
+ || expectedProfile === undefined || !isHostAbsoluteAgentDir(expectedProfile)
112
+ || expectedInstallation === undefined || !/^[a-f0-9]{64}$/.test(expectedInstallation))) {
113
+ throw new Error(updateText(deps, "update.invalidIdentityHandoff", "Invalid internal update identity handoff; nothing changed."));
114
+ }
115
+ const agentDir = await deps.agentDir();
116
+ if (!isHostAbsoluteAgentDir(agentDir))
117
+ throw new Error(updateText(deps, "update.profileAbsolute", "Cannot safely resolve the Pi profile: expected a host-absolute directory."));
118
+ if (expectedProfile !== undefined && await deps.realpath(expectedProfile) !== await deps.realpath(agentDir)) {
119
+ throw new Error(updateText(deps, "update.handoffIdentityChanged", "The update handoff identity changed; no install or restart was run."));
120
+ }
121
+ const installation = await deps.detectInstallation(agentDir);
122
+ if (hasExpectedIdentity && installation.kind !== "local" && installation.kind !== "npm-global" && installation.kind !== "pi-package") {
123
+ throw new Error(updateText(deps, "update.invalidIdentityHandoff", "Invalid internal update identity handoff; nothing changed."));
124
+ }
125
+ if (expectedInstallation !== undefined && expectedInstallation !== await installationIdentity(deps, installation)) {
126
+ throw new Error(updateText(deps, "update.handoffIdentityChanged", "The update handoff identity changed; no install or restart was run."));
127
+ }
128
+ if (pinnedVersion !== undefined && (!isExactVersion(pinnedVersion) || deps.platform !== "darwin"
129
+ || nested || !args.includes("--yes") || installation.kind !== "npm-global")) {
130
+ throw new Error(updateText(deps, "update.invalidHandoff", "Invalid internal npm update handoff; nothing changed."));
131
+ }
132
+ if (installation.kind === "unknown") {
133
+ deps.log(updateText(deps, "update.unknownInstallation", "No automatic update for an unknown installation. Update using the installation's original tooling, then run pi-web restart from a host terminal. Nothing changed."));
134
+ return;
135
+ }
136
+ if (installation.kind !== "docker" && nested && deps.platform !== "linux" && deps.platform !== "darwin") {
137
+ throw new Error(updateText(deps, "update.nestedRefused", "Native update refused inside a PI WEB session: restarting its daemon could kill the updater. Open a host terminal outside PI WEB and run pi-web update there. --yes does not bypass this safety check."));
138
+ }
139
+ const command = (executable, commandArgs, env = deps.env) => ({ executable, args: commandArgs, env: { ...env } });
140
+ let update;
141
+ let updateAfterPull = [];
142
+ let localCheckoutPull;
143
+ let restart;
144
+ let npmTargetVersion;
145
+ if (installation.kind === "docker") {
146
+ if (installation.dockerMode !== "runtime" && installation.dockerMode !== "dev") {
147
+ throw new Error(updateText(deps, "update.dockerModeUnknown", "Docker installation mode is unknown. Use the original pi-web-docker host installation to update; nothing changed."));
148
+ }
149
+ update = command("pi-web-docker", [...(installation.dockerMode === "dev" ? ["--dev"] : []), "update"]);
150
+ }
151
+ else {
152
+ if (installation.path === undefined || !isAbsolute(installation.path))
153
+ throw new Error(updateText(deps, "update.installationMissing", "Cannot safely locate this PI WEB installation; nothing changed."));
154
+ restart = command(deps.nodeExecutable, [join(installation.path, "dist", "cli.js"), "restart"]);
155
+ if (installation.kind === "local") {
156
+ const localPlan = await planLocalCheckoutUpdate(deps, installation.path);
157
+ localCheckoutPull = localPlan.pull;
158
+ update = localPlan.pull;
159
+ updateAfterPull = [localPlan.install, localPlan.build];
160
+ }
161
+ else if (installation.kind === "npm-global") {
162
+ const root = installation.npmRoot;
163
+ if (root === undefined || !isAbsolute(root))
164
+ throw new Error(updateText(deps, "update.npmInstallationMissing", "Cannot safely locate this global npm installation; nothing changed."));
165
+ // Unix npm prefixes use lib/node_modules; Windows prefixes use node_modules.
166
+ const prefix = basename(dirname(root)) === "lib" ? dirname(dirname(root)) : dirname(root);
167
+ const actualRoot = await deps.capture(command("npm", ["root", "--global", "--prefix", prefix]));
168
+ if (await deps.realpath(actualRoot) !== await deps.realpath(root)
169
+ || await deps.realpath(join(root, PACKAGE_NAME)) !== await deps.realpath(installation.path)) {
170
+ throw new Error(updateText(deps, "update.npmTargetMismatch", "Global npm target does not match this installation; nothing changed."));
171
+ }
172
+ let latestVersion;
173
+ try {
174
+ const version = pinnedVersion ?? JSON.parse(await deps.capture(command("npm", ["view", "--global", "--prefix", resolve(prefix), `${PACKAGE_NAME}@latest`, "version", "--json"])));
175
+ if (typeof version !== "string" || !isExactVersion(version)) {
176
+ throw new Error("npm did not return a package version");
177
+ }
178
+ latestVersion = version;
179
+ npmTargetVersion = version;
180
+ }
181
+ catch (error) {
182
+ throw new Error(updateText(deps, "update.npmLatestFailed", "Cannot determine the latest PI WEB npm version; no install or restart was run."), { cause: error });
183
+ }
184
+ const installed = JSON.parse(await deps.readFile(join(installation.path, "package.json")));
185
+ if (typeof installed !== "object" || installed === null || !("version" in installed) || typeof installed.version !== "string") {
186
+ throw new Error(updateText(deps, "update.npmInstalledUnknown", "Cannot determine the installed PI WEB version; nothing changed."));
187
+ }
188
+ if (installed.version === latestVersion && !args.includes("--force")) {
189
+ deps.log(updateText(deps, "update.alreadyCurrent", "PI WEB is already up to date ({version}). Nothing changed. Use --force to reinstall.", { version: latestVersion }));
190
+ return;
191
+ }
192
+ // Install the release we checked, even if the registry tag moves during confirmation.
193
+ update = command("npm", ["install", "--global", "--prefix", resolve(prefix), `${PACKAGE_NAME}@${latestVersion}`, "--allow-scripts=node-pty"]);
194
+ }
195
+ else {
196
+ if (installation.scope !== "user" || installation.source === undefined || installation.source === "" || !/^(npm:|git:|https?:\/\/|ssh:\/\/)/.test(installation.source)) {
197
+ throw new Error(updateText(deps, "update.piScopeUnsupported", "Only user-scope remote Pi packages can be updated automatically. Update this package with its original tooling; nothing changed."));
198
+ }
199
+ // --no-approve excludes project settings even in previously trusted projects.
200
+ // An explicit extension target cannot invoke Pi's universal/self updater.
201
+ update = command(deps.nodeExecutable, [deps.piCliPath, "update", "--no-approve", "--extension", installation.source], {
202
+ ...deps.env, [PI_CODING_AGENT_DIR_ENV]: agentDir,
203
+ });
204
+ }
205
+ }
206
+ let restartUnit;
207
+ let launchdHandoff;
208
+ if (restart !== undefined) {
209
+ await preflightNativeServices(deps);
210
+ if (nested && deps.platform === "linux") {
211
+ restartUnit = `pi-web-update-restart-${deps.uniqueId()}`;
212
+ const dispatchArgs = systemdDispatchArgs(deps);
213
+ // Exercise the same external owner and environment without touching services.
214
+ // --wait is only for this harmless probe, never for the actual restart.
215
+ try {
216
+ await deps.capture(command("systemd-run", [
217
+ ...dispatchArgs, `--unit=${restartUnit}-preflight`, "--wait", "--",
218
+ deps.nodeExecutable, "--eval", "process.exit(0)",
219
+ ]));
220
+ }
221
+ catch (error) {
222
+ throw new Error(updateText(deps, "update.systemdDispatchFailed", "Cannot safely dispatch a detached systemd restart. Use a host terminal outside PI WEB; nothing changed."), { cause: error });
223
+ }
224
+ restart = command("systemd-run", [...dispatchArgs, `--unit=${restartUnit}`, "--", restart.executable, ...restart.args]);
225
+ }
226
+ else if (nested && deps.platform === "darwin") {
227
+ launchdHandoff = await createLaunchdUpdateHandoff(deps, installation, agentDir, args.includes("--force"), npmTargetVersion);
228
+ }
229
+ }
230
+ deps.log(updateText(deps, "update.target", "Update target: {target}", { target: `${installation.kind}${installation.path === undefined ? "" : ` at ${JSON.stringify(installation.path)}`}` }));
231
+ deps.log(updateText(deps, "update.install", "Install: {command}", { command: [update, ...updateAfterPull].map((step) => [step.executable, ...step.args].map((value) => JSON.stringify(value)).join(" ")).join(" && ") }));
232
+ if (restart !== undefined) {
233
+ const handoffDescription = restartUnit === undefined
234
+ ? launchdHandoff === undefined ? "" : updateText(deps, "update.launchdHandoff", " via detached launchd user agent {target}", { target: launchdHandoff.target })
235
+ : updateText(deps, "update.systemdHandoff", " via detached systemd user unit {unit}", { unit: restartUnit });
236
+ deps.log(updateText(deps, "update.afterInstall", "After install succeeds: {command}{handoff}.", { command: `${JSON.stringify(deps.nodeExecutable)} ${JSON.stringify(join(installation.path ?? "", "dist", "cli.js"))} restart`, handoff: handoffDescription }));
237
+ if (launchdHandoff !== undefined)
238
+ deps.log(updateText(deps, "update.output", "Detached update output: {path}", { path: launchdHandoff.logPath }));
239
+ }
240
+ else {
241
+ deps.log(updateText(deps, "update.dockerOwnsRestart", "The Docker installer owns the update and service restart."));
242
+ }
243
+ deps.log(updateText(deps, "update.warning", WARNING));
244
+ if (!args.includes("--yes")) {
245
+ if (!deps.interactive)
246
+ throw new Error(updateText(deps, "update.consentRequired", "Noninteractive update requires explicit --yes consent. Nothing changed."));
247
+ if (!await deps.confirm(updateText(deps, "update.confirm", "Proceed with the update and restart?"))) {
248
+ deps.log(updateText(deps, "update.cancelled", "Update cancelled. Nothing changed."));
249
+ return;
250
+ }
251
+ }
252
+ if (launchdHandoff !== undefined) {
253
+ await dispatchLaunchdUpdate(deps, launchdHandoff);
254
+ deps.log(updateText(deps, "update.launchdDispatched", "Update handed off to launchd user agent {target}; completion is not verified. Inspect {path}.", { target: launchdHandoff.target, path: launchdHandoff.logPath }));
255
+ return;
256
+ }
257
+ if (localCheckoutPull !== undefined) {
258
+ // Confirmation can be left open while the user edits or changes branches.
259
+ await planLocalCheckoutUpdate(deps, installation.path ?? "");
260
+ try {
261
+ await deps.run(localCheckoutPull);
262
+ }
263
+ catch (error) {
264
+ throw new Error(updateText(deps, "update.checkoutPullFailed", "Could not fast-forward the local checkout. Ensure it is clean, has a reachable upstream, and can be pulled without a merge; no install or restart was run."), { cause: error });
265
+ }
266
+ for (const step of updateAfterPull)
267
+ await deps.run(step);
268
+ }
269
+ else {
270
+ await deps.run(update);
271
+ }
272
+ if (restart !== undefined) {
273
+ await deps.run(restart);
274
+ if (restartUnit !== undefined)
275
+ deps.log(updateText(deps, "update.systemdDispatched", "Restart dispatched, not verified complete. Inspect journalctl --user -u {unit}.", { unit: restartUnit }));
276
+ }
277
+ }
278
+ async function planLocalCheckoutUpdate(deps, path) {
279
+ const gitEnvironment = { ...deps.env, GIT_TERMINAL_PROMPT: "0" };
280
+ const git = (args) => ({ executable: "git", args: ["-C", path, ...args], env: { ...gitEnvironment } });
281
+ const captureGit = async (args, failure) => {
282
+ try {
283
+ return (await deps.capture(git(args))).trim();
284
+ }
285
+ catch (error) {
286
+ throw new Error(updateText(deps, "update.checkoutInspectionFailed", "{reason} Nothing changed.", { reason: failure }), { cause: error });
287
+ }
288
+ };
289
+ const gitRoot = await captureGit(["rev-parse", "--show-toplevel"], updateText(deps, "update.checkoutInspectRoot", "Cannot safely update the local installation: it is not a Git checkout or its root could not be inspected."));
290
+ if (gitRoot === "" || await deps.realpath(gitRoot) !== await deps.realpath(path)) {
291
+ throw new Error(updateText(deps, "update.checkoutRootMismatch", "Cannot safely update the local installation: the package root is not the Git checkout root. Nothing changed."));
292
+ }
293
+ const status = await captureGit(["status", "--porcelain=v1", "--untracked-files=all"], updateText(deps, "update.checkoutInspectStatus", "Cannot inspect the local checkout status."));
294
+ if (status !== "") {
295
+ throw new Error(updateText(deps, "update.checkoutDirty", "The local checkout has uncommitted or untracked changes. Commit, stash, or remove them before updating; nothing changed."));
296
+ }
297
+ const branch = await captureGit(["symbolic-ref", "--quiet", "--short", "HEAD"], updateText(deps, "update.checkoutInspectBranch", "The local checkout is detached or its current branch could not be determined."));
298
+ if (branch === "")
299
+ throw new Error(updateText(deps, "update.checkoutDetached", "The local checkout is detached; check out a branch with an upstream before updating. Nothing changed."));
300
+ const upstream = await captureGit(["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{upstream}"], updateText(deps, "update.checkoutNoUpstream", "The local checkout branch {branch} has no upstream branch configured.", { branch: JSON.stringify(branch) }));
301
+ if (upstream === "")
302
+ throw new Error(updateText(deps, "update.checkoutInspectionFailed", "{reason} Nothing changed.", { reason: updateText(deps, "update.checkoutNoUpstream", "The local checkout branch {branch} has no upstream branch configured.", { branch: JSON.stringify(branch) }) }));
303
+ return {
304
+ pull: git(["pull", "--ff-only"]),
305
+ install: { executable: "npm", args: ["--prefix", path, "install"], env: { ...deps.env } },
306
+ build: { executable: "npm", args: ["--prefix", path, "run", "build"], env: { ...deps.env } },
307
+ };
308
+ }
309
+ async function createLaunchdUpdateHandoff(deps, installation, agentDir, force, npmTargetVersion) {
310
+ if (installation.path === undefined || !isAbsolute(installation.path)) {
311
+ throw new Error(updateText(deps, "update.handoffInstallationMissing", "Cannot safely locate this PI WEB installation for a launchd handoff; nothing changed."));
312
+ }
313
+ if (!isAbsolute(deps.home) || !isAbsolute(deps.cwd) || !isAbsolute(deps.nodeExecutable)) {
314
+ throw new Error(updateText(deps, "update.handoffRelativePath", "Cannot safely create a launchd handoff from a relative path; nothing changed."));
315
+ }
316
+ if (!Number.isInteger(deps.userId) || deps.userId < 0) {
317
+ throw new Error(updateText(deps, "update.handoffUserMissing", "Cannot safely resolve the macOS user domain for a launchd handoff; nothing changed."));
318
+ }
319
+ const id = deps.uniqueId();
320
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(id)) {
321
+ throw new Error(updateText(deps, "update.handoffIdentifierInvalid", "Cannot safely create a launchd handoff with an invalid identifier; nothing changed."));
322
+ }
323
+ const label = `${UPDATE_HANDOFF_LABEL_PREFIX}-${id}`;
324
+ const domain = `gui/${String(deps.userId)}`;
325
+ const environment = launchdHandoffEnvironment(deps);
326
+ environment[PI_CODING_AGENT_DIR_ENV] = agentDir;
327
+ environment[INTERNAL_UPDATE_PROFILE] = agentDir;
328
+ environment[INTERNAL_UPDATE_INSTALLATION] = await installationIdentity(deps, installation);
329
+ if (npmTargetVersion !== undefined)
330
+ environment[INTERNAL_NPM_VERSION] = npmTargetVersion;
331
+ const plistPath = join(deps.home, ".pi-web", "update-handoffs", `${label}.plist`);
332
+ const logPath = join(deps.home, ".pi-web", "logs", `${label}.log`);
333
+ return {
334
+ domain,
335
+ label,
336
+ target: `${domain}/${label}`,
337
+ plistPath,
338
+ logPath,
339
+ environment,
340
+ plist: renderLaunchdUpdatePlist({
341
+ label,
342
+ force,
343
+ nodeExecutable: deps.nodeExecutable,
344
+ cliPath: join(installation.path, "dist", "cli.js"),
345
+ workingDirectory: deps.cwd,
346
+ environment,
347
+ logPath,
348
+ }),
349
+ };
350
+ }
351
+ async function installationIdentity(deps, installation) {
352
+ const identity = {
353
+ kind: installation.kind,
354
+ path: installation.path === undefined ? undefined : await deps.realpath(installation.path),
355
+ npmRoot: installation.npmRoot === undefined ? undefined : await deps.realpath(installation.npmRoot),
356
+ source: installation.source,
357
+ scope: installation.scope,
358
+ };
359
+ return createHash("sha256").update(JSON.stringify(identity)).digest("hex");
360
+ }
361
+ async function dispatchLaunchdUpdate(deps, handoff) {
362
+ let wrotePlist = false;
363
+ try {
364
+ await deps.mkdir(dirname(handoff.plistPath));
365
+ await deps.mkdir(dirname(handoff.logPath));
366
+ // Treat a failed write as potentially leaving a partial file behind.
367
+ wrotePlist = true;
368
+ await deps.writeFile(handoff.plistPath, handoff.plist);
369
+ // bootstrap loads the one-shot plist into the user's GUI launchd domain.
370
+ // RunAtLoad starts it under launchd, outside the sessiond process group that
371
+ // is about to be restarted. KeepAlive is explicitly false so an update
372
+ // failure cannot turn into an automatic retry loop.
373
+ await deps.run({
374
+ executable: "launchctl",
375
+ args: ["bootstrap", handoff.domain, handoff.plistPath],
376
+ env: handoff.environment,
377
+ });
378
+ }
379
+ catch (error) {
380
+ if (wrotePlist)
381
+ await removeHandoffPlist(deps, handoff.plistPath);
382
+ throw new Error(updateText(deps, "update.launchdDispatchFailed", "Cannot safely dispatch a detached launchd update. Use a host terminal outside PI WEB; nothing changed."), { cause: error });
383
+ }
384
+ // The plist is deliberately outside ~/Library/LaunchAgents, so it is not
385
+ // loaded again at the next login. launchd has already parsed it after a
386
+ // successful bootstrap; retaining only the log keeps the handoff ephemeral.
387
+ await removeHandoffPlist(deps, handoff.plistPath);
388
+ }
389
+ async function removeHandoffPlist(deps, path) {
390
+ try {
391
+ await deps.removeFile(path);
392
+ }
393
+ catch (error) {
394
+ deps.log(updateText(deps, "update.handoffCleanupFailed", "Warning: could not remove temporary launchd handoff {path}: {error}", { path: JSON.stringify(path), error: error instanceof Error ? error.message : String(error) }));
395
+ }
396
+ }
397
+ const handoffEnvironmentKeys = new Set([
398
+ "HOME", "PATH", "XDG_CONFIG_HOME", "XDG_DATA_HOME", "XDG_RUNTIME_DIR", "DBUS_SESSION_BUS_ADDRESS", "NODE_EXTRA_CA_CERTS",
399
+ "PI_WEB_CONFIG", "PI_WEB_DATA_DIR", "PI_WEB_PI_PACKAGE_DIR", "PI_WEB_SESSIOND_SOCKET", "PI_WEB_SESSIOND_URL", "PI_WEB_SESSIOND_HOST", "PI_WEB_SESSIOND_PORT",
400
+ "PI_CODING_AGENT_DIR", "PI_CODING_AGENT_SESSION_DIR", "PI_WEB_AGENT_DIR", "PI_WEB_AGENT_SESSION_DIR",
401
+ ]);
402
+ function launchdHandoffEnvironment(deps) {
403
+ const source = deps.env;
404
+ const environment = {};
405
+ for (const key of Object.keys(source).sort()) {
406
+ if (!handoffEnvironmentKeys.has(key))
407
+ continue;
408
+ const value = source[key];
409
+ if (key === "PI_WEB_SESSIOND_URL" && value !== undefined && !safeDaemonUrl(value)) {
410
+ throw new Error(updateText(deps, "update.unsafeDaemonUrl", "Cannot hand off an unsafe session daemon URL; use a credential-free endpoint. Nothing changed."));
411
+ }
412
+ if (value !== undefined)
413
+ environment[key] = value;
414
+ }
415
+ return environment;
416
+ }
417
+ function renderLaunchdUpdatePlist(input) {
418
+ const programArguments = [input.nodeExecutable, input.cliPath, "update", "--yes", ...(input.force ? ["--force"] : [])];
419
+ const environmentEntries = Object.keys(input.environment)
420
+ .sort()
421
+ .map((key) => ` <key>${xmlEscape(key)}</key>\n <string>${xmlEscape(input.environment[key] ?? "")}</string>\n`)
422
+ .join("");
423
+ return `<?xml version="1.0" encoding="UTF-8"?>
424
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
425
+ <plist version="1.0">
426
+ <dict>
427
+ <key>Label</key>
428
+ <string>${xmlEscape(input.label)}</string>
429
+ <key>ProgramArguments</key>
430
+ <array>
431
+ ${programArguments.map((argument) => ` <string>${xmlEscape(argument)}</string>`).join("\n")}
432
+ </array>
433
+ <key>WorkingDirectory</key>
434
+ <string>${xmlEscape(input.workingDirectory)}</string>
435
+ <key>EnvironmentVariables</key>
436
+ <dict>
437
+ ${environmentEntries} </dict>
438
+ <key>RunAtLoad</key>
439
+ <true/>
440
+ <key>KeepAlive</key>
441
+ <false/>
442
+ <key>ProcessType</key>
443
+ <string>Background</string>
444
+ <key>StandardOutPath</key>
445
+ <string>${xmlEscape(input.logPath)}</string>
446
+ <key>StandardErrorPath</key>
447
+ <string>${xmlEscape(input.logPath)}</string>
448
+ </dict>
449
+ </plist>
450
+ `;
451
+ }
452
+ function xmlEscape(value) {
453
+ return value
454
+ .replaceAll("&", "&amp;")
455
+ .replaceAll("<", "&lt;")
456
+ .replaceAll(">", "&gt;")
457
+ .replaceAll('"', "&quot;")
458
+ .replaceAll("'", "&apos;");
459
+ }
460
+ async function preflightNativeServices(deps) {
461
+ if (deps.platform !== "linux" && deps.platform !== "darwin")
462
+ throw new Error(updateText(deps, "update.nativeUnsupported", "Automatic native update requires Linux or macOS services; nothing changed."));
463
+ const installed = Object.entries(nativeServiceManagerRefs).filter(([, ref]) => deps.exists(deps.platform === "linux"
464
+ ? join(deps.home, ".config", "systemd", "user", ref.systemdName)
465
+ : join(deps.home, "Library", "LaunchAgents", ref.launchdPlistName)));
466
+ if (!installed.some(([id]) => id === "sessiond") || !installed.some(([id]) => id === "web" || id === "uiDev")) {
467
+ throw new Error(updateText(deps, "update.nativeServicesMissing", "Native services are missing or incomplete. Run pi-web install from a host terminal, or update manually with the original tooling; nothing changed."));
468
+ }
469
+ if (deps.platform === "linux") {
470
+ for (const [, ref] of installed) {
471
+ const state = await deps.capture({ executable: "systemctl", args: ["--user", "show", ref.systemdName, "--property=LoadState", "--value"], env: { ...deps.env } });
472
+ if (state.trim() !== "loaded")
473
+ throw new Error(updateText(deps, "update.nativeNotLoaded", "Native service {service} is not loaded. Repair services before updating; nothing changed.", { service: ref.systemdName }));
474
+ }
475
+ }
476
+ }
477
+ function systemdDispatchArgs(deps) {
478
+ // User-manager services do not inherit the caller's environment. Propagate
479
+ // configuration/runtime selection deliberately, not terminal/session secrets.
480
+ // Preserve cwd too: config and data overrides may be relative paths.
481
+ const keys = Object.keys(launchdHandoffEnvironment(deps));
482
+ return ["--user", "--collect", "--expand-environment=no", `--working-directory=${deps.cwd}`,
483
+ ...keys.filter((key) => deps.env[key] !== undefined).map((key) => `--setenv=${key}`)];
484
+ }
485
+ function safeDaemonUrl(value) {
486
+ try {
487
+ const url = new URL(value);
488
+ return (url.protocol === "http:" || url.protocol === "https:") && url.username === "" && url.password === "" && url.search === "" && url.hash === "";
489
+ }
490
+ catch {
491
+ return false;
492
+ }
493
+ }
494
+ function isExactVersion(value) {
495
+ if (value.length > 256)
496
+ return false;
497
+ const match = VERSION_PATTERN.exec(value);
498
+ return match !== null && match.slice(1, 4).every((part) => Number.isSafeInteger(Number(part)))
499
+ && (match[4] === undefined || match[4].split(".").every((part) => !/^\d+$/.test(part)
500
+ || (!/^0\d+$/.test(part) && Number.isSafeInteger(Number(part)))));
501
+ }
502
+ function updateText(deps, key, fallback, parameters) {
503
+ return (deps.translator ?? createTranslator("en", {}))(key, fallback, parameters);
504
+ }
505
+ function truthy(value) {
506
+ return value !== undefined && value !== "" && value !== "0" && value.toLowerCase() !== "false";
507
+ }
508
+ //# sourceMappingURL=piWebUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piWebUpdate.js","sourceRoot":"","sources":["../src/piWebUpdate.ts"],"names":[],"mappings":"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"}