@vincenthanxiaodu/pi-web 1.202608.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/cli.js +1149 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/client/apple-touch-icon.png +0 -0
  6. package/dist/client/assets/CodeViewer-D_Q6ljLV.js +4 -0
  7. package/dist/client/assets/TerminalPanel-CTGixJIz.js +187 -0
  8. package/dist/client/assets/index-C2phil_t.js +5637 -0
  9. package/dist/client/assets/vendor-editor-core-CXO8gGab.js +12 -0
  10. package/dist/client/assets/vendor-editor-languages-CpW4sJsX.js +46 -0
  11. package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +1 -0
  12. package/dist/client/assets/vendor-terminal-BrP-ENHg.css +1 -0
  13. package/dist/client/assets/vendor-terminal-D8k4UKM2.js +35 -0
  14. package/dist/client/favicon.svg +11 -0
  15. package/dist/client/index.html +124 -0
  16. package/dist/client/manifest.webmanifest +24 -0
  17. package/dist/client/pwa-icon-192.png +0 -0
  18. package/dist/client/pwa-icon-512.png +0 -0
  19. package/dist/config.js +505 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/docker/piWebDockerCommandPlan.js +212 -0
  22. package/dist/docker/piWebDockerCommandPlan.js.map +1 -0
  23. package/dist/environment.js +4 -0
  24. package/dist/environment.js.map +1 -0
  25. package/dist/nativeServices/installedServiceDefinitions.js +602 -0
  26. package/dist/nativeServices/installedServiceDefinitions.js.map +1 -0
  27. package/dist/nativeServices/serviceAction.js +174 -0
  28. package/dist/nativeServices/serviceAction.js.map +1 -0
  29. package/dist/nativeServices/serviceDoctor.js +783 -0
  30. package/dist/nativeServices/serviceDoctor.js.map +1 -0
  31. package/dist/nativeServices/serviceInstall.js +35 -0
  32. package/dist/nativeServices/serviceInstall.js.map +1 -0
  33. package/dist/nativeServices/servicePlan.js +358 -0
  34. package/dist/nativeServices/servicePlan.js.map +1 -0
  35. package/dist/nativeServices/serviceProbe.js +447 -0
  36. package/dist/nativeServices/serviceProbe.js.map +1 -0
  37. package/dist/nativeServices/serviceRendering.js +132 -0
  38. package/dist/nativeServices/serviceRendering.js.map +1 -0
  39. package/dist/pi-web-plugins/git/browser/git-contract.js +108 -0
  40. package/dist/pi-web-plugins/git/browser/git-panel.js +609 -0
  41. package/dist/pi-web-plugins/git/browser/gitFileList.js +43 -0
  42. package/dist/pi-web-plugins/git/browser/gitFileShared.js +16 -0
  43. package/dist/pi-web-plugins/git/browser/gitFileTree.js +81 -0
  44. package/dist/pi-web-plugins/git/browser/gitFileViewPreference.js +35 -0
  45. package/dist/pi-web-plugins/git/browser/gitRoute.js +42 -0
  46. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +10 -0
  47. package/dist/pi-web-plugins/git/browser/unifiedDiff.js +301 -0
  48. package/dist/pi-web-plugins/git/git-backend.js +439 -0
  49. package/dist/pi-web-plugins/git/package.json +16 -0
  50. package/dist/pi-web-plugins/git/server-plugin.js +176 -0
  51. package/dist/pi-web-plugins/info/infoInternals.js +222 -0
  52. package/dist/pi-web-plugins/info/package.json +9 -0
  53. package/dist/pi-web-plugins/info/pi-web-plugin.js +48 -0
  54. package/dist/pi-web-plugins/relays/markdownDocument.js +81 -0
  55. package/dist/pi-web-plugins/relays/package.json +9 -0
  56. package/dist/pi-web-plugins/relays/pi-web-plugin.js +44 -0
  57. package/dist/pi-web-plugins/relays/relayDiscovery.js +228 -0
  58. package/dist/pi-web-plugins/relays/relaysPanelElement.js +550 -0
  59. package/dist/pi-web-plugins/relays/vendor/README.md +24 -0
  60. package/dist/pi-web-plugins/relays/vendor/marked.esm.js +76 -0
  61. package/dist/pi-web-plugins/updates/package.json +9 -0
  62. package/dist/pi-web-plugins/updates/pi-web-plugin.js +185 -0
  63. package/dist/pi-web-plugins/updates/updatesLogic.js +97 -0
  64. package/dist/pi-web-plugins/workspace-tasks/config.js +91 -0
  65. package/dist/pi-web-plugins/workspace-tasks/package.json +9 -0
  66. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +48 -0
  67. package/dist/pi-web-plugins/workspace-tasks/taskRunner.js +12 -0
  68. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +288 -0
  69. package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +47 -0
  70. package/dist/piWebVersionReport.js +278 -0
  71. package/dist/piWebVersionReport.js.map +1 -0
  72. package/dist/plugin-api.d.ts +222 -0
  73. package/dist/pluginRecoveryCli.js +172 -0
  74. package/dist/pluginRecoveryCli.js.map +1 -0
  75. package/dist/server/activeAgentProfileProvider.js +25 -0
  76. package/dist/server/activeAgentProfileProvider.js.map +1 -0
  77. package/dist/server/activity/workspaceActivityService.js +106 -0
  78. package/dist/server/activity/workspaceActivityService.js.map +1 -0
  79. package/dist/server/app.js +218 -0
  80. package/dist/server/app.js.map +1 -0
  81. package/dist/server/browserMessageProjection.js +54 -0
  82. package/dist/server/browserMessageProjection.js.map +1 -0
  83. package/dist/server/configRoutes.js +293 -0
  84. package/dist/server/configRoutes.js.map +1 -0
  85. package/dist/server/diagnostics/nodePtyNativeModule.js +36 -0
  86. package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -0
  87. package/dist/server/diagnostics/nodePtySpawnHelper.js +135 -0
  88. package/dist/server/diagnostics/nodePtySpawnHelper.js.map +1 -0
  89. package/dist/server/git/gitEnv.js +15 -0
  90. package/dist/server/git/gitEnv.js.map +1 -0
  91. package/dist/server/goals/goalArchive.js +184 -0
  92. package/dist/server/goals/goalArchive.js.map +1 -0
  93. package/dist/server/goals/goalFile.js +200 -0
  94. package/dist/server/goals/goalFile.js.map +1 -0
  95. package/dist/server/goals/goalStore.js +65 -0
  96. package/dist/server/goals/goalStore.js.map +1 -0
  97. package/dist/server/index.js +7 -0
  98. package/dist/server/index.js.map +1 -0
  99. package/dist/server/machines/machineClient.js +191 -0
  100. package/dist/server/machines/machineClient.js.map +1 -0
  101. package/dist/server/machines/machinePluginProxyRoutes.js +247 -0
  102. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -0
  103. package/dist/server/machines/machineProxyRoutes.js +318 -0
  104. package/dist/server/machines/machineProxyRoutes.js.map +1 -0
  105. package/dist/server/machines/machineRoutes.js +56 -0
  106. package/dist/server/machines/machineRoutes.js.map +1 -0
  107. package/dist/server/machines/machineService.js +274 -0
  108. package/dist/server/machines/machineService.js.map +1 -0
  109. package/dist/server/machines/machineStore.js +143 -0
  110. package/dist/server/machines/machineStore.js.map +1 -0
  111. package/dist/server/piPackageRoutes.js +91 -0
  112. package/dist/server/piPackageRoutes.js.map +1 -0
  113. package/dist/server/piPackageService.js +101 -0
  114. package/dist/server/piPackageService.js.map +1 -0
  115. package/dist/server/piWebPluginCatalog.js +584 -0
  116. package/dist/server/piWebPluginCatalog.js.map +1 -0
  117. package/dist/server/piWebPluginLifecycle.js +162 -0
  118. package/dist/server/piWebPluginLifecycle.js.map +1 -0
  119. package/dist/server/piWebPluginService.js +224 -0
  120. package/dist/server/piWebPluginService.js.map +1 -0
  121. package/dist/server/piWebReleaseLookupCache.js +37 -0
  122. package/dist/server/piWebReleaseLookupCache.js.map +1 -0
  123. package/dist/server/piWebStatus.js +624 -0
  124. package/dist/server/piWebStatus.js.map +1 -0
  125. package/dist/server/piWebStatusCache.js +45 -0
  126. package/dist/server/piWebStatusCache.js.map +1 -0
  127. package/dist/server/plugins/pluginBackendProxyRoutes.js +69 -0
  128. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -0
  129. package/dist/server/plugins/serverPluginExec.js +184 -0
  130. package/dist/server/plugins/serverPluginExec.js.map +1 -0
  131. package/dist/server/plugins/serverPluginRuntime.js +480 -0
  132. package/dist/server/plugins/serverPluginRuntime.js.map +1 -0
  133. package/dist/server/projectTrustRoutes.js +80 -0
  134. package/dist/server/projectTrustRoutes.js.map +1 -0
  135. package/dist/server/projects/directorySuggestions.js +207 -0
  136. package/dist/server/projects/directorySuggestions.js.map +1 -0
  137. package/dist/server/projects/projectService.js +33 -0
  138. package/dist/server/projects/projectService.js.map +1 -0
  139. package/dist/server/realtime/sessionEventHub.js +93 -0
  140. package/dist/server/realtime/sessionEventHub.js.map +1 -0
  141. package/dist/server/requestCancellation.js +32 -0
  142. package/dist/server/requestCancellation.js.map +1 -0
  143. package/dist/server/sessiond/agentHttpDispatcher.js +108 -0
  144. package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -0
  145. package/dist/server/sessiond/agentProcessEnvironment.js +61 -0
  146. package/dist/server/sessiond/agentProcessEnvironment.js.map +1 -0
  147. package/dist/server/sessiond/pluginBackendRoutes.js +64 -0
  148. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -0
  149. package/dist/server/sessiond/sessionDaemonShutdown.js +31 -0
  150. package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -0
  151. package/dist/server/sessiond/sessionProxyRoutes.js +61 -0
  152. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -0
  153. package/dist/server/sessiond/sessionServiceDependencies.js +34 -0
  154. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -0
  155. package/dist/server/sessiond/sessiondStateOwnership.js +235 -0
  156. package/dist/server/sessiond/sessiondStateOwnership.js.map +1 -0
  157. package/dist/server/sessiond/workspaceCatalogRoutes.js +31 -0
  158. package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -0
  159. package/dist/server/sessiond/workspaceRemovalRoutes.js +41 -0
  160. package/dist/server/sessiond/workspaceRemovalRoutes.js.map +1 -0
  161. package/dist/server/sessiond.js +387 -0
  162. package/dist/server/sessiond.js.map +1 -0
  163. package/dist/server/sessions/askUserTool.js +102 -0
  164. package/dist/server/sessions/askUserTool.js.map +1 -0
  165. package/dist/server/sessions/attachmentService.js +119 -0
  166. package/dist/server/sessions/attachmentService.js.map +1 -0
  167. package/dist/server/sessions/authProviderOptions.js +50 -0
  168. package/dist/server/sessions/authProviderOptions.js.map +1 -0
  169. package/dist/server/sessions/authRoutes.js +59 -0
  170. package/dist/server/sessions/authRoutes.js.map +1 -0
  171. package/dist/server/sessions/authService.js +122 -0
  172. package/dist/server/sessions/authService.js.map +1 -0
  173. package/dist/server/sessions/builtinCommands.js +27 -0
  174. package/dist/server/sessions/builtinCommands.js.map +1 -0
  175. package/dist/server/sessions/dockerEnvironmentFacts.js +254 -0
  176. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -0
  177. package/dist/server/sessions/editPreview.js +196 -0
  178. package/dist/server/sessions/editPreview.js.map +1 -0
  179. package/dist/server/sessions/extensionDialogWaiters.js +76 -0
  180. package/dist/server/sessions/extensionDialogWaiters.js.map +1 -0
  181. package/dist/server/sessions/globalProviderPolicy.js +167 -0
  182. package/dist/server/sessions/globalProviderPolicy.js.map +1 -0
  183. package/dist/server/sessions/interruptedRunStore.js +147 -0
  184. package/dist/server/sessions/interruptedRunStore.js.map +1 -0
  185. package/dist/server/sessions/messagePaging.js +43 -0
  186. package/dist/server/sessions/messagePaging.js.map +1 -0
  187. package/dist/server/sessions/modelCatalogRefresher.js +193 -0
  188. package/dist/server/sessions/modelCatalogRefresher.js.map +1 -0
  189. package/dist/server/sessions/oauthLoginFlowService.js +346 -0
  190. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -0
  191. package/dist/server/sessions/pendingAskStore.js +275 -0
  192. package/dist/server/sessions/pendingAskStore.js.map +1 -0
  193. package/dist/server/sessions/pendingExtensionDialogStore.js +196 -0
  194. package/dist/server/sessions/pendingExtensionDialogStore.js.map +1 -0
  195. package/dist/server/sessions/piSessionManagerGateway.js +246 -0
  196. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -0
  197. package/dist/server/sessions/piSessionService.js +4059 -0
  198. package/dist/server/sessions/piSessionService.js.map +1 -0
  199. package/dist/server/sessions/plainTextTheme.js +112 -0
  200. package/dist/server/sessions/plainTextTheme.js.map +1 -0
  201. package/dist/server/sessions/sessionArchiveStore.js +273 -0
  202. package/dist/server/sessions/sessionArchiveStore.js.map +1 -0
  203. package/dist/server/sessions/sessionArchiveTree.js +35 -0
  204. package/dist/server/sessions/sessionArchiveTree.js.map +1 -0
  205. package/dist/server/sessions/sessionCleanup.js +157 -0
  206. package/dist/server/sessions/sessionCleanup.js.map +1 -0
  207. package/dist/server/sessions/sessionCommandService.js +336 -0
  208. package/dist/server/sessions/sessionCommandService.js.map +1 -0
  209. package/dist/server/sessions/sessionEnvironmentFacts.js +48 -0
  210. package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -0
  211. package/dist/server/sessions/sessionFileFormat.js +27 -0
  212. package/dist/server/sessions/sessionFileFormat.js.map +1 -0
  213. package/dist/server/sessions/sessionFileHeader.js +104 -0
  214. package/dist/server/sessions/sessionFileHeader.js.map +1 -0
  215. package/dist/server/sessions/sessionModelScope.js +141 -0
  216. package/dist/server/sessions/sessionModelScope.js.map +1 -0
  217. package/dist/server/sessions/sessionNameGenerator.js +90 -0
  218. package/dist/server/sessions/sessionNameGenerator.js.map +1 -0
  219. package/dist/server/sessions/sessionNotificationStore.js +484 -0
  220. package/dist/server/sessions/sessionNotificationStore.js.map +1 -0
  221. package/dist/server/sessions/sessionRoutes.js +744 -0
  222. package/dist/server/sessions/sessionRoutes.js.map +1 -0
  223. package/dist/server/sessions/sessionRuntimeStore.js +2 -0
  224. package/dist/server/sessions/sessionRuntimeStore.js.map +1 -0
  225. package/dist/server/sessions/sessionService.js +2 -0
  226. package/dist/server/sessions/sessionService.js.map +1 -0
  227. package/dist/server/sessions/sessionSummaryScanner.js +491 -0
  228. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -0
  229. package/dist/server/sessions/sessionTreeProjection.js +250 -0
  230. package/dist/server/sessions/sessionTreeProjection.js.map +1 -0
  231. package/dist/server/sessions/sessionUnreadStore.js +520 -0
  232. package/dist/server/sessions/sessionUnreadStore.js.map +1 -0
  233. package/dist/server/sessions/shutdownDrain.js +73 -0
  234. package/dist/server/sessions/shutdownDrain.js.map +1 -0
  235. package/dist/server/sessions/spawnSessionTool.js +48 -0
  236. package/dist/server/sessions/spawnSessionTool.js.map +1 -0
  237. package/dist/server/sessions/spawnSubsessionTool.js +216 -0
  238. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -0
  239. package/dist/server/sessions/spawnTargetResolver.js +23 -0
  240. package/dist/server/sessions/spawnTargetResolver.js.map +1 -0
  241. package/dist/server/sessions/subsessionTranscript.js +235 -0
  242. package/dist/server/sessions/subsessionTranscript.js.map +1 -0
  243. package/dist/server/status/machineStatusRoutes.js +8 -0
  244. package/dist/server/status/machineStatusRoutes.js.map +1 -0
  245. package/dist/server/status/machineStatusService.js +181 -0
  246. package/dist/server/status/machineStatusService.js.map +1 -0
  247. package/dist/server/status/workspaceAttribution.js +87 -0
  248. package/dist/server/status/workspaceAttribution.js.map +1 -0
  249. package/dist/server/storage/projectStore.js +88 -0
  250. package/dist/server/storage/projectStore.js.map +1 -0
  251. package/dist/server/terminalProxyRoutes.js +141 -0
  252. package/dist/server/terminalProxyRoutes.js.map +1 -0
  253. package/dist/server/terminals/terminalRoutes.js +155 -0
  254. package/dist/server/terminals/terminalRoutes.js.map +1 -0
  255. package/dist/server/terminals/terminalService.js +305 -0
  256. package/dist/server/terminals/terminalService.js.map +1 -0
  257. package/dist/server/terminals/terminalSize.js +17 -0
  258. package/dist/server/terminals/terminalSize.js.map +1 -0
  259. package/dist/server/types.js +2 -0
  260. package/dist/server/types.js.map +1 -0
  261. package/dist/server/updates/fleetRoutes.js +111 -0
  262. package/dist/server/updates/fleetRoutes.js.map +1 -0
  263. package/dist/server/updates/restartRoutes.js +48 -0
  264. package/dist/server/updates/restartRoutes.js.map +1 -0
  265. package/dist/server/updates/selfUpdateRoutes.js +145 -0
  266. package/dist/server/updates/selfUpdateRoutes.js.map +1 -0
  267. package/dist/server/webSocketBridge.js +32 -0
  268. package/dist/server/webSocketBridge.js.map +1 -0
  269. package/dist/server/workingDirectory.js +44 -0
  270. package/dist/server/workingDirectory.js.map +1 -0
  271. package/dist/server/workspaceExplorerRoutes.js +147 -0
  272. package/dist/server/workspaceExplorerRoutes.js.map +1 -0
  273. package/dist/server/workspaces/effectivePathAccess.js +8 -0
  274. package/dist/server/workspaces/effectivePathAccess.js.map +1 -0
  275. package/dist/server/workspaces/fileContentService.js +190 -0
  276. package/dist/server/workspaces/fileContentService.js.map +1 -0
  277. package/dist/server/workspaces/filePreviewResponseHeaders.js +18 -0
  278. package/dist/server/workspaces/filePreviewResponseHeaders.js.map +1 -0
  279. package/dist/server/workspaces/filePreviewResponsePolicy.js +55 -0
  280. package/dist/server/workspaces/filePreviewResponsePolicy.js.map +1 -0
  281. package/dist/server/workspaces/filePreviewService.js +81 -0
  282. package/dist/server/workspaces/filePreviewService.js.map +1 -0
  283. package/dist/server/workspaces/fileSuggestions.js +520 -0
  284. package/dist/server/workspaces/fileSuggestions.js.map +1 -0
  285. package/dist/server/workspaces/fileTreeService.js +35 -0
  286. package/dist/server/workspaces/fileTreeService.js.map +1 -0
  287. package/dist/server/workspaces/pathAccessPolicy.js +90 -0
  288. package/dist/server/workspaces/pathAccessPolicy.js.map +1 -0
  289. package/dist/server/workspaces/pathSafety.js +45 -0
  290. package/dist/server/workspaces/pathSafety.js.map +1 -0
  291. package/dist/server/workspaces/projectPiWebConfig.js +61 -0
  292. package/dist/server/workspaces/projectPiWebConfig.js.map +1 -0
  293. package/dist/server/workspaces/projectWorkspaceCwds.js +17 -0
  294. package/dist/server/workspaces/projectWorkspaceCwds.js.map +1 -0
  295. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +402 -0
  296. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -0
  297. package/dist/server/workspaces/workspaceCatalog.js +47 -0
  298. package/dist/server/workspaces/workspaceCatalog.js.map +1 -0
  299. package/dist/server/workspaces/workspaceContext.js +6 -0
  300. package/dist/server/workspaces/workspaceContext.js.map +1 -0
  301. package/dist/server/workspaces/workspaceDeletionRoutes.js +49 -0
  302. package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -0
  303. package/dist/server/workspaces/workspaceProviderRegistry.js +651 -0
  304. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -0
  305. package/dist/server/workspaces/workspaceRemovalService.js +256 -0
  306. package/dist/server/workspaces/workspaceRemovalService.js.map +1 -0
  307. package/dist/server/workspaces/workspaceRouteErrors.js +7 -0
  308. package/dist/server/workspaces/workspaceRouteErrors.js.map +1 -0
  309. package/dist/server/workspaces/worktreePreRemoveHook.js +39 -0
  310. package/dist/server/workspaces/worktreePreRemoveHook.js.map +1 -0
  311. package/dist/server-plugin-api.d.ts +140 -0
  312. package/dist/server-plugin-api.js +2 -0
  313. package/dist/server-plugin-api.js.map +1 -0
  314. package/dist/serverPluginRecovery.js +138 -0
  315. package/dist/serverPluginRecovery.js.map +1 -0
  316. package/dist/sessiond/activeAgentProfile.js +12 -0
  317. package/dist/sessiond/activeAgentProfile.js.map +1 -0
  318. package/dist/sessiond/config.js +20 -0
  319. package/dist/sessiond/config.js.map +1 -0
  320. package/dist/sessiond/sessionDaemonClient.js +105 -0
  321. package/dist/sessiond/sessionDaemonClient.js.map +1 -0
  322. package/dist/shared/activeAgentProfile.js +37 -0
  323. package/dist/shared/activeAgentProfile.js.map +1 -0
  324. package/dist/shared/activity.js +16 -0
  325. package/dist/shared/activity.js.map +1 -0
  326. package/dist/shared/apiTypes.js +41 -0
  327. package/dist/shared/apiTypes.js.map +1 -0
  328. package/dist/shared/capabilities.js +37 -0
  329. package/dist/shared/capabilities.js.map +1 -0
  330. package/dist/shared/federatedRoutes.js +127 -0
  331. package/dist/shared/federatedRoutes.js.map +1 -0
  332. package/dist/shared/machinePluginIds.js +43 -0
  333. package/dist/shared/machinePluginIds.js.map +1 -0
  334. package/dist/shared/machineStatus.js +94 -0
  335. package/dist/shared/machineStatus.js.map +1 -0
  336. package/dist/shared/piWebStatusParsing.js +141 -0
  337. package/dist/shared/piWebStatusParsing.js.map +1 -0
  338. package/dist/shared/pluginApiTypes.d.ts +150 -0
  339. package/dist/shared/pluginApiTypes.js +3 -0
  340. package/dist/shared/pluginApiTypes.js.map +1 -0
  341. package/dist/shared/pluginBackendProtocol.js +110 -0
  342. package/dist/shared/pluginBackendProtocol.js.map +1 -0
  343. package/dist/shared/pluginIds.js +10 -0
  344. package/dist/shared/pluginIds.js.map +1 -0
  345. package/dist/shared/pluginRecoveryCommands.js +14 -0
  346. package/dist/shared/pluginRecoveryCommands.js.map +1 -0
  347. package/dist/shared/promptAttachments.js +92 -0
  348. package/dist/shared/promptAttachments.js.map +1 -0
  349. package/dist/shared/selfUpdate.js +3 -0
  350. package/dist/shared/selfUpdate.js.map +1 -0
  351. package/dist/shared/thinkingLevels.js +31 -0
  352. package/dist/shared/thinkingLevels.js.map +1 -0
  353. package/dist/shared/workspaceDeletion.js +12 -0
  354. package/dist/shared/workspaceDeletion.js.map +1 -0
  355. package/dist/shared/workspaceFiles.js +42 -0
  356. package/dist/shared/workspaceFiles.js.map +1 -0
  357. package/dist/shared/workspaceRemovalProtocol.js +24 -0
  358. package/dist/shared/workspaceRemovalProtocol.js.map +1 -0
  359. package/docs/assets/favicon.svg +11 -0
  360. package/docs/assets/pi-web-banner.png +0 -0
  361. package/docs/assets/pi-web-desktop.png +0 -0
  362. package/docs/assets/pi-web-mobile.png +0 -0
  363. package/docs/assets/pi-web-tablet.png +0 -0
  364. package/docs/config.md +444 -0
  365. package/docs/plugins.md +1305 -0
  366. package/examples/workspace-provider-plugin/README.md +52 -0
  367. package/examples/workspace-provider-plugin/package.json +25 -0
  368. package/examples/workspace-provider-plugin/src/browser/index.ts +69 -0
  369. package/examples/workspace-provider-plugin/src/server.ts +64 -0
  370. package/examples/workspace-provider-plugin/tsconfig.json +21 -0
  371. package/extensions/README-pi-web-restart-migration.md +45 -0
  372. package/extensions/pi-web.ts +324 -0
  373. package/install.sh +5 -0
  374. package/package.json +173 -0
  375. package/plugin-api.d.ts +1 -0
  376. package/server-plugin-api.d.ts +1 -0
@@ -0,0 +1,81 @@
1
+ // Generated from pi-web-plugins/git/browser/gitFileTree.ts. Do not edit directly.
2
+ import { pointerName, segmentName } from "./gitFileShared.js";
3
+ /**
4
+ * Build a nested directory/file tree from Git's flat changed-file list. The
5
+ * status response already carries every changed path, so this is a pure
6
+ * client-side transform (no lazy per-directory loading like the Files tab).
7
+ *
8
+ * `submodules` lists submodule roots: a directory matching one is marked as a
9
+ * submodule, a file whose path equals one becomes that submodule's pinned
10
+ * commit-pointer row, and files below one nest inside it. Directories sort
11
+ * before files (pointer row first within a submodule), both alphabetically.
12
+ */
13
+ export function buildGitFileTree(files, submodules = []) {
14
+ const root = createDirectoryAccumulator("");
15
+ const submoduleSet = new Set(submodules);
16
+ // Ensure a node exists (and is marked) for every submodule, so a submodule
17
+ // whose only change is a moved pointer still renders as an expandable root.
18
+ for (const submodule of submodules)
19
+ ensureDirectory(root, submodule).isSubmodule = true;
20
+ for (const file of files) {
21
+ if (submoduleSet.has(file.path)) {
22
+ const directory = ensureDirectory(root, file.path);
23
+ directory.isSubmodule = true;
24
+ directory.pointer = { kind: "file", name: pointerName(file), path: file.path, file, isSubmodulePointer: true };
25
+ continue;
26
+ }
27
+ const segments = file.path.split("/").filter((segment) => segment.length > 0);
28
+ const name = segments[segments.length - 1];
29
+ if (name === undefined)
30
+ continue;
31
+ let directory = root;
32
+ for (let index = 0; index < segments.length - 1; index += 1) {
33
+ const segment = segments[index];
34
+ if (segment === undefined)
35
+ continue;
36
+ directory = childDirectory(directory, segment);
37
+ }
38
+ directory.files.push({ kind: "file", name, path: file.path, file });
39
+ }
40
+ return finalizeChildren(root);
41
+ }
42
+ /**
43
+ * Every directory path in the tree, in a stable order. Used to drive the
44
+ * expand-all / collapse-all control and to decide whether the tree is fully
45
+ * expanded. Submodule roots are directories and are included.
46
+ */
47
+ export function collectGitFileTreeDirectoryPaths(nodes) {
48
+ const paths = [];
49
+ for (const node of nodes) {
50
+ if (node.kind === "directory") {
51
+ paths.push(node.path);
52
+ paths.push(...collectGitFileTreeDirectoryPaths(node.children));
53
+ }
54
+ }
55
+ return paths;
56
+ }
57
+ function createDirectoryAccumulator(path) {
58
+ return { path, directories: new Map(), files: [], isSubmodule: false };
59
+ }
60
+ function childDirectory(parent, segment) {
61
+ const childPath = parent.path.length === 0 ? segment : `${parent.path}/${segment}`;
62
+ const existing = parent.directories.get(childPath);
63
+ if (existing !== undefined)
64
+ return existing;
65
+ const created = createDirectoryAccumulator(childPath);
66
+ parent.directories.set(childPath, created);
67
+ return created;
68
+ }
69
+ function ensureDirectory(root, path) {
70
+ let directory = root;
71
+ for (const segment of path.split("/").filter((part) => part.length > 0))
72
+ directory = childDirectory(directory, segment);
73
+ return directory;
74
+ }
75
+ function finalizeChildren(directory) {
76
+ const directories = [...directory.directories.values()]
77
+ .map((child) => ({ kind: "directory", name: segmentName(child.path), path: child.path, ...(child.isSubmodule ? { isSubmodule: true } : {}), children: finalizeChildren(child) }))
78
+ .sort((left, right) => left.name.localeCompare(right.name));
79
+ const files = [...directory.files].sort((left, right) => left.name.localeCompare(right.name));
80
+ return [...(directory.pointer === undefined ? [] : [directory.pointer]), ...directories, ...files];
81
+ }
@@ -0,0 +1,35 @@
1
+ // Generated from pi-web-plugins/git/browser/gitFileViewPreference.ts. Do not edit directly.
2
+ export const GIT_FILE_VIEW_STORAGE_KEY = "pi-web.gitFileView";
3
+ export function parseGitFileView(value) {
4
+ return value === "tree" ? "tree" : "list";
5
+ }
6
+ export function readGitFileView(storage = browserStorage()) {
7
+ if (storage === undefined)
8
+ return "list";
9
+ try {
10
+ return parseGitFileView(storage.getItem(GIT_FILE_VIEW_STORAGE_KEY));
11
+ }
12
+ catch {
13
+ return "list";
14
+ }
15
+ }
16
+ export function writeGitFileView(view, storage = browserStorage()) {
17
+ if (storage === undefined)
18
+ return;
19
+ try {
20
+ storage.setItem(GIT_FILE_VIEW_STORAGE_KEY, view);
21
+ }
22
+ catch {
23
+ // Ignore localStorage quota/privacy errors; the chosen view still applies in memory for this tab.
24
+ }
25
+ }
26
+ function browserStorage() {
27
+ if (typeof window === "undefined")
28
+ return undefined;
29
+ try {
30
+ return window.localStorage;
31
+ }
32
+ catch {
33
+ return undefined;
34
+ }
35
+ }
@@ -0,0 +1,42 @@
1
+ // Generated from pi-web-plugins/git/browser/gitRoute.ts. Do not edit directly.
2
+ const legacyDiffNamespace = "core.workspace.git";
3
+ const diffQueryKey = "diff";
4
+ export function createGitDiffRoute(panelContributionId) {
5
+ const namespace = panelContributionId.replaceAll(":", ".");
6
+ const key = `${namespace}--${diffQueryKey}`;
7
+ const legacyKey = `${legacyDiffNamespace}--${diffQueryKey}`;
8
+ return {
9
+ matches: routeMatchesWorkspace,
10
+ read: () => {
11
+ const params = new URLSearchParams(window.location.search);
12
+ return nonEmpty(params.get(key)) ?? nonEmpty(params.get(legacyKey));
13
+ },
14
+ write: (path, options) => {
15
+ const url = new URL(window.location.href);
16
+ url.searchParams.delete(key);
17
+ url.searchParams.delete(legacyKey);
18
+ if (path !== undefined && path !== "")
19
+ url.searchParams.set(key, path);
20
+ commitUrl(url, options?.replace === true);
21
+ },
22
+ };
23
+ }
24
+ function routeMatchesWorkspace(context) {
25
+ const params = new URLSearchParams(window.location.search);
26
+ return (params.get("machine") ?? "local") === context.machine.id
27
+ && params.get("project") === context.workspace.projectId
28
+ && params.get("workspace") === context.workspace.id;
29
+ }
30
+ function nonEmpty(value) {
31
+ return value === null || value === "" ? undefined : value;
32
+ }
33
+ function commitUrl(url, replace) {
34
+ const next = `${url.pathname}${url.search}${url.hash}`;
35
+ const current = `${window.location.pathname}${window.location.search}${window.location.hash}`;
36
+ if (next === current)
37
+ return;
38
+ if (replace)
39
+ window.history.replaceState({}, "", url);
40
+ else
41
+ window.history.pushState({}, "", url);
42
+ }
@@ -0,0 +1,10 @@
1
+ // Generated from pi-web-plugins/git/browser/pi-web-plugin.ts. Do not edit directly.
2
+ import { createGitBrowserContributions } from "./git-panel.js";
3
+ const plugin = {
4
+ apiVersion: 2,
5
+ name: "Git",
6
+ activate: ({ pluginId, runtimePluginId, html, svg }) => ({
7
+ contributions: createGitBrowserContributions(pluginId, runtimePluginId, html, svg),
8
+ }),
9
+ };
10
+ export default plugin;
@@ -0,0 +1,301 @@
1
+ // Generated from pi-web-plugins/git/browser/unifiedDiff.ts. Do not edit directly.
2
+ const hunkHeaderPattern = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/;
3
+ const maxInlineLineLength = 5_000;
4
+ const maxInlineBlockLines = 20;
5
+ const minInlineSimilarity = 0.20;
6
+ const minPairSimilarity = 0.25;
7
+ const maxInlineMatrixCells = 250_000;
8
+ const graphemeSegmenter = typeof Intl.Segmenter === "function"
9
+ ? new Intl.Segmenter(undefined, { granularity: "grapheme" })
10
+ : undefined;
11
+ export function parseUnifiedDiff(diff) {
12
+ const parsedLines = parseUnifiedDiffLines(diff);
13
+ applyInlineDiffs(parsedLines);
14
+ return parsedLines;
15
+ }
16
+ function parseUnifiedDiffLines(diff) {
17
+ const lines = splitDiffLines(diff);
18
+ const parsedLines = [];
19
+ let oldLineNumber;
20
+ let newLineNumber;
21
+ for (const rawLine of lines) {
22
+ const hunkMatch = hunkHeaderPattern.exec(rawLine);
23
+ if (hunkMatch !== null) {
24
+ oldLineNumber = Number(hunkMatch[1]);
25
+ newLineNumber = Number(hunkMatch[2]);
26
+ parsedLines.push(line("hunk", "", rawLine));
27
+ continue;
28
+ }
29
+ if (oldLineNumber !== undefined && newLineNumber !== undefined) {
30
+ if (rawLine.startsWith("+")) {
31
+ parsedLines.push(line("add", "+", rawLine.slice(1), { newLineNumber }));
32
+ newLineNumber++;
33
+ continue;
34
+ }
35
+ if (rawLine.startsWith("-")) {
36
+ parsedLines.push(line("remove", "-", rawLine.slice(1), { oldLineNumber }));
37
+ oldLineNumber++;
38
+ continue;
39
+ }
40
+ if (rawLine.startsWith(" ")) {
41
+ parsedLines.push(line("context", " ", rawLine.slice(1), { oldLineNumber, newLineNumber }));
42
+ oldLineNumber++;
43
+ newLineNumber++;
44
+ continue;
45
+ }
46
+ if (rawLine.startsWith("\\")) {
47
+ parsedLines.push(line("marker", "", rawLine));
48
+ continue;
49
+ }
50
+ }
51
+ oldLineNumber = undefined;
52
+ newLineNumber = undefined;
53
+ parsedLines.push(line("meta", "", rawLine));
54
+ }
55
+ return parsedLines;
56
+ }
57
+ function splitDiffLines(diff) {
58
+ if (diff === "")
59
+ return [];
60
+ const lines = diff.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
61
+ if (lines.at(-1) === "")
62
+ lines.pop();
63
+ return lines;
64
+ }
65
+ function line(kind, prefix, text, numbers = {}) {
66
+ return {
67
+ kind,
68
+ prefix,
69
+ text,
70
+ spans: text === "" ? [] : [{ text, changed: false }],
71
+ ...numbers,
72
+ };
73
+ }
74
+ function applyInlineDiffs(lines) {
75
+ let index = 0;
76
+ while (index < lines.length) {
77
+ const current = lines[index];
78
+ if (current?.kind !== "remove") {
79
+ index++;
80
+ continue;
81
+ }
82
+ const removedStart = index;
83
+ while (lines[index]?.kind === "remove")
84
+ index++;
85
+ const addedStart = index;
86
+ while (lines[index]?.kind === "add")
87
+ index++;
88
+ if (addedStart === index)
89
+ continue;
90
+ const removedLines = lines.slice(removedStart, addedStart);
91
+ const addedLines = lines.slice(addedStart, index);
92
+ applyInlineDiffBlock(removedLines, addedLines);
93
+ }
94
+ }
95
+ function applyInlineDiffBlock(removedLines, addedLines) {
96
+ if (removedLines.length + addedLines.length > maxInlineBlockLines)
97
+ return;
98
+ for (const pair of pairChangedLines(removedLines, addedLines)) {
99
+ const inlineDiff = computeInlineDiff(pair.removed.text, pair.added.text);
100
+ if (inlineDiff === undefined)
101
+ continue;
102
+ pair.removed.spans = inlineDiff.removed;
103
+ pair.added.spans = inlineDiff.added;
104
+ }
105
+ }
106
+ function pairChangedLines(removedLines, addedLines) {
107
+ if (removedLines.length === addedLines.length)
108
+ return removedLines.map((removed, index) => ({ removed, added: addedLines[index] })).filter(isCompletePair);
109
+ if (removedLines.length === 1)
110
+ return bestPairsForSingleRemovedLine(removedLines[0], addedLines);
111
+ if (addedLines.length === 1)
112
+ return bestPairsForSingleAddedLine(removedLines, addedLines[0]);
113
+ const pairs = [];
114
+ const pairCount = Math.min(removedLines.length, addedLines.length);
115
+ for (let index = 0; index < pairCount; index++) {
116
+ const removed = removedLines[index];
117
+ const added = addedLines[index];
118
+ if (removed === undefined || added === undefined)
119
+ continue;
120
+ if (lineSimilarity(removed.text, added.text) >= minPairSimilarity)
121
+ pairs.push({ removed, added });
122
+ }
123
+ return pairs;
124
+ }
125
+ function isCompletePair(pair) {
126
+ return pair.added !== undefined;
127
+ }
128
+ function bestPairsForSingleRemovedLine(removed, addedLines) {
129
+ if (removed === undefined)
130
+ return [];
131
+ const added = bestMatchingLine(removed.text, addedLines);
132
+ return added === undefined ? [] : [{ removed, added }];
133
+ }
134
+ function bestPairsForSingleAddedLine(removedLines, added) {
135
+ if (added === undefined)
136
+ return [];
137
+ const removed = bestMatchingLine(added.text, removedLines);
138
+ return removed === undefined ? [] : [{ removed, added }];
139
+ }
140
+ function bestMatchingLine(text, candidates) {
141
+ let bestCandidate;
142
+ let bestScore = minPairSimilarity;
143
+ for (const candidate of candidates) {
144
+ const score = lineSimilarity(text, candidate.text);
145
+ if (score <= bestScore)
146
+ continue;
147
+ bestCandidate = candidate;
148
+ bestScore = score;
149
+ }
150
+ return bestCandidate;
151
+ }
152
+ function computeInlineDiff(oldText, newText) {
153
+ if (oldText === newText)
154
+ return undefined;
155
+ if (oldText.length > maxInlineLineLength || newText.length > maxInlineLineLength)
156
+ return undefined;
157
+ const oldUnits = splitTextUnits(oldText);
158
+ const newUnits = splitTextUnits(newText);
159
+ if (oldUnits.length > maxInlineLineLength || newUnits.length > maxInlineLineLength)
160
+ return undefined;
161
+ const changes = diffTextUnits(oldUnits, newUnits);
162
+ const similarity = similarityFromChanges(changes, oldUnits.length, newUnits.length);
163
+ if (Math.max(oldUnits.length, newUnits.length) >= 20 && similarity < minInlineSimilarity)
164
+ return undefined;
165
+ const removed = [];
166
+ const added = [];
167
+ for (const change of changes) {
168
+ if (change.value === "")
169
+ continue;
170
+ if (change.added === true)
171
+ added.push({ text: change.value, changed: true });
172
+ else if (change.removed === true)
173
+ removed.push({ text: change.value, changed: true });
174
+ else {
175
+ removed.push({ text: change.value, changed: false });
176
+ added.push({ text: change.value, changed: false });
177
+ }
178
+ }
179
+ if (!removed.some((span) => span.changed) && !added.some((span) => span.changed))
180
+ return undefined;
181
+ return { removed: mergeAdjacentSpans(removed), added: mergeAdjacentSpans(added) };
182
+ }
183
+ function lineSimilarity(oldText, newText) {
184
+ if (oldText === newText)
185
+ return 1;
186
+ if (oldText.length > maxInlineLineLength || newText.length > maxInlineLineLength)
187
+ return 0;
188
+ const oldUnits = splitTextUnits(oldText);
189
+ const newUnits = splitTextUnits(newText);
190
+ if (oldUnits.length > maxInlineLineLength || newUnits.length > maxInlineLineLength)
191
+ return 0;
192
+ return similarityFromChanges(diffTextUnits(oldUnits, newUnits), oldUnits.length, newUnits.length);
193
+ }
194
+ function similarityFromChanges(changes, oldLength, newLength) {
195
+ const maxLength = Math.max(oldLength, newLength);
196
+ if (maxLength === 0)
197
+ return 1;
198
+ const unchangedLength = changes.reduce((total, change) => change.added === true || change.removed === true ? total : total + change.unitCount, 0);
199
+ return unchangedLength / maxLength;
200
+ }
201
+ /**
202
+ * Grapheme-level diff for inline highlights. Browser plugins are served as
203
+ * native modules, so this package keeps the bounded algorithm local instead of
204
+ * depending on an application-bundled bare module. Large, dissimilar middles
205
+ * intentionally fall back to whole-span changes rather than doing unbounded
206
+ * quadratic work. The code-point fallback still never splits surrogate pairs.
207
+ */
208
+ function diffTextUnits(oldText, newText) {
209
+ if (sameTextUnits(oldText, newText))
210
+ return oldText.length === 0 ? [] : [{ value: oldText.join(""), unitCount: oldText.length }];
211
+ let prefixLength = 0;
212
+ const sharedLength = Math.min(oldText.length, newText.length);
213
+ while (prefixLength < sharedLength && oldText[prefixLength] === newText[prefixLength])
214
+ prefixLength += 1;
215
+ let suffixLength = 0;
216
+ while (suffixLength < sharedLength - prefixLength
217
+ && oldText[oldText.length - suffixLength - 1] === newText[newText.length - suffixLength - 1])
218
+ suffixLength += 1;
219
+ const oldMiddle = oldText.slice(prefixLength, oldText.length - suffixLength);
220
+ const newMiddle = newText.slice(prefixLength, newText.length - suffixLength);
221
+ const changes = [];
222
+ appendCharacterChange(changes, oldText.slice(0, prefixLength));
223
+ if (oldMiddle.length * newMiddle.length > maxInlineMatrixCells) {
224
+ appendCharacterChange(changes, oldMiddle, "removed");
225
+ appendCharacterChange(changes, newMiddle, "added");
226
+ }
227
+ else {
228
+ for (const change of diffMiddleCharacters(oldMiddle, newMiddle))
229
+ appendCharacterChange(changes, splitTextUnits(change.value), change.added === true ? "added" : change.removed === true ? "removed" : undefined);
230
+ }
231
+ appendCharacterChange(changes, oldText.slice(oldText.length - suffixLength));
232
+ return changes;
233
+ }
234
+ function diffMiddleCharacters(oldText, newText) {
235
+ if (oldText.length === 0)
236
+ return newText.length === 0 ? [] : [{ value: newText.join(""), unitCount: newText.length, added: true }];
237
+ if (newText.length === 0)
238
+ return [{ value: oldText.join(""), unitCount: oldText.length, removed: true }];
239
+ const width = newText.length + 1;
240
+ const matrix = new Uint32Array((oldText.length + 1) * width);
241
+ for (let oldIndex = oldText.length - 1; oldIndex >= 0; oldIndex -= 1) {
242
+ for (let newIndex = newText.length - 1; newIndex >= 0; newIndex -= 1) {
243
+ const offset = oldIndex * width + newIndex;
244
+ matrix[offset] = oldText[oldIndex] === newText[newIndex]
245
+ ? (matrix[(oldIndex + 1) * width + newIndex + 1] ?? 0) + 1
246
+ : Math.max(matrix[(oldIndex + 1) * width + newIndex] ?? 0, matrix[oldIndex * width + newIndex + 1] ?? 0);
247
+ }
248
+ }
249
+ const changes = [];
250
+ let oldIndex = 0;
251
+ let newIndex = 0;
252
+ while (oldIndex < oldText.length || newIndex < newText.length) {
253
+ if (oldIndex < oldText.length && newIndex < newText.length && oldText[oldIndex] === newText[newIndex]) {
254
+ appendCharacterChange(changes, [oldText[oldIndex] ?? ""]);
255
+ oldIndex += 1;
256
+ newIndex += 1;
257
+ }
258
+ else if (newIndex >= newText.length || (oldIndex < oldText.length && (matrix[(oldIndex + 1) * width + newIndex] ?? 0) >= (matrix[oldIndex * width + newIndex + 1] ?? 0))) {
259
+ appendCharacterChange(changes, [oldText[oldIndex] ?? ""], "removed");
260
+ oldIndex += 1;
261
+ }
262
+ else {
263
+ appendCharacterChange(changes, [newText[newIndex] ?? ""], "added");
264
+ newIndex += 1;
265
+ }
266
+ }
267
+ return changes;
268
+ }
269
+ function appendCharacterChange(changes, units, kind) {
270
+ if (units.length === 0)
271
+ return;
272
+ const value = units.join("");
273
+ const previous = changes[changes.length - 1];
274
+ const added = kind === "added";
275
+ const removed = kind === "removed";
276
+ if (previous !== undefined && previous.added === (added || undefined) && previous.removed === (removed || undefined)) {
277
+ previous.value += value;
278
+ previous.unitCount += units.length;
279
+ return;
280
+ }
281
+ changes.push({ value, unitCount: units.length, ...(added ? { added: true } : {}), ...(removed ? { removed: true } : {}) });
282
+ }
283
+ function splitTextUnits(text) {
284
+ if (graphemeSegmenter === undefined)
285
+ return Array.from(text);
286
+ return Array.from(graphemeSegmenter.segment(text), ({ segment }) => segment);
287
+ }
288
+ function sameTextUnits(left, right) {
289
+ return left.length === right.length && left.every((unit, index) => unit === right[index]);
290
+ }
291
+ function mergeAdjacentSpans(spans) {
292
+ const merged = [];
293
+ for (const span of spans) {
294
+ const previous = merged[merged.length - 1];
295
+ if (previous?.changed === span.changed)
296
+ previous.text += span.text;
297
+ else
298
+ merged.push({ ...span });
299
+ }
300
+ return merged;
301
+ }