@jetcrab/pi-desk 1.1.12 → 1.1.16-dev

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 (340) hide show
  1. package/docs/plugins.md +21 -1
  2. package/package.json +2 -2
  3. package/src/app/api/model-settings/preview/route.ts +1 -0
  4. package/src/app/api/work-sessions/rename/route.ts +1 -0
  5. package/src/client/l2_biz/auth/l2-login.tsx +1 -1
  6. package/src/client/l2_biz/plugin-host/l2-plugin-session-sidebar-tab.tsx +6 -2
  7. package/src/client/l2_biz/settings/hooks/l2-use-model-provider-settings.ts +54 -10
  8. package/src/client/l2_biz/settings/hooks/l2-use-model-settings.ts +37 -9
  9. package/src/client/l2_biz/settings/l2-auth-settings.tsx +1 -1
  10. package/src/client/l2_biz/settings/l2-model-settings-biz.ts +26 -12
  11. package/src/client/l2_biz/settings/views/l2-appearance-settings.tsx +1 -16
  12. package/src/client/l2_biz/settings/views/l2-model-provider-settings.tsx +3 -2
  13. package/src/client/l2_biz/settings/views/l2-model-replacement-preview.tsx +34 -0
  14. package/src/client/l2_biz/task-center/l2-task-center.tsx +4 -30
  15. package/src/client/l2_biz/workbench/file-workspace/l2-plugin-standalone-file-preview.tsx +45 -7
  16. package/src/client/l2_biz/workbench/hooks/l2-work-session-rename.ts +57 -0
  17. package/src/client/l2_biz/workbench/l2-work-session-columns.tsx +0 -11
  18. package/src/client/l2_biz/workbench/l2-work-session-sidebar.tsx +107 -6
  19. package/src/client/l2_biz/workbench/l2-workbench-biz.ts +5 -0
  20. package/src/client/l2_biz/workbench/l2-workbench-chat-composer.tsx +333 -350
  21. package/src/client/l2_biz/workbench/l2-workbench.tsx +46 -1
  22. package/src/client/l2_biz/workbench/views/l2-work-session-rename-dialog.tsx +88 -0
  23. package/src/client/l3_modules/project-files/l3-markdown-preview.module.css +81 -0
  24. package/src/client/l3_modules/project-files/l3-markdown-preview.tsx +52 -0
  25. package/src/client/l3_modules/project-files/l3-project-document-view.tsx +26 -8
  26. package/src/client/l3_modules/project-files/l3-project-file-runtime.ts +16 -1
  27. package/src/client/l3_modules/project-files/l3-project-text-preview.ts +5 -0
  28. package/src/client/l3_modules/work-session-visual/l3-work-session-visual-effects.module.css +0 -36
  29. package/src/client/l3_modules/work-session-visual/l3-work-session-visual-view.tsx +0 -5
  30. package/src/client/l4_foundation/plugin-host/l4-plugin-host-runtime.ts +71 -1
  31. package/src/client/l4_foundation/styles/l4-globals.css +0 -19
  32. package/src/client/l4_foundation/ui/code/l4-code-preview.tsx +2 -1
  33. package/src/client/l4_foundation/ui/l4-confirm-dialog.tsx +9 -1
  34. package/src/common/l2_biz/auth/l2-auth-contract.ts +2 -2
  35. package/src/common/l2_biz/auth/l2-auth-messages.ts +2 -2
  36. package/src/common/l2_biz/model-settings/l2-model-settings-contract.ts +23 -1
  37. package/src/common/l2_biz/settings/l2-settings-messages.ts +8 -6
  38. package/src/common/l2_biz/work-session/l2-work-session-contract.ts +9 -0
  39. package/src/common/l2_biz/workbench/l2-workbench-locale-messages.ts +6 -0
  40. package/src/common/l3_modules/project-files/l3-project-files-locale-messages.ts +4 -0
  41. package/src/common/l4_foundation/locale/l4-host-error-messages.ts +6 -0
  42. package/src/server/l1_entry/api/l1-model-settings-preview-route.ts +32 -0
  43. package/src/server/l1_entry/api/l1-work-session-rename-route.ts +52 -0
  44. package/src/server/l2_biz/model-settings/l2-model-settings.ts +9 -0
  45. package/src/server/l2_biz/plugin-management/l2-plugin-management.ts +159 -52
  46. package/src/server/l2_biz/work-session/l2-work-session-chat-runtime.ts +5 -0
  47. package/src/server/l2_biz/work-session/l2-work-session-manage.ts +13 -0
  48. package/src/server/l3_modules/work-session/l3-work-session.ts +4 -0
  49. package/src/server/l4_foundation/model-settings/l4-model-settings-store.ts +161 -38
  50. package/src/server/l4_foundation/model-settings/l4-model-settings-types.ts +11 -0
  51. package/src/server/l4_foundation/model-settings/l4-model-settings.ts +1 -0
  52. package/src/server/l4_foundation/pi/l4-pi-chat-worker.ts +12 -1
  53. package/src/server/l4_foundation/pi/l4-pi-package-maintenance-runner.mts +56 -65
  54. package/src/server/l4_foundation/pi/l4-pi-package-maintenance.ts +2 -0
  55. package/src/server/l4_foundation/pi/l4-pi-package-reinstall-runner.mts +49 -0
  56. package/src/server/l4_foundation/pi/l4-pi-package-root-consistency.ts +6 -2
  57. package/src/server/l4_foundation/pi/l4-pi-plugin-probe.ts +3 -1
  58. package/src/server/l4_foundation/pi/l4-pi-runner-process.ts +9 -0
  59. package/src/server/l4_foundation/pi/l4-pi-work-session-runtime.ts +5 -0
  60. package/temp/build/pi-desk/release/.next/BUILD_ID +1 -1
  61. package/temp/build/pi-desk/release/.next/app-path-routes-manifest.json +2 -0
  62. package/temp/build/pi-desk/release/.next/build-manifest.json +3 -3
  63. package/temp/build/pi-desk/release/.next/prerender-manifest.json +3 -3
  64. package/temp/build/pi-desk/release/.next/react-loadable-manifest.json +1 -2
  65. package/temp/build/pi-desk/release/.next/required-server-files.js +3 -3
  66. package/temp/build/pi-desk/release/.next/required-server-files.json +3 -3
  67. package/temp/build/pi-desk/release/.next/routes-manifest.json +12 -0
  68. package/temp/build/pi-desk/release/.next/server/app/_global-error/page.js +1 -1
  69. package/temp/build/pi-desk/release/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  70. package/temp/build/pi-desk/release/.next/server/app/_global-error.html +1 -1
  71. package/temp/build/pi-desk/release/.next/server/app/_global-error.rsc +1 -1
  72. package/temp/build/pi-desk/release/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  73. package/temp/build/pi-desk/release/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  74. package/temp/build/pi-desk/release/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  75. package/temp/build/pi-desk/release/.next/server/app/_not-found/page.js +1 -1
  76. package/temp/build/pi-desk/release/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  77. package/temp/build/pi-desk/release/.next/server/app/api/auth/login/route.js +2 -2
  78. package/temp/build/pi-desk/release/.next/server/app/api/auth/logout/route.js +1 -1
  79. package/temp/build/pi-desk/release/.next/server/app/api/auth-settings/get/route.js +1 -1
  80. package/temp/build/pi-desk/release/.next/server/app/api/auth-settings/replace/route.js +1 -1
  81. package/temp/build/pi-desk/release/.next/server/app/api/capability-modes/get/route.js +1 -1
  82. package/temp/build/pi-desk/release/.next/server/app/api/capability-modes/replace/route.js +1 -1
  83. package/temp/build/pi-desk/release/.next/server/app/api/chat/context/get/route.js +1 -1
  84. package/temp/build/pi-desk/release/.next/server/app/api/chat/images/get/route.js +1 -1
  85. package/temp/build/pi-desk/release/.next/server/app/api/chat/messages/get/route.js +1 -1
  86. package/temp/build/pi-desk/release/.next/server/app/api/health/route.js +1 -1
  87. package/temp/build/pi-desk/release/.next/server/app/api/mcp-check/get/route.js +1 -1
  88. package/temp/build/pi-desk/release/.next/server/app/api/mcp-settings/del/route.js +1 -1
  89. package/temp/build/pi-desk/release/.next/server/app/api/mcp-settings/get/route.js +1 -1
  90. package/temp/build/pi-desk/release/.next/server/app/api/mcp-settings/replace/route.js +1 -1
  91. package/temp/build/pi-desk/release/.next/server/app/api/model-catalog/list/route.js +1 -1
  92. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/get/route.js +1 -1
  93. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/preview/route.js +1 -0
  94. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/preview/route_client-reference-manifest.js +1 -0
  95. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/replace/route.js +1 -1
  96. package/temp/build/pi-desk/release/.next/server/app/api/pi/directories/list/route.js +1 -1
  97. package/temp/build/pi-desk/release/.next/server/app/api/pi/directory-entries/list/route.js +1 -1
  98. package/temp/build/pi-desk/release/.next/server/app/api/pi/directory-ignores/list/route.js +1 -1
  99. package/temp/build/pi-desk/release/.next/server/app/api/pi/directory-ignores/replace/route.js +1 -1
  100. package/temp/build/pi-desk/release/.next/server/app/api/pi/models/list/route.js +1 -1
  101. package/temp/build/pi-desk/release/.next/server/app/api/pi/session-user-messages/list/route.js +1 -1
  102. package/temp/build/pi-desk/release/.next/server/app/api/pi/sessions/list/route.js +1 -1
  103. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/get/route.js +1 -1
  104. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/search/route.js +1 -1
  105. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/settings-get/route.js +1 -1
  106. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/settings-replace/route.js +1 -1
  107. package/temp/build/pi-desk/release/.next/server/app/api/plugins/add/route.js +1 -1
  108. package/temp/build/pi-desk/release/.next/server/app/api/plugins/apply/route.js +1 -1
  109. package/temp/build/pi-desk/release/.next/server/app/api/plugins/batch/route.js +1 -1
  110. package/temp/build/pi-desk/release/.next/server/app/api/plugins/browser-resources/[resourceGroup]/[...resourcePath]/route.js +1 -1
  111. package/temp/build/pi-desk/release/.next/server/app/api/plugins/del/route.js +1 -1
  112. package/temp/build/pi-desk/release/.next/server/app/api/plugins/enabled-set/route.js +1 -1
  113. package/temp/build/pi-desk/release/.next/server/app/api/plugins/get/route.js +1 -1
  114. package/temp/build/pi-desk/release/.next/server/app/api/plugins/host-runtime/[runtimeVersion]/[...resourcePath]/route.js +1 -1
  115. package/temp/build/pi-desk/release/.next/server/app/api/plugins/list/route.js +1 -1
  116. package/temp/build/pi-desk/release/.next/server/app/api/plugins/reload/route.js +1 -1
  117. package/temp/build/pi-desk/release/.next/server/app/api/plugins/update/route.js +1 -1
  118. package/temp/build/pi-desk/release/.next/server/app/api/project-files/get/route.js +1 -1
  119. package/temp/build/pi-desk/release/.next/server/app/api/project-files/list/route.js +1 -1
  120. package/temp/build/pi-desk/release/.next/server/app/api/project-files/reveal/route.js +1 -1
  121. package/temp/build/pi-desk/release/.next/server/app/api/project-files/search/route.js +1 -1
  122. package/temp/build/pi-desk/release/.next/server/app/api/project-git/get/route.js +1 -1
  123. package/temp/build/pi-desk/release/.next/server/app/api/project-git-branches/list/route.js +1 -1
  124. package/temp/build/pi-desk/release/.next/server/app/api/project-git-changes/list/route.js +1 -1
  125. package/temp/build/pi-desk/release/.next/server/app/api/project-git-diff/get/route.js +1 -1
  126. package/temp/build/pi-desk/release/.next/server/app/api/project-git-heads/get/route.js +1 -1
  127. package/temp/build/pi-desk/release/.next/server/app/api/project-git-log/list/route.js +1 -1
  128. package/temp/build/pi-desk/release/.next/server/app/api/project-model-default/get/route.js +1 -1
  129. package/temp/build/pi-desk/release/.next/server/app/api/project-model-default/replace/route.js +1 -1
  130. package/temp/build/pi-desk/release/.next/server/app/api/skill-files/get/route.js +1 -1
  131. package/temp/build/pi-desk/release/.next/server/app/api/skill-files/list/route.js +1 -1
  132. package/temp/build/pi-desk/release/.next/server/app/api/skill-files/replace/route.js +1 -1
  133. package/temp/build/pi-desk/release/.next/server/app/api/skills/list/route.js +1 -1
  134. package/temp/build/pi-desk/release/.next/server/app/api/task-center/images/get/route.js +1 -1
  135. package/temp/build/pi-desk/release/.next/server/app/api/task-center/messages/get/route.js +1 -1
  136. package/temp/build/pi-desk/release/.next/server/app/api/work-session-git-branch/add/route.js +1 -1
  137. package/temp/build/pi-desk/release/.next/server/app/api/work-session-git-branch/replace/route.js +1 -1
  138. package/temp/build/pi-desk/release/.next/server/app/api/work-session-tree/get/route.js +1 -1
  139. package/temp/build/pi-desk/release/.next/server/app/api/work-session-tree-entry/get/route.js +1 -1
  140. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/add/route.js +1 -1
  141. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/branch/route.js +1 -1
  142. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/del/route.js +1 -1
  143. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/rename/route.js +1 -0
  144. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/rename/route_client-reference-manifest.js +1 -0
  145. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/replace/route.js +1 -1
  146. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/sort/route.js +1 -1
  147. package/temp/build/pi-desk/release/.next/server/app/favicon.ico/route.js +1 -1
  148. package/temp/build/pi-desk/release/.next/server/app/login/page.js +1 -1
  149. package/temp/build/pi-desk/release/.next/server/app/login/page_client-reference-manifest.js +1 -1
  150. package/temp/build/pi-desk/release/.next/server/app/page.js +72 -306
  151. package/temp/build/pi-desk/release/.next/server/app/page_client-reference-manifest.js +1 -1
  152. package/temp/build/pi-desk/release/.next/server/app-paths-manifest.json +2 -0
  153. package/temp/build/pi-desk/release/.next/server/chunks/23054.js +1 -1
  154. package/temp/build/pi-desk/release/.next/server/chunks/25406.js +8 -8
  155. package/temp/build/pi-desk/release/.next/server/chunks/33658.js +296 -0
  156. package/temp/build/pi-desk/release/.next/server/chunks/35985.js +5 -5
  157. package/temp/build/pi-desk/release/.next/server/chunks/48180.js +1 -1
  158. package/temp/build/pi-desk/release/.next/server/chunks/49900.js +2 -2
  159. package/temp/build/pi-desk/release/.next/server/chunks/50520.js +5 -5
  160. package/temp/build/pi-desk/release/.next/server/chunks/6917.js +1 -1
  161. package/temp/build/pi-desk/release/.next/server/chunks/78262.js +3 -3
  162. package/temp/build/pi-desk/release/.next/server/chunks/82499.js +6 -6
  163. package/temp/build/pi-desk/release/.next/server/chunks/92386.js +3 -3
  164. package/temp/build/pi-desk/release/.next/server/chunks/94296.js +2 -2
  165. package/temp/build/pi-desk/release/.next/server/middleware-build-manifest.js +1 -1
  166. package/temp/build/pi-desk/release/.next/server/middleware-react-loadable-manifest.js +1 -1
  167. package/temp/build/pi-desk/release/.next/server/pages/500.html +1 -1
  168. package/temp/build/pi-desk/release/.next/server/server-reference-manifest.json +1 -1
  169. package/temp/build/pi-desk/release/.next/static/chunks/31087-ba426d09d6f68bfd.js +1 -0
  170. package/temp/build/pi-desk/release/.next/static/chunks/39654-b5fedd762ea0312e.js +238 -0
  171. package/temp/build/pi-desk/release/.next/static/chunks/49516-cc4dcd84d64ab4fe.js +81 -0
  172. package/temp/build/pi-desk/release/.next/static/chunks/75130-d2ca74894aff8085.js +13 -0
  173. package/temp/build/pi-desk/release/.next/static/chunks/app/_global-error/page-9969fe0baa238786.js +1 -0
  174. package/temp/build/pi-desk/release/.next/static/chunks/app/_not-found/page-9969fe0baa238786.js +1 -0
  175. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth/login/route-9969fe0baa238786.js +1 -0
  176. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth/logout/route-9969fe0baa238786.js +1 -0
  177. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth-settings/get/route-9969fe0baa238786.js +1 -0
  178. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth-settings/replace/route-9969fe0baa238786.js +1 -0
  179. package/temp/build/pi-desk/release/.next/static/chunks/app/api/capability-modes/get/route-9969fe0baa238786.js +1 -0
  180. package/temp/build/pi-desk/release/.next/static/chunks/app/api/capability-modes/replace/route-9969fe0baa238786.js +1 -0
  181. package/temp/build/pi-desk/release/.next/static/chunks/app/api/chat/context/get/route-9969fe0baa238786.js +1 -0
  182. package/temp/build/pi-desk/release/.next/static/chunks/app/api/chat/images/get/route-9969fe0baa238786.js +1 -0
  183. package/temp/build/pi-desk/release/.next/static/chunks/app/api/chat/messages/get/route-9969fe0baa238786.js +1 -0
  184. package/temp/build/pi-desk/release/.next/static/chunks/app/api/health/route-9969fe0baa238786.js +1 -0
  185. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-check/get/route-9969fe0baa238786.js +1 -0
  186. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-settings/del/route-9969fe0baa238786.js +1 -0
  187. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-settings/get/route-9969fe0baa238786.js +1 -0
  188. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-settings/replace/route-9969fe0baa238786.js +1 -0
  189. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-catalog/list/route-9969fe0baa238786.js +1 -0
  190. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-settings/get/route-9969fe0baa238786.js +1 -0
  191. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-settings/preview/route-9969fe0baa238786.js +1 -0
  192. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-settings/replace/route-9969fe0baa238786.js +1 -0
  193. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directories/list/route-9969fe0baa238786.js +1 -0
  194. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directory-entries/list/route-9969fe0baa238786.js +1 -0
  195. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directory-ignores/list/route-9969fe0baa238786.js +1 -0
  196. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directory-ignores/replace/route-9969fe0baa238786.js +1 -0
  197. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/models/list/route-9969fe0baa238786.js +1 -0
  198. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/session-user-messages/list/route-9969fe0baa238786.js +1 -0
  199. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/sessions/list/route-9969fe0baa238786.js +1 -0
  200. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/get/route-9969fe0baa238786.js +1 -0
  201. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/search/route-9969fe0baa238786.js +1 -0
  202. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/settings-get/route-9969fe0baa238786.js +1 -0
  203. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/settings-replace/route-9969fe0baa238786.js +1 -0
  204. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/add/route-9969fe0baa238786.js +1 -0
  205. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/apply/route-9969fe0baa238786.js +1 -0
  206. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/batch/route-9969fe0baa238786.js +1 -0
  207. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/browser-resources/[resourceGroup]/[...resourcePath]/route-9969fe0baa238786.js +1 -0
  208. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/del/route-9969fe0baa238786.js +1 -0
  209. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/enabled-set/route-9969fe0baa238786.js +1 -0
  210. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/get/route-9969fe0baa238786.js +1 -0
  211. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/host-runtime/[runtimeVersion]/[...resourcePath]/route-9969fe0baa238786.js +1 -0
  212. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/list/route-9969fe0baa238786.js +1 -0
  213. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/reload/route-9969fe0baa238786.js +1 -0
  214. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/update/route-9969fe0baa238786.js +1 -0
  215. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/get/route-9969fe0baa238786.js +1 -0
  216. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/list/route-9969fe0baa238786.js +1 -0
  217. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/reveal/route-9969fe0baa238786.js +1 -0
  218. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/search/route-9969fe0baa238786.js +1 -0
  219. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git/get/route-9969fe0baa238786.js +1 -0
  220. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-branches/list/route-9969fe0baa238786.js +1 -0
  221. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-changes/list/route-9969fe0baa238786.js +1 -0
  222. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-diff/get/route-9969fe0baa238786.js +1 -0
  223. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-heads/get/route-9969fe0baa238786.js +1 -0
  224. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-log/list/route-9969fe0baa238786.js +1 -0
  225. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-model-default/get/route-9969fe0baa238786.js +1 -0
  226. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-model-default/replace/route-9969fe0baa238786.js +1 -0
  227. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skill-files/get/route-9969fe0baa238786.js +1 -0
  228. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skill-files/list/route-9969fe0baa238786.js +1 -0
  229. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skill-files/replace/route-9969fe0baa238786.js +1 -0
  230. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skills/list/route-9969fe0baa238786.js +1 -0
  231. package/temp/build/pi-desk/release/.next/static/chunks/app/api/task-center/images/get/route-9969fe0baa238786.js +1 -0
  232. package/temp/build/pi-desk/release/.next/static/chunks/app/api/task-center/messages/get/route-9969fe0baa238786.js +1 -0
  233. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-git-branch/add/route-9969fe0baa238786.js +1 -0
  234. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-git-branch/replace/route-9969fe0baa238786.js +1 -0
  235. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-tree/get/route-9969fe0baa238786.js +1 -0
  236. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-tree-entry/get/route-9969fe0baa238786.js +1 -0
  237. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/add/route-9969fe0baa238786.js +1 -0
  238. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/branch/route-9969fe0baa238786.js +1 -0
  239. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/del/route-9969fe0baa238786.js +1 -0
  240. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/rename/route-9969fe0baa238786.js +1 -0
  241. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/replace/route-9969fe0baa238786.js +1 -0
  242. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/sort/route-9969fe0baa238786.js +1 -0
  243. package/temp/build/pi-desk/release/.next/static/chunks/app/layout-c0e1c5cef8620cf8.js +3 -0
  244. package/temp/build/pi-desk/release/.next/static/chunks/app/login/page-84892b06243891f0.js +1 -0
  245. package/temp/build/pi-desk/release/.next/static/chunks/app/page-df6045b319f52088.js +158 -0
  246. package/temp/build/pi-desk/release/.next/static/chunks/next/dist/client/components/builtin/app-error-9969fe0baa238786.js +1 -0
  247. package/temp/build/pi-desk/release/.next/static/chunks/next/dist/client/components/builtin/forbidden-9969fe0baa238786.js +1 -0
  248. package/temp/build/pi-desk/release/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9969fe0baa238786.js +1 -0
  249. package/temp/build/pi-desk/release/.next/static/chunks/webpack-40a782fc8a3535b9.js +1 -0
  250. package/temp/build/pi-desk/release/.next/static/css/6427d02b6edf406f.css +1 -0
  251. package/temp/build/pi-desk/release/.next/static/css/{adb1d4e48dd43c0a.css → 949d0d1a99d5de92.css} +1 -1
  252. package/temp/build/pi-desk/release/.next/static/uj2IMtGMwxhDXhTVi7sw5/_buildManifest.js +1 -0
  253. package/temp/build/pi-desk/release/.next/trace-build +1 -1
  254. package/src/client/l2_biz/workbench/hooks/l2-work-session-column-motion.ts +0 -87
  255. package/src/client/l3_modules/work-session-visual/l3-work-session-status-border.tsx +0 -66
  256. package/src/client/l4_foundation/ui/l4-power-saving.ts +0 -45
  257. package/src/client/l4_foundation/ui/l4-window-reveal.ts +0 -30
  258. package/temp/build/pi-desk/release/.next/server/chunks/56284.js +0 -62
  259. package/temp/build/pi-desk/release/.next/static/96geGVI-j_dC6I3k-XFCB/_buildManifest.js +0 -1
  260. package/temp/build/pi-desk/release/.next/static/chunks/31087-333cae396a52f232.js +0 -1
  261. package/temp/build/pi-desk/release/.next/static/chunks/45992-92d8b8b10fcfbb6b.js +0 -13
  262. package/temp/build/pi-desk/release/.next/static/chunks/47340-c1c09c77c1a88514.js +0 -318
  263. package/temp/build/pi-desk/release/.next/static/chunks/57208-d6d38167dabb91e4.js +0 -1
  264. package/temp/build/pi-desk/release/.next/static/chunks/app/_global-error/page-dde4fd973791f7f7.js +0 -1
  265. package/temp/build/pi-desk/release/.next/static/chunks/app/_not-found/page-dde4fd973791f7f7.js +0 -1
  266. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth/login/route-dde4fd973791f7f7.js +0 -1
  267. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth/logout/route-dde4fd973791f7f7.js +0 -1
  268. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth-settings/get/route-dde4fd973791f7f7.js +0 -1
  269. package/temp/build/pi-desk/release/.next/static/chunks/app/api/auth-settings/replace/route-dde4fd973791f7f7.js +0 -1
  270. package/temp/build/pi-desk/release/.next/static/chunks/app/api/capability-modes/get/route-dde4fd973791f7f7.js +0 -1
  271. package/temp/build/pi-desk/release/.next/static/chunks/app/api/capability-modes/replace/route-dde4fd973791f7f7.js +0 -1
  272. package/temp/build/pi-desk/release/.next/static/chunks/app/api/chat/context/get/route-dde4fd973791f7f7.js +0 -1
  273. package/temp/build/pi-desk/release/.next/static/chunks/app/api/chat/images/get/route-dde4fd973791f7f7.js +0 -1
  274. package/temp/build/pi-desk/release/.next/static/chunks/app/api/chat/messages/get/route-dde4fd973791f7f7.js +0 -1
  275. package/temp/build/pi-desk/release/.next/static/chunks/app/api/health/route-dde4fd973791f7f7.js +0 -1
  276. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-check/get/route-dde4fd973791f7f7.js +0 -1
  277. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-settings/del/route-dde4fd973791f7f7.js +0 -1
  278. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-settings/get/route-dde4fd973791f7f7.js +0 -1
  279. package/temp/build/pi-desk/release/.next/static/chunks/app/api/mcp-settings/replace/route-dde4fd973791f7f7.js +0 -1
  280. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-catalog/list/route-dde4fd973791f7f7.js +0 -1
  281. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-settings/get/route-dde4fd973791f7f7.js +0 -1
  282. package/temp/build/pi-desk/release/.next/static/chunks/app/api/model-settings/replace/route-dde4fd973791f7f7.js +0 -1
  283. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directories/list/route-dde4fd973791f7f7.js +0 -1
  284. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directory-entries/list/route-dde4fd973791f7f7.js +0 -1
  285. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directory-ignores/list/route-dde4fd973791f7f7.js +0 -1
  286. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/directory-ignores/replace/route-dde4fd973791f7f7.js +0 -1
  287. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/models/list/route-dde4fd973791f7f7.js +0 -1
  288. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/session-user-messages/list/route-dde4fd973791f7f7.js +0 -1
  289. package/temp/build/pi-desk/release/.next/static/chunks/app/api/pi/sessions/list/route-dde4fd973791f7f7.js +0 -1
  290. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/get/route-dde4fd973791f7f7.js +0 -1
  291. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/search/route-dde4fd973791f7f7.js +0 -1
  292. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/settings-get/route-dde4fd973791f7f7.js +0 -1
  293. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugin-catalog/settings-replace/route-dde4fd973791f7f7.js +0 -1
  294. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/add/route-dde4fd973791f7f7.js +0 -1
  295. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/apply/route-dde4fd973791f7f7.js +0 -1
  296. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/batch/route-dde4fd973791f7f7.js +0 -1
  297. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/browser-resources/[resourceGroup]/[...resourcePath]/route-dde4fd973791f7f7.js +0 -1
  298. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/del/route-dde4fd973791f7f7.js +0 -1
  299. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/enabled-set/route-dde4fd973791f7f7.js +0 -1
  300. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/get/route-dde4fd973791f7f7.js +0 -1
  301. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/host-runtime/[runtimeVersion]/[...resourcePath]/route-dde4fd973791f7f7.js +0 -1
  302. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/list/route-dde4fd973791f7f7.js +0 -1
  303. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/reload/route-dde4fd973791f7f7.js +0 -1
  304. package/temp/build/pi-desk/release/.next/static/chunks/app/api/plugins/update/route-dde4fd973791f7f7.js +0 -1
  305. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/get/route-dde4fd973791f7f7.js +0 -1
  306. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/list/route-dde4fd973791f7f7.js +0 -1
  307. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/reveal/route-dde4fd973791f7f7.js +0 -1
  308. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-files/search/route-dde4fd973791f7f7.js +0 -1
  309. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git/get/route-dde4fd973791f7f7.js +0 -1
  310. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-branches/list/route-dde4fd973791f7f7.js +0 -1
  311. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-changes/list/route-dde4fd973791f7f7.js +0 -1
  312. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-diff/get/route-dde4fd973791f7f7.js +0 -1
  313. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-heads/get/route-dde4fd973791f7f7.js +0 -1
  314. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-git-log/list/route-dde4fd973791f7f7.js +0 -1
  315. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-model-default/get/route-dde4fd973791f7f7.js +0 -1
  316. package/temp/build/pi-desk/release/.next/static/chunks/app/api/project-model-default/replace/route-dde4fd973791f7f7.js +0 -1
  317. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skill-files/get/route-dde4fd973791f7f7.js +0 -1
  318. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skill-files/list/route-dde4fd973791f7f7.js +0 -1
  319. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skill-files/replace/route-dde4fd973791f7f7.js +0 -1
  320. package/temp/build/pi-desk/release/.next/static/chunks/app/api/skills/list/route-dde4fd973791f7f7.js +0 -1
  321. package/temp/build/pi-desk/release/.next/static/chunks/app/api/task-center/images/get/route-dde4fd973791f7f7.js +0 -1
  322. package/temp/build/pi-desk/release/.next/static/chunks/app/api/task-center/messages/get/route-dde4fd973791f7f7.js +0 -1
  323. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-git-branch/add/route-dde4fd973791f7f7.js +0 -1
  324. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-git-branch/replace/route-dde4fd973791f7f7.js +0 -1
  325. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-tree/get/route-dde4fd973791f7f7.js +0 -1
  326. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-session-tree-entry/get/route-dde4fd973791f7f7.js +0 -1
  327. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/add/route-dde4fd973791f7f7.js +0 -1
  328. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/branch/route-dde4fd973791f7f7.js +0 -1
  329. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/del/route-dde4fd973791f7f7.js +0 -1
  330. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/replace/route-dde4fd973791f7f7.js +0 -1
  331. package/temp/build/pi-desk/release/.next/static/chunks/app/api/work-sessions/sort/route-dde4fd973791f7f7.js +0 -1
  332. package/temp/build/pi-desk/release/.next/static/chunks/app/layout-839162b6cfae8347.js +0 -3
  333. package/temp/build/pi-desk/release/.next/static/chunks/app/login/page-4532a3bbee48e219.js +0 -1
  334. package/temp/build/pi-desk/release/.next/static/chunks/app/page-4b6367cde5c04597.js +0 -158
  335. package/temp/build/pi-desk/release/.next/static/chunks/next/dist/client/components/builtin/app-error-dde4fd973791f7f7.js +0 -1
  336. package/temp/build/pi-desk/release/.next/static/chunks/next/dist/client/components/builtin/forbidden-dde4fd973791f7f7.js +0 -1
  337. package/temp/build/pi-desk/release/.next/static/chunks/next/dist/client/components/builtin/unauthorized-dde4fd973791f7f7.js +0 -1
  338. package/temp/build/pi-desk/release/.next/static/chunks/webpack-735430d61da52e9d.js +0 -1
  339. package/temp/build/pi-desk/release/.next/static/css/4a5dda7ff3a82c4a.css +0 -1
  340. /package/temp/build/pi-desk/release/.next/static/{96geGVI-j_dC6I3k-XFCB → uj2IMtGMwxhDXhTVi7sw5}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"2418":{"*":{"id":"85140","name":"*","chunks":[],"async":false}},"14405":{"*":{"id":"27297","name":"*","chunks":[],"async":false}},"21358":{"*":{"id":"41051","name":"*","chunks":[],"async":false}},"22432":{"*":{"id":"1480","name":"*","chunks":[],"async":false}},"23367":{"*":{"id":"49453","name":"*","chunks":[],"async":false}},"33948":{"*":{"id":"79460","name":"*","chunks":[],"async":false}},"44478":{"*":{"id":"97016","name":"*","chunks":[],"async":false}},"64282":{"*":{"id":"45543","name":"*","chunks":[],"async":false}},"66999":{"*":{"id":"4527","name":"*","chunks":[],"async":false}},"69173":{"*":{"id":"7005","name":"*","chunks":[],"async":false}},"71713":{"*":{"id":"21147","name":"*","chunks":[],"async":false}},"84845":{"*":{"id":"43305","name":"*","chunks":[],"async":false}},"90184":{"*":{"id":"88476","name":"*","chunks":[],"async":false}},"97876":{"*":{"id":"58044","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/client-page.js":{"id":69173,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/client-page.js":{"id":69173,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/client-segment.js":{"id":23367,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/client-segment.js":{"id":23367,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":33948,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":33948,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/layout-router.js":{"id":90184,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/layout-router.js":{"id":90184,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/render-from-template-context.js":{"id":44478,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":44478,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/lib/framework/boundary-components.js":{"id":14405,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":14405,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":22432,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":22432,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l1_entry/pages/l1-error-page.tsx":{"id":66999,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","81881","static/chunks/81881-f11dbe7dc0d04ed9.js","24345","static/chunks/app/not-found-2aab8b33ebbf3257.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/script.js":{"id":97876,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","57208","static/chunks/57208-d6d38167dabb91e4.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","45992","static/chunks/45992-92d8b8b10fcfbb6b.js","31087","static/chunks/31087-333cae396a52f232.js","7177","static/chunks/app/layout-839162b6cfae8347.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/script.js":{"id":97876,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","57208","static/chunks/57208-d6d38167dabb91e4.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","45992","static/chunks/45992-92d8b8b10fcfbb6b.js","31087","static/chunks/31087-333cae396a52f232.js","7177","static/chunks/app/layout-839162b6cfae8347.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l1_entry/providers/l1-app-providers.tsx":{"id":64282,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","57208","static/chunks/57208-d6d38167dabb91e4.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","45992","static/chunks/45992-92d8b8b10fcfbb6b.js","31087","static/chunks/31087-333cae396a52f232.js","7177","static/chunks/app/layout-839162b6cfae8347.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l4_foundation/styles/l4-globals.css":{"id":84178,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","57208","static/chunks/57208-d6d38167dabb91e4.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","45992","static/chunks/45992-92d8b8b10fcfbb6b.js","31087","static/chunks/31087-333cae396a52f232.js","7177","static/chunks/app/layout-839162b6cfae8347.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/app/error.tsx":{"id":84845,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","81881","static/chunks/81881-f11dbe7dc0d04ed9.js","18039","static/chunks/app/error-0296a3b20cd1bf00.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/app/global-error.tsx":{"id":71713,"name":"*","chunks":["34219","static/chunks/app/global-error-6f5fc4928fd1966c.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l1_entry/pages/l1-home-page.tsx":{"id":2418,"name":"*","chunks":["85959","static/chunks/287c71e3-32bb21af66f1f035.js","26717","static/chunks/6c0b963a-c492581a5b6359f7.js","94287","static/chunks/cdfede43-b007dd93b1fdb122.js","78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","46270","static/chunks/46270-3e42514685626190.js","57208","static/chunks/57208-d6d38167dabb91e4.js","14197","static/chunks/14197-3d3ddd426ac06c9c.js","47340","static/chunks/47340-c1c09c77c1a88514.js","74220","static/chunks/74220-795a2e7185bd66cb.js","45992","static/chunks/45992-92d8b8b10fcfbb6b.js","58974","static/chunks/app/page-4b6367cde5c04597.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l2_biz/auth/l2-login.tsx":{"id":21358,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/pi-desk/pi-desk/src/":[],"/home/runner/work/pi-desk/pi-desk/src/app/not-found":[],"/home/runner/work/pi-desk/pi-desk/src/app/layout":[{"inlined":false,"path":"static/css/adb1d4e48dd43c0a.css"},{"inlined":false,"path":"static/css/4a5dda7ff3a82c4a.css"}],"/home/runner/work/pi-desk/pi-desk/src/app/error":[],"/home/runner/work/pi-desk/pi-desk/src/app/global-error":[],"/home/runner/work/pi-desk/pi-desk/src/app/page":[{"inlined":false,"path":"static/css/adb1d4e48dd43c0a.css"}]},"rscModuleMapping":{"2418":{"*":{"id":"11568","name":"*","chunks":[],"async":false}},"14405":{"*":{"id":"52047","name":"*","chunks":[],"async":false}},"21358":{"*":{"id":"69079","name":"*","chunks":[],"async":false}},"22432":{"*":{"id":"7770","name":"*","chunks":[],"async":false}},"23367":{"*":{"id":"39159","name":"*","chunks":[],"async":false}},"33948":{"*":{"id":"52442","name":"*","chunks":[],"async":false}},"44478":{"*":{"id":"47594","name":"*","chunks":[],"async":false}},"64282":{"*":{"id":"64669","name":"*","chunks":[],"async":false}},"66999":{"*":{"id":"88893","name":"*","chunks":[],"async":false}},"69173":{"*":{"id":"17179","name":"*","chunks":[],"async":false}},"71713":{"*":{"id":"70961","name":"*","chunks":[],"async":false}},"84178":{"*":{"id":"12707","name":"*","chunks":[],"async":false}},"84845":{"*":{"id":"56951","name":"*","chunks":[],"async":false}},"90184":{"*":{"id":"270","name":"*","chunks":[],"async":false}},"97876":{"*":{"id":"29190","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"14405":{"*":{"id":"27297","name":"*","chunks":[],"async":false}},"21358":{"*":{"id":"41051","name":"*","chunks":[],"async":false}},"22432":{"*":{"id":"1480","name":"*","chunks":[],"async":false}},"23367":{"*":{"id":"49453","name":"*","chunks":[],"async":false}},"33948":{"*":{"id":"79460","name":"*","chunks":[],"async":false}},"44478":{"*":{"id":"97016","name":"*","chunks":[],"async":false}},"64282":{"*":{"id":"45543","name":"*","chunks":[],"async":false}},"66999":{"*":{"id":"4527","name":"*","chunks":[],"async":false}},"69173":{"*":{"id":"7005","name":"*","chunks":[],"async":false}},"71713":{"*":{"id":"21147","name":"*","chunks":[],"async":false}},"75779":{"*":{"id":"64843","name":"*","chunks":[],"async":false}},"84845":{"*":{"id":"43305","name":"*","chunks":[],"async":false}},"90184":{"*":{"id":"88476","name":"*","chunks":[],"async":false}},"97876":{"*":{"id":"58044","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/client-page.js":{"id":69173,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/client-page.js":{"id":69173,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/client-segment.js":{"id":23367,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/client-segment.js":{"id":23367,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":33948,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":33948,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/layout-router.js":{"id":90184,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/layout-router.js":{"id":90184,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/components/render-from-template-context.js":{"id":44478,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":44478,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/lib/framework/boundary-components.js":{"id":14405,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":14405,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":22432,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":22432,"name":"*","chunks":[],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l1_entry/pages/l1-error-page.tsx":{"id":66999,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","81881","static/chunks/81881-f11dbe7dc0d04ed9.js","24345","static/chunks/app/not-found-2aab8b33ebbf3257.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/client/script.js":{"id":97876,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","46270","static/chunks/46270-3e42514685626190.js","39654","static/chunks/39654-b5fedd762ea0312e.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","75130","static/chunks/75130-d2ca74894aff8085.js","31087","static/chunks/31087-ba426d09d6f68bfd.js","7177","static/chunks/app/layout-c0e1c5cef8620cf8.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/node_modules/.pnpm/next@16.3.1_@babel+core@7.29.7_@opentelemetry+api@1.9.0_@types+node@20.19.43_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/next/dist/esm/client/script.js":{"id":97876,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","46270","static/chunks/46270-3e42514685626190.js","39654","static/chunks/39654-b5fedd762ea0312e.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","75130","static/chunks/75130-d2ca74894aff8085.js","31087","static/chunks/31087-ba426d09d6f68bfd.js","7177","static/chunks/app/layout-c0e1c5cef8620cf8.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l1_entry/providers/l1-app-providers.tsx":{"id":64282,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","46270","static/chunks/46270-3e42514685626190.js","39654","static/chunks/39654-b5fedd762ea0312e.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","75130","static/chunks/75130-d2ca74894aff8085.js","31087","static/chunks/31087-ba426d09d6f68bfd.js","7177","static/chunks/app/layout-c0e1c5cef8620cf8.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l4_foundation/styles/l4-globals.css":{"id":84178,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","46270","static/chunks/46270-3e42514685626190.js","39654","static/chunks/39654-b5fedd762ea0312e.js","3814","static/chunks/3814-35cfab0ce3aa7c41.js","74220","static/chunks/74220-795a2e7185bd66cb.js","75130","static/chunks/75130-d2ca74894aff8085.js","31087","static/chunks/31087-ba426d09d6f68bfd.js","7177","static/chunks/app/layout-c0e1c5cef8620cf8.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/app/error.tsx":{"id":84845,"name":"*","chunks":["78923","static/chunks/78923-17a9c337b29dcecd.js","81881","static/chunks/81881-f11dbe7dc0d04ed9.js","18039","static/chunks/app/error-0296a3b20cd1bf00.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/app/global-error.tsx":{"id":71713,"name":"*","chunks":["34219","static/chunks/app/global-error-6f5fc4928fd1966c.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l1_entry/pages/l1-home-page.tsx":{"id":75779,"name":"*","chunks":["85959","static/chunks/287c71e3-32bb21af66f1f035.js","26717","static/chunks/6c0b963a-c492581a5b6359f7.js","94287","static/chunks/cdfede43-b007dd93b1fdb122.js","78923","static/chunks/78923-17a9c337b29dcecd.js","96995","static/chunks/96995-8f8313ea2ac3abd7.js","46270","static/chunks/46270-3e42514685626190.js","39654","static/chunks/39654-b5fedd762ea0312e.js","14197","static/chunks/14197-3d3ddd426ac06c9c.js","49516","static/chunks/49516-cc4dcd84d64ab4fe.js","74220","static/chunks/74220-795a2e7185bd66cb.js","75130","static/chunks/75130-d2ca74894aff8085.js","58974","static/chunks/app/page-df6045b319f52088.js"],"async":false},"/home/runner/work/pi-desk/pi-desk/src/client/l2_biz/auth/l2-login.tsx":{"id":21358,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/pi-desk/pi-desk/src/":[],"/home/runner/work/pi-desk/pi-desk/src/app/not-found":[],"/home/runner/work/pi-desk/pi-desk/src/app/layout":[{"inlined":false,"path":"static/css/949d0d1a99d5de92.css"},{"inlined":false,"path":"static/css/6427d02b6edf406f.css"}],"/home/runner/work/pi-desk/pi-desk/src/app/error":[],"/home/runner/work/pi-desk/pi-desk/src/app/global-error":[],"/home/runner/work/pi-desk/pi-desk/src/app/page":[{"inlined":false,"path":"static/css/949d0d1a99d5de92.css"}]},"rscModuleMapping":{"14405":{"*":{"id":"52047","name":"*","chunks":[],"async":false}},"21358":{"*":{"id":"69079","name":"*","chunks":[],"async":false}},"22432":{"*":{"id":"7770","name":"*","chunks":[],"async":false}},"23367":{"*":{"id":"39159","name":"*","chunks":[],"async":false}},"33948":{"*":{"id":"52442","name":"*","chunks":[],"async":false}},"44478":{"*":{"id":"47594","name":"*","chunks":[],"async":false}},"64282":{"*":{"id":"64669","name":"*","chunks":[],"async":false}},"66999":{"*":{"id":"88893","name":"*","chunks":[],"async":false}},"69173":{"*":{"id":"17179","name":"*","chunks":[],"async":false}},"71713":{"*":{"id":"70961","name":"*","chunks":[],"async":false}},"75779":{"*":{"id":"11568","name":"*","chunks":[],"async":false}},"84178":{"*":{"id":"12707","name":"*","chunks":[],"async":false}},"84845":{"*":{"id":"56951","name":"*","chunks":[],"async":false}},"90184":{"*":{"id":"270","name":"*","chunks":[],"async":false}},"97876":{"*":{"id":"29190","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -17,6 +17,7 @@
17
17
  "/api/mcp-settings/replace/route": "app/api/mcp-settings/replace/route.js",
18
18
  "/api/model-catalog/list/route": "app/api/model-catalog/list/route.js",
19
19
  "/api/model-settings/get/route": "app/api/model-settings/get/route.js",
20
+ "/api/model-settings/preview/route": "app/api/model-settings/preview/route.js",
20
21
  "/api/model-settings/replace/route": "app/api/model-settings/replace/route.js",
21
22
  "/api/pi/directories/list/route": "app/api/pi/directories/list/route.js",
22
23
  "/api/pi/directory-entries/list/route": "app/api/pi/directory-entries/list/route.js",
@@ -65,6 +66,7 @@
65
66
  "/api/work-sessions/add/route": "app/api/work-sessions/add/route.js",
66
67
  "/api/work-sessions/branch/route": "app/api/work-sessions/branch/route.js",
67
68
  "/api/work-sessions/del/route": "app/api/work-sessions/del/route.js",
69
+ "/api/work-sessions/rename/route": "app/api/work-sessions/rename/route.js",
68
70
  "/api/work-sessions/replace/route": "app/api/work-sessions/replace/route.js",
69
71
  "/api/work-sessions/sort/route": "app/api/work-sessions/sort/route.js",
70
72
  "/favicon.ico/route": "app/favicon.ico/route.js",
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=23054,exports.ids=[23054],exports.modules={18477:(a,b,c)=>{c.d(b,{KE:()=>l,ds:()=>n,kM:()=>o});var d=c(59473),e=c(54733),f=c(58311),g=c(2364),h=c(2002);let i=d.Ik({}).strict(),j=d.Ik({workId:e.eW}).strict(),k=d.Ik({workId:e.eW}).strict(),l=d.Ik({cwd:e.ik.optional(),sessionId:e.Kx.optional(),branchId:d.Yj().min(1).optional(),projectName:d.Yj().trim().min(1).optional(),sessionTitle:d.Yj().trim().min(1).nullable().optional(),status:e.jw.optional(),messageCounts:e.AA.optional(),lastMessageUpdatedAt:g.k.nullable().optional()}).strict().refine(a=>Object.keys(a).length>0,{message:"work session changes cannot be empty"}),m=d.Ik({workSessions:d.YO(e.MY),pinnedCount:e.MT,appRuntime:f.GR}).strict().refine(a=>a.pinnedCount<=a.workSessions.length,{message:"pinnedCount cannot exceed work session count",path:["pinnedCount"]}),n=d.gM("type",[d.Ik({type:d.eu("snapshot"),workSessions:d.YO(e.MY),pinnedCount:e.MT}).strict().refine(a=>a.pinnedCount<=a.workSessions.length,{message:"pinnedCount cannot exceed work session count",path:["pinnedCount"]}),d.Ik({type:d.eu("update"),workId:e.eW,changes:l}).strict(),d.Ik({type:d.eu("delete"),workId:e.eW}).strict()]),o=Object.freeze({list:(0,h.Vc)({path:"work-sessions/list",inputSchema:i,outputSchema:m}),acknowledgeCompleted:(0,h.Vc)({path:"work-sessions/ack-completed",inputSchema:j,outputSchema:k}),update:(0,h._G)({path:"work-sessions/update",bodySchema:n})})},23024:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{E:()=>g});var e=c(72498),f=a([e]);e=(f.then?(await f)():f)[0];class g{constructor(a,b){this.workId=a,this.runtime=b}static async create(a,b,c){let d=c?await e.vC.open(b,c):e.vC.create(b);return new g(a,d)}get cwd(){return this.runtime.cwd}get sessionId(){return this.runtime.sessionId}get branchId(){return this.runtime.branchId}async branch(a){let b=await this.runtime.branch(a);return{changed:b.changed,editorText:b.editorText}}async createBranchedSession(a,b){let c=this.runtime.createBranchedSession(b);return{workSession:new g(a,c.runtime),editorText:c.editorText}}async send(a){return this.runtime.send(a)}async interrupt(){await this.runtime.interrupt()}async restoreQueuedMessages(){return this.runtime.restoreQueuedMessages()}async setModel(a){await this.runtime.setModel(a)}}d()}catch(a){d(a)}})},23054:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{HK:()=>F,JJ:()=>y,Jl:()=>I,Jv:()=>G,Ki:()=>C,VH:()=>D,XM:()=>B,if:()=>H,k1:()=>A,qm:()=>x});var e=c(71473),f=c(77598),g=c(73024),h=c(76760),i=c(59473),j=c(25084),k=c(40529),l=c(77394),m=c(54733),n=c(18477),o=c(33270),p=c(23024),q=c(52913),r=c(65129),s=c(65209),t=c(72498),u=c(46524),v=c(47574),w=a([e,p,r,s,t,v]);[e,p,r,s,t,v]=w.then?(await w)():w;let z=i.Ik({workSessions:m.TO,pinnedCount:m.MT}).strict().refine(a=>a.pinnedCount<=a.workSessions.length,{message:"pinnedCount cannot exceed persisted work session count",path:["pinnedCount"]});class A extends Error{constructor(){super("WorkSession order does not match the current collection"),this.name="WorkSessionOrderConflictError"}}class B extends Error{constructor(a){super(`WorkSession not found: ${a}`),this.name="WorkSessionNotFoundError"}}class C extends Error{constructor(a,b){super(`Pi session ${a} is already bound to work session ${b}`),this.name="WorkSessionSessionConflictError"}}class D extends Error{constructor(a,b){super(`Pi session ${b} was not found in ${a}`),this.name="WorkSessionHistoryNotFoundError"}}class E extends Error{constructor(a,b,c){super(`WorkSession project changed: ${a} (${b} -> ${c})`),this.name="WorkSessionProjectChangedError"}}class F extends Error{constructor(a,b,c){super(`WorkSession binding changed: ${a} (${b} -> ${c})`),this.name="WorkSessionBindingChangedError"}}class G extends Error{constructor(a){super(`WorkSession branch entry was not found: ${a}`),this.name="WorkSessionBranchEntryNotFoundError"}}class H extends Error{constructor(a){super(a),this.name="WorkSessionBranchBlockedError"}}class I extends Error{constructor(a,b){super(b),this.kind=a,this.name="WorkSessionBranchInvalidError"}}class J extends Error{constructor(a){super(`WorkSession project directory is invalid: ${a}`),this.name="WorkSessionDirectoryInvalidError"}}function x(a){return a instanceof Error&&"WorkSessionDirectoryInvalidError"===a.name}class K{constructor(a=(0,h.join)((0,e.M)(),"work-sessions.json")){this.storePath=a,this.workSessionsById=new Map,this.updateListeners=new Set,this.chat=new v.yO,this.hydrated=!1,this.operationTail=Promise.resolve();const b=this.readPersistedState();this.restoredRecords=b.workSessions,this.pinnedCount=b.pinnedCount,this.rewriteLegacyStore=b.rewriteLegacyStore,this.chat.subscribeRecordChanges((a,b,c)=>this.publishChatRecordChange(a,b,c))}initialize(){return this.runExclusive(()=>this.ensureHydrated())}listWorkSessions(){return this.runExclusive(async()=>(await this.ensureHydrated(),this.createSnapshot()))}refreshPluginMessages(){this.chat.refreshPluginMessages()}runPluginRestart(a){return this.runExclusive(async()=>{await this.ensureHydrated();let b=await this.chat.pauseForProcessRestart();try{let b=await a();return console.info("[Pi Desk][WorkSessionManage] 全部工作会话已冻结,等待插件重载"),b}catch(a){throw b(),a}})}subscribeUpdates(a){return this.updateListeners.add(a),()=>this.updateListeners.delete(a)}subscribeMessageEvents(a){return this.chat.subscribe(a)}subscribePluginPushEvents(a){return this.chat.subscribePluginPush(a)}async prepareChatSourceSyncs(a){await this.initialize();let b=a.find(a=>!this.chat.isCurrentSource(a.source));if(b)throw new v.dM(b.source);return await Promise.all(a.map(a=>this.chat.prepareSource(a.source).catch(b=>{if(this.chat.isCurrentSource(a.source))throw b}))),a.filter(a=>this.chat.isCurrentSource(a.source)).map(a=>{let b=this.chat.createSync(a.source,a.cursor);return{source:a.source,event:b.event,watermark:b.watermark}})}async getChatMessageDetail(a){return await this.initialize(),this.chat.getMessageDetail(a)}async getChatModelContext(a){return await this.initialize(),this.chat.getModelContext(a)}async getChatImage(a){return await this.initialize(),this.chat.getImage(a)}async sendChat(a){return await this.initialize(),this.chat.send(a)}async interruptChat(a){await this.initialize(),await this.chat.interrupt(a)}async compactChat(a){await this.initialize(),await this.chat.compact(a)}async reloadChat(a,b){await this.initialize(),await this.chat.reload(a,b)}async setChatPresentation(a,b){await this.initialize(),await this.chat.setPresentation(a,b)}async restoreChatQueue(a){return await this.initialize(),this.chat.restoreQueuedMessages(a)}async setChatModel(a){await this.initialize(),await this.chat.setModel(a)}async setChatCapabilityMode(a){await this.initialize(),await this.chat.setCapabilityMode(a)}getNativeUi(a){if(!this.chat.isCurrentSource(a))throw new v.dM(a);return(0,t.ls)(a.sessionId).nativeUi}async invokeSessionPluginMethod(a){return await this.initialize(),this.chat.invokePluginMethod(a)}async listNativeCommands(a){return await this.initialize(),j.WF.parse({commands:await this.chat.listNativeCommands(a.source)})}async executeNativeCommand(a){await this.initialize(),await this.chat.executeNativeCommand(a.source,a.command,a.args??"")}async listNativeTools(a){return await this.initialize(),j.RH.parse({tools:await this.chat.listNativeTools(a.source)})}async executeDirectBash(a){return await this.initialize(),j.uU.parse(await this.chat.executeDirectBash(a.source,{command:a.command,excludeFromContext:a.excludeFromContext}))}async abortDirectBash(a){await this.initialize(),await this.chat.abortDirectBash(a.source)}async listModels(a){let b=m.eW.parse(a);await this.initialize();let c=this.workSessionsById.get(b);if(!c)throw new B(b);return k.IM.parse(await (0,t.ls)(c.sessionId).listModels())}async acknowledgeCompleted(a){let b=m.eW.parse(a);if(await this.initialize(),!this.workSessionsById.has(b))throw new B(b);return this.chat.acknowledgeCompleted(b)}setWorkSessionArrangement(a,b){let c=a.map(a=>m.eW.parse(a)),d=m.MT.parse(b);return this.runExclusive(async()=>{await this.ensureHydrated();let a=Array.from(this.workSessionsById.keys());if(c.length!==a.length||d>c.length||new Set(c).size!==c.length||c.some(a=>!this.workSessionsById.has(a)))throw new A;if(c.every((b,c)=>b===a[c])&&d===this.pinnedCount)return this.createSnapshot();let b=c.map(a=>this.workSessionsById.get(a));for(let a of(this.workSessionsById.clear(),b))this.workSessionsById.set(a.workId,a);this.pinnedCount=d,this.persist();let e=this.createSnapshot();return this.publishUpdate({type:"snapshot",...e}),console.info("[Pi Desk][WorkSessionManage] 已更新工作会话排列",{workIds:c,pinnedCount:d}),e})}getWorkSession(a){let b=m.eW.parse(a);return this.runExclusive(async()=>(await this.ensureHydrated(),this.workSessionsById.get(b)??null))}getProjectPreviewContext(a,b){return this.workSessionsById.get(a.workId)!==a?null:this.chat.getProjectPreviewContext(a,b)}async replaceProjectGitBranch(a){let b=l.Yh.parse(a),c=await this.authorizeProjectFiles(b.workId,b.cwd),d=await (0,q.Ak)(c,b.repositoryRoot,b.target);return console.info("[Pi Desk][WorkSessionManage] 已切换 Git 分支",{workId:b.workId,cwd:c,repositoryRoot:b.repositoryRoot,targetType:b.target.type,targetName:b.target.name}),l.hr.parse({repository:d})}async addProjectGitBranch(a){let b=l.XV.parse(a),c=await this.authorizeProjectFiles(b.workId,b.cwd),d=await (0,q.bV)(c,b.repositoryRoot,b.name,b.startPoint);return console.info("[Pi Desk][WorkSessionManage] 已新建并切换 Git 分支",{workId:b.workId,cwd:c,repositoryRoot:b.repositoryRoot,branchName:b.name,startPointType:b.startPoint?.type??null,startPointName:b.startPoint?.name??null}),l.hr.parse({repository:d})}createWorkSession(a,b){let c,d=m.ik.parse(a),e=void 0===b?void 0:m.Kx.parse(b);try{c=(0,r.G2)(d)}catch{throw new J(d)}return this.runExclusive(async()=>{if(await this.ensureHydrated(),e){let a=this.findBoundWorkId(e);if(a)throw new C(e,a);if(!await (0,s.vg)(c,e))throw new D(c,e)}let a=await p.E.create((0,f.randomUUID)(),c,e);this.chat.addWorkSession(a),this.insertUnpinnedWorkSession(a),this.persist();let b=this.toListItem(a),d=this.createSnapshot();return this.publishUpdate({type:"snapshot",...d}),console.info("[Pi Desk][WorkSessionManage] 已创建工作会话",{workId:a.workId,cwd:a.cwd,sessionId:a.sessionId,creationType:e?"history":"empty"}),b})}replaceWorkSession(a,b){let c=m.eW.parse(a),d=b?{cwd:m.ik.parse(b.cwd),sessionId:m.Kx.parse(b.sessionId)}:null;return this.runExclusive(async()=>{let a;await this.ensureHydrated();let b=this.workSessionsById.get(c);if(!b)throw new B(c);if(d&&b.cwd===d.cwd&&b.sessionId===d.sessionId)return this.createSnapshot();if(d){let a=this.findBoundWorkId(d.sessionId);if(a&&a!==c)throw new C(d.sessionId,a)}let e=this.toListItem(b);await this.chat.pauseWorkSession(c);try{a=await p.E.create(c,d?.cwd??b.cwd,d?.sessionId),await this.chat.replaceWorkSession(b,a)}catch(a){throw this.chat.resumeWorkSession(c),a}this.workSessionsById.set(c,a),this.persist();let f=this.toListItem(a),g=this.createSnapshot(),h=this.toChanges(e,f);return h&&this.publishUpdate({type:"update",workId:c,changes:h}),console.info("[Pi Desk][WorkSessionManage] 已替换 Pi 会话",{workId:c,replacementType:d?"history":"empty",previousCwd:b.cwd,previousSessionId:b.sessionId,cwd:a.cwd,sessionId:a.sessionId,branchId:a.branchId}),g})}getWorkSessionTree(a){let b=o.i0.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b.workId);if(!a)throw new B(b.workId);return this.assertSessionBinding(a,b.sessionId),o.u1.parse(await (0,t.ls)(a.sessionId).readSessionTree())})}getWorkSessionTreeEntry(a){let b=o.iW.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b.workId);if(!a)throw new B(b.workId);this.assertSessionBinding(a,b.sessionId);try{return o.Cn.parse(await (0,t.ls)(a.sessionId).readSessionTreeEntryDetail(b.entryId))}catch(a){if(a instanceof u.Ns)throw new G(b.entryId);throw a}})}branchWorkSession(a){let b=o.g$.parse(a);return this.runExclusive(async()=>{let a;await this.ensureHydrated();let c=this.workSessionsById.get(b.workId);if(!c)throw new B(b.workId);if(this.assertSessionBinding(c,b.sessionId),"tree"===b.action){let a,d=this.toListItem(c);await this.chat.pauseWorkSession(c.workId);try{(a=await c.branch(b.entryId)).changed?await this.chat.refreshWorkSession(c):this.chat.resumeWorkSession(c.workId)}catch(a){if(c.branchId!==d.branchId){await this.chat.refreshWorkSession(c);let a=this.toChanges(d,this.toListItem(c));a&&this.publishUpdate({type:"update",workId:c.workId,changes:a})}else this.chat.resumeWorkSession(c.workId);this.throwBranchError(a,b.entryId)}let e=this.toListItem(c),f=this.toChanges(d,e);f&&this.publishUpdate({type:"update",workId:c.workId,changes:f});let g=this.createSnapshot();return console.info("[Pi Desk][WorkSessionManage] 已切换当前 JSONL 分支",{workId:c.workId,cwd:c.cwd,sessionId:c.sessionId,entryId:b.entryId,branchId:c.branchId,changed:a.changed}),o.WJ.parse({...g,targetWorkId:c.workId,editorText:a.editorText})}"clone"===b.action&&await this.chat.pauseWorkSession(c.workId);try{a=await c.createBranchedSession((0,f.randomUUID)(),"fork"===b.action?{position:"before",entryId:b.entryId}:{position:"at"}),this.chat.addWorkSession(a.workSession)}catch(a){this.throwBranchError(a,"entryId"in b?b.entryId:null)}finally{"clone"===b.action&&this.chat.resumeWorkSession(c.workId)}let d=a.workSession;this.insertUnpinnedWorkSession(d),this.persist();let e=this.createSnapshot();return this.publishUpdate({type:"snapshot",...e}),console.info("[Pi Desk][WorkSessionManage] 已创建分支 WorkSession",{action:b.action,sourceWorkId:c.workId,sourceSessionId:c.sessionId,workId:d.workId,cwd:d.cwd,entryId:"entryId"in b?b.entryId:null,sessionId:d.sessionId,branchId:d.branchId}),o.WJ.parse({...e,targetWorkId:d.workId,editorText:a.editorText})})}removeWorkSession(a){let b=m.eW.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b);if(!a)return!1;let c=Array.from(this.workSessionsById.keys()).indexOf(b);return await this.chat.pauseWorkSession(b),await this.chat.removeWorkSession(a),this.workSessionsById.delete(b),c<this.pinnedCount&&(this.pinnedCount-=1),this.persist(),this.publishUpdate({type:"delete",workId:b}),console.info("[Pi Desk][WorkSessionManage] 已删除工作会话",{workId:b,pinnedCount:this.pinnedCount}),!0})}async ensureHydrated(){if(this.hydrated)return;let a=performance.now();console.info("[Pi Desk][WorkSessionManage] 开始恢复工作会话",{workSessionCount:this.restoredRecords.length});let b=await Promise.all(this.restoredRecords.map(a=>p.E.create(a.workId,a.cwd,a.sessionId))),c=performance.now();await this.chat.initialize(b);let d=performance.now();for(let e of(console.info("[Pi Desk][WorkSessionManage] 工作会话恢复完成",{workSessionCount:b.length,durationMs:Math.round(d-a),sessionOpenMs:Math.round(c-a),messageProjectionMs:Math.round(d-c)}),b))this.workSessionsById.set(e.workId,e);this.hydrated=!0,this.rewriteLegacyStore&&(this.persist(),this.rewriteLegacyStore=!1,console.info("[Pi Desk][WorkSessionManage] 已升级工作会话持久化格式",{workSessionCount:b.length,pinnedCount:this.pinnedCount}))}async authorizeProjectFiles(a,b){await this.initialize();let c=this.workSessionsById.get(a);if(!c)throw new B(a);if(c.cwd!==b)throw new E(a,b,c.cwd);return c.cwd}findBoundWorkId(a){for(let b of this.workSessionsById.values())if(b.sessionId===a)return b.workId}insertUnpinnedWorkSession(a){let b=this.orderedWorkSessions();for(let c of(b.splice(this.pinnedCount,0,a),this.workSessionsById.clear(),b))this.workSessionsById.set(c.workId,c)}assertSessionBinding(a,b){if(a.sessionId!==b)throw new F(a.workId,b,a.sessionId)}throwBranchError(a,b){if(a instanceof u.Ns)throw new G(b??"");if(a instanceof u.dX)throw new I("fork-target","只有用户消息可以 Fork");if(a instanceof t.er)throw new I("clone-empty","当前会话还没有可克隆的消息");if(a instanceof t.Wo)throw new H(a.message);throw a}orderedWorkSessions(){return Array.from(this.workSessionsById.values())}createSnapshot(){return m.kg.parse({workSessions:this.orderedWorkSessions().map(a=>this.toListItem(a)),pinnedCount:this.pinnedCount})}toRecord(a){return m.ER.parse({workId:a.workId,cwd:a.cwd,sessionId:a.sessionId})}toListItem(a){let b=this.chat.metadataFor(a);return m.MY.parse({...this.toRecord(a),branchId:a.branchId,projectName:(0,h.basename)(a.cwd)||a.cwd,sessionTitle:b.sessionTitle,status:this.chat.statusFor(a),messageCounts:b.messageCounts,lastMessageUpdatedAt:b.lastMessageUpdatedAt})}toChanges(a,b){let c={};return a.cwd!==b.cwd&&(c.cwd=b.cwd),a.sessionId!==b.sessionId&&(c.sessionId=b.sessionId),a.branchId!==b.branchId&&(c.branchId=b.branchId),a.projectName!==b.projectName&&(c.projectName=b.projectName),a.sessionTitle!==b.sessionTitle&&(c.sessionTitle=b.sessionTitle),a.status!==b.status&&(c.status=b.status),(a.messageCounts.user!==b.messageCounts.user||a.messageCounts.total!==b.messageCounts.total)&&(c.messageCounts=b.messageCounts),a.lastMessageUpdatedAt!==b.lastMessageUpdatedAt&&(c.lastMessageUpdatedAt=b.lastMessageUpdatedAt),0===Object.keys(c).length?null:n.KE.parse(c)}publishChatRecordChange(a,b,c){if(!this.hydrated)return;let d=this.workSessionsById.get(a);if(!d)return;let e=this.toListItem(d),f=this.toChanges({...e,...b,status:c},e);f&&this.publishUpdate({type:"update",workId:a,changes:f})}publishUpdate(a){let b=n.ds.parse(a);for(let a of[...this.updateListeners])try{a(b)}catch(a){console.error("[Pi Desk][WorkSessionManage] 推送工作会话变化失败",{updateType:b.type,errorName:a instanceof Error?a.name:"UnknownError"})}}readPersistedState(){if(!(0,g.existsSync)(this.storePath))return{workSessions:[],pinnedCount:0,rewriteLegacyStore:!1};let a=JSON.parse((0,g.readFileSync)(this.storePath,"utf8")),b=Array.isArray(a),c=b?z.parse({workSessions:m.TO.parse(a),pinnedCount:0}):z.parse(a),d=new Set,e=new Set;for(let a of c.workSessions){if(d.has(a.workId))throw Error(`Duplicate persisted workId: ${a.workId}`);if(e.has(a.sessionId))throw Error(`Duplicate persisted sessionId binding: ${a.sessionId}`);d.add(a.workId),e.add(a.sessionId)}return{...c,rewriteLegacyStore:b}}persist(){let a=z.parse({workSessions:this.orderedWorkSessions().map(a=>this.toRecord(a)),pinnedCount:this.pinnedCount});(0,g.mkdirSync)((0,h.dirname)(this.storePath),{recursive:!0});let b=`${this.storePath}.${process.pid}.${(0,f.randomUUID)()}.tmp`;try{(0,g.writeFileSync)(b,`${JSON.stringify(a,null,2)}
1
+ "use strict";exports.id=23054,exports.ids=[23054],exports.modules={18477:(a,b,c)=>{c.d(b,{KE:()=>l,ds:()=>n,kM:()=>o});var d=c(59473),e=c(54733),f=c(58311),g=c(2364),h=c(2002);let i=d.Ik({}).strict(),j=d.Ik({workId:e.eW}).strict(),k=d.Ik({workId:e.eW}).strict(),l=d.Ik({cwd:e.ik.optional(),sessionId:e.Kx.optional(),branchId:d.Yj().min(1).optional(),projectName:d.Yj().trim().min(1).optional(),sessionTitle:d.Yj().trim().min(1).nullable().optional(),status:e.jw.optional(),messageCounts:e.AA.optional(),lastMessageUpdatedAt:g.k.nullable().optional()}).strict().refine(a=>Object.keys(a).length>0,{message:"work session changes cannot be empty"}),m=d.Ik({workSessions:d.YO(e.MY),pinnedCount:e.MT,appRuntime:f.GR}).strict().refine(a=>a.pinnedCount<=a.workSessions.length,{message:"pinnedCount cannot exceed work session count",path:["pinnedCount"]}),n=d.gM("type",[d.Ik({type:d.eu("snapshot"),workSessions:d.YO(e.MY),pinnedCount:e.MT}).strict().refine(a=>a.pinnedCount<=a.workSessions.length,{message:"pinnedCount cannot exceed work session count",path:["pinnedCount"]}),d.Ik({type:d.eu("update"),workId:e.eW,changes:l}).strict(),d.Ik({type:d.eu("delete"),workId:e.eW}).strict()]),o=Object.freeze({list:(0,h.Vc)({path:"work-sessions/list",inputSchema:i,outputSchema:m}),acknowledgeCompleted:(0,h.Vc)({path:"work-sessions/ack-completed",inputSchema:j,outputSchema:k}),update:(0,h._G)({path:"work-sessions/update",bodySchema:n})})},23024:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{E:()=>g});var e=c(72498),f=a([e]);e=(f.then?(await f)():f)[0];class g{constructor(a,b){this.workId=a,this.runtime=b}static async create(a,b,c){let d=c?await e.vC.open(b,c):e.vC.create(b);return new g(a,d)}get cwd(){return this.runtime.cwd}get sessionId(){return this.runtime.sessionId}get branchId(){return this.runtime.branchId}async branch(a){let b=await this.runtime.branch(a);return{changed:b.changed,editorText:b.editorText}}async createBranchedSession(a,b){let c=this.runtime.createBranchedSession(b);return{workSession:new g(a,c.runtime),editorText:c.editorText}}async send(a){return this.runtime.send(a)}async interrupt(){await this.runtime.interrupt()}async restoreQueuedMessages(){return this.runtime.restoreQueuedMessages()}async setTitle(a){await this.runtime.setTitle(a)}async setModel(a){await this.runtime.setModel(a)}}d()}catch(a){d(a)}})},23054:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{HK:()=>F,JJ:()=>y,Jl:()=>I,Jv:()=>G,Ki:()=>C,VH:()=>D,XM:()=>B,if:()=>H,k1:()=>A,qm:()=>x});var e=c(71473),f=c(77598),g=c(73024),h=c(76760),i=c(59473),j=c(25084),k=c(40529),l=c(77394),m=c(54733),n=c(18477),o=c(33270),p=c(23024),q=c(52913),r=c(65129),s=c(65209),t=c(72498),u=c(46524),v=c(47574),w=a([e,p,r,s,t,v]);[e,p,r,s,t,v]=w.then?(await w)():w;let z=i.Ik({workSessions:m.TO,pinnedCount:m.MT}).strict().refine(a=>a.pinnedCount<=a.workSessions.length,{message:"pinnedCount cannot exceed persisted work session count",path:["pinnedCount"]});class A extends Error{constructor(){super("WorkSession order does not match the current collection"),this.name="WorkSessionOrderConflictError"}}class B extends Error{constructor(a){super(`WorkSession not found: ${a}`),this.name="WorkSessionNotFoundError"}}class C extends Error{constructor(a,b){super(`Pi session ${a} is already bound to work session ${b}`),this.name="WorkSessionSessionConflictError"}}class D extends Error{constructor(a,b){super(`Pi session ${b} was not found in ${a}`),this.name="WorkSessionHistoryNotFoundError"}}class E extends Error{constructor(a,b,c){super(`WorkSession project changed: ${a} (${b} -> ${c})`),this.name="WorkSessionProjectChangedError"}}class F extends Error{constructor(a,b,c){super(`WorkSession binding changed: ${a} (${b} -> ${c})`),this.name="WorkSessionBindingChangedError"}}class G extends Error{constructor(a){super(`WorkSession branch entry was not found: ${a}`),this.name="WorkSessionBranchEntryNotFoundError"}}class H extends Error{constructor(a){super(a),this.name="WorkSessionBranchBlockedError"}}class I extends Error{constructor(a,b){super(b),this.kind=a,this.name="WorkSessionBranchInvalidError"}}class J extends Error{constructor(a){super(`WorkSession project directory is invalid: ${a}`),this.name="WorkSessionDirectoryInvalidError"}}function x(a){return a instanceof Error&&"WorkSessionDirectoryInvalidError"===a.name}class K{constructor(a=(0,h.join)((0,e.M)(),"work-sessions.json")){this.storePath=a,this.workSessionsById=new Map,this.updateListeners=new Set,this.chat=new v.yO,this.hydrated=!1,this.operationTail=Promise.resolve();const b=this.readPersistedState();this.restoredRecords=b.workSessions,this.pinnedCount=b.pinnedCount,this.rewriteLegacyStore=b.rewriteLegacyStore,this.chat.subscribeRecordChanges((a,b,c)=>this.publishChatRecordChange(a,b,c))}initialize(){return this.runExclusive(()=>this.ensureHydrated())}listWorkSessions(){return this.runExclusive(async()=>(await this.ensureHydrated(),this.createSnapshot()))}refreshPluginMessages(){this.chat.refreshPluginMessages()}runPluginRestart(a){return this.runExclusive(async()=>{await this.ensureHydrated();let b=await this.chat.pauseForProcessRestart();try{let b=await a();return console.info("[Pi Desk][WorkSessionManage] 全部工作会话已冻结,等待插件重载"),b}catch(a){throw b(),a}})}subscribeUpdates(a){return this.updateListeners.add(a),()=>this.updateListeners.delete(a)}subscribeMessageEvents(a){return this.chat.subscribe(a)}subscribePluginPushEvents(a){return this.chat.subscribePluginPush(a)}async prepareChatSourceSyncs(a){await this.initialize();let b=a.find(a=>!this.chat.isCurrentSource(a.source));if(b)throw new v.dM(b.source);return await Promise.all(a.map(a=>this.chat.prepareSource(a.source).catch(b=>{if(this.chat.isCurrentSource(a.source))throw b}))),a.filter(a=>this.chat.isCurrentSource(a.source)).map(a=>{let b=this.chat.createSync(a.source,a.cursor);return{source:a.source,event:b.event,watermark:b.watermark}})}async getChatMessageDetail(a){return await this.initialize(),this.chat.getMessageDetail(a)}async getChatModelContext(a){return await this.initialize(),this.chat.getModelContext(a)}async getChatImage(a){return await this.initialize(),this.chat.getImage(a)}async sendChat(a){return await this.initialize(),this.chat.send(a)}async interruptChat(a){await this.initialize(),await this.chat.interrupt(a)}async compactChat(a){await this.initialize(),await this.chat.compact(a)}async reloadChat(a,b){await this.initialize(),await this.chat.reload(a,b)}async setChatPresentation(a,b){await this.initialize(),await this.chat.setPresentation(a,b)}async restoreChatQueue(a){return await this.initialize(),this.chat.restoreQueuedMessages(a)}async setChatModel(a){await this.initialize(),await this.chat.setModel(a)}async setChatCapabilityMode(a){await this.initialize(),await this.chat.setCapabilityMode(a)}getNativeUi(a){if(!this.chat.isCurrentSource(a))throw new v.dM(a);return(0,t.ls)(a.sessionId).nativeUi}async invokeSessionPluginMethod(a){return await this.initialize(),this.chat.invokePluginMethod(a)}async listNativeCommands(a){return await this.initialize(),j.WF.parse({commands:await this.chat.listNativeCommands(a.source)})}async executeNativeCommand(a){await this.initialize(),await this.chat.executeNativeCommand(a.source,a.command,a.args??"")}async listNativeTools(a){return await this.initialize(),j.RH.parse({tools:await this.chat.listNativeTools(a.source)})}async executeDirectBash(a){return await this.initialize(),j.uU.parse(await this.chat.executeDirectBash(a.source,{command:a.command,excludeFromContext:a.excludeFromContext}))}async abortDirectBash(a){await this.initialize(),await this.chat.abortDirectBash(a.source)}async listModels(a){let b=m.eW.parse(a);await this.initialize();let c=this.workSessionsById.get(b);if(!c)throw new B(b);return k.IM.parse(await (0,t.ls)(c.sessionId).listModels())}async acknowledgeCompleted(a){let b=m.eW.parse(a);if(await this.initialize(),!this.workSessionsById.has(b))throw new B(b);return this.chat.acknowledgeCompleted(b)}setWorkSessionArrangement(a,b){let c=a.map(a=>m.eW.parse(a)),d=m.MT.parse(b);return this.runExclusive(async()=>{await this.ensureHydrated();let a=Array.from(this.workSessionsById.keys());if(c.length!==a.length||d>c.length||new Set(c).size!==c.length||c.some(a=>!this.workSessionsById.has(a)))throw new A;if(c.every((b,c)=>b===a[c])&&d===this.pinnedCount)return this.createSnapshot();let b=c.map(a=>this.workSessionsById.get(a));for(let a of(this.workSessionsById.clear(),b))this.workSessionsById.set(a.workId,a);this.pinnedCount=d,this.persist();let e=this.createSnapshot();return this.publishUpdate({type:"snapshot",...e}),console.info("[Pi Desk][WorkSessionManage] 已更新工作会话排列",{workIds:c,pinnedCount:d}),e})}getWorkSession(a){let b=m.eW.parse(a);return this.runExclusive(async()=>(await this.ensureHydrated(),this.workSessionsById.get(b)??null))}getProjectPreviewContext(a,b){return this.workSessionsById.get(a.workId)!==a?null:this.chat.getProjectPreviewContext(a,b)}async replaceProjectGitBranch(a){let b=l.Yh.parse(a),c=await this.authorizeProjectFiles(b.workId,b.cwd),d=await (0,q.Ak)(c,b.repositoryRoot,b.target);return console.info("[Pi Desk][WorkSessionManage] 已切换 Git 分支",{workId:b.workId,cwd:c,repositoryRoot:b.repositoryRoot,targetType:b.target.type,targetName:b.target.name}),l.hr.parse({repository:d})}async addProjectGitBranch(a){let b=l.XV.parse(a),c=await this.authorizeProjectFiles(b.workId,b.cwd),d=await (0,q.bV)(c,b.repositoryRoot,b.name,b.startPoint);return console.info("[Pi Desk][WorkSessionManage] 已新建并切换 Git 分支",{workId:b.workId,cwd:c,repositoryRoot:b.repositoryRoot,branchName:b.name,startPointType:b.startPoint?.type??null,startPointName:b.startPoint?.name??null}),l.hr.parse({repository:d})}createWorkSession(a,b){let c,d=m.ik.parse(a),e=void 0===b?void 0:m.Kx.parse(b);try{c=(0,r.G2)(d)}catch{throw new J(d)}return this.runExclusive(async()=>{if(await this.ensureHydrated(),e){let a=this.findBoundWorkId(e);if(a)throw new C(e,a);if(!await (0,s.vg)(c,e))throw new D(c,e)}let a=await p.E.create((0,f.randomUUID)(),c,e);this.chat.addWorkSession(a),this.insertUnpinnedWorkSession(a),this.persist();let b=this.toListItem(a),d=this.createSnapshot();return this.publishUpdate({type:"snapshot",...d}),console.info("[Pi Desk][WorkSessionManage] 已创建工作会话",{workId:a.workId,cwd:a.cwd,sessionId:a.sessionId,creationType:e?"history":"empty"}),b})}renameWorkSession(a){let b=m.qL.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b.workId);if(!a)throw new B(b.workId);this.assertSessionBinding(a,b.sessionId),await this.chat.setTitle(a,b.title)})}replaceWorkSession(a,b){let c=m.eW.parse(a),d=b?{cwd:m.ik.parse(b.cwd),sessionId:m.Kx.parse(b.sessionId)}:null;return this.runExclusive(async()=>{let a;await this.ensureHydrated();let b=this.workSessionsById.get(c);if(!b)throw new B(c);if(d&&b.cwd===d.cwd&&b.sessionId===d.sessionId)return this.createSnapshot();if(d){let a=this.findBoundWorkId(d.sessionId);if(a&&a!==c)throw new C(d.sessionId,a)}let e=this.toListItem(b);await this.chat.pauseWorkSession(c);try{a=await p.E.create(c,d?.cwd??b.cwd,d?.sessionId),await this.chat.replaceWorkSession(b,a)}catch(a){throw this.chat.resumeWorkSession(c),a}this.workSessionsById.set(c,a),this.persist();let f=this.toListItem(a),g=this.createSnapshot(),h=this.toChanges(e,f);return h&&this.publishUpdate({type:"update",workId:c,changes:h}),console.info("[Pi Desk][WorkSessionManage] 已替换 Pi 会话",{workId:c,replacementType:d?"history":"empty",previousCwd:b.cwd,previousSessionId:b.sessionId,cwd:a.cwd,sessionId:a.sessionId,branchId:a.branchId}),g})}getWorkSessionTree(a){let b=o.i0.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b.workId);if(!a)throw new B(b.workId);return this.assertSessionBinding(a,b.sessionId),o.u1.parse(await (0,t.ls)(a.sessionId).readSessionTree())})}getWorkSessionTreeEntry(a){let b=o.iW.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b.workId);if(!a)throw new B(b.workId);this.assertSessionBinding(a,b.sessionId);try{return o.Cn.parse(await (0,t.ls)(a.sessionId).readSessionTreeEntryDetail(b.entryId))}catch(a){if(a instanceof u.Ns)throw new G(b.entryId);throw a}})}branchWorkSession(a){let b=o.g$.parse(a);return this.runExclusive(async()=>{let a;await this.ensureHydrated();let c=this.workSessionsById.get(b.workId);if(!c)throw new B(b.workId);if(this.assertSessionBinding(c,b.sessionId),"tree"===b.action){let a,d=this.toListItem(c);await this.chat.pauseWorkSession(c.workId);try{(a=await c.branch(b.entryId)).changed?await this.chat.refreshWorkSession(c):this.chat.resumeWorkSession(c.workId)}catch(a){if(c.branchId!==d.branchId){await this.chat.refreshWorkSession(c);let a=this.toChanges(d,this.toListItem(c));a&&this.publishUpdate({type:"update",workId:c.workId,changes:a})}else this.chat.resumeWorkSession(c.workId);this.throwBranchError(a,b.entryId)}let e=this.toListItem(c),f=this.toChanges(d,e);f&&this.publishUpdate({type:"update",workId:c.workId,changes:f});let g=this.createSnapshot();return console.info("[Pi Desk][WorkSessionManage] 已切换当前 JSONL 分支",{workId:c.workId,cwd:c.cwd,sessionId:c.sessionId,entryId:b.entryId,branchId:c.branchId,changed:a.changed}),o.WJ.parse({...g,targetWorkId:c.workId,editorText:a.editorText})}"clone"===b.action&&await this.chat.pauseWorkSession(c.workId);try{a=await c.createBranchedSession((0,f.randomUUID)(),"fork"===b.action?{position:"before",entryId:b.entryId}:{position:"at"}),this.chat.addWorkSession(a.workSession)}catch(a){this.throwBranchError(a,"entryId"in b?b.entryId:null)}finally{"clone"===b.action&&this.chat.resumeWorkSession(c.workId)}let d=a.workSession;this.insertUnpinnedWorkSession(d),this.persist();let e=this.createSnapshot();return this.publishUpdate({type:"snapshot",...e}),console.info("[Pi Desk][WorkSessionManage] 已创建分支 WorkSession",{action:b.action,sourceWorkId:c.workId,sourceSessionId:c.sessionId,workId:d.workId,cwd:d.cwd,entryId:"entryId"in b?b.entryId:null,sessionId:d.sessionId,branchId:d.branchId}),o.WJ.parse({...e,targetWorkId:d.workId,editorText:a.editorText})})}removeWorkSession(a){let b=m.eW.parse(a);return this.runExclusive(async()=>{await this.ensureHydrated();let a=this.workSessionsById.get(b);if(!a)return!1;let c=Array.from(this.workSessionsById.keys()).indexOf(b);return await this.chat.pauseWorkSession(b),await this.chat.removeWorkSession(a),this.workSessionsById.delete(b),c<this.pinnedCount&&(this.pinnedCount-=1),this.persist(),this.publishUpdate({type:"delete",workId:b}),console.info("[Pi Desk][WorkSessionManage] 已删除工作会话",{workId:b,pinnedCount:this.pinnedCount}),!0})}async ensureHydrated(){if(this.hydrated)return;let a=performance.now();console.info("[Pi Desk][WorkSessionManage] 开始恢复工作会话",{workSessionCount:this.restoredRecords.length});let b=await Promise.all(this.restoredRecords.map(a=>p.E.create(a.workId,a.cwd,a.sessionId))),c=performance.now();await this.chat.initialize(b);let d=performance.now();for(let e of(console.info("[Pi Desk][WorkSessionManage] 工作会话恢复完成",{workSessionCount:b.length,durationMs:Math.round(d-a),sessionOpenMs:Math.round(c-a),messageProjectionMs:Math.round(d-c)}),b))this.workSessionsById.set(e.workId,e);this.hydrated=!0,this.rewriteLegacyStore&&(this.persist(),this.rewriteLegacyStore=!1,console.info("[Pi Desk][WorkSessionManage] 已升级工作会话持久化格式",{workSessionCount:b.length,pinnedCount:this.pinnedCount}))}async authorizeProjectFiles(a,b){await this.initialize();let c=this.workSessionsById.get(a);if(!c)throw new B(a);if(c.cwd!==b)throw new E(a,b,c.cwd);return c.cwd}findBoundWorkId(a){for(let b of this.workSessionsById.values())if(b.sessionId===a)return b.workId}insertUnpinnedWorkSession(a){let b=this.orderedWorkSessions();for(let c of(b.splice(this.pinnedCount,0,a),this.workSessionsById.clear(),b))this.workSessionsById.set(c.workId,c)}assertSessionBinding(a,b){if(a.sessionId!==b)throw new F(a.workId,b,a.sessionId)}throwBranchError(a,b){if(a instanceof u.Ns)throw new G(b??"");if(a instanceof u.dX)throw new I("fork-target","只有用户消息可以 Fork");if(a instanceof t.er)throw new I("clone-empty","当前会话还没有可克隆的消息");if(a instanceof t.Wo)throw new H(a.message);throw a}orderedWorkSessions(){return Array.from(this.workSessionsById.values())}createSnapshot(){return m.kg.parse({workSessions:this.orderedWorkSessions().map(a=>this.toListItem(a)),pinnedCount:this.pinnedCount})}toRecord(a){return m.ER.parse({workId:a.workId,cwd:a.cwd,sessionId:a.sessionId})}toListItem(a){let b=this.chat.metadataFor(a);return m.MY.parse({...this.toRecord(a),branchId:a.branchId,projectName:(0,h.basename)(a.cwd)||a.cwd,sessionTitle:b.sessionTitle,status:this.chat.statusFor(a),messageCounts:b.messageCounts,lastMessageUpdatedAt:b.lastMessageUpdatedAt})}toChanges(a,b){let c={};return a.cwd!==b.cwd&&(c.cwd=b.cwd),a.sessionId!==b.sessionId&&(c.sessionId=b.sessionId),a.branchId!==b.branchId&&(c.branchId=b.branchId),a.projectName!==b.projectName&&(c.projectName=b.projectName),a.sessionTitle!==b.sessionTitle&&(c.sessionTitle=b.sessionTitle),a.status!==b.status&&(c.status=b.status),(a.messageCounts.user!==b.messageCounts.user||a.messageCounts.total!==b.messageCounts.total)&&(c.messageCounts=b.messageCounts),a.lastMessageUpdatedAt!==b.lastMessageUpdatedAt&&(c.lastMessageUpdatedAt=b.lastMessageUpdatedAt),0===Object.keys(c).length?null:n.KE.parse(c)}publishChatRecordChange(a,b,c){if(!this.hydrated)return;let d=this.workSessionsById.get(a);if(!d)return;let e=this.toListItem(d),f=this.toChanges({...e,...b,status:c},e);f&&this.publishUpdate({type:"update",workId:a,changes:f})}publishUpdate(a){let b=n.ds.parse(a);for(let a of[...this.updateListeners])try{a(b)}catch(a){console.error("[Pi Desk][WorkSessionManage] 推送工作会话变化失败",{updateType:b.type,errorName:a instanceof Error?a.name:"UnknownError"})}}readPersistedState(){if(!(0,g.existsSync)(this.storePath))return{workSessions:[],pinnedCount:0,rewriteLegacyStore:!1};let a=JSON.parse((0,g.readFileSync)(this.storePath,"utf8")),b=Array.isArray(a),c=b?z.parse({workSessions:m.TO.parse(a),pinnedCount:0}):z.parse(a),d=new Set,e=new Set;for(let a of c.workSessions){if(d.has(a.workId))throw Error(`Duplicate persisted workId: ${a.workId}`);if(e.has(a.sessionId))throw Error(`Duplicate persisted sessionId binding: ${a.sessionId}`);d.add(a.workId),e.add(a.sessionId)}return{...c,rewriteLegacyStore:b}}persist(){let a=z.parse({workSessions:this.orderedWorkSessions().map(a=>this.toRecord(a)),pinnedCount:this.pinnedCount});(0,g.mkdirSync)((0,h.dirname)(this.storePath),{recursive:!0});let b=`${this.storePath}.${process.pid}.${(0,f.randomUUID)()}.tmp`;try{(0,g.writeFileSync)(b,`${JSON.stringify(a,null,2)}
2
2
  `,"utf8"),(0,g.renameSync)(b,this.storePath)}finally{(0,g.existsSync)(b)&&(0,g.unlinkSync)(b)}}runExclusive(a){let b=this.operationTail.then(a,a);return this.operationTail=b.then(()=>void 0,()=>void 0),b}}function y(){return globalThis.__piDeskWorkSessionManage||(globalThis.__piDeskWorkSessionManage=new K),globalThis.__piDeskWorkSessionManage}d()}catch(a){d(a)}})},25084:(a,b,c)=>{c.d(b,{QV:()=>u,RH:()=>p,WF:()=>k,uU:()=>r});var d=c(59473),e=c(96089),f=c(2002),g=c(24187);let h=d.k5(["extension","prompt","skill"]),i=d.Ik({name:d.Yj().trim().min(1).max(128),description:d.Yj().max(500).nullable(),source:h}).strict(),j=d.Ik({source:e.R}).strict(),k=d.Ik({commands:d.YO(i)}).strict(),l=d.Ik({source:e.R,command:d.Yj().trim().min(1).max(128),args:d.Yj().max(32768).optional()}).strict(),m=d.Ik({}).strict(),n=d.Ik({name:d.Yj().trim().min(1).max(128),description:d.Yj(),parameters:g.Dz,active:d.zM(),exposure:d.k5(["direct","model-only","codemode","deferred","hidden"]),source:d.Yj().nullable(),blockedByMode:d.zM()}).strict(),o=d.Ik({source:e.R}).strict(),p=d.Ik({tools:d.YO(n)}).strict(),q=d.Ik({source:e.R,command:d.Yj().min(1).max(32768),excludeFromContext:d.zM()}).strict(),r=d.Ik({output:d.Yj(),exitCode:d.ai().int().nullable(),cancelled:d.zM(),truncated:d.zM(),fullOutputPath:d.Yj().nullable()}).strict(),s=d.Ik({source:e.R}).strict(),t=d.Ik({}).strict(),u=Object.freeze({commandsList:(0,f.Vc)({path:"pi/commands/list",inputSchema:j,outputSchema:k}),commandExecute:(0,f.Vc)({path:"pi/commands/execute",inputSchema:l,outputSchema:m,timeoutMs:3e5}),toolsList:(0,f.Vc)({path:"pi/tools/list",inputSchema:o,outputSchema:p}),bashExecute:(0,f.Vc)({path:"pi/bash/execute",inputSchema:q,outputSchema:r,timeoutMs:12e4}),bashAbort:(0,f.Vc)({path:"pi/bash/abort",inputSchema:s,outputSchema:t})})},33270:(a,b,c)=>{c.d(b,{Cn:()=>l,WJ:()=>n,g$:()=>m,i0:()=>i,iW:()=>k,u1:()=>j});var d=c(59473),e=c(2364),f=c(54733);let g=d.k5(["user","assistant","tool","bash","custom_message","compaction","branch_summary","custom","model_change","thinking_level_change","session_info","label"]),h=d.Ik({entryId:f.C3,parentEntryId:f.C3.nullable(),timestampMs:e.k,kind:g,preview:d.Yj(),label:d.Yj().trim().min(1).nullable()}).strict(),i=d.Ik({workId:f.eW,sessionId:f.Kx}).strict(),j=d.Ik({sessionId:f.Kx,leafEntryId:f.C3.nullable(),nodes:d.YO(h)}).strict().superRefine((a,b)=>{let c=new Set;for(let[d,e]of a.nodes.entries())c.has(e.entryId)&&b.addIssue({code:"custom",message:"work session tree entryId values must be unique",path:["nodes",d,"entryId"]}),c.add(e.entryId);null===a.leafEntryId||c.has(a.leafEntryId)||b.addIssue({code:"custom",message:"work session tree leafEntryId must reference a node",path:["leafEntryId"]})}),k=d.Ik({workId:f.eW,sessionId:f.Kx,entryId:f.C3}).strict(),l=d.Ik({entryId:f.C3,kind:g,content:d.Yj(),truncated:d.zM()}).strict();d.k5(["tree","fork","clone"]);let m=d.gM("action",[d.Ik({action:d.eu("tree"),workId:f.eW,sessionId:f.Kx,entryId:f.C3}).strict(),d.Ik({action:d.eu("fork"),workId:f.eW,sessionId:f.Kx,entryId:f.C3}).strict(),d.Ik({action:d.eu("clone"),workId:f.eW,sessionId:f.Kx}).strict()]),n=d.Ik({workSessions:d.YO(f.MY),pinnedCount:f.MT,targetWorkId:f.eW,editorText:d.Yj().nullable()}).strict().superRefine((a,b)=>{a.pinnedCount>a.workSessions.length&&b.addIssue({code:"custom",message:"pinnedCount cannot exceed work session count",path:["pinnedCount"]}),a.workSessions.some(b=>b.workId===a.targetWorkId)||b.addIssue({code:"custom",message:"targetWorkId must reference a returned work session",path:["targetWorkId"]})})},40529:(a,b,c)=>{c.d(b,{IM:()=>l,kJ:()=>k});var d=c(59473),e=c(54733),f=c(62977);let g=d.Yj().trim().min(1),h=d.Yj().trim().min(1),i=d.Ik({provider:g,modelId:h,name:d.Yj().trim().min(1),input:d.YO(d.k5(["text","image"])).min(1),kind:d.k5(["physical","virtual"]),contextWindow:d.ai().int().positive().max(Number.MAX_SAFE_INTEGER).nullable(),thinkingLevels:d.YO(f.$).min(1)}).strict(),j=d.Ik({provider:g,modelId:h,thinkingLevel:f.$,color:d.Yj().trim().min(1).nullable()}).strict(),k=d.Ik({workId:e.eW}).strict(),l=d.Ik({models:d.YO(i),presets:d.YO(j)}).strict()},58311:(a,b,c)=>{c.d(b,{$C:()=>A,A8:()=>E,GR:()=>q,MQ:()=>D,Pq:()=>B,UH:()=>j,Wh:()=>r,Xo:()=>o,YT:()=>z});var d=c(59473),e=c(41904),f=c(20369),g=c(24187),h=c(2364);let i=d.Yj().uuid(),j=d.Yj().trim().min(1).max(256),k=d.k5(["info","success","warning","error"]),l=d.Yj().trim().min(1).max(120),m=d.Yj().trim().max(320).nullable(),n=d.Ik({type:d.eu("plugin"),pluginName:g.tv,name:g.f7,data:g.Dz}).strict(),o=d.Ik({notificationId:i,level:k,title:l,description:m,createdAt:h.k,event:n.nullable()}).strict(),p=d.g1(g.tv,g.Dz),q=d.Ik({mode:d.k5(["normal","basic"]).default("normal"),notifications:d.YO(o),plugins:p,capabilityModes:f.Wu,settings:e.J.default({region:{locale:"en",timeZone:"UTC"}})}).strict(),r=d.Ik({level:k.optional(),title:l.optional(),description:m.optional(),event:n.nullable().optional()}).strict().refine(a=>Object.keys(a).length>0,{message:"notification changes cannot be empty"}),s=d.Ik({type:d.eu("add"),notification:o}).strict(),t=d.Ik({type:d.eu("update"),notificationId:i,changes:r}).strict(),u=d.Ik({type:d.eu("delete"),notificationId:i}).strict(),v=d.gM("type",[s,t,u]),w=d.Ik({pluginName:g.tv,state:g.Dz.nullable()}).strict(),x=d.Ik({key:d.eu("capabilityModes"),update:f.Wu}).strict(),y=d.Ik({key:d.eu("settings"),update:e.J}).strict();d.gM("key",[y,x,d.Ik({key:d.eu("notifications"),update:v}).strict(),d.Ik({key:d.eu("plugins"),update:w}).strict()]);let z=d.KC([y.extend({type:d.eu("update")}),x.extend({type:d.eu("update")}),d.Ik({type:d.eu("replace"),runtime:q}).strict(),d.Ik({type:d.eu("update"),key:d.eu("notifications"),update:v}).strict(),d.Ik({type:d.eu("update"),key:d.eu("plugins"),update:w}).strict()]),A=d.gM("key",[d.Ik({key:d.eu("notifications"),update:u}).strict(),d.Ik({key:d.eu("settings"),update:d.Ik({region:e.a.unwrap().partial().strict().refine(a=>Object.keys(a).length>0,"地区更新不能为空")}).strict()}).strict()]),B=d.Ik({}).strict(),C=d.Ik({name:g.f7,data:g.Dz}).strict(),D=d.Ik({key:j.optional(),level:k,title:l,description:d.Yj().trim().max(320).optional(),event:C.optional()}).strict(),E=d.Ik({level:k.optional(),title:l.optional(),description:m.optional()}).strict().refine(a=>Object.keys(a).length>0,{message:"plugin notification changes cannot be empty"})},65129:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{G2:()=>l,W1:()=>j,XO:()=>o,pm:()=>k});var e=c(51455),f=c(73024),g=c(76760),h=c(7499),i=a([h]);h=(i.then?(await i)():i)[0];class p extends Error{constructor(a){super(`Pi project directory is invalid: ${a}`),this.name="L4PiDirectoryInvalidError"}}class q extends Error{constructor(a){super(`Pi project directory cannot be read: ${a}`),this.name="L4PiDirectoryReadError"}}function j(a){return a instanceof Error&&"L4PiDirectoryInvalidError"===a.name}function k(a){return a instanceof Error&&"L4PiDirectoryReadError"===a.name}function l(a){let b=(0,g.resolve)(a);try{if(!(0,f.statSync)(b).isDirectory())throw new p(b)}catch(a){if(a instanceof p)throw a;throw new p(b)}return b}function m(){return new Set((0,h.Us)().map(h.sC))}async function n(a,b,c,d){if(c)return!0;if(!d)return!1;try{return(await (0,e.stat)((0,g.join)(a,b))).isDirectory()}catch{return!1}}async function o(a){let b;if(null===a){let a,b,c;return a=(0,g.parse)(process.cwd()).root,b="win32"===process.platform?function(){let a=[];for(let b=65;b<=90;b+=1){let c=`${String.fromCharCode(b)}:\\`;try{(0,f.statSync)(c).isDirectory()&&a.push({cwd:c,name:c})}catch{}}return a}():[{cwd:a,name:a}],c=m(),{cwd:null,parentCwd:null,directories:b.filter(a=>!c.has((0,h.sC)(a.cwd)))}}let c=l(a);try{b=await (0,e.readdir)(c,{withFileTypes:!0})}catch{throw new q(c)}let d=m(),i=(await Promise.all(b.map(async a=>{if(!await n(c,a.name,a.isDirectory(),a.isSymbolicLink()))return null;let b=(0,g.resolve)(c,a.name);return d.has((0,h.sC)(b))?null:{cwd:b,name:a.name}}))).filter(a=>null!==a).sort((a,b)=>a.name.localeCompare(b.name,void 0,{numeric:!0,sensitivity:"base"})),j=(0,g.parse)(c).root;return{cwd:c,parentCwd:(0,h.sC)(c)===(0,h.sC)(j)?null:(0,g.dirname)(c),directories:i}}d()}catch(a){d(a)}})},77394:(a,b,c)=>{c.d(b,{XV:()=>p,Yh:()=>o,hr:()=>q});var d=c(59473),e=c(66951),f=c(63719),g=c(54733);let h=e.y2,i=d.Ik({workId:g.eW,cwd:g.ik}).strict(),j=e.Ww,k=e.cP,l=e.zp,m=e.u2;d.Ik({repositories:d.YO(m).max(h)}).strict(),i.extend({repositoryRoot:j}).strict();let n=e.zt,o=i.extend({repositoryRoot:j,target:n}).strict(),p=i.extend({repositoryRoot:j,name:k,startPoint:n.nullable()}).strict(),q=d.Ik({repository:l}).strict();i.extend({repositoryRoot:j,path:f._g}).strict()}};