@vincenthanxiaodu/pi-web 1.202608.77 → 1.202609.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/dist/cli.js +2 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/client/assets/{CodeViewer-B_rJKGwu.js → CodeViewer-BDNVRbqY.js} +1 -1
  4. package/dist/client/assets/{TerminalPanel-BEQXdgKi.js → TerminalPanel-haos8c1O.js} +1 -1
  5. package/dist/client/assets/{index-BzQF46sk.js → index-POhML0QZ.js} +4 -4
  6. package/dist/client/index.html +7 -2
  7. package/dist/piWebVersionReport.js +1 -1
  8. package/dist/piWebVersionReport.js.map +1 -1
  9. package/dist/{sessiond → server/daemon}/activeAgentProfile.js +2 -2
  10. package/dist/server/daemon/activeAgentProfile.js.map +1 -0
  11. package/dist/server/{activity → daemon/activity}/workspaceActivityService.js +41 -42
  12. package/dist/server/daemon/activity/workspaceActivityService.js.map +1 -0
  13. package/dist/server/daemon/agentHttpDispatcher.js.map +1 -0
  14. package/dist/server/daemon/agentProcessEnvironment.js.map +1 -0
  15. package/dist/server/daemon/browserMessageProjection.js.map +1 -0
  16. package/dist/server/{realtime → daemon/realtime}/sessionEventHub.js +50 -5
  17. package/dist/server/daemon/realtime/sessionEventHub.js.map +1 -0
  18. package/dist/server/daemon/sessionDaemonShutdown.js.map +1 -0
  19. package/dist/server/daemon/sessionServiceDependencies.js.map +1 -0
  20. package/dist/server/{sessiond → daemon}/sessiondStateOwnership.js +1 -1
  21. package/dist/server/daemon/sessiondStateOwnership.js.map +1 -0
  22. package/dist/server/{sessions → daemon/sessions}/askUserTool.js +1 -1
  23. package/dist/server/daemon/sessions/askUserTool.js.map +1 -0
  24. package/dist/server/{sessions → daemon/sessions}/attachmentService.js +2 -2
  25. package/dist/server/daemon/sessions/attachmentService.js.map +1 -0
  26. package/dist/server/daemon/sessions/authProviderOptions.js.map +1 -0
  27. package/dist/server/daemon/sessions/authRoutes.js.map +1 -0
  28. package/dist/server/daemon/sessions/authService.js.map +1 -0
  29. package/dist/server/{sessions → daemon/sessions}/backgroundRunCount.js +26 -1
  30. package/dist/server/daemon/sessions/backgroundRunCount.js.map +1 -0
  31. package/dist/server/daemon/sessions/backgroundTasks.js.map +1 -0
  32. package/dist/server/daemon/sessions/backgroundWorkWatcher.js +109 -0
  33. package/dist/server/daemon/sessions/backgroundWorkWatcher.js.map +1 -0
  34. package/dist/server/daemon/sessions/builtinCommands.js.map +1 -0
  35. package/dist/server/daemon/sessions/dockerEnvironmentFacts.js.map +1 -0
  36. package/dist/server/daemon/sessions/editPreview.js.map +1 -0
  37. package/dist/server/daemon/sessions/extensionDialogWaiters.js.map +1 -0
  38. package/dist/server/daemon/sessions/globalProviderPolicy.js.map +1 -0
  39. package/dist/server/daemon/sessions/hostContributions.js.map +1 -0
  40. package/dist/server/daemon/sessions/injectedTurnKinds.js.map +1 -0
  41. package/dist/server/{sessions → daemon/sessions}/interruptedRunStore.js +1 -1
  42. package/dist/server/daemon/sessions/interruptedRunStore.js.map +1 -0
  43. package/dist/server/daemon/sessions/messagePaging.js.map +1 -0
  44. package/dist/server/daemon/sessions/modelCatalogRefresher.js.map +1 -0
  45. package/dist/server/daemon/sessions/oauthLoginFlowService.js.map +1 -0
  46. package/dist/server/{sessions → daemon/sessions}/pendingAskStore.js +1 -1
  47. package/dist/server/daemon/sessions/pendingAskStore.js.map +1 -0
  48. package/dist/server/{sessions → daemon/sessions}/pendingExtensionDialogStore.js +1 -1
  49. package/dist/server/daemon/sessions/pendingExtensionDialogStore.js.map +1 -0
  50. package/dist/server/{sessions → daemon/sessions}/piSessionManagerGateway.js +1 -1
  51. package/dist/server/daemon/sessions/piSessionManagerGateway.js.map +1 -0
  52. package/dist/server/{sessions → daemon/sessions}/piSessionService.js +37 -8
  53. package/dist/server/daemon/sessions/piSessionService.js.map +1 -0
  54. package/dist/server/daemon/sessions/plainTextTheme.js.map +1 -0
  55. package/dist/server/{sessions → daemon/sessions}/readableMessageCount.js +1 -1
  56. package/dist/server/daemon/sessions/readableMessageCount.js.map +1 -0
  57. package/dist/server/daemon/sessions/sessionActivityLabel.js.map +1 -0
  58. package/dist/server/{sessions → daemon/sessions}/sessionArchiveStore.js +1 -1
  59. package/dist/server/daemon/sessions/sessionArchiveStore.js.map +1 -0
  60. package/dist/server/daemon/sessions/sessionArchiveTree.js.map +1 -0
  61. package/dist/server/daemon/sessions/sessionCleanup.js.map +1 -0
  62. package/dist/server/daemon/sessions/sessionCommandService.js.map +1 -0
  63. package/dist/server/{sessions → daemon/sessions}/sessionEnvironmentFacts.js +2 -2
  64. package/dist/server/daemon/sessions/sessionEnvironmentFacts.js.map +1 -0
  65. package/dist/server/daemon/sessions/sessionFileFormat.js.map +1 -0
  66. package/dist/server/daemon/sessions/sessionFileHeader.js.map +1 -0
  67. package/dist/server/daemon/sessions/sessionModelScope.js.map +1 -0
  68. package/dist/server/daemon/sessions/sessionNameGenerator.js.map +1 -0
  69. package/dist/server/{sessions → daemon/sessions}/sessionNotificationStore.js +2 -2
  70. package/dist/server/daemon/sessions/sessionNotificationStore.js.map +1 -0
  71. package/dist/server/{sessions → daemon/sessions}/sessionRoutes.js +1 -1
  72. package/dist/server/daemon/sessions/sessionRoutes.js.map +1 -0
  73. package/dist/server/daemon/sessions/sessionRuntimeStore.js.map +1 -0
  74. package/dist/server/daemon/sessions/sessionService.js.map +1 -0
  75. package/dist/server/daemon/sessions/sessionSummaryScanner.js.map +1 -0
  76. package/dist/server/daemon/sessions/sessionTreeProjection.js.map +1 -0
  77. package/dist/server/{sessions → daemon/sessions}/sessionUnreadStore.js +2 -2
  78. package/dist/server/daemon/sessions/sessionUnreadStore.js.map +1 -0
  79. package/dist/server/daemon/sessions/shutdownDrain.js.map +1 -0
  80. package/dist/server/daemon/sessions/spawnSessionTool.js.map +1 -0
  81. package/dist/server/daemon/sessions/spawnSubsessionTool.js.map +1 -0
  82. package/dist/server/daemon/sessions/spawnTargetResolver.js.map +1 -0
  83. package/dist/server/{sessions → daemon/sessions}/subagentRuns.js +49 -19
  84. package/dist/server/daemon/sessions/subagentRuns.js.map +1 -0
  85. package/dist/server/daemon/sessions/subsessionTranscript.js.map +1 -0
  86. package/dist/server/daemon/sessions/unsupportedSurface.js.map +1 -0
  87. package/dist/server/daemon/sessions/warningFiling.js.map +1 -0
  88. package/dist/server/daemon/status/machineStatusRoutes.js.map +1 -0
  89. package/dist/server/{status → daemon/status}/machineStatusService.js +1 -1
  90. package/dist/server/daemon/status/machineStatusService.js.map +1 -0
  91. package/dist/server/daemon/status/workspaceAttribution.js.map +1 -0
  92. package/dist/server/daemon/terminals/nodePtySpawnHelper.js.map +1 -0
  93. package/dist/server/{terminals → daemon/terminals}/terminalRoutes.js +1 -1
  94. package/dist/server/daemon/terminals/terminalRoutes.js.map +1 -0
  95. package/dist/server/daemon/terminals/terminalService.js.map +1 -0
  96. package/dist/server/daemon/workingDirectory.js.map +1 -0
  97. package/dist/server/{sessiond → daemon/workspaces}/pluginBackendRoutes.js +3 -3
  98. package/dist/server/daemon/workspaces/pluginBackendRoutes.js.map +1 -0
  99. package/dist/server/daemon/workspaces/projectWorkspaceCwds.js.map +1 -0
  100. package/dist/server/daemon/workspaces/workspaceCatalogRoutes.js.map +1 -0
  101. package/dist/server/{workspaces → daemon/workspaces}/workspaceProviderRegistry.js +2 -2
  102. package/dist/server/daemon/workspaces/workspaceProviderRegistry.js.map +1 -0
  103. package/dist/server/{sessiond → daemon/workspaces}/workspaceRemovalRoutes.js +3 -3
  104. package/dist/server/daemon/workspaces/workspaceRemovalRoutes.js.map +1 -0
  105. package/dist/server/{workspaces → daemon/workspaces}/workspaceRemovalService.js +2 -2
  106. package/dist/server/daemon/workspaces/workspaceRemovalService.js.map +1 -0
  107. package/dist/server/{workspaces → daemon/workspaces}/worktreePreRemoveHook.js +1 -1
  108. package/dist/server/daemon/workspaces/worktreePreRemoveHook.js.map +1 -0
  109. package/dist/server/index.js +1 -1
  110. package/dist/server/index.js.map +1 -1
  111. package/dist/server/sessiond.js +41 -41
  112. package/dist/server/sessiond.js.map +1 -1
  113. package/dist/server/shared/diagnostics/nodePtyNativeModule.js.map +1 -0
  114. package/dist/server/shared/diagnostics/nodePtySpawnHelper.js.map +1 -0
  115. package/dist/server/{piWebPluginCatalog.js → shared/piWebPluginCatalog.js} +3 -3
  116. package/dist/server/shared/piWebPluginCatalog.js.map +1 -0
  117. package/dist/server/shared/piWebReleaseLookupCache.js.map +1 -0
  118. package/dist/server/{piWebStatus.js → shared/piWebStatus.js} +6 -6
  119. package/dist/server/shared/piWebStatus.js.map +1 -0
  120. package/dist/server/shared/plugins/serverPluginExec.js.map +1 -0
  121. package/dist/server/shared/plugins/serverPluginRuntime.js.map +1 -0
  122. package/dist/server/shared/projects/directorySuggestions.js.map +1 -0
  123. package/dist/server/shared/projects/projectService.js.map +1 -0
  124. package/dist/server/shared/requestCancellation.js.map +1 -0
  125. package/dist/{sessiond → server/shared/sessiondClient}/config.js +1 -1
  126. package/dist/server/shared/sessiondClient/config.js.map +1 -0
  127. package/dist/{sessiond → server/shared/sessiondClient}/sessionDaemonClient.js +2 -2
  128. package/dist/server/shared/sessiondClient/sessionDaemonClient.js.map +1 -0
  129. package/dist/server/{storage → shared/storage}/projectStore.js +1 -1
  130. package/dist/server/shared/storage/projectStore.js.map +1 -0
  131. package/dist/server/shared/terminals/terminalSize.js.map +1 -0
  132. package/dist/server/{types.js.map → shared/types.js.map} +1 -1
  133. package/dist/server/shared/workspaces/pathSafety.js.map +1 -0
  134. package/dist/server/shared/workspaces/workspaceCatalog.js.map +1 -0
  135. package/dist/server/{activeAgentProfileProvider.js → web/activeAgentProfileProvider.js} +1 -1
  136. package/dist/server/web/activeAgentProfileProvider.js.map +1 -0
  137. package/dist/server/{app.js → web/app.js} +10 -10
  138. package/dist/server/web/app.js.map +1 -0
  139. package/dist/server/{configRoutes.js → web/configRoutes.js} +2 -2
  140. package/dist/server/web/configRoutes.js.map +1 -0
  141. package/dist/server/web/git/gitEnv.js.map +1 -0
  142. package/dist/server/web/goals/goalArchive.js.map +1 -0
  143. package/dist/server/web/goals/goalFile.js.map +1 -0
  144. package/dist/server/web/goals/goalStore.js.map +1 -0
  145. package/dist/server/web/machines/machineClient.js.map +1 -0
  146. package/dist/server/{machines → web/machines}/machinePluginProxyRoutes.js +4 -4
  147. package/dist/server/web/machines/machinePluginProxyRoutes.js.map +1 -0
  148. package/dist/server/{machines → web/machines}/machineProxyRoutes.js +2 -2
  149. package/dist/server/web/machines/machineProxyRoutes.js.map +1 -0
  150. package/dist/server/web/machines/machineRoutes.js.map +1 -0
  151. package/dist/server/{machines → web/machines}/machineService.js +2 -2
  152. package/dist/server/web/machines/machineService.js.map +1 -0
  153. package/dist/server/{machines → web/machines}/machineStore.js +1 -1
  154. package/dist/server/web/machines/machineStore.js.map +1 -0
  155. package/dist/server/web/piPackageRoutes.js.map +1 -0
  156. package/dist/server/web/piPackageService.js.map +1 -0
  157. package/dist/server/{piWebPluginLifecycle.js → web/piWebPluginLifecycle.js} +2 -2
  158. package/dist/server/web/piWebPluginLifecycle.js.map +1 -0
  159. package/dist/server/{piWebPluginService.js → web/piWebPluginService.js} +5 -5
  160. package/dist/server/web/piWebPluginService.js.map +1 -0
  161. package/dist/server/web/piWebStatusCache.js.map +1 -0
  162. package/dist/server/{plugins → web/plugins}/pluginBackendProxyRoutes.js +1 -1
  163. package/dist/server/web/plugins/pluginBackendProxyRoutes.js.map +1 -0
  164. package/dist/server/{projectTrustRoutes.js → web/projectTrustRoutes.js} +1 -1
  165. package/dist/server/web/projectTrustRoutes.js.map +1 -0
  166. package/dist/server/{sessiond → web}/sessionProxyRoutes.js +1 -1
  167. package/dist/server/web/sessionProxyRoutes.js.map +1 -0
  168. package/dist/server/web/speechRoutes.js.map +1 -0
  169. package/dist/server/{terminalProxyRoutes.js → web/terminalProxyRoutes.js} +2 -2
  170. package/dist/server/web/terminalProxyRoutes.js.map +1 -0
  171. package/dist/server/web/updates/fleetRoutes.js.map +1 -0
  172. package/dist/server/web/updates/restartRoutes.js.map +1 -0
  173. package/dist/server/{updates → web/updates}/selfUpdateRoutes.js +2 -2
  174. package/dist/server/web/updates/selfUpdateRoutes.js.map +1 -0
  175. package/dist/server/web/webSocketBridge.js.map +1 -0
  176. package/dist/server/web/workspaceExplorerRoutes.js.map +1 -0
  177. package/dist/server/web/workspaces/effectivePathAccess.js.map +1 -0
  178. package/dist/server/{workspaces → web/workspaces}/fileContentService.js +2 -2
  179. package/dist/server/web/workspaces/fileContentService.js.map +1 -0
  180. package/dist/server/web/workspaces/filePreviewResponseHeaders.js.map +1 -0
  181. package/dist/server/{workspaces → web/workspaces}/filePreviewResponsePolicy.js +1 -1
  182. package/dist/server/web/workspaces/filePreviewResponsePolicy.js.map +1 -0
  183. package/dist/server/{workspaces → web/workspaces}/filePreviewService.js +1 -1
  184. package/dist/server/web/workspaces/filePreviewService.js.map +1 -0
  185. package/dist/server/web/workspaces/fileSuggestions.js.map +1 -0
  186. package/dist/server/web/workspaces/fileTreeService.js.map +1 -0
  187. package/dist/server/{workspaces → web/workspaces}/pathAccessPolicy.js +1 -1
  188. package/dist/server/web/workspaces/pathAccessPolicy.js.map +1 -0
  189. package/dist/server/{workspaces → web/workspaces}/projectPiWebConfig.js +1 -1
  190. package/dist/server/web/workspaces/projectPiWebConfig.js.map +1 -0
  191. package/dist/server/{workspaces → web/workspaces}/sessionDaemonWorkspaceCatalog.js +2 -2
  192. package/dist/server/web/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -0
  193. package/dist/server/web/workspaces/workspaceContext.js.map +1 -0
  194. package/dist/server/{workspaces → web/workspaces}/workspaceDeletionRoutes.js +3 -3
  195. package/dist/server/web/workspaces/workspaceDeletionRoutes.js.map +1 -0
  196. package/dist/server/{workspaces → web/workspaces}/workspaceRouteErrors.js +1 -1
  197. package/dist/server/web/workspaces/workspaceRouteErrors.js.map +1 -0
  198. package/dist/shared/branchMessages.js.map +1 -0
  199. package/dist/shared/subagentRunTranscript.js.map +1 -0
  200. package/package.json +6 -6
  201. package/dist/server/activeAgentProfileProvider.js.map +0 -1
  202. package/dist/server/activity/workspaceActivityService.js.map +0 -1
  203. package/dist/server/app.js.map +0 -1
  204. package/dist/server/browserMessageProjection.js.map +0 -1
  205. package/dist/server/configRoutes.js.map +0 -1
  206. package/dist/server/diagnostics/nodePtyNativeModule.js.map +0 -1
  207. package/dist/server/diagnostics/nodePtySpawnHelper.js.map +0 -1
  208. package/dist/server/git/gitEnv.js.map +0 -1
  209. package/dist/server/goals/goalArchive.js.map +0 -1
  210. package/dist/server/goals/goalFile.js.map +0 -1
  211. package/dist/server/goals/goalStore.js.map +0 -1
  212. package/dist/server/machines/machineClient.js.map +0 -1
  213. package/dist/server/machines/machinePluginProxyRoutes.js.map +0 -1
  214. package/dist/server/machines/machineProxyRoutes.js.map +0 -1
  215. package/dist/server/machines/machineRoutes.js.map +0 -1
  216. package/dist/server/machines/machineService.js.map +0 -1
  217. package/dist/server/machines/machineStore.js.map +0 -1
  218. package/dist/server/piPackageRoutes.js.map +0 -1
  219. package/dist/server/piPackageService.js.map +0 -1
  220. package/dist/server/piWebPluginCatalog.js.map +0 -1
  221. package/dist/server/piWebPluginLifecycle.js.map +0 -1
  222. package/dist/server/piWebPluginService.js.map +0 -1
  223. package/dist/server/piWebReleaseLookupCache.js.map +0 -1
  224. package/dist/server/piWebStatus.js.map +0 -1
  225. package/dist/server/piWebStatusCache.js.map +0 -1
  226. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +0 -1
  227. package/dist/server/plugins/serverPluginExec.js.map +0 -1
  228. package/dist/server/plugins/serverPluginRuntime.js.map +0 -1
  229. package/dist/server/projectTrustRoutes.js.map +0 -1
  230. package/dist/server/projects/directorySuggestions.js.map +0 -1
  231. package/dist/server/projects/projectService.js.map +0 -1
  232. package/dist/server/realtime/sessionEventHub.js.map +0 -1
  233. package/dist/server/requestCancellation.js.map +0 -1
  234. package/dist/server/sessiond/agentHttpDispatcher.js.map +0 -1
  235. package/dist/server/sessiond/agentProcessEnvironment.js.map +0 -1
  236. package/dist/server/sessiond/pluginBackendRoutes.js.map +0 -1
  237. package/dist/server/sessiond/sessionDaemonShutdown.js.map +0 -1
  238. package/dist/server/sessiond/sessionProxyRoutes.js.map +0 -1
  239. package/dist/server/sessiond/sessionServiceDependencies.js.map +0 -1
  240. package/dist/server/sessiond/sessiondStateOwnership.js.map +0 -1
  241. package/dist/server/sessiond/workspaceCatalogRoutes.js.map +0 -1
  242. package/dist/server/sessiond/workspaceRemovalRoutes.js.map +0 -1
  243. package/dist/server/sessions/askUserTool.js.map +0 -1
  244. package/dist/server/sessions/attachmentService.js.map +0 -1
  245. package/dist/server/sessions/authProviderOptions.js.map +0 -1
  246. package/dist/server/sessions/authRoutes.js.map +0 -1
  247. package/dist/server/sessions/authService.js.map +0 -1
  248. package/dist/server/sessions/backgroundRunCount.js.map +0 -1
  249. package/dist/server/sessions/backgroundTasks.js.map +0 -1
  250. package/dist/server/sessions/branchMessages.js.map +0 -1
  251. package/dist/server/sessions/builtinCommands.js.map +0 -1
  252. package/dist/server/sessions/dockerEnvironmentFacts.js.map +0 -1
  253. package/dist/server/sessions/editPreview.js.map +0 -1
  254. package/dist/server/sessions/extensionDialogWaiters.js.map +0 -1
  255. package/dist/server/sessions/globalProviderPolicy.js.map +0 -1
  256. package/dist/server/sessions/hostContributions.js.map +0 -1
  257. package/dist/server/sessions/injectedTurnKinds.js.map +0 -1
  258. package/dist/server/sessions/interruptedRunStore.js.map +0 -1
  259. package/dist/server/sessions/messagePaging.js.map +0 -1
  260. package/dist/server/sessions/modelCatalogRefresher.js.map +0 -1
  261. package/dist/server/sessions/oauthLoginFlowService.js.map +0 -1
  262. package/dist/server/sessions/pendingAskStore.js.map +0 -1
  263. package/dist/server/sessions/pendingExtensionDialogStore.js.map +0 -1
  264. package/dist/server/sessions/piSessionManagerGateway.js.map +0 -1
  265. package/dist/server/sessions/piSessionService.js.map +0 -1
  266. package/dist/server/sessions/plainTextTheme.js.map +0 -1
  267. package/dist/server/sessions/readableMessageCount.js.map +0 -1
  268. package/dist/server/sessions/sessionActivityLabel.js.map +0 -1
  269. package/dist/server/sessions/sessionArchiveStore.js.map +0 -1
  270. package/dist/server/sessions/sessionArchiveTree.js.map +0 -1
  271. package/dist/server/sessions/sessionCleanup.js.map +0 -1
  272. package/dist/server/sessions/sessionCommandService.js.map +0 -1
  273. package/dist/server/sessions/sessionEnvironmentFacts.js.map +0 -1
  274. package/dist/server/sessions/sessionFileFormat.js.map +0 -1
  275. package/dist/server/sessions/sessionFileHeader.js.map +0 -1
  276. package/dist/server/sessions/sessionModelScope.js.map +0 -1
  277. package/dist/server/sessions/sessionNameGenerator.js.map +0 -1
  278. package/dist/server/sessions/sessionNotificationStore.js.map +0 -1
  279. package/dist/server/sessions/sessionRoutes.js.map +0 -1
  280. package/dist/server/sessions/sessionRuntimeStore.js.map +0 -1
  281. package/dist/server/sessions/sessionService.js.map +0 -1
  282. package/dist/server/sessions/sessionSummaryScanner.js.map +0 -1
  283. package/dist/server/sessions/sessionTreeProjection.js.map +0 -1
  284. package/dist/server/sessions/sessionUnreadStore.js.map +0 -1
  285. package/dist/server/sessions/shutdownDrain.js.map +0 -1
  286. package/dist/server/sessions/spawnSessionTool.js.map +0 -1
  287. package/dist/server/sessions/spawnSubsessionTool.js.map +0 -1
  288. package/dist/server/sessions/spawnTargetResolver.js.map +0 -1
  289. package/dist/server/sessions/subagentRunTranscript.js.map +0 -1
  290. package/dist/server/sessions/subagentRuns.js.map +0 -1
  291. package/dist/server/sessions/subsessionTranscript.js.map +0 -1
  292. package/dist/server/sessions/unsupportedSurface.js.map +0 -1
  293. package/dist/server/sessions/warningFiling.js.map +0 -1
  294. package/dist/server/speechRoutes.js.map +0 -1
  295. package/dist/server/status/machineStatusRoutes.js.map +0 -1
  296. package/dist/server/status/machineStatusService.js.map +0 -1
  297. package/dist/server/status/workspaceAttribution.js.map +0 -1
  298. package/dist/server/storage/projectStore.js.map +0 -1
  299. package/dist/server/terminalProxyRoutes.js.map +0 -1
  300. package/dist/server/terminals/nodePtySpawnHelper.js.map +0 -1
  301. package/dist/server/terminals/terminalRoutes.js.map +0 -1
  302. package/dist/server/terminals/terminalService.js.map +0 -1
  303. package/dist/server/terminals/terminalSize.js.map +0 -1
  304. package/dist/server/updates/fleetRoutes.js.map +0 -1
  305. package/dist/server/updates/restartRoutes.js.map +0 -1
  306. package/dist/server/updates/selfUpdateRoutes.js.map +0 -1
  307. package/dist/server/webSocketBridge.js.map +0 -1
  308. package/dist/server/workingDirectory.js.map +0 -1
  309. package/dist/server/workspaceExplorerRoutes.js.map +0 -1
  310. package/dist/server/workspaces/effectivePathAccess.js.map +0 -1
  311. package/dist/server/workspaces/fileContentService.js.map +0 -1
  312. package/dist/server/workspaces/filePreviewResponseHeaders.js.map +0 -1
  313. package/dist/server/workspaces/filePreviewResponsePolicy.js.map +0 -1
  314. package/dist/server/workspaces/filePreviewService.js.map +0 -1
  315. package/dist/server/workspaces/fileSuggestions.js.map +0 -1
  316. package/dist/server/workspaces/fileTreeService.js.map +0 -1
  317. package/dist/server/workspaces/pathAccessPolicy.js.map +0 -1
  318. package/dist/server/workspaces/pathSafety.js.map +0 -1
  319. package/dist/server/workspaces/projectPiWebConfig.js.map +0 -1
  320. package/dist/server/workspaces/projectWorkspaceCwds.js.map +0 -1
  321. package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +0 -1
  322. package/dist/server/workspaces/workspaceCatalog.js.map +0 -1
  323. package/dist/server/workspaces/workspaceContext.js.map +0 -1
  324. package/dist/server/workspaces/workspaceDeletionRoutes.js.map +0 -1
  325. package/dist/server/workspaces/workspaceProviderRegistry.js.map +0 -1
  326. package/dist/server/workspaces/workspaceRemovalService.js.map +0 -1
  327. package/dist/server/workspaces/workspaceRouteErrors.js.map +0 -1
  328. package/dist/server/workspaces/worktreePreRemoveHook.js.map +0 -1
  329. package/dist/sessiond/activeAgentProfile.js.map +0 -1
  330. package/dist/sessiond/config.js.map +0 -1
  331. package/dist/sessiond/sessionDaemonClient.js.map +0 -1
  332. /package/dist/server/{sessiond → daemon}/agentHttpDispatcher.js +0 -0
  333. /package/dist/server/{sessiond → daemon}/agentProcessEnvironment.js +0 -0
  334. /package/dist/server/{browserMessageProjection.js → daemon/browserMessageProjection.js} +0 -0
  335. /package/dist/server/{sessiond → daemon}/sessionDaemonShutdown.js +0 -0
  336. /package/dist/server/{sessiond → daemon}/sessionServiceDependencies.js +0 -0
  337. /package/dist/server/{sessions → daemon/sessions}/authProviderOptions.js +0 -0
  338. /package/dist/server/{sessions → daemon/sessions}/authRoutes.js +0 -0
  339. /package/dist/server/{sessions → daemon/sessions}/authService.js +0 -0
  340. /package/dist/server/{sessions → daemon/sessions}/backgroundTasks.js +0 -0
  341. /package/dist/server/{sessions → daemon/sessions}/builtinCommands.js +0 -0
  342. /package/dist/server/{sessions → daemon/sessions}/dockerEnvironmentFacts.js +0 -0
  343. /package/dist/server/{sessions → daemon/sessions}/editPreview.js +0 -0
  344. /package/dist/server/{sessions → daemon/sessions}/extensionDialogWaiters.js +0 -0
  345. /package/dist/server/{sessions → daemon/sessions}/globalProviderPolicy.js +0 -0
  346. /package/dist/server/{sessions → daemon/sessions}/hostContributions.js +0 -0
  347. /package/dist/server/{sessions → daemon/sessions}/injectedTurnKinds.js +0 -0
  348. /package/dist/server/{sessions → daemon/sessions}/messagePaging.js +0 -0
  349. /package/dist/server/{sessions → daemon/sessions}/modelCatalogRefresher.js +0 -0
  350. /package/dist/server/{sessions → daemon/sessions}/oauthLoginFlowService.js +0 -0
  351. /package/dist/server/{sessions → daemon/sessions}/plainTextTheme.js +0 -0
  352. /package/dist/server/{sessions → daemon/sessions}/sessionActivityLabel.js +0 -0
  353. /package/dist/server/{sessions → daemon/sessions}/sessionArchiveTree.js +0 -0
  354. /package/dist/server/{sessions → daemon/sessions}/sessionCleanup.js +0 -0
  355. /package/dist/server/{sessions → daemon/sessions}/sessionCommandService.js +0 -0
  356. /package/dist/server/{sessions → daemon/sessions}/sessionFileFormat.js +0 -0
  357. /package/dist/server/{sessions → daemon/sessions}/sessionFileHeader.js +0 -0
  358. /package/dist/server/{sessions → daemon/sessions}/sessionModelScope.js +0 -0
  359. /package/dist/server/{sessions → daemon/sessions}/sessionNameGenerator.js +0 -0
  360. /package/dist/server/{sessions → daemon/sessions}/sessionRuntimeStore.js +0 -0
  361. /package/dist/server/{sessions → daemon/sessions}/sessionService.js +0 -0
  362. /package/dist/server/{sessions → daemon/sessions}/sessionSummaryScanner.js +0 -0
  363. /package/dist/server/{sessions → daemon/sessions}/sessionTreeProjection.js +0 -0
  364. /package/dist/server/{sessions → daemon/sessions}/shutdownDrain.js +0 -0
  365. /package/dist/server/{sessions → daemon/sessions}/spawnSessionTool.js +0 -0
  366. /package/dist/server/{sessions → daemon/sessions}/spawnSubsessionTool.js +0 -0
  367. /package/dist/server/{sessions → daemon/sessions}/spawnTargetResolver.js +0 -0
  368. /package/dist/server/{sessions → daemon/sessions}/subsessionTranscript.js +0 -0
  369. /package/dist/server/{sessions → daemon/sessions}/unsupportedSurface.js +0 -0
  370. /package/dist/server/{sessions → daemon/sessions}/warningFiling.js +0 -0
  371. /package/dist/server/{status → daemon/status}/machineStatusRoutes.js +0 -0
  372. /package/dist/server/{status → daemon/status}/workspaceAttribution.js +0 -0
  373. /package/dist/server/{terminals → daemon/terminals}/nodePtySpawnHelper.js +0 -0
  374. /package/dist/server/{terminals → daemon/terminals}/terminalService.js +0 -0
  375. /package/dist/server/{workingDirectory.js → daemon/workingDirectory.js} +0 -0
  376. /package/dist/server/{workspaces → daemon/workspaces}/projectWorkspaceCwds.js +0 -0
  377. /package/dist/server/{sessiond → daemon/workspaces}/workspaceCatalogRoutes.js +0 -0
  378. /package/dist/server/{diagnostics → shared/diagnostics}/nodePtyNativeModule.js +0 -0
  379. /package/dist/server/{diagnostics → shared/diagnostics}/nodePtySpawnHelper.js +0 -0
  380. /package/dist/server/{piWebReleaseLookupCache.js → shared/piWebReleaseLookupCache.js} +0 -0
  381. /package/dist/server/{plugins → shared/plugins}/serverPluginExec.js +0 -0
  382. /package/dist/server/{plugins → shared/plugins}/serverPluginRuntime.js +0 -0
  383. /package/dist/server/{projects → shared/projects}/directorySuggestions.js +0 -0
  384. /package/dist/server/{projects → shared/projects}/projectService.js +0 -0
  385. /package/dist/server/{requestCancellation.js → shared/requestCancellation.js} +0 -0
  386. /package/dist/server/{terminals → shared/terminals}/terminalSize.js +0 -0
  387. /package/dist/server/{types.js → shared/types.js} +0 -0
  388. /package/dist/server/{workspaces → shared/workspaces}/pathSafety.js +0 -0
  389. /package/dist/server/{workspaces → shared/workspaces}/workspaceCatalog.js +0 -0
  390. /package/dist/server/{git → web/git}/gitEnv.js +0 -0
  391. /package/dist/server/{goals → web/goals}/goalArchive.js +0 -0
  392. /package/dist/server/{goals → web/goals}/goalFile.js +0 -0
  393. /package/dist/server/{goals → web/goals}/goalStore.js +0 -0
  394. /package/dist/server/{machines → web/machines}/machineClient.js +0 -0
  395. /package/dist/server/{machines → web/machines}/machineRoutes.js +0 -0
  396. /package/dist/server/{piPackageRoutes.js → web/piPackageRoutes.js} +0 -0
  397. /package/dist/server/{piPackageService.js → web/piPackageService.js} +0 -0
  398. /package/dist/server/{piWebStatusCache.js → web/piWebStatusCache.js} +0 -0
  399. /package/dist/server/{speechRoutes.js → web/speechRoutes.js} +0 -0
  400. /package/dist/server/{updates → web/updates}/fleetRoutes.js +0 -0
  401. /package/dist/server/{updates → web/updates}/restartRoutes.js +0 -0
  402. /package/dist/server/{webSocketBridge.js → web/webSocketBridge.js} +0 -0
  403. /package/dist/server/{workspaceExplorerRoutes.js → web/workspaceExplorerRoutes.js} +0 -0
  404. /package/dist/server/{workspaces → web/workspaces}/effectivePathAccess.js +0 -0
  405. /package/dist/server/{workspaces → web/workspaces}/filePreviewResponseHeaders.js +0 -0
  406. /package/dist/server/{workspaces → web/workspaces}/fileSuggestions.js +0 -0
  407. /package/dist/server/{workspaces → web/workspaces}/fileTreeService.js +0 -0
  408. /package/dist/server/{workspaces → web/workspaces}/workspaceContext.js +0 -0
  409. /package/dist/{server/sessions → shared}/branchMessages.js +0 -0
  410. /package/dist/{server/sessions → shared}/subagentRunTranscript.js +0 -0
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CodeViewer-B_rJKGwu.js","./vendor-editor-core-DVD9qHFI.js","./vendor-editor-languages-CgbLQX3u.js","./vendor-editor-legacy-CYBnW6ZU.js","./TerminalPanel-BEQXdgKi.js","./vendor-terminal-D8k4UKM2.js","./vendor-terminal-BrP-ENHg.css","./composerEditorSetup-DcmFM6jm.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CodeViewer-BDNVRbqY.js","./vendor-editor-core-DVD9qHFI.js","./vendor-editor-languages-CgbLQX3u.js","./vendor-editor-legacy-CYBnW6ZU.js","./TerminalPanel-haos8c1O.js","./vendor-terminal-D8k4UKM2.js","./vendor-terminal-BrP-ENHg.css","./composerEditorSetup-DcmFM6jm.js"])))=>i.map(i=>d[i]);
2
2
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=globalThis,t=e.ShadowRoot&&(e.ShadyCSS===void 0||e.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap,i=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,n=this.t;if(t&&e===void 0){let t=n!==void 0&&n.length===1;t&&(e=r.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&r.set(n,e))}return e}toString(){return this.cssText}},a=e=>new i(typeof e==`string`?e:e+``,void 0,n),o=(e,...t)=>new i(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,n),s=(n,r)=>{if(t)n.adoptedStyleSheets=r.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let t of r){let r=document.createElement(`style`),i=e.litNonce;i!==void 0&&r.setAttribute(`nonce`,i),r.textContent=t.cssText,n.appendChild(r)}},c=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return a(t)})(e):e,{is:l,defineProperty:u,getOwnPropertyDescriptor:d,getOwnPropertyNames:f,getOwnPropertySymbols:p,getPrototypeOf:m}=Object,ee=globalThis,te=ee.trustedTypes,ne=te?te.emptyScript:``,re=ee.reactiveElementPolyfillSupport,ie=(e,t)=>e,ae={toAttribute(e,t){switch(t){case Boolean:e=e?ne:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},oe=(e,t)=>!l(e,t),se={attribute:!0,type:String,converter:ae,reflect:!1,useDefault:!1,hasChanged:oe};Symbol.metadata??=Symbol(`metadata`),ee.litPropertyMetadata??=new WeakMap;var ce=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=se){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&u(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=d(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??se}static _$Ei(){if(this.hasOwnProperty(ie(`elementProperties`)))return;let e=m(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(ie(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(ie(`properties`))){let e=this.properties,t=[...f(e),...p(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(c(e))}else e!==void 0&&t.push(c(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?ae:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?ae:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??oe)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};ce.elementStyles=[],ce.shadowRootOptions={mode:`open`},ce[ie(`elementProperties`)]=new Map,ce[ie(`finalized`)]=new Map,re?.({ReactiveElement:ce}),(ee.reactiveElementVersions??=[]).push(`2.1.2`);var le=globalThis,ue=e=>e,de=le.trustedTypes,fe=de?de.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,pe=`$lit$`,me=`lit$${Math.random().toFixed(9).slice(2)}$`,he=`?`+me,ge=`<${he}>`,_e=document,ve=()=>_e.createComment(``),ye=e=>e===null||typeof e!=`object`&&typeof e!=`function`,be=Array.isArray,xe=e=>be(e)||typeof e?.[Symbol.iterator]==`function`,Se=`[
3
3
  \f\r]`,Ce=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,we=/-->/g,Te=/>/g,Ee=RegExp(`>|${Se}(?:([^\\s"'>=/]+)(${Se}*=${Se}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),De=/'/g,Oe=/"/g,ke=/^(?:script|style|textarea|title)$/i,Ae=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),h=Ae(1),je=Ae(2),Me=Symbol.for(`lit-noChange`),g=Symbol.for(`lit-nothing`),Ne=new WeakMap,Pe=_e.createTreeWalker(_e,129);function Fe(e,t){if(!be(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return fe===void 0?t:fe.createHTML(t)}var Ie=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=Ce;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===Ce?c[1]===`!--`?o=we:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=Ee):(ke.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=Ee):o=Te:o===Ee?c[0]===`>`?(o=i??Ce,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?Ee:c[3]===`"`?Oe:De):o===Oe||o===De?o=Ee:o===we||o===Te?o=Ce:(o=Ee,i=void 0);let d=o===Ee&&e[t+1].startsWith(`/>`)?` `:``;a+=o===Ce?n+ge:l>=0?(r.push(s),n.slice(0,l)+pe+n.slice(l)+me+d):n+me+(l===-2?t:d)}return[Fe(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},Le=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Ie(t,n);if(this.el=e.createElement(l,r),Pe.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=Pe.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(pe)){let t=u[o++],n=i.getAttribute(e).split(me),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?He:r[1]===`?`?Ue:r[1]===`@`?We:Ve}),i.removeAttribute(e)}else e.startsWith(me)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(ke.test(i.tagName)){let e=i.textContent.split(me),t=e.length-1;if(t>0){i.textContent=de?de.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],ve()),Pe.nextNode(),c.push({type:2,index:++a});i.append(e[t],ve())}}}else if(i.nodeType===8)if(i.data===he)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(me,e+1))!==-1;)c.push({type:7,index:a}),e+=me.length-1}a++}}static createElement(e,t){let n=_e.createElement(`template`);return n.innerHTML=e,n}};function Re(e,t,n=e,r){if(t===Me)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=ye(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=Re(e,i._$AS(e,t.values),i,r)),t}var ze=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??_e).importNode(t,!0);Pe.currentNode=r;let i=Pe.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new Be(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Ge(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=Pe.nextNode(),a++)}return Pe.currentNode=_e,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},Be=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=g,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=Re(this,e,t),ye(e)?e===g||e==null||e===``?(this._$AH!==g&&this._$AR(),this._$AH=g):e!==this._$AH&&e!==Me&&this._(e):e._$litType$===void 0?e.nodeType===void 0?xe(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==g&&ye(this._$AH)?this._$AA.nextSibling.data=e:this.T(_e.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=Le.createElement(Fe(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ze(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Ne.get(e.strings);return t===void 0&&Ne.set(e.strings,t=new Le(e)),t}k(t){be(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(ve()),this.O(ve()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=ue(e).nextSibling;ue(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Ve=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=g,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=g}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=Re(this,e,t,0),a=!ye(e)||e!==this._$AH&&e!==Me,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=Re(this,r[n+o],t,o),s===Me&&(s=this._$AH[o]),a||=!ye(s)||s!==this._$AH[o],s===g?e=g:e!==g&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===g?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},He=class extends Ve{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===g?void 0:e}},Ue=class extends Ve{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==g)}},We=class extends Ve{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=Re(this,e,t,0)??g)===Me)return;let n=this._$AH,r=e===g&&n!==g||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==g&&(n===g||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Ge=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){Re(this,e)}},Ke={M:pe,P:me,A:he,C:1,L:Ie,R:ze,D:xe,V:Re,I:Be,H:Ve,N:Ue,U:We,B:He,F:Ge},qe=le.litHtmlPolyfillSupport;qe?.(Le,Be),(le.litHtmlVersions??=[]).push(`3.3.3`);var Je=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new Be(t.insertBefore(ve(),e),e,void 0,n??{})}return i._$AI(e),i},Ye=globalThis,_=class extends ce{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Je(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Me}};_._$litElement$=!0,_.finalized=!0,Ye.litElementHydrateSupport?.({LitElement:_});var Xe=Ye.litElementPolyfillSupport;Xe?.({LitElement:_}),(Ye.litElementVersions??=[]).push(`4.2.2`);function Ze(e,t=$e()){let n=new URL(t.viteBaseUrl,t.documentBaseUrl);return new URL(et(e),n).toString()}function Qe(e,t=$e()){let n=new URL(Ze(e,t));if(n.protocol===`http:`)n.protocol=`ws:`;else if(n.protocol===`https:`)n.protocol=`wss:`;else throw Error(`Cannot create a WebSocket URL from ${n.protocol}`);return n.toString()}function $e(){return{viteBaseUrl:`./`,documentBaseUrl:document.baseURI}}function et(e){return e.startsWith(`/`)?`.${e}`:e}var tt;function nt(e){tt=e}function rt(){let e=tt;if(e!==void 0)try{e()}catch{}}var it=class extends Error{constructor(e,t){super(e),this.status=t,this.name=`HttpError`}};function at(e){return e instanceof it&&e.status===404}async function v(e,t,n){let r=new Headers(n?.headers);n?.body!==void 0&&!r.has(`content-type`)&&r.set(`content-type`,`application/json`);let i=await fetch(Ze(e),{...n,headers:r});if(!i.ok)throw new it(ot(await i.json().catch(()=>({})))??i.statusText,i.status);let a=await i.json();return rt(),t(a)}function ot(e){if(st(e))return typeof e.error==`string`?e.error:void 0}function st(e){return typeof e==`object`&&!!e}var ct={reply:`reply`,reader:`reader`};ct.reader;function lt(e){return{text:e,retiredBy:ct.reply}}function ut(e){return{text:e,retiredBy:ct.reader}}var dt=`The request failed`;function y(e){if(e instanceof it)return e.message===``?`${dt} (${String(e.status)})`:e.message;if(e instanceof Error)return e.message===``?dt:e.message;let t=String(e);return t===``||t.startsWith(`[object`)?dt:t}function ft(e){let t=y(e);return e instanceof it?lt(t):ut(t)}function b(e){let t=ft(e);return{error:t.text,errorRetiredBy:t.retiredBy}}function pt(e){return e.placeholderOutstanding===!0?`replace`:e.lastWriteAt===void 0?`push`:e.now-e.lastWriteAt<400?`replace`:`push`}var mt,ht=!1;function gt(){ht=!0}function _t(){ht=!1}function vt(e,t,n=Date.now()){let r=t?`replace`:pt({lastWriteAt:mt,now:n,placeholderOutstanding:ht});mt=n,ht=!1,r===`replace`?window.history.replaceState({},``,e):window.history.pushState({},``,e)}var yt=1500;function bt(e){if(e.next!==``)return{kind:`show`,text:e.next};if(e.shownAt===void 0)return{kind:`hide`};let t=e.now-e.shownAt;return t>=1500?{kind:`hide`}:{kind:`hold`,retryInMs:yt-t}}function xt(e,t,n){return e.machine===t.machine&&e.project===t.project&&e.workspace===t.workspace&&e.session===t.session&&(e.view??n)===(t.view??n)}var St=[`(display-mode: standalone)`,`(display-mode: fullscreen)`,`(display-mode: minimal-ui)`];function Ct(){return typeof window>`u`||!(`matchMedia`in window)?[]:St.map(e=>window.matchMedia(e))}function wt(e,t=Tt()){return e.some(e=>e.matches)||Et(t)}function Tt(){return typeof navigator>`u`?void 0:navigator}function Et(e){return e!==void 0&&`standalone`in e&&e.standalone===!0}var Dt=class{constructor(e=Ot()){this.scheduler=e}repair(e){if(!e){this.clear();return}this.resetViewportScroll(),this.repairFrame!==void 0&&this.scheduler.cancelAnimationFrame(this.repairFrame),this.repairFrame=this.scheduler.requestAnimationFrame(()=>{this.repairFrame=void 0,this.resetViewportScroll(),this.repairFrame=this.scheduler.requestAnimationFrame(()=>{this.repairFrame=void 0,this.resetViewportScroll()})}),this.repairTimer!==void 0&&this.scheduler.clearTimeout(this.repairTimer),this.repairTimer=this.scheduler.setTimeout(()=>{this.repairTimer=void 0,this.resetViewportScroll()},250)}clear(){this.repairFrame!==void 0&&(this.scheduler.cancelAnimationFrame(this.repairFrame),this.repairFrame=void 0),this.repairTimer!==void 0&&(this.scheduler.clearTimeout(this.repairTimer),this.repairTimer=void 0)}resetViewportScroll(){this.scheduler.scrollTo(0,0);let e=this.scheduler.documentElement;e!==void 0&&(e.scrollTop=0);let t=this.scheduler.body;t!==void 0&&(t.scrollTop=0)}};function Ot(){return{requestAnimationFrame(e){return window.requestAnimationFrame(e)},cancelAnimationFrame(e){window.cancelAnimationFrame(e)},setTimeout(e,t){return window.setTimeout(e,t)},clearTimeout(e){window.clearTimeout(e)},scrollTo(e,t){window.scrollTo(e,t)},get documentElement(){return typeof document>`u`?void 0:document.documentElement},get body(){return typeof document>`u`?void 0:document.body}}}var kt=`(max-width: 760px)`,At=class{constructor(e,t={}){this.host=e,this.onMobileNavigationMediaChange=e=>{this.isMobileNavigationLayout!==e.matches&&(this.isMobileNavigationLayout=e.matches,this.host.requestUpdate())},this.onPwaDisplayModeChange=()=>{let e=wt(this.pwaDisplayModeMedia);this.isPwaDisplayMode!==e&&(this.isPwaDisplayMode=e,this.host.requestUpdate())},e.addController(this),this.mobileNavigationMedia=t.mobileNavigationMedia??jt(),this.pwaDisplayModeMedia=t.pwaDisplayModeMedia??Ct(),this.viewportPositionRepairer=t.viewportPositionRepairer??new Dt,this.isMobileNavigationLayout=this.mobileNavigationMedia?.matches??!1,this.isPwaDisplayMode=wt(this.pwaDisplayModeMedia)}hostConnected(){this.mobileNavigationMedia?.addEventListener(`change`,this.onMobileNavigationMediaChange);for(let e of this.pwaDisplayModeMedia)e.addEventListener(`change`,this.onPwaDisplayModeChange)}hostDisconnected(){this.mobileNavigationMedia?.removeEventListener(`change`,this.onMobileNavigationMediaChange);for(let e of this.pwaDisplayModeMedia)e.removeEventListener(`change`,this.onPwaDisplayModeChange);this.viewportPositionRepairer.clear()}shouldAutoFocusPrompt(){return!this.isMobileNavigationLayout&&!this.isPwaDisplayMode}shouldShowAppRefreshInHeader(){return this.isPwaDisplayMode&&!this.isMobileNavigationLayout}shouldShowAppRefreshInContextBar(){return this.isPwaDisplayMode&&this.isMobileNavigationLayout}defaultRouteView(e={}){return Mt(this.isMobileNavigationLayout,e)}repairViewportPosition(){this.viewportPositionRepairer.repair(this.shouldRepairViewportPosition())}shouldRepairViewportPosition(){return this.isMobileNavigationLayout||this.isPwaDisplayMode}};function jt(){if(!(typeof window>`u`||!(`matchMedia`in window)))return window.matchMedia(kt)}function Mt(e,t){return e&&(t.sessionId??``)===``?`navigation`:`chat`}function Nt(e){return!e.touchPrimary&&!e.modalOpen}var Pt=new Set([`text`,`search`,`email`,`url`,`tel`,`password`,`number`,void 0]);function Ft(e){if(e===void 0)return!1;if(e.isContentEditable===!0)return!0;let t=e.tagName.toUpperCase();return t===`TEXTAREA`||t===`INPUT`&&Pt.has(e.type)}function It(e=document){let t=e.activeElement;t!==null&&Ft({tagName:t.tagName,...t instanceof HTMLInputElement?{type:t.type}:{},...t instanceof HTMLElement?{isContentEditable:t.isContentEditable}:{}})&&t instanceof HTMLElement&&t.blur()}function Lt(e){return e.touchPrimary?void 0:`input`}function Rt(e=window){return typeof e.matchMedia==`function`&&e.matchMedia(`(pointer: coarse)`).matches}var x=e=>(t,n)=>{n===void 0?customElements.define(e,t):n.addInitializer(()=>{customElements.define(e,t)})},zt={attribute:!0,type:String,converter:ae,reflect:!1,hasChanged:oe},Bt=(e=zt,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function S(e){return(t,n)=>typeof n==`object`?Bt(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}function C(e){return S({...e,state:!0,attribute:!1})}var Vt=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n);function w(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return Vt(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return Vt(n,r,{get(){return a(this)}})}}var Ht={pluginLifecycle:`plugins.lifecycle`},Ut=1e3,Wt=32*1024,Gt=8*1024,Kt=1e3,qt=4e3,Jt=1e3,Yt=8e3,Xt=4e3,Zt=1e4,Qt={working:`core:working`,terminal:`core:terminal`,unread:`core:unread`};function $t(e){if(!nn(e))return;let t=e.epochId,n=e.revision,r=e.generatedAt,i=en(e.machine),a=en(e.unattributed),o=tn(e.projects),s=tn(e.workspaces);if(!(typeof t!=`string`||t===``)&&!(typeof n!=`number`||!Number.isFinite(n))&&!(typeof r!=`string`||r===``)&&!(i===void 0||a===void 0)&&!(o===void 0||s===void 0))return{epochId:t,revision:n,machine:i,projects:o,workspaces:s,unattributed:a,generatedAt:r}}function en(e){if(!nn(e))return;let t=new Map;for(let[n,r]of Object.entries(e))typeof r==`boolean`&&t.set(n,r);return Object.fromEntries(t)}function tn(e){if(!nn(e))return;let t=new Map;for(let[n,r]of Object.entries(e)){let e=en(r);e!==void 0&&t.set(n,e)}return Object.fromEntries(t)}function nn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var rn=Object.values(Ht),an=new Set(rn);Ht.pluginLifecycle,Ht.pluginLifecycle;function on(e){return typeof e==`string`&&an.has(e)}function sn(e,t){return e?.capabilities?.includes(t)===!0}function cn(e){if(!(!Array.isArray(e)||!e.every(e=>typeof e==`string`)))return e.filter(on)}function ln(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!un(n))continue;let e=n.source,r=n.name,i=n.replacement;e!==`environment`&&e!==`config`||typeof r!=`string`||r===``||i!==void 0&&(typeof i!=`string`||i===``)||t.push({source:e,name:r,...i===void 0?{}:{replacement:i}})}return t}function un(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var dn=/^[a-z][a-z0-9.-]*$/u,fn=new Set([`core`,`themes`]),pn=`machine.`;function mn(e){return dn.test(e)}function hn(e){return fn.has(e)||e.startsWith(pn)}var gn=Object.freeze({showSafeStart:`pi-web plugins safe-start show`,bundledOnly:`pi-web plugins safe-start set bundled-only --restart`,noServerPlugins:`pi-web plugins safe-start set none --restart`,clearSafeStart:`pi-web plugins safe-start clear --restart`});function _n(e){if(!mn(e))throw Error(`Invalid PI WEB plugin id: ${e}`);return`pi-web plugins disable ${e} --restart`}function T(e){return typeof e==`object`&&!!e}function E(e){if(!T(e))throw Error(`Expected object response`);return e}function D(e,t){let n=e[t];if(typeof n!=`string`)throw Error(`Expected string field: ${t}`);return n}function O(e,t){let n=e[t];if(n!==void 0){if(typeof n!=`string`)throw Error(`Expected optional string field: ${t}`);return n}}function k(e,t){let n=e[t];if(typeof n!=`number`)throw Error(`Expected number field: ${t}`);return n}function A(e,t){let n=e[t];if(typeof n!=`boolean`)throw Error(`Expected boolean field: ${t}`);return n}function j(e){return t=>{if(!Array.isArray(t))throw Error(`Expected array response`);return t.map(e)}}function vn(e){if(!Array.isArray(e))throw Error(`Expected array response`);return e}function yn(e,t){if(!Array.isArray(e)||!e.every(e=>typeof e==`string`))throw Error(`Expected string array field: ${t}`);return e}function bn(e){let t=E(e);return{messages:vn(t.messages),start:k(t,`start`),total:k(t,`total`)}}function xn(e){let t=E(e);return j(Sn)(t.machines)}function Sn(e){let t=E(e),n=En(t,`kind`),r=O(t,`baseUrl`),i=Dn(t,`status`),a=O(t,`statusMessage`);return{id:D(t,`id`),name:D(t,`name`),kind:n,...r===void 0?{}:{baseUrl:r},createdAt:D(t,`createdAt`),updatedAt:D(t,`updatedAt`),...i===void 0?{}:{status:i},...a===void 0?{}:{statusMessage:a}}}function Cn(e){let t=E(e),n=Dn(t,`status`),r=O(t,`error`);return{machineId:D(t,`machineId`),ok:A(t,`ok`),checkedAt:D(t,`checkedAt`),...n===void 0?{}:{status:n},...t.web===void 0?{}:{web:Ra(t.web)},...t.sessiond===void 0?{}:{sessiond:Ra(t.sessiond)},...r===void 0?{}:{error:r}}}function wn(e){let t=E(e),n=O(t,`error`);return{machineId:D(t,`machineId`),ok:A(t,`ok`),checkedAt:D(t,`checkedAt`),...N(`packageName`,O(t,`packageName`)),...N(`generatedAt`,O(t,`generatedAt`)),...t.components===void 0?{}:{components:Ia(t.components)},...t.capabilities===void 0?{}:{capabilities:Wa(t.capabilities)},...t.deprecatedAgentInputs===void 0?{}:{deprecatedAgentInputs:Tn(t.deprecatedAgentInputs)},...n===void 0?{}:{error:n}}}function Tn(e){let t=ln(e);if(t===void 0)throw Error(`Invalid PI WEB deprecated agent inputs`);return t}function En(e,t){let n=D(e,t);if(n!==`local`&&n!==`remote`)throw Error(`Expected machine kind field: ${t}`);return n}function Dn(e,t){let n=O(e,t);if(n!==void 0){if(n!==`unknown`&&n!==`online`&&n!==`offline`&&n!==`error`)throw Error(`Expected machine status field: ${t}`);return n}}function On(e){let t=E(e);return{id:D(t,`id`),name:D(t,`name`),path:D(t,`path`),createdAt:D(t,`createdAt`)}}function kn(e){let t=E(e);return Object.freeze({id:D(t,`id`),projectId:D(t,`projectId`),path:D(t,`path`),label:D(t,`label`),isMain:A(t,`isMain`),...N(`provider`,Fn(t.provider)),...N(`removal`,In(t.removal)),effectiveConfig:zn(t.effectiveConfig)})}function An(e){let t=E(e),n=jn(t.status),r=D(t,`projectId`),i=O(t,`ownerPluginId`);if(n===`provider`&&i===void 0)throw Error(`Provider workspace resolution is missing ownerPluginId`);if(n===`folder`&&i!==void 0)throw Error(`Folder workspace resolution must not include ownerPluginId`);let a=j(kn)(t.workspaces);if(a.length===0||a.some(e=>e.projectId!==r))throw Error(`Workspace resolution contains invalid project workspaces`);let o=j(Mn)(t.diagnostics);return Object.freeze({status:n,projectId:r,...i===void 0?{}:{ownerPluginId:i},workspaces:Object.freeze(a),diagnostics:Object.freeze(o)})}function jn(e){if(e===`provider`||e===`folder`||e===`degraded`)return e;throw Error(`Invalid workspace provider resolution status`)}function Mn(e){let t=E(e),n=O(t,`pluginId`),r=t.pluginIds===void 0?void 0:yn(t.pluginIds,`pluginIds`);return Object.freeze({code:Nn(t.code),message:D(t,`message`),tier:Pn(t.tier),...n===void 0?{}:{pluginId:n},...r===void 0?{}:{pluginIds:Object.freeze(r)}})}function Nn(e){if(e===`probe-failed`||e===`claim-conflict`||e===`list-failed`)return e;throw Error(`Invalid workspace provider diagnostic code`)}function Pn(e){if(e===`primary`||e===`fallback`)return e;throw Error(`Invalid workspace provider diagnostic tier`)}function Fn(e){if(e===void 0)return;if(!T(e)||Array.isArray(e))throw Error(`Invalid workspace provider field`);let t=e.capabilities;if(!T(t)||Array.isArray(t))throw Error(`Invalid workspace provider capabilities field`);let n=e.metadata;return Object.freeze({pluginId:D(e,`pluginId`),capabilities:Object.freeze({request:A(t,`request`),remove:A(t,`remove`)}),...N(`metadata`,n===void 0?void 0:Ln(n,`workspace provider metadata`))})}function In(e){if(e!==void 0){if(!T(e)||Array.isArray(e))throw Error(`Invalid workspace removal field`);return Object.freeze({actionLabel:M(e,`actionLabel`),confirmation:M(e,`confirmation`),precondition:M(e,`precondition`)})}}function Ln(e,t){if(!T(e)||Array.isArray(e))throw Error(`Invalid ${t} field`);return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,n])=>[e,Rn(n,t)])))}function Rn(e,t){if(e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`&&Number.isFinite(e))return e;if(Array.isArray(e))return Object.freeze(e.map(e=>Rn(e,t)));if(T(e))return Ln(e,t);throw Error(`Invalid ${t} field`)}function zn(e){if(!T(e)||Array.isArray(e))throw Error(`Expected workspace effectiveConfig field`);let t=fa(e.uploads);return Object.freeze({...N(`uploads`,t===void 0?void 0:Object.freeze({...t}))})}function Bn(e){let t=E(e),n=O(t,`name`),r=Ma(t.persisted,`persisted`),i=O(t,`parentSessionPath`),a=O(t,`archivedAt`);return{id:D(t,`id`),path:D(t,`path`),cwd:D(t,`cwd`),...r===void 0?{}:{persisted:r},...n===void 0?{}:{name:n},created:D(t,`created`),modified:D(t,`modified`),messageCount:k(t,`messageCount`),firstMessage:D(t,`firstMessage`),...i===void 0?{}:{parentSessionPath:i},...t.archived===!0?{archived:!0}:{},...a===void 0?{}:{archivedAt:a}}}function Vn(e){if(e!==`info`&&e!==`warning`&&e!==`error`)throw Error(`Invalid session warning severity`);return e}function Hn(e){if(e!==void 0)return{id:D(E(e),`id`)}}function Un(e){let t=E(e),n=Hn(t.dismiss);return{severity:Vn(t.severity),message:D(t,`message`),...N(`source`,O(t,`source`)),...N(`path`,O(t,`path`)),...n===void 0?{}:{dismiss:n}}}function Wn(e){return e===void 0?{}:{warnings:j(Un)(e)}}function Gn(e){let t=E(e);return{value:Lr(t,`value`,128),label:Lr(t,`label`,Kt),...N(`detail`,Rr(t,`detail`,Kt))}}function Kn(e){let t=E(e),n=Xr(t.options,Gn,12,`options`);rr(n.map(e=>e.value),`ask option value`);let r=Ma(t.multiple,`multiple`);return{id:Lr(t,`id`,128),question:Lr(t,`question`,Kt),...N(`detail`,Rr(t,`detail`,Kt)),options:n,...r===void 0?{}:{multiple:r}}}function qn(e){let t=E(e),n=Xr(t.questions,Kn,20,`questions`);if(n.length===0)throw Error(`Pending ask has no questions`);return rr(n.map(e=>e.id),`ask question id`),{askId:Lr(t,`askId`,128),askedAt:M(t,`askedAt`),questions:n}}function Jn(e){return e===void 0?{}:{pendingAsk:qn(e)}}function Yn(e){let t=E(e);if(t.type!==`ask.opened`)throw Error(`Invalid ask opened event type`);return{type:`ask.opened`,ask:qn(t.ask),...Zn(t)}}function Xn(e){let t=E(e);if(t.type!==`ask.closed`)throw Error(`Invalid ask closed event type`);return{type:`ask.closed`,askId:Lr(t,`askId`,128),reason:Qn(t.reason),...Zn(t)}}function Zn(e){let t=e.revision,n=e.daemonInstanceId;return{...typeof t==`number`&&Number.isFinite(t)?{revision:t}:{},...typeof n==`string`&&n!==``?{daemonInstanceId:n}:{}}}function Qn(e){if(e!==`submitted`&&e!==`superseded`&&e!==`cancelled`)throw Error(`Invalid ask close reason`);return e}function $n(e){let t=E(e),n=Kn(t.question),r=Xr(t.values,Zr,12,`values`),i=new Set(n.options.map(e=>e.value));if(r.some(e=>!i.has(e)))throw Error(`Ask answer selected an option the question never offered`);let a=Rr(t,`otherText`,qt),o=A(t,`answered`);if(o!==(r.length>0||a!==void 0))throw Error(`Ask answer contradicts its answered flag`);return{question:n,answered:o,values:r,...a===void 0?{}:{otherText:a}}}function er(e){let t=E(e),n=Xr(t.questions,$n,20,`questions`),r=Qr(t,`answeredCount`),i=yn(t.unansweredIds,`unansweredIds`),a=n.filter(e=>!e.answered).map(e=>e.question.id);if(r!==n.length-a.length)throw Error(`Ask outcome answered count mismatch`);if(i.length!==a.length||i.some((e,t)=>e!==a[t]))throw Error(`Ask outcome unanswered ids mismatch`);let o=t.cause===`user-message`?`user-message`:void 0;return{askId:Lr(t,`askId`,128),reason:Qn(t.reason),...o===void 0?{}:{cause:o},askedAt:M(t,`askedAt`),closedAt:M(t,`closedAt`),questions:n,answeredCount:r,unansweredIds:i,summary:M(t,`summary`)}}function tr(e){let t=E(e),n=t.result;if(n!==`closed`&&n!==`stale`)throw Error(`Invalid ask close result`);let r=t.outcome===void 0?void 0:er(t.outcome);if(n===`closed`!=(r!==void 0))throw Error(`Ask close response outcome mismatch`);return{result:n,...r===void 0?{}:{outcome:r},sessionStatus:mr(t.sessionStatus)}}function nr(e){let t=E(e),n=t.result;if(n!==`closed`&&n!==`stale`)throw Error(`Invalid dialog close result`);let r=t.outcome===void 0?void 0:fr(t.outcome);if(n===`closed`!=(r!==void 0))throw Error(`Dialog close response outcome mismatch`);return{result:n,...r===void 0?{}:{outcome:r},sessionStatus:mr(t.sessionStatus)}}function rr(e,t){if(new Set(e).size!==e.length)throw Error(`Duplicate ${t}`)}function ir(e){if(e!==`confirm`&&e!==`select`&&e!==`input`)throw Error(`Invalid extension dialog kind`);return e}function ar(e){if(e!==`answered`&&e!==`cancelled`&&e!==`timeout`&&e!==`aborted`&&e!==`session-ended`)throw Error(`Invalid extension dialog close reason`);return e}function or(e){if(typeof e==`boolean`||typeof e==`string`&&e.length<=4e3)return e;throw Error(`Invalid extension dialog answer`)}function sr(e){let t=Zr(e);if(t.length>1e3)throw Error(`String field exceeds limit: option`);return t}function cr(e){let t=E(e),n=ir(t.kind),r=t.options===void 0?void 0:Xr(t.options,sr,24,`options`);if(r!==void 0&&rr(r,`dialog option`),n===`select`&&(r===void 0||r.length===0))throw Error(`Select dialog has no options`);return{dialogId:Lr(t,`dialogId`,128),kind:n,title:Lr(t,`title`,Yt),...N(`message`,Rr(t,`message`,Yt)),...r===void 0?{}:{options:r},...N(`placeholder`,Rr(t,`placeholder`,Jt)),askedAt:M(t,`askedAt`),...N(`timeoutAt`,pr(t,`timeoutAt`)),runScoped:A(t,`runScoped`)}}function lr(e){if(e===void 0)return{};let t=j(cr)(e);return rr(t.map(e=>e.dialogId),`dialog id`),{pendingDialogs:t}}function ur(e){let t=E(e);if(t.type!==`dialog.opened`)throw Error(`Invalid dialog opened event type`);return{type:`dialog.opened`,dialog:cr(t.dialog),...Zn(t)}}function dr(e){let t=E(e);if(t.type!==`dialog.closed`)throw Error(`Invalid dialog closed event type`);let n=ar(t.reason),r=t.answer===void 0?void 0:or(t.answer);if(n===`answered`!=(r!==void 0))throw Error(`Dialog closed event answer mismatch`);return{type:`dialog.closed`,dialogId:Lr(t,`dialogId`,128),reason:n,...r===void 0?{}:{answer:r},...Zn(t)}}function fr(e){let t=E(e),n=ar(t.reason),r=t.answer===void 0?void 0:or(t.answer);if(n===`answered`!=(r!==void 0))throw Error(`Dialog outcome answer mismatch`);return{dialogId:Lr(t,`dialogId`,128),reason:n,...r===void 0?{}:{answer:r},askedAt:M(t,`askedAt`),closedAt:M(t,`closedAt`)}}function pr(e,t){let n=O(e,t);if(n!==void 0){if(n===``)throw Error(`Expected non-empty string field: ${t}`);return n}}function mr(e){let t=E(e);return{sessionId:D(t,`sessionId`),...N(`persisted`,Ma(t.persisted,`persisted`)),isStreaming:A(t,`isStreaming`),isCompacting:A(t,`isCompacting`),isBashRunning:A(t,`isBashRunning`),pendingMessageCount:k(t,`pendingMessageCount`),...N(`backgroundRunCount`,go(t,`backgroundRunCount`)),queuedMessages:t.queuedMessages===void 0?[]:j(di)(t.queuedMessages),...N(`messageCount`,go(t,`messageCount`)),tokens:fi(t.tokens),cost:k(t,`cost`),...mi(t.model),...Pi(t.contextUsage),...N(`thinkingLevel`,O(t,`thinkingLevel`)),...Wn(t.warnings),...Jn(t.pendingAsk),...lr(t.pendingDialogs)}}function hr(e){let t=E(e);return{seq:k(t,`seq`),partial:t.partial??null}}function gr(e){let t=E(e),n=t.kind;if(n===`replay`){let e=t.frames;if(!Array.isArray(e)||e.some(e=>typeof e!=`string`))throw Error(`Invalid stream sync frames`);return{kind:n,sinceSeq:k(t,`sinceSeq`),frames:e.map(e=>String(e))}}if(n===`resync`)return{kind:n,sinceSeq:k(t,`sinceSeq`)};if(n===`snapshot`)return{kind:n,seq:k(t,`seq`),partial:t.partial??null};throw Error(`Invalid stream sync kind`)}function _r(e){let t=E(e),n=t.subtasks===void 0?[]:j(_r)(t.subtasks);return{id:D(t,`id`),title:D(t,`title`),status:D(t,`status`),...N(`verificationContract`,O(t,`verificationContract`)),...n.length===0?{}:{subtasks:n}}}function vr(e){let t=E(e);return{id:D(t,`id`),objective:D(t,`objective`),status:D(t,`status`),path:D(t,`path`),sisyphus:A(t,`sisyphus`),autoContinue:A(t,`autoContinue`),...N(`createdAt`,O(t,`createdAt`)),...N(`updatedAt`,O(t,`updatedAt`)),...N(`currentTaskId`,O(t,`currentTaskId`)),...N(`stopReason`,O(t,`stopReason`)),...N(`pauseReason`,O(t,`pauseReason`)),...N(`verificationContract`,O(t,`verificationContract`)),...N(`tokensUsed`,go(t,`tokensUsed`)),...N(`activeSeconds`,go(t,`activeSeconds`)),tasks:j(_r)(t.tasks),completedTaskCount:k(t,`completedTaskCount`),totalTaskCount:k(t,`totalTaskCount`),...N(`sourceRoot`,O(t,`sourceRoot`))}}function yr(e){let t=E(e);return{goals:j(vr)(t.goals),directory:D(t,`directory`),generatedAt:D(t,`generatedAt`)}}function br(e){let t=E(e),n=j(mr)(t.statuses),r=new Set;for(let e of n){if(r.has(e.sessionId))throw Error(`Duplicate session status in catalog`);r.add(e.sessionId)}let i=pr(t,`daemonInstanceId`);return{statuses:n,generatedAt:D(t,`generatedAt`),...i===void 0?{}:{daemonInstanceId:i}}}function xr(e){let t=E(e),n=Qr(t,`catalogRevision`),r=Xr(t.sessions,Pr,Ut,`sessions`);if(Fr(r),Ir(r),r.some(e=>e.completionOrder>n))throw Error(`Session unread completion order exceeds catalog revision`);return{catalogId:Lr(t,`catalogId`,512),catalogRevision:n,sessions:r}}function Sr(e){let t=xr(e),n=E(e).outcome;if(n===void 0)return t;if(n!==`acknowledged`&&n!==`superseded`&&n!==`stale-epoch`)throw Error(`Invalid session unread acknowledge outcome`);return{...t,outcome:n}}function Cr(e){let t=E(e);if(t.type!==`sessions.unread`)throw Error(`Invalid session unread event type`);let n=Lr(t,`sessionId`,512),r=Lr(t,`cwd`,Wt),i=zr(t,`catalogRevision`),a=t.unread===null?null:Pr(t.unread);if(a!==null&&(a.sessionId!==n||a.cwd!==r))throw Error(`Session unread event identity mismatch`);if(a!==null&&a.completionOrder>i)throw Error(`Session unread completion order exceeds catalog revision`);return{type:`sessions.unread`,catalogId:Lr(t,`catalogId`,512),catalogRevision:i,sessionId:n,cwd:r,unread:a}}function wr(e){let t=E(e);if(t.type!==`session.startup`)throw Error(`Invalid session startup event type`);let n=O(t,`startupToken`);if(n===``)throw Error(`Expected non-empty string field: startupToken`);return{type:`session.startup`,...N(`startupToken`,n),activity:Tr(t.activity)}}function Tr(e){let t=E(e);return{sessionId:M(t,`sessionId`),phase:Dr(t,`phase`),label:M(t,`label`),...N(`detail`,O(t,`detail`)),at:M(t,`at`),...N(`startup`,Er(t))}}function Er(e){let t=e.startup;if(t!==void 0){if(typeof t!=`boolean`)throw Error(`Expected optional boolean field: startup`);return t}}function Dr(e,t){let n=D(e,t);if(n!==`active`&&n!==`idle`&&n!==`error`)throw Error(`Expected session activity phase field: ${t}`);return n}function Or(e){let t=E(e);switch(t.type){case`message.append`:return{type:`message.append`,message:Ar(t,`message`),...N(`clientMessageId`,O(t,`clientMessageId`)),...t.echo===!0?{echo:!0}:{}};case`assistant.delta`:return{type:`assistant.delta`,text:D(t,`text`)};case`assistant.thinking.delta`:return{type:`assistant.thinking.delta`,text:D(t,`text`)};case`tool.start`:return{type:`tool.start`,toolName:D(t,`toolName`),toolCallId:D(t,`toolCallId`),summary:D(t,`summary`),...N(`args`,t.args)};case`tool.update`:return{type:`tool.update`,toolName:D(t,`toolName`),toolCallId:D(t,`toolCallId`),text:D(t,`text`),...N(`content`,t.content),...N(`details`,t.details)};case`tool.end`:return{type:`tool.end`,toolName:D(t,`toolName`),toolCallId:D(t,`toolCallId`),text:D(t,`text`),isError:A(t,`isError`),...N(`content`,t.content),...N(`details`,t.details)};case`shell.start`:return{type:`shell.start`,command:D(t,`command`),...N(`excludeFromContext`,Ma(t.excludeFromContext,`excludeFromContext`))};case`shell.chunk`:return{type:`shell.chunk`,chunk:D(t,`chunk`)};case`shell.end`:return{type:`shell.end`,...N(`output`,O(t,`output`)),...N(`exitCode`,jr(t,`exitCode`)),...N(`cancelled`,Ma(t.cancelled,`cancelled`)),...N(`truncated`,Ma(t.truncated,`truncated`)),...N(`fullOutputPath`,O(t,`fullOutputPath`)),...N(`isError`,Ma(t.isError,`isError`))};case`agent.start`:return{type:`agent.start`};case`agent.end`:return{type:`agent.end`};case`message.end`:return{type:`message.end`,...N(`message`,t.message)};case`status.update`:return{type:`status.update`,status:mr(t.status)};case`activity.update`:return{type:`activity.update`,activity:Tr(t.activity)};case`command.output`:return Mr(t);case`session.error`:return{type:`session.error`,message:D(t,`message`)};case`session.name`:return Nr(t);case`session.created`:return{type:`session.created`,session:Bn(t.session)};case`pi.event`:return{type:`pi.event`,eventType:D(t,`eventType`)};case`prompt.accepted`:return{type:`prompt.accepted`,clientMessageId:D(t,`clientMessageId`)};default:throw Error(`Unsupported session stream event type`)}}function kr(e){let t=E(e);switch(t.type){case`status.update`:return{type:`status.update`,status:mr(t.status)};case`activity.update`:return{type:`activity.update`,activity:Tr(t.activity)};case`session.name`:return Nr(t);case`session.created`:return{type:`session.created`,session:Bn(t.session)};case`terminal.created`:return{type:`terminal.created`,terminal:Gi(t.terminal)};case`terminal.exited`:return{type:`terminal.exited`,terminal:Gi(t.terminal)};case`terminal.closed`:return{type:`terminal.closed`,terminalId:M(t,`terminalId`),cwd:M(t,`cwd`)};case`machine.status`:return{type:`machine.status`,status:Yi(t.status)};default:throw Error(`Unsupported realtime stream event type`)}}function Ar(e,t){let n=e[t];if(n===void 0)throw Error(`Expected field: ${t}`);return n}function jr(e,t){let n=e[t];if(n!==void 0){if(n===null)return null;if(typeof n!=`number`)throw Error(`Expected optional number|null field: ${t}`);return n}}function Mr(e){let t=D(e,`level`);if(t!==`info`&&t!==`success`&&t!==`error`)throw Error(`Invalid command output level`);return{type:`command.output`,level:t,message:D(e,`message`)}}function Nr(e){return{type:`session.name`,sessionId:M(e,`sessionId`),...N(`name`,O(e,`name`))}}function Pr(e){let t=E(e),n=Lr(t,`completedAt`,64),r=new Date(n);if(!Number.isFinite(r.getTime())||r.toISOString()!==n)throw Error(`Invalid canonical session unread completion time`);return{sessionId:Lr(t,`sessionId`,512),cwd:Lr(t,`cwd`,Wt),completionOrder:zr(t,`completionOrder`),completedAt:n}}function Fr(e){let t=e.map(e=>JSON.stringify([e.sessionId,e.cwd]));if(new Set(t).size!==t.length)throw Error(`Duplicate session unread identity`);let n=e.map(e=>e.completionOrder);if(new Set(n).size!==n.length)throw Error(`Duplicate session unread completion order`)}function Ir(e){for(let t=1;t<e.length;t+=1){let n=e[t-1],r=e[t];if(n===void 0||r===void 0||n.completionOrder<=r.completionOrder)throw Error(`Session unread summaries are not newest-first`)}}function Lr(e,t,n){let r=M(e,t);if(r.length>n)throw Error(`String field exceeds limit: ${t}`);return r}function Rr(e,t,n){let r=O(e,t);if(r!==void 0){if(r===``)throw Error(`Expected non-empty string field: ${t}`);if(r.length>n)throw Error(`String field exceeds limit: ${t}`);return r}}function zr(e,t){let n=Qr(e,t);if(n===0)throw Error(`Expected positive safe integer field: ${t}`);return n}function Br(e){let t=E(e),n=Ur(t.summary),r=Xr(t.notifications,Wr,100,`notifications`);if($r(r),ei(r),n.retainedCount!==r.length)throw Error(`Notification snapshot retained count mismatch`);if(n.highestSeverity!==ni(r))throw Error(`Notification snapshot severity mismatch`);let i=Gr(t.dismissThrough),a=r[0]?.order??0;if(i.order!==a)throw Error(`Notification snapshot dismiss cutoff mismatch`);if(i.overflowWatermark<n.discardedCount)throw Error(`Notification snapshot overflow cutoff mismatch`);return{daemonInstanceId:M(t,`daemonInstanceId`),catalogRevision:Qr(t,`catalogRevision`),summary:n,notifications:r,dismissThrough:i}}function Vr(e){let t=Br(e),n=E(e).outcome;if(n===void 0)return t;if(n!==`dismissed`&&n!==`stale-instance`)throw Error(`Invalid session notification dismiss outcome`);return{...t,outcome:n}}function Hr(e){let t=E(e);if(t.type!==`notifications.inbox`)throw Error(`Invalid notification inbox event type`);let n=Ur(t.summary),r=Gr(t.dismissThrough);if(r.overflowWatermark<n.discardedCount)throw Error(`Notification event overflow cutoff mismatch`);let i=Kr(t.delta);if(i.kind===`cleared`&&!ti(n))throw Error(`Notification clear event summary mismatch`);if(i.kind===`added`&&n.retainedCount===0)throw Error(`Notification add event summary mismatch`);return{type:`notifications.inbox`,daemonInstanceId:M(t,`daemonInstanceId`),catalogRevision:Qr(t,`catalogRevision`),summary:n,dismissThrough:r,delta:i}}function Ur(e){let t=E(e),n=Qr(t,`retainedCount`);if(n>100)throw Error(`Notification retained count exceeds limit`);let r=Qr(t,`discardedCount`),i=Jr(t.highestSeverity);if(n===0!=(i===void 0))throw Error(`Notification summary severity mismatch`);return{sessionId:M(t,`sessionId`),cwd:M(t,`cwd`),inboxRevision:Qr(t,`inboxRevision`),retainedCount:n,discardedCount:r,...i===void 0?{}:{highestSeverity:i}}}function Wr(e){let t=E(e),n=D(t,`message`);if(new TextEncoder().encode(n).byteLength>8192)throw Error(`Notification message exceeds byte limit`);let r=D(t,`receivedAt`);if(!Number.isFinite(Date.parse(r)))throw Error(`Invalid notification receive time`);let i=Qr(t,`order`);if(i===0)throw Error(`Invalid notification order`);let a=t.warningDismiss,o=T(a)?a.id:void 0;return{id:M(t,`id`),message:n,truncated:A(t,`truncated`),severity:qr(t.severity),receivedAt:r,order:i,...typeof o==`string`&&o!==``?{warningDismiss:{id:o}}:{}}}function Gr(e){let t=E(e);return{order:Qr(t,`order`),overflowWatermark:Qr(t,`overflowWatermark`)}}function Kr(e){let t=E(e);switch(t.kind){case`added`:{let e=O(t,`evictedNotificationId`);return{kind:`added`,notification:Wr(t.notification),...e===void 0?{}:{evictedNotificationId:e}}}case`dismissed`:{let e=Xr(t.notificationIds,Zr,100,`notificationIds`);if(new Set(e).size!==e.length)throw Error(`Duplicate dismissed notification id`);return{kind:`dismissed`,notificationIds:e}}case`cleared`:return{kind:`cleared`,reason:Yr(t.reason)};case`resync`:return{kind:`resync`};default:throw Error(`Invalid notification inbox delta`)}}function qr(e){if(e!==`info`&&e!==`warning`&&e!==`error`)throw Error(`Invalid notification severity`);return e}function Jr(e){return e===void 0?void 0:qr(e)}function Yr(e){switch(e){case`runtime-close`:case`archive`:case`delete`:case`restore`:case`archive-reconcile`:case`replacement`:case`initialization-failed`:case`service-dispose`:return e;default:throw Error(`Invalid notification clear reason`)}}function Xr(e,t,n,r){if(!Array.isArray(e))throw Error(`Expected array field: ${r}`);if(e.length>n)throw Error(`Array field exceeds limit: ${r}`);return e.map(t)}function Zr(e){if(typeof e!=`string`||e===``)throw Error(`Expected non-empty string`);return e}function M(e,t){let n=D(e,t);if(n===``)throw Error(`Expected non-empty string field: ${t}`);return n}function Qr(e,t){let n=e[t];if(typeof n!=`number`||!Number.isSafeInteger(n)||n<0)throw Error(`Expected non-negative safe integer field: ${t}`);return n}function $r(e){if(new Set(e.map(e=>e.id)).size!==e.length)throw Error(`Duplicate notification id`);if(new Set(e.map(e=>e.order)).size!==e.length)throw Error(`Duplicate notification order`)}function ei(e){for(let t=1;t<e.length;t+=1){let n=e[t-1],r=e[t];if(n===void 0||r===void 0||n.order<=r.order)throw Error(`Notifications are not newest-first`)}}function ti(e){return e.retainedCount===0&&e.discardedCount===0}function ni(e){let t;for(let n of e){if(n.severity===`error`)return`error`;n.severity===`warning`?t=`warning`:t??=`info`}return t}function ri(e){let t=E(e),n=t.skippedBusySessionIds===void 0?void 0:yn(t.skippedBusySessionIds,`skippedBusySessionIds`);return{generatedAt:D(t,`generatedAt`),thresholds:ci(t.thresholds),projects:j(li)(t.projects),totals:ui(t.totals),...n===void 0?{}:{skippedBusySessionIds:n}}}function ii(e){let t=E(e);return{...ri(t),archivedSessionIds:yn(t.archivedSessionIds,`archivedSessionIds`),deletedSessionIds:yn(t.deletedSessionIds,`deletedSessionIds`)}}function ai(e){let t=E(e);if(t.archived!==!0)throw Error(`Expected bulk archived response`);return{archived:!0,archivedSessionIds:yn(t.archivedSessionIds,`archivedSessionIds`),failures:j(si)(t.failures),generatedAt:D(t,`generatedAt`)}}function oi(e){let t=E(e);if(t.deleted!==!0)throw Error(`Expected bulk deleted response`);return{deleted:!0,deletedSessionIds:yn(t.deletedSessionIds,`deletedSessionIds`),failures:j(si)(t.failures),generatedAt:D(t,`generatedAt`)}}function si(e){let t=E(e);return{sessionId:D(t,`sessionId`),error:D(t,`error`)}}function ci(e){let t=E(e);return{...N(`archiveIdleDays`,go(t,`archiveIdleDays`)),...N(`deleteArchivedDays`,go(t,`deleteArchivedDays`))}}function li(e){let t=E(e);return{cwd:D(t,`cwd`),archiveCount:k(t,`archiveCount`),deleteCount:k(t,`deleteCount`)}}function ui(e){let t=E(e);return{archiveCount:k(t,`archiveCount`),deleteCount:k(t,`deleteCount`)}}function di(e){let t=E(e),n=D(t,`kind`);if(n!==`steer`&&n!==`followUp`)throw Error(`Invalid queued message kind`);return{kind:n,text:D(t,`text`),...N(`clientMessageId`,O(t,`clientMessageId`))}}function fi(e){let t=E(e);return{input:k(t,`input`),output:k(t,`output`),cacheRead:k(t,`cacheRead`),cacheWrite:k(t,`cacheWrite`),total:k(t,`total`)}}function pi(e){let t=E(e);return{...N(`provider`,O(t,`provider`)),...N(`id`,O(t,`id`)),...N(`name`,O(t,`name`)),...N(`contextWindow`,go(t,`contextWindow`)),...N(`reasoning`,t.reasoning)}}function mi(e){return e===void 0?{}:{model:pi(e)}}function hi(e){let t=E(e);return{models:j(pi)(t.models)}}function gi(e){let t=E(e);return{provider:D(t,`provider`),id:D(t,`id`),...N(`name`,O(t,`name`)),...N(`contextWindow`,go(t,`contextWindow`)),...N(`reasoning`,t.reasoning),enabled:A(t,`enabled`)}}function _i(e){let t=E(e);return{models:j(gi)(t.models)}}function vi(e){if(typeof e!=`string`)throw Error(`Invalid thinking level`);return e}function yi(e){let t=E(e);return{levels:j(vi)(t.levels)}}function bi(e){if(e!==`oauth`&&e!==`api_key`)throw Error(`Invalid auth type`);return e}function xi(e){if(e!==`stored`&&e!==`runtime`&&e!==`environment`&&e!==`fallback`&&e!==`models_json_key`&&e!==`models_json_command`)throw Error(`Invalid auth status source`);return e}function Si(e){let t=E(e),n=t.source===void 0?void 0:xi(t.source);return{configured:A(t,`configured`),...N(`source`,n),...N(`label`,O(t,`label`))}}function Ci(e){let t=E(e),n=t.loginFlow;if(n!==void 0&&n!==`interactive`)throw Error(`Invalid auth provider login flow`);return{id:D(t,`id`),name:D(t,`name`),authType:bi(t.authType),status:Si(t.status),...n===void 0?{}:{loginFlow:n}}}function wi(e){let t=E(e);return{providers:j(Ci)(t.providers)}}function Ti(e){let t=E(e);return{flowId:D(t,`flowId`),providerId:D(t,`providerId`),providerName:D(t,`providerName`),status:Ei(t.status),progress:j(e=>{if(typeof e!=`string`)throw Error(`Expected progress item string`);return e})(t.progress),...N(`error`,O(t,`error`)),...N(`auth`,Di(t.auth)),...N(`prompt`,ki(t.prompt)),...N(`select`,ji(t.select)),...N(`info`,Mi(t.info))}}function Ei(e){if(e!==`running`&&e!==`complete`&&e!==`error`&&e!==`cancelled`)throw Error(`Invalid OAuth flow status`);return e}function Di(e){if(e===void 0)return;let t=E(e);return{url:D(t,`url`),...N(`instructions`,O(t,`instructions`)),...N(`deviceCode`,Oi(t.deviceCode))}}function Oi(e){if(e===void 0)return;let t=E(e);return{userCode:D(t,`userCode`),...N(`intervalSeconds`,go(t,`intervalSeconds`)),...N(`expiresInSeconds`,go(t,`expiresInSeconds`))}}function ki(e){if(e===void 0)return;let t=E(e);return{requestId:D(t,`requestId`),message:D(t,`message`),promptType:Ai(t.promptType),...N(`placeholder`,O(t,`placeholder`)),...N(`allowEmpty`,ho(t,`allowEmpty`))}}function Ai(e){if(e!==`text`&&e!==`secret`&&e!==`manual_code`)throw Error(`Invalid OAuth prompt type`);return e}function ji(e){if(e===void 0)return;let t=E(e);return{requestId:D(t,`requestId`),message:D(t,`message`),options:j(no)(t.options)}}function Mi(e){if(e!==void 0)return j(e=>{let t=E(e);return{message:D(t,`message`),...N(`links`,t.links===void 0?void 0:j(Ni)(t.links))}})(e)}function Ni(e){let t=E(e);return{url:D(t,`url`),...N(`label`,O(t,`label`))}}function Pi(e){if(e===void 0)return{};let t=E(e);return{contextUsage:{tokens:_o(t,`tokens`),contextWindow:k(t,`contextWindow`),percent:_o(t,`percent`)}}}function Fi(e){let t=E(e),n=D(t,`source`);if(n!==`extension`&&n!==`prompt`&&n!==`skill`&&n!==`builtin`)throw Error(`Invalid command source`);return{name:D(t,`name`),source:n,...N(`description`,O(t,`description`))}}function Ii(e){let t=E(e),n=D(t,`kind`);if(n!==`tracked`&&n!==`untracked`&&n!==`other`)throw Error(`Invalid file kind`);return{path:D(t,`path`),kind:n}}function Li(e){let t=E(e);return{path:D(t,`path`),entries:j(Ri)(t.entries),scannedAt:D(t,`scannedAt`),truncated:A(t,`truncated`)}}function Ri(e){let t=E(e),n=D(t,`type`);if(n!==`file`&&n!==`directory`&&n!==`symlink`)throw Error(`Invalid file tree entry type`);return{name:D(t,`name`),path:D(t,`path`),type:n,...N(`size`,go(t,`size`)),...N(`modifiedAt`,O(t,`modifiedAt`))}}function zi(e){let t=E(e),n=D(t,`encoding`);if(n!==`utf8`)throw Error(`Invalid file encoding`);return{path:D(t,`path`),...N(`language`,O(t,`language`)),...N(`mediaType`,Ui(t.mediaType)),...N(`mimeType`,O(t,`mimeType`)),encoding:n,size:k(t,`size`),modifiedAt:D(t,`modifiedAt`),content:D(t,`content`),truncated:A(t,`truncated`),binary:A(t,`binary`)}}function Bi(e){let t=E(e);return{path:D(t,`path`),size:k(t,`size`),modifiedAt:D(t,`modifiedAt`),created:A(t,`created`)}}function Vi(e){let t=E(e);return{path:D(t,`path`),existed:A(t,`existed`)}}function Hi(e){let t=E(e);return{fromPath:D(t,`fromPath`),toPath:D(t,`toPath`),size:k(t,`size`),modifiedAt:D(t,`modifiedAt`)}}function Ui(e){if(e!==void 0){if(e!==`image`&&e!==`html`&&e!==`pdf`&&e!==`markdown`)throw Error(`Invalid file media type`);return e}}function Wi(e){let t=E(e),n=t.decision;if(n!==!0&&n!==!1&&n!==null)throw Error(`Invalid workspace trust decision`);return{path:D(t,`path`),decision:n,trusted:A(t,`trusted`)}}function Gi(e){let t=E(e);return{id:D(t,`id`),cwd:D(t,`cwd`),name:D(t,`name`),createdAt:D(t,`createdAt`),exited:A(t,`exited`),...N(`exitCode`,go(t,`exitCode`)),...N(`commandRunId`,O(t,`commandRunId`))}}function Ki(e){let t=E(e);return{id:D(t,`id`),origin:D(t,`origin`),projectId:D(t,`projectId`),workspaceId:D(t,`workspaceId`),terminalId:D(t,`terminalId`),title:D(t,`title`),command:D(t,`command`),status:qi(t.status),...N(`exitCode`,go(t,`exitCode`)),createdAt:D(t,`createdAt`),...N(`startedAt`,O(t,`startedAt`)),...N(`completedAt`,O(t,`completedAt`)),metadata:Ji(t.metadata,`metadata`)}}function qi(e){if(e!==`queued`&&e!==`running`&&e!==`succeeded`&&e!==`failed`)throw Error(`Invalid terminal command run status`);return e}function Ji(e,t){let n=E(e);return Object.fromEntries(Object.entries(n).map(([e,n])=>{if(typeof n!=`string`)throw Error(`Expected string record field: ${t}.${e}`);return[e,n]}))}function Yi(e){let t=$t(e);if(t===void 0)throw Error(`Expected machine status snapshot`);return t}function Xi(e){let t=E(e),n=t.enabled===!0,r=typeof t.disabledReason==`string`?t.disabledReason:void 0,i=typeof t.latest==`string`?t.latest:void 0,a=typeof t.branch==`string`?t.branch:void 0;return n?{enabled:!0,current:D(t,`current`),latest:i,available:t.available===!0,branch:a,checkedAt:D(t,`checkedAt`)}:{enabled:!1,current:``,latest:i,available:!1,branch:a,checkedAt:D(t,`checkedAt`),...r===void 0?{}:{disabledReason:r}}}function Zi(e){let t=E(e);return{goalId:D(t,`goalId`),archivedPath:typeof t.archivedPath==`string`?t.archivedPath:``,alreadyArchived:t.alreadyArchived===!0,agentMayRecreate:t.agentMayRecreate===!0}}function Qi(e){let t=E(e);return{hub:ea(t.hub),machines:j(ta)(t.machines)}}function $i(e){let t=E(e),n=D(t,`operation`);if(n!==`restart`&&n!==`update`)throw Error(`Invalid fleet operation`);return{operation:n,hub:ea(t.hub),outcomes:j(na)(t.outcomes)}}function ea(e){let t=E(e);return{machineId:D(t,`machineId`),name:D(t,`name`)}}function ta(e){let t=E(e),n=D(t,`kind`);if(n!==`local`&&n!==`remote`)throw Error(`Invalid machine kind`);return{...ea(e),kind:n,online:t.online===!0,...N(`version`,O(t,`version`)),...N(`piVersion`,O(t,`piVersion`)),...N(`error`,O(t,`error`))}}function na(e){let t=E(e);return{...ea(e),started:t.started===!0,...N(`error`,O(t,`error`))}}function ra(e){let t=E(e);return{path:D(t,`path`),exists:A(t,`exists`),config:ia(t.config),effectiveConfig:ia(t.effectiveConfig),envOverrides:_a(t.envOverrides)}}function ia(e){let t=E(e);return{...N(`host`,O(t,`host`)),...N(`port`,go(t,`port`)),...N(`allowedHosts`,la(t.allowedHosts)),...N(`shortcuts`,ha(t.shortcuts)),...N(`plugins`,ga(t.plugins)),...N(`pathAccess`,ua(t.pathAccess)),...N(`uploads`,fa(t.uploads)),...N(`maxUploadBytes`,go(t,`maxUploadBytes`)),...N(`agent`,ca(t.agent)),...N(`spawnSessions`,ho(t,`spawnSessions`)),...N(`subsessions`,ho(t,`subsessions`)),...N(`askUser`,ho(t,`askUser`)),...N(`speechToText`,oa(t.speechToText)),...N(`environmentFacts`,ho(t,`environmentFacts`)),...N(`extensionDialogsTimeoutMs`,go(t,`extensionDialogsTimeoutMs`))}}var aa=[`browser`,`openai-realtime`,`deepgram`,`azure-speech`];function oa(e){if(e===void 0)return;if(!T(e)||Array.isArray(e))throw Error(`Invalid PI WEB speechToText field`);let t=e.endpoint;if(typeof t!=`string`||t.trim()===``)throw Error(`Invalid PI WEB speechToText field`);return{endpoint:t,...N(`model`,O(e,`model`)),...N(`language`,O(e,`language`)),...N(`streaming`,sa(e.streaming))}}function sa(e){if(e===void 0)return;if(!T(e)||Array.isArray(e))throw Error(`Invalid PI WEB speechToText.streaming field`);let t=aa.find(t=>t===e.protocol);if(t===void 0)throw Error(`Invalid PI WEB speechToText.streaming field`);return{protocol:t,...N(`url`,O(e,`url`)),...N(`model`,O(e,`model`)),...N(`tokenEndpoint`,O(e,`tokenEndpoint`))}}function ca(e){if(e!==void 0){if(!T(e)||Array.isArray(e))throw Error(`Invalid PI WEB agent field`);return{...N(`command`,O(e,`command`)),...N(`dir`,O(e,`dir`))}}}function la(e){if(e!==void 0){if(e===!0)return!0;if(pa(e))return e;throw Error(`Invalid PI WEB allowedHosts field`)}}function ua(e){if(e===void 0)return;if(!T(e))throw Error(`Invalid PI WEB pathAccess field`);let t=e.allowedPaths;return{...N(`allowedPaths`,da(t,`pathAccess.allowedPaths`))}}function da(e,t){if(e!==void 0){if(ma(e))return e;throw Error(`Invalid PI WEB ${t} field`)}}function fa(e){if(e!==void 0){if(!T(e)||Array.isArray(e))throw Error(`Invalid PI WEB uploads field`);return{...N(`defaultFolder`,O(e,`defaultFolder`))}}}function pa(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function ma(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`&&e!==``)}function ha(e){if(e!==void 0){if(!T(e)||Array.isArray(e))throw Error(`Invalid PI WEB shortcuts field`);return Object.fromEntries(Object.entries(e).map(([e,t])=>{if(t!==null&&(typeof t!=`string`||t===``))throw Error(`Invalid PI WEB shortcut field`);return[e,t]}))}}function ga(e){if(e!==void 0){if(!T(e)||Array.isArray(e))throw Error(`Invalid PI WEB plugins field`);return Object.fromEntries(Object.entries(e).map(([e,t])=>{if(!T(t)||Array.isArray(t))throw Error(`Invalid PI WEB plugin config field`);let n=t.enabled;if(n!==void 0&&typeof n!=`boolean`)throw Error(`Invalid PI WEB plugin enabled field`);let r=t.settings;if(r!==void 0&&(!T(r)||Array.isArray(r)))throw Error(`Invalid PI WEB plugin settings field`);return[e,t]}))}}function _a(e){let t=E(e);return{host:A(t,`host`),port:A(t,`port`),allowedHosts:A(t,`allowedHosts`),spawnSessions:A(t,`spawnSessions`),subsessions:A(t,`subsessions`),askUser:A(t,`askUser`)}}function va(e){let t=E(e);return{packages:j(ba)(t.packages)}}function ya(e){let t=E(e),n=O(t,`source`),r=t.scope===void 0?void 0:xa(t.scope),i=Ma(t.removed,`removed`);return{action:Sa(t.action),...N(`source`,n),...N(`scope`,r),...N(`removed`,i),packages:j(ba)(t.packages)}}function ba(e){let t=E(e);return{source:D(t,`source`),scope:xa(t.scope),filtered:A(t,`filtered`),...N(`installedPath`,O(t,`installedPath`))}}function xa(e){if(e!==`user`&&e!==`project`)throw Error(`Invalid Pi package scope`);return e}function Sa(e){if(e!==`install`&&e!==`remove`&&e!==`update`)throw Error(`Invalid Pi package mutation action`);return e}function Ca(e){let t=E(e),n=j(wa)(t.plugins);if(t.lifecycleVersion===void 0)return{lifecycleVersion:1,plugins:n,diagnostics:[],serverRuntime:{status:`incompatible`,restartRequired:!1,message:`PI WEB does not support plugin lifecycle diagnostics. Update and restart PI WEB, then try again.`,recovery:Aa()}};if(t.lifecycleVersion!==1)throw Error(`Unsupported PI WEB plugin lifecycle version`);return{lifecycleVersion:1,plugins:n,diagnostics:j(Da)(t.diagnostics),serverRuntime:Oa(t.serverRuntime)}}function wa(e){let t=E(e),n=D(t,`id`),r=t.server===void 0?void 0:Ta(t.server,n);return{id:n,...N(`module`,O(t,`module`)),source:D(t,`source`),scope:ja(t.scope),machineSpecific:Ma(t.machineSpecific,`machineSpecific`)??!1,enabled:A(t,`enabled`),discovered:Ma(t.discovered,`discovered`)??!0,conflict:Ma(t.conflict,`conflict`)??!1,...r===void 0?{}:{server:r}}}function Ta(e,t){let n=E(e),r=n.state,i=n.phase;if(r!==`active`&&r!==`failed`&&r!==`incompatible`&&r!==`disabled`&&r!==`missing`&&r!==`unknown`)throw Error(`Invalid PI WEB server plugin state`);if(i!==void 0&&i!==`import`&&i!==`activate`&&i!==`validate`&&i!==`start`&&i!==`health`&&i!==`stop`)throw Error(`Invalid PI WEB server plugin phase`);let a=n.health===void 0?void 0:Ea(n.health),o=D(n,`disableCommand`);if(o!==_n(t))throw Error(`Invalid PI WEB server plugin recovery command`);return{state:r,...N(`desiredRevision`,O(n,`desiredRevision`)),...N(`activeRevision`,O(n,`activeRevision`)),...i===void 0?{}:{phase:i},...N(`message`,O(n,`message`)),...a===void 0?{}:{health:a},staleRevision:A(n,`staleRevision`),restartRequired:A(n,`restartRequired`),disableCommand:o}}function Ea(e){let t=E(e),n=t.status;if(n!==`healthy`&&n!==`degraded`&&n!==`unhealthy`)throw Error(`Invalid PI WEB server plugin health status`);return{status:n,...N(`message`,O(t,`message`))}}function Da(e){let t=E(e),n=t.kind,r=t.snapshot;if(n!==`conflict`&&n!==`discovery`)throw Error(`Invalid PI WEB plugin diagnostic kind`);if(r!==`desired`&&r!==`active`)throw Error(`Invalid PI WEB plugin diagnostic snapshot`);return{kind:n,snapshot:r,source:D(t,`source`),message:D(t,`message`),...N(`pluginId`,O(t,`pluginId`))}}function Oa(e){let t=E(e),n=t.status,r=t.safeStart,i=t.desiredSafeStart;if(n!==`available`&&n!==`unavailable`&&n!==`incompatible`)throw Error(`Invalid PI WEB server-plugin runtime status`);if(r!==void 0&&r!==`bundled-only`&&r!==`none`)throw Error(`Invalid PI WEB server-plugin safe-start state`);if(i!==void 0&&i!==`off`&&i!==`bundled-only`&&i!==`none`)throw Error(`Invalid desired PI WEB server-plugin safe-start state`);return{status:n,...r===void 0?{}:{safeStart:r},...i===void 0?{}:{desiredSafeStart:i},restartRequired:A(t,`restartRequired`),...N(`message`,O(t,`message`)),recovery:ka(t.recovery)}}function ka(e){let t=E(e),n={showSafeStart:D(t,`showSafeStart`),bundledOnly:D(t,`bundledOnly`),noServerPlugins:D(t,`noServerPlugins`),clearSafeStart:D(t,`clearSafeStart`)};if(n.showSafeStart!==gn.showSafeStart||n.bundledOnly!==gn.bundledOnly||n.noServerPlugins!==gn.noServerPlugins||n.clearSafeStart!==gn.clearSafeStart)throw Error(`Invalid PI WEB server plugin recovery commands`);return n}function Aa(){return{...gn}}function ja(e){if(e!==`bundled`&&e!==`local`&&e!==`user`&&e!==`project`)throw Error(`Invalid PI WEB plugin scope`);return e}function Ma(e,t){if(e!==void 0){if(typeof e!=`boolean`)throw Error(`Expected optional boolean field: ${t}`);return e}}function Na(e){let t=E(e);return{packageName:D(t,`packageName`),generatedAt:D(t,`generatedAt`),components:Fa(t.components),release:Ba(t.release),commands:Va(t.commands),messages:j(Ha)(t.messages)}}function Pa(e){let t=E(e);return{packageName:D(t,`packageName`),generatedAt:D(t,`generatedAt`),components:Ia(t.components),capabilities:Wa(t.capabilities)}}function Fa(e){let t=E(e);return{web:Ra(t.web),sessiond:Ra(t.sessiond)}}function Ia(e){let t=E(e);return{web:La(t.web),sessiond:La(t.sessiond)}}function La(e){let t=E(e);return{component:Ua(t.component),label:D(t,`label`),...N(`runtimeVersion`,O(t,`runtimeVersion`)),...N(`piVersion`,O(t,`piVersion`)),available:A(t,`available`),capabilities:Wa(t.capabilities),...N(`error`,O(t,`error`))}}function Ra(e){let t=E(e);return{component:Ua(t.component),label:D(t,`label`),...N(`runtimeVersion`,O(t,`runtimeVersion`)),...N(`installedVersion`,O(t,`installedVersion`)),...N(`piVersion`,O(t,`piVersion`)),stale:A(t,`stale`),available:A(t,`available`),...N(`installation`,za(t.installation)),...N(`error`,O(t,`error`))}}function za(e){if(e===void 0)return;let t=E(e),n=D(t,`kind`);if(n!==`pi-package`&&n!==`npm-global`&&n!==`local`&&n!==`docker`&&n!==`unknown`)throw Error(`Invalid PI WEB installation kind`);let r=t.scope;if(r!==void 0&&r!==`user`&&r!==`project`)throw Error(`Invalid PI WEB installation scope`);let i=t.dockerMode;if(i!==void 0&&i!==`runtime`&&i!==`dev`)throw Error(`Invalid PI WEB Docker mode`);return{kind:n,...N(`path`,O(t,`path`)),...N(`source`,O(t,`source`)),...r===void 0?{}:{scope:r},...N(`npmRoot`,O(t,`npmRoot`)),...i===void 0?{}:{dockerMode:i}}}function Ba(e){let t=E(e);return{packageName:D(t,`packageName`),...N(`latestVersion`,O(t,`latestVersion`)),updateAvailable:A(t,`updateAvailable`),...N(`checkedAt`,O(t,`checkedAt`)),...t.skipped===!0?{skipped:!0}:{},...N(`error`,O(t,`error`))}}function Va(e){let t=E(e);return{...N(`update`,O(t,`update`)),...N(`restart`,O(t,`restart`)),...N(`restartWeb`,O(t,`restartWeb`)),...N(`restartSessiond`,O(t,`restartSessiond`)),...N(`status`,O(t,`status`))}}function Ha(e){let t=E(e);return{id:D(t,`id`),severity:Ga(t.severity),title:D(t,`title`),body:D(t,`body`),...N(`command`,O(t,`command`))}}function Ua(e){if(e!==`web`&&e!==`sessiond`)throw Error(`Invalid PI WEB service component`);return e}function Wa(e){let t=cn(e);if(t===void 0)throw Error(`Invalid PI WEB capabilities`);return t}function Ga(e){if(e!==`info`&&e!==`warning`&&e!==`error`)throw Error(`Invalid PI WEB status severity`);return e}function Ka(e){let t=E(e),n=D(t,`type`);if(n===`unsupported`)return{type:n,message:D(t,`message`)};if(n===`select`)return{type:n,requestId:D(t,`requestId`),title:D(t,`title`),options:j(no)(t.options)};if(n===`tree`)return{type:n,tree:qa(t.tree)};if(n===`done`)return{type:n,...N(`message`,O(t,`message`)),...ro(t.session),...N(`promptDraft`,O(t,`promptDraft`))};throw Error(`Invalid command result type`)}function qa(e){let t=E(e),n=j(Ja)(t.nodes),r=new Set(n.map(e=>e.id));if(r.size!==n.length)throw Error(`Duplicate session tree node id`);let i=$a(t,`activeLeafId`);if(i!==null&&!r.has(i))throw Error(`Invalid session tree activeLeafId`);return{nodes:n,activeLeafId:i,activePathIds:to(t.activePathIds,`activePathIds`)}}function Ja(e){let t=E(e);return{id:eo(t,`id`),parentId:$a(t,`parentId`),kind:Ya(t.kind),summary:D(t,`summary`),...N(`timestamp`,O(t,`timestamp`)),...N(`label`,O(t,`label`))}}function Ya(e){switch(e){case`user`:case`assistant`:case`tool-result`:case`bash`:case`custom-message`:case`compaction`:case`branch-summary`:case`model-change`:case`thinking-level-change`:case`session-info`:case`label`:case`custom`:case`other`:return e;default:throw Error(`Invalid session tree node kind`)}}function Xa(e){let t=E(e),n=A(t,`cancelled`);if(Object.hasOwn(t,`summaryEntry`))throw Error(`Invalid session tree navigation result field: summaryEntry`);if(n){Qa(t,`editorText`,`session tree cancellation result`);let e=t.aborted;if(e!==void 0&&typeof e!=`boolean`)throw Error(`Expected optional boolean field: aborted`);return{cancelled:n,...e===void 0?{}:{aborted:e}}}return Qa(t,`aborted`,`session tree navigation result`),{cancelled:n,...N(`editorText`,O(t,`editorText`))}}function Za(e){let t=E(e),n=A(t,`cancelled`);return n?(Qa(t,`session`,`session tree fork cancellation result`),Qa(t,`promptDraft`,`session tree fork cancellation result`),{cancelled:n}):{cancelled:n,session:Bn(t.session),...N(`promptDraft`,O(t,`promptDraft`))}}function Qa(e,t,n){if(Object.hasOwn(e,t))throw Error(`Invalid ${n} field: ${t}`)}function $a(e,t){let n=e[t];if(n!==null&&typeof n!=`string`)throw Error(`Expected string or null field: ${t}`);if(typeof n==`string`&&n.trim()===``)throw Error(`Expected non-blank string or null field: ${t}`);return n}function eo(e,t){let n=D(e,t);if(n.trim()===``)throw Error(`Expected non-blank string field: ${t}`);return n}function to(e,t){let n=yn(e,t);if(n.some(e=>e.trim()===``))throw Error(`Expected non-blank string array field: ${t}`);return n}function no(e){let t=E(e);return{value:D(t,`value`),label:D(t,`label`),...N(`description`,O(t,`description`))}}function ro(e){return e===void 0?{}:{session:Bn(e)}}function io(e){if(E(e).accepted!==!0)throw Error(`Expected accepted response`);return{accepted:!0}}function ao(e){let t=E(e);return j(oo)(t.attachments)}function oo(e){let t=E(e);return{path:D(t,`path`),mimeType:D(t,`mimeType`),size:k(t,`size`)}}function so(e){if(E(e).closed!==!0)throw Error(`Expected closed response`);return{closed:!0}}function co(e){let t=E(e);if(t.aborted!==!0)throw Error(`Expected aborted response`);let n=t.discarded;return{aborted:!0,discarded:Array.isArray(n)?j(di)(n):[]}}function lo(e){if(E(e).stopped!==!0)throw Error(`Expected stopped response`);return{stopped:!0}}function uo(e){let t=E(e);if(t.archived!==!0)throw Error(`Expected archived response`);let n=t.sessionIds===void 0?void 0:yn(t.sessionIds,`sessionIds`),r=go(t,`archivedCount`),i=go(t,`skippedAlreadyArchivedCount`);return{archived:!0,...n===void 0?{}:{sessionIds:n},...r===void 0?{}:{archivedCount:r},...i===void 0?{}:{skippedAlreadyArchivedCount:i}}}function fo(e){if(E(e).restored!==!0)throw Error(`Expected restored response`);return{restored:!0}}function po(e){if(E(e).detached!==!0)throw Error(`Expected detached response`);return{detached:!0}}function mo(e){if(E(e).reloaded!==!0)throw Error(`Expected reloaded response`);return{reloaded:!0}}function ho(e,t){let n=e[t];if(n!==void 0){if(typeof n!=`boolean`)throw Error(`Invalid PI WEB ${t} field`);return n}}function go(e,t){let n=e[t];if(n!==void 0){if(typeof n!=`number`)throw Error(`Expected optional number field: ${t}`);return n}}function _o(e,t){let n=e[t];if(n===null)return null;if(typeof n!=`number`)throw Error(`Expected number|null field: ${t}`);return n}function N(e,t){return t===void 0?{}:{[e]:t}}function vo(e){if(!T(e))return{runs:[]};let t=e.runs;if(!Array.isArray(t))return{runs:[]};let n=[];for(let e of t){if(!T(e))continue;let t=e.sessionId,r=e.cwd,i=e.interruptedAt;typeof t!=`string`||t===``||typeof r!=`string`||typeof i!=`string`||n.push({sessionId:t,cwd:r,interruptedAt:i})}return{runs:n}}function yo(e){if(!T(e))return{subsessions:[],toolRuns:[]};let t=[],n=e.subsessions;if(Array.isArray(n))for(let e of n){if(!T(e))continue;let n=e.sessionId,r=e.cwd,i=e.status;typeof n!=`string`||n===``||typeof r==`string`&&(i!==`working`&&i!==`idle`&&i!==`error`&&i!==`unknown`||t.push({sessionId:n,cwd:r,status:i}))}return{subsessions:t,toolRuns:wo(e.toolRuns)}}function bo(e){let t=mr(e);return{recalled:T(e)&&e.recalled===!0,status:t}}function xo(e){if(!T(e)||!Array.isArray(e.tasks))return[];let t=[];for(let n of e.tasks){if(!T(n))continue;let e=n.id,r=n.name,i=n.status;typeof e!=`string`||e===``||t.push({id:e,name:typeof r==`string`&&r!==``?r:e,command:typeof n.command==`string`?n.command:``,status:typeof i==`string`?i:`unknown`,...typeof n.startedAt==`string`?{startedAt:n.startedAt}:{},...typeof n.endedAt==`string`?{endedAt:n.endedAt}:{},...typeof n.durationMs==`number`?{durationMs:n.durationMs}:{},...typeof n.exitCode==`number`?{exitCode:n.exitCode}:{},bytesWritten:typeof n.bytesWritten==`number`?n.bytesWritten:0,hasOutput:n.hasOutput===!0})}return t}function So(e){if(!T(e))return``;let t=e.output;return typeof t==`string`?t:``}function Co(e){if(!T(e))return``;let t=e.output;return typeof t==`string`?t:``}function wo(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!T(n))continue;let e=n.runId,r=n.agent,i=n.status,a=n.elapsedMs,o=n.startedAt;if(typeof e!=`string`||e===``||typeof r!=`string`||r===``||i!==`running`&&i!==`done`&&i!==`failed`&&i!==`lost`&&i!==`unknown`||typeof a!=`number`||typeof o!=`string`)continue;let s=n.lastActivity,c=n.task,l=n.model,u=n.toolCount;t.push({runId:e,agent:r,status:i,elapsedMs:a,startedAt:o,...typeof s==`string`&&s!==``?{lastActivity:s}:{},...typeof c==`string`&&c!==``?{task:c}:{},...typeof l==`string`&&l!==``?{model:l}:{},...typeof u==`number`?{toolCount:u}:{},hasOutput:n.hasOutput===!0})}return t}function To(e){return typeof e==`string`?e:e.id}function Eo(e){return typeof e==`string`?void 0:e.cwd}function Do(e,t,n=`local`){let r=new URLSearchParams,i=Eo(e);i!==void 0&&i!==``&&r.set(`cwd`,i),t?.limit!==void 0&&r.set(`limit`,String(t.limit)),t?.before!==void 0&&r.set(`before`,String(t.before));let a=r.toString();return`api/machines/${encodeURIComponent(n)}/sessions/${encodeURIComponent(To(e))}/messages${a===``?``:`?${a}`}`}function Oo(e,t,n,r=`local`){let i=new URLSearchParams,a=Eo(e);a!==void 0&&a!==``&&i.set(`cwd`,a),n?.limit!==void 0&&i.set(`limit`,String(n.limit)),n?.before!==void 0&&i.set(`before`,String(n.before));let o=i.toString();return`api/machines/${encodeURIComponent(r)}/sessions/${encodeURIComponent(To(e))}/subagent-runs/${encodeURIComponent(t)}/messages${o===``?``:`?${o}`}`}function ko(e,t,n,r){let i=new URLSearchParams({path:n});return r?.createDirs===!1&&i.set(`createDirs`,`false`),r?.overwrite===!1&&i.set(`overwrite`,`false`),Ze(`${`api/machines/${encodeURIComponent(r?.machineId??`local`)}`}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/file?${i.toString()}`)}function Ao(e,t,n,r){let i=new URLSearchParams;return i.set(`path`,n),r?.modifiedAt!==void 0&&i.set(`v`,r.modifiedAt),r?.download===!0&&i.set(`download`,`1`),`${`api/machines/${encodeURIComponent(r?.machineId??`local`)}`}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/file/preview?${i.toString()}`}function jo(e,t,n,r){return Ze(Ao(e,t,n,r))}var P=(e=`local`)=>`api/machines/${encodeURIComponent(e)}`;function Mo(e,t=`local`){return`${P(t)}/sessions/${encodeURIComponent(e.id)}`}function F(e,t,n=`local`){return`${Mo(e,n)}/${t}`}function No(e,t,n=`local`){return`${F(e,t,n)}${Po(e)}`}function Po(e){return`?${new URLSearchParams({cwd:e.cwd}).toString()}`}function I(e,t={}){return JSON.stringify({cwd:e.cwd,...t})}function Fo(e){return JSON.stringify({sessions:e.map(Io)})}function Io(e){return{id:e.id,cwd:e.cwd}}function Lo(e){return e===`local`?`api/pi-web/status`:`${P(e)}/pi-web/status`}var Ro={piWebStatus:(e=`local`)=>v(Lo(e),Na),checkForUpdates:(e=`local`)=>v(`${Lo(e)}?refresh=1`,Na,{cache:`no-store`}),piWebRuntime:()=>v(`api/pi-web/runtime`,Pa)},zo={machines:()=>v(`api/machines`,xn),addMachine:e=>v(`api/machines`,Sn,{method:`POST`,body:JSON.stringify(e)}),deleteMachine:e=>v(`api/machines/${encodeURIComponent(e)}`,e=>e,{method:`DELETE`}),updateMachine:(e,t)=>v(`api/machines/${encodeURIComponent(e)}`,Sn,{method:`PATCH`,body:JSON.stringify(t)}),health:e=>v(`api/machines/${encodeURIComponent(e)}/health`,Cn),runtime:(e,t=!1)=>v(`api/machines/${encodeURIComponent(e)}/runtime${t?`?refresh=1`:``}`,wn,t?{cache:`no-store`}:{})};function Bo(e){return e===void 0?`api/config`:`${P(e)}/config`}function Vo(e){return e===void 0?`api/plugins`:`${P(e)}/plugins`}var Ho={config:e=>v(Bo(e),ra),saveConfig:(e,t)=>v(Bo(t),ra,{method:`PUT`,body:JSON.stringify({config:e})})};function Uo(e){let t=ss(e)?e:{},n=t.started===!0,r=typeof t.error==`string`?t.error:void 0;return r===void 0?{started:n}:{started:n,error:r}}var Wo={plugins:e=>v(Vo(e),Ca)},Go={status:()=>v(`api/pi-web/update/status`,Xi,{cache:`no-store`}),apply:()=>v(`api/pi-web/update/apply`,Uo,{method:`POST`,body:JSON.stringify({})})},Ko={report:()=>v(`api/pi-web/fleet`,Qi,{cache:`no-store`}),run:(e,t)=>v(`api/pi-web/fleet/run`,$i,{method:`POST`,body:JSON.stringify({operation:e,...t===void 0?{}:{machineIds:t}})})};function qo(e=``,t){let n=t===void 0?`api/pi-packages`:`${P(t)}/pi-packages`;return e===``?n:`${n}/${e}`}var Jo={packages:e=>v(qo(``,e),va),install:(e,t)=>{let n={source:e};return v(qo(`install`,t),ya,{method:`POST`,body:JSON.stringify(n)})},remove:(e,t,n)=>{let r=t===void 0?{source:e}:{source:e,scope:t};return v(qo(`remove`,n),ya,{method:`POST`,body:JSON.stringify(r)})},update:(e,t)=>{let n=e===void 0?void 0:{source:e};return v(qo(`update`,t),ya,{method:`POST`,...n===void 0?{}:{body:JSON.stringify(n)}})}},Yo={machineStatus:(e=`local`)=>v(`${P(e)}/status`,Yi)},Xo={projects:(e=`local`)=>v(`${P(e)}/projects`,j(On)),addProject:(e,t,n,r=`local`)=>v(`${P(r)}/projects`,On,{method:`POST`,body:JSON.stringify({path:e,name:t,create:n})}),closeProject:(e,t=`local`)=>v(`${P(t)}/projects/${encodeURIComponent(e)}`,so,{method:`DELETE`}),projectDirectories:(e,t=`local`,n)=>v(`${P(t)}/project-directories?q=${encodeURIComponent(e)}`,j(Ii),n)};function Zo(e,t=`local`){return v(`${P(t)}/projects/${encodeURIComponent(e)}/workspaces`,t=>{let n=An(t);if(n.projectId!==e)throw Error(`Workspace resolution did not match the requested project`);return n})}var Qo={workspaceResolution:Zo,workspaces:async(e,t=`local`)=>[...(await Zo(e,t)).workspaces],deleteWorkspace:(e,t,n,r=`local`)=>{let i={precondition:n};return v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}`,Ki,{method:`DELETE`,body:JSON.stringify(i)})},archiveWorkspaceGoal:(e,t,n,r=`local`)=>v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/goals/${encodeURIComponent(n)}/archive`,Zi,{method:`POST`,body:JSON.stringify({})}),workspaceGoals:(e,t,n=`local`,r)=>{let i=r===void 0||r===``?``:`?sessionCwd=${encodeURIComponent(r)}`;return v(`${P(n)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/goals${i}`,yr,{cache:`no-store`})},workspaceTree:(e,t,n=``,r=`local`)=>v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/tree?path=${encodeURIComponent(n)}`,Li),workspaceFile:(e,t,n,r=`local`)=>v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/file?path=${encodeURIComponent(n)}`,zi),writeWorkspaceFile:(e,t,n,r,i,a=`local`)=>{let o=new URLSearchParams({path:n});i?.createDirs===!1&&o.set(`createDirs`,`false`),i?.overwrite===!1&&o.set(`overwrite`,`false`);let s=r instanceof Uint8Array,c=s?new Uint8Array(r):new TextEncoder().encode(r);return v(`${P(a)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/file?${o.toString()}`,Bi,{method:`PUT`,body:c,headers:{"Content-Type":s?`application/octet-stream`:`text/plain`}})},deleteWorkspaceFile:(e,t,n,r=`local`)=>{let i=new URLSearchParams({path:n});return v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/file?${i.toString()}`,Vi,{method:`DELETE`})},moveWorkspaceFile:(e,t,n,r,i,a=`local`)=>{let o=new URLSearchParams({fromPath:n,toPath:r});return i?.createDirs===!1&&o.set(`createDirs`,`false`),i?.overwrite===!0&&o.set(`overwrite`,`true`),v(`${P(a)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/file/move?${o.toString()}`,Hi,{method:`POST`})}},$o={sessions:(e,t=`local`)=>v(`${P(t)}/sessions?cwd=${encodeURIComponent(e)}`,j(Bn)),unreadCatalog:(e=`local`)=>v(`${P(e)}/sessions/unread`,xr,{cache:`no-store`}),statusCatalog:(e=`local`)=>v(`${P(e)}/sessions/statuses`,br,{cache:`no-store`}),interruptedRuns:(e=`local`)=>v(`${P(e)}/sessions/interrupted`,vo,{cache:`no-store`}),subsessions:(e,t=`local`)=>v(`${F(e,`subsessions`,t)}?cwd=${encodeURIComponent(e.cwd)}`,yo,{cache:`no-store`}),acknowledgeUnread:(e,t,n,r=`local`)=>{let i={cwd:e.cwd,catalogId:t,throughCompletionOrder:n};return v(F(e,`unread/acknowledge`,r),Sr,{method:`POST`,body:JSON.stringify(i)})},notificationInbox:(e,t=`local`)=>v(No(e,`notifications`,t),Br),dismissNotification:(e,t,n,r=`local`)=>v(F(e,`notifications/dismiss`,r),Vr,{method:`POST`,body:I(e,{daemonInstanceId:t,notificationId:n})}),dismissAllNotifications:(e,t,n,r=`local`)=>v(F(e,`notifications/dismiss-all`,r),Vr,{method:`POST`,body:I(e,{daemonInstanceId:t,throughOrder:n.order,throughOverflowWatermark:n.overflowWatermark})}),startSession:(e,t=`local`,n)=>v(`${P(t)}/sessions`,Bn,{method:`POST`,body:JSON.stringify(n===void 0?{cwd:e}:{cwd:e,startupToken:n})}),cleanupPreview:(e,t=`local`)=>v(`${P(t)}/sessions/cleanup/preview`,ri,{method:`POST`,body:JSON.stringify(e)}),cleanup:(e,t=`local`)=>v(`${P(t)}/sessions/cleanup`,ii,{method:`POST`,body:JSON.stringify(e)}),archiveMany:(e,t=`local`)=>v(`${P(t)}/sessions/bulk/archive`,ai,{method:`POST`,body:Fo(e)}),deleteArchivedMany:(e,t=`local`)=>v(`${P(t)}/sessions/bulk/delete-archived`,oi,{method:`POST`,body:Fo(e)}),messages:(e,t,n=`local`)=>v(Do(e,t,n),bn),status:(e,t=`local`)=>v(No(e,`status`,t),mr),streamSnapshot:(e,t=`local`)=>v(No(e,`stream-snapshot`,t),hr),streamSync:(e,t,n=`local`)=>v(`${F(e,`stream-snapshot`,n)}${Po(e)}&sinceSeq=${String(t)}`,gr),backgroundTasks:(e,t=`local`)=>v(`${F(e,`background-tasks`,t)}?cwd=${encodeURIComponent(e.cwd)}`,xo,{cache:`no-store`}),backgroundTaskOutput:(e,t,n=`local`)=>v(`${F(e,`background-tasks/${encodeURIComponent(t)}/output`,n)}?cwd=${encodeURIComponent(e.cwd)}`,So,{cache:`no-store`}),subagentRunOutput:(e,t,n=`local`)=>v(`${F(e,`subagent-runs/${encodeURIComponent(t)}/output`,n)}?cwd=${encodeURIComponent(e.cwd)}`,Co,{cache:`no-store`}),subagentRunMessages:(e,t,n,r=`local`)=>v(Oo(e,t,n,r),bn,{cache:`no-store`}),clearQueue:(e,t=`local`)=>v(F(e,`queue/clear`,t),mr,{method:`POST`,body:I(e)}),recallQueuedMessage:(e,t,n=`local`)=>v(F(e,`queue/clear`,n),bo,{method:`POST`,body:I(e,{text:t.text,kind:t.kind,...t.clientMessageId===void 0?{}:{clientMessageId:t.clientMessageId}})}),dismissWarning:(e,t,n=`local`)=>v(F(e,`warnings/dismiss`,n),mr,{method:`POST`,body:I(e,{dismissId:t})}),submitAsk:(e,t,n,r=`local`)=>v(F(e,`ask/submit`,r),tr,{method:`POST`,body:I(e,{askId:t,answers:n.answers})}),cancelAsk:(e,t,n=`local`)=>v(F(e,`ask/cancel`,n),tr,{method:`POST`,body:I(e,{askId:t})}),answerDialog:(e,t,n,r=`local`)=>v(F(e,`dialogs/answer`,r),nr,{method:`POST`,body:I(e,{dialogId:t,value:n})}),cancelDialog:(e,t,n=`local`)=>v(F(e,`dialogs/cancel`,n),nr,{method:`POST`,body:I(e,{dialogId:t})}),models:(e,t=`local`)=>v(No(e,`models`,t),hi),modelCatalog:(e,t=`local`)=>v(No(e,`models/catalog`,t),_i),setModelEnabled:(e,t,n,r,i=`local`)=>v(F(e,`models/enabled`,i),_i,{method:`POST`,body:I(e,{provider:t,modelId:n,enabled:r})}),setModel:(e,t,n,r=`local`)=>v(F(e,`model`,r),mr,{method:`POST`,body:I(e,{provider:t,modelId:n})}),cycleModel:(e,t,n=`local`)=>v(F(e,`model/cycle`,n),mr,{method:`POST`,body:I(e,{direction:t})}),thinkingLevels:(e,t=`local`)=>v(No(e,`thinking-levels`,t),yi),setThinkingLevel:(e,t,n=`local`)=>v(F(e,`thinking-level`,n),mr,{method:`POST`,body:I(e,{level:t})}),cycleThinkingLevel:(e,t=`local`)=>v(F(e,`thinking-level/cycle`,t),mr,{method:`POST`,body:I(e)}),commands:(e,t=`local`)=>v(No(e,`commands`,t),j(Fi)),prompt:(e,t,n,r=`local`,i,a)=>v(F(e,`prompt`,r),io,{method:`POST`,body:I(e,{text:t,...n===void 0?{}:{streamingBehavior:n},...i!==void 0&&i.length>0?{attachments:i}:{},...a===void 0?{}:{clientMessageId:a}})}),saveAttachments:(e,t,n=`local`,r)=>v(F(e,`attachments`,n),ao,{method:`POST`,body:I(e,{attachments:t,...r===void 0?{}:{folder:r}})}),shell:(e,t,n=`local`)=>v(F(e,`shell`,n),io,{method:`POST`,body:I(e,{text:t})}),runCommand:(e,t,n=`local`)=>v(F(e,`commands/run`,n),Ka,{method:`POST`,body:I(e,{text:t})}),respondToCommand:(e,t,n,r=`local`)=>v(F(e,`commands/respond`,r),Ka,{method:`POST`,body:I(e,{requestId:t,value:n})}),navigateTree:(e,t,n=`local`)=>v(F(e,`tree/navigate`,n),Xa,{method:`POST`,body:I(e,{targetId:t.targetId,expectedLeafId:t.expectedLeafId,summary:t.summary})}),forkTree:(e,t,n=`local`)=>ns(e,t,n),abort:(e,t=`local`)=>v(F(e,`abort`,t),co,{method:`POST`,body:I(e)}),stop:(e,t=`local`)=>v(F(e,`stop`,t),lo,{method:`POST`,body:I(e)}),archive:(e,t=`local`)=>v(F(e,`archive`,t),uo,{method:`POST`,body:I(e)}),archiveWithDescendants:(e,t=`local`)=>v(F(e,`archive-tree`,t),uo,{method:`POST`,body:I(e)}),restore:(e,t=`local`)=>v(F(e,`restore`,t),fo,{method:`POST`,body:I(e)}),detachParent:(e,t=`local`)=>v(F(e,`detach-parent`,t),po,{method:`POST`,body:I(e)}),reloadSession:(e,t=`local`)=>v(F(e,`reload`,t),mo,{method:`POST`,body:I(e)}),authProviders:e=>{let t=new URLSearchParams;e?.mode!==void 0&&t.set(`mode`,e.mode),e?.authType!==void 0&&t.set(`authType`,e.authType);let n=t.toString();return v(`${P(e?.machineId)}/auth/providers${n===``?``:`?${n}`}`,wi)},startInteractiveApiKeyLogin:(e,t=`local`)=>v(`${P(t)}/auth/api-key/interactive`,Ti,{method:`POST`,body:JSON.stringify({providerId:e})}),logoutProvider:(e,t=`local`)=>v(`${P(t)}/auth/logout`,io,{method:`POST`,body:JSON.stringify({providerId:e})}),startOAuthLogin:(e,t=`local`)=>v(`${P(t)}/auth/oauth`,Ti,{method:`POST`,body:JSON.stringify({providerId:e})}),oauthFlow:(e,t=`local`)=>v(`${P(t)}/auth/oauth/${encodeURIComponent(e)}`,Ti),respondOAuthFlow:(e,t,n,r=`local`)=>v(`${P(r)}/auth/oauth/${encodeURIComponent(e)}/respond`,Ti,{method:`POST`,body:JSON.stringify({requestId:t,value:n})}),cancelOAuthFlow:(e,t=`local`)=>v(`${P(t)}/auth/oauth/${encodeURIComponent(e)}/cancel`,Ti,{method:`POST`})},es={terminals:(e,t,n=`local`)=>v(`${P(n)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/terminals`,j(Gi)),startTerminal:(e,t,n,r=`local`)=>v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/terminals`,Gi,{method:`POST`,body:JSON.stringify(n??{})}),closeWorkspaceTerminals:(e,t,n=`local`)=>v(`${P(n)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/terminals`,so,{method:`DELETE`}),closeTerminal:(e,t,n,r=`local`)=>v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}`,so,{method:`DELETE`}),continueTerminal:(e,t,n,r=`local`)=>v(`${P(r)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}/continue`,Gi,{method:`POST`}),runTerminalCommand:(e,t,n=`local`)=>v(`${P(n)}/projects/${encodeURIComponent(t.workspace.projectId)}/workspaces/${encodeURIComponent(t.workspace.id)}/terminal-command-runs`,Ki,{method:`POST`,body:JSON.stringify({origin:e,title:t.title,command:t.command,metadata:t.metadata??{}})}),listCommandRuns:(e,t=`local`)=>v(`${P(t)}/terminal-command-runs${as(e)}`,j(Ki)),getCommandRun:(e,t=`local`)=>is(e,t),cancelCommandRun:(e,t=`local`)=>v(`${P(t)}/terminal-command-runs/${encodeURIComponent(e)}/cancel`,Ki,{method:`POST`})},ts=class extends Error{constructor(){super(`Fork from the session tree is unavailable. Restart the session daemon to enable it.`),this.name=`SessionTreeForkUnavailableError`}};async function ns(e,t,n){let r=await fetch(Ze(F(e,`tree/fork`,n)),{method:`POST`,headers:{"content-type":`application/json`},body:I(e,{entryId:t.entryId,expectedLeafId:t.expectedLeafId})});if(!r.ok){let e=await r.json().catch(()=>({}));throw rs(r.status,e)?new ts:Error(os(e)??r.statusText)}return Za(await r.json())}function rs(e,t){if(e!==404||!ss(t)||t.statusCode!==404||t.error!==`Not Found`)return!1;let n=t.message;return typeof n==`string`&&/^Route POST:.*\/tree\/fork not found$/i.test(n)}async function is(e,t){let n=await fetch(Ze(`${P(t)}/terminal-command-runs/${encodeURIComponent(e)}`));if(n.status!==404){if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(os(e)??n.statusText)}return Ki(await n.json())}}function as(e){if(e===void 0)return``;let t=new URLSearchParams;e.projectId!==void 0&&t.set(`projectId`,e.projectId),e.workspaceId!==void 0&&t.set(`workspaceId`,e.workspaceId),e.terminalId!==void 0&&t.set(`terminalId`,e.terminalId),e.statuses!==void 0&&e.statuses.length>0&&t.set(`statuses`,e.statuses.join(`,`)),e.metadata!==void 0&&Object.keys(e.metadata).length>0&&t.set(`metadata`,JSON.stringify(e.metadata));let n=t.toString();return n===``?``:`?${n}`}function os(e){if(!ss(e))return;let t=e.error;return typeof t==`string`?t:void 0}function ss(e){return typeof e==`object`&&!!e}var cs={files:(e,t)=>{let n=new URLSearchParams({q:e});return t.kind!==void 0&&n.set(`kind`,t.kind),t.mode!==void 0&&n.set(`mode`,t.mode),t.scope!==void 0&&n.set(`scope`,t.scope),v(`${P(t.machineId)}/projects/${encodeURIComponent(t.projectId)}/workspaces/${encodeURIComponent(t.workspaceId)}/files?${n.toString()}`,j(Ii))}},ls=(e,t,n)=>`${P(e)}/projects/${encodeURIComponent(t)}/workspaces/${encodeURIComponent(n)}/trust`,us=(e,t)=>{let n=new URLSearchParams({path:t});return`${P(e)}/projects/trust?${n.toString()}`},ds={projectTrust:(e,t=`local`)=>v(us(t,e),Wi),workspaceTrust:(e,t,n=`local`)=>v(ls(n,e,t),Wi),setWorkspaceTrust:(e,t,n,r=`local`)=>v(ls(r,e,t),Wi,{method:`PUT`,body:JSON.stringify({trusted:n})})},fs={...Ro,...zo,...Ho,...Wo,...Jo,...Xo,...Qo,...$o,...es,...cs,...ds},ps=256*1024,ms=8*1024*1024,hs=266240,gs=8392704,_s=/^[a-z][a-z0-9.-]*$/u,vs=64;function ys(e){return e.length<=128&&_s.test(e)}function bs(e){if(!ys(e))throw Error(`Plugin backend operation must match ${String(_s)} and be at most 128 characters`);return e}function xs(e){if(typeof e!=`string`||e===``||e.length>512)throw Error(`Plugin backend revision must be a non-empty string of at most 512 characters`);return e}function Ss(e,t,n=ps){let r=Ts(e,new Set,t,0);if(ws(JSON.stringify(r))>n)throw Error(`${t} exceeds the ${String(n)} byte limit`);return r}function Cs(e,t,n=ps){if(ws(e)>n)throw Error(`${t} exceeds the ${String(n)} byte limit`);let r;try{r=JSON.parse(e)}catch(e){throw Error(`${t} must be valid JSON`,{cause:e})}return Ss(r,t,n)}function ws(e){return new TextEncoder().encode(e).byteLength}function Ts(e,t,n,r){if(r>vs)throw Error(`${n} exceeds the maximum JSON depth of ${String(vs)}`);if(e===null||typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`){if(!Number.isFinite(e))throw Error(`${n} must contain only finite JSON numbers`);return e}if(Array.isArray(e)){if(t.has(e))throw Error(`${n} must not contain cycles`);t.add(e);let i=e.map(e=>Ts(e,t,n,r+1));return t.delete(e),Object.freeze(i),i}if(!Ds(e))throw Error(`${n} must contain only JSON values`);if(t.has(e))throw Error(`${n} must not contain cycles`);t.add(e);let i={};for(let[a,o]of Object.entries(e))Es(i,a,Ts(o,t,n,r+1));return t.delete(e),Object.freeze(i)}function Es(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})}function Ds(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Os(e,t){if(!mn(e.pluginId))throw Error(`Invalid PI WEB plugin id: ${e.pluginId}`);if(e.machineId===``)throw Error(`Machine id is required`);if(e.projectId===``)throw Error(`Project id is required`);if(e.workspaceId===``)throw Error(`Workspace id is required`);let n=bs(t);return`${e.machineId===`local`?`api`:`api/machines/${encodeURIComponent(e.machineId)}`}/plugin-backends/${encodeURIComponent(e.pluginId)}/projects/${encodeURIComponent(e.projectId)}/workspaces/${encodeURIComponent(e.workspaceId)}/${encodeURIComponent(n)}`}function ks(e,t,n){let r=Os(e,t);return n===void 0?Ze(r):Ze(r,n)}async function As(e,t,n){let r=xs(e.backendRevision),i=Ss(n,`Plugin backend request input`),a=JSON.stringify({revision:r,input:i});if(ws(a)>266240)throw Error(`Plugin backend request exceeds the ${String(hs)} byte wire limit`);let o;try{o=await fetch(ks(e,t),{method:`POST`,headers:{"content-type":`application/json`},body:a})}catch(e){throw Error(`Plugin backend request unavailable: ${y(e)}`,{cause:e})}let s=await js(o);if(!o.ok)throw Error(Ns(s)??`Plugin backend request returned HTTP ${String(o.status)}`);return Cs(s,`Plugin backend response`,ms)}async function js(e){let t=e.headers.get(`content-length`);if(t!==null&&/^\d+$/u.test(t)&&Number(t)>8392704)throw await e.body?.cancel(),Error(`Plugin backend response exceeds the ${String(gs)} byte wire limit`);if(e.body===null){let t=await e.text();if(ws(t)>8392704)throw Ms();return t}let n=e.body.getReader(),r=new TextDecoder,i=0,a=``;try{let e=await n.read();for(;!e.done;){if(i+=e.value.byteLength,i>8392704)throw await n.cancel(),Ms();a+=r.decode(e.value,{stream:!0}),e=await n.read()}return a+r.decode()}finally{n.releaseLock()}}function Ms(){return Error(`Plugin backend response exceeds the ${String(gs)} byte wire limit`)}function Ns(e){try{let t=JSON.parse(e);return Ps(t)&&typeof t.error==`string`?t.error:void 0}catch{return}}function Ps(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Fs(e,t=`local`){let n=`?${new URLSearchParams({cwd:e.cwd}).toString()}`;return new WebSocket(Qe(`${Rs(t)}/sessions/${encodeURIComponent(e.id)}/events${n}`))}function Is(e,t,n,r,i=`local`){let a=r===void 0?``:`?${new URLSearchParams({cols:String(r.cols),rows:String(r.rows)}).toString()}`;return new WebSocket(Qe(`${Rs(i)}/projects/${encodeURIComponent(e)}/workspaces/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}/socket${a}`))}function Ls(e=`local`){return new WebSocket(Qe(`${Rs(e)}/events`))}function Rs(e){return`api/machines/${encodeURIComponent(e)}`}var zs=`.pi-web/uploads`,Bs=class extends Error{constructor(e=`Workspace upload cancelled`){super(e),this.name=`WorkspaceUploadCancelledError`}},Vs=class extends Error{constructor(e,t){super(Qs(e)),this.name=`WorkspaceUploadBatchError`,this.failures=e.map(e=>({...e})),this.responses=t.map(e=>({...e}))}};function Hs(e){return e?.uploads?.defaultFolder??`.pi-web/uploads`}function Us(e,t){return e.uploads?.defaultFolder??t}function Ws(e,t){let n=ec(e,`upload destination`,{allowEmpty:!0}),r=ec(t,`upload file name`,{allowEmpty:!1});return n===``?r:`${n}/${r}`}function Gs(e,t,n,r={}){let i=r.xhrFactory?.()??new XMLHttpRequest,a=!1,o=!1;return{promise:new Promise((s,c)=>{let l=e=>{a||(a=!0,c(e))},u=e=>{a||(a=!0,s(e))};i.open(`PUT`,ko(e,t,n.path,Js(r)),!0),i.responseType=`json`,i.setRequestHeader(`Content-Type`,(n.contentType??n.file.type)||`application/octet-stream`),i.upload.onprogress=e=>{r.onProgress?.(Ys(e,n.file.size))},i.onload=()=>{if(i.status>=200&&i.status<300){try{r.onProgress?.({loaded:n.file.size,total:n.file.size,percent:1,lengthComputable:!0}),u(Bi(nc(i)))}catch(e){l(e instanceof Error?e:Error(String(e)))}return}l(Error(rc(i)))},i.onerror=()=>{l(Error(`Workspace upload failed`))},i.onabort=()=>{l(new Bs(o?void 0:`Workspace upload aborted`))},i.send(n.file)}),cancel:()=>{a||(o=!0,i.abort())}}}function Ks(e,t,n,r={}){let i=r.destinationFolder??`.pi-web/uploads`,a=n.map((e,t)=>({index:t,name:e.name,path:Ws(i,e.name),loaded:0,total:e.size,percent:Zs(0,e.size),lengthComputable:!0,done:!1})),o,s=0,c={requested:!1},l=()=>{r.onProgress?.(Xs(a,s,a.every(e=>e.done)))};return{promise:(async()=>{let i=[],u=[];for(let d=0;d<n.length;d+=1){if(c.requested)throw new Bs;s=d;let f=n[d],p=a[d];if(!(f===void 0||p===void 0)){o=Gs(e,t,{path:p.path,file:f},{...qs(r),onProgress:e=>{p.total=e.total,p.loaded=Math.min(e.loaded,p.total),p.percent=e.percent,p.lengthComputable=e.lengthComputable,l()}});try{let e=await o.promise;p.loaded=p.total,p.percent=1,p.lengthComputable=!0,p.done=!0,i.push(e),l()}catch(e){if($s(e,c))throw e;let t=y(e);p.loaded=p.total,p.percent=1,p.lengthComputable=!0,p.done=!0,p.error=t,u.push({index:d,name:f.name,path:p.path,error:t}),l()}finally{o=void 0}}}if(u.length>0)throw new Vs(u,i);return i})(),cancel:()=>{c.requested=!0,o?.cancel()}}}function qs(e){return{...e.createDirs===void 0?{}:{createDirs:e.createDirs},...e.overwrite===void 0?{}:{overwrite:e.overwrite},...e.machineId===void 0?{}:{machineId:e.machineId},...e.xhrFactory===void 0?{}:{xhrFactory:e.xhrFactory}}}function Js(e){return{...e.createDirs===void 0?{}:{createDirs:e.createDirs},...e.overwrite===void 0?{}:{overwrite:e.overwrite},...e.machineId===void 0?{}:{machineId:e.machineId}}}function Ys(e,t){let n=e.lengthComputable?e.total:t;return{loaded:e.loaded,total:n,percent:Zs(e.loaded,n),lengthComputable:e.lengthComputable}}function Xs(e,t,n){let r=e.reduce((e,t)=>e+t.total,0),i=e.reduce((e,t)=>e+t.loaded,0);return{currentFileIndex:t,files:e.map(e=>({...e})),loaded:i,total:r,percent:Zs(i,r),done:n}}function Zs(e,t){return t<=0?e<=0?0:1:Math.max(0,Math.min(1,e/t))}function Qs(e){return e.length===1?e[0]?.error??`Workspace upload failed`:`${String(e.length)} files failed to upload`}function $s(e,t){return t.requested||e instanceof Bs}function ec(e,t,n){let r=e.trim();if(r===``){if(n.allowEmpty)return``;throw Error(`${t} must not be empty`)}if(tc(r))throw Error(`${t} must be workspace-relative`);let i=r.split(/[\\/]+/u).filter(e=>e!==``&&e!==`.`);if(i.length===0){if(n.allowEmpty)return``;throw Error(`${t} must not be empty`)}if(i.some(e=>e===`..`))throw Error(`${t} must not contain path traversal`);return i.join(`/`)}function tc(e){let t=e.replace(/\\/g,`/`);return t.startsWith(`/`)||/^[A-Za-z]:\//u.test(t)}function nc(e){return e.response!==void 0&&e.response!==null&&e.response!==``?e.response:e.responseText===``?{}:JSON.parse(e.responseText)}function rc(e){let t=ic(e);return ac(t)&&typeof t.error==`string`?t.error:e.statusText||`HTTP ${String(e.status)}`}function ic(e){try{return nc(e)}catch{return}}function ac(e){return typeof e==`object`&&!!e}function oc(){let e=globalThis.crypto.randomUUID?.();return e===void 0?`cm-${String(Date.now())}-${Math.random().toString(36).slice(2,10)}`:e}function sc(e,t,n=[]){let r=n.filter(e=>e.kind===`image`).map(e=>({type:`image`,mimeType:e.mimeType,data:e.data}));return{role:`user`,parts:e===``?[...r]:[{type:`text`,text:e},...r],meta:{timestamp:new Date().toISOString(),delivery:{clientMessageId:t,state:`sending`}}}}function cc(e){return e===`delivered`}function lc(e){return e===`delivered`||e===`failed`}function uc(e){return!lc(e)}function dc(e,t){if(t.length===0)return{settled:[...e],pending:[]};let n=new Map,r=[];for(let t of e){let e=t.meta?.delivery;e!==void 0&&(n.set(e.clientMessageId,t),uc(e.state)&&r.push(t))}let i=[];for(let e of t){let t=(e.clientMessageId===void 0?void 0:n.get(e.clientMessageId))??r.find(t=>t.meta?.delivery?.kind===e.kind&&fc(t)===e.text);t!==void 0&&r.splice(r.indexOf(t),1),i.push(t??pc(e))}let a=new Set(i);return{settled:e.filter(e=>!a.has(e)),pending:i}}function fc(e){return e.parts.filter(e=>e.type===`text`).map(e=>e.text).join(``)}function pc(e){let t=e.clientMessageId??`queued:${e.kind}:${e.text}`;return{role:`user`,parts:[{type:`text`,text:e.text}],meta:{delivery:{clientMessageId:t,state:`queued`,kind:e.kind}}}}function mc(e,t){return e.findIndex(e=>e.meta?.delivery?.clientMessageId===t)}function hc(e,t,n,r){let i=mc(e,t);if(i===-1)return e;let a=e[i],o=a?.meta?.delivery;if(a===void 0||o===void 0||!vc(o.state,n)&&!gc(o.kind,r,o.state,n))return e;let s=[...e],c=vc(o.state,n)?n:o.state,l=r??o.kind;return s[i]={...a,meta:{...a.meta,delivery:{clientMessageId:t,state:c,...l===void 0?{}:{kind:l}}}},s}function gc(e,t,n,r){return t!==void 0&&t!==e&&n===`queued`&&r===`queued`}var _c={failed:-1,sending:0,received:1,queued:2,delivered:3};function vc(e,t){return e===t?!1:t===`failed`?e!==`delivered`:e!==`failed`&&_c[t]>_c[e]}function yc(e,t){let n=mc(e,t);if(n===-1)return[...e];let r=e[n];if(r?.meta?.delivery?.state!==`failed`)return[...e];let i=r.meta.delivery,a=[...e];return a[n]={...r,meta:{...r.meta,delivery:{clientMessageId:t,state:`sending`,...i.kind===void 0?{}:{kind:i.kind}}}},a}function bc(e,t){let n=mc(e,t);return n===-1?[...e]:[...e.slice(0,n),...e.slice(n+1)]}function xc(e,t){let n=e,r=new Map;for(let e of t)e.clientMessageId!==void 0&&r.set(e.clientMessageId,e.kind);for(let t of e){let e=t.meta?.delivery;if(e===void 0)continue;let i=r.get(e.clientMessageId);if(i!==void 0){n=hc(n,e.clientMessageId,`queued`,i);continue}(e.state===`received`||e.state===`queued`)&&(n=hc(n,e.clientMessageId,`delivered`))}return n}function Sc(e,t){return t!==void 0&&mc(e,t)!==-1}function Cc(e,t){let n=e.meta?.delivery;return n===void 0?t:{...t,meta:{...t.meta,delivery:{...n,state:n.state===`failed`?n.state:`delivered`}}}}function wc(e,t){return t===``?-1:e.findIndex(e=>e.role===`user`&&e.meta?.delivery!==void 0&&Tc(e)===t)}function Tc(e){return e.parts.filter(e=>e.type===`text`).map(e=>e.text).join(`
4
4
 
@@ -15,7 +15,7 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CodeViewer-B_rJKGwu.
15
15
  `)>e.lastIndexOf(`$ `)}function gd(e,t){if(t==null)return e;let n=Ec([t]);return n.length===0?e:[...e,...n]}function _d(e,t){if(t.type===`message.append`)return Ud(e,t.message,t.clientMessageId,t.echo===!0);if(t.type===`assistant.delta`)return Ac(e,`assistant`,t.text);if(t.type===`assistant.thinking.delta`)return jc(e,t.text);if(t.type===`tool.start`)return Cd(e,t);if(t.type===`tool.update`)return Od(e,t.toolCallId,e=>wd(e,t));if(t.type===`tool.end`)return Td(e,{toolCallId:t.toolCallId,toolName:t.toolName,text:t.text,isError:t.isError,content:t.content,details:t.details,presentation:Ad({role:`toolResult`,content:t.content})});if(t.type===`shell.start`)return[...e,fd(t.command,t.excludeFromContext)];if(t.type===`shell.chunk`)return pd(e,t.chunk);if(t.type===`shell.end`)return md(e,t);if(t.type===`command.output`)return[...e,Dc(t.level===`error`?`system`:`tool`,t.message)];if(t.type===`session.error`)return[...e,Dc(`system`,t.message)];if(t.type===`message.end`)return t.message===void 0?void 0:vd(e,t.message)}function vd(e,t){let n=jd(t);if(n!==void 0)return Td(e,n);let r=Mc(t);if(r.length===0)return;let i=r.map(e=>e.role===`assistant`?xd(e):e).filter(e=>e.parts.length>0);return i.length===0?e:i.reduce((e,t)=>yd(e,t),e)}function yd(e,t){let n=Nd(e,t);if(n.length>0)return Pd(e,n,t);let r=t.parts.find(e=>e.type===`askUserRecord`);if(r!==void 0)return bd(e,t,r);if(t.role===`user`){let n=wc(e,Hd(t)),r=n===-1?Gd(e,t):n;if(r!==-1){let n=e[r];if(n!==void 0)return[...e.slice(0,r),Cc(n,t),...e.slice(r+1)]}}if(t.role===`assistant`){let n=kc(e),r=e.slice(0,n),i=e.slice(n);return r.at(-1)?.role===`assistant`?[...r.slice(0,-1),t,...i]:[...r,t,...i]}let i=e.at(-1);return i?.role===t.role&&Vd(i,t)?[...e.slice(0,-1),t]:[...e,t]}function bd(e,t,n){for(let r=e.length-1;r>=0;r--)if(Dd(e[r],n))return[...e.slice(0,r),t,...e.slice(r+1)];return[...e,t]}function xd(e){return{...e,parts:e.parts.filter(e=>e.type!==`toolCall`)}}function Sd(e){if(e===void 0||e===``)return;let t=e.replace(/\\/g,`/`);if(!t.endsWith(`/SKILL.md`)&&t!==`SKILL.md`)return;let n=t.split(`/`).at(-2);if(!(n===void 0||n===``))return{name:n,path:e}}function Cd(e,t){let n=t.toolName===`read`?Sd(Qd(t.args,`path`)):void 0;if(n!==void 0)return Kd(e,{role:`skill`,parts:[{type:`skillRead`,...n,...t.toolCallId===``?{}:{toolCallId:t.toolCallId}}]});let r={type:`toolExecution`,...t.toolCallId===``?{}:{toolCallId:t.toolCallId},toolName:t.toolName,summary:t.summary||nl(t.args),...t.args===void 0?{}:{args:t.args},status:`running`};return[...e,{role:`tool`,parts:[r]}]}function wd(e,t){let n=el(t.details)??e.preview;return{...e,status:e.status===`pending`?`running`:e.status,...t.text===``?{}:{resultText:t.text},...t.content===void 0?{}:{content:t.content},...t.details===void 0?{}:{details:t.details},...n===void 0?{}:{preview:n}}}function Td(e,t){let{toolCallId:n,toolName:r,text:i,isError:a,content:o,details:s,presentation:c}=t,l=Od(e,n,e=>{let t=el(s)??e.preview;return{...e,status:a?`error`:`success`,resultText:i,...o===void 0?{}:{content:o},...s===void 0?{}:{details:s},...t===void 0?{}:{preview:t}}},e=>kd(e,c)),u=l;if(l===e){let t=el(s),l={type:`toolExecution`,...n===void 0||n===``?{}:{toolCallId:n},toolName:r,summary:nl(o),status:a?`error`:`success`,resultText:i,...o===void 0?{}:{content:o},...s===void 0?{}:{details:s},...t===void 0?{}:{preview:t}};u=[...e,kd({role:`tool`,parts:[l]},c)]}return Ed(u,r,s,c.meta)}function Ed(e,t,n,r){let i=qc(t,n);if(i===void 0)return e;for(let t=e.length-1;t>=0;t--){let n=e[t];if(Dd(n,i))return r===void 0||n===void 0?e:[...e.slice(0,t),{...n,meta:r},...e.slice(t+1)]}return[...e,{role:`tool`,parts:[i],...r===void 0?{}:{meta:r}}]}function Dd(e,t){return e?.parts.some(e=>e.type===`askUserRecord`&&e.outcome.askId===t.outcome.askId&&e.outcome.reason===t.outcome.reason)===!0}function Od(e,t,n,r=e=>e){if(t===void 0||t===``)return e;for(let i=e.length-1;i>=0;i--){let a=e[i];if(a===void 0)continue;let o=a.parts.findIndex(e=>e.type===`toolExecution`&&e.toolCallId===t);if(o<0)continue;let s=a.parts[o];if(s?.type!==`toolExecution`)continue;let c=r({...a,parts:[...a.parts.slice(0,o),n(s),...a.parts.slice(o+1)]});return[...e.slice(0,i),c,...e.slice(i+1)]}return e}function kd(e,t){let n={...e,parts:[...e.parts.filter(e=>e.type!==`image`),...t.images]};return t.meta===void 0?n:{...n,meta:t.meta}}function Ad(e){let t=Mc(e),n=t.flatMap(e=>e.parts.filter(e=>e.type===`image`)),r=t.find(e=>e.meta!==void 0)?.meta;return{images:n,...r===void 0?{}:{meta:r}}}function jd(e){if(Qd(e,`role`)!==`toolResult`)return;let t=Qd(e,`toolCallId`),n=Zd(e,`content`);return{...t===void 0?{}:{toolCallId:t},toolName:Qd(e,`toolName`)??`tool`,text:Md(n),isError:$d(e,`isError`)===!0,content:n,details:Zd(e,`details`),presentation:Ad(e)}}function Md(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(Md).filter(e=>e!==``).join(`
16
16
  `);if(typeof e==`object`&&e){let t=Qd(e,`text`)??Qd(e,`content`)??Qd(e,`output`);if(t!==void 0)return t}return``}function Nd(e,t){let n=Ld(t);if(n.length===0)return[];let r=[],i=n.length,a=Yd(e)+1;for(let t=e.length-1;t>=a;t--){let a=Ld(e[t]);if(a.length===0)continue;let o=i-a.length;if(!(o<0)&&Rd(a,n.slice(o,i))&&(r.unshift(t),i=o,i===0))return r}return[]}function Pd(e,t,n){let r=Fd(e,t,n),i=r[0];if(i===void 0)return e;let a=new Set(r),o=[];for(let t=0;t<e.length;t++){t===i&&o.push(n);let r=e[t];r!==void 0&&!a.has(t)&&o.push(r)}return o}function Fd(e,t,n){let r=t[0];if(n.role!==`assistant`||r===void 0)return t;let i=r-1;return Id(e[i])?[i,...t]:t}function Id(e){return e?.role===`assistant`&&e.parts.length>0&&e.parts.every(e=>e.type===`text`||e.type===`thinking`)}function Ld(e){return e===void 0?[]:e.parts.filter(e=>e.type===`skillRead`)}function Rd(e,t){return e.length===t.length&&e.every((e,n)=>zd(e,t[n]))}function zd(e,t){return t===void 0?!1:e.toolCallId!==void 0&&t.toolCallId!==void 0?e.toolCallId===t.toolCallId:Bd(e.path)===Bd(t.path)||e.name===t.name}function Bd(e){return e.replace(/\\/g,`/`)}function Vd(e,t){return Hd(e)===Hd(t)}function Hd(e){return e.parts.filter(e=>e.type===`text`).map(e=>e.text).join(`
17
17
 
18
- `)}function Ud(e,t,n,r=!1){let i=Mc(t);if(i.length===0)return e;if(r)return Wd(e,i,n);let a=ld({transcript:e,lines:i,clientMessageId:n});return a.kind===`ignore`?e:a.kind===`replace`?[...e.slice(0,a.at),a.line,...e.slice(a.at+1),...a.rest]:i.reduce((e,t)=>ud(e,t),e)}function Wd(e,t,n){if(Sc(e,n))return e;let r=t[0];if(r===void 0)return e;let i={...r,meta:{...r.meta,echo:!0}};return[...e,i,...t.slice(1)]}function Gd(e,t){if(t?.role!==`user`)return-1;let n=Hd(t);return n===``?-1:e.findIndex(e=>e.role===`user`&&e.meta?.echo===!0&&Hd(e)===n)}function Kd(e,t){let n=e.at(-1);return qd(e,t)?e:n?.role===t.role&&t.role!==`skill`?[...e.slice(0,-1),{...n,parts:[...n.parts,...t.parts]}]:[...e,t]}function qd(e,t){let n=Ld(t);if(t.role!==`skill`||n.length===0)return!1;let r=Yd(e)+1;return n.every(t=>Jd(e,t,r))}function Jd(e,t,n){for(let r=e.length-1;r>=n;r--)if(Ld(e[r]).some(e=>zd(e,t)))return!0;return!1}function Yd(e){for(let t=e.length-1;t>=0;t--)if(e[t]?.role===`user`)return t;return-1}function Xd(e){return typeof e==`object`&&!!e}function Zd(e,t){return Xd(e)?e[t]:void 0}function Qd(e,t){let n=Zd(e,t);return typeof n==`string`?n:void 0}function $d(e,t){let n=Zd(e,t);return typeof n==`boolean`?n:void 0}var ef=`pi-web:chat-history:v2:`,tf=1800*1e3;function nf(e){try{let t=sessionStorage.getItem(uf(e));if(t===null||t===``)return;let n=JSON.parse(t);if(!df(n))return;if(Date.now()-n.savedAt>tf){sessionStorage.removeItem(uf(e));return}return{messages:n.messages,start:n.start,total:n.total}}catch{return}}function rf(e,t){try{sessionStorage.setItem(uf(e),JSON.stringify({...t,savedAt:Date.now()}))}catch{}}function af(e){try{sessionStorage.removeItem(uf(e))}catch{}}function of(e,t){if(e===void 0||!ff(e))return t;if(!ff(t))return e;if(sf(e,t))return t;let n=Math.min(e.start,t.start),r=Math.max(e.start+e.messages.length,t.start+t.messages.length),i=Array(r-n);return lf(i,n,e),lf(i,n,t),cf(i)?t:{start:n,total:Math.max(e.total,t.total),messages:i}}function sf(e,t){return e.total>t.total&&e.start===0&&t.start===0&&t.messages.length===t.total}function cf(e){for(let t=0;t<e.length;t+=1)if(!(t in e)||e[t]===void 0)return!0;return!1}function lf(e,t,n){n.messages.forEach((r,i)=>{e[n.start-t+i]=r})}function uf(e){return`${ef}${e}`}function df(e){if(typeof e!=`object`||!e||!(`messages`in e)||!(`start`in e)||!(`total`in e)||!(`savedAt`in e))return!1;let{messages:t,start:n,total:r,savedAt:i}=e;return Array.isArray(t)&&typeof n==`number`&&typeof r==`number`&&typeof i==`number`&&ff({messages:t,start:n,total:r})}function ff(e){return Number.isInteger(e.start)&&Number.isInteger(e.total)&&e.start>=0&&e.total>=e.start&&e.messages.length<=e.total-e.start&&!e.messages.some(pf)}function pf(e){return typeof e==`object`&&!!e&&`role`in e&&`parts`in e&&!(`content`in e)&&typeof e.role==`string`&&Array.isArray(e.parts)}var mf={read:nf,write:rf,remove:af},hf=class{constructor(e=mf){this.cache=e,this.rawHistoryPages=new Map}cachedView(e){return gf(this.rawHistoryPage(e))}mergeHistory(e,t){let n=of(this.rawHistoryPage(e),t);return this.rawHistoryPages.set(e,n),this.cache.write(e,n),gf(n)}applyLiveEvent(e,t){return _d(e,t)}seedStreamingPartial(e,t){return gd(e,t)}discard(e){this.rawHistoryPages.delete(e),this.cache.remove?.(e)}rawHistoryPage(e){let t=this.rawHistoryPages.get(e)??this.cache.read(e);return t!==void 0&&this.rawHistoryPages.set(e,t),t}};function gf(e){let t=e?.start??0;return{messages:Ec(e?.messages??[]),messagePageStart:t,messagePageEnd:t+(e?.messages.length??0),messagePageTotal:e?.total??0}}var _f=`pi-web:pending-prompt:`;function vf(){try{return typeof localStorage>`u`?void 0:localStorage}catch{return}}function yf(e){return`${_f}${e}`}function bf(e){return typeof e==`object`&&!!e&&typeof Reflect.get(e,`text`)==`string`}function xf(e){return!!(e instanceof Sf||e instanceof TypeError&&/fetch|network|load failed|failed to fetch/i.test(e.message)||e instanceof Error&&/ECONNREFUSED|ENOTFOUND|socket hang up|network.*down/i.test(e.message))}var Sf=class extends Error{constructor(e,t,n){super(e,n),this.clientMessageId=t,this.name=`NetworkSendError`}};function Cf(e,t=vf()){try{let n=t?.getItem(yf(e));if(n==null||n===``)return[];let r=JSON.parse(n);return Array.isArray(r)?r.filter(bf):[]}catch{return[]}}function wf(e,t,n=vf()){try{let r=Cf(e,n),i=t.clientMessageId===void 0?-1:r.findIndex(e=>e.clientMessageId===t.clientMessageId);i===-1?r.push(t):r[i]=t,n?.setItem(yf(e),JSON.stringify(r))}catch{}}function Tf(e,t=vf()){try{t?.removeItem(yf(e))}catch{}}function Ef(e){return e.trim().toLowerCase().split(/\s+/u).filter(Boolean)}function Df(e,t){let n=Ef(t),r=e.toLowerCase();if(n.length===0)return 0;let i=0;for(let e of n){let t=r.indexOf(e);if(t!==-1){i+=100,t===0?i+=30:jf(r.charAt(t-1))&&(i+=20);continue}if(!kf(e,r))return;i+=25}return i}function Of(e,t,n){if(Ef(t).length===0)return[...e];let r=[];return e.forEach((e,i)=>{let a=Df(n(e),t);a!==void 0&&r.push({item:e,score:a,index:i})}),r.sort((e,t)=>t.score-e.score||e.index-t.index),r.map(e=>e.item)}function kf(e,t){if(e===``)return!0;if(t===``)return!1;let n=new Set([0]);for(let r of e){let e=new Set;for(let i of n)for(let n=i;n<t.length;n+=1)t.charAt(n)===r&&(n!==i&&!Af(t,n)||e.add(n+1));if(e.size===0)return!1;n=e}return!0}function Af(e,t){return t===0||jf(e.charAt(t-1))}function jf(e){return e===``||/[\s\-_/.:@]/u.test(e)}function Mf(e,t=e.length){let n=e.slice(0,t),r=Rf(n,t);if(r!==void 0)return r;let i=zf(n,t);if(i!==void 0)return i;let a=Math.max(n.lastIndexOf(` `),n.lastIndexOf(`
18
+ `)}function Ud(e,t,n,r=!1){let i=Mc(t);if(i.length===0)return e;if(r)return Wd(e,i,n);let a=ld({transcript:e,lines:i,clientMessageId:n});return a.kind===`ignore`?e:a.kind===`replace`?[...e.slice(0,a.at),a.line,...e.slice(a.at+1),...a.rest]:i.reduce((e,t)=>ud(e,t),e)}function Wd(e,t,n){if(Sc(e,n))return e;let r=t[0];if(r===void 0)return e;let i={...r,meta:{...r.meta,echo:!0}};return[...e,i,...t.slice(1)]}function Gd(e,t){if(t?.role!==`user`)return-1;let n=Hd(t);return n===``?-1:e.findIndex(e=>e.role===`user`&&e.meta?.echo===!0&&Hd(e)===n)}function Kd(e,t){let n=e.at(-1);return qd(e,t)?e:n?.role===t.role&&t.role!==`skill`?[...e.slice(0,-1),{...n,parts:[...n.parts,...t.parts]}]:[...e,t]}function qd(e,t){let n=Ld(t);if(t.role!==`skill`||n.length===0)return!1;let r=Yd(e)+1;return n.every(t=>Jd(e,t,r))}function Jd(e,t,n){for(let r=e.length-1;r>=n;r--)if(Ld(e[r]).some(e=>zd(e,t)))return!0;return!1}function Yd(e){for(let t=e.length-1;t>=0;t--)if(e[t]?.role===`user`)return t;return-1}function Xd(e){return typeof e==`object`&&!!e}function Zd(e,t){return Xd(e)?e[t]:void 0}function Qd(e,t){let n=Zd(e,t);return typeof n==`string`?n:void 0}function $d(e,t){let n=Zd(e,t);return typeof n==`boolean`?n:void 0}var ef=`pi-web:chat-history:v2:`,tf=1800*1e3;function nf(e){try{let t=sessionStorage.getItem(uf(e));if(t===null||t===``)return;let n=JSON.parse(t);if(!df(n))return;if(Date.now()-n.savedAt>tf){sessionStorage.removeItem(uf(e));return}return{messages:n.messages,start:n.start,total:n.total}}catch{return}}function rf(e,t){try{sessionStorage.setItem(uf(e),JSON.stringify({...t,savedAt:Date.now()}))}catch{}}function af(e){try{sessionStorage.removeItem(uf(e))}catch{}}function of(e,t){if(e===void 0||!ff(e))return t;if(!ff(t))return e;if(sf(e,t))return t;let n=Math.min(e.start,t.start),r=Math.max(e.start+e.messages.length,t.start+t.messages.length),i=Array(r-n);return lf(i,n,e),lf(i,n,t),cf(i)?t:{start:n,total:Math.max(e.total,t.total),messages:i}}function sf(e,t){return e.total>t.total&&e.start===0&&t.start===0&&t.messages.length===t.total}function cf(e){for(let t=0;t<e.length;t+=1)if(!(t in e)||e[t]===void 0)return!0;return!1}function lf(e,t,n){n.messages.forEach((r,i)=>{e[n.start-t+i]=r})}function uf(e){return`${ef}${e}`}function df(e){if(typeof e!=`object`||!e||!(`messages`in e)||!(`start`in e)||!(`total`in e)||!(`savedAt`in e))return!1;let{messages:t,start:n,total:r,savedAt:i}=e;return Array.isArray(t)&&typeof n==`number`&&typeof r==`number`&&typeof i==`number`&&ff({messages:t,start:n,total:r})}function ff(e){return Number.isInteger(e.start)&&Number.isInteger(e.total)&&e.start>=0&&e.total>=e.start&&e.messages.length<=e.total-e.start&&!e.messages.some(pf)}function pf(e){return typeof e==`object`&&!!e&&`role`in e&&`parts`in e&&!(`content`in e)&&typeof e.role==`string`&&Array.isArray(e.parts)}var mf={read:nf,write:rf,remove:af},hf=class{constructor(e=mf,t={}){this.cache=e,this.rawHistoryPages=new Map,this.maxInMemoryTranscripts=Math.max(1,t.maxInMemoryTranscripts??12)}cachedView(e){return gf(this.rawHistoryPage(e))}mergeHistory(e,t){let n=of(this.rawHistoryPage(e),t);return this.remember(e,n),this.cache.write(e,n),gf(n)}applyLiveEvent(e,t){return _d(e,t)}seedStreamingPartial(e,t){return gd(e,t)}discard(e){this.rawHistoryPages.delete(e),this.cache.remove?.(e)}rawHistoryPage(e){let t=this.rawHistoryPages.get(e);if(t!==void 0)return this.remember(e,t),t;let n=this.cache.read(e);return n!==void 0&&this.remember(e,n),n}remember(e,t){for(this.rawHistoryPages.delete(e),this.rawHistoryPages.set(e,t);this.rawHistoryPages.size>this.maxInMemoryTranscripts;){let e=this.rawHistoryPages.keys().next().value;if(e===void 0)return;this.rawHistoryPages.delete(e)}}};function gf(e){let t=e?.start??0;return{messages:Ec(e?.messages??[]),messagePageStart:t,messagePageEnd:t+(e?.messages.length??0),messagePageTotal:e?.total??0}}var _f=`pi-web:pending-prompt:`;function vf(){try{return typeof localStorage>`u`?void 0:localStorage}catch{return}}function yf(e){return`${_f}${e}`}function bf(e){return typeof e==`object`&&!!e&&typeof Reflect.get(e,`text`)==`string`}function xf(e){return!!(e instanceof Sf||e instanceof TypeError&&/fetch|network|load failed|failed to fetch/i.test(e.message)||e instanceof Error&&/ECONNREFUSED|ENOTFOUND|socket hang up|network.*down/i.test(e.message))}var Sf=class extends Error{constructor(e,t,n){super(e,n),this.clientMessageId=t,this.name=`NetworkSendError`}};function Cf(e,t=vf()){try{let n=t?.getItem(yf(e));if(n==null||n===``)return[];let r=JSON.parse(n);return Array.isArray(r)?r.filter(bf):[]}catch{return[]}}function wf(e,t,n=vf()){try{let r=Cf(e,n),i=t.clientMessageId===void 0?-1:r.findIndex(e=>e.clientMessageId===t.clientMessageId);i===-1?r.push(t):r[i]=t,n?.setItem(yf(e),JSON.stringify(r))}catch{}}function Tf(e,t=vf()){try{t?.removeItem(yf(e))}catch{}}function Ef(e){return e.trim().toLowerCase().split(/\s+/u).filter(Boolean)}function Df(e,t){let n=Ef(t),r=e.toLowerCase();if(n.length===0)return 0;let i=0;for(let e of n){let t=r.indexOf(e);if(t!==-1){i+=100,t===0?i+=30:jf(r.charAt(t-1))&&(i+=20);continue}if(!kf(e,r))return;i+=25}return i}function Of(e,t,n){if(Ef(t).length===0)return[...e];let r=[];return e.forEach((e,i)=>{let a=Df(n(e),t);a!==void 0&&r.push({item:e,score:a,index:i})}),r.sort((e,t)=>t.score-e.score||e.index-t.index),r.map(e=>e.item)}function kf(e,t){if(e===``)return!0;if(t===``)return!1;let n=new Set([0]);for(let r of e){let e=new Set;for(let i of n)for(let n=i;n<t.length;n+=1)t.charAt(n)===r&&(n!==i&&!Af(t,n)||e.add(n+1));if(e.size===0)return!1;n=e}return!0}function Af(e,t){return t===0||jf(e.charAt(t-1))}function jf(e){return e===``||/[\s\-_/.:@]/u.test(e)}function Mf(e,t=e.length){let n=e.slice(0,t),r=Rf(n,t);if(r!==void 0)return r;let i=zf(n,t);if(i!==void 0)return i;let a=Math.max(n.lastIndexOf(` `),n.lastIndexOf(`
19
19
  `))+1,o=n.slice(a);if(n.slice(0,a).endsWith(`@ `))return{kind:`file`,query:o,from:a-2,to:t,fileScope:`all`,allPrefix:`@ `};if(o.startsWith(`/`)&&a===0)return{kind:`command`,query:o.slice(1),from:a,to:t};if(o.startsWith(`!@`))return{kind:`file`,query:o.slice(2),from:a,to:t,fileScope:`all`,allPrefix:`!@`};if(o.startsWith(`@`))return{kind:`file`,query:o.slice(1),from:a,to:t,fileScope:`tracked`};if(o.startsWith(`#`))return{kind:`model`,query:o.slice(1),from:a,to:t}}var Nf=12;function Pf(e,t){return Of(e.filter(Ff),t,If).slice(0,Nf).map(e=>({insertText:`#${e.provider}/${e.id}`,detail:e.provider,...e.name!==void 0&&e.name!==``&&e.name!==e.id?{description:e.name}:{}}))}function Ff(e){return typeof e.provider==`string`&&e.provider!==``&&typeof e.id==`string`&&e.id!==``}function If(e){return`${e.provider}/${e.id} ${e.id}${e.name===void 0||e.name===``?``:` ${e.name}`}`}function Lf(e,t,n){let r=n??`@`;return!t&&!e.includes(` `)?`${r}${e}`:`${r}"${e}"`}function Rf(e,t){let n=e.lastIndexOf(`"`);if(n===-1)return;let r=e.slice(0,n);if(r.endsWith(`!@`))return{kind:`file`,query:e.slice(n+1),from:r.length-2,to:t,fileScope:`all`,allPrefix:`!@`,quoted:!0};if(r.endsWith(`@`))return{kind:`file`,query:e.slice(n+1),from:r.length-1,to:t,fileScope:`tracked`,quoted:!0};if(r.endsWith(`@ `))return{kind:`file`,query:e.slice(n+1),from:r.length-2,to:t,fileScope:`all`,allPrefix:`@ `,quoted:!0}}function zf(e,t){let n=e.lastIndexOf(`
20
20
  `)+1,r=e.slice(n),i=Bf(r,`@ `),a=Bf(r,`!@`),o=Math.max(i,a);if(o===-1)return;let s=o===a?`!@`:`@ `,c=n+o,l=c+s.length;return{kind:`file`,query:e.slice(l),from:c,to:t,fileScope:`all`,allPrefix:s}}function Bf(e,t){for(let n=e.lastIndexOf(t);n>=0;n=e.lastIndexOf(t,n-1))if(n===0||Vf(e[n-1]))return n;return-1}function Vf(e){return e===` `||e===` `}function Hf(e){let t=e.trimStart();if(t.startsWith(`!@`))return{kind:`file`};if(t.startsWith(`!`))return{kind:`shell`,excludeFromContext:t.startsWith(`!!`)};if(Gf(e).startsWith(`/`))return{kind:`command`};let n=Mf(e);return n?.kind===`file`?{kind:`file`}:n?.kind===`model`?{kind:`model`}:{kind:`normal`}}function Uf(e){return Hf(e).kind===`shell`}function Wf(e,t){return e.kind===t.kind?e.kind===`shell`&&t.kind===`shell`?e.excludeFromContext===t.excludeFromContext:!0:!1}function Gf(e){let t=Math.max(e.lastIndexOf(` `),e.lastIndexOf(`
21
21
  `))+1;return e.slice(t)}var Kf=5e4;function qf(e,t=Math.random){return Math.round(e*(.5+t()*.5))}var Jf=class{constructor(){this.seqMonitor=new tp(`session`),this.reconnectDelay=500,this.shouldReconnect=!1,this.hasOpened=!1,this.machineId=`local`,this.lastFrameAt=0}checkLiveness(e=Date.now()){let t=this.socket;t===void 0||!this.shouldReconnect||t.readyState===WebSocket.OPEN&&(this.lastFrameAt===0||e-this.lastFrameAt<Kf||ap(t))}get gapCount(){return this.seqMonitor.gapCount}connect(e,t,n,r=`local`,i,a,o){this.close(),this.machineId=r,this.session=e,this.onEvent=t,this.onReconnect=n,this.onInitialOpen=i,this.onMalformed=a,this.seqMonitor=new tp(`session`,o),this.shouldReconnect=!0,this.open()}setHandler(e){this.onEvent=e}close(){this.shouldReconnect=!1,window.clearTimeout(this.reconnectTimer),ap(this.socket),this.socket=void 0,this.session=void 0,this.onEvent=void 0,this.onReconnect=void 0,this.onInitialOpen=void 0,this.onMalformed=void 0,this.hasOpened=!1,this.machineId=`local`}open(){let e=this.session;if(e===void 0||e.id===``||e.cwd===``||!this.shouldReconnect)return;let t=Fs(e,this.machineId);this.socket=t,t.onopen=()=>{if(this.socket!==t)return;this.reconnectDelay=500,this.lastFrameAt=Date.now(),this.seqMonitor.reset();let e=this.hasOpened;this.hasOpened=!0,e?this.onReconnect?.():this.onInitialOpen?.()},t.onmessage=n=>void this.handleMessage(n.data,t,e),t.onerror=()=>{t.close()},t.onclose=()=>{this.socket===t&&(this.socket=void 0,this.scheduleReconnect())}}scheduleReconnect(){if(!this.shouldReconnect)return;window.clearTimeout(this.reconnectTimer);let e=qf(this.reconnectDelay);this.reconnectDelay=Math.min(this.reconnectDelay*1.6,5e3),this.reconnectTimer=window.setTimeout(()=>{this.open()},e)}reconnectNow(){!this.shouldReconnect||this.socket!==void 0||(window.clearTimeout(this.reconnectTimer),this.reconnectDelay=500,this.open())}async handleMessage(e,t,n){this.socket===t&&(this.lastFrameAt=Date.now());let r=await ip(e);this.seqMonitor.observe(r);let i=Qf(r);if(this.socket===t){if(i===void 0){let e=Zf(r);e!==void 0&&this.onMalformed?.(e);return}i.type===`notifications.inbox`&&(n.id!==i.summary.sessionId||n.cwd!==i.summary.cwd)||this.onEvent?.(i)}}},Yf=class{constructor(){this.seqMonitor=new tp(`global`),this.reconnectDelay=500,this.shouldReconnect=!1,this.machineId=`local`,this.lastFrameAt=0}checkLiveness(e=Date.now()){let t=this.socket;t===void 0||!this.shouldReconnect||t.readyState===WebSocket.OPEN&&(this.lastFrameAt===0||e-this.lastFrameAt<Kf||ap(t))}get gapCount(){return this.seqMonitor.gapCount}connect(e,t,n=`local`){this.close(),this.machineId=n,this.onEvent=e,this.onOpen=t,this.shouldReconnect=!0,this.open()}close(){this.shouldReconnect=!1,window.clearTimeout(this.reconnectTimer),ap(this.socket),this.socket=void 0,this.onEvent=void 0,this.onOpen=void 0,this.machineId=`local`}open(){if(!this.shouldReconnect)return;let e=Ls(this.machineId);this.socket=e,e.onopen=()=>{this.socket===e&&(this.reconnectDelay=500,this.lastFrameAt=Date.now(),this.seqMonitor.reset(),this.onOpen?.())},e.onmessage=t=>void this.handleMessage(t.data,e),e.onerror=()=>{e.close()},e.onclose=()=>{this.socket===e&&(this.socket=void 0,this.scheduleReconnect())}}scheduleReconnect(){if(!this.shouldReconnect)return;window.clearTimeout(this.reconnectTimer);let e=qf(this.reconnectDelay);this.reconnectDelay=Math.min(this.reconnectDelay*1.6,5e3),this.reconnectTimer=window.setTimeout(()=>{this.open()},e)}reconnectNow(){!this.shouldReconnect||this.socket!==void 0||(window.clearTimeout(this.reconnectTimer),this.reconnectDelay=500,this.open())}async handleMessage(e,t){this.socket===t&&(this.lastFrameAt=Date.now());let n=await ip(e);this.seqMonitor.observe(n);let r=$f(n);this.socket===t&&r!==void 0&&this.onEvent?.(r)}},Xf=new Set([`notifications.inbox`,`ask.opened`,`ask.closed`,`dialog.opened`,`dialog.closed`]);function Zf(e){let t=rp(e);return Xf.has(t)?t:void 0}function Qf(e){let t=rp(e);if(t===`notifications.inbox`)return np(()=>Hr(e));if(t===`ask.opened`)return np(()=>Yn(e));if(t===`ask.closed`)return np(()=>Xn(e));if(t===`dialog.opened`)return np(()=>ur(e));if(t===`dialog.closed`)return np(()=>dr(e));let n=np(()=>Or(e));return n===void 0?void 0:ep(n,e)}function $f(e){let t=rp(e);return np(t===`sessions.unread`?()=>Cr(e):t===`session.startup`?()=>wr(e):()=>kr(e))}function ep(e,t){if(typeof t!=`object`||!t||!(`seq`in t))return e;let n=t.seq;return typeof n==`number`?{...e,seq:n}:e}var tp=class{constructor(e,t){this.scope=e,this.onGap=t,this.gapEvents=0}get gapCount(){return this.gapEvents}reset(){this.lastSeen=void 0}observe(e){if(typeof e!=`object`||!e||!(`seq`in e))return;let t=e.seq;if(typeof t!=`number`||!Number.isFinite(t))return;let n=this.lastSeen;n!==void 0&&t<=n||(this.lastSeen=t,!(n===void 0||t===n+1)&&(this.gapEvents+=1,this.onGap?.(n),console.warn(`[pi-web] ${this.scope} scope lost frames: expected ${String(n+1)}, got ${String(t)} (${String(t-n-1)} missing)`)))}};function np(e){try{return e()}catch{return}}function rp(e){if(typeof e!=`object`||!e||!(`type`in e))return``;let t=e.type;return typeof t==`string`?t:``}async function ip(e){try{return typeof e==`string`?JSON.parse(e):e instanceof Blob?JSON.parse(await e.text()):e instanceof ArrayBuffer?JSON.parse(new TextDecoder().decode(e)):void 0}catch{return}}function ap(e){if(e!==void 0){if(e.onmessage=null,e.onerror=null,e.onclose=null,e.readyState===WebSocket.CONNECTING){e.onopen=()=>{e.close()};return}e.close()}}function op(e,t){if(e===void 0)return`unknown`;let n=(t?.sessionId===e.id?t.persisted:void 0)??e.persisted;return n===!0?`persisted`:n===!1||Su(e)?`transient`:`unknown`}function sp(e,t){return e!==void 0&&e.archived!==!0&&op(e,t)===`persisted`}function cp(e,t){return e!==void 0&&e.archived!==!0&&op(e,t)===`transient`}function lp(){try{return typeof sessionStorage>`u`?void 0:sessionStorage}catch{return}}var up=class{constructor(e,t,n=lp()){this.storageKey=e,this.storage=n,this.values=new Map;for(let[r,i]of fp(e,t,n))this.values.set(r,i)}get(e){return this.values.get(e)}set(e,t){this.values.set(e,t),this.save()}delete(e){this.values.delete(e),this.save()}entries(){return[...this.values.entries()]}save(){try{if(this.values.size===0){this.storage?.removeItem(this.storageKey);return}let e={version:1,entries:[...this.values.entries()]};this.storage?.setItem(this.storageKey,JSON.stringify(e))}catch{}}};function dp(e){return typeof e==`string`&&e!==``?e:void 0}function fp(e,t,n){try{let r=n?.getItem(e);if(r==null||r===``)return[];let i=JSON.parse(r);if(!pp(i))return[];let a=[];for(let e of i.entries){let n=e[0],r=t(e[1]);r!==void 0&&a.push([n,r])}return a}catch{return[]}}function pp(e){return!mp(e)||e.version!==1||!Array.isArray(e.entries)?!1:e.entries.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]==`string`&&e[0]!==``)}function mp(e){return typeof e==`object`&&!!e}var hp=class{constructor(){this.sessionIdsByCwd=new Map}latestSessionId(e){return this.sessionIdsByCwd.get(e)}rememberSession(e){this.sessionIdsByCwd.set(e.cwd,e.id)}forgetWorkspace(e){this.sessionIdsByCwd.delete(e)}},gp=`pi-web:session-selection:v1`,_p=class{constructor(e=lp()){this.sessionIdsByCwd=new up(gp,dp,e)}latestSessionId(e){return this.sessionIdsByCwd.get(e)}rememberSession(e){this.sessionIdsByCwd.set(e.cwd,e.id)}forgetWorkspace(e){this.sessionIdsByCwd.delete(e)}};function vp(e,t){let n=t?.targetSessionId;if(n!==void 0&&n!==``)return bp(e,n);let r=t?.latestSessionId;return r!==void 0&&r!==``?e.find(e=>e.id===r)??e.find(e=>e.archived!==!0):e.find(e=>e.archived!==!0)}function yp(e,t){return t?.archived===!0&&!e.some(e=>e.archived!==!0)}function bp(e,t){return e.find(e=>e.id===t||e.id.startsWith(t))}function xp(e,t,n){return Sp(e,[t],n)}function Sp(e,t,n){let r=new Set(t);return e.map(e=>r.has(e.id)?{...e,archived:!0,archivedAt:n}:e)}function Cp(e,t,n){return wp(e,t,[n])}function wp(e,t,n){if(t===void 0||!n.includes(t))return{type:`unchanged`};let r=new Set(n),i=e.find(e=>!r.has(e.id)&&e.archived!==!0);return i===void 0?{type:`clear`}:{type:`select`,session:i}}var Tp=100,Ep=100,Dp=class{constructor(e,t,n,r=new hp,i={}){this.getState=e,this.setState=t,this.updateUrl=n,this.sessionSelection=r,this.selectionSeq=0,this.disposed=!1,this.dialogScope=new lu({resync:()=>{this.refreshSelectedSession()}}),this.pendingTranscriptEvents=[],this.pendingStatusBySession=new Map,this.pendingActivityBySession=new Map,this.pendingSessionStartSeq=0,this.pendingQueuedSendSeq=0,this.pendingSessionStarts=new Map,this.suppressedCreatedSessions=new Map,this.selectedSessionRefreshes=new Jl,this.statusCatalogEpochs=new Map,this.socket=i.socket??new Jf,this.api=i.api??fs,this.transcripts=i.transcripts??new hf,this.notifications=i.notifications,this.replacePromptEditorText=i.replacePromptEditorText,this.onSelectedSessionReady=i.onSelectedSessionReady,this.onSelectedSessionIdle=i.onSelectedSessionIdle,this.onBackgroundRunCountChanged=i.onBackgroundRunCountChanged}applyGlobalEvent(e){e.type===`status.update`?this.queueStatusUpdate(e.status):e.type===`activity.update`?this.queueActivityUpdate(e.activity):e.type===`session.created`?this.applyCreatedSession(e.session):e.type===`session.name`?this.applySessionName(e.sessionId,e.name):e.type===`session.startup`&&this.queueStartupProgress(e)}dispose(){this.disposed=!0,this.selectionSeq+=1,this.socket.close(),this.clearPendingUpdates()}clearActiveSession(){this.selectionSeq+=1,this.socket.close(),this.notifications?.clearSelectedSession(),this.streamWatermark=void 0,this.clearPendingUpdates(),this.setState({selectedSession:void 0,messages:[],messagePageStart:0,messagePageEnd:0,messagePageTotal:0,isLoadingEarlierMessages:!1,status:void 0,activity:void 0,pendingAsk:void 0,pendingDialogs:[],closedDialogs:[],dismissedDialogIds:[],availableThinkingLevels:[],treeDialog:void 0})}deselectSession(e){let t=this.getState(),n=t.selectedSession?.cwd??t.selectedWorkspace?.path;e?.forgetRememberedSelection===!0&&n!==void 0&&this.sessionSelection.forgetWorkspace(this.workspaceSelectionKey(n)),this.clearActiveSession(),e?.updateUrl!==!1&&this.updateUrl()}clearSelectionAfterArchivedCollapse(){let e=this.getState();yp(e.sessions,e.selectedSession)&&this.deselectSession({forgetRememberedSelection:!0})}async startSession(){let e=this.getState().selectedWorkspace;if(!e)return;let t=R(this.getState()),n=this.createPendingSessionStart(e,t);this.pendingSessionStarts.set(n.tempId,n),this.insertAndSelectPendingSession(n.session);try{let r=await this.api.startSession(e.path,t,n.tempId);await this.resolvePendingSessionStart(n.tempId,r)}catch(e){this.failPendingSessionStart(n.tempId,e)}}preferredSession(e,t,n){return vp(t,{targetSessionId:n,latestSessionId:this.sessionSelection.latestSessionId(this.workspaceSelectionKey(e))})}async selectSession(e,t){if(this.disposed)return;if(Fp(e)){this.selectClientPendingStartSession(e,t);return}this.sessionSelection.rememberSession({...e,cwd:this.workspaceSelectionKey(e.cwd)});let n=++this.selectionSeq;this.socket.close(),this.streamWatermark=void 0,this.dialogScope=new lu({resync:()=>{this.refreshSelectedSession()}}),this.clearPendingUpdates();let r=R(this.getState());this.notifications?.prepareSelectedSession(e,r);let i=this.sessionCacheKey(e.id),a=this.transcripts.cachedView(i),o=this.getState(),s=fu(e,{workspaces:o.workspaces,projects:o.projects}),c=s!==void 0&&(s.workspace.id!==o.selectedWorkspace?.id||s.workspace.projectId!==o.selectedProject?.id);this.setState({selectedSession:e,...s===void 0?{}:{selectedWorkspace:s.workspace,selectedProject:s.project},...c?{sessions:[...Lu(r,s.workspace.path)??[]],sessionsLoad:`loading`}:{},...a,isLoadingEarlierMessages:!1,...t?.preserveTreeDialog===!0?{}:{treeDialog:void 0},status:e.archived===!0?void 0:this.getState().sessionStatuses[e.id],activity:e.archived===!0?void 0:this.getState().sessionActivities[e.id],pendingAsk:e.archived===!0?void 0:this.getState().sessionStatuses[e.id]?.pendingAsk,pendingDialogs:e.archived===!0?[]:this.getState().sessionStatuses[e.id]?.pendingDialogs??[],closedDialogs:[],dismissedDialogIds:[],availableThinkingLevels:[]}),c&&this.refreshCurrentWorkspaceSessions(r);let l;try{if(e.archived===!0){let a=await this.api.messages(e,{limit:Tp},R(this.getState()));if(n!==this.selectionSeq||this.getState().selectedSession?.id!==e.id)return;let o=this.transcripts.mergeHistory(i,a);this.setState({...o,isLoadingEarlierMessages:!1,status:void 0,activity:void 0,pendingAsk:void 0,pendingDialogs:[],closedDialogs:[],dismissedDialogIds:[]}),this.onSelectedSessionReady?.({machineId:r,session:e}),t?.updateUrl!==!1&&this.updateUrl();return}let a=[];if(l=a,this.gapRepair=new uu({apply:e=>{this.applyEvent(e)},request:async t=>{let n=await this.api.streamSync(e,t,r);if(n.kind!==`replay`)return{ok:!1};let i=[];for(let e of n.frames){let t;try{t=JSON.parse(e)}catch{continue}let n=Qf(t);n!==void 0&&i.push(n)}return{ok:!0,frames:i}},resync:()=>{this.refreshSelectedSession(e.id)}}),this.socket.connect(e,e=>a.push(e),()=>{this.refreshSelectedSession(e.id)},r,()=>{this.notifications?.refreshSelectedSession(e,r)},t=>{t===`notifications.inbox`?this.notifications?.refreshSelectedSession(e,r):this.dialogScope.requestResync()},e=>{this.gapRepair?.onGap(e)}),await this.requestSelectedSessionRefresh({session:e,machineId:r,selectionSeq:n}),!this.isCurrentRefreshTarget({session:e,machineId:r,selectionSeq:n}))return;this.refreshAvailableThinkingLevels();for(let e of a)this.applyEvent(e);this.socket.setHandler(e=>{this.routeLiveEvent(e)}),this.onSelectedSessionReady?.({machineId:r,session:e}),t?.updateUrl!==!1&&this.updateUrl()}catch(i){if(n!==this.selectionSeq||this.getState().selectedSession?.id!==e.id){if(t?.propagateRefreshError===!0&&this.isSelectedSessionIdentity(e.id,r))throw i;return}if(Su(e)&&Kp(i)){await this.recreateCachedNewSession(e,t);return}if(l!==void 0){for(let e of l)this.applyEvent(e);this.socket.setHandler(e=>{this.applyEvent(e)})}if(this.setState(b(i)),t?.propagateRefreshError===!0)throw i}}async loadEarlierMessages(){let e=this.getState(),t=e.selectedSession;if(!(!t||e.isLoadingEarlierMessages||e.messagePageStart<=0)){this.setState({isLoadingEarlierMessages:!0});try{let n=await this.api.messages(t,{before:e.messagePageStart,limit:Tp},R(this.getState()));if(this.getState().selectedSession?.id!==t.id)return;let r=this.transcripts.mergeHistory(this.sessionCacheKey(t.id),n);this.setState(r)}catch(e){this.setState(b(e))}finally{this.getState().selectedSession?.id===t.id&&this.setState({isLoadingEarlierMessages:!1})}}}async send(e,t,n,r=`inline`,i){let a=this.getState().selectedSession;if(!a||a.archived===!0)return!1;let o=e.trim(),s=n!==void 0&&n.length>0;return Fp(a)?(!s&&o.startsWith(`/`)?this.enqueuePendingSessionSend(a,{type:`command`,text:e}):!s&&Uf(e)?this.enqueuePendingSessionSend(a,{type:`shell`,text:e}):this.enqueuePendingSessionSend(a,{type:`prompt`,text:e,streamingBehavior:t,attachments:n,delivery:r}),!0):!s&&o.startsWith(`/`)?(await this.runCommand(e),!0):!s&&Uf(e)?(await this.runShell(e),!0):await this.deliverPromptToSession(a,e,t,n,r,R(this.getState()),{markSending:s,...i?.clientMessageId===void 0?{}:{replayClientMessageId:i.clientMessageId}})}markSendingPrompt(e,t){let n=this.getState().sendingPrompts;t?n[e]!==!0&&this.setState({sendingPrompts:{...n,[e]:!0}}):e in n&&this.setState({sendingPrompts:jp(n,e)})}async runShell(e){let t=this.getState().selectedSession;if(!(!t||t.archived===!0)){if(Fp(t)){this.enqueuePendingSessionSend(t,{type:`shell`,text:e});return}await this.deliverShellToSession(t,e,R(this.getState()),{optimisticLine:!0})}}async runCommand(e,t=`typed`){let n=this.getState().selectedSession;if(!n||n.archived===!0)return;let r=R(this.getState()),i=ru(this.getState().commandLedger,{sessionKey:ul(r,n.id),text:e,source:t,now:Date.now()});if(this.setState({commandLedger:i.entries}),Fp(n)){this.enqueuePendingSessionSend(n,{type:`command`,text:e}),this.settleLedgerRow(i.id,{state:`ok`,resultText:`Queued until the session starts.`});return}await this.deliverCommandToSession(n,e,r,{applyResult:!0,ledgerId:i.id})}settleLedgerRow(e,t){let n=Date.now();this.setState({commandLedger:iu(this.getState().commandLedger,e,{...t,now:n})})}dismissLedgerRow(e){this.setState({commandLedger:au(this.getState().commandLedger,e)})}enqueuePendingSessionSend(e,t){let n=this.pendingSessionStarts.get(e.id);if(n===void 0||n.discarded){this.setState({error:`The backend session is not ready for queued sends. Copy your message before discarding this failed start.`});return}let r={...t,id:`pending-send-${String(++this.pendingQueuedSendSeq)}`};n.queuedSends.push(r);let i=this.getState(),a=i.clientQueuedSessionMessages[e.id]??[],o=Lp(e.id,n.queuedSends.length);this.setState({clientQueuedSessionMessages:{...i.clientQueuedSessionMessages,[e.id]:[...a,zp(r)]},sessionActivities:{...i.sessionActivities,[e.id]:o},activity:i.selectedSession?.id===e.id?o:i.activity,error:``})}async flushQueuedPendingSends(e,t,n){for(let r of n){if(!await this.deliverQueuedPendingSend(e,t,r))return;this.dropNextQueuedSessionMessage(e.id)}}async deliverQueuedPendingSend(e,t,n){return n.type===`prompt`?this.deliverPromptToSession(e,n.text,n.streamingBehavior,n.attachments,n.delivery,t,{markSending:!0}):n.type===`shell`?this.deliverShellToSession(e,n.text,t,{optimisticLine:!0}):this.deliverCommandToSession(e,n.text,t,{applyResult:!0})}async deliverPromptToSession(e,t,n,r,i,a,o){let s=r!==void 0&&r.length>0;o.markSending&&this.markSendingPrompt(e.id,!0);let c=o.replayClientMessageId??this.beginTrackedSend(e,t,r??[]);o.replayClientMessageId!==void 0&&this.setState({messages:yc(this.getState().messages,o.replayClientMessageId)});try{if(s&&i===`folder`){let i=(await this.api.saveAttachments(e,r,a)).map(e=>Lf(e.path,!1)).join(` `),o=t===``?i:`${t}\n\n${i}`;await this.api.prompt(e,o,n,a,void 0,c)}else await this.api.prompt(e,t,n,a,r,c);return c!==void 0&&this.markDelivery(e.id,c,`received`),this.markCachedNewSessionPersisted(e),!0}catch(t){if(this.setState(b(t)),xf(t))throw c!==void 0&&this.markDelivery(e.id,c,`failed`),new Sf(String(t),c,{cause:t});return c!==void 0&&this.setState({messages:bc(this.getState().messages,c)}),!1}finally{o.markSending&&this.markSendingPrompt(e.id,!1)}}beginTrackedSend(e,t,n=[]){if(t.trim()===``&&n.length===0||this.getState().selectedSession?.id!==e.id)return;let r=oc();return this.setState({messages:[...this.getState().messages,sc(t,r,n)]}),r}async deliverShellToSession(e,t,n,r){r.optimisticLine&&this.getState().selectedSession?.id===e.id&&this.setState({messages:[...this.getState().messages,Dc(`user`,t)]});try{return await this.api.shell(e,t,n),this.markCachedNewSessionPersisted(e),!0}catch(t){return this.getState().selectedSession?.id===e.id&&this.setState({messages:[...this.getState().messages,Dc(`system`,y(t))]}),this.setState(b(t)),!1}}async deliverCommandToSession(e,t,n,r){this.markSendingPrompt(e.id,!0);try{let i=await this.api.runCommand(e,t,n);if(r.applyResult&&this.isSelectedSessionIdentity(e.id,n)?this.applyCommandResult(i):(i.type===`select`||i.type===`tree`)&&this.setState({error:`Queued command “${t}” needs input; open the session and run it again.`}),this.markCachedNewSessionPersisted(e),r.ledgerId!==void 0){let e=i.type===`done`&&i.message===void 0&&this.getState().status?.isStreaming===!0;this.settleLedgerRow(r.ledgerId,{state:`ok`,...e?{resultText:`accepted — waits for the running reply to finish`}:{}})}return!0}catch(t){return this.getState().selectedSession?.id===e.id&&this.setState({messages:[...this.getState().messages,Dc(`system`,y(t))]}),this.setState(b(t)),r.ledgerId!==void 0&&this.settleLedgerRow(r.ledgerId,{state:`failed`,resultText:y(t)}),!1}finally{this.markSendingPrompt(e.id,!1)}}dropNextQueuedSessionMessage(e){let t=this.getState(),n=t.clientQueuedSessionMessages[e]??[];if(n.length===0)return;let r=n.slice(1);this.setState({clientQueuedSessionMessages:r.length===0?jp(t.clientQueuedSessionMessages,e):{...t.clientQueuedSessionMessages,[e]:r}})}async respondToCommand(e,t){let n=this.getState().selectedSession;if(n){this.setState({commandDialog:void 0});try{this.applyCommandResult(await this.api.respondToCommand(n,e,t,R(this.getState())))}catch(e){this.setState(b(e))}}}cancelCommand(){this.setState({commandDialog:void 0})}async navigateTree(e,t){let n=this.getState(),r=n.selectedSession,i=n.treeDialog;if(r===void 0||i===void 0||r.archived===!0||Fp(r))throw Error(`The session tree navigator is no longer available`);let a=R(n),o=this.selectionSeq,s=ul(a,r.id),c;try{c=await this.api.navigateTree(r,{targetId:e,expectedLeafId:i.activeLeafId,summary:t},a)}catch(e){throw this.isCurrentSessionSelection(r.id,a,o)&&this.setState(b(e)),e}if(c.cancelled)return c;let l=c.editorText??``;if(Uu(s,l),this.transcripts.discard(s),!this.isSelectedSessionIdentity(r.id,a))return c;this.clearPendingUpdates();let u;try{await this.selectSession(r,{updateUrl:!1,preserveTreeDialog:!0,propagateRefreshError:!0})}catch(e){u={error:e}}if(!this.isSelectedSessionIdentity(r.id,a))return c;try{await this.replacePromptEditorText?.({machineId:a,sessionId:r.id,text:l})}catch(e){throw this.isSelectedSessionIdentity(r.id,a)&&this.setState(b(e)),e}if(u!==void 0)throw this.isSelectedSessionIdentity(r.id,a)&&this.setState(b(u.error)),u.error;return this.isSelectedSessionIdentity(r.id,a)&&this.getState().treeDialog===i&&this.setState({treeDialog:void 0}),c}async forkFromTree(e){let t=this.getState(),n=t.selectedSession,r=t.treeDialog;if(n===void 0||r===void 0||n.archived===!0||Fp(n))throw Error(`The session tree navigator is no longer available`);let i=R(t),a=this.selectionSeq,o=ul(i,n.id),s;try{s=await this.api.forkTree(n,{entryId:e,expectedLeafId:r.activeLeafId},i)}catch(e){throw this.isCurrentSessionSelection(n.id,i,a)&&this.setState(b(e)),e}if(s.cancelled)return s;let c=s.session;if(s.promptDraft!==void 0&&Uu(ul(i,c.id),s.promptDraft),this.transcripts.discard(o),!this.isSelectedSessionIdentity(n.id,i))return s;let l=[c,...this.getState().sessions.filter(e=>e.id!==c.id)];return this.setState({sessions:l,treeDialog:void 0}),this.selectSession(c),s}async abortTreeNavigation(){let e=this.getState(),t=e.selectedSession;if(t===void 0||e.treeDialog===void 0||Fp(t))return;let n=R(e),r=this.selectionSeq;try{await this.api.abort(t,n)}catch(e){throw this.isCurrentSessionSelection(t.id,n,r)&&this.setState(b(e)),e}}closeTreeDialog(){this.setState({treeDialog:void 0})}applySessionStatus(e){this.applyStatus(e)}async archiveSession(e=this.getState().selectedSession){if(!e)return;let t=this.statusForSession(e);if(cp(e,t)){await this.deleteCachedNewSession(e);return}if(sp(e,t))try{await this.api.archive(e,R(this.getState()));let t=this.getState(),n=xp(t.sessions,e.id,new Date().toISOString()),r=Cp(n,t.selectedSession?.id,e.id);this.setState({sessions:n}),r.type===`select`?await this.selectSession(r.session):r.type===`clear`&&this.deselectSession({forgetRememberedSelection:!0})}catch(e){this.setState(b(e))}}async archiveSessionWithDescendants(e=this.getState().selectedSession){if(!(e===void 0||!sp(e,this.statusForSession(e))))try{let t=await this.api.archiveWithDescendants(e,R(this.getState())),n=t.sessionIds!==void 0&&t.sessionIds.length>0?t.sessionIds:[e.id],r=this.getState(),i=Sp(r.sessions,n,new Date().toISOString()),a=wp(i,r.selectedSession?.id,n);this.setState({sessions:i}),a.type===`select`?await this.selectSession(a.session):a.type===`clear`&&this.deselectSession({forgetRememberedSelection:!0})}catch(e){this.setState(b(e))}}async archiveSessions(e){let t=Hp(e).filter(e=>sp(e,this.statusForSession(e)));if(t.length!==0)try{let e=R(this.getState()),{succeededIds:n,failures:r,generatedAt:i}=await this.archiveSessionBatch(t,e);if(n.length>0){let e=this.getState(),t=Sp(e.sessions,n,i??new Date().toISOString()),r=wp(t,e.selectedSession?.id,n);this.setState({sessions:t}),r.type===`select`?await this.selectSession(r.session):r.type===`clear`&&this.deselectSession({forgetRememberedSelection:!0})}this.applyBulkSessionFailures(`Archive`,r)}catch(e){this.setState({error:`Archive failed: ${y(e)}`})}}async deleteArchivedSessions(e){let t=Hp(e).filter(e=>e.archived===!0);if(t.length===0)return;let n=R(this.getState());try{let{succeededIds:e,failures:r}=await this.deleteArchivedSessionBatch(t,n);if(e.length>0){let t=new Set(e),n=this.getState(),r=n.sessions.filter(e=>!t.has(e.id));if(this.setState({sessions:r}),n.selectedSession!==void 0&&t.has(n.selectedSession.id)){let e=r.find(e=>e.archived!==!0)??r[0];e===void 0?this.deselectSession({forgetRememberedSelection:!0}):await this.selectSession(e)}}this.applyBulkSessionFailures(`Delete`,r)}catch(e){this.setState({error:`Delete failed: ${y(e)}`})}}async archiveSessionBatch(e,t){let n=await this.api.archiveMany(e,t);return{succeededIds:n.archivedSessionIds,failures:Up(n.failures),generatedAt:n.generatedAt}}async deleteArchivedSessionBatch(e,t){let n=await this.api.deleteArchivedMany(e,t);return{succeededIds:n.deletedSessionIds,failures:Up(n.failures)}}async applySessionCleanupResult(e,t=R(this.getState())){if(R(this.getState())!==t)return;let n=e.archivedSessionIds,r=e.deletedSessionIds;if(n.length>0||r.length>0){let t=this.getState(),i=new Set(r),a=[...n,...r],o=Sp(t.sessions,n,e.generatedAt).filter(e=>!i.has(e.id)),s=t.selectedSession!==void 0&&a.includes(t.selectedSession.id);if(this.setState({sessions:o,sessionStatuses:Mp(t.sessionStatuses,a),sessionActivities:Mp(t.sessionActivities,a),...s?{status:void 0,activity:void 0,pendingAsk:void 0,pendingDialogs:[],closedDialogs:[],dismissedDialogIds:[]}:{}}),t.selectedSession!==void 0&&i.has(t.selectedSession.id)){let e=o.find(e=>e.archived!==!0)??o[0];e===void 0?this.deselectSession({forgetRememberedSelection:!0}):await this.selectSession(e)}else{let e=wp(o,t.selectedSession?.id,n);e.type===`select`?await this.selectSession(e.session):e.type===`clear`&&this.deselectSession({forgetRememberedSelection:!0})}}await this.refreshCurrentWorkspaceSessions(t)}async refreshCurrentWorkspaceSessions(e=R(this.getState())){let t=this.getState().selectedWorkspace;if(t!==void 0)try{let n=xu(t.path,await this.api.sessions(t.path,e),e).filter(t=>!this.isSuppressedCreatedSession(t,e));if(R(this.getState())!==e||this.getState().selectedWorkspace?.id!==t.id)return;let r=this.mergePendingStartSessions(t.path,n,e),i=this.getState().selectedSession;if(Ru(e,t.path,r),this.setState({sessions:r,sessionsLoad:`loaded`}),i===void 0)return;let a=r.find(e=>e.id===i.id);if(a!==void 0){a!==i&&this.setState({selectedSession:a});return}if(!pu({refreshedWorkspacePath:t.path,selectedSessionCwd:i.cwd}))return;let o=r.find(e=>e.archived!==!0)??r[0];o===void 0?this.deselectSession({forgetRememberedSelection:!0}):await this.selectSession(o)}catch(n){R(this.getState())===e&&this.getState().selectedWorkspace?.id===t.id&&this.setState(b(n))}finally{this.hydrateSessionStatuses(e)}}async loadInterruptedRuns(e=R(this.getState())){try{let t=await this.api.interruptedRuns(e);return new Set(t.runs.map(e=>e.sessionId))}catch{return new Set}}async hydrateSessionStatuses(e=R(this.getState()),t){let n;try{n=await this.api.statusCatalog(e)}catch{return}if(R(this.getState())!==e)return;let r=this.getState(),i=t?.replaceKnown===!0,a=this.statusCatalogEpochs.get(e),o=n.daemonInstanceId!==void 0&&a!==n.daemonInstanceId;n.daemonInstanceId!==void 0&&this.statusCatalogEpochs.set(e,n.daemonInstanceId);let s=r.sessionStatuses,c=s;if(i||o){c={};for(let e of n.statuses)c[e.sessionId]=e;let e=r.selectedSession?.id;e!==void 0&&c[e]===void 0&&s[e]!==void 0&&(c[e]=s[e])}else for(let e of n.statuses)s[e.sessionId]===void 0&&(c={...c,[e.sessionId]:e});c!==s&&this.setState({sessionStatuses:c})}async deleteCachedNewSession(e=this.getState().selectedSession){if(e===void 0||!cp(e,this.statusForSession(e)))return;let t=Fp(e)?this.pendingSessionStarts.get(e.id):void 0;t===void 0?this.api.stop(e,R(this.getState())).catch(()=>{}):(t.discarded=!0,t.queuedSends=[]),bu(e.id,R(this.getState())),Wu(this.sessionCacheKey(e.id));let n=this.getState(),r=n.sessions.filter(t=>t.id!==e.id);if(this.setState({sessions:r,sessionStatuses:jp(n.sessionStatuses,e.id),sessionActivities:Ap(n.sessionActivities,e.id),sendingPrompts:jp(n.sendingPrompts,e.id),clientQueuedSessionMessages:jp(n.clientQueuedSessionMessages,e.id)}),this.getState().selectedSession?.id!==e.id)return;let i=r.find(e=>e.archived!==!0)??r[0];i===void 0?(this.clearActiveSession(),this.updateUrl()):await this.selectSession(i)}async restoreSession(e=this.getState().selectedSession){if(e)try{await this.api.restore(e,R(this.getState()));let t={...e};delete t.archived,delete t.archivedAt,this.replaceSession(t),this.getState().selectedSession?.id===t.id&&await this.selectSession(t)}catch(e){this.setState(b(e))}}async reloadSession(e=this.getState().selectedSession){if(e===void 0||!sp(e,this.statusForSession(e)))return;let t=R(this.getState());try{await this.api.reloadSession(e,t),this.transcripts.discard(this.sessionCacheKey(e.id)),this.getState().selectedSession?.id===e.id&&await this.selectSession(e,{updateUrl:!1})}catch(e){this.setState(b(e))}}async detachParent(e=this.getState().selectedSession){if(e?.parentSessionPath!==void 0)try{await this.api.detachParent(e,R(this.getState()));let t={...e};delete t.parentSessionPath,this.replaceSession(t)}catch(e){this.setState(b(e))}}async listModels(){let e=this.getState().selectedSession;if(!e||e.archived===!0)return[];try{return(await this.api.models(e,R(this.getState()))).models}catch(e){return this.setState(b(e)),[]}}async listModelCatalog(){let e=this.getState().selectedSession;if(!e||e.archived===!0)return[];try{return(await this.api.modelCatalog(e,R(this.getState()))).models}catch(e){return this.setState(b(e)),[]}}async setModelEnabled(e,t,n){let r=this.getState().selectedSession;if(!(!r||r.archived===!0))try{return(await this.api.setModelEnabled(r,e,t,n,R(this.getState()))).models}catch(e){this.setState(b(e));return}}async setModel(e,t){let n=this.getState().selectedSession;if(!(!n||n.archived===!0))try{this.applyStatus(await this.api.setModel(n,e,t,R(this.getState()))),await this.refreshAvailableThinkingLevels()}catch(e){this.setState(b(e))}}async cycleModel(e){let t=this.getState().selectedSession;if(!(!t||t.archived===!0))try{this.applyStatus(await this.api.cycleModel(t,e,R(this.getState()))),await this.refreshAvailableThinkingLevels()}catch(e){this.setState(b(e))}}async listThinkingLevels(){let e=this.getState().selectedSession;if(!e||e.archived===!0)return[];try{return(await this.api.thinkingLevels(e,R(this.getState()))).levels}catch(e){return this.setState(b(e)),[]}}async refreshAvailableThinkingLevels(){let e=this.getState().selectedSession;if(!e||e.archived===!0){this.getState().availableThinkingLevels.length>0&&this.setState({availableThinkingLevels:[]});return}let t=await this.listThinkingLevels();this.getState().selectedSession?.id===e.id&&this.setState({availableThinkingLevels:t})}async setThinkingLevel(e){let t=this.getState().selectedSession;if(!(!t||t.archived===!0))try{this.applyStatus(await this.api.setThinkingLevel(t,e,R(this.getState())))}catch(e){this.setState(b(e))}}async cycleThinkingLevel(){let e=this.getState().selectedSession;if(!(!e||e.archived===!0))try{this.applyStatus(await this.api.cycleThinkingLevel(e,R(this.getState())))}catch(e){this.setState(b(e))}}checkSocketLiveness(){this.socket.checkLiveness?.()}reconnectSocketNow(){this.socket.reconnectNow?.()}async clearServerQueue(){let e=this.getState(),t=e.selectedSession;if(t===void 0||t.archived===!0||Fp(t))return;let n=R(e),r=this.selectionSeq;try{let e=await this.api.clearQueue(t,n);this.isCurrentSessionSelection(t.id,n,r)&&this.applyStatus(e)}catch(e){this.isCurrentSessionSelection(t.id,n,r)&&this.setState(b(e))}}async recallQueuedMessage(e){let t=this.getState(),n=t.selectedSession;if(n===void 0||n.archived===!0||Fp(n))return!1;let r=R(t),i=this.selectionSeq;try{let{recalled:t,status:a}=await this.api.recallQueuedMessage(n,e,r);if(!this.isCurrentSessionSelection(n.id,r,i))return!1;let o=e.clientMessageId;return t&&o!==void 0&&this.setState({messages:bc(this.getState().messages,o)}),this.applyStatus(a),t}catch(e){return this.isCurrentSessionSelection(n.id,r,i)&&this.setState(b(e)),!1}}async openSubagentRunConversation(e){let t=this.getState(),n=t.selectedSession;if(n===void 0||Fp(n))return;let r=R(t);try{let t=await this.api.subagentRunMessages(n,e.runId,void 0,r);this.setState({activityConversation:ml(e,t)})}catch(t){if(at(t)){await this.openSubagentRunOutput(e);return}this.setState(b(t))}}async openSubagentRunOutput(e){let t=this.getState(),n=t.selectedSession;if(n===void 0||Fp(n))return;let r=R(t);try{let t=await this.api.subagentRunOutput(n,e.runId,r);this.setState({activityOutput:fl(`Subagent ${e.agent} (${e.runId.slice(0,8)})`,t)})}catch(t){if(at(t)){this.setState({activityOutput:fl(`Subagent ${e.agent} (${e.runId.slice(0,8)})`,``)});return}this.setState(b(t))}}async openBackgroundTaskOutput(e){let t=this.getState(),n=t.selectedSession;if(n===void 0||Fp(n))return;let r=R(t);try{let t=await this.api.backgroundTaskOutput(n,e.id,r);this.setState({activityOutput:fl(`Background task ${e.name} (${e.id})`,t)})}catch(e){this.setState(b(e))}}closeActivityOutput(){this.getState().activityOutput!==void 0&&this.setState({activityOutput:void 0})}closeActivityConversation(){this.getState().activityConversation!==void 0&&this.setState({activityConversation:void 0})}async dismissWarning(e){let t=this.getState(),n=t.selectedSession;if(n===void 0||Fp(n))return;let r=R(t),i=this.selectionSeq;try{let t=await this.api.dismissWarning(n,e,r);this.isCurrentSessionSelection(n.id,r,i)&&this.applyStatus(t)}catch(e){this.isCurrentSessionSelection(n.id,r,i)&&this.setState(b(e))}}submitAsk(e,t){return this.closeOpenAsk(e,(n,r)=>this.api.submitAsk(n,e,t,r))}cancelAsk(e){return this.closeOpenAsk(e,(t,n)=>this.api.cancelAsk(t,e,n))}answerDialog(e,t){return this.closeOpenDialog(e,(n,r)=>this.api.answerDialog(n,e,t,r))}cancelDialog(e){return this.closeOpenDialog(e,(t,n)=>this.api.cancelDialog(t,e,n))}async closeOpenDialog(e,t){let n=this.getState(),r=n.selectedSession;if(r===void 0||r.archived===!0)return;if(Fp(r)){await this.closePendingStartDialog(r,e,t);return}let i=R(n),a=this.selectionSeq;try{let e=await t(r,i);if(!this.isCurrentSessionSelection(r.id,i,a)){this.applyStatusToMap(e.sessionStatus);return}let n=e.outcome;if(n!==void 0){let e=this.getState().pendingDialogs.find(e=>e.dialogId===n.dialogId);e!==void 0&&this.recordClosedDialog({dialog:e,reason:n.reason,...n.answer===void 0?{}:{answer:n.answer}})}this.applyStatus(e.sessionStatus)}catch(e){this.isCurrentSessionSelection(r.id,i,a)&&this.setState(b(e))}}async closePendingStartDialog(e,t,n){let r=this.pendingSessionStarts.get(e.id),i=r?.backendSessionId;if(r===void 0||i===void 0)return;let a=this.selectionSeq;try{let t=await n({...e,id:i},r.machineId);if(a!==this.selectionSeq||this.getState().selectedSession?.id!==e.id)return;let o=t.outcome;if(o!==void 0){let e=this.getState().pendingDialogs.find(e=>e.dialogId===o.dialogId);e!==void 0&&this.recordClosedDialog({dialog:e,reason:o.reason,...o.answer===void 0?{}:{answer:o.answer}})}this.applyPendingStartStatus(r,t.sessionStatus)}catch(t){a===this.selectionSeq&&this.getState().selectedSession?.id===e.id&&this.setState(b(t))}}async closeOpenAsk(e,t){let n=this.getState(),r=n.selectedSession;if(r===void 0||r.archived===!0||Fp(r))return;let i=R(n),a=this.selectionSeq;try{let n=await t(r,i);$u(ul(i,r.id),e),this.isCurrentSessionSelection(r.id,i,a)?this.applyStatus(n.sessionStatus):this.applyStatusToMap(n.sessionStatus)}catch(e){this.isCurrentSessionSelection(r.id,i,a)&&this.setState(b(e))}}applyStatusToMap(e){let t=this.getState();this.setState({sessionStatuses:{...t.sessionStatuses,[e.sessionId]:e}})}async stopActiveWork(){let e=this.getState().selectedSession;if(!e)return[];try{let t=await this.api.abort(e,R(this.getState()));for(let e of t.discarded)e.clientMessageId!==void 0&&this.setState({messages:bc(this.getState().messages,e.clientMessageId)});return t.discarded}catch(e){return this.setState(b(e)),[]}}refreshSelectedSession(e=this.getState().selectedSession?.id){let t=this.getState().selectedSession;if(e===void 0||t?.id!==e||t.archived===!0||Fp(t))return Promise.resolve();let n={session:t,machineId:R(this.getState()),selectionSeq:this.selectionSeq};return this.requestSelectedSessionRefresh(n).catch(e=>{this.isCurrentRefreshTarget(n)&&this.setState(b(e))})}requestSelectedSessionRefresh(e){let t=ul(e.machineId,e.session.id);return this.selectedSessionRefreshes.request(t,async()=>{if(!this.isCurrentRefreshTarget(e))return;this.flushPendingUpdates();let[n,r,i]=await Promise.all([this.api.messages(e.session,{limit:Tp},e.machineId),this.api.status(e.session,e.machineId),this.api.streamSnapshot(e.session,e.machineId),this.notifications?.refreshSelectedSession(e.session,e.machineId)??Promise.resolve()]);if(!this.isCurrentRefreshTarget(e))return;let a=this.transcripts.mergeHistory(t,n),o=Pu(this.getState().messages,a.messages),s=this.transcripts.seedStreamingPartial(o,i.partial);this.streamWatermark={sessionId:e.session.id,seq:i.seq},this.setState({...a,messages:s,status:r,activity:this.getState().sessionActivities[e.session.id]}),this.applyStatus(r)})}isCurrentRefreshTarget(e){return this.isCurrentSessionSelection(e.session.id,e.machineId,e.selectionSeq)}isCurrentSessionSelection(e,t,n){return n===this.selectionSeq&&this.isSelectedSessionIdentity(e,t)}isSelectedSessionIdentity(e,t){if(this.disposed)return!1;let n=this.getState(),r=n.selectedSession;return R(n)===t&&r?.id===e&&r.archived!==!0&&!Fp(r)}applyBulkSessionFailures(e,t){t.length!==0&&this.setState({error:`${e} failed for ${String(t.length)} session${t.length===1?``:`s`}: ${t.join(`; `)}`})}sessionCacheKey(e){return ul(R(this.getState()),e)}statusForSession(e){if(e===void 0)return;let t=this.getState();return t.status?.sessionId===e.id&&t.selectedSession?.id===e.id?t.status:t.sessionStatuses[e.id]}workspaceSelectionKey(e){return`${R(this.getState())}:${e}`}replaceSession(e){let t=this.getState().selectedSession;this.setState({sessions:this.getState().sessions.map(t=>t.id===e.id?e:t),selectedSession:t?.id===e.id?e:t})}createPendingSessionStart(e,t){let n=`pending-session-${String(++this.pendingSessionStartSeq)}-${Date.now().toString(36)}`,r=new Date().toISOString(),i={id:n,path:`pi-web://pending-session/${n}`,cwd:e.path,persisted:!1,name:`New session`,created:r,modified:r,messageCount:0,firstMessage:``,clientPendingStart:!0,machineId:t};return{tempId:n,workspaceId:e.id,cwd:e.path,machineId:t,session:i,queuedSends:[],discarded:!1}}insertAndSelectPendingSession(e){let t=this.getState();this.selectClientPendingStartSession(e,{activity:Lp(e.id),sessions:[e,...t.sessions.filter(t=>t.id!==e.id)]})}selectClientPendingStartSession(e,t){this.sessionSelection.rememberSession({...e,cwd:this.workspaceSelectionKey(e.cwd)}),this.selectionSeq+=1,this.socket.close(),this.notifications?.clearSelectedSession(),this.streamWatermark=void 0,this.clearPendingUpdates();let n=this.getState(),r=this.pendingSessionStarts.get(e.id),i=t?.activity??n.sessionActivities[e.id]??(r===void 0?void 0:Lp(e.id,r.queuedSends.length));this.setState({...t?.sessions===void 0?{}:{sessions:t.sessions},selectedSession:e,messages:[],messagePageStart:0,messagePageEnd:0,messagePageTotal:0,isLoadingEarlierMessages:!1,status:void 0,activity:i,pendingAsk:void 0,pendingDialogs:[],closedDialogs:[],dismissedDialogIds:[],availableThinkingLevels:[],treeDialog:void 0,...i===void 0?{}:{sessionActivities:{...n.sessionActivities,[e.id]:i}},error:``}),r?.backendSessionId!==void 0&&this.connectPendingStartSocket(r),t?.updateUrl!==!1&&this.updateUrl()}async resolvePendingSessionStart(e,t){let n=this.pendingSessionStarts.get(e);if(n===void 0)return;this.pendingSessionStarts.delete(e);let r=n.queuedSends.splice(0),i=this.takeSuppressedCreatedSessionsFor(n.cwd,n.machineId,t.id);if(n.discarded){Wu(ul(n.machineId,e)),this.setState({clientQueuedSessionMessages:jp(this.getState().clientQueuedSessionMessages,e)}),this.applyReleasedCreatedSessions(i,n.machineId),this.api.stop(t,n.machineId).catch(()=>{});return}vu(t,n.machineId),Gu(ul(n.machineId,e),ul(n.machineId,t.id));let a=yu(t,n.machineId);if(!this.isCurrentPendingStart(n)){this.setState({clientQueuedSessionMessages:jp(this.getState().clientQueuedSessionMessages,e)}),await this.flushQueuedPendingSends(a,n.machineId,r);return}let o=this.getState(),s=o.selectedSession?.id===e;this.setState({sessions:Pp(o.sessions,e,a),sessionActivities:Ap(o.sessionActivities,e),sendingPrompts:Np(o.sendingPrompts,e,a.id),clientQueuedSessionMessages:Np(o.clientQueuedSessionMessages,e,a.id),...s?{selectedSession:a,status:o.sessionStatuses[a.id],activity:o.sessionActivities[a.id],pendingAsk:o.sessionStatuses[a.id]?.pendingAsk,pendingDialogs:o.sessionStatuses[a.id]?.pendingDialogs??[],closedDialogs:[],dismissedDialogIds:[]}:{},error:``}),this.applyReleasedCreatedSessions(i,n.machineId),s&&(this.updateUrl({replace:!0}),await this.selectSession(a,{updateUrl:!1})),await this.flushQueuedPendingSends(a,n.machineId,r)}failPendingSessionStart(e,t){let n=this.pendingSessionStarts.get(e);if(n===void 0)return;this.pendingSessionStarts.delete(e);let r=n.discarded;n.discarded=!0,this.getState().selectedSession?.id===e&&this.socket.close();let i=this.takeSuppressedCreatedSessionsFor(n.cwd,n.machineId),a=this.isCurrentPendingStart(n);if(r||!a){a&&this.applyReleasedCreatedSessions(i,n.machineId);return}let o=this.getState(),s=y(t),c=Rp(e,s,n.queuedSends.length),l=o.sessions.some(t=>t.id===e);this.setState({sessions:l?o.sessions:[n.session,...o.sessions],sessionActivities:{...o.sessionActivities,[e]:c},activity:o.selectedSession?.id===e?c:o.activity,...o.selectedSession?.id===e?{pendingDialogs:[]}:{},error:`Failed to start session: ${s}`}),this.applyReleasedCreatedSessions(i,n.machineId)}isCurrentPendingStart(e){let t=this.getState();return R(t)===e.machineId&&t.selectedWorkspace?.id===e.workspaceId}hasPendingStartFor(e,t){return Array.from(this.pendingSessionStarts.values()).some(n=>n.cwd===e&&n.machineId===t)}isSuppressedCreatedSession(e,t){let n=this.suppressedCreatedSessions.get(e.id);return n?.session.cwd===e.cwd&&n.machineId===t}takeSuppressedCreatedSessionsFor(e,t,n){if(n!==void 0&&this.suppressedCreatedSessions.delete(n),this.hasPendingStartFor(e,t))return[];let r=[];for(let[n,i]of this.suppressedCreatedSessions)i.session.cwd!==e||i.machineId!==t||(this.suppressedCreatedSessions.delete(n),r.push(i.session));return r}applyReleasedCreatedSessions(e,t){if(e.length===0||R(this.getState())!==t)return;let n=this.getState();if(n.selectedWorkspace===void 0)return;let r=new Set(n.sessions.map(e=>e.id)),i=e.filter(e=>e.cwd===n.selectedWorkspace?.path&&!r.has(e.id));i.length!==0&&this.setState({sessions:[...i.reverse(),...n.sessions]})}mergePendingStartSessions(e,t,n){let r=this.getState().sessions.filter(t=>Fp(t)&&t.cwd===e&&t.machineId===n);if(r.length===0)return t;let i=new Set(r.map(e=>e.id));return[...r,...t.filter(e=>!i.has(e.id))]}async recreateCachedNewSession(e,t){try{let n=R(this.getState()),r=await this.api.startSession(e.cwd,n);vu(r,n),Gu(this.sessionCacheKey(e.id),this.sessionCacheKey(r.id)),bu(e.id,n);let i=yu(r,n);this.setState({sessions:[i,...this.getState().sessions.filter(t=>t.id!==e.id)],error:``}),await this.selectSession(i,{updateUrl:!1}),this.updateUrl(t?.updateUrl===!1?{replace:!0}:void 0)}catch(e){this.setState(b(e))}}markCachedNewSessionPersisted(e){if(!Su(e))return;let t=this.getState().sessions.find(t=>t.id===e.id)??e;this.replaceSession(Cu(t))}applyCommandResult(e){if(e.type===`select`){this.setState({commandDialog:e});return}if(e.type===`tree`){this.setState({treeDialog:e.tree});return}let t=(e.type,e.message);if(t!==void 0&&t!==``&&this.setState({messages:[...this.getState().messages,Dc(e.type===`unsupported`?`system`:`tool`,t)]}),e.type===`done`&&e.session){e.promptDraft!==void 0&&Uu(this.sessionCacheKey(e.session.id),e.promptDraft);let t=this.getState().selectedSession,n=[e.session,...this.getState().sessions.filter(t=>t.id!==e.session?.id)];this.setState({sessions:n,selectedSession:t?.id===e.session.id?e.session:t}),t?.id!==e.session.id&&this.selectSession(e.session)}}applyCreatedSession(e){let t=this.getState();if(t.selectedWorkspace?.path!==e.cwd||t.sessions.some(t=>t.id===e.id))return;let n=R(t);if(this.hasPendingStartFor(e.cwd,n)){this.suppressedCreatedSessions.set(e.id,{session:e,machineId:n});return}this.setState({sessions:[e,...t.sessions]})}applyActivity(e){this.setState({sessionActivities:{...this.getState().sessionActivities,[e.sessionId]:e},activity:this.getState().selectedSession?.id===e.sessionId?e:this.getState().activity})}applyStatus(e){let t=this.getState(),n=t.selectedSession?.id===e.sessionId,r=n?xc(t.messages,e.queuedMessages):t.messages,i=t.sessionActivities[e.sessionId]?.phase===`active`&&!bl(e),a=n&&bl(t.status??e)&&!bl(e),o=t.sessionStatuses[e.sessionId]?.backgroundRunCount;e.backgroundRunCount!==void 0&&e.backgroundRunCount!==o&&this.onBackgroundRunCountChanged?.(e.sessionId),this.setState({sessionStatuses:{...t.sessionStatuses,[e.sessionId]:e},...Wp(t,e.sessionId,e.messageCount),...i?{sessionActivities:Ap(t.sessionActivities,e.sessionId)}:{},status:n?e:t.status,activity:n&&i?void 0:t.activity,...n?{pendingAsk:e.pendingAsk}:{},...n?{pendingDialogs:kp(e.pendingDialogs,t.dismissedDialogIds)}:{},...r===t.messages?{}:{messages:r}}),n&&e.pendingDialogsRevision!==void 0&&this.dialogScope.markFresh(e.pendingDialogsRevision,e.daemonInstanceId),a&&this.onSelectedSessionIdle?.()}markDelivery(e,t,n){let r=this.getState();if(r.selectedSession?.id!==e)return;let i=hc(r.messages,t,n);i!==r.messages&&this.setState({messages:i})}applyOpenedDialog(e){let t=this.getState();t.selectedSession!==void 0&&(t.pendingDialogs.some(t=>t.dialogId===e.dialogId)||this.setState({pendingDialogs:[...t.pendingDialogs,e],...t.dismissedDialogIds.some(t=>t===e.dialogId)?{dismissedDialogIds:t.dismissedDialogIds.filter(t=>t!==e.dialogId)}:{}}))}applyClosedDialog(e,t,n){let r=this.getState().pendingDialogs.find(t=>t.dialogId===e);r!==void 0&&this.recordClosedDialog({dialog:r,reason:t,...n===void 0?{}:{answer:n}})}recordClosedDialog(e){let t=this.getState();if(t.closedDialogs.some(t=>t.dialog.dialogId===e.dialog.dialogId))return;let n=t.selectedSession?.id;this.setState({pendingDialogs:t.pendingDialogs.filter(t=>t.dialogId!==e.dialog.dialogId),...Op(e)?{closedDialogs:[...t.closedDialogs,e]}:{dismissedDialogIds:[...t.dismissedDialogIds,e.dialog.dialogId]}}),this.patchSessionStatus(n,t=>t.pendingDialogs===void 0||!t.pendingDialogs.some(t=>t.dialogId===e.dialog.dialogId)?t:{...t,pendingDialogs:t.pendingDialogs.filter(t=>t.dialogId!==e.dialog.dialogId)})}dismissClosedDialog(e){let t=this.getState();t.closedDialogs.some(t=>t.dialog.dialogId===e)&&this.setState({closedDialogs:t.closedDialogs.filter(t=>t.dialog.dialogId!==e),dismissedDialogIds:[...t.dismissedDialogIds,e]})}applyOpenedAsk(e){this.getState().selectedSession!==void 0&&this.setState({pendingAsk:e})}applyClosedAsk(e){let t=this.getState();if(t.pendingAsk?.askId!==e)return;let n=t.selectedSession?.id;this.setState({pendingAsk:void 0}),this.patchSessionStatus(n,e=>{if(e.pendingAsk===void 0)return e;let t={...e};return delete t.pendingAsk,t})}patchSessionStatus(e,t){if(e===void 0)return;let n=this.getState(),r=n.sessionStatuses[e];if(r===void 0)return;let i=t(r);i!==r&&this.setState({sessionStatuses:{...n.sessionStatuses,[e]:i}})}async renameSession(e,t,n=R(this.getState())){let r=t.trim();if(r===``)return;let i=e.name;this.applySessionName(e.id,r);try{await this.api.runCommand({id:e.id,cwd:e.cwd},`/name ${r}`,n)}catch(t){this.applySessionName(e.id,i),this.setState(b(t))}}applySessionName(e,t){let n=n=>{if(n.id!==e)return n;let r={...n};return t===void 0||t===``?delete r.name:r.name=t,r},r=this.getState().selectedSession;this.setState({sessions:this.getState().sessions.map(n),selectedSession:r===void 0?void 0:n(r)})}routeLiveEvent(e){let t=Reflect.get(e,`seq`);this.gapRepair?.onLiveFrame(e,typeof t==`number`?t:void 0)}applyEvent(e){if(e.type===`notifications.inbox`){this.notifications?.applyInboxEvent(R(this.getState()),e);return}if(this.isStreamEventBelowWatermark(e))return;if(e.type===`status.update`){this.queueStatusUpdate(e.status);return}if(e.type===`activity.update`){this.queueActivityUpdate(e.activity);return}if(Gp(e)){this.queueTranscriptEvent(e);return}if(this.flushPendingUpdates(),e.type===`ask.opened`){this.dialogScope.observe(e,()=>{this.applyOpenedAsk(e.ask)});return}if(e.type===`prompt.accepted`){let t=this.getState().selectedSession;t!==void 0&&this.markDelivery(t.id,e.clientMessageId,`queued`);return}if(e.type===`ask.closed`){this.dialogScope.observe(e,()=>{this.applyClosedAsk(e.askId)});return}if(e.type===`dialog.opened`){this.dialogScope.observe(e,()=>{this.applyOpenedDialog(e.dialog)});return}if(e.type===`dialog.closed`){this.dialogScope.observe(e,()=>{this.applyClosedDialog(e.dialogId,e.reason,e.answer)});return}let t=this.transcripts.applyLiveEvent(this.getState().messages,e);t?this.setState({messages:t}):e.type===`session.name`&&this.applySessionName(e.sessionId,e.name)}queueTranscriptEvent(e){this.pendingTranscriptEvents.push(e),this.schedulePendingFlush()}queueStatusUpdate(e){this.pendingStatusBySession.set(e.sessionId,e),this.schedulePendingFlush()}queueActivityUpdate(e){this.pendingActivityBySession.set(e.sessionId,e),this.schedulePendingFlush()}queueStartupProgress(e){if(this.getState().sessions.some(t=>t.id===e.activity.sessionId)){this.queueActivityUpdate(e.activity);return}let t=e.startupToken===void 0?void 0:this.pendingSessionStarts.get(e.startupToken);t===void 0||t.discarded||(this.learnPendingStartBackendSession(t,e.activity.sessionId),this.queueActivityUpdate(e.activity.phase===`idle`?Lp(t.tempId,t.queuedSends.length):Ip(e.activity,t.tempId)))}learnPendingStartBackendSession(e,t){t===``||e.backendSessionId!==void 0||(e.backendSessionId=t,this.getState().selectedSession?.id===e.tempId&&this.connectPendingStartSocket(e))}connectPendingStartSocket(e){let t=e.backendSessionId;if(t===void 0||e.discarded)return;let n={id:t,cwd:e.cwd};this.socket.connect(n,t=>{this.applyPendingStartEvent(e,t)},()=>{this.resyncPendingStartDialogs(e)},e.machineId),this.resyncPendingStartDialogs(e)}resyncPendingStartDialogs(e){let t=e.backendSessionId;t!==void 0&&this.api.status({id:t,cwd:e.cwd},e.machineId).then(t=>{if(e.discarded||this.getState().selectedSession?.id!==e.tempId)return;this.applyStatus(t);let n=this.getState(),r=new Set([...n.pendingDialogs.map(e=>e.dialogId),...n.closedDialogs.map(e=>e.dialog.dialogId)]),i=(t.pendingDialogs??[]).filter(e=>!r.has(e.dialogId));i.length>0&&this.setState({pendingDialogs:[...n.pendingDialogs,...i]})},()=>void 0)}applyPendingStartEvent(e,t){if(!(e.discarded||this.getState().selectedSession?.id!==e.tempId)){if(t.type===`dialog.opened`){this.applyOpenedDialog(t.dialog);return}if(t.type===`dialog.closed`){this.applyClosedDialog(t.dialogId,t.reason,t.answer);return}t.type===`status.update`&&this.applyPendingStartStatus(e,t.status)}}applyPendingStartStatus(e,t){this.applyStatus(t),!(e.discarded||this.getState().selectedSession?.id!==e.tempId)&&this.setState({pendingDialogs:t.pendingDialogs??[]})}schedulePendingFlush(){this.pendingFrame??=requestAnimationFrame(()=>{this.pendingFrame=void 0,this.flushPendingUpdates()}),this.pendingFlushTimer??=setTimeout(()=>{this.pendingFlushTimer=void 0,this.flushPendingUpdates()},Ep)}cancelScheduledFlush(){this.pendingFrame!==void 0&&(cancelAnimationFrame(this.pendingFrame),this.pendingFrame=void 0),this.pendingFlushTimer!==void 0&&(clearTimeout(this.pendingFlushTimer),this.pendingFlushTimer=void 0)}flushPendingUpdates(){if(this.cancelScheduledFlush(),this.pendingTranscriptEvents.length>0){let e=this.pendingTranscriptEvents;this.pendingTranscriptEvents=[];let t=this.getState().messages;for(let n of e)t=this.transcripts.applyLiveEvent(t,n)??t;t!==this.getState().messages&&this.setState({messages:t})}if(this.pendingActivityBySession.size>0){let e=Array.from(this.pendingActivityBySession.values());this.pendingActivityBySession.clear();for(let t of e)this.applyActivity(t)}if(this.pendingStatusBySession.size>0){let e=Array.from(this.pendingStatusBySession.values());this.pendingStatusBySession.clear();for(let t of e)this.applyStatus(t)}}clearPendingUpdates(){this.pendingTranscriptEvents=[],this.pendingStatusBySession.clear(),this.pendingActivityBySession.clear(),this.cancelScheduledFlush()}isStreamEventBelowWatermark(e){let t=this.streamWatermark;return t===void 0||t.sessionId!==this.getState().selectedSession?.id?!1:e.seq!==void 0&&e.seq<=t.seq}};function Op(e){return e.reason===`answered`?!1:e.reason!==`timeout`||e.dialog.runScoped}function kp(e,t){let n=e??[];if(t.length===0)return[...n];let r=new Set(t);return n.filter(e=>!r.has(e.dialogId))}function Ap(e,t){return jp(e,t)}function jp(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))}function Mp(e,t){if(t.length===0)return e;let n=new Set(t);return Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)))}function Np(e,t,n){if(t===n||!(t in e))return e;let r=e[t];return r===void 0?e:{...jp(e,t),[n]:r}}function Pp(e,t,n){let r=[],i=!1;for(let a of e){if(a.id===t){i||=(r.push(n),!0);continue}a.id!==n.id&&r.push(a)}return i?r:[n,...r]}function Fp(e){return e!==void 0&&`clientPendingStart`in e&&e.clientPendingStart===!0}function Ip(e,t){return{sessionId:t,phase:e.phase,label:e.label,...e.detail===void 0?{}:{detail:e.detail},at:e.at}}function Lp(e,t=0){return{sessionId:e,phase:`active`,label:`Creating session`,detail:t>0?`${String(t)} queued ${t===1?`message`:`messages`} will send when the backend session is ready`:`Waiting for the backend session to be ready`,at:new Date().toISOString()}}function Rp(e,t,n=0){return{sessionId:e,phase:`error`,label:`Session creation failed`,detail:`${t}${n>0?` · ${String(n)} queued ${n===1?`message`:`messages`} kept below`:``}`,at:new Date().toISOString()}}function zp(e){return e.type===`prompt`?{kind:e.streamingBehavior===`steer`?`steer`:`followUp`,text:Bp(e.text,e.attachments)}:{kind:`followUp`,text:e.text}}function Bp(e,t){let n=Vp(t);return n===void 0?e:e.trim()===``?n:`${e}\n\n${n}`}function Vp(e){if(e===void 0||e.length===0)return;let t=e.map(e=>e.name?.trim()).filter(e=>e!==void 0&&e!==``),n=e.length,r=`${String(n)} ${n===1?`attachment`:`attachments`}`;return t.length===0?`[${r} queued]`:`[${r} queued: ${t.slice(0,3).join(`, `)}${t.length>3?`, +${String(t.length-3)} more`:``}]`}function Hp(e){let t=new Set,n=[];for(let r of e)t.has(r.id)||(t.add(r.id),n.push(r));return n}function Up(e){return e.map(e=>`${e.sessionId}: ${e.error}`)}function Wp(e,t,n){if(n===void 0)return{};let r=e.sessions.some(e=>e.id===t&&e.messageCount!==n)?e.sessions.map(e=>e.id===t?{...e,messageCount:n}:e):void 0,i=e.selectedSession?.id===t&&e.selectedSession.messageCount!==n?{...e.selectedSession,messageCount:n}:e.selectedSession;return{...r===void 0?{}:{sessions:r},...i===e.selectedSession?{}:{selectedSession:i}}}function Gp(e){return e.type===`assistant.delta`||e.type===`assistant.thinking.delta`||e.type===`shell.chunk`}function Kp(e){return e instanceof Error&&e.message.toLowerCase().includes(`session not found`)}var qp={order:0,overflowWatermark:0};function Jp(e){return{...e,status:`loading`,catalogRevision:0,notifications:[],dismissThrough:qp,optimisticDismissedIds:[],announcements:[]}}function Yp(e,t,n){if(n.summary.sessionId!==t.sessionId||n.summary.cwd!==t.cwd)throw Error(`Notification inbox snapshot does not match the selected session`);let r=e!==void 0&&sm(e,t)&&e.daemonInstanceId===n.daemonInstanceId;return{...t,status:`fresh`,daemonInstanceId:n.daemonInstanceId,catalogRevision:n.catalogRevision,summary:n.summary,notifications:n.notifications,dismissThrough:n.dismissThrough,optimisticDismissedIds:r?e.optimisticDismissedIds:[],...r&&e.optimisticDismissAllThrough!==void 0?{optimisticDismissAllThrough:e.optimisticDismissAllThrough}:{},announcements:r?e.announcements:[]}}function Xp(e,t,n){if(n.summary.sessionId!==t.sessionId||n.summary.cwd!==t.cwd)return{value:e??Jp(t),needsRefresh:!1,changed:!1};if(e===void 0||!sm(e,t))return{value:lm(t),needsRefresh:!0,changed:!0};if(e.daemonInstanceId!==n.daemonInstanceId)return{value:lm(t),needsRefresh:!0,changed:e.status!==`stale`||e.daemonInstanceId!==void 0||e.notifications.length>0};if(n.delta.kind===`resync`)return{value:{...e,status:`stale`},needsRefresh:!0,changed:e.status!==`stale`};let r=cu({revision:e.summary?.inboxRevision??0,fresh:e.status===`fresh`},{revision:n.summary.inboxRevision});if(r===`ignore`)return{value:e,needsRefresh:!1,changed:!1};if(r===`resync`)return{value:{...e,status:`stale`},needsRefresh:!0,changed:e.status!==`stale`};let i,a;switch(n.delta.kind){case`added`:{let t=n.delta;if(e.notifications.some(e=>e.id===t.notification.id))return{value:{...e,status:`stale`},needsRefresh:!0,changed:!0};i=[t.notification,...e.notifications].filter(e=>e.id!==t.evictedNotificationId).sort((e,t)=>t.order-e.order).slice(0,100),a={id:`${n.daemonInstanceId}:${String(n.summary.inboxRevision)}:${t.notification.id}`,severity:t.notification.severity,message:t.notification.message};break}case`dismissed`:{let t=new Set(n.delta.notificationIds);i=e.notifications.filter(e=>!t.has(e.id));break}case`cleared`:i=[];break}let o=i[0]?.order??0;if(!um(i,n.summary)||n.dismissThrough.order!==o||n.dismissThrough.overflowWatermark<n.summary.discardedCount)return{value:{...e,status:`stale`},needsRefresh:!0,changed:!0};let s=a===void 0?e.announcements:[...e.announcements,a].slice(-100);return{value:{...e,status:`fresh`,daemonInstanceId:n.daemonInstanceId,catalogRevision:n.catalogRevision,summary:n.summary,notifications:i,dismissThrough:n.dismissThrough,announcements:s},needsRefresh:!1,changed:!0}}function Zp(e){if(e?.status!==`fresh`||e.daemonInstanceId===void 0||e.summary===void 0)return;let t=new Set(e.optimisticDismissedIds),n=e.optimisticDismissAllThrough,r=e.notifications.filter(e=>!t.has(e.id)&&(n===void 0||e.order>n.order)),i=fm(e.summary.discardedCount,e.dismissThrough.overflowWatermark,n?.overflowWatermark);return r.length===0&&t.size>0&&(i=0),{machineId:e.machineId,sessionId:e.sessionId,cwd:e.cwd,daemonInstanceId:e.daemonInstanceId,notifications:r,retainedCount:r.length,discardedCount:i,...pm(dm(r)),dismissThrough:e.dismissThrough,pendingDismissedIds:t,dismissAllPending:n!==void 0,announcements:e.announcements}}function Qp(e){return e===`error`?`Error`:e===`warning`?`Warning`:`Info`}function $p(e){return`${Qp(e.severity)} notification received.`}function em(e){return e.retainedCount+e.discardedCount}function tm(e){return`Notifications (${String(em(e))})`}function nm(e){let t=e.message.replace(/\s+/gu,` `).trim();if(t===``)return`Dismiss ${Qp(e.severity).toLowerCase()} notification`;let n=Array.from(t);return`Dismiss notification: ${n.length<=80?t:`${n.slice(0,79).join(``).trimEnd()}…`}`}function rm(e,t){let n=e.findIndex(e=>e.id===t);if(n===-1)return{kind:`header`};let r=e[n+1];if(r!==void 0)return{kind:`notification`,notificationId:r.id};let i=e[n-1];return i===void 0?{kind:`header`}:{kind:`notification`,notificationId:i.id}}function im(e){return JSON.stringify([e.machineId,e.cwd,e.sessionId])}function am(e){return`${String(e)} older ${e===1?`notification`:`notifications`} not shown.`}function om(e){if(!e.truncated)return;let t=Gt/1024;return`Message truncated at ${String(t)} KiB.`}function sm(e,t){return e.machineId===t.machineId&&e.sessionId===t.sessionId&&e.cwd===t.cwd}function cm(e,t){if(e===`error`||t===`error`)return`error`;if(e===`warning`||t===`warning`)return`warning`;if(e===`info`||t===`info`)return`info`}function lm(e){return{...Jp(e),status:`stale`}}function um(e,t){return e.length===t.retainedCount&&dm(e)===t.highestSeverity}function dm(e){let t;for(let n of e)t=cm(t,n.severity);return t}function fm(e,t,n){if(e===0||n===void 0)return e;let r=t-e+1;return e-Math.max(0,Math.min(e,n-r+1))}function pm(e){return e===void 0?{}:{highestSeverity:e}}var mm=class{constructor(e,t,n={}){this.getState=e,this.setState=t,this.selectedGeneration=0,this.dismissingNotificationIds=new Set,this.dismissAllPending=!1,this.disposed=!1,this.api=n.api??fs,this.onBackgroundError=n.onBackgroundError??((e,t)=>{console.warn(e,t)})}dispose(){this.disposed=!0,this.selectedGeneration+=1,this.selectedTarget=void 0,this.selectedJoin=void 0,this.dismissingNotificationIds.clear(),this.dismissAllPending=!1}prepareSelectedSession(e,t){if(this.selectedGeneration+=1,this.selectedTarget=e.archived===!0?void 0:{machineId:t,sessionId:e.id,cwd:e.cwd},this.selectedJoin=void 0,this.dismissingNotificationIds.clear(),this.dismissAllPending=!1,this.selectedTarget===void 0){this.setState({selectedNotificationInbox:void 0});return}this.setState({selectedNotificationInbox:Jp(this.selectedTarget)})}clearSelectedSession(){this.selectedGeneration+=1,this.selectedTarget=void 0,this.selectedJoin=void 0,this.dismissingNotificationIds.clear(),this.dismissAllPending=!1,this.setState({selectedNotificationInbox:void 0})}refreshSelectedSession(e,t){let n=this.selectedTarget;if(this.disposed||n?.machineId!==t||n.sessionId!==e.id||n.cwd!==e.cwd||!this.machineIsReachable(t))return Promise.resolve();let r=this.selectedGeneration,i=this.selectedRefresh;if(i?.generation===r)return i.trailing=!0,i.promise;this.ensureSelectedProjection(n);let a={generation:r,promise:Promise.resolve(),trailing:!1};return a.promise=this.runSelectedRefresh(a,n).finally(()=>{this.selectedRefresh===a&&(this.selectedRefresh=void 0)}),this.selectedRefresh=a,a.promise}applyInboxEvent(e,t){let n=this.selectedTarget;if(n?.machineId!==e||n.sessionId!==t.summary.sessionId||n.cwd!==t.summary.cwd)return;let r=this.selectedJoin;if(r?.generation===this.selectedGeneration){r.events.push(t);return}let i=Xp(this.getState().selectedNotificationInbox,n,t);i.changed&&this.setState({selectedNotificationInbox:i.value}),i.needsRefresh&&this.scheduleSelectedRefresh(n)}syncEnvironment(e,t){if(this.disposed)return;let n=e.machines!==t.machines||e.machineStatuses!==t.machineStatuses,r=this.selectedTarget;if(!n||r===void 0)return;let i=this.machineIsReachableInState(e,r.machineId);if(!this.machineIsReachable(r.machineId)){this.markSelectedStale(r);return}this.ensureSelectedProjection(r),(!i||this.getState().selectedNotificationInbox?.status!==`fresh`)&&this.refreshSelectedSession({id:r.sessionId,cwd:r.cwd},r.machineId)}async dismissNotification(e){let t=this.getState().selectedNotificationInbox,n=Zp(t);if(t===void 0||n===void 0||this.dismissAllPending||this.dismissingNotificationIds.has(e))return;let r=n.notifications.find(t=>t.id===e);if(r===void 0)return;let i=hm(t);r.warningDismiss!==void 0&&this.api.dismissWarning({id:i.sessionId,cwd:i.cwd},r.warningDismiss.id,i.machineId).catch(()=>void 0);let a=this.selectedGeneration;this.dismissingNotificationIds.add(e),this.patchSelectedOverlay(i,t=>({...t,optimisticDismissedIds:[...new Set([...t.optimisticDismissedIds,e])]}));try{let t=await this.api.dismissNotification({id:i.sessionId,cwd:i.cwd},n.daemonInstanceId,e,i.machineId);this.isCurrentTarget(i,a)&&this.applyMutationSnapshot(i,t,t=>({...t,optimisticDismissedIds:t.optimisticDismissedIds.filter(t=>t!==e)}))}catch(t){this.isCurrentTarget(i,a)&&(this.patchSelectedOverlay(i,t=>({...t,optimisticDismissedIds:t.optimisticDismissedIds.filter(t=>t!==e)})),this.setState({error:`Failed to dismiss notification: ${y(t)}`}),await this.refreshSelectedSession({id:i.sessionId,cwd:i.cwd},i.machineId))}finally{this.dismissingNotificationIds.delete(e)}}async dismissAll(){let e=this.getState().selectedNotificationInbox,t=Zp(e);if(e===void 0||t===void 0||this.dismissAllPending||t.retainedCount+t.discardedCount===0)return;let n=hm(e),r=this.selectedGeneration,i={...e.dismissThrough};this.dismissAllPending=!0,this.patchSelectedOverlay(n,e=>({...e,optimisticDismissAllThrough:i}));try{let e=await this.api.dismissAllNotifications({id:n.sessionId,cwd:n.cwd},t.daemonInstanceId,i,n.machineId);e.outcome===`stale-instance`&&this.isCurrentTarget(n,r)&&(e=await this.api.dismissAllNotifications({id:n.sessionId,cwd:n.cwd},e.daemonInstanceId,{...e.dismissThrough},n.machineId)),this.isCurrentTarget(n,r)&&this.applyMutationSnapshot(n,e,e=>{let t={...e};return delete t.optimisticDismissAllThrough,t})}catch(e){this.isCurrentTarget(n,r)&&(this.patchSelectedOverlay(n,e=>{let t={...e};return delete t.optimisticDismissAllThrough,t}),this.setState({error:`Failed to dismiss session notifications: ${y(e)}`}),await this.refreshSelectedSession({id:n.sessionId,cwd:n.cwd},n.machineId))}finally{r===this.selectedGeneration&&(this.dismissAllPending=!1)}}async runSelectedRefresh(e,t){do{e.trailing=!1;let n={generation:e.generation,events:[]};this.selectedJoin=n;try{let r=await this.api.notificationInbox({id:t.sessionId,cwd:t.cwd},t.machineId);if(!this.isCurrentTarget(t,e.generation))return;if(!this.machineIsReachable(t.machineId)){this.markSelectedStale(t);return}let i=this.getState().selectedNotificationInbox,a=i===void 0||gm(i,t,r)?Yp(i,t,r):i;for(let r of[...n.events].sort((e,t)=>e.summary.inboxRevision-t.summary.inboxRevision)){let n=Xp(a,t,r);a=n.value,n.needsRefresh&&(e.trailing=!0)}this.setState({selectedNotificationInbox:a})}catch(n){if(this.isCurrentTarget(t,e.generation)){let e=this.getState().selectedNotificationInbox;e!==void 0&&sm(e,t)&&e.status!==`stale`&&this.setState({selectedNotificationInbox:{...e,status:`stale`}}),this.onBackgroundError(`Failed to refresh notifications for session ${t.sessionId}`,n)}return}finally{this.selectedJoin===n&&(this.selectedJoin=void 0)}}while(e.trailing&&this.isCurrentTarget(t,e.generation)&&this.machineIsReachable(t.machineId))}applyMutationSnapshot(e,t,n){let r=this.getState().selectedNotificationInbox;if(r===void 0||!sm(r,e))return;if(!this.machineIsReachable(e.machineId)){this.setState({selectedNotificationInbox:{...n(r),status:`stale`}});return}let i=gm(r,e,t)?Yp(r,e,t):r;this.setState({selectedNotificationInbox:n(i)})}patchSelectedOverlay(e,t){let n=this.getState().selectedNotificationInbox;n===void 0||!sm(n,e)||this.setState({selectedNotificationInbox:t(n)})}ensureSelectedProjection(e){let t=this.getState().selectedNotificationInbox;(t===void 0||!sm(t,e))&&this.setState({selectedNotificationInbox:Jp(e)})}scheduleSelectedRefresh(e){queueMicrotask(()=>{!this.disposed&&this.selectedTarget!==void 0&&sm(this.selectedTarget,e)&&this.refreshSelectedSession({id:e.sessionId,cwd:e.cwd},e.machineId)})}markSelectedStale(e){let t=this.getState().selectedNotificationInbox;t===void 0||!sm(t,e)||t.status===`stale`||this.setState({selectedNotificationInbox:{...t,status:`stale`}})}isCurrentTarget(e,t){return!this.disposed&&t===this.selectedGeneration&&this.selectedTarget!==void 0&&sm(this.selectedTarget,e)}machineIsReachable(e){return this.machineIsReachableInState(this.getState(),e)}machineIsReachableInState(e,t){let n=e.machines.find(e=>e.id===t);if(t===`local`||n?.kind===`local`)return!0;let r=e.machineStatuses[t]?.status??n?.status;return r===void 0||r===`unknown`||r===`online`}};function hm(e){return{machineId:e.machineId,sessionId:e.sessionId,cwd:e.cwd}}function gm(e,t,n){return!sm(e,t)||e.daemonInstanceId!==n.daemonInstanceId||e.summary===void 0||n.summary.inboxRevision>=e.summary.inboxRevision}var _m=class{constructor(){this.workspaceIdsByProject=new Map}latestWorkspaceId(e){return this.workspaceIdsByProject.get(e)}rememberWorkspace(e){this.workspaceIdsByProject.set(e.projectId,e.id)}forgetProject(e){this.workspaceIdsByProject.delete(e)}},vm=`pi-web:workspace-selection:v1`,ym=class{constructor(e=lp()){this.workspaceIdsByProject=new up(vm,dp,e)}latestWorkspaceId(e){return this.workspaceIdsByProject.get(e)}rememberWorkspace(e){this.workspaceIdsByProject.set(e.projectId,e.id)}forgetProject(e){this.workspaceIdsByProject.delete(e)}};function bm(e,t){let n=t?.targetWorkspaceId;if(n!==void 0&&n!==``)return e.find(e=>e.id===n);let r=t?.latestWorkspaceId;return r!==void 0&&r!==``?e.find(e=>e.id===r)??e[0]:e[0]}var xm=50,Sm=class{constructor(e,t,n,r,i=new _m,a={}){this.getState=e,this.setState=t,this.updateUrl=n,this.sessions=r,this.workspaceSelection=i,this.api=a.api??fs,this.onBackgroundError=a.onBackgroundError??((e,t)=>{console.warn(e,t)}),this.topologyRefreshes=new Jl(a.topologyRefreshDebounceMs??xm)}clearSelection(e){this.sessions.clearActiveSession(),this.setState({selectedProject:void 0,selectedWorkspace:void 0,workspaces:[],isLoadingWorkspaces:!1,...vl()}),e?.updateUrl!==!1&&this.updateUrl()}forgetProject(e){this.workspaceSelection.forgetProject(ll(R(this.getState()),e));let t=Object.fromEntries(Object.entries(this.getState().workspacesByProjectId).filter(([t])=>t!==e));this.setState({workspacesByProjectId:t})}async selectProject(e,t){let n=R(this.getState());this.sessions.clearActiveSession(),this.setState({selectedProject:e,selectedWorkspace:void 0,workspaces:[],isLoadingWorkspaces:!0,...vl()});try{let r=await this.api.workspaces(e.id,n);if(R(this.getState())!==n||this.getState().selectedProject?.id!==e.id)return;this.setState({workspaces:r,workspacesByProjectId:{...this.getState().workspacesByProjectId,[e.id]:r},isLoadingWorkspaces:!1});let i=bm(r,{targetWorkspaceId:t?.workspaceId,latestWorkspaceId:this.workspaceSelection.latestWorkspaceId(ll(n,e.id))});i?await this.selectWorkspace(i,{sessionId:t?.sessionId,updateUrl:t?.updateUrl}):t?.updateUrl!==!1&&this.updateUrl()}catch(t){R(this.getState())===n&&this.getState().selectedProject?.id===e.id&&this.setState({...b(t),isLoadingWorkspaces:!1})}}async selectWorkspace(e,t){let n=R(this.getState());this.workspaceSelection.rememberWorkspace({...e,projectId:ll(n,e.projectId)}),this.sessions.clearActiveSession();let r=Lu(n,e.path);this.setState({selectedWorkspace:e,isLoadingWorkspaces:!1,...vl(),sessions:r===void 0?[]:[...r],sessionsLoad:`loading`});try{let r=xu(e.path,await this.api.sessions(e.path,n),n);if(R(this.getState())!==n||this.getState().selectedWorkspace?.id!==e.id||this.getState().selectedProject?.id!==e.projectId)return;Ru(n,e.path,r),this.setState({sessions:r,sessionsLoad:`loaded`});let i=this.sessions.preferredSession(e.path,r,t?.sessionId);i?await this.sessions.selectSession(i,{updateUrl:t?.updateUrl}):t?.updateUrl!==!1&&this.updateUrl()}catch(t){R(this.getState())===n&&this.getState().selectedWorkspace?.id===e.id&&this.setState({...b(t),sessionsLoad:`unloaded`})}finally{this.refreshWorkspaceGoals(e,n)}}async refreshWorkspaceGoals(e=this.getState().selectedWorkspace,t=R(this.getState())){if(e===void 0)return;let n=dl(t,e.projectId,e.id),r=this.getState().workspaceGoalsLoad,i=r.key===n?r.data:[];this.setState({workspaceGoalsLoad:{state:`loading`,key:n,data:i}});let a;try{let r=this.getState().selectedSession?.cwd;a={state:`loaded`,key:n,data:(await this.api.workspaceGoals(e.projectId,e.id,t,r)).goals}}catch{a={state:`failed`,key:n,data:i}}hl(this.getState())===n&&this.setState({workspaceGoalsLoad:a})}async archiveWorkspaceGoal(e,t=this.getState().selectedWorkspace){if(t===void 0)return;let n=R(this.getState());try{(await this.api.archiveWorkspaceGoal(t.projectId,t.id,e,n)).agentMayRecreate&&this.setState({error:`Goal archived. A session already working it keeps its own copy until it reloads, so run /goal-refresh there if it comes back.`})}catch(e){this.setState({error:`Could not archive the goal: ${y(e)}`})}await this.refreshWorkspaceGoals(t,n)}async refreshProjectWorkspaces(e){let t=this.getState().projects.find(t=>t.id===e);if(t===void 0)throw Error(`Project not found`);let n=await this.api.workspaces(t.id,R(this.getState()));return this.applyProjectWorkspaces(t.id,n),n}async refreshSelectedProjectTopology(){let e=this.getState(),t=e.selectedProject;if(t===void 0)return;let n=R(e);await this.topologyRefreshes.request(ll(n,t.id),async()=>{try{let e=await this.api.workspaces(t.id,n),r=this.getState();if(R(r)!==n||r.selectedProject?.id!==t.id)return;this.applyProjectWorkspaces(t.id,e)}catch(e){this.onBackgroundError(`Failed to refresh workspaces for project ${t.id} on ${n}`,e)}})}async refreshAfterWorkspaceDeleted(e,t){let n=await this.refreshProjectWorkspaces(e),r=this.getState();if(r.selectedProject?.id!==e||r.selectedWorkspace?.id!==t)return;let i=Cm(n);i===void 0?this.clearSelection():await this.selectWorkspace(i)}applyProjectWorkspaces(e,t){let n=this.getState(),r={...n.workspacesByProjectId,[e]:t};if(n.selectedProject?.id!==e){this.setState({workspacesByProjectId:r});return}this.setState({workspaces:t,workspacesByProjectId:r,...this.refreshedSelection(n.selectedWorkspace,t)})}refreshedSelection(e,t){if(e===void 0)return;let n=t.find(t=>t.id===e.id);if(!(n===void 0||wm(e,n)))return{selectedWorkspace:n}}};function Cm(e){return e.find(e=>e.isMain)??e[0]}function wm(e,t){return Tm(e,t)}function Tm(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>Tm(e,t[n]));if(!Em(e)||!Em(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>Object.hasOwn(t,n)&&Tm(e[n],t[n]))}function Em(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Dm=`pi-web:machine-navigation:v1`,Om=class{constructor(e=lp()){this.snapshotsByMachine=new up(Dm,Nm,e)}latest(e){let t=this.snapshotsByMachine.get(e);return t?.machineId===e?Mm(t):void 0}remember(e){this.snapshotsByMachine.set(e.machineId,Mm(e))}forget(e){this.snapshotsByMachine.delete(e)}};function km(e){return{machineId:e,surface:{}}}function Am(e){let t=e.selectedWorkspace!==void 0;return{machineId:e.selectedMachine?.id??`local`,projectId:e.selectedProject?.id,workspaceId:e.selectedWorkspace?.id,sessionId:e.selectedSession?.id,tool:e.workspaceTool,view:e.mainView,surface:{selectedFilePath:t?e.selectedFilePath:void 0,selectedTerminalId:t?e.selectedTerminalId:void 0}}}function jm(e){return{machineId:e.machineId,projectId:e.projectId,workspaceId:e.workspaceId,sessionId:e.sessionId,tool:e.tool,view:e.view===`navigation`?void 0:e.view}}function Mm(e){return{...e,surface:{...e.surface}}}function Nm(e){if(!zm(e))return;let t=Rm(e,`machineId`);if(t===void 0)return;let n=Im(Rm(e,`tool`)),r=Fm(Rm(e,`view`));return{machineId:t,projectId:Rm(e,`projectId`),workspaceId:Rm(e,`workspaceId`),sessionId:Rm(e,`sessionId`),...n===void 0?{}:{tool:n},...r===void 0?{}:{view:r},surface:Pm(e.surface)}}function Pm(e){return zm(e)?{selectedFilePath:Rm(e,`selectedFilePath`),selectedTerminalId:Rm(e,`selectedTerminalId`)}:{}}function Fm(e){return e===`navigation`||e===`chat`?e:Im(e)}function Im(e){return Lm(e)?e:void 0}function Lm(e){return e!==void 0&&/^[a-z][a-z0-9.-]*:[a-z][a-z0-9.-]*$/u.test(e)}function Rm(e,t){let n=e[t];return typeof n==`string`&&n!==``?n:void 0}function zm(e){return typeof e==`object`&&!!e}var Bm=`pi-web:terminal-selection:v1`,Vm=class{constructor(e=lp()){this.terminalIdsByCwd=new up(Bm,dp,e)}latestTerminalId(e){return this.terminalIdsByCwd.get(e)}rememberTerminal(e,t){this.terminalIdsByCwd.set(e,t)}forgetWorkspace(e){this.terminalIdsByCwd.delete(e)}forgetTerminal(e){for(let[t,n]of this.terminalIdsByCwd.entries())n===e&&this.terminalIdsByCwd.delete(t)}};function Hm(e,t){let n=t?.targetTerminalId;if(n!==void 0&&n!==``)return e.find(e=>e.id===n);let r=t?.latestTerminalId;return r!==void 0&&r!==``?e.find(e=>e.id===r)??e.find(e=>!e.exited)??e[0]:e.find(e=>!e.exited)??e[0]}function Um(e){return e.find(e=>!e.exited)??e[0]}var Wm=1200,Gm=[`mod`,`alt`,`shift`],Km=class{constructor(){this.pendingTokens=[]}handle(e,t,n={}){let r=Zm(e);if(r===void 0)return!1;let i=qm(t,n.shortcuts,{enabledOnly:!0}).filter(e=>e.active).map(e=>({action:e.action,tokens:e.tokens}));if(this.pendingTokens.length>0){if(this.handleSequence([...this.pendingTokens,r],i))return!0;if(this.clearPending(),!Qm(r))return!1}else if(!Qm(r))return!1;return this.handleSequence([r],i)}reset(){this.clearPending()}handleSequence(e,t){let n=t.find(t=>hh(t.tokens,e));return n===void 0?t.some(t=>gh(t.tokens,e))?(this.setPending(e),!0):!1:(this.clearPending(),n.action.run(),!0)}setPending(e){this.clearPending(),this.pendingTokens=e,this.pendingTimer=globalThis.setTimeout(()=>{this.pendingTokens=[],this.pendingTimer=void 0},Wm)}clearPending(){this.pendingTokens=[],this.pendingTimer!==void 0&&(globalThis.clearTimeout(this.pendingTimer),this.pendingTimer=void 0)}};function qm(e,t,n={}){let r=e.flatMap((e,r)=>{if(n.enabledOnly===!0&&e.enabled===!1)return[];let i=$m(e,t,r);return i===void 0?[]:[i]}),i=new Map;for(let e of r)i.set(e.key,[...i.get(e.key)??[],e]);let a=new Map;for(let e of i.values()){let t=[...e].sort(rh)[0];t!==void 0&&a.set(t.key,t)}let o=[...a.values()].sort(ih),s=new Map,c=new Map;for(let e of r){let t=a.get(e.key);if(t===void 0)continue;let n=ah(t,o)??t;c.set(e,n),e!==n&&s.set(n,[...s.get(n)??[],e])}return r.map(e=>{let t=c.get(e),n=t===e,r=t===void 0||n?void 0:nh(t),i=n?[...s.get(e)??[]].sort(rh).map(nh):[];return{...e,active:n,shadows:i,...r===void 0?{}:{shadowedBy:r}}}).sort((e,t)=>e.order-t.order)}function Jm(e){return ch(e,{requireFirstChordActivator:!0})}function Ym(e){let t=ch(e,{requireFirstChordActivator:!1});return t.ok?t.tokens:[]}function Xm(e){return Ym(e).map(e=>e.split(`+`).map(mh).join(`+`)).join(` `)}function Zm(e){if(e.isComposing)return;let t=fh(e.key);if(t===void 0)return;let n=[];return(e.metaKey||e.ctrlKey)&&n.push(`mod`),e.altKey&&n.push(`alt`),e.shiftKey&&n.push(`shift`),n.push(t),n.join(`+`)}function Qm(e){return e.split(`+`).includes(`mod`)||e.split(`+`).includes(`alt`)}function $m(e,t,n){let r=eh(e,t);if(r===null)return;let i=r??e.shortcut;if(i===void 0||i===``)return;let a=Ym(i),o=a[0];if(!(o===void 0||!Qm(o)))return{action:e,shortcut:a.join(` `),source:r===void 0?`default`:`custom`,tokens:a,key:th(a),order:n}}function eh(e,t){if(t!==void 0){for(let n of[e.id,...e.shortcutAliases??[]])if(Object.hasOwn(t,n))return t[n]}}function th(e){return e.join(`\0`)}function nh(e){return{action:e.action,shortcut:e.shortcut,source:e.source}}function rh(e,t){return oh(e.source)-oh(t.source)||sh(e.action.id,t.action.id)||sh(e.action.title,t.action.title)||e.order-t.order}function ih(e,t){return e.tokens.length-t.tokens.length||rh(e,t)}function ah(e,t){return t.find(t=>t!==e&&t.tokens.length<e.tokens.length&&gh(e.tokens,t.tokens))}function oh(e){switch(e){case`custom`:return 0;case`default`:return 1}}function sh(e,t){return e<t?-1:+(e>t)}function ch(e,t){let n=e.trim().toLowerCase().replace(/\s*\+\s*/gu,`+`);if(n===``)return{ok:!1,message:`Enter a shortcut, choose None, or reset to the default.`};let r=[],i=n.split(/\s+/u).filter(e=>e!==``);for(let[e,n]of i.entries()){let i=lh(n);if(!i.ok)return i;if(e===0&&t.requireFirstChordActivator&&!Qm(i.token))return{ok:!1,message:`Shortcuts must start with Ctrl/⌘ or Alt so normal typing is not captured.`};r.push(i.token)}return{ok:!0,shortcut:r.join(` `),tokens:r}}function lh(e){let t=e.split(`+`).filter(e=>e!==``);if(t.length===0)return{ok:!1,message:`Shortcut chords must include a key.`};let n=new Set,r;for(let e of t){let t=uh(e);if(t!==void 0){if(n.has(t))return{ok:!1,message:`Shortcut has duplicate ${mh(t)} modifiers.`};n.add(t);continue}let i=dh(e);if(i===void 0)return{ok:!1,message:`Unsupported shortcut key: ${e}`};if(r!==void 0)return{ok:!1,message:`Each shortcut chord can include only one non-modifier key.`};r=i}return r===void 0?{ok:!1,message:`Shortcut chords must include a key.`}:{ok:!0,token:[...Gm.filter(e=>n.has(e)),r].join(`+`)}}function uh(e){switch(e){case`mod`:case`meta`:case`cmd`:case`command`:case`ctrl`:case`control`:case`primary`:return`mod`;case`alt`:case`option`:case`opt`:return`alt`;case`shift`:return`shift`;default:return}}function dh(e){let t=ph(e);if(t!==void 0)return t;if(/^f(?:[1-9]|1[0-9]|2[0-4])$/u.test(e)||e.length===1)return e}function fh(e){return e===` `?`space`:dh(e.toLowerCase())}function ph(e){switch(e){case` `:case`spacebar`:case`space`:return`space`;case`esc`:case`escape`:return`escape`;case`return`:case`enter`:return`enter`;case`del`:case`delete`:return`delete`;case`backspace`:return`backspace`;case`tab`:return`tab`;case`up`:case`arrowup`:return`arrowup`;case`down`:case`arrowdown`:return`arrowdown`;case`left`:case`arrowleft`:return`arrowleft`;case`right`:case`arrowright`:return`arrowright`;case`pageup`:case`pagedown`:case`home`:case`end`:return e;case`+`:case`plus`:return`plus`;case`period`:case`dot`:return`.`;case`comma`:return`,`;case`slash`:return`/`;case`backslash`:return`\\`;case`minus`:return`-`;default:return}}function mh(e){return e===`mod`?_h()?`⌘`:`Ctrl`:e===`shift`?`Shift`:e===`alt`?_h()?`⌥`:`Alt`:e===`enter`?`Enter`:e===`escape`?`Esc`:e===`space`?`Space`:e===`tab`?`Tab`:e===`backspace`?`Backspace`:e===`delete`?`Delete`:e===`arrowup`?`↑`:e===`arrowdown`?`↓`:e===`arrowleft`?`←`:e===`arrowright`?`→`:e===`pageup`?`PageUp`:e===`pagedown`?`PageDown`:e===`home`?`Home`:e===`end`?`End`:e===`plus`?`+`:/^f(?:[1-9]|1[0-9]|2[0-4])$/u.test(e)||e.length===1?e.toUpperCase():`${e.charAt(0).toUpperCase()}${e.slice(1)}`}function hh(e,t){return e.length===t.length&&gh(e,t)}function gh(e,t){return t.every((t,n)=>e[n]===t)}function _h(){return typeof navigator<`u`&&navigator.userAgent.toLowerCase().includes(`mac`)}function vh(e,t,n=24){if(t===void 0||!Number.isFinite(e)||e<=0||!Number.isFinite(t.height)||t.height<=0)return 0;let r=e-(t.offsetTop+t.height);return!Number.isFinite(r)||r<n?0:Math.min(r,e)}var yh=[`ask-user-card`,`extension-dialog-card`];function bh(e){return e.pointerInFlight?{collapsed:e.collapsed,held:e.next}:{collapsed:e.held??e.next,held:void 0}}function xh(e){return e.some(e=>yh.includes(Ch(e)))}function Sh(e){let t=[],n=e instanceof Node?e:null;for(;n!==null;)t.push(n),n=n.parentNode??(n instanceof ShadowRoot?n.host:null);return t}function Ch(e){return e instanceof Element?e.tagName.toLowerCase():``}function wh(e){return!e.collapsed||e.collapsingHostStillPresent?!1:!xh(e.activeElementPath)}function Th(e){return e.hasSelectedSession&&e.documentVisible}var Eh=2e4;function Dh(e){let t=!1,n=0;async function r(){t=!0;try{let t=-1;for(;t!==n;)t=n,await Promise.race([e(),new Promise(e=>{setTimeout(e,Eh)})])}finally{t=!1}}return async()=>{n+=1,!t&&await r()}}function Oh(e,t){return t?.phase===`error`?`error`:e===void 0?t?.phase===`active`?`working`:void 0:kh(e)?`asking`:e.isStreaming||e.isBashRunning||e.isCompacting||e.pendingMessageCount>0||t?.phase===`active`?`working`:(e.backgroundRunCount??0)>0?`background`:`idle`}function kh(e){return e===void 0?!1:e.pendingAsk!==void 0||(e.pendingDialogs?.length??0)>0}var Ah={archiveIdleEnabled:!0,archiveIdleDays:`30`,deleteArchivedEnabled:!1,deleteArchivedDays:`90`};function jh(e){if(!e.archiveIdleEnabled&&!e.deleteArchivedEnabled)return{ok:!1,error:`Enable at least one cleanup action.`};let t={archiveIdleDays:null,deleteArchivedDays:null};if(e.archiveIdleEnabled){let n=zh(e.archiveIdleDays,`Archive idle sessions after`);if(typeof n==`string`)return{ok:!1,error:n};t.archiveIdleDays=n}if(e.deleteArchivedEnabled){let n=zh(e.deleteArchivedDays,`Delete archived sessions after`);if(typeof n==`string`)return{ok:!1,error:n};t.deleteArchivedDays=n}return{ok:!0,request:t}}function Mh(e){return JSON.stringify({archiveIdleDays:e?.archiveIdleDays??null,deleteArchivedDays:e?.deleteArchivedDays??null})}function Nh(e){if(e.loading===!0||e.running===!0||e.preview===void 0)return!1;let t=jh(e.draft);return!t.ok||Mh(t.request)!==Mh(e.previewRequest)?!1:Ph(e.preview)}function Ph(e){return e.totals.archiveCount>0||e.totals.deleteCount>0}function Fh(e,t){let n=e.projects.map(e=>e.cwd);if(t===void 0)return n;let r=new Set(t);return n.filter(e=>r.has(e))}function Ih(e,t){let n=new Set(Fh(e,t)),r=e.projects.filter(e=>n.has(e.cwd));return{...e,projects:r,totals:r.reduce((e,t)=>({archiveCount:e.archiveCount+t.archiveCount,deleteCount:e.deleteCount+t.deleteCount}),{archiveCount:0,deleteCount:0})}}function Lh(e,t){return t(Rh(e))}function Rh(e){let t=e.totals.archiveCount,n=e.totals.deleteCount,r=[];return t>0&&r.push(`archive ${String(t)} idle ${t===1?`session`:`sessions`}`),n>0&&r.push(`permanently delete ${String(n)} archived ${n===1?`session`:`sessions`}`),`Run cleanup and ${r.length===0?`run cleanup`:r.join(` and `)}?\n\nPermanent deletion only applies to archived sessions and cannot be undone.`}function zh(e,t){let n=e.trim();if(n===``)return`${t} must be set.`;let r=Number(n);return!Number.isInteger(r)||r<0?`${t} must be a non-negative whole number of days.`:r}var Bh=2,Vh=new Set,Hh=Ut+1,Uh={unreadCatalog:e=>$o.unreadCatalog(e),acknowledgeUnread:(e,t,n,r)=>$o.acknowledgeUnread(e,t,n,r)},Wh=class{constructor(e={}){this.machines=new Map,this.api=e.api??Uh,this.onChange=e.onChange??(()=>void 0),this.onBackgroundError=e.onBackgroundError??(()=>void 0)}retainMachines(e){for(let[t,n]of this.machines){if(e.has(t))continue;let r=n.projection!==void 0;n.generation+=1,n.observers.clear(),n.acknowledgements.clear(),this.machines.delete(t),r&&this.onChange(t)}}projection(e){let t=this.machines.get(e),n=t?.projection;if(!(t===void 0||n===void 0))return{status:t.status,catalogId:n.catalogId,catalogRevision:n.catalogRevision,sessions:[...n.summariesByIdentity.values()].sort((e,t)=>t.completionOrder-e.completionOrder).map(e=>({...e}))}}unreadSessionIds(e,t){let n=this.machines.get(e)?.projection;if(n===void 0||t.length===0)return Vh;let r=new Set;for(let e of t)n.summariesByIdentity.has(Xh(e))&&r.add(e.id);return r.size===0?Vh:r}isUnread(e,t){return this.machines.get(e)?.projection?.summariesByIdentity.has(Xh(t))===!0}applyEvent(e,t){let n=this.machine(e);this.recordObservedEvent(n,t);let r=Gh(n.projection,n.status,t);this.installProjection(n,r.projection,r.status)&&this.onChange(e),r.requiresRefresh&&(n.refreshPromise===void 0?this.refresh(e):n.refreshQueued=!0)}refresh(e){let t=this.machine(e);if(t.refreshPromise!==void 0)return t.refreshQueued=!0,t.refreshPromise;let n=t.generation,r=this.runRefreshLoop(t,n);return t.refreshPromise=r,r.finally(()=>{if(!this.isCurrent(t,n)||t.refreshPromise!==r)return;t.refreshPromise=void 0;let e=t.refreshQueued;t.refreshQueued=!1,e&&this.refresh(t.machineId)}),r}async refreshAll(){await Promise.all([...this.machines.values()].map(async e=>{await this.refresh(e.machineId)}))}acknowledge(e,t){let n=this.machines.get(e),r=n?.projection;if(n===void 0||r===void 0)return Promise.resolve();let i=r.summariesByIdentity.get(Xh(t));if(i===void 0)return Promise.resolve();let a=Zh(r.catalogId,i),o=n.acknowledgements.get(a);if(o!==void 0)return o;let s=n.generation,c=this.runAcknowledgement(n,s,t,r.catalogId,i.completionOrder);return n.acknowledgements.set(a,c),c.finally(()=>{n.acknowledgements.get(a)===c&&n.acknowledgements.delete(a)}),c}async runRefreshLoop(e,t){do{if(e.refreshQueued=!1,!this.isCurrent(e,t))return;let n=e.status;this.markRefreshStarted(e)&&this.onChange(e.machineId);let r=this.beginNetworkObservation(e,t,n);try{let n=await this.api.unreadCatalog(e.machineId);if(!this.isCurrent(e,t))return;this.applyNetworkSnapshot(e,n,r)&&(e.refreshQueued=!0)}catch(n){if(this.isCurrent(e,t)){let t=e.status!==`stale`;e.status=`stale`,t&&this.onChange(e.machineId),this.reportError(`snapshot`,e.machineId,n)}}finally{e.observers.delete(r)}}while(e.refreshQueued&&this.isCurrent(e,t))}async runAcknowledgement(e,t,n,r,i,a=Bh){let o=this.beginNetworkObservation(e,t),s;try{let c=await this.api.acknowledgeUnread(n,r,i,e.machineId);if(!this.isCurrent(e,t))return;if(this.applyNetworkSnapshot(e,c,o)&&this.refresh(e.machineId),c.outcome===`superseded`&&a>0){let t=e.projection?.summariesByIdentity.get(Xh(n)),r=e.projection?.catalogId;t!==void 0&&r!==void 0&&t.completionOrder>i&&(s={catalogId:r,throughCompletionOrder:t.completionOrder})}}catch(n){this.isCurrent(e,t)&&this.reportError(`acknowledge`,e.machineId,n)}finally{e.observers.delete(o)}s!==void 0&&this.isCurrent(e,t)&&await this.runAcknowledgement(e,t,n,s.catalogId,s.throughCompletionOrder,a-1)}applyNetworkSnapshot(e,t,n){let r=e.projection;if(e.projectionVersion!==n.projectionVersion&&r!==void 0&&r.catalogId!==t.catalogId||n.overflowed||n.events.some(e=>e.catalogId!==t.catalogId)){let t=e.status!==`stale`;return e.status=`stale`,t&&this.onChange(e.machineId),!0}let i=qh(t),a=`fresh`,o=!1;for(let e of n.events){let t=Gh(i,a,e);i=t.projection,a=t.status,o||=t.requiresRefresh}if(r?.catalogId===i.catalogId&&r.catalogRevision>i.catalogRevision){if(e.projectionVersion===n.projectionVersion&&n.projectionStatus===`fresh`){let t=e.status!==`fresh`;e.status=`fresh`,t&&this.onChange(e.machineId)}o||=e.status===`stale`}else this.installProjection(e,i,a)&&this.onChange(e.machineId);return o}beginNetworkObservation(e,t,n=e.status){let r={generation:t,projectionVersion:e.projectionVersion,projectionStatus:n,events:[],overflowed:!1};return e.observers.add(r),r}recordObservedEvent(e,t){for(let n of e.observers)n.generation!==e.generation||n.overflowed||(n.events.length>=Hh?(n.events.length=0,n.overflowed=!0):n.events.push(t))}markRefreshStarted(e){let t=e.projection===void 0?`loading`:`stale`;return e.status===t?!1:(e.status=t,!0)}installProjection(e,t,n){let r=!Yh(e.projection,t);return e.status===n&&!r?!1:(r&&(e.projection=t,e.projectionVersion+=1),e.status=n,!0)}machine(e){let t=this.machines.get(e);if(t!==void 0)return t;let n={machineId:e,status:`stale`,projection:void 0,projectionVersion:0,generation:0,observers:new Set,acknowledgements:new Map,refreshPromise:void 0,refreshQueued:!1};return this.machines.set(e,n),n}isCurrent(e,t){return this.machines.get(e.machineId)===e&&e.generation===t}reportError(e,t,n){this.onBackgroundError(e,t,n)}};function Gh(e,t,n){if(e===void 0){let e=Jh(n.catalogId);return n.catalogRevision===1?Kh(e,`fresh`,n):{projection:e,status:`stale`,requiresRefresh:!0}}if(e.catalogId!==n.catalogId){let e=Jh(n.catalogId);return n.catalogRevision===1?Kh(e,`stale`,n):{projection:e,status:`stale`,requiresRefresh:!0}}return n.catalogRevision<=e.catalogRevision?{projection:e,status:t,requiresRefresh:t===`stale`}:n.catalogRevision===e.catalogRevision+1?Kh(e,t,n):{projection:e,status:`stale`,requiresRefresh:!0}}function Kh(e,t,n){let r=new Map(e.summariesByIdentity),i=Xh(n);n.unread===null?r.delete(i):r.set(i,{...n.unread});let a=t===`stale`?`stale`:`fresh`;return{projection:{catalogId:n.catalogId,catalogRevision:n.catalogRevision,summariesByIdentity:r},status:a,requiresRefresh:a===`stale`}}function qh(e){return{catalogId:e.catalogId,catalogRevision:e.catalogRevision,summariesByIdentity:new Map(e.sessions.map(e=>[Xh(e),{...e}]))}}function Jh(e){return{catalogId:e,catalogRevision:0,summariesByIdentity:new Map}}function Yh(e,t){if(e?.catalogId!==t.catalogId||e.catalogRevision!==t.catalogRevision||e.summariesByIdentity.size!==t.summariesByIdentity.size)return!1;for(let[n,r]of e.summariesByIdentity){let e=t.summariesByIdentity.get(n);if(e?.completionOrder!==r.completionOrder||e.completedAt!==r.completedAt)return!1}return!0}function Xh(e){let t=`id`in e?e.id:e.sessionId;return JSON.stringify([t,e.cwd])}function Zh(e,t){return JSON.stringify([e,t.sessionId,t.cwd,t.completionOrder])}var Qh=`themes:classic`,$h={themeId:`themes:pi-web-dark`,auto:!0},eg=`pi-web-app-theme`,tg=`--pi-bg.--pi-surface.--pi-surface-hover.--pi-terminal-bg.--pi-terminal-text.--pi-border.--pi-border-muted.--pi-text.--pi-text-secondary.--pi-text-bright.--pi-muted.--pi-dim.--pi-accent.--pi-accent-border.--pi-selection-bg.--pi-success.--pi-success-border.--pi-success-bg.--pi-success-surface.--pi-success-ring.--pi-warning.--pi-warning-border.--pi-warning-surface.--pi-danger.--pi-purple.--pi-purple-border.--pi-purple-surface.--pi-overlay.--pi-shadow-soft.--pi-shadow.--pi-shadow-strong.--pi-bg-overlay-soft.--pi-bg-overlay.--pi-success-bg-overlay.--pi-terminal-selection`.split(`.`),ng=/^[a-z][a-z0-9.-]*:[a-z][a-z0-9.-]*$/u;function rg(){try{let e=window.localStorage.getItem(eg);return e===null?void 0:lg(e)}catch{return}}function ig(e){try{window.localStorage.setItem(eg,JSON.stringify(e))}catch{}}function ag(e){let t=document.documentElement;t.dataset.piWebTheme=e.id,t.style.colorScheme=e.colorScheme;for(let n of tg){let r=e.tokens[n];typeof r==`string`&&r!==``?t.style.setProperty(n,r):t.style.removeProperty(n)}}function og(e){let t=sg(e.themes,e.fallbackThemeId??`themes:classic`),n=e.themes.find(t=>t.id===e.preference.themeId)??t;if(n===void 0)return{selectedTheme:void 0,activeTheme:void 0,selectedThemePair:void 0,fallbackTheme:t};let r=cg(e.themePairs,n.id);if(!e.preference.auto||r===void 0)return{selectedTheme:n,activeTheme:n,selectedThemePair:r,fallbackTheme:t};let i=e.prefersLight?r.light:r.dark;return{selectedTheme:n,activeTheme:e.themes.find(e=>e.id===i)??n,selectedThemePair:r,fallbackTheme:t}}function sg(e,t=Qh){return e.find(e=>e.id===t)??e[0]}function cg(e,t){return e.find(e=>e.light===t||e.dark===t)}function lg(e){let t=e.trim();if(t!==``)try{let e=JSON.parse(t);return ug(e)?e:void 0}catch{return}}function ug(e){if(!dg(e))return!1;let t=e.themeId,n=e.auto;return fg(t)&&typeof n==`boolean`}function dg(e){return typeof e==`object`&&!!e}function fg(e){return typeof e==`string`&&ng.test(e)}var pg=`workspace.delete`,mg=`pi.operation`,hg=`target.workspaceId`;function gg(e){return e?.removal!==void 0&&!e.isMain}function _g(e){return e.removal?.confirmation}function vg(e){return{...e===void 0?{}:{projectId:e},metadata:{[mg]:pg}}}function yg(e){let t={};for(let n of e){let e=Sg(n);if(e===void 0)continue;let r=t[e];(r===void 0||n.createdAt.localeCompare(r.createdAt)>=0)&&(t[e]=n)}return t}function bg(e){return Object.entries(e).filter(([,e])=>Cg(e)).map(([e])=>e)}function xg(e,t){if(t===void 0)return!1;let n=e.workspaceDeletionRuns[t.id];return n!==void 0&&Cg(n)}function Sg(e){return e.metadata[hg]}function Cg(e){return e.status===`queued`||e.status===`running`}function wg(){return[{id:`actions.show`,title:`Show actions`,description:`Open the command palette`,shortcut:`mod+k`,group:`General`,run:e=>{e.openActionPalette()}},{id:`prompt.focus`,title:`Focus prompt`,description:`Move keyboard focus to the message composer`,shortcut:`mod+g c`,group:`General`,run:e=>{e.focusPrompt()}},{id:`machine.add`,title:`Add machine`,description:`Register another PI WEB runtime reachable from this gateway`,group:`Machine`,run:e=>e.addMachine()},{id:`machine.refresh`,title:`Refresh selected machine`,description:`Check whether the selected PI WEB runtime is online`,group:`Machine`,run:e=>e.refreshSelectedMachine()},{id:`machine.open`,title:`Open selected machine PI WEB`,description:`Open the selected remote PI WEB directly in a new tab`,group:`Machine`,enabled:e=>e.state.selectedMachine?.kind===`remote`&&e.state.selectedMachine.baseUrl!==void 0,run:e=>e.openSelectedMachine()},{id:`machine.remove`,title:`Remove selected machine`,description:`Remove the selected remote machine from this gateway`,group:`Machine`,enabled:e=>e.state.selectedMachine?.kind===`remote`,run:e=>e.removeSelectedMachine()},{id:`project.add`,title:`Add project`,group:`Project`,run:e=>e.addProject()},{id:`auth.login`,title:`Configure provider authentication`,description:`Run /login without tying authentication to a session`,group:`General`,run:e=>e.configureAuth()},{id:`auth.logout`,title:`Remove provider authentication`,description:`Run /logout for stored pi credentials`,group:`General`,run:e=>e.logoutAuth()},{id:`theme.select`,title:`Select theme`,description:`Choose the PI WEB color theme`,group:`Preferences`,run:e=>{e.openThemePicker()}},{id:`settings.open`,title:`Open settings`,description:`Manage PI WEB configuration and keyboard shortcuts`,shortcut:`mod+,`,group:`Preferences`,run:e=>{e.piWebUnstable?.openSettings?.()}},{id:`app.reload-page`,title:`Full page reload`,description:`Reload the PI WEB browser page`,group:`General`,run:e=>{e.reloadPage()}},{id:`view.chat`,title:`Go to chat`,shortcut:`mod+1`,group:`Navigation`,run:e=>{e.focusPrompt()}},{id:`view.files`,title:`Go to files`,shortcut:`mod+2`,group:`Navigation`,enabled:Tg,run:e=>{e.selectMainView(`core:workspace.files`)}},{id:`view.terminal`,title:`Go to terminal`,shortcut:`mod+3`,group:`Navigation`,enabled:Tg,run:e=>{e.selectMainView(`core:workspace.terminal`)}},{id:`workspace.refresh-files`,title:`Refresh files`,shortcut:`mod+shift+f`,group:`Workspace`,enabled:Tg,run:e=>e.refreshFiles()},{id:`workspace.delete`,title:`Remove workspace`,description:`Run the owning provider's workspace removal operation`,group:`Workspace`,enabled:Eg,run:e=>e.deleteWorkspace()},{id:`session.start`,title:`Start session`,shortcut:`mod+enter`,group:`Session`,enabled:Tg,run:e=>e.startSession()},{id:`model.select`,title:`Select model`,description:`Choose the model for the selected session`,group:`Session`,enabled:Dg,run:e=>e.openModelPicker()},{id:`thinking.select`,title:`Select thinking level`,description:`Choose the thinking level for the selected session`,group:`Session`,enabled:Dg,run:e=>e.openThinkingLevelPicker()},{id:`session.archive`,title:`Archive session`,description:`Archive the selected session`,group:`Session`,enabled:Og,run:e=>e.archiveSession()},{id:`session.reload`,title:`Reload session from disk`,description:`Close and re-open the selected session from its session file. Use /reload in the prompt for Pi runtime resources.`,group:`Session`,enabled:Ag,run:e=>e.reloadSession()},{id:`session.delete`,title:`Delete new session`,description:`Delete the selected transient new session`,group:`Session`,enabled:kg,run:e=>e.deleteCachedNewSession()},{id:`session.stop`,title:`Stop active work`,shortcut:`mod+.`,group:`Session`,enabled:e=>e.state.selectedSession!==void 0&&bl(e.state.status,e.state.activity),run:e=>e.stopActiveWork()}]}function Tg(e){return e.state.selectedWorkspace!==void 0}function Eg(e){let t=e.state.selectedWorkspace;return gg(t)&&!xg(e.state,t)}function Dg(e){let t=e.state.selectedSession;return t!==void 0&&t.archived!==!0}function Og(e){return sp(e.state.selectedSession,e.state.status)}function kg(e){return cp(e.state.selectedSession,e.state.status)}function Ag(e){return sp(e.state.selectedSession,e.state.status)?!bl(e.state.status,e.state.activity):!1}function jg(e){return typeof e==`string`?Mg(e):h`<span class="tab-custom-icon" aria-hidden="true">${e}</span>`}function Mg(e){switch(e){case`navigation`:return je`
@@ -497,7 +497,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
497
497
  .viewer-header { align-items: flex-start; flex-direction: column; }
498
498
  .viewer-actions { width: 100%; flex-wrap: wrap; }
499
499
  }
500
- `]}};H([S({attribute:!1})],xy.prototype,`machineId`,void 0),H([S({attribute:!1})],xy.prototype,`projectId`,void 0),H([S({attribute:!1})],xy.prototype,`workspaceId`,void 0),H([S({attribute:!1})],xy.prototype,`selectedPath`,void 0),H([S({attribute:!1})],xy.prototype,`file`,void 0),H([S({attribute:!1})],xy.prototype,`loadError`,void 0),H([S({attribute:!1})],xy.prototype,`previewUrlBuilder`,void 0),H([S({attribute:!1})],xy.prototype,`modeStore`,void 0),xy=H([x(`workspace-file-viewer`)],xy);function Sy(e){return JSON.stringify([e.machineId,e.projectId,e.workspaceId,e.selectedPath??null,e.file?.path??null,e.file?.modifiedAt??null,e.file?.mediaType??null])}function Cy(e){return e.mediaType===`image`?`image`:e.mediaType===`html`?`html`:e.mediaType===`pdf`?`pdf`:e.mediaType===`markdown`?`markdown`:e.binary?`download`:`code`}function wy(e,t){return t!==`code`&&t!==`download`&&!e.binary}function Ty(e){return e===`html`?``:void 0}function Ey(e){return e===`image`||e===`html`||e===`pdf`}function Dy(e,t){return`${t===`code`?e.language??`text`:t===`download`?e.mimeType??`binary`:t===`markdown`?`markdown`:e.mimeType??t} · ${Fg(e.size)}${e.truncated?` · truncated`:``}`}function Oy(){by(()=>import(`./CodeViewer-B_rJKGwu.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)}var ky=class extends _{constructor(...e){super(...e),this.destinationFolder=``,this.overwrite=!1,this.createDirs=!0,this.formError=``,this.dragActive=!1,this.dragDepth=0,this.openFilePicker=()=>{this.uploadInput?.click()},this.handleFileInputChange=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0,n=Fy(t?.files);t!==void 0&&(t.value=``),n.length>0&&this.openUploadReview(n)},this.handleDragEnter=e=>{Iy(e)&&(e.preventDefault(),this.dragDepth+=1,this.dragActive=!0)},this.handleDragOver=e=>{Iy(e)&&(e.preventDefault(),e.dataTransfer!==null&&(e.dataTransfer.dropEffect=`copy`),this.dragActive=!0)},this.handleDragLeave=e=>{Iy(e)&&(e.preventDefault(),this.dragDepth=Math.max(0,this.dragDepth-1),this.dragDepth===0&&(this.dragActive=!1))},this.handleDrop=e=>{if(!Iy(e))return;e.preventDefault(),this.dragDepth=0,this.dragActive=!1;let t=Fy(e.dataTransfer?.files),n=this.context;t.length>0&&n!==void 0&&Ny(n,t)},this.handleDestinationInput=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0;this.destinationFolder=t?.value??``,this.formError=``},this.handleCreateDirsChange=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0;this.createDirs=t?.checked??!0},this.handleOverwriteChange=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0;this.overwrite=t?.checked??!1},this.handleDialogKeyDown=e=>{e.key===`Escape`&&(e.preventDefault(),this.closeUploadDialog())}}willUpdate(e){if(!e.has(`context`))return;let t=e.get(`context`);t!==void 0&&this.context!==void 0&&Py(t)!==Py(this.context)&&this.resetPendingUpload()}updated(){this.syncUploadModal()}disconnectedCallback(){this.releaseUploadModal(),super.disconnectedCallback()}render(){let e=this.context;return e===void 0?h`<p class="muted">Files unavailable.</p>`:h`
500
+ `]}};H([S({attribute:!1})],xy.prototype,`machineId`,void 0),H([S({attribute:!1})],xy.prototype,`projectId`,void 0),H([S({attribute:!1})],xy.prototype,`workspaceId`,void 0),H([S({attribute:!1})],xy.prototype,`selectedPath`,void 0),H([S({attribute:!1})],xy.prototype,`file`,void 0),H([S({attribute:!1})],xy.prototype,`loadError`,void 0),H([S({attribute:!1})],xy.prototype,`previewUrlBuilder`,void 0),H([S({attribute:!1})],xy.prototype,`modeStore`,void 0),xy=H([x(`workspace-file-viewer`)],xy);function Sy(e){return JSON.stringify([e.machineId,e.projectId,e.workspaceId,e.selectedPath??null,e.file?.path??null,e.file?.modifiedAt??null,e.file?.mediaType??null])}function Cy(e){return e.mediaType===`image`?`image`:e.mediaType===`html`?`html`:e.mediaType===`pdf`?`pdf`:e.mediaType===`markdown`?`markdown`:e.binary?`download`:`code`}function wy(e,t){return t!==`code`&&t!==`download`&&!e.binary}function Ty(e){return e===`html`?``:void 0}function Ey(e){return e===`image`||e===`html`||e===`pdf`}function Dy(e,t){return`${t===`code`?e.language??`text`:t===`download`?e.mimeType??`binary`:t===`markdown`?`markdown`:e.mimeType??t} · ${Fg(e.size)}${e.truncated?` · truncated`:``}`}function Oy(){by(()=>import(`./CodeViewer-BDNVRbqY.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)}var ky=class extends _{constructor(...e){super(...e),this.destinationFolder=``,this.overwrite=!1,this.createDirs=!0,this.formError=``,this.dragActive=!1,this.dragDepth=0,this.openFilePicker=()=>{this.uploadInput?.click()},this.handleFileInputChange=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0,n=Fy(t?.files);t!==void 0&&(t.value=``),n.length>0&&this.openUploadReview(n)},this.handleDragEnter=e=>{Iy(e)&&(e.preventDefault(),this.dragDepth+=1,this.dragActive=!0)},this.handleDragOver=e=>{Iy(e)&&(e.preventDefault(),e.dataTransfer!==null&&(e.dataTransfer.dropEffect=`copy`),this.dragActive=!0)},this.handleDragLeave=e=>{Iy(e)&&(e.preventDefault(),this.dragDepth=Math.max(0,this.dragDepth-1),this.dragDepth===0&&(this.dragActive=!1))},this.handleDrop=e=>{if(!Iy(e))return;e.preventDefault(),this.dragDepth=0,this.dragActive=!1;let t=Fy(e.dataTransfer?.files),n=this.context;t.length>0&&n!==void 0&&Ny(n,t)},this.handleDestinationInput=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0;this.destinationFolder=t?.value??``,this.formError=``},this.handleCreateDirsChange=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0;this.createDirs=t?.checked??!0},this.handleOverwriteChange=e=>{let t=e.currentTarget instanceof HTMLInputElement?e.currentTarget:void 0;this.overwrite=t?.checked??!1},this.handleDialogKeyDown=e=>{e.key===`Escape`&&(e.preventDefault(),this.closeUploadDialog())}}willUpdate(e){if(!e.has(`context`))return;let t=e.get(`context`);t!==void 0&&this.context!==void 0&&Py(t)!==Py(this.context)&&this.resetPendingUpload()}updated(){this.syncUploadModal()}disconnectedCallback(){this.releaseUploadModal(),super.disconnectedCallback()}render(){let e=this.context;return e===void 0?h`<p class="muted">Files unavailable.</p>`:h`
501
501
  <section
502
502
  class=${this.dragActive?`files-panel dragging`:`files-panel`}
503
503
  @dragenter=${this.handleDragEnter}
@@ -667,7 +667,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
667
667
  .review-file span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
668
668
  .dialog-error { border: 1px solid var(--pi-danger); border-radius: 8px; background: color-mix(in srgb, var(--pi-danger) 10%, transparent); color: var(--pi-danger); padding: 9px; line-height: 1.35; overflow-wrap: anywhere; }
669
669
  footer { display: flex; justify-content: flex-end; gap: 8px; padding-top: 4px; }
670
- `]}};H([S({attribute:!1})],ky.prototype,`context`,void 0),H([w(`#workspace-upload-input`)],ky.prototype,`uploadInput`,void 0),H([w(`.dialog-backdrop`)],ky.prototype,`uploadDialogBackdrop`,void 0),H([w(`.upload-dialog`)],ky.prototype,`uploadDialog`,void 0),H([C()],ky.prototype,`pendingUpload`,void 0),H([C()],ky.prototype,`destinationFolder`,void 0),H([C()],ky.prototype,`overwrite`,void 0),H([C()],ky.prototype,`createDirs`,void 0),H([C()],ky.prototype,`formError`,void 0),H([C()],ky.prototype,`dragActive`,void 0),ky=H([x(`workspace-files-panel`)],ky);function Ay(e,t){return Object.values(e).filter(e=>e.projectId===t.projectId&&e.workspaceId===t.workspaceId&&e.machineId===t.machineId).sort((e,t)=>t.startedAt.localeCompare(e.startedAt))}function jy(e,t){if(e.length===0)return`Choose at least one file to upload.`;for(let n of e)try{Ws(t,n.name)}catch(e){return y(e)}}function My(e){return{destinationFolder:e,createDirs:!0,overwrite:!1}}function Ny(e,t){if(t.length!==0)return e.onStartWorkspaceUpload(t,{destinationFolder:e.workspaceUploadDefaultFolder,createDirs:!0,overwrite:!1,selectUploadedFile:!0})}function Py(e){return`${e.machine.id}:${e.workspace.projectId}:${e.workspace.id}`}function Fy(e){return e==null?[]:Array.from(e)}function Iy(e){return Array.from(e.dataTransfer?.types??[]).includes(`Files`)}function Ly(e){let t=e.getRootNode();return t instanceof ShadowRoot&&t.host instanceof HTMLElement?t.host:e}function Ry(e){let t=e.filter(e=>e.status===`uploading`).length;return t===0?`${String(e.length)} recent`:`${String(t)} uploading`}function zy(e){let t=e.files.length,n=t===1?`file`:`files`;switch(e.status){case`completed`:return`Uploaded ${String(t)} ${n}`;case`error`:return`Upload failed for ${String(t)} ${n}`;case`cancelled`:return`Upload cancelled for ${String(t)} ${n}`;case`uploading`:return`Uploading ${String(t)} ${n}`}}function By(e){switch(e.status){case`completed`:return`Done`;case`error`:return`Failed`;case`cancelled`:return`Cancelled`;case`uploading`:return Wy(e.percent)}}function Vy(e){return e.status===`uploading`?e.percent:1}function Hy(e){switch(e.status){case`pending`:return`Pending`;case`uploading`:return Wy(e.percent);case`completed`:return`Done`;case`error`:return`Error`;case`cancelled`:return`Cancelled`}}function Uy(e){return e.error===void 0?e.response===void 0?`${e.path} · ${Fg(e.loaded)} / ${Fg(e.total)}`:`Wrote ${e.response.path}`:e.error}function Wy(e){return`${String(Math.round(Math.max(0,Math.min(1,e))*100))}%`}function Gy(){return[{id:`workspace.files`,title:`Files`,icon:Mg(`files`),order:10,routeAliases:[`files`],render:Ky},{id:`workspace.terminal`,title:`Terminal`,icon:Mg(`terminal`),order:30,badge:e=>e.activeTerminalCount>0?e.activeTerminalCount:void 0,render:qy}]}function Ky(e){return h`<workspace-files-panel .context=${e}></workspace-files-panel>`}function qy(e){return Jy(),h`<terminal-panel .workspace=${e.workspace} .machineId=${e.machine.id} .selectedTerminalId=${e.selectedTerminalId} .autoStart=${e.terminalAutoStart} .onSelectTerminal=${e.onSelectTerminal}></terminal-panel>`}function Jy(){by(()=>import(`./TerminalPanel-BEQXdgKi.js`),__vite__mapDeps([4,5,6]),import.meta.url)}var Yy={apiVersion:2,name:`PI WEB Core`,activate:()=>({contributions:{actions:wg(),workspacePanels:Gy()}})},Xy={"--pi-bg":`#0d1117`,"--pi-surface":`#161b22`,"--pi-surface-hover":`#21262d`,"--pi-terminal-bg":`#05070a`,"--pi-terminal-text":`#e6edf3`,"--pi-border":`#30363d`,"--pi-border-muted":`#21262d`,"--pi-text":`#e6edf3`,"--pi-text-secondary":`#c9d1d9`,"--pi-text-bright":`#f0f6fc`,"--pi-muted":`#8b949e`,"--pi-dim":`#6e7681`,"--pi-accent":`#58a6ff`,"--pi-accent-border":`#2f81f7`,"--pi-selection-bg":`#0d2847`,"--pi-success":`#3fb950`,"--pi-success-border":`#238636`,"--pi-success-bg":`#0f1b12`,"--pi-success-surface":`#0f2a16`,"--pi-success-ring":`#3fb95055`,"--pi-warning":`#d29922`,"--pi-warning-border":`#6e5200`,"--pi-warning-surface":`#1f1a10`,"--pi-danger":`#ff7b72`,"--pi-purple":`#d2a8ff`,"--pi-purple-border":`#a371f7`,"--pi-purple-surface":`#21132f`,"--pi-overlay":`#0008`,"--pi-shadow-soft":`#0006`,"--pi-shadow":`#0008`,"--pi-shadow-strong":`#000b`,"--pi-bg-overlay-soft":`#0d1117dd`,"--pi-bg-overlay":`#0d1117e6`,"--pi-success-bg-overlay":`#0f1b12ee`,"--pi-terminal-selection":`#264f78`},Zy={"--pi-bg":`#070912`,"--pi-surface":`#101527`,"--pi-surface-hover":`#151b31`,"--pi-terminal-bg":`#050710`,"--pi-terminal-text":`#f7f4ff`,"--pi-border":`#26304f`,"--pi-border-muted":`#26304f`,"--pi-text":`#f7f4ff`,"--pi-text-secondary":`#aaa4bd`,"--pi-text-bright":`#ffffff`,"--pi-muted":`#aaa4bd`,"--pi-dim":`#817a99`,"--pi-accent":`#7c3cff`,"--pi-accent-border":`#5a47b0`,"--pi-selection-bg":`#1d2547`,"--pi-success":`#00f0d8`,"--pi-success-border":`#00f0d8`,"--pi-success-bg":`#071e22`,"--pi-success-surface":`#092d31`,"--pi-success-ring":`#00f0d855`,"--pi-warning":`#ffb000`,"--pi-warning-border":`#ffb000`,"--pi-warning-surface":`#16140d`,"--pi-danger":`#ff4f7b`,"--pi-purple":`#b7a2ff`,"--pi-purple-border":`#7c3cff`,"--pi-purple-surface":`#181026`,"--pi-overlay":`#0008`,"--pi-shadow-soft":`#0006`,"--pi-shadow":`#0008`,"--pi-shadow-strong":`#000b`,"--pi-bg-overlay-soft":`#070912dd`,"--pi-bg-overlay":`#070912e6`,"--pi-success-bg-overlay":`#071e22ee`,"--pi-terminal-selection":`#3d4a78`},Qy={"--pi-bg":`#f7f1e6`,"--pi-surface":`#fff9ee`,"--pi-surface-hover":`#f0e6d6`,"--pi-terminal-bg":`#15131b`,"--pi-terminal-text":`#fff9ee`,"--pi-border":`#c9bca8`,"--pi-border-muted":`#d8cdbc`,"--pi-text":`#15131b`,"--pi-text-secondary":`#15131b`,"--pi-text-bright":`#15131b`,"--pi-muted":`#5f586a`,"--pi-dim":`#766f7e`,"--pi-accent":`#6430d8`,"--pi-accent-border":`#6430d8`,"--pi-selection-bg":`#eadff8`,"--pi-success":`#008c82`,"--pi-success-border":`#008c82`,"--pi-success-bg":`#e1f4ef`,"--pi-success-surface":`#d7f0ec`,"--pi-success-ring":`#008c8255`,"--pi-warning":`#b05f00`,"--pi-warning-border":`#b05f00`,"--pi-warning-surface":`#fff2d2`,"--pi-danger":`#b51d49`,"--pi-purple":`#6430d8`,"--pi-purple-border":`#6430d8`,"--pi-purple-surface":`#eadff8`,"--pi-overlay":`#15131b66`,"--pi-shadow-soft":`#15131b22`,"--pi-shadow":`#15131b33`,"--pi-shadow-strong":`#15131b44`,"--pi-bg-overlay-soft":`#f7f1e6dd`,"--pi-bg-overlay":`#f7f1e6e6`,"--pi-success-bg-overlay":`#e1f4efee`,"--pi-terminal-selection":`#8d7b64`},$y={"--pi-bg":`#000000`,"--pi-surface":`#0d0d0d`,"--pi-surface-hover":`#1a1a1a`,"--pi-terminal-bg":`#000000`,"--pi-terminal-text":`#ffffff`,"--pi-border":`#5c5c5c`,"--pi-border-muted":`#3d3d3d`,"--pi-text":`#ffffff`,"--pi-text-secondary":`#e6e6e6`,"--pi-text-bright":`#ffffff`,"--pi-muted":`#b3b3b3`,"--pi-dim":`#8f8f8f`,"--pi-accent":`#4dc3ff`,"--pi-accent-border":`#4dc3ff`,"--pi-selection-bg":`#00263a`,"--pi-success":`#3ff05a`,"--pi-success-border":`#3ff05a`,"--pi-success-bg":`#001a06`,"--pi-success-surface":`#00280b`,"--pi-success-ring":`#3ff05a66`,"--pi-warning":`#ffcc33`,"--pi-warning-border":`#ffcc33`,"--pi-warning-surface":`#251c00`,"--pi-danger":`#ff6b6b`,"--pi-purple":`#c9a3ff`,"--pi-purple-border":`#c9a3ff`,"--pi-purple-surface":`#180d29`,"--pi-overlay":`#000000cc`,"--pi-shadow-soft":`#00000099`,"--pi-shadow":`#000000bb`,"--pi-shadow-strong":`#000000e6`,"--pi-bg-overlay-soft":`#000000dd`,"--pi-bg-overlay":`#000000f2`,"--pi-success-bg-overlay":`#001a06ee`,"--pi-terminal-selection":`#00456b`},eb={"--pi-bg":`#14110e`,"--pi-surface":`#1d1915`,"--pi-surface-hover":`#26211b`,"--pi-terminal-bg":`#100d0b`,"--pi-terminal-text":`#e8ddcc`,"--pi-border":`#3a3229`,"--pi-border-muted":`#2b2520`,"--pi-text":`#e8ddcc`,"--pi-text-secondary":`#cbbfad`,"--pi-text-bright":`#fff4e0`,"--pi-muted":`#9c9081`,"--pi-dim":`#7a6f62`,"--pi-accent":`#e0a35c`,"--pi-accent-border":`#b8813f`,"--pi-selection-bg":`#2e2415`,"--pi-success":`#8fbf6f`,"--pi-success-border":`#6d9954`,"--pi-success-bg":`#161c12`,"--pi-success-surface":`#1e2718`,"--pi-success-ring":`#8fbf6f55`,"--pi-warning":`#d9a441`,"--pi-warning-border":`#9c7429`,"--pi-warning-surface":`#241c0f`,"--pi-danger":`#d97b6c`,"--pi-purple":`#b79ad1`,"--pi-purple-border":`#8d74a8`,"--pi-purple-surface":`#221a2b`,"--pi-overlay":`#0a0806cc`,"--pi-shadow-soft":`#00000055`,"--pi-shadow":`#00000077`,"--pi-shadow-strong":`#000000aa`,"--pi-bg-overlay-soft":`#14110edd`,"--pi-bg-overlay":`#14110ee6`,"--pi-success-bg-overlay":`#161c12ee`,"--pi-terminal-selection":`#3d3121`},tb={"--pi-bg":`#fbfbf9`,"--pi-surface":`#ffffff`,"--pi-surface-hover":`#f1f1ee`,"--pi-terminal-bg":`#1c1c1a`,"--pi-terminal-text":`#fbfbf9`,"--pi-border":`#c7c7c1`,"--pi-border-muted":`#e0e0da`,"--pi-text":`#1c1c1a`,"--pi-text-secondary":`#33332f`,"--pi-text-bright":`#000000`,"--pi-muted":`#5e5e58`,"--pi-dim":`#7c7c75`,"--pi-accent":`#1f5fd0`,"--pi-accent-border":`#1f5fd0`,"--pi-selection-bg":`#e2ecfb`,"--pi-success":`#0f7a4a`,"--pi-success-border":`#0f7a4a`,"--pi-success-bg":`#e6f5ed`,"--pi-success-surface":`#d9efe3`,"--pi-success-ring":`#0f7a4a55`,"--pi-warning":`#8a5a00`,"--pi-warning-border":`#8a5a00`,"--pi-warning-surface":`#fdf0d5`,"--pi-danger":`#b02020`,"--pi-purple":`#5b3fc7`,"--pi-purple-border":`#5b3fc7`,"--pi-purple-surface":`#ece7fb`,"--pi-overlay":`#1c1c1a66`,"--pi-shadow-soft":`#1c1c1a1a`,"--pi-shadow":`#1c1c1a2b`,"--pi-shadow-strong":`#1c1c1a40`,"--pi-bg-overlay-soft":`#fbfbf9dd`,"--pi-bg-overlay":`#fbfbf9e6`,"--pi-success-bg-overlay":`#e6f5edee`,"--pi-terminal-selection":`#9ab4d8`},nb={apiVersion:2,name:`PI WEB Themes`,activate:()=>({contributions:{themes:[{id:`pi-web-dark`,name:`PI WEB Dark`,description:`Dark PI WEB palette.`,order:10,colorScheme:`dark`,tokens:Zy},{id:`pi-web-light`,name:`PI WEB Light`,description:`Light PI WEB palette.`,order:20,colorScheme:`light`,tokens:Qy},{id:`classic`,name:`PI WEB Classic`,description:`The original PI WEB dark palette.`,order:30,colorScheme:`dark`,tokens:Xy},{id:`high-contrast`,name:`High Contrast`,description:`Near-black behind near-white, for bright rooms and tired eyes.`,order:40,colorScheme:`dark`,tokens:$y},{id:`night`,name:`Night`,description:`Warm and dim, with an amber accent instead of blue light.`,order:50,colorScheme:`dark`,tokens:eb},{id:`paper`,name:`Paper`,description:`Untinted ink on paper, for daylight and for screenshots.`,order:60,colorScheme:`light`,tokens:tb}],themePairs:[{id:`pi-web`,name:`PI WEB`,description:`Follow the system light/dark preference with PI WEB themes.`,order:10,light:`pi-web-light`,dark:`pi-web-dark`}]}})};async function rb(e=`pi-web-plugins/manifest.json`,t={}){let n=Ze(e),r=await ob(n);if(r===void 0)return{registrations:[],failures:[]};let i=[],a=[],o=await Promise.all(r.plugins.map(async e=>{if(t.shouldLoadPlugin?.(e)!==!1)try{let r=ib(e.module,n),i=db(await(t.moduleLoader??ab)(r),r);return{registration:{id:t.machineId===void 0?e.id:Sl(t.machineId,e.id),plugin:i,machineSpecific:e.machineSpecific,...e.backendRevision===void 0?{}:{backendRevision:e.backendRevision},...t.machineId===void 0?{}:{machineId:t.machineId,sourcePluginId:e.id}}}}catch(t){return{failure:{entry:e,error:t}}}}));for(let e of o)e!==void 0&&(`registration`in e?i.push(e.registration):a.push(e.failure));return{registrations:i,failures:a}}function ib(e,t,n){return e.startsWith(`/`)?n===void 0?Ze(e):Ze(e,n):new URL(e,t).toString()}async function ab(e){return by(()=>import(e),[],import.meta.url)}async function ob(e){let t=await fetch(e,{cache:`no-store`});if(t.status!==404){if(!t.ok)throw Error(await cb(t));return sb(await t.json())}}function sb(e){if(!pb(e)||!Array.isArray(e.plugins))throw Error(`Invalid plugin manifest`);let t=e.plugins.map(e=>{if(!pb(e)||typeof e.id!=`string`||typeof e.module!=`string`||e.module===``)throw Error(`Invalid plugin manifest entry`);let t=e.id;if(!mn(t))throw Error(`Invalid plugin manifest id: ${t}`);if(hn(t))throw Error(`Reserved plugin manifest id: ${t}`);return{id:t,module:e.module,...lb(e.backendRevision),machineSpecific:ub(e.machineSpecific)}}),n=new Set;for(let e of t){if(n.has(e.id))throw Error(`Duplicate plugin manifest id: ${e.id}`);n.add(e.id)}return{plugins:t}}async function cb(e){let t;try{let n=await e.json();if(pb(n)){let e=n.error,r=n.detail;t=typeof r==`string`?`${typeof e==`string`?`${e}: `:``}${r}`:typeof e==`string`?e:void 0}}catch{}return`Failed to load plugin manifest (${`${String(e.status)}${e.statusText===``?``:` ${e.statusText}`}`})${t===void 0?``:`: ${t}`}`}function lb(e){if(e===void 0)return{};try{return{backendRevision:xs(e)}}catch{throw Error(`Invalid plugin manifest entry`)}}function ub(e){if(e===void 0)return!1;if(typeof e!=`boolean`)throw Error(`Invalid plugin manifest entry`);return e}function db(e,t){if(!pb(e))throw Error(`Plugin module ${t} did not export an object`);let n=e.default;if(pb(n)&&n.apiVersion!==2)throw Error(`Unsupported browser plugin API version for ${t}: ${String(n.apiVersion)} (expected 2)`);if(!fb(n))throw Error(`Plugin module ${t} default export is not a PiWebPlugin`);return n}function fb(e){return pb(e)&&e.apiVersion===2&&typeof e.name==`string`&&typeof e.activate==`function`}function pb(e){return typeof e==`object`&&!!e}var mb=/^[a-z][a-z0-9.-]*$/u,hb=/^[a-z][a-z0-9.-]*$/u,gb=/^[a-z][a-z0-9.-]*:[a-z][a-z0-9.-]*$/u,_b=/^[a-z][a-z0-9.-]*(?::[a-z][a-z0-9.-]*)?$/u,vb=new WeakMap,yb=new WeakMap,bb=new WeakMap,xb=class{constructor(){this.actions=[],this.workspacePanels=[],this.workspaceLabels=[],this.themes=[],this.themePairs=[],this.pluginIds=new Set,this.registeringPluginIds=new Set,this.gatewayPluginIds=new Set,this.gatewayMachineSpecificPluginIds=new Set,this.remoteMachineSpecificPluginIds=new Map,this.contributionIds=new Set}register(e){let{plugin:t}=e,n=e.id,r=e.sourcePluginId??n;this.validatePluginId(n),this.validatePluginId(r);let i=this.parseMachineSpecific(n,e.machineSpecific),a=this.parseBackendRevision(n,e.backendRevision);if(this.pluginIds.has(n)||this.registeringPluginIds.has(n))throw Error(`Duplicate plugin id: ${n}`);if(!this.isRemoteDuplicateHiddenByGateway(e.sourcePluginId,e.machineId,i)){this.registeringPluginIds.add(n);try{let o=t.apiVersion;if(o!==2)throw Error(`Unsupported browser plugin API version for ${r}: ${String(o)} (expected 2)`);let s=t.activate(Object.freeze({apiVersion:2,pluginId:r,runtimePluginId:n,html:h,svg:je})).contributions,c=new Set,l=(s.actions??[]).map(t=>this.qualifyAction(n,t,e.machineId,e.sourcePluginId,c)),u=(s.workspacePanels??[]).map(t=>this.qualifyWorkspacePanel(n,t,e.machineId,e.sourcePluginId,a,c)),d=(s.workspaceLabels??[]).map(t=>this.qualifyWorkspaceLabelContribution(n,t,e.machineId,e.sourcePluginId,a,c)),f=e.machineId===void 0?(s.themes??[]).map(e=>this.qualifyTheme(n,e,c)):[],p=e.machineId===void 0?(s.themePairs??[]).map(e=>this.qualifyThemePair(n,e,c)):[];this.pluginIds.add(n);for(let e of c)this.contributionIds.add(e);this.actions.push(...l),this.workspacePanels.push(...u),this.workspaceLabels.push(...d),this.themes.push(...f),this.themePairs.push(...p),e.machineId===void 0?(this.gatewayPluginIds.add(n),i&&this.gatewayMachineSpecificPluginIds.add(n)):e.sourcePluginId!==void 0&&i&&kb(this.remoteMachineSpecificPluginIds,e.sourcePluginId,e.machineId)}finally{this.registeringPluginIds.delete(n)}}}hasPlugin(e){return this.pluginIds.has(e)}shouldLoadRemotePlugin(e,t=!1){return!this.gatewayPluginIds.has(e)||this.gatewayMachineSpecificPluginIds.has(e)||t}getActions(e){let t=Mb(e);return this.actions.filter(e=>this.isContributionActive(e.pluginId,e.machineId,t,e.sourcePluginId)).map(t=>{let n=Sb(e,t.pluginId),r=t.enabled?.(n),i=r===!1?t.disabledReason?.(n):void 0,a={id:t.id,pluginId:t.pluginId,localId:t.localId,...t.machineId===void 0?{}:{machineId:t.machineId},title:t.title,run:()=>t.run(n)};return t.description!==void 0&&(a.description=t.description),t.shortcut!==void 0&&(a.shortcut=t.shortcut),t.shortcutAliases!==void 0&&(a.shortcutAliases=[...t.shortcutAliases]),t.group!==void 0&&(a.group=t.group),r!==void 0&&(a.enabled=r),i!==void 0&&i!==``&&(a.disabledReason=i),a})}getWorkspacePanels(){return[...this.workspacePanels].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.title.localeCompare(t.title))}resolveWorkspacePanelRouteId(e,t){let n=this.workspacePanels.filter(e=>this.isContributionActive(e.pluginId,e.machineId,t,e.sourcePluginId)),r=n.find(t=>t.id===e);if(r!==void 0)return r.id;let i=n.filter(t=>t.routeAliases?.includes(e)===!0);if(i.length===1)return i[0]?.id;i.length>1&&console.warn(`Ambiguous PI WEB workspace panel route: ${e}`)}async invalidateWorkspacePanels(e,t){await Promise.all(this.workspacePanels.map(async n=>{if(!(n.onInvalidate===void 0||t!==void 0&&n.id!==t))try{await n.onInvalidate(e)}catch(e){console.warn(`Failed to invalidate PI WEB plugin panel ${n.id}`,e)}}))}getThemes(){return[...this.themes].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.name.localeCompare(t.name))}getThemePairs(){return[...this.themePairs].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.name.localeCompare(t.name))}getWorkspaceLabelItems(e){return[...this.workspaceLabels].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.id.localeCompare(t.id)).flatMap(t=>t.visible?.(e)===!1?[]:t.items(e))}qualifyAction(e,t,n,r,i){let a=this.qualify(e,t.id,i),o=`${r??e}:${t.id}`,s=this.parseShortcutAliases(a,t.shortcutAliases,o);return{...t,id:a,pluginId:e,localId:t.id,...s.length===0?{}:{shortcutAliases:s},...n===void 0?{}:{machineId:n},...r===void 0?{}:{sourcePluginId:r}}}qualifyWorkspacePanel(e,t,n,r,i,a){let o=this.qualify(e,t.id,a),s=t.badge,c=t.visible,l=t.onInvalidate,u=Ob(e,r,i),d=`${r??e}:${t.id}`,f=this.parseRouteAliases(o,t.routeAliases,d);return{...t,id:o,pluginId:e,localId:t.id,...f.length===0?{}:{routeAliases:f},...n===void 0?{}:{machineId:n},...r===void 0?{}:{sourcePluginId:r},visible:t=>this.isContributionActive(e,n,t.machine.id,r)&&(c?.(Cb(t,u))??!0),...s===void 0?{}:{badge:t=>this.isContributionActive(e,n,t.machine.id,r)?s(Cb(t,u)):void 0},...l===void 0?{}:{onInvalidate:t=>this.isContributionActive(e,n,t.machine.id,r)?l(Cb(t,u)):void 0},render:e=>t.render(Cb(e,u))}}qualifyWorkspaceLabelContribution(e,t,n,r,i,a){let o=this.qualify(e,t.id,a),s=t.visible,c=t.items,l=Ob(e,r,i);return{...t,id:o,pluginId:e,localId:t.id,...n===void 0?{}:{machineId:n},visible:t=>this.isContributionActive(e,n,t.machine.id,r)&&(s?.(wb(t,l))??!0),items:t=>this.isContributionActive(e,n,t.machine.id,r)?c(wb(t,l)):[]}}qualifyTheme(e,t,n){let r=this.qualify(e,t.id,n);return{...t,id:r,pluginId:e,localId:t.id}}qualifyThemePair(e,t,n){let r=this.qualify(e,t.id,n);return{...t,id:r,pluginId:e,localId:t.id,light:this.qualifyReference(e,t.light),dark:this.qualifyReference(e,t.dark)}}qualify(e,t,n){this.validateLocalId(t);let r=`${e}:${t}`;if(this.contributionIds.has(r)||n.has(r))throw Error(`Duplicate contribution id: ${r}`);return n.add(r),r}qualifyReference(e,t){return this.validateLocalId(t),`${e}:${t}`}isContributionActive(e,t,n,r){return t===void 0?!this.isGatewayPluginHiddenForMachine(e,n):t===n&&!this.isRemotePluginHiddenByGateway(r,t)}isRemoteDuplicateHiddenByGateway(e,t,n){return e!==void 0&&t!==void 0&&this.gatewayPluginIds.has(e)&&!this.gatewayMachineSpecificPluginIds.has(e)&&!n}isRemotePluginHiddenByGateway(e,t){return e===void 0||this.gatewayMachineSpecificPluginIds.has(e)||this.remoteMachineSpecificPluginIds.get(e)?.has(t)===!0?!1:this.gatewayPluginIds.has(e)}isGatewayPluginHiddenForMachine(e,t){return t!==`local`&&(this.gatewayMachineSpecificPluginIds.has(e)||this.remoteMachineSpecificPluginIds.get(e)?.has(t)===!0)}parseShortcutAliases(e,t,n){let r=[...new Set([...t??[],n])].filter(t=>t!==e),i=r.find(e=>!Ab(e));if(i!==void 0)throw Error(`Invalid shortcut alias for ${e}: ${i}`);return r.filter(Ab)}parseRouteAliases(e,t,n){let r=[...new Set([...t??[],n])].filter(t=>t!==e);for(let t of r)if(!_b.test(t))throw Error(`Invalid workspace panel route alias for ${e}: ${t}`);return r}validatePluginId(e){if(!mb.test(e))throw Error(`Invalid plugin id: ${e}`)}validateLocalId(e){if(!hb.test(e))throw Error(`Invalid contribution id: ${e}`)}parseBackendRevision(e,t){if(t!==void 0)try{return xs(t)}catch{throw Error(`Invalid plugin backend revision for ${e}`)}}parseMachineSpecific(e,t){if(t===void 0)return!1;if(typeof t!=`boolean`)throw Error(`Invalid plugin machineSpecific value for ${e}: ${jb(t)}`);return t}};function Sb(e,t){return vb.get(e)?.(t)??e}function Cb(e,t){return yb.get(e)?.(t)??e}function wb(e,t){return bb.get(e)?.(t)??e}function Tb(e,t){return vb.set(e,t),e}function Eb(e,t){return yb.set(e,t),e}function Db(e,t){return bb.set(e,t),e}function Ob(e,t,n){return Object.freeze({registrationPluginId:e,sourcePluginId:t??e,...n===void 0?{}:{backendRevision:n}})}function kb(e,t,n){let r=e.get(t);r===void 0?e.set(t,new Set([n])):r.add(n)}function Ab(e){return gb.test(e)}function jb(e){if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`||typeof e==`symbol`||typeof e==`function`||e==null)return String(e);try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}}function Mb(e){return e.state.selectedMachine?.id??`local`}function Nb(e,t,n,r=As){let i=e.backendRevision;if(i!==void 0)return{request:(a,o)=>r({pluginId:e.sourcePluginId,backendRevision:i,machineId:n,projectId:t.projectId,workspaceId:t.id},a,o)}}function Pb(e,t,n,r){return{readFile:r=>e.workspaceFile(t.projectId,t.id,r,n),listFiles:r=>e.workspaceTree(t.projectId,t.id,r,n),writeFile:async(i,a,o)=>{let s=await e.writeWorkspaceFile(t.projectId,t.id,i,a,o,n);return r?.(),s},deleteFile:async i=>{let a=await e.deleteWorkspaceFile(t.projectId,t.id,i,n);return r?.(),a},moveFile:async(i,a,o)=>{let s=await e.moveWorkspaceFile(t.projectId,t.id,i,a,o,n);return r?.(),s}}}var Fb=class{constructor(e,t={}){this.callbacks=e,this.refreshes=new Jl,this.connected=!1,this.onFocus=()=>{this.handleResumeSignal()},this.onVisibilityChange=()=>{this.isDocumentVisible()&&this.handleResumeSignal()},this.windowTarget=t.windowTarget??Ib(),this.documentTarget=t.documentTarget??Lb(),this.isDocumentVisible=t.isDocumentVisible??Rb,this.scheduleFrame=t.scheduleFrame??zb}connect(){this.connected||(this.connected=!0,this.windowTarget?.addEventListener(`focus`,this.onFocus),this.documentTarget?.addEventListener(`visibilitychange`,this.onVisibilityChange))}disconnect(){this.connected&&(this.connected=!1,this.windowTarget?.removeEventListener(`focus`,this.onFocus),this.documentTarget?.removeEventListener(`visibilitychange`,this.onVisibilityChange),this.scheduledRefresh?.cancel(),this.scheduledRefresh=void 0)}handleResumeSignal(){this.callbacks.onResumeSignal(),this.scheduledRefresh===void 0&&(this.scheduledRefresh=this.scheduleFrame(()=>{this.scheduledRefresh=void 0,this.connected&&this.refreshes.request(`browser-resume`,async()=>{this.connected&&await this.callbacks.refreshAfterResume()}).catch(e=>{this.callbacks.onRefreshError(e)})}))}};function Ib(){return typeof window>`u`?void 0:window}function Lb(){return typeof document>`u`?void 0:document}function Rb(){return typeof document>`u`||document.visibilityState===`visible`}function zb(e){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){let t=window.requestAnimationFrame(()=>{e()});return{cancel:()=>{window.cancelAnimationFrame(t)}}}let t=globalThis.setTimeout(e,0);return{cancel:()=>{globalThis.clearTimeout(t)}}}var Bb=[`machines`,`projects`,`workspaces`,`sessions`];function Vb(e){return e.selectedWorkspace===void 0?e.selectedProject===void 0?`projects`:`workspaces`:`sessions`}function Hb(e,t){if(e!==`none`)return e??Vb(t)}function Ub(e,t){return Hb(t.expanded,t.state)!==e}function Wb(e,t,n){return Hb(e,n.state)===t?`none`:t}function Gb(e){return e.workspaceCount===1?`sessions`:`workspaces`}function Kb(e){return Bb[Bb.indexOf(e)+1]}var qb=class{hostConnected(){}constructor(e,t){this.host=e,this.getState=t,e.addController(this)}expandedSection(){return Hb(this.expanded,this.getState())}isCollapsed(e){return Ub(e,{expanded:this.expanded,state:this.getState()})}toggle(e){this.setExpanded(Wb(this.expanded,e,{state:this.getState()}))}expand(e){this.setExpanded(e)}advanceAfterSelection(e,t){let n=e===`projects`?Gb({workspaceCount:t?.workspaceCount}):Kb(e);n!==void 0&&this.expand(n)}open(e,t){this.expand(e),t()}setExpanded(e){this.expanded!==e&&(this.expanded=e,this.host.requestUpdate())}};function Jb(e){return e.isMobileNavigationLayout||e.navigationCollapsed}var Yb=class{hostConnected(){}constructor(e){this.host=e,this.navigationPanelCollapsed=!1,this.workspacePanelCollapsed=!1,e.addController(this)}toggleNavigationPanel(){this.navigationPanelCollapsed=!this.navigationPanelCollapsed,this.host.requestUpdate()}toggleWorkspacePanel(){this.workspacePanelCollapsed=!this.workspacePanelCollapsed,this.host.requestUpdate()}expandNavigationPanel(){this.navigationPanelCollapsed&&(this.navigationPanelCollapsed=!1,this.host.requestUpdate())}expandWorkspacePanel(){this.workspacePanelCollapsed&&(this.workspacePanelCollapsed=!1,this.host.requestUpdate())}shellClass(e,t=!0){return[`shell`,Zb(e),...this.navigationPanelCollapsed?[`navigation-panel-collapsed`]:[],...Xb(this.workspacePanelCollapsed,t)?[]:[`workspace-panel-collapsed`]].join(` `)}};function Xb(e,t){return!e&&t}function Zb(e){return e===`navigation`?`navigation-view`:e===`chat`?`chat-view`:`workspace-view`}var Qb=`pi-web:panel-sizes:v1`,$b={navigation:{minWidth:180,maxWidth:4096,defaultWidth:340,keyboardStep:24,largeKeyboardStep:72},workspace:{minWidth:240,maxWidth:4096,defaultWidth:480,keyboardStep:24,largeKeyboardStep:72}},ex=class{constructor(e,t={}){this.host=e,e.addController(this),this.storage=t.storage??mx(),this.panelSizes=ox(this.storage)}hostConnected(){}constraints(e){return tx(e)}panelWidth(e,t){return ax(e,t??this.storedPanelWidth(e)??this.constraints(e).defaultWidth)}resizePanel(e,t,n={}){let r=ax(e,t);this.storedPanelWidth(e)!==r&&(this.panelSizes=ux(this.panelSizes,e,r),n.persist!==!1&&this.persistPanelSizes(),this.host.requestUpdate())}resetPanel(e,t={}){this.storedPanelWidth(e)!==void 0&&(this.panelSizes=dx(this.panelSizes,e),t.persist!==!1&&this.persistPanelSizes(),this.host.requestUpdate())}resetPanels(e={}){this.panelSizes.navigationPanelWidth===void 0&&this.panelSizes.workspacePanelWidth===void 0||(this.panelSizes={},e.persist!==!1&&this.persistPanelSizes(),this.host.requestUpdate())}persistPanelSizes(){sx(this.panelSizes,this.storage)}shellStyle(e={}){let t=[];return this.panelSizes.navigationPanelWidth!==void 0&&t.push(`--navigation-panel-size: ${px(ax(`navigation`,this.panelSizes.navigationPanelWidth,e.navigation))};`),this.panelSizes.workspacePanelWidth!==void 0&&t.push(`--workspace-panel-size: ${px(ax(`workspace`,this.panelSizes.workspacePanelWidth,e.workspace))};`),t.join(` `)}storedPanelWidth(e){return e===`navigation`?this.panelSizes.navigationPanelWidth:this.panelSizes.workspacePanelWidth}};function tx(e){return $b[e]}function nx(e,t,n){return e===`navigation`?n-t:t-n}function rx(e,t,n,r,i=tx(e)){return ax(e,t+nx(e,n,r),i)}function ix(e,t,n,r={}){let i=r.constraints??tx(e);if(n===`Home`)return i.minWidth;if(n===`End`)return i.maxWidth;let a=fx(e,n,r.largeStep===!0?i.largeKeyboardStep:i.keyboardStep);if(a!==void 0)return ax(e,t+a,i)}function ax(e,t,n=tx(e)){return Number.isFinite(t)?Math.round(Math.min(Math.max(t,n.minWidth),n.maxWidth)):n.defaultWidth}function ox(e=mx()){try{let t=e?.getItem(Qb);return t==null||t===``?{}:cx(JSON.parse(t))}catch{return{}}}function sx(e,t=mx()){if(t!==void 0)try{if(e.navigationPanelWidth===void 0&&e.workspacePanelWidth===void 0){t.removeItem(Qb);return}let n={version:1};e.navigationPanelWidth!==void 0&&(n.navigationPanelWidth=ax(`navigation`,e.navigationPanelWidth)),e.workspacePanelWidth!==void 0&&(n.workspacePanelWidth=ax(`workspace`,e.workspacePanelWidth)),t.setItem(Qb,JSON.stringify(n))}catch{}}function cx(e){if(!hx(e)||e.version!==1)return{};let t={},n=lx(e.navigationPanelWidth),r=lx(e.workspacePanelWidth);return n!==void 0&&(t.navigationPanelWidth=ax(`navigation`,n)),r!==void 0&&(t.workspacePanelWidth=ax(`workspace`,r)),t}function lx(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function ux(e,t,n){return t===`navigation`?{...e,navigationPanelWidth:n}:{...e,workspacePanelWidth:n}}function dx(e,t){return t===`navigation`?e.workspacePanelWidth===void 0?{}:{workspacePanelWidth:e.workspacePanelWidth}:e.navigationPanelWidth===void 0?{}:{navigationPanelWidth:e.navigationPanelWidth}}function fx(e,t,n){if(e===`navigation`)return t===`ArrowRight`?n:t===`ArrowLeft`?-n:void 0;if(t===`ArrowLeft`)return n;if(t===`ArrowRight`)return-n}function px(e){return`${String(Math.round(e))}px`}function mx(){try{return typeof window>`u`?void 0:window.localStorage}catch{return}}function hx(e){return typeof e==`object`&&!!e}function gx(){let e=new URLSearchParams(window.location.search);return{machineId:bx(e.get(`machine`)),projectId:bx(e.get(`project`)),workspaceId:bx(e.get(`workspace`)),sessionId:bx(e.get(`session`)),tool:bx(e.get(`tool`)),view:bx(e.get(`view`))}}function _x(e,t){return{machineId:e.machineId,projectId:e.projectId,workspaceId:e.workspaceId,sessionId:e.sessionId,tool:e.tool===void 0?void 0:vx(e.tool,t),view:e.view===`chat`?`chat`:e.view===void 0?void 0:vx(e.view,t)}}function vx(e,t){return t(e)??(xx(e)?e:void 0)}function yx(e,t){let n=new URL(window.location.href);n.searchParams.delete(`machine`),n.searchParams.delete(`project`),n.searchParams.delete(`workspace`),n.searchParams.delete(`session`),n.searchParams.delete(`tool`),n.searchParams.delete(`view`),e.machineId!==void 0&&e.machineId!==``&&e.machineId!==`local`&&n.searchParams.set(`machine`,e.machineId),e.projectId!==void 0&&e.projectId!==``&&n.searchParams.set(`project`,e.projectId),e.workspaceId!==void 0&&e.workspaceId!==``&&n.searchParams.set(`workspace`,e.workspaceId),e.sessionId!==void 0&&e.sessionId!==``&&n.searchParams.set(`session`,e.sessionId),e.tool!==void 0&&e.tool!==``&&n.searchParams.set(`tool`,e.tool),e.view!==void 0&&e.view!==``&&n.searchParams.set(`view`,e.view),`${n.pathname}${n.search}${n.hash}`!=`${window.location.pathname}${window.location.search}${window.location.hash}`&&vt(String(n),t?.replace===!0)}function bx(e){return e===null||e===``?void 0:e}function xx(e){return/^[a-z][a-z0-9.-]*:[a-z][a-z0-9.-]*$/u.test(e)}function Sx(){return wx(new URLSearchParams(window.location.search).get(`settings`))}function Cx(e,t){let n=new URL(window.location.href);e===void 0?n.searchParams.delete(`settings`):n.searchParams.set(`settings`,e),`${n.pathname}${n.search}${n.hash}`!=`${window.location.pathname}${window.location.search}${window.location.hash}`&&vt(String(n),t?.replace===!0)}function wx(e){if(e===`general`)return`general`;if(e===`appearance`||e===`theme`||e===`themes`)return`appearance`;if(e===`sessiond`||e===`sessions`)return`sessiond`;if(e===`machines`)return`machines`;if(e===`packages`||e===`pi-packages`)return`packages`;if(e===`plugins`)return`plugins`;if(e===`shortcuts`||e===`keyboard`||e===`keyboard-shortcuts`)return`shortcuts`}function Tx(e,t){return t===void 0?e:e.map(e=>Dx(e,t))}function Ex(e,t){let n=new Set(qm(e,t,{enabledOnly:!0}).filter(e=>e.active).map(e=>e.action.id));return Tx(e,t).map(e=>e.shortcut!==void 0&&!n.has(e.id)?Ox(e):e)}function Dx(e,t){let n=eh(e,t);return n===void 0?e:n===null?Ox(e):{...e,shortcut:n}}function Ox(e){let t={...e};return delete t.shortcut,t}function kx(e,t){let n=t.api??es,r=t.pollIntervalMs??1e3,i=t.setTimeout??Mx(),a=t.clearTimeout??Nx();return{async runCommand(o){let s=await n.runTerminalCommand(e,o);return o.open===!0&&t.openTerminal(o.workspace,{terminalId:s.terminalId}),{run:s,completed:Ax(s,n,r,i,a)}},listCommandRuns:e=>n.listCommandRuns(e),getCommandRun:e=>n.getCommandRun(e),open:e=>{t.openTerminal(void 0,e)}}}function Ax(e,t,n,r,i){return jx(e)?Promise.resolve(e):new Promise((a,o)=>{let s,c=!1,l=e=>{c||(c=!0,s!==void 0&&i(s),a(e))},u=e=>{c||(c=!0,s!==void 0&&i(s),o(e instanceof Error?e:Error(String(e))))},d=()=>{t.getCommandRun(e.id).then(e=>{if(e!==void 0&&jx(e)){l(e);return}s=r(d,n)}).catch(u)};s=r(d,n)})}function jx(e){return e.status===`succeeded`||e.status===`failed`}function Mx(){return(e,t)=>globalThis.setTimeout(e,t)}function Nx(){return e=>{globalThis.clearTimeout(e)}}var Px=class{constructor(e){this.callbacks=e,this.fired=!1}start(e){this.cancel(),this.origin=e,this.fired=!1,this.handle=this.callbacks.setTimer(()=>{this.handle=void 0,this.fired=!0,this.callbacks.onLongPress()},500)}move(e){if(this.origin===void 0)return;let t=Math.abs(e.clientX-this.origin.clientX),n=Math.abs(e.clientY-this.origin.clientY);(t>10||n>10)&&this.cancel()}cancel(){this.handle!==void 0&&this.callbacks.clearTimer(this.handle),this.handle=void 0,this.origin=void 0}consumeSuppressedClick(){let e=this.fired;return this.fired=!1,e}},Fx=class{constructor(e){this.open=e,this.longPress=new Px({onLongPress:()=>{this.heldId!==void 0&&this.open(this.heldId,this.heldAnchor??null)},setTimer:(e,t)=>window.setTimeout(e,t),clearTimer:e=>{window.clearTimeout(e)}})}pointerDown(e,t){t.pointerType!==`mouse`&&(this.heldId=e,this.heldAnchor=t.currentTarget,this.longPress.start(t))}pointerMove(e){this.longPress.move(e)}cancel(){this.longPress.cancel(),this.heldId=void 0,this.heldAnchor=void 0}consumeSuppressedClick(){return this.longPress.consumeSuppressedClick()}contextMenu(e,t){t.preventDefault(),this.open(e,t.currentTarget)}};function Ix(e){return`${e.label}\n${e.path}`}function Lx(e,t){return Of(e,t,Ix)}function Rx(e,t){return Of(e,t,e=>e.name)}function zx(e,t){return e>=8||Ef(t).length>0}var Bx=0,Vx=120;function Hx(e,t={}){if(typeof HTMLElement>`u`||typeof window>`u`||!(e instanceof HTMLElement))return``;let n=e.getBoundingClientRect(),r=t.constrainTo===`viewport`?Wx():Ux(e),i=window.innerWidth,a=window.innerHeight,o=Math.max(0,r.left),s=Math.min(i,r.right),c=Math.max(0,r.top),l=Math.min(a,r.bottom),u=Math.min(n.right,s),d=l-n.bottom-Bx,f=n.top-c-Bx;return[...d<Vx&&f>d?[`bottom: ${Gx(a-n.top+Bx)};`,`max-height: ${Gx(Math.max(0,f))};`]:[`top: ${Gx(n.bottom+Bx)};`,`max-height: ${Gx(Math.max(0,d))};`],`right: ${Gx(Math.max(0,i-u))};`,`max-width: ${Gx(Math.max(0,u-o))};`].join(` `)}function Ux(e){let t=e.getRootNode();return typeof ShadowRoot<`u`&&t instanceof ShadowRoot&&t.host instanceof HTMLElement?t.host.getBoundingClientRect():Wx()}function Wx(){return{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}}function Gx(e){return`${String(Math.round(e))}px`}function Kx(e,t=`Active`,n){if(e===void 0)return n===void 0?void 0:h`<span class="activity-indicator unread" role="img" aria-label=${n} title=${n}></span>`;if(n===void 0)return h`<span class=${`activity-indicator ${e}`} role="img" aria-label=${t} title=${t}></span>`;let r=`${n} · ${t}`;return h`<span class="unread-ring" role="img" aria-label=${r} title=${r}><span class=${`activity-indicator ${e}`} aria-hidden="true"></span></span>`}function qx(e){if(e!==void 0)return e[Qt.working]===!0?`session`:e[Qt.terminal]===!0?`terminal`:Object.entries(e).some(([e,t])=>t&&e!==Qt.unread)?`session`:void 0}function Jx(e){return e?.[Qt.unread]===!0}var Yx={working:`Session is working`,background:`Turn ended; background work still running`,idle:`Session is done`,asking:`Waiting for your answer`,error:`Session hit an error`};function Xx(e,t){if(e===void 0)return t===void 0?void 0:h`<span class="session-state unread" role="img" aria-label=${t} title=${t}></span>`;let n=e===`sending`?`Sending message`:Yx[e],r=t===void 0?n:`${t} · ${n}`;if(e===`idle`)return h`<span class=${t===void 0?`session-state idle`:`session-state idle unread`} role="img" aria-label=${r} title=${r}></span>`;if(e===`working`||e===`sending`){let i=e===`working`?[0,1,2].map(e=>h`<span class="state-dot working-dot" style=${`animation-delay:${(e*.14).toFixed(2)}s`}></span>`):null;return t===void 0?h`<span class="session-state working" role="img" aria-label=${n} title=${n}><span class="state-dots">${i}</span></span>`:h`<span class="unread-ring" role="img" aria-label=${r} title=${r}><span class="session-state working" aria-hidden="true"><span class="state-dots">${i}</span></span></span>`}return t===void 0?h`<span class=${`session-state ${e}`} role="img" aria-label=${n} title=${n}></span>`:h`<span class="unread-ring" role="img" aria-label=${r} title=${r}><span class=${`session-state ${e}`} aria-hidden="true"></span></span>`}function Zx(e,t=`Active`,n){let r=Kx(e,t,n);if(r!==void 0)return h`<span class="action-activity">${r}</span>`}var Qx=[`a[href]`,`button`,`input`,`select`,`textarea`,`summary`,`[role='button']`,`[role='link']`,`[contenteditable='true']`].join(`,`);function $x(e){return e.composedPath().some(e=>eS(e,Qx))}function eS(e,t){if(typeof Element<`u`&&e instanceof Element)return e.matches(t);if(!(`matches`in e))return!1;let{matches:n}=e;return typeof n==`function`&&n.call(e,t)===!0}function tS(e,t){return $x(e)?!1:e.key===`Enter`||e.key===` `?(e.preventDefault(),t.activate(),!0):e.key===`ArrowUp`?rS(e,()=>{iS(e.currentTarget,-1)}):e.key===`ArrowDown`?rS(e,()=>{iS(e.currentTarget,1)}):e.key===`Home`?rS(e,()=>{aS(e.currentTarget,0)}):e.key===`End`?rS(e,()=>{aS(e.currentTarget,-1)}):e.key===`ArrowLeft`&&t.previousSection!==void 0?rS(e,t.previousSection):e.key===`ArrowRight`&&t.nextSection!==void 0?rS(e,t.nextSection):e.key===`Escape`&&t.cancel!==void 0&&rS(e,t.cancel)}function nS(e,t={}){let n=e.querySelector(`.action-row.selected`)??e.querySelector(`.action-row`)??(t.fallbackSelector===void 0?void 0:e.querySelector(t.fallbackSelector));return n==null?!1:(n.focus(),n.scrollIntoView({block:`nearest`}),!0)}function rS(e,t){return e.preventDefault(),e.stopPropagation?.(),t(),!0}function iS(e,t){let n=sS(e),r=lS(e);if(r===void 0||n.length===0)return;let i=n.indexOf(r);i<0||oS(n,i+t)}function aS(e,t){let n=sS(e);n.length!==0&&oS(n,t<0?n.length-1:t)}function oS(e,t){let n=e[Math.min(Math.max(t,0),e.length-1)];n?.focus(),n?.scrollIntoView({block:`nearest`})}function sS(e){let t=lS(e)?.getRootNode();return t===void 0||!cS(t)?[]:Array.from(t.querySelectorAll(`.action-row`))}function cS(e){return typeof Document<`u`&&e instanceof Document||typeof DocumentFragment<`u`&&e instanceof DocumentFragment}function lS(e){if(!(typeof HTMLElement>`u`||!(e instanceof HTMLElement)))return e.closest(`.action-row`)??void 0}var U=class extends _{constructor(...e){super(...e),this.machines=[],this.searchQuery=``,this.statuses={},this.statusSnapshots={},this.collapsible=!1,this.collapsed=!1,this.gestures=new Fx((e,t)=>{this.openMenu(e,t)}),this.menuStyle=``,this.onDocumentClick=e=>{e.composedPath().includes(this)||(this.openMenuMachineId=void 0)}}connectedCallback(){super.connectedCallback(),document.addEventListener(`click`,this.onDocumentClick)}disconnectedCallback(){document.removeEventListener(`click`,this.onDocumentClick),super.disconnectedCallback()}updated(e){e.has(`machines`)&&this.openMenuMachineId!==void 0&&!this.machines.some(e=>e.id===this.openMenuMachineId)&&(this.openMenuMachineId=void 0),e.has(`collapsed`)&&this.collapsed&&(this.openMenuMachineId=void 0)}async focusSelectedOrFirst(){return await this.updateComplete,nS(this.renderRoot,{fallbackSelector:`.section-toggle`})}renderSearch(){if(!zx(this.machines.length,this.searchQuery))return null;let e=this.searchQuery!==``;return h`
670
+ `]}};H([S({attribute:!1})],ky.prototype,`context`,void 0),H([w(`#workspace-upload-input`)],ky.prototype,`uploadInput`,void 0),H([w(`.dialog-backdrop`)],ky.prototype,`uploadDialogBackdrop`,void 0),H([w(`.upload-dialog`)],ky.prototype,`uploadDialog`,void 0),H([C()],ky.prototype,`pendingUpload`,void 0),H([C()],ky.prototype,`destinationFolder`,void 0),H([C()],ky.prototype,`overwrite`,void 0),H([C()],ky.prototype,`createDirs`,void 0),H([C()],ky.prototype,`formError`,void 0),H([C()],ky.prototype,`dragActive`,void 0),ky=H([x(`workspace-files-panel`)],ky);function Ay(e,t){return Object.values(e).filter(e=>e.projectId===t.projectId&&e.workspaceId===t.workspaceId&&e.machineId===t.machineId).sort((e,t)=>t.startedAt.localeCompare(e.startedAt))}function jy(e,t){if(e.length===0)return`Choose at least one file to upload.`;for(let n of e)try{Ws(t,n.name)}catch(e){return y(e)}}function My(e){return{destinationFolder:e,createDirs:!0,overwrite:!1}}function Ny(e,t){if(t.length!==0)return e.onStartWorkspaceUpload(t,{destinationFolder:e.workspaceUploadDefaultFolder,createDirs:!0,overwrite:!1,selectUploadedFile:!0})}function Py(e){return`${e.machine.id}:${e.workspace.projectId}:${e.workspace.id}`}function Fy(e){return e==null?[]:Array.from(e)}function Iy(e){return Array.from(e.dataTransfer?.types??[]).includes(`Files`)}function Ly(e){let t=e.getRootNode();return t instanceof ShadowRoot&&t.host instanceof HTMLElement?t.host:e}function Ry(e){let t=e.filter(e=>e.status===`uploading`).length;return t===0?`${String(e.length)} recent`:`${String(t)} uploading`}function zy(e){let t=e.files.length,n=t===1?`file`:`files`;switch(e.status){case`completed`:return`Uploaded ${String(t)} ${n}`;case`error`:return`Upload failed for ${String(t)} ${n}`;case`cancelled`:return`Upload cancelled for ${String(t)} ${n}`;case`uploading`:return`Uploading ${String(t)} ${n}`}}function By(e){switch(e.status){case`completed`:return`Done`;case`error`:return`Failed`;case`cancelled`:return`Cancelled`;case`uploading`:return Wy(e.percent)}}function Vy(e){return e.status===`uploading`?e.percent:1}function Hy(e){switch(e.status){case`pending`:return`Pending`;case`uploading`:return Wy(e.percent);case`completed`:return`Done`;case`error`:return`Error`;case`cancelled`:return`Cancelled`}}function Uy(e){return e.error===void 0?e.response===void 0?`${e.path} · ${Fg(e.loaded)} / ${Fg(e.total)}`:`Wrote ${e.response.path}`:e.error}function Wy(e){return`${String(Math.round(Math.max(0,Math.min(1,e))*100))}%`}function Gy(){return[{id:`workspace.files`,title:`Files`,icon:Mg(`files`),order:10,routeAliases:[`files`],render:Ky},{id:`workspace.terminal`,title:`Terminal`,icon:Mg(`terminal`),order:30,badge:e=>e.activeTerminalCount>0?e.activeTerminalCount:void 0,render:qy}]}function Ky(e){return h`<workspace-files-panel .context=${e}></workspace-files-panel>`}function qy(e){return Jy(),h`<terminal-panel .workspace=${e.workspace} .machineId=${e.machine.id} .selectedTerminalId=${e.selectedTerminalId} .autoStart=${e.terminalAutoStart} .onSelectTerminal=${e.onSelectTerminal}></terminal-panel>`}function Jy(){by(()=>import(`./TerminalPanel-haos8c1O.js`),__vite__mapDeps([4,5,6]),import.meta.url)}var Yy={apiVersion:2,name:`PI WEB Core`,activate:()=>({contributions:{actions:wg(),workspacePanels:Gy()}})},Xy={"--pi-bg":`#0d1117`,"--pi-surface":`#161b22`,"--pi-surface-hover":`#21262d`,"--pi-terminal-bg":`#05070a`,"--pi-terminal-text":`#e6edf3`,"--pi-border":`#30363d`,"--pi-border-muted":`#21262d`,"--pi-text":`#e6edf3`,"--pi-text-secondary":`#c9d1d9`,"--pi-text-bright":`#f0f6fc`,"--pi-muted":`#8b949e`,"--pi-dim":`#6e7681`,"--pi-accent":`#58a6ff`,"--pi-accent-border":`#2f81f7`,"--pi-selection-bg":`#0d2847`,"--pi-success":`#3fb950`,"--pi-success-border":`#238636`,"--pi-success-bg":`#0f1b12`,"--pi-success-surface":`#0f2a16`,"--pi-success-ring":`#3fb95055`,"--pi-warning":`#d29922`,"--pi-warning-border":`#6e5200`,"--pi-warning-surface":`#1f1a10`,"--pi-danger":`#ff7b72`,"--pi-purple":`#d2a8ff`,"--pi-purple-border":`#a371f7`,"--pi-purple-surface":`#21132f`,"--pi-overlay":`#0008`,"--pi-shadow-soft":`#0006`,"--pi-shadow":`#0008`,"--pi-shadow-strong":`#000b`,"--pi-bg-overlay-soft":`#0d1117dd`,"--pi-bg-overlay":`#0d1117e6`,"--pi-success-bg-overlay":`#0f1b12ee`,"--pi-terminal-selection":`#264f78`},Zy={"--pi-bg":`#070912`,"--pi-surface":`#101527`,"--pi-surface-hover":`#151b31`,"--pi-terminal-bg":`#050710`,"--pi-terminal-text":`#f7f4ff`,"--pi-border":`#26304f`,"--pi-border-muted":`#26304f`,"--pi-text":`#f7f4ff`,"--pi-text-secondary":`#aaa4bd`,"--pi-text-bright":`#ffffff`,"--pi-muted":`#aaa4bd`,"--pi-dim":`#817a99`,"--pi-accent":`#7c3cff`,"--pi-accent-border":`#5a47b0`,"--pi-selection-bg":`#1d2547`,"--pi-success":`#00f0d8`,"--pi-success-border":`#00f0d8`,"--pi-success-bg":`#071e22`,"--pi-success-surface":`#092d31`,"--pi-success-ring":`#00f0d855`,"--pi-warning":`#ffb000`,"--pi-warning-border":`#ffb000`,"--pi-warning-surface":`#16140d`,"--pi-danger":`#ff4f7b`,"--pi-purple":`#b7a2ff`,"--pi-purple-border":`#7c3cff`,"--pi-purple-surface":`#181026`,"--pi-overlay":`#0008`,"--pi-shadow-soft":`#0006`,"--pi-shadow":`#0008`,"--pi-shadow-strong":`#000b`,"--pi-bg-overlay-soft":`#070912dd`,"--pi-bg-overlay":`#070912e6`,"--pi-success-bg-overlay":`#071e22ee`,"--pi-terminal-selection":`#3d4a78`},Qy={"--pi-bg":`#f7f1e6`,"--pi-surface":`#fff9ee`,"--pi-surface-hover":`#f0e6d6`,"--pi-terminal-bg":`#15131b`,"--pi-terminal-text":`#fff9ee`,"--pi-border":`#c9bca8`,"--pi-border-muted":`#d8cdbc`,"--pi-text":`#15131b`,"--pi-text-secondary":`#15131b`,"--pi-text-bright":`#15131b`,"--pi-muted":`#5f586a`,"--pi-dim":`#766f7e`,"--pi-accent":`#6430d8`,"--pi-accent-border":`#6430d8`,"--pi-selection-bg":`#eadff8`,"--pi-success":`#008c82`,"--pi-success-border":`#008c82`,"--pi-success-bg":`#e1f4ef`,"--pi-success-surface":`#d7f0ec`,"--pi-success-ring":`#008c8255`,"--pi-warning":`#b05f00`,"--pi-warning-border":`#b05f00`,"--pi-warning-surface":`#fff2d2`,"--pi-danger":`#b51d49`,"--pi-purple":`#6430d8`,"--pi-purple-border":`#6430d8`,"--pi-purple-surface":`#eadff8`,"--pi-overlay":`#15131b66`,"--pi-shadow-soft":`#15131b22`,"--pi-shadow":`#15131b33`,"--pi-shadow-strong":`#15131b44`,"--pi-bg-overlay-soft":`#f7f1e6dd`,"--pi-bg-overlay":`#f7f1e6e6`,"--pi-success-bg-overlay":`#e1f4efee`,"--pi-terminal-selection":`#8d7b64`},$y={"--pi-bg":`#000000`,"--pi-surface":`#0d0d0d`,"--pi-surface-hover":`#1a1a1a`,"--pi-terminal-bg":`#000000`,"--pi-terminal-text":`#ffffff`,"--pi-border":`#5c5c5c`,"--pi-border-muted":`#3d3d3d`,"--pi-text":`#ffffff`,"--pi-text-secondary":`#e6e6e6`,"--pi-text-bright":`#ffffff`,"--pi-muted":`#b3b3b3`,"--pi-dim":`#8f8f8f`,"--pi-accent":`#4dc3ff`,"--pi-accent-border":`#4dc3ff`,"--pi-selection-bg":`#00263a`,"--pi-success":`#3ff05a`,"--pi-success-border":`#3ff05a`,"--pi-success-bg":`#001a06`,"--pi-success-surface":`#00280b`,"--pi-success-ring":`#3ff05a66`,"--pi-warning":`#ffcc33`,"--pi-warning-border":`#ffcc33`,"--pi-warning-surface":`#251c00`,"--pi-danger":`#ff6b6b`,"--pi-purple":`#c9a3ff`,"--pi-purple-border":`#c9a3ff`,"--pi-purple-surface":`#180d29`,"--pi-overlay":`#000000cc`,"--pi-shadow-soft":`#00000099`,"--pi-shadow":`#000000bb`,"--pi-shadow-strong":`#000000e6`,"--pi-bg-overlay-soft":`#000000dd`,"--pi-bg-overlay":`#000000f2`,"--pi-success-bg-overlay":`#001a06ee`,"--pi-terminal-selection":`#00456b`},eb={"--pi-bg":`#14110e`,"--pi-surface":`#1d1915`,"--pi-surface-hover":`#26211b`,"--pi-terminal-bg":`#100d0b`,"--pi-terminal-text":`#e8ddcc`,"--pi-border":`#3a3229`,"--pi-border-muted":`#2b2520`,"--pi-text":`#e8ddcc`,"--pi-text-secondary":`#cbbfad`,"--pi-text-bright":`#fff4e0`,"--pi-muted":`#9c9081`,"--pi-dim":`#7a6f62`,"--pi-accent":`#e0a35c`,"--pi-accent-border":`#b8813f`,"--pi-selection-bg":`#2e2415`,"--pi-success":`#8fbf6f`,"--pi-success-border":`#6d9954`,"--pi-success-bg":`#161c12`,"--pi-success-surface":`#1e2718`,"--pi-success-ring":`#8fbf6f55`,"--pi-warning":`#d9a441`,"--pi-warning-border":`#9c7429`,"--pi-warning-surface":`#241c0f`,"--pi-danger":`#d97b6c`,"--pi-purple":`#b79ad1`,"--pi-purple-border":`#8d74a8`,"--pi-purple-surface":`#221a2b`,"--pi-overlay":`#0a0806cc`,"--pi-shadow-soft":`#00000055`,"--pi-shadow":`#00000077`,"--pi-shadow-strong":`#000000aa`,"--pi-bg-overlay-soft":`#14110edd`,"--pi-bg-overlay":`#14110ee6`,"--pi-success-bg-overlay":`#161c12ee`,"--pi-terminal-selection":`#3d3121`},tb={"--pi-bg":`#fbfbf9`,"--pi-surface":`#ffffff`,"--pi-surface-hover":`#f1f1ee`,"--pi-terminal-bg":`#1c1c1a`,"--pi-terminal-text":`#fbfbf9`,"--pi-border":`#c7c7c1`,"--pi-border-muted":`#e0e0da`,"--pi-text":`#1c1c1a`,"--pi-text-secondary":`#33332f`,"--pi-text-bright":`#000000`,"--pi-muted":`#5e5e58`,"--pi-dim":`#7c7c75`,"--pi-accent":`#1f5fd0`,"--pi-accent-border":`#1f5fd0`,"--pi-selection-bg":`#e2ecfb`,"--pi-success":`#0f7a4a`,"--pi-success-border":`#0f7a4a`,"--pi-success-bg":`#e6f5ed`,"--pi-success-surface":`#d9efe3`,"--pi-success-ring":`#0f7a4a55`,"--pi-warning":`#8a5a00`,"--pi-warning-border":`#8a5a00`,"--pi-warning-surface":`#fdf0d5`,"--pi-danger":`#b02020`,"--pi-purple":`#5b3fc7`,"--pi-purple-border":`#5b3fc7`,"--pi-purple-surface":`#ece7fb`,"--pi-overlay":`#1c1c1a66`,"--pi-shadow-soft":`#1c1c1a1a`,"--pi-shadow":`#1c1c1a2b`,"--pi-shadow-strong":`#1c1c1a40`,"--pi-bg-overlay-soft":`#fbfbf9dd`,"--pi-bg-overlay":`#fbfbf9e6`,"--pi-success-bg-overlay":`#e6f5edee`,"--pi-terminal-selection":`#9ab4d8`},nb={apiVersion:2,name:`PI WEB Themes`,activate:()=>({contributions:{themes:[{id:`pi-web-dark`,name:`PI WEB Dark`,description:`Dark PI WEB palette.`,order:10,colorScheme:`dark`,tokens:Zy},{id:`pi-web-light`,name:`PI WEB Light`,description:`Light PI WEB palette.`,order:20,colorScheme:`light`,tokens:Qy},{id:`classic`,name:`PI WEB Classic`,description:`The original PI WEB dark palette.`,order:30,colorScheme:`dark`,tokens:Xy},{id:`high-contrast`,name:`High Contrast`,description:`Near-black behind near-white, for bright rooms and tired eyes.`,order:40,colorScheme:`dark`,tokens:$y},{id:`night`,name:`Night`,description:`Warm and dim, with an amber accent instead of blue light.`,order:50,colorScheme:`dark`,tokens:eb},{id:`paper`,name:`Paper`,description:`Untinted ink on paper, for daylight and for screenshots.`,order:60,colorScheme:`light`,tokens:tb}],themePairs:[{id:`pi-web`,name:`PI WEB`,description:`Follow the system light/dark preference with PI WEB themes.`,order:10,light:`pi-web-light`,dark:`pi-web-dark`}]}})};async function rb(e=`pi-web-plugins/manifest.json`,t={}){let n=Ze(e),r=await ob(n);if(r===void 0)return{registrations:[],failures:[]};let i=[],a=[],o=await Promise.all(r.plugins.map(async e=>{if(t.shouldLoadPlugin?.(e)!==!1)try{let r=ib(e.module,n),i=db(await(t.moduleLoader??ab)(r),r);return{registration:{id:t.machineId===void 0?e.id:Sl(t.machineId,e.id),plugin:i,machineSpecific:e.machineSpecific,...e.backendRevision===void 0?{}:{backendRevision:e.backendRevision},...t.machineId===void 0?{}:{machineId:t.machineId,sourcePluginId:e.id}}}}catch(t){return{failure:{entry:e,error:t}}}}));for(let e of o)e!==void 0&&(`registration`in e?i.push(e.registration):a.push(e.failure));return{registrations:i,failures:a}}function ib(e,t,n){return e.startsWith(`/`)?n===void 0?Ze(e):Ze(e,n):new URL(e,t).toString()}async function ab(e){return by(()=>import(e),[],import.meta.url)}async function ob(e){let t=await fetch(e,{cache:`no-store`});if(t.status!==404){if(!t.ok)throw Error(await cb(t));return sb(await t.json())}}function sb(e){if(!pb(e)||!Array.isArray(e.plugins))throw Error(`Invalid plugin manifest`);let t=e.plugins.map(e=>{if(!pb(e)||typeof e.id!=`string`||typeof e.module!=`string`||e.module===``)throw Error(`Invalid plugin manifest entry`);let t=e.id;if(!mn(t))throw Error(`Invalid plugin manifest id: ${t}`);if(hn(t))throw Error(`Reserved plugin manifest id: ${t}`);return{id:t,module:e.module,...lb(e.backendRevision),machineSpecific:ub(e.machineSpecific)}}),n=new Set;for(let e of t){if(n.has(e.id))throw Error(`Duplicate plugin manifest id: ${e.id}`);n.add(e.id)}return{plugins:t}}async function cb(e){let t;try{let n=await e.json();if(pb(n)){let e=n.error,r=n.detail;t=typeof r==`string`?`${typeof e==`string`?`${e}: `:``}${r}`:typeof e==`string`?e:void 0}}catch{}return`Failed to load plugin manifest (${`${String(e.status)}${e.statusText===``?``:` ${e.statusText}`}`})${t===void 0?``:`: ${t}`}`}function lb(e){if(e===void 0)return{};try{return{backendRevision:xs(e)}}catch{throw Error(`Invalid plugin manifest entry`)}}function ub(e){if(e===void 0)return!1;if(typeof e!=`boolean`)throw Error(`Invalid plugin manifest entry`);return e}function db(e,t){if(!pb(e))throw Error(`Plugin module ${t} did not export an object`);let n=e.default;if(pb(n)&&n.apiVersion!==2)throw Error(`Unsupported browser plugin API version for ${t}: ${String(n.apiVersion)} (expected 2)`);if(!fb(n))throw Error(`Plugin module ${t} default export is not a PiWebPlugin`);return n}function fb(e){return pb(e)&&e.apiVersion===2&&typeof e.name==`string`&&typeof e.activate==`function`}function pb(e){return typeof e==`object`&&!!e}var mb=/^[a-z][a-z0-9.-]*$/u,hb=/^[a-z][a-z0-9.-]*$/u,gb=/^[a-z][a-z0-9.-]*:[a-z][a-z0-9.-]*$/u,_b=/^[a-z][a-z0-9.-]*(?::[a-z][a-z0-9.-]*)?$/u,vb=new WeakMap,yb=new WeakMap,bb=new WeakMap,xb=class{constructor(){this.actions=[],this.workspacePanels=[],this.workspaceLabels=[],this.themes=[],this.themePairs=[],this.pluginIds=new Set,this.registeringPluginIds=new Set,this.gatewayPluginIds=new Set,this.gatewayMachineSpecificPluginIds=new Set,this.remoteMachineSpecificPluginIds=new Map,this.contributionIds=new Set}register(e){let{plugin:t}=e,n=e.id,r=e.sourcePluginId??n;this.validatePluginId(n),this.validatePluginId(r);let i=this.parseMachineSpecific(n,e.machineSpecific),a=this.parseBackendRevision(n,e.backendRevision);if(this.pluginIds.has(n)||this.registeringPluginIds.has(n))throw Error(`Duplicate plugin id: ${n}`);if(!this.isRemoteDuplicateHiddenByGateway(e.sourcePluginId,e.machineId,i)){this.registeringPluginIds.add(n);try{let o=t.apiVersion;if(o!==2)throw Error(`Unsupported browser plugin API version for ${r}: ${String(o)} (expected 2)`);let s=t.activate(Object.freeze({apiVersion:2,pluginId:r,runtimePluginId:n,html:h,svg:je})).contributions,c=new Set,l=(s.actions??[]).map(t=>this.qualifyAction(n,t,e.machineId,e.sourcePluginId,c)),u=(s.workspacePanels??[]).map(t=>this.qualifyWorkspacePanel(n,t,e.machineId,e.sourcePluginId,a,c)),d=(s.workspaceLabels??[]).map(t=>this.qualifyWorkspaceLabelContribution(n,t,e.machineId,e.sourcePluginId,a,c)),f=e.machineId===void 0?(s.themes??[]).map(e=>this.qualifyTheme(n,e,c)):[],p=e.machineId===void 0?(s.themePairs??[]).map(e=>this.qualifyThemePair(n,e,c)):[];this.pluginIds.add(n);for(let e of c)this.contributionIds.add(e);this.actions.push(...l),this.workspacePanels.push(...u),this.workspaceLabels.push(...d),this.themes.push(...f),this.themePairs.push(...p),e.machineId===void 0?(this.gatewayPluginIds.add(n),i&&this.gatewayMachineSpecificPluginIds.add(n)):e.sourcePluginId!==void 0&&i&&kb(this.remoteMachineSpecificPluginIds,e.sourcePluginId,e.machineId)}finally{this.registeringPluginIds.delete(n)}}}hasPlugin(e){return this.pluginIds.has(e)}shouldLoadRemotePlugin(e,t=!1){return!this.gatewayPluginIds.has(e)||this.gatewayMachineSpecificPluginIds.has(e)||t}getActions(e){let t=Mb(e);return this.actions.filter(e=>this.isContributionActive(e.pluginId,e.machineId,t,e.sourcePluginId)).map(t=>{let n=Sb(e,t.pluginId),r=t.enabled?.(n),i=r===!1?t.disabledReason?.(n):void 0,a={id:t.id,pluginId:t.pluginId,localId:t.localId,...t.machineId===void 0?{}:{machineId:t.machineId},title:t.title,run:()=>t.run(n)};return t.description!==void 0&&(a.description=t.description),t.shortcut!==void 0&&(a.shortcut=t.shortcut),t.shortcutAliases!==void 0&&(a.shortcutAliases=[...t.shortcutAliases]),t.group!==void 0&&(a.group=t.group),r!==void 0&&(a.enabled=r),i!==void 0&&i!==``&&(a.disabledReason=i),a})}getWorkspacePanels(){return[...this.workspacePanels].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.title.localeCompare(t.title))}resolveWorkspacePanelRouteId(e,t){let n=this.workspacePanels.filter(e=>this.isContributionActive(e.pluginId,e.machineId,t,e.sourcePluginId)),r=n.find(t=>t.id===e);if(r!==void 0)return r.id;let i=n.filter(t=>t.routeAliases?.includes(e)===!0);if(i.length===1)return i[0]?.id;i.length>1&&console.warn(`Ambiguous PI WEB workspace panel route: ${e}`)}async invalidateWorkspacePanels(e,t){await Promise.all(this.workspacePanels.map(async n=>{if(!(n.onInvalidate===void 0||t!==void 0&&n.id!==t))try{await n.onInvalidate(e)}catch(e){console.warn(`Failed to invalidate PI WEB plugin panel ${n.id}`,e)}}))}getThemes(){return[...this.themes].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.name.localeCompare(t.name))}getThemePairs(){return[...this.themePairs].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.name.localeCompare(t.name))}getWorkspaceLabelItems(e){return[...this.workspaceLabels].sort((e,t)=>(e.order??1e3)-(t.order??1e3)||e.id.localeCompare(t.id)).flatMap(t=>t.visible?.(e)===!1?[]:t.items(e))}qualifyAction(e,t,n,r,i){let a=this.qualify(e,t.id,i),o=`${r??e}:${t.id}`,s=this.parseShortcutAliases(a,t.shortcutAliases,o);return{...t,id:a,pluginId:e,localId:t.id,...s.length===0?{}:{shortcutAliases:s},...n===void 0?{}:{machineId:n},...r===void 0?{}:{sourcePluginId:r}}}qualifyWorkspacePanel(e,t,n,r,i,a){let o=this.qualify(e,t.id,a),s=t.badge,c=t.visible,l=t.onInvalidate,u=Ob(e,r,i),d=`${r??e}:${t.id}`,f=this.parseRouteAliases(o,t.routeAliases,d);return{...t,id:o,pluginId:e,localId:t.id,...f.length===0?{}:{routeAliases:f},...n===void 0?{}:{machineId:n},...r===void 0?{}:{sourcePluginId:r},visible:t=>this.isContributionActive(e,n,t.machine.id,r)&&(c?.(Cb(t,u))??!0),...s===void 0?{}:{badge:t=>this.isContributionActive(e,n,t.machine.id,r)?s(Cb(t,u)):void 0},...l===void 0?{}:{onInvalidate:t=>this.isContributionActive(e,n,t.machine.id,r)?l(Cb(t,u)):void 0},render:e=>t.render(Cb(e,u))}}qualifyWorkspaceLabelContribution(e,t,n,r,i,a){let o=this.qualify(e,t.id,a),s=t.visible,c=t.items,l=Ob(e,r,i);return{...t,id:o,pluginId:e,localId:t.id,...n===void 0?{}:{machineId:n},visible:t=>this.isContributionActive(e,n,t.machine.id,r)&&(s?.(wb(t,l))??!0),items:t=>this.isContributionActive(e,n,t.machine.id,r)?c(wb(t,l)):[]}}qualifyTheme(e,t,n){let r=this.qualify(e,t.id,n);return{...t,id:r,pluginId:e,localId:t.id}}qualifyThemePair(e,t,n){let r=this.qualify(e,t.id,n);return{...t,id:r,pluginId:e,localId:t.id,light:this.qualifyReference(e,t.light),dark:this.qualifyReference(e,t.dark)}}qualify(e,t,n){this.validateLocalId(t);let r=`${e}:${t}`;if(this.contributionIds.has(r)||n.has(r))throw Error(`Duplicate contribution id: ${r}`);return n.add(r),r}qualifyReference(e,t){return this.validateLocalId(t),`${e}:${t}`}isContributionActive(e,t,n,r){return t===void 0?!this.isGatewayPluginHiddenForMachine(e,n):t===n&&!this.isRemotePluginHiddenByGateway(r,t)}isRemoteDuplicateHiddenByGateway(e,t,n){return e!==void 0&&t!==void 0&&this.gatewayPluginIds.has(e)&&!this.gatewayMachineSpecificPluginIds.has(e)&&!n}isRemotePluginHiddenByGateway(e,t){return e===void 0||this.gatewayMachineSpecificPluginIds.has(e)||this.remoteMachineSpecificPluginIds.get(e)?.has(t)===!0?!1:this.gatewayPluginIds.has(e)}isGatewayPluginHiddenForMachine(e,t){return t!==`local`&&(this.gatewayMachineSpecificPluginIds.has(e)||this.remoteMachineSpecificPluginIds.get(e)?.has(t)===!0)}parseShortcutAliases(e,t,n){let r=[...new Set([...t??[],n])].filter(t=>t!==e),i=r.find(e=>!Ab(e));if(i!==void 0)throw Error(`Invalid shortcut alias for ${e}: ${i}`);return r.filter(Ab)}parseRouteAliases(e,t,n){let r=[...new Set([...t??[],n])].filter(t=>t!==e);for(let t of r)if(!_b.test(t))throw Error(`Invalid workspace panel route alias for ${e}: ${t}`);return r}validatePluginId(e){if(!mb.test(e))throw Error(`Invalid plugin id: ${e}`)}validateLocalId(e){if(!hb.test(e))throw Error(`Invalid contribution id: ${e}`)}parseBackendRevision(e,t){if(t!==void 0)try{return xs(t)}catch{throw Error(`Invalid plugin backend revision for ${e}`)}}parseMachineSpecific(e,t){if(t===void 0)return!1;if(typeof t!=`boolean`)throw Error(`Invalid plugin machineSpecific value for ${e}: ${jb(t)}`);return t}};function Sb(e,t){return vb.get(e)?.(t)??e}function Cb(e,t){return yb.get(e)?.(t)??e}function wb(e,t){return bb.get(e)?.(t)??e}function Tb(e,t){return vb.set(e,t),e}function Eb(e,t){return yb.set(e,t),e}function Db(e,t){return bb.set(e,t),e}function Ob(e,t,n){return Object.freeze({registrationPluginId:e,sourcePluginId:t??e,...n===void 0?{}:{backendRevision:n}})}function kb(e,t,n){let r=e.get(t);r===void 0?e.set(t,new Set([n])):r.add(n)}function Ab(e){return gb.test(e)}function jb(e){if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`||typeof e==`symbol`||typeof e==`function`||e==null)return String(e);try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}}function Mb(e){return e.state.selectedMachine?.id??`local`}function Nb(e,t,n,r=As){let i=e.backendRevision;if(i!==void 0)return{request:(a,o)=>r({pluginId:e.sourcePluginId,backendRevision:i,machineId:n,projectId:t.projectId,workspaceId:t.id},a,o)}}function Pb(e,t,n,r){return{readFile:r=>e.workspaceFile(t.projectId,t.id,r,n),listFiles:r=>e.workspaceTree(t.projectId,t.id,r,n),writeFile:async(i,a,o)=>{let s=await e.writeWorkspaceFile(t.projectId,t.id,i,a,o,n);return r?.(),s},deleteFile:async i=>{let a=await e.deleteWorkspaceFile(t.projectId,t.id,i,n);return r?.(),a},moveFile:async(i,a,o)=>{let s=await e.moveWorkspaceFile(t.projectId,t.id,i,a,o,n);return r?.(),s}}}var Fb=class{constructor(e,t={}){this.callbacks=e,this.refreshes=new Jl,this.connected=!1,this.onFocus=()=>{this.handleResumeSignal()},this.onVisibilityChange=()=>{this.isDocumentVisible()&&this.handleResumeSignal()},this.windowTarget=t.windowTarget??Ib(),this.documentTarget=t.documentTarget??Lb(),this.isDocumentVisible=t.isDocumentVisible??Rb,this.scheduleFrame=t.scheduleFrame??zb}connect(){this.connected||(this.connected=!0,this.windowTarget?.addEventListener(`focus`,this.onFocus),this.documentTarget?.addEventListener(`visibilitychange`,this.onVisibilityChange))}disconnect(){this.connected&&(this.connected=!1,this.windowTarget?.removeEventListener(`focus`,this.onFocus),this.documentTarget?.removeEventListener(`visibilitychange`,this.onVisibilityChange),this.scheduledRefresh?.cancel(),this.scheduledRefresh=void 0)}handleResumeSignal(){this.callbacks.onResumeSignal(),this.scheduledRefresh===void 0&&(this.scheduledRefresh=this.scheduleFrame(()=>{this.scheduledRefresh=void 0,this.connected&&this.refreshes.request(`browser-resume`,async()=>{this.connected&&await this.callbacks.refreshAfterResume()}).catch(e=>{this.callbacks.onRefreshError(e)})}))}};function Ib(){return typeof window>`u`?void 0:window}function Lb(){return typeof document>`u`?void 0:document}function Rb(){return typeof document>`u`||document.visibilityState===`visible`}function zb(e){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){let t=window.requestAnimationFrame(()=>{e()});return{cancel:()=>{window.cancelAnimationFrame(t)}}}let t=globalThis.setTimeout(e,0);return{cancel:()=>{globalThis.clearTimeout(t)}}}var Bb=[`machines`,`projects`,`workspaces`,`sessions`];function Vb(e){return e.selectedWorkspace===void 0?e.selectedProject===void 0?`projects`:`workspaces`:`sessions`}function Hb(e,t){if(e!==`none`)return e??Vb(t)}function Ub(e,t){return Hb(t.expanded,t.state)!==e}function Wb(e,t,n){return Hb(e,n.state)===t?`none`:t}function Gb(e){return e.workspaceCount===1?`sessions`:`workspaces`}function Kb(e){return Bb[Bb.indexOf(e)+1]}var qb=class{hostConnected(){}constructor(e,t){this.host=e,this.getState=t,e.addController(this)}expandedSection(){return Hb(this.expanded,this.getState())}isCollapsed(e){return Ub(e,{expanded:this.expanded,state:this.getState()})}toggle(e){this.setExpanded(Wb(this.expanded,e,{state:this.getState()}))}expand(e){this.setExpanded(e)}advanceAfterSelection(e,t){let n=e===`projects`?Gb({workspaceCount:t?.workspaceCount}):Kb(e);n!==void 0&&this.expand(n)}open(e,t){this.expand(e),t()}setExpanded(e){this.expanded!==e&&(this.expanded=e,this.host.requestUpdate())}};function Jb(e){return e.isMobileNavigationLayout||e.navigationCollapsed}var Yb=class{hostConnected(){}constructor(e){this.host=e,this.navigationPanelCollapsed=!1,this.workspacePanelCollapsed=!1,e.addController(this)}toggleNavigationPanel(){this.navigationPanelCollapsed=!this.navigationPanelCollapsed,this.host.requestUpdate()}toggleWorkspacePanel(){this.workspacePanelCollapsed=!this.workspacePanelCollapsed,this.host.requestUpdate()}expandNavigationPanel(){this.navigationPanelCollapsed&&(this.navigationPanelCollapsed=!1,this.host.requestUpdate())}expandWorkspacePanel(){this.workspacePanelCollapsed&&(this.workspacePanelCollapsed=!1,this.host.requestUpdate())}shellClass(e,t=!0){return[`shell`,Zb(e),...this.navigationPanelCollapsed?[`navigation-panel-collapsed`]:[],...Xb(this.workspacePanelCollapsed,t)?[]:[`workspace-panel-collapsed`]].join(` `)}};function Xb(e,t){return!e&&t}function Zb(e){return e===`navigation`?`navigation-view`:e===`chat`?`chat-view`:`workspace-view`}var Qb=`pi-web:panel-sizes:v1`,$b={navigation:{minWidth:180,maxWidth:4096,defaultWidth:340,keyboardStep:24,largeKeyboardStep:72},workspace:{minWidth:240,maxWidth:4096,defaultWidth:480,keyboardStep:24,largeKeyboardStep:72}},ex=class{constructor(e,t={}){this.host=e,e.addController(this),this.storage=t.storage??mx(),this.panelSizes=ox(this.storage)}hostConnected(){}constraints(e){return tx(e)}panelWidth(e,t){return ax(e,t??this.storedPanelWidth(e)??this.constraints(e).defaultWidth)}resizePanel(e,t,n={}){let r=ax(e,t);this.storedPanelWidth(e)!==r&&(this.panelSizes=ux(this.panelSizes,e,r),n.persist!==!1&&this.persistPanelSizes(),this.host.requestUpdate())}resetPanel(e,t={}){this.storedPanelWidth(e)!==void 0&&(this.panelSizes=dx(this.panelSizes,e),t.persist!==!1&&this.persistPanelSizes(),this.host.requestUpdate())}resetPanels(e={}){this.panelSizes.navigationPanelWidth===void 0&&this.panelSizes.workspacePanelWidth===void 0||(this.panelSizes={},e.persist!==!1&&this.persistPanelSizes(),this.host.requestUpdate())}persistPanelSizes(){sx(this.panelSizes,this.storage)}shellStyle(e={}){let t=[];return this.panelSizes.navigationPanelWidth!==void 0&&t.push(`--navigation-panel-size: ${px(ax(`navigation`,this.panelSizes.navigationPanelWidth,e.navigation))};`),this.panelSizes.workspacePanelWidth!==void 0&&t.push(`--workspace-panel-size: ${px(ax(`workspace`,this.panelSizes.workspacePanelWidth,e.workspace))};`),t.join(` `)}storedPanelWidth(e){return e===`navigation`?this.panelSizes.navigationPanelWidth:this.panelSizes.workspacePanelWidth}};function tx(e){return $b[e]}function nx(e,t,n){return e===`navigation`?n-t:t-n}function rx(e,t,n,r,i=tx(e)){return ax(e,t+nx(e,n,r),i)}function ix(e,t,n,r={}){let i=r.constraints??tx(e);if(n===`Home`)return i.minWidth;if(n===`End`)return i.maxWidth;let a=fx(e,n,r.largeStep===!0?i.largeKeyboardStep:i.keyboardStep);if(a!==void 0)return ax(e,t+a,i)}function ax(e,t,n=tx(e)){return Number.isFinite(t)?Math.round(Math.min(Math.max(t,n.minWidth),n.maxWidth)):n.defaultWidth}function ox(e=mx()){try{let t=e?.getItem(Qb);return t==null||t===``?{}:cx(JSON.parse(t))}catch{return{}}}function sx(e,t=mx()){if(t!==void 0)try{if(e.navigationPanelWidth===void 0&&e.workspacePanelWidth===void 0){t.removeItem(Qb);return}let n={version:1};e.navigationPanelWidth!==void 0&&(n.navigationPanelWidth=ax(`navigation`,e.navigationPanelWidth)),e.workspacePanelWidth!==void 0&&(n.workspacePanelWidth=ax(`workspace`,e.workspacePanelWidth)),t.setItem(Qb,JSON.stringify(n))}catch{}}function cx(e){if(!hx(e)||e.version!==1)return{};let t={},n=lx(e.navigationPanelWidth),r=lx(e.workspacePanelWidth);return n!==void 0&&(t.navigationPanelWidth=ax(`navigation`,n)),r!==void 0&&(t.workspacePanelWidth=ax(`workspace`,r)),t}function lx(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function ux(e,t,n){return t===`navigation`?{...e,navigationPanelWidth:n}:{...e,workspacePanelWidth:n}}function dx(e,t){return t===`navigation`?e.workspacePanelWidth===void 0?{}:{workspacePanelWidth:e.workspacePanelWidth}:e.navigationPanelWidth===void 0?{}:{navigationPanelWidth:e.navigationPanelWidth}}function fx(e,t,n){if(e===`navigation`)return t===`ArrowRight`?n:t===`ArrowLeft`?-n:void 0;if(t===`ArrowLeft`)return n;if(t===`ArrowRight`)return-n}function px(e){return`${String(Math.round(e))}px`}function mx(){try{return typeof window>`u`?void 0:window.localStorage}catch{return}}function hx(e){return typeof e==`object`&&!!e}function gx(){let e=new URLSearchParams(window.location.search);return{machineId:bx(e.get(`machine`)),projectId:bx(e.get(`project`)),workspaceId:bx(e.get(`workspace`)),sessionId:bx(e.get(`session`)),tool:bx(e.get(`tool`)),view:bx(e.get(`view`))}}function _x(e,t){return{machineId:e.machineId,projectId:e.projectId,workspaceId:e.workspaceId,sessionId:e.sessionId,tool:e.tool===void 0?void 0:vx(e.tool,t),view:e.view===`chat`?`chat`:e.view===void 0?void 0:vx(e.view,t)}}function vx(e,t){return t(e)??(xx(e)?e:void 0)}function yx(e,t){let n=new URL(window.location.href);n.searchParams.delete(`machine`),n.searchParams.delete(`project`),n.searchParams.delete(`workspace`),n.searchParams.delete(`session`),n.searchParams.delete(`tool`),n.searchParams.delete(`view`),e.machineId!==void 0&&e.machineId!==``&&e.machineId!==`local`&&n.searchParams.set(`machine`,e.machineId),e.projectId!==void 0&&e.projectId!==``&&n.searchParams.set(`project`,e.projectId),e.workspaceId!==void 0&&e.workspaceId!==``&&n.searchParams.set(`workspace`,e.workspaceId),e.sessionId!==void 0&&e.sessionId!==``&&n.searchParams.set(`session`,e.sessionId),e.tool!==void 0&&e.tool!==``&&n.searchParams.set(`tool`,e.tool),e.view!==void 0&&e.view!==``&&n.searchParams.set(`view`,e.view),`${n.pathname}${n.search}${n.hash}`!=`${window.location.pathname}${window.location.search}${window.location.hash}`&&vt(String(n),t?.replace===!0)}function bx(e){return e===null||e===``?void 0:e}function xx(e){return/^[a-z][a-z0-9.-]*:[a-z][a-z0-9.-]*$/u.test(e)}function Sx(){return wx(new URLSearchParams(window.location.search).get(`settings`))}function Cx(e,t){let n=new URL(window.location.href);e===void 0?n.searchParams.delete(`settings`):n.searchParams.set(`settings`,e),`${n.pathname}${n.search}${n.hash}`!=`${window.location.pathname}${window.location.search}${window.location.hash}`&&vt(String(n),t?.replace===!0)}function wx(e){if(e===`general`)return`general`;if(e===`appearance`||e===`theme`||e===`themes`)return`appearance`;if(e===`sessiond`||e===`sessions`)return`sessiond`;if(e===`machines`)return`machines`;if(e===`packages`||e===`pi-packages`)return`packages`;if(e===`plugins`)return`plugins`;if(e===`shortcuts`||e===`keyboard`||e===`keyboard-shortcuts`)return`shortcuts`}function Tx(e,t){return t===void 0?e:e.map(e=>Dx(e,t))}function Ex(e,t){let n=new Set(qm(e,t,{enabledOnly:!0}).filter(e=>e.active).map(e=>e.action.id));return Tx(e,t).map(e=>e.shortcut!==void 0&&!n.has(e.id)?Ox(e):e)}function Dx(e,t){let n=eh(e,t);return n===void 0?e:n===null?Ox(e):{...e,shortcut:n}}function Ox(e){let t={...e};return delete t.shortcut,t}function kx(e,t){let n=t.api??es,r=t.pollIntervalMs??1e3,i=t.setTimeout??Mx(),a=t.clearTimeout??Nx();return{async runCommand(o){let s=await n.runTerminalCommand(e,o);return o.open===!0&&t.openTerminal(o.workspace,{terminalId:s.terminalId}),{run:s,completed:Ax(s,n,r,i,a)}},listCommandRuns:e=>n.listCommandRuns(e),getCommandRun:e=>n.getCommandRun(e),open:e=>{t.openTerminal(void 0,e)}}}function Ax(e,t,n,r,i){return jx(e)?Promise.resolve(e):new Promise((a,o)=>{let s,c=!1,l=e=>{c||(c=!0,s!==void 0&&i(s),a(e))},u=e=>{c||(c=!0,s!==void 0&&i(s),o(e instanceof Error?e:Error(String(e))))},d=()=>{t.getCommandRun(e.id).then(e=>{if(e!==void 0&&jx(e)){l(e);return}s=r(d,n)}).catch(u)};s=r(d,n)})}function jx(e){return e.status===`succeeded`||e.status===`failed`}function Mx(){return(e,t)=>globalThis.setTimeout(e,t)}function Nx(){return e=>{globalThis.clearTimeout(e)}}var Px=class{constructor(e){this.callbacks=e,this.fired=!1}start(e){this.cancel(),this.origin=e,this.fired=!1,this.handle=this.callbacks.setTimer(()=>{this.handle=void 0,this.fired=!0,this.callbacks.onLongPress()},500)}move(e){if(this.origin===void 0)return;let t=Math.abs(e.clientX-this.origin.clientX),n=Math.abs(e.clientY-this.origin.clientY);(t>10||n>10)&&this.cancel()}cancel(){this.handle!==void 0&&this.callbacks.clearTimer(this.handle),this.handle=void 0,this.origin=void 0}consumeSuppressedClick(){let e=this.fired;return this.fired=!1,e}},Fx=class{constructor(e){this.open=e,this.longPress=new Px({onLongPress:()=>{this.heldId!==void 0&&this.open(this.heldId,this.heldAnchor??null)},setTimer:(e,t)=>window.setTimeout(e,t),clearTimer:e=>{window.clearTimeout(e)}})}pointerDown(e,t){t.pointerType!==`mouse`&&(this.heldId=e,this.heldAnchor=t.currentTarget,this.longPress.start(t))}pointerMove(e){this.longPress.move(e)}cancel(){this.longPress.cancel(),this.heldId=void 0,this.heldAnchor=void 0}consumeSuppressedClick(){return this.longPress.consumeSuppressedClick()}contextMenu(e,t){t.preventDefault(),this.open(e,t.currentTarget)}};function Ix(e){return`${e.label}\n${e.path}`}function Lx(e,t){return Of(e,t,Ix)}function Rx(e,t){return Of(e,t,e=>e.name)}function zx(e,t){return e>=8||Ef(t).length>0}var Bx=0,Vx=120;function Hx(e,t={}){if(typeof HTMLElement>`u`||typeof window>`u`||!(e instanceof HTMLElement))return``;let n=e.getBoundingClientRect(),r=t.constrainTo===`viewport`?Wx():Ux(e),i=window.innerWidth,a=window.innerHeight,o=Math.max(0,r.left),s=Math.min(i,r.right),c=Math.max(0,r.top),l=Math.min(a,r.bottom),u=Math.min(n.right,s),d=l-n.bottom-Bx,f=n.top-c-Bx;return[...d<Vx&&f>d?[`bottom: ${Gx(a-n.top+Bx)};`,`max-height: ${Gx(Math.max(0,f))};`]:[`top: ${Gx(n.bottom+Bx)};`,`max-height: ${Gx(Math.max(0,d))};`],`right: ${Gx(Math.max(0,i-u))};`,`max-width: ${Gx(Math.max(0,u-o))};`].join(` `)}function Ux(e){let t=e.getRootNode();return typeof ShadowRoot<`u`&&t instanceof ShadowRoot&&t.host instanceof HTMLElement?t.host.getBoundingClientRect():Wx()}function Wx(){return{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}}function Gx(e){return`${String(Math.round(e))}px`}function Kx(e,t=`Active`,n){if(e===void 0)return n===void 0?void 0:h`<span class="activity-indicator unread" role="img" aria-label=${n} title=${n}></span>`;if(n===void 0)return h`<span class=${`activity-indicator ${e}`} role="img" aria-label=${t} title=${t}></span>`;let r=`${n} · ${t}`;return h`<span class="unread-ring" role="img" aria-label=${r} title=${r}><span class=${`activity-indicator ${e}`} aria-hidden="true"></span></span>`}function qx(e){if(e!==void 0)return e[Qt.working]===!0?`session`:e[Qt.terminal]===!0?`terminal`:Object.entries(e).some(([e,t])=>t&&e!==Qt.unread)?`session`:void 0}function Jx(e){return e?.[Qt.unread]===!0}var Yx={working:`Session is working`,background:`Turn ended; background work still running`,idle:`Session is done`,asking:`Waiting for your answer`,error:`Session hit an error`};function Xx(e,t){if(e===void 0)return t===void 0?void 0:h`<span class="session-state unread" role="img" aria-label=${t} title=${t}></span>`;let n=e===`sending`?`Sending message`:Yx[e],r=t===void 0?n:`${t} · ${n}`;if(e===`idle`)return h`<span class=${t===void 0?`session-state idle`:`session-state idle unread`} role="img" aria-label=${r} title=${r}></span>`;if(e===`working`||e===`sending`){let i=e===`working`?[0,1,2].map(e=>h`<span class="state-dot working-dot" style=${`animation-delay:${(e*.14).toFixed(2)}s`}></span>`):null;return t===void 0?h`<span class="session-state working" role="img" aria-label=${n} title=${n}><span class="state-dots">${i}</span></span>`:h`<span class="unread-ring" role="img" aria-label=${r} title=${r}><span class="session-state working" aria-hidden="true"><span class="state-dots">${i}</span></span></span>`}return t===void 0?h`<span class=${`session-state ${e}`} role="img" aria-label=${n} title=${n}></span>`:h`<span class="unread-ring" role="img" aria-label=${r} title=${r}><span class=${`session-state ${e}`} aria-hidden="true"></span></span>`}function Zx(e,t=`Active`,n){let r=Kx(e,t,n);if(r!==void 0)return h`<span class="action-activity">${r}</span>`}var Qx=[`a[href]`,`button`,`input`,`select`,`textarea`,`summary`,`[role='button']`,`[role='link']`,`[contenteditable='true']`].join(`,`);function $x(e){return e.composedPath().some(e=>eS(e,Qx))}function eS(e,t){if(typeof Element<`u`&&e instanceof Element)return e.matches(t);if(!(`matches`in e))return!1;let{matches:n}=e;return typeof n==`function`&&n.call(e,t)===!0}function tS(e,t){return $x(e)?!1:e.key===`Enter`||e.key===` `?(e.preventDefault(),t.activate(),!0):e.key===`ArrowUp`?rS(e,()=>{iS(e.currentTarget,-1)}):e.key===`ArrowDown`?rS(e,()=>{iS(e.currentTarget,1)}):e.key===`Home`?rS(e,()=>{aS(e.currentTarget,0)}):e.key===`End`?rS(e,()=>{aS(e.currentTarget,-1)}):e.key===`ArrowLeft`&&t.previousSection!==void 0?rS(e,t.previousSection):e.key===`ArrowRight`&&t.nextSection!==void 0?rS(e,t.nextSection):e.key===`Escape`&&t.cancel!==void 0&&rS(e,t.cancel)}function nS(e,t={}){let n=e.querySelector(`.action-row.selected`)??e.querySelector(`.action-row`)??(t.fallbackSelector===void 0?void 0:e.querySelector(t.fallbackSelector));return n==null?!1:(n.focus(),n.scrollIntoView({block:`nearest`}),!0)}function rS(e,t){return e.preventDefault(),e.stopPropagation?.(),t(),!0}function iS(e,t){let n=sS(e),r=lS(e);if(r===void 0||n.length===0)return;let i=n.indexOf(r);i<0||oS(n,i+t)}function aS(e,t){let n=sS(e);n.length!==0&&oS(n,t<0?n.length-1:t)}function oS(e,t){let n=e[Math.min(Math.max(t,0),e.length-1)];n?.focus(),n?.scrollIntoView({block:`nearest`})}function sS(e){let t=lS(e)?.getRootNode();return t===void 0||!cS(t)?[]:Array.from(t.querySelectorAll(`.action-row`))}function cS(e){return typeof Document<`u`&&e instanceof Document||typeof DocumentFragment<`u`&&e instanceof DocumentFragment}function lS(e){if(!(typeof HTMLElement>`u`||!(e instanceof HTMLElement)))return e.closest(`.action-row`)??void 0}var U=class extends _{constructor(...e){super(...e),this.machines=[],this.searchQuery=``,this.statuses={},this.statusSnapshots={},this.collapsible=!1,this.collapsed=!1,this.gestures=new Fx((e,t)=>{this.openMenu(e,t)}),this.menuStyle=``,this.onDocumentClick=e=>{e.composedPath().includes(this)||(this.openMenuMachineId=void 0)}}connectedCallback(){super.connectedCallback(),document.addEventListener(`click`,this.onDocumentClick)}disconnectedCallback(){document.removeEventListener(`click`,this.onDocumentClick),super.disconnectedCallback()}updated(e){e.has(`machines`)&&this.openMenuMachineId!==void 0&&!this.machines.some(e=>e.id===this.openMenuMachineId)&&(this.openMenuMachineId=void 0),e.has(`collapsed`)&&this.collapsed&&(this.openMenuMachineId=void 0)}async focusSelectedOrFirst(){return await this.updateComplete,nS(this.renderRoot,{fallbackSelector:`.section-toggle`})}renderSearch(){if(!zx(this.machines.length,this.searchQuery))return null;let e=this.searchQuery!==``;return h`
671
671
  <div class="list-search">
672
672
  <input
673
673
  class="list-search-input"