@jetcrab/pi-desk 1.1.18-dev → 1.1.21

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 (250) hide show
  1. package/docs/plugins.md +82 -2
  2. package/next.config.ts +1 -0
  3. package/package.json +4 -3
  4. package/src/app/page.tsx +6 -1
  5. package/src/app/project-preview/page.tsx +10 -0
  6. package/src/client/l1_entry/pages/l1-home-page.tsx +30 -0
  7. package/src/client/l1_entry/pages/l1-project-preview-page.tsx +33 -0
  8. package/src/client/l1_entry/providers/l1-app-providers.tsx +18 -15
  9. package/src/client/l1_entry/providers/l1-app-runtime-provider.tsx +2 -2
  10. package/src/client/l2_biz/auth/l2-login-biz.ts +3 -0
  11. package/src/client/l2_biz/auth/l2-login.tsx +2 -3
  12. package/src/client/l2_biz/plugin-host/l2-plugin-capability-details.tsx +6 -1
  13. package/src/client/l2_biz/plugin-host/l2-plugin-contribution-host.tsx +71 -10
  14. package/src/client/l2_biz/plugin-host/l2-plugin-management-controls.tsx +9 -0
  15. package/src/client/l2_biz/plugin-host/l2-plugin-session-header-layout.ts +18 -0
  16. package/src/client/l2_biz/plugin-host/l2-plugin-session-header.tsx +247 -0
  17. package/src/client/l2_biz/plugin-host/l2-plugin-widgets.tsx +50 -0
  18. package/src/client/l2_biz/plugin-host/views/l2-plugin-session-header-action.tsx +112 -0
  19. package/src/client/l2_biz/project-preview/hooks/l2-use-project-picker.ts +76 -0
  20. package/src/client/l2_biz/project-preview/hooks/l2-use-project-preview.ts +214 -0
  21. package/src/client/l2_biz/project-preview/l2-project-preview-biz.ts +49 -4
  22. package/src/client/l2_biz/project-preview/l2-project-preview-dialog.tsx +42 -450
  23. package/src/client/l2_biz/project-preview/l2-project-preview-page.tsx +61 -0
  24. package/src/client/l2_biz/project-preview/l2-project-preview.tsx +342 -0
  25. package/src/client/l2_biz/project-preview/runtime/l2-project-history-runtime.ts +9 -3
  26. package/src/client/l2_biz/project-preview/views/l2-project-picker.tsx +168 -0
  27. package/src/client/l2_biz/settings/hooks/l2-use-model-settings.ts +34 -31
  28. package/src/client/l2_biz/settings/views/l2-model-replacement-preview.tsx +7 -1
  29. package/src/client/l2_biz/workbench/file-workspace/l2-file-workspace-runtime.ts +1 -1
  30. package/src/client/l2_biz/workbench/file-workspace/l2-project-preview-biz.ts +4 -3
  31. package/src/client/l2_biz/workbench/hooks/l2-workbench-chat-reload.ts +42 -0
  32. package/src/client/l2_biz/workbench/hooks/l2-workbench-chat-viewport.ts +28 -21
  33. package/src/client/l2_biz/workbench/l2-work-session-columns.module.css +32 -0
  34. package/src/client/l2_biz/workbench/l2-work-session-columns.tsx +55 -16
  35. package/src/client/l2_biz/workbench/l2-work-session-sidebar.tsx +38 -9
  36. package/src/client/l2_biz/workbench/l2-workbench-chat-composer.tsx +12 -1
  37. package/src/client/l2_biz/workbench/l2-workbench-chat.ts +45 -0
  38. package/src/client/l2_biz/workbench/l2-workbench-initialization-notice.tsx +8 -3
  39. package/src/client/l2_biz/workbench/l2-workbench-plugin-slots.ts +13 -0
  40. package/src/client/l2_biz/workbench/l2-workbench.tsx +19 -2
  41. package/src/client/l3_modules/conversation/l3-conversation-markdown.tsx +10 -1
  42. package/src/client/l3_modules/conversation/l3-conversation-viewport.tsx +12 -6
  43. package/src/client/l3_modules/project-files/l3-markdown-preview.module.css +1 -1
  44. package/src/client/l3_modules/project-files/l3-markdown-preview.tsx +10 -1
  45. package/src/client/l3_modules/project-files/l3-project-document-git.ts +4 -3
  46. package/src/client/l3_modules/project-files/l3-project-document-view.tsx +6 -1
  47. package/src/client/l3_modules/project-files/l3-project-file-browser.tsx +171 -229
  48. package/src/client/l3_modules/project-files/l3-project-file-runtime.ts +133 -70
  49. package/src/client/l3_modules/project-files/l3-project-reader.ts +26 -37
  50. package/src/client/l3_modules/project-files/views/l3-project-search-controls.tsx +201 -0
  51. package/src/client/l3_modules/project-files/views/l3-project-search-results.tsx +333 -0
  52. package/src/client/l4_foundation/lib/l4-client-id.tsx +11 -0
  53. package/src/client/l4_foundation/plugin-host/l4-plugin-host-runtime.ts +316 -35
  54. package/src/client/l4_foundation/ui/code/l4-code-preview.tsx +47 -3
  55. package/src/client/l4_foundation/ui/markdown/l4-markdown-remark.ts +89 -0
  56. package/src/client/l4_foundation/ui/markdown/l4-markdown.module.css +58 -0
  57. package/src/client/l4_foundation/ui/markdown/l4-markdown.tsx +108 -0
  58. package/src/common/l2_biz/auth/l2-auth-return-to.ts +41 -0
  59. package/src/common/l2_biz/model-settings/l2-model-settings-contract.ts +5 -1
  60. package/src/common/l2_biz/plugin/l2-plugin-management-messages.ts +4 -0
  61. package/src/common/l2_biz/project-preview/l2-project-history-messages.ts +28 -0
  62. package/src/common/l2_biz/project-preview/l2-project-preview-navigation.ts +5 -0
  63. package/src/common/l2_biz/settings/l2-settings-messages.ts +4 -3
  64. package/src/common/l2_biz/work-session/l2-work-session-file-contract.ts +4 -3
  65. package/src/common/l2_biz/workbench/l2-workbench-locale-messages.ts +8 -0
  66. package/src/common/l3_modules/project-files/l3-project-files-contract.ts +2 -3
  67. package/src/common/l3_modules/project-files/l3-project-files-locale-messages.ts +56 -10
  68. package/src/common/l4_foundation/file/l4-project-file-contract.ts +51 -1
  69. package/src/common/l4_foundation/locale/l4-host-error-messages.ts +11 -0
  70. package/src/common/l4_foundation/locale/l4-locale-messages.ts +16 -0
  71. package/src/instrumentation.ts +0 -2
  72. package/src/server/l1_entry/api/l1-project-read-routes.ts +6 -4
  73. package/src/server/l1_entry/api/l1-project-route.ts +9 -8
  74. package/src/server/l1_entry/api/l1-work-session-file-error.ts +23 -0
  75. package/src/server/l1_entry/node/l1-server.ts +8 -4
  76. package/src/server/l2_biz/plugin-management/l2-plugin-management.ts +0 -3
  77. package/src/server/l2_biz/work-session/l2-work-session-chat-runtime.ts +30 -58
  78. package/src/server/l2_biz/work-session/l2-work-session-manage.ts +0 -4
  79. package/src/server/l4_foundation/file/l4-project-file-index.ts +276 -0
  80. package/src/server/l4_foundation/file/l4-project-search.ts +399 -0
  81. package/src/server/l4_foundation/file/l4-ripgrep-search.ts +192 -0
  82. package/src/server/l4_foundation/file/l4-work-session-project-file.ts +8 -332
  83. package/src/server/l4_foundation/model-settings/l4-model-settings-store.ts +29 -20
  84. package/src/server/l4_foundation/model-settings/l4-model-settings-types.ts +1 -1
  85. package/src/server/l4_foundation/pi/l4-pi-chat-worker.ts +22 -5
  86. package/src/server/l4_foundation/pi/l4-pi-package-maintenance.ts +0 -6
  87. package/src/server/l4_foundation/pi/l4-pi-plugin-capability-probe.ts +1 -3
  88. package/src/server/l4_foundation/pi/l4-pi-plugin-owner-runtime.ts +133 -13
  89. package/src/server/l4_foundation/pi/l4-pi-plugin-probe.ts +1 -3
  90. package/src/server/l4_foundation/pi/l4-pi-runner-process.ts +2 -2
  91. package/src/server/l4_foundation/pi/l4-pi-session-initialization.ts +9 -0
  92. package/src/server/l4_foundation/process/l4-process-tree.js +23 -4
  93. package/temp/build/pi-desk/release/.next/BUILD_ID +1 -1
  94. package/temp/build/pi-desk/release/.next/app-path-routes-manifest.json +3 -2
  95. package/temp/build/pi-desk/release/.next/build-manifest.json +3 -3
  96. package/temp/build/pi-desk/release/.next/prerender-manifest.json +3 -3
  97. package/temp/build/pi-desk/release/.next/react-loadable-manifest.json +1 -2
  98. package/temp/build/pi-desk/release/.next/required-server-files.js +4 -3
  99. package/temp/build/pi-desk/release/.next/required-server-files.json +4 -3
  100. package/temp/build/pi-desk/release/.next/routes-manifest.json +6 -0
  101. package/temp/build/pi-desk/release/.next/server/app/_global-error/page.js +1 -1
  102. package/temp/build/pi-desk/release/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  103. package/temp/build/pi-desk/release/.next/server/app/_global-error.html +1 -1
  104. package/temp/build/pi-desk/release/.next/server/app/_global-error.rsc +3 -3
  105. package/temp/build/pi-desk/release/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  106. package/temp/build/pi-desk/release/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +3 -3
  107. package/temp/build/pi-desk/release/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  108. package/temp/build/pi-desk/release/.next/server/app/_not-found/page.js +1 -1
  109. package/temp/build/pi-desk/release/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  110. package/temp/build/pi-desk/release/.next/server/app/api/auth/login/route.js +1 -1
  111. package/temp/build/pi-desk/release/.next/server/app/api/auth/logout/route.js +1 -1
  112. package/temp/build/pi-desk/release/.next/server/app/api/auth-settings/get/route.js +1 -1
  113. package/temp/build/pi-desk/release/.next/server/app/api/auth-settings/replace/route.js +1 -1
  114. package/temp/build/pi-desk/release/.next/server/app/api/capability-modes/get/route.js +1 -1
  115. package/temp/build/pi-desk/release/.next/server/app/api/capability-modes/replace/route.js +1 -1
  116. package/temp/build/pi-desk/release/.next/server/app/api/chat/context/get/route.js +1 -1
  117. package/temp/build/pi-desk/release/.next/server/app/api/chat/images/get/route.js +1 -1
  118. package/temp/build/pi-desk/release/.next/server/app/api/chat/messages/get/route.js +1 -1
  119. package/temp/build/pi-desk/release/.next/server/app/api/health/route.js +1 -1
  120. package/temp/build/pi-desk/release/.next/server/app/api/mcp-check/get/route.js +1 -1
  121. package/temp/build/pi-desk/release/.next/server/app/api/mcp-settings/del/route.js +1 -1
  122. package/temp/build/pi-desk/release/.next/server/app/api/mcp-settings/get/route.js +1 -1
  123. package/temp/build/pi-desk/release/.next/server/app/api/mcp-settings/replace/route.js +1 -1
  124. package/temp/build/pi-desk/release/.next/server/app/api/model-catalog/list/route.js +1 -1
  125. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/get/route.js +1 -1
  126. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/preview/route.js +1 -1
  127. package/temp/build/pi-desk/release/.next/server/app/api/model-settings/replace/route.js +1 -1
  128. package/temp/build/pi-desk/release/.next/server/app/api/pi/directories/list/route.js +1 -1
  129. package/temp/build/pi-desk/release/.next/server/app/api/pi/directory-entries/list/route.js +1 -1
  130. package/temp/build/pi-desk/release/.next/server/app/api/pi/directory-ignores/list/route.js +1 -1
  131. package/temp/build/pi-desk/release/.next/server/app/api/pi/directory-ignores/replace/route.js +1 -1
  132. package/temp/build/pi-desk/release/.next/server/app/api/pi/models/list/route.js +1 -1
  133. package/temp/build/pi-desk/release/.next/server/app/api/pi/session-user-messages/list/route.js +1 -1
  134. package/temp/build/pi-desk/release/.next/server/app/api/pi/sessions/list/route.js +1 -1
  135. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/get/route.js +1 -1
  136. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/search/route.js +1 -1
  137. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/settings-get/route.js +1 -1
  138. package/temp/build/pi-desk/release/.next/server/app/api/plugin-catalog/settings-replace/route.js +1 -1
  139. package/temp/build/pi-desk/release/.next/server/app/api/plugins/add/route.js +1 -1
  140. package/temp/build/pi-desk/release/.next/server/app/api/plugins/apply/route.js +1 -1
  141. package/temp/build/pi-desk/release/.next/server/app/api/plugins/batch/route.js +1 -1
  142. package/temp/build/pi-desk/release/.next/server/app/api/plugins/browser-resources/[resourceGroup]/[...resourcePath]/route.js +1 -1
  143. package/temp/build/pi-desk/release/.next/server/app/api/plugins/del/route.js +1 -1
  144. package/temp/build/pi-desk/release/.next/server/app/api/plugins/enabled-set/route.js +1 -1
  145. package/temp/build/pi-desk/release/.next/server/app/api/plugins/get/route.js +1 -1
  146. package/temp/build/pi-desk/release/.next/server/app/api/plugins/host-runtime/[runtimeVersion]/[...resourcePath]/route.js +1 -1
  147. package/temp/build/pi-desk/release/.next/server/app/api/plugins/list/route.js +1 -1
  148. package/temp/build/pi-desk/release/.next/server/app/api/plugins/reload/route.js +1 -1
  149. package/temp/build/pi-desk/release/.next/server/app/api/plugins/update/route.js +1 -1
  150. package/temp/build/pi-desk/release/.next/server/app/api/project-files/get/route.js +2 -1
  151. package/temp/build/pi-desk/release/.next/server/app/api/project-files/list/route.js +2 -1
  152. package/temp/build/pi-desk/release/.next/server/app/api/project-files/reveal/route.js +1 -1
  153. package/temp/build/pi-desk/release/.next/server/app/api/project-files/search/route.js +2 -1
  154. package/temp/build/pi-desk/release/.next/server/app/api/project-git/get/route.js +2 -1
  155. package/temp/build/pi-desk/release/.next/server/app/api/project-git-branches/list/route.js +2 -1
  156. package/temp/build/pi-desk/release/.next/server/app/api/project-git-changes/list/route.js +2 -1
  157. package/temp/build/pi-desk/release/.next/server/app/api/project-git-diff/get/route.js +2 -1
  158. package/temp/build/pi-desk/release/.next/server/app/api/project-git-heads/get/route.js +2 -1
  159. package/temp/build/pi-desk/release/.next/server/app/api/project-git-log/list/route.js +2 -1
  160. package/temp/build/pi-desk/release/.next/server/app/api/project-model-default/get/route.js +1 -1
  161. package/temp/build/pi-desk/release/.next/server/app/api/project-model-default/replace/route.js +1 -1
  162. package/temp/build/pi-desk/release/.next/server/app/api/skill-files/get/route.js +1 -1
  163. package/temp/build/pi-desk/release/.next/server/app/api/skill-files/list/route.js +1 -1
  164. package/temp/build/pi-desk/release/.next/server/app/api/skill-files/replace/route.js +1 -1
  165. package/temp/build/pi-desk/release/.next/server/app/api/skills/list/route.js +1 -1
  166. package/temp/build/pi-desk/release/.next/server/app/api/task-center/images/get/route.js +1 -1
  167. package/temp/build/pi-desk/release/.next/server/app/api/task-center/messages/get/route.js +1 -1
  168. package/temp/build/pi-desk/release/.next/server/app/api/work-session-git-branch/add/route.js +1 -1
  169. package/temp/build/pi-desk/release/.next/server/app/api/work-session-git-branch/replace/route.js +1 -1
  170. package/temp/build/pi-desk/release/.next/server/app/api/work-session-tree/get/route.js +1 -1
  171. package/temp/build/pi-desk/release/.next/server/app/api/work-session-tree-entry/get/route.js +1 -1
  172. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/add/route.js +1 -1
  173. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/branch/route.js +1 -1
  174. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/del/route.js +1 -1
  175. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/rename/route.js +1 -1
  176. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/replace/route.js +1 -1
  177. package/temp/build/pi-desk/release/.next/server/app/api/work-sessions/sort/route.js +1 -1
  178. package/temp/build/pi-desk/release/.next/server/app/favicon.ico/route.js +1 -1
  179. package/temp/build/pi-desk/release/.next/server/app/login/page.js +1 -1
  180. package/temp/build/pi-desk/release/.next/server/app/login/page_client-reference-manifest.js +1 -1
  181. package/temp/build/pi-desk/release/.next/server/app/page.js +72 -72
  182. package/temp/build/pi-desk/release/.next/server/app/page_client-reference-manifest.js +1 -1
  183. package/temp/build/pi-desk/release/.next/server/app/project-preview/page.js +1 -0
  184. package/temp/build/pi-desk/release/.next/server/app/project-preview/page_client-reference-manifest.js +1 -0
  185. package/temp/build/pi-desk/release/.next/server/app-paths-manifest.json +3 -2
  186. package/temp/build/pi-desk/release/.next/server/chunks/10912.js +2 -2
  187. package/temp/build/pi-desk/release/.next/server/chunks/20460.js +15 -0
  188. package/temp/build/pi-desk/release/.next/server/chunks/23054.js +1 -1
  189. package/temp/build/pi-desk/release/.next/server/chunks/25406.js +10 -10
  190. package/temp/build/pi-desk/release/.next/server/chunks/35985.js +3 -17
  191. package/temp/build/pi-desk/release/.next/server/chunks/36361.js +1 -1
  192. package/temp/build/pi-desk/release/.next/server/chunks/48180.js +1 -1
  193. package/temp/build/pi-desk/release/.next/server/chunks/50520.js +2 -4
  194. package/temp/build/pi-desk/release/.next/server/chunks/56830.js +235 -0
  195. package/temp/build/pi-desk/release/.next/server/chunks/6917.js +1 -1
  196. package/temp/build/pi-desk/release/.next/server/chunks/70780.js +1 -0
  197. package/temp/build/pi-desk/release/.next/server/chunks/74528.js +1 -1
  198. package/temp/build/pi-desk/release/.next/server/chunks/78262.js +1 -1
  199. package/temp/build/pi-desk/release/.next/server/chunks/79686.js +62 -0
  200. package/temp/build/pi-desk/release/.next/server/chunks/80780.js +1 -0
  201. package/temp/build/pi-desk/release/.next/server/chunks/81363.js +1 -1
  202. package/temp/build/pi-desk/release/.next/server/chunks/82499.js +4 -4
  203. package/temp/build/pi-desk/release/.next/server/chunks/92386.js +8 -8
  204. package/temp/build/pi-desk/release/.next/server/instrumentation.js +1 -1
  205. package/temp/build/pi-desk/release/.next/server/middleware-build-manifest.js +1 -1
  206. package/temp/build/pi-desk/release/.next/server/middleware-react-loadable-manifest.js +1 -1
  207. package/temp/build/pi-desk/release/.next/server/pages/500.html +1 -1
  208. package/temp/build/pi-desk/release/.next/server/server-reference-manifest.json +1 -1
  209. package/temp/build/pi-desk/release/.next/static/8Yd33M0zPi4tbRn4xCaRY/_buildManifest.js +1 -0
  210. package/temp/build/pi-desk/release/.next/static/chunks/11937-1d0a9822f2c7995b.js +1 -0
  211. package/temp/build/pi-desk/release/.next/static/chunks/14825-5579aed34a631ad7.js +62 -0
  212. package/temp/build/pi-desk/release/.next/static/chunks/15302-9c807afc6c60de0c.js +1 -0
  213. package/temp/build/pi-desk/release/.next/static/chunks/19991.8aa2e4b6df15fad6.js +1 -0
  214. package/temp/build/pi-desk/release/.next/static/chunks/22092-6d1bfbefa825ec03.js +1 -0
  215. package/temp/build/pi-desk/release/.next/static/chunks/37313-d5970e2d0c270d22.js +238 -0
  216. package/temp/build/pi-desk/release/.next/static/chunks/{49516-cc4dcd84d64ab4fe.js → 51474-8dc714cb76b2e60a.js} +2 -2
  217. package/temp/build/pi-desk/release/.next/static/chunks/57235-03ba1044f22b6c84.js +1 -0
  218. package/temp/build/pi-desk/release/.next/static/chunks/79267-7d21d7cdbd7cfca1.js +1 -0
  219. package/temp/build/pi-desk/release/.next/static/chunks/82371-f7ba4a07a5dbcf34.js +1 -0
  220. package/temp/build/pi-desk/release/.next/static/chunks/9038-03144ed96d613f75.js +15 -0
  221. package/temp/build/pi-desk/release/.next/static/chunks/app/{error-0296a3b20cd1bf00.js → error-216b14b5da089ed3.js} +1 -1
  222. package/temp/build/pi-desk/release/.next/static/chunks/app/layout-20718f1503910291.js +1 -0
  223. package/temp/build/pi-desk/release/.next/static/chunks/app/login/page-0d3d4827802108e5.js +1 -0
  224. package/temp/build/pi-desk/release/.next/static/chunks/app/{not-found-2aab8b33ebbf3257.js → not-found-720cdf6a606b821a.js} +1 -1
  225. package/temp/build/pi-desk/release/.next/static/chunks/app/page-6ebc1c877f6025dd.js +158 -0
  226. package/temp/build/pi-desk/release/.next/static/chunks/app/project-preview/page-d70ee4e9409b970a.js +1 -0
  227. package/temp/build/pi-desk/release/.next/static/chunks/webpack-b60891a214e0925d.js +1 -0
  228. package/temp/build/pi-desk/release/.next/static/css/1e780a4936aa6ba3.css +1 -0
  229. package/temp/build/pi-desk/release/.next/static/css/6dbae2922f88ca31.css +1 -0
  230. package/temp/build/pi-desk/release/.next/static/css/f646ca6c07245c4c.css +1 -0
  231. package/temp/build/pi-desk/release/.next/trace-build +1 -1
  232. package/temp/build/pi-desk/release/.next/server/chunks/33658.js +0 -296
  233. package/temp/build/pi-desk/release/.next/server/chunks/8584.js +0 -2
  234. package/temp/build/pi-desk/release/.next/static/chunks/31087-ba426d09d6f68bfd.js +0 -1
  235. package/temp/build/pi-desk/release/.next/static/chunks/3814-35cfab0ce3aa7c41.js +0 -1
  236. package/temp/build/pi-desk/release/.next/static/chunks/39654-b5fedd762ea0312e.js +0 -238
  237. package/temp/build/pi-desk/release/.next/static/chunks/70669.07f3670bfb7d6dd2.js +0 -1
  238. package/temp/build/pi-desk/release/.next/static/chunks/74220-795a2e7185bd66cb.js +0 -1
  239. package/temp/build/pi-desk/release/.next/static/chunks/75130-d2ca74894aff8085.js +0 -13
  240. package/temp/build/pi-desk/release/.next/static/chunks/78923-17a9c337b29dcecd.js +0 -1
  241. package/temp/build/pi-desk/release/.next/static/chunks/81881-f11dbe7dc0d04ed9.js +0 -1
  242. package/temp/build/pi-desk/release/.next/static/chunks/96995-8f8313ea2ac3abd7.js +0 -62
  243. package/temp/build/pi-desk/release/.next/static/chunks/app/layout-c0e1c5cef8620cf8.js +0 -3
  244. package/temp/build/pi-desk/release/.next/static/chunks/app/login/page-84892b06243891f0.js +0 -1
  245. package/temp/build/pi-desk/release/.next/static/chunks/app/page-a984139e99586041.js +0 -158
  246. package/temp/build/pi-desk/release/.next/static/chunks/webpack-40a782fc8a3535b9.js +0 -1
  247. package/temp/build/pi-desk/release/.next/static/css/6427d02b6edf406f.css +0 -1
  248. package/temp/build/pi-desk/release/.next/static/css/79e06f05df9edff0.css +0 -1
  249. package/temp/build/pi-desk/release/.next/static/n2LrXQgq8UkbH_AzhR3fw/_buildManifest.js +0 -1
  250. /package/temp/build/pi-desk/release/.next/static/{n2LrXQgq8UkbH_AzhR3fw → 8Yd33M0zPi4tbRn4xCaRY}/_ssgManifest.js +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";exports.id=8584,exports.ids=[8584],exports.modules={193:(a,b,c)=>{c.d(b,{OC:()=>u,Ot:()=>l,Xe:()=>m,ZI:()=>o,_X:()=>q,fg:()=>n,p0:()=>p,p3:()=>s,ry:()=>r,ys:()=>t});var d=c(59473),e=c(63719),f=c(66951),g=c(39792);let h=d.Ik({cwd:d.Yj().trim().min(1).max(4096),workId:d.Yj().trim().min(1).optional()}).strict(),i=h.extend({repositoryRoot:e.rh}),j=h.extend({path:e.eC,imagePreviewMode:e.p$}).superRefine((a,b)=>{a.workId||e._g.safeParse(a.path).success||b.addIssue({code:"custom",path:["path"],message:"独立项目预览只接受根内相对路径"})}),k=d.k5(["file","directory"]),l={path:"/api/project-files/reveal",request:h.extend({path:d.KC([e.rh,e.eC]),targetType:k.optional()}).refine(a=>""!==a.path||"directory"===a.targetType,"文件路径不能为空").refine(a=>a.workId&&"directory"!==a.targetType||e.rh.safeParse(a.path).success,"独立项目和目录定位只接受根内相对路径"),response:d.Ik({}).strict()},m={path:"/api/project-files/list",request:h.extend({path:e.rh}).strict(),response:e.JH},n={path:"/api/project-files/search",request:h.extend({query:d.Yj().trim().min(1).max(200)}).strict(),response:e.jI},o={path:"/api/project-files/get",request:j,response:e.ih},p={path:"/api/project-git/get",request:h.extend({refresh:d.zM().optional()}).strict(),response:d.Ik({repositories:d.YO(f.u2).max(100)}).strict()},q={path:"/api/project-git-heads/get",request:h,response:d.Ik({repositories:d.YO(f.yl).max(f.y2)}).strict()},r={path:"/api/project-git-branches/list",request:i.strict(),response:g.WW},s={path:"/api/project-git-log/list",request:i.extend(g.co.shape).strict(),response:g.yw},t={path:"/api/project-git-changes/list",request:i.extend(g.ph.shape).strict(),response:g.T8},u={path:"/api/project-git-diff/get",request:i.extend({path:e._g,comparison:g.xv.optional()}).strict(),response:g.lw}},8127:(a,b,c)=>{c.d(b,{m:()=>f});var d=c(52913),e=c(8602);function f(a){if(a instanceof Error&&"WorkSessionNotFoundError"===a.name)return(0,e.e)(404,"工作会话不存在",{key:"errors:sessionMissing"});if(a instanceof Error&&"WorkSessionProjectChangedError"===a.name)return(0,e.e)(409,"工作会话项目已变化",{key:"errors:projectChanged"});switch((0,d.C$)(a)){case"project-not-found":return(0,e.e)(404,"项目目录不存在",{key:"errors:projectMissing"});case"not-repository":return(0,e.e)(404,"Git 仓库不存在",{key:"errors:repositoryMissing"});case"outside-project":return(0,e.e)(403,"Git 目标不在当前项目目录内",{key:"errors:gitOutsideProject"});case"invalid-ref":return(0,e.e)(400,a instanceof Error?a.message:"Git 分支无效");case"scan-limit":return(0,e.e)(413,a instanceof Error?a.message:"Git 仓库过大");case"operation-failed":return(0,e.e)(409,a instanceof Error?a.message:"Git 操作失败");case"read-failed":return(0,e.e)(500,"读取 Git 仓库失败",{key:"errors:gitReadFailed"});case null:return null}}},8584:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Cx:()=>n,Dk:()=>r,Ql:()=>m,bF:()=>o,gF:()=>k,jP:()=>s,u:()=>q,u8:()=>l,uP:()=>p});var e=c(193),f=c(60351),g=c(52913),h=c(17911),i=c(11420),j=a([f,i]);[f,i]=j.then?(await j)():j;let k=(0,i.G)(e.Xe,a=>(0,f.cv)(a.cwd,a.path)),l=(0,i.G)(e.fg,a=>(0,f.wZ)(a.cwd,a.query)),m=(0,i.G)(e.ZI,a=>(0,f.dy)(a.cwd,a.path,a.imagePreviewMode)),n=(0,i.G)(e.p0,a=>(0,g.ib)(a.cwd,a.refresh)),o=(0,i.G)(e._X,a=>(0,g.hg)(a.cwd)),p=(0,i.G)(e.ry,a=>(0,h.Wf)(a.cwd,a.repositoryRoot)),q=(0,i.G)(e.p3,a=>(0,h.wZ)(a.cwd,a.repositoryRoot,a)),r=(0,i.G)(e.ys,a=>(0,h.rQ)(a.cwd,a.repositoryRoot,a)),s=(0,i.G)(e.OC,a=>(0,h.ji)(a.cwd,a.repositoryRoot,a.path,a.comparison));d()}catch(a){d(a)}})},11420:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{G:()=>l});var e=c(76760),f=c(23054),g=c(8602),h=c(52913),i=c(61371),j=c(8127),k=a([f,i]);function l(a,b){return async c=>{let d;try{d=await c.json()}catch{return(0,g.e)(400,"项目请求 JSON 格式无效",{key:"errors:projectJsonInvalid"})}let k=a.request.safeParse(d);if(!k.success)return(0,g.e)(400,"项目请求参数无效",{key:"errors:projectInputInvalid"});let l=k.data;if(!(0,e.isAbsolute)(l.cwd)||l.cwd.includes("\0"))return(0,g.e)(400,"项目目录必须是绝对路径",{key:"errors:projectCwdAbsolute"});try{let c;if(l.workId){let a=(0,f.JJ)(),b=await a.getWorkSession(l.workId);if(!b)return(0,g.e)(404,"工作会话不存在",{key:"errors:sessionMissing"});let d=a.getProjectPreviewContext(b,l.cwd);if(!d)return(0,g.e)(409,"工作会话项目已变化或预览目录未登记",{key:"errors:projectChanged"});l.cwd=d.cwd,c=d.isCurrent}let d=await b(l);if(c&&!c())return(0,g.e)(409,"工作会话项目已变化",{key:"errors:projectChanged"});return(0,g.n)(a.response.parse(d))}catch(b){if(console.warn("[Pi Desk][Project] 项目请求失败",{path:a.path,cwd:l.cwd,workId:l.workId,error:b instanceof Error?b.message:String(b)}),"read-failed"===(0,h.C$)(b))return(0,g.e)(500,b instanceof Error?b.message:"读取 Git 失败",b instanceof Error?void 0:{key:"errors:gitReadOperationFailed"});return(0,i.g)(b)??(0,j.m)(b)??(0,g.e)(500,"项目操作失败",{key:"errors:projectOperationFailed"})}}}[f,i]=k.then?(await k)():k,d()}catch(a){d(a)}})},17911:(a,b,c)=>{c.d(b,{ji:()=>u,Wf:()=>t,rQ:()=>s,wZ:()=>r});var d=c(63719),e=c(52913),f=c(96956),g=c(29671),h=c(39792),i=c(85224);let j="%H%x00%P%x00%an%x00%ct%x00%D%x00%s";async function k(a,b){let c=await (0,f.R)(a,b);if(0!==c.code)throw new g.q("read-failed",`读取 Git 失败:${c.stderr.trim().slice(0,1200)}`);return c.stdout}async function l(a,b){if(h.xi.parse(b),b.startsWith("refs/")&&0!==(await (0,f.R)(a,["check-ref-format",b])).code)throw new g.q("invalid-ref","Git 引用名称无效");let c=await (0,f.R)(a,["rev-parse","--verify","--end-of-options",`${b}^{commit}`]);if(0===c.code)return h.aD.parse(c.stdout.trim());if("HEAD"===b){let b=await (0,f.R)(a,["symbolic-ref","-q","HEAD"]);if(0===b.code&&1===(await (0,f.R)(a,["show-ref","--verify","--quiet",b.stdout.trim()])).code)return null}throw new g.q("invalid-ref",`Git 版本不存在或对象不可读:${b}`)}function m(a){if(6!==a.length||!Number.isFinite(Number(a[3])))throw new g.q("read-failed","Git 提交记录格式无效");return{oid:h.aD.parse(a[0]),parents:a[1]?a[1].split(" ").map(a=>h.aD.parse(a)):[],author:a[2],timestampMs:1e3*Number(a[3]),refs:a[4]?a[4].split(", "):[],subject:a[5]}}async function n(a,b){let c=(await k(a,["show","-s","--no-show-signature","--decorate=short",`--format=${j}%x00%B`,b,"--"])).split("\0");if(7!==c.length)throw new g.q("read-failed","Git 提交详情格式无效");return{...m(c.slice(0,6)),message:c[6].trimEnd()}}async function o(a,b,c){if(!b)return null;let d=await k(a,["--literal-pathspecs","ls-tree","-z",b,"--",c]);if(!d)return null;let e=d.split("\0").find(a=>a.slice(a.indexOf(" ")+1)===c);if(!e)return null;let[f,i,j]=e.slice(0,e.indexOf(" ")).split(" ");if(!f||!i||!j)throw new g.q("read-failed","Git 树对象格式无效");return{mode:f,type:i,oid:h.aD.parse(j)}}async function p(a,b){if(!b)return{kind:"text",content:""};let c=Number((await k(a,["cat-file","-s",b.oid])).trim());if(!Number.isSafeInteger(c)||c<0)throw new g.q("read-failed","Git 文件大小无效");if(c>d.NL)return{kind:"too_large"};let e=await (0,f.U)(a,["cat-file","blob",b.oid]);if(0!==e.code)throw new g.q("read-failed","Git 文件对象不可读");if(e.stdout.length>d.NL)return{kind:"too_large"};let h=(0,i.X)(e.stdout);return null===h?{kind:"binary"}:{kind:"text",content:h}}async function q(a,b,c){await l(a,c.targetCommit),c.baseCommit&&await l(a,c.baseCommit);let d=c.oldPath??b,[e,f]=await Promise.all([o(a,c.baseCommit,d),o(a,c.targetCommit,b)]);if(!e&&!f)throw new g.q("invalid-ref","文件不在指定的任一版本中");if(e&&"blob"!==e.type||f&&"blob"!==f.type||e&&f&&e.mode.slice(0,3)!==f.mode.slice(0,3)){let a=a=>a?`${a.type} \xb7 ${a.mode}
2
- ${a.oid}`:"不存在";return{kind:"metadata",original:a(e),modified:a(f)}}let[h,i]=await Promise.all([p(a,e),p(a,f)]);return"too_large"===h.kind||"too_large"===i.kind?{kind:"too_large"}:"text"!==h.kind||"text"!==i.kind?{kind:"binary"}:{kind:"text",original:{path:d,content:h.content},modified:{path:b,content:i.content}}}async function r(a,b,c){let d=await (0,e.H$)(a,b),f=await l(d,c.tip),h=c.exclude?await l(d,c.exclude):null;if(!f)return{tip:f,exclude:h,items:[],hasMore:!1,truncated:!1};let i=(await k(d,["log","-z","--topo-order","--no-show-signature","--decorate=short","--max-count=20001",`--format=${j}`,f,...h?[`^${h}`]:[],"--"])).split("\0");if(""===i.at(-1)&&i.pop(),i.length%6!=0)throw new g.q("read-failed","Git 提交列表格式无效");let n=[];for(let a=0;a<Math.min(i.length,12e4);a+=6)n.push(m(i.slice(a,a+6)));let o=c.query.toLocaleLowerCase(),p=c.author?.toLocaleLowerCase(),q=n.filter(a=>(!p||a.author.toLocaleLowerCase().includes(p))&&(!o||a.subject.toLocaleLowerCase().includes(o)||a.oid.includes(o))),r=(c.page.index-1)*c.page.size;return{tip:f,exclude:h,items:q.slice(r,r+c.page.size),hasMore:r+c.page.size<q.length,truncated:i.length>12e4}}async function s(a,b,c){let h,i,j,m=await (0,e.H$)(a,b),o=null;if("commit"in c.selection){let a=await l(m,c.selection.commit);if(!a)throw new g.q("invalid-ref","当前仓库还没有提交");let b=await n(m,a),d=c.selection.parent??b.parents[0]??null;if(d&&!b.parents.includes(d))throw new g.q("invalid-ref","选择的版本不是该提交的父提交");j=a,h=i=d,o={...b,selectedParent:d}}else{let a=await l(m,c.selection.base),b=await l(m,c.selection.target);if(!a||!b)throw new g.q("invalid-ref","比较分支还没有提交");if(h=a,j=b,i=h,"merge-base"===c.selection.strategy){let a=await (0,f.R)(m,["merge-base","--all",h,j]);if(0!==a.code&&1!==a.code)throw new g.q("read-failed","计算共同祖先失败");let b=a.stdout.trim().split(/\s+/).filter(Boolean);if(1!==b.length){let a="true"===(await k(m,["rev-parse","--is-shallow-repository"])).trim();throw new g.q("invalid-ref",b.length>1?"存在多个最佳共同祖先,请改用两个版本直接比较":a?"浅克隆历史不足,无法确定共同祖先;可改用直接比较":"两个版本没有共同祖先,可改用直接比较")}i=b[0]}}let p=i?["diff","--no-ext-diff","--no-textconv","--find-renames","--name-status","-z",i,j,"--"]:["diff-tree","--root","--no-commit-id","-r","--no-ext-diff","--no-textconv","--find-renames","--name-status","-z",j,"--"],q=(await k(m,p)).split("\0");""===q.at(-1)&&q.pop();let r=[];for(let a=0;a<q.length;){let b=q[a++],c=q[a++],e=b.startsWith("R")||b.startsWith("C"),f=e?q[a++]:c;if(!f||!d._g.safeParse(f).success||e&&!d._g.safeParse(c).success)throw new g.q("read-failed","变更包含无法展示的文件路径");let h="R"===b[0]?"renamed":"A"===b[0]||"C"===b[0]?"added":"D"===b[0]?"deleted":"T"===b[0]?"type-changed":"modified";if(r.push({path:f,oldPath:"R"===b[0]?c:null,status:h}),r.length>5e4)break}let s=(c.page.index-1)*c.page.size,t=r.slice(0,5e4);return{comparison:{base:h,target:j,original:i},commit:o,items:t.slice(s,s+c.page.size),hasMore:s+c.page.size<t.length,truncated:r.length>5e4}}async function t(a,b){let c=await (0,e.o9)(a,b);if("branch"!==c.head.type)return{...c,upstream:null};let d=await (0,e.H$)(a,b),g=(await k(d,["for-each-ref","--format=%(upstream)",`refs/heads/${c.head.name}`])).trim();if(!g)return{...c,upstream:null};let h=await (0,f.R)(d,["rev-list","--left-right","--count",`HEAD...${g}`,"--"]),[i,j]=h.stdout.trim().split(/\s+/).map(Number);return{...c,upstream:{ref:g,ahead:0===h.code&&Number.isSafeInteger(i)?i:null,behind:0===h.code&&Number.isSafeInteger(j)?j:null}}}async function u(a,b,c,d){return d?q(await (0,e.H$)(a,b),c,d):(0,e.bv)(a,b,c)}},39792:(a,b,c)=>{c.d(b,{T8:()=>q,WW:()=>r,aD:()=>g,co:()=>m,lw:()=>s,ph:()=>p,xi:()=>h,xv:()=>k,yw:()=>n});var d=c(59473),e=c(63719),f=c(66951);let g=d.Yj().regex(/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/),h=d.KC([g,d.eu("HEAD"),d.Yj().max(1024).regex(/^refs\/(?:heads|remotes)\/[^\0\r\n]+$/)]).refine(a=>!a.includes("..")&&!a.endsWith("/"),"Git 版本无效"),i=d.KC([d.Ik({commit:h,parent:g.optional()}).strict(),d.Ik({base:h,target:h,strategy:d.k5(["merge-base","direct"])}).strict()]),j=d.Ik({base:g.nullable(),target:g,original:g.nullable()}).strict(),k=d.Ik({baseCommit:g.nullable(),targetCommit:g,oldPath:e._g.optional()}).strict(),l=d.Ik({oid:g,parents:d.YO(g),subject:d.Yj(),author:d.Yj(),timestampMs:d.ai().int(),refs:d.YO(d.Yj())}).strict(),m=d.Ik({tip:h,exclude:h.optional(),query:d.Yj().trim().max(200).default(""),author:d.Yj().trim().max(200).optional(),page:d.Ik({index:d.ai().int().min(1).max(2e3),size:d.ai().int().min(1).max(100)}).strict()}).strict(),n=d.Ik({tip:g.nullable(),exclude:g.nullable(),items:d.YO(l),hasMore:d.zM(),truncated:d.zM()}).strict(),o=d.Ik({path:e._g,oldPath:e._g.nullable(),status:d.k5(["added","modified","deleted","renamed","type-changed"])}).strict(),p=d.Ik({selection:i,page:d.Ik({index:d.ai().int().min(1).max(5e4),size:d.ai().int().min(1).max(500)}).strict()}).strict(),q=d.Ik({comparison:j,commit:l.extend({message:d.Yj(),selectedParent:g.nullable()}).nullable(),items:d.YO(o),hasMore:d.zM(),truncated:d.zM()}).strict(),r=f.gf.extend({upstream:d.Ik({ref:d.Yj(),ahead:d.ai().int().nonnegative().nullable(),behind:d.ai().int().nonnegative().nullable()}).strict().nullable()}).strict(),s=d.KC([f.FJ,d.Ik({kind:d.eu("metadata"),original:d.Yj(),modified:d.Yj()}).strict()])},61371:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{g:()=>h});var e=c(60351),f=c(8602),g=a([e]);function h(a){if(a instanceof Error&&"WorkSessionNotFoundError"===a.name)return(0,f.e)(404,"工作会话不存在",{key:"errors:sessionMissing"});if(a instanceof Error&&"WorkSessionProjectChangedError"===a.name)return(0,f.e)(409,"工作会话项目已变化",{key:"errors:projectChanged"});switch((0,e.Vp)(a)){case"not-found":return(0,f.e)(404,"文件或目录不存在",{key:"errors:fileMissing"});case"not-directory":return(0,f.e)(400,"目标不是目录",{key:"errors:notDirectory"});case"not-file":return(0,f.e)(400,"目标不是文件",{key:"errors:notFile"});case"outside-project":return(0,f.e)(403,"目标不在当前项目目录内",{key:"errors:outsideProject"});case"text-too-large":return(0,f.e)(413,"文本文件超过 5MB,暂不支持在线预览",{key:"errors:textTooLarge"});case"image-too-large":return(0,f.e)(413,"图片过大,暂不支持在线预览",{key:"errors:imageTooLarge"});case"unsupported":return(0,f.e)(415,"当前文件类型不支持在线预览",{key:"errors:previewUnsupported"});case"read-failed":return(0,f.e)(500,"读取项目文件失败",{key:"errors:fileReadFailed"});case"reveal-failed":return(0,f.e)(500,"打开所在文件夹失败",{key:"errors:revealFailed"});case null:return null}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})}};
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[31087],{35842:(e,t,n)=>{n.d(t,{X:()=>g});var i=n(7962),s=n(49762),r=n(49362),a=n(24121),l=n(86758),o=n(69266),c=n(78121),d=n(49426),u=n(86963),f=n(1364),p=n(73165),h=n(35989);let m=[{scope:"current",label:"closeTab"},{scope:"others",label:"closeOtherTabs"},{scope:"right",label:"closeRightTabs"},{scope:"left",label:"closeLeftTabs"},{scope:"all",label:"closeAllTabs"}];function x(e,t){let n=e.replaceAll("\\","/").split("/"),i=n.at(-1)??e;return t.some(t=>t!==e&&t.split("/").at(-1)===i)&&n.length>1?n.slice(-2).join("/"):i}function g({cwd:e,gitRuntime:t,paths:n,activePath:v,diffPath:b,mobile:w,onActivate:j,onClose:y}){let{t:C}=(0,c.Bd)("projectFiles");(0,o.useSyncExternalStore)(t.subscribe,t.getRevision,t.getRevision);let k=t.getWorkspace(e)?.snapshot,N=(0,o.useRef)(null),S=(0,o.useRef)(!1),[E,D]=(0,o.useState)(!1),[A,R]=(0,o.useState)(!1),[z,L]=(0,o.useState)([]),M=(w?2:3)*36,T=n.map(e=>({path:e,label:x(e,n),title:e}));b&&T.push({path:null,label:`${x(b,n)} \xb7 Diff`,title:b});let F=b?null:v;return((0,o.useLayoutEffect)(()=>{let e=N.current;if(!e)return;let t=()=>{let t=Array.from(e.children).filter(e=>e instanceof HTMLElement).flatMap((e,t)=>e.offsetTop>=M?[t]:[]);L(e=>e.join(",")===t.join(",")?e:t),R(e.scrollHeight>M);let n=e.querySelector('[aria-selected="true"]')?.closest("[data-file-tab]");n&&n.offsetTop>=M&&D(!0)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[F,b,M,n]),0===T.length)?null:(0,i.jsxs)("div",{className:"shrink-0 border-b bg-muted","data-testid":"file-tabs",children:[(0,i.jsx)("div",{className:"overflow-hidden",style:{maxHeight:E?void 0:M},children:(0,i.jsx)("div",{ref:N,role:"tablist","aria-label":C("openFiles"),className:"relative flex flex-wrap content-start items-start",children:T.map((t,n)=>{let a=!E&&z.includes(n),l=t.path===F,o=t.path&&k?.status==="ready"?(0,h.lN)(e,t.path,k.repositories)?.change:void 0,c=null===t.path?C("closeDiff",{name:t.title.split("/").at(-1)}):C("closeFile",{name:t.title.split("/").at(-1)});return(0,i.jsxs)(f.tz,{onOpenChange:(e,t)=>{e&&"pointerType"in t.event&&"touch"===t.event.pointerType&&(S.current=!0)},children:[(0,i.jsxs)(f.Rc,{render:(0,i.jsx)("div",{"data-file-tab":!0,"data-testid":null===t.path?`file-diff-tab-${t.title}`:`file-tab-${t.path}`,"aria-hidden":a||void 0,inert:a||void 0,title:t.title,className:(0,d.cn)("flex h-9 max-w-full items-center border-r border-b text-sm",w?"w-[min(50%,12rem)]":"max-w-60",a&&"invisible",l?"bg-background text-foreground shadow-[inset_0_-2px_0_var(--primary)]":"text-muted-foreground"),onPointerDown:e=>{"touch"===e.pointerType&&(S.current=!1)}}),children:[(0,i.jsxs)("button",{type:"button",role:"tab","aria-selected":l,className:"flex h-9 min-w-0 flex-1 cursor-pointer items-center gap-2 pl-3 pr-1 outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",onClick:()=>{if(S.current){S.current=!1;return}null!==t.path&&j(t.path)},onKeyDown:e=>{if("F10"===e.key&&e.shiftKey){e.preventDefault(),e.stopPropagation();let t=e.currentTarget.closest('[data-slot="context-menu-trigger"]');if(t){let e=t.getBoundingClientRect();t.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:e.left+e.width/2,clientY:e.top+e.height/2}))}return}let t="ArrowRight"===e.key||"ArrowDown"===e.key?1:"ArrowLeft"===e.key||"ArrowUp"===e.key?-1:0;if(!t)return;e.preventDefault();let i=(n+t+T.length)%T.length;D(!0);let s=N.current?.querySelectorAll('[role="tab"]');s?.[i]?.focus({preventScroll:!0})},children:[(0,i.jsx)(s.A,{className:"size-3.5 shrink-0"}),(0,i.jsx)("span",{className:(0,d.cn)("truncate",o&&(0,h.iH)(o)),children:t.label}),o?(0,i.jsx)("span",{className:(0,d.cn)("shrink-0 text-xs",(0,h.iH)(o)),"aria-label":C("gitStatus",{status:(0,h.XB)(o)}),children:(0,h.XB)(o)}):null]}),(0,i.jsx)(u.$,{variant:"ghost",size:"icon","data-testid":null===t.path?`file-diff-tab-close-${t.title}`:`file-tab-close-${t.path}`,"aria-label":c,onClick:e=>{if(e.stopPropagation(),S.current){S.current=!1;return}y(t.path,"current")},children:(0,i.jsx)(r.A,{className:"size-3.5"})})]}),(0,i.jsx)(p.D,{children:m.map(({scope:e,label:s})=>(0,i.jsxs)("span",{children:["all"===e?(0,i.jsx)(f.K5,{}):null,(0,i.jsx)(f.kt,{disabled:"others"===e?T.length<=1:"left"===e?0===n:"right"===e&&n===T.length-1,onClick:()=>{S.current=!1,y(t.path,e)},children:C(s)})]},e))})]},t.path??"diff")})})}),A?(0,i.jsxs)(u.$,{variant:"ghost",className:"w-full rounded-none text-muted-foreground","aria-expanded":E,onClick:()=>D(e=>!e),children:[E?(0,i.jsx)(a.A,{className:"size-3.5"}):(0,i.jsx)(l.A,{className:"size-3.5"}),E?C("collapseTabs"):C("expandTabs",{count:T.length})]}):null]})}},73068:(e,t,n)=>{n.d(t,{R:()=>M});var i=n(7962),s=n(31123),r=n(28436),a=n(60278),l=n(55628),o=n(47974),c=n(90680),d=n(3433),u=n(41148),f=n(15824),p=n(35995),h=n(49762),m=n(14044),x=n(69266),g=n(78121),v=n(99084),b=n(90504),w=n(91182),j=n(18302),y=n(33550);let C=(0,x.forwardRef)(function({original:e,modified:t,viewMode:n,onEscape:s,savedState:r,onSaveState:a,initialLine:l},o){let{t:c}=(0,g.Bd)("common"),{wrapLines:d,collapseUnchanged:u}=(0,y.TX)(),f=(0,x.useRef)(null),p=(0,x.useRef)(null),h=(0,x.useRef)({viewMode:n,wrapLines:d,collapseUnchanged:u}),v=(0,x.useRef)(s),b=(0,x.useRef)(r),C=(0,x.useRef)(a),k=(0,x.useRef)(l);(0,x.useEffect)(()=>{v.current=s,b.current=r,C.current=a,k.current=l},[l,s,a,r]);let[N,S]=(0,x.useState)("loading"),[E,D]=(0,x.useState)(null);return(0,x.useEffect)(()=>{h.current={viewMode:n,wrapLines:d,collapseUnchanged:u}},[u,n,d]),(0,x.useImperativeHandle)(o,()=>({previousChange(){p.current?.goToDiff("previous")},nextChange(){p.current?.goToDiff("next")},focus(){p.current?.getModifiedEditor().focus()}}),[]),(0,x.useEffect)(()=>{let n=f.current;if(!n)return;let i=!0,s=null,r=null,a=null,l=()=>void 0,o=()=>void 0,d=[];return queueMicrotask(()=>{i&&(S("loading"),D(null))}),(0,w.cu)().then(u=>{if(!i)return;r=u.editor.createModel(e.content,(0,w.ix)(e.path,new TextEncoder().encode(e.content).length),(0,w.B3)(u,e.path,"diff-original")),a=u.editor.createModel(t.content,(0,w.ix)(t.path,new TextEncoder().encode(t.content).length),(0,w.B3)(u,t.path,"diff-modified"));let f=h.current;s=u.editor.createDiffEditor(n,{theme:(0,w.dC)(),readOnly:!0,domReadOnly:!0,editContext:!1,originalEditable:!1,automaticLayout:!0,renderSideBySide:"side-by-side"===f.viewMode,useInlineViewWhenSpaceIsLimited:!1,enableSplitViewResizing:!0,diffAlgorithm:"advanced",ignoreTrimWhitespace:!1,maxComputationTime:5e3,hideUnchangedRegions:f.collapseUnchanged?{enabled:!0,revealLineCount:3,minimumLineCount:6,contextLineCount:3}:{enabled:!1},minimap:{enabled:!1},stickyScroll:{enabled:!1},scrollBeyondLastLine:!1,smoothScrolling:!0,diffWordWrap:f.wrapLines?"on":"off",wrappingIndent:"same",...(0,w.R)(),lineNumbersMinChars:3,renderValidationDecorations:"off",renderWhitespace:"selection",unicodeHighlight:{nonBasicASCII:!1},padding:{top:10,bottom:10},overviewRulerBorder:!1,contextmenu:!0,ariaLabel:c("gitDiffReadOnly")});let m=k.current,x=!1;d.push(s.onDidUpdateDiff(()=>{if(!i||!s)return;let e=s.getLineChanges();if(D(e?.length??null),!x&&null!==e&&void 0!==m){x=!0;let e=Math.max(1,Math.min(m,a?.getLineCount()??1)),t=s.getModifiedEditor();t.setPosition({lineNumber:e,column:1}),t.revealLineInCenter(e)}})),s.setModel({original:r,modified:a}),void 0===m&&b.current&&s.restoreViewState(b.current);let g=()=>C.current?.(s?.saveViewState()??null);d.push(s.getOriginalEditor().onDidScrollChange(g),s.getModifiedEditor().onDidScrollChange(g)),v.current&&((0,j.e)(s.getOriginalEditor(),u.KeyCode.Escape,()=>v.current?.()),(0,j.e)(s.getModifiedEditor(),u.KeyCode.Escape,()=>v.current?.())),p.current=s,l=(0,w.Tr)(e=>u.editor.setTheme(e)),o=(0,w.BK)(e=>s?.updateOptions(e)),S("ready")}).catch(n=>{i&&(console.error("[Pi Desk][CodeDiff] Monaco 加载失败",{originalPath:e.path,modifiedPath:t.path,errorName:n instanceof Error?n.name:"UnknownError"}),S("error"))}),()=>{for(let e of(i=!1,l(),o(),C.current?.(s?.saveViewState()??null),d))e.dispose();p.current=null,s?.setModel(null),s?.dispose(),window.setTimeout(()=>{r?.dispose(),a?.dispose()},0)}},[t.content,t.path,e.content,e.path,c]),(0,x.useEffect)(()=>{p.current?.updateOptions({renderSideBySide:"side-by-side"===n,diffWordWrap:d?"on":"off",hideUnchangedRegions:u?{enabled:!0,revealLineCount:3,minimumLineCount:6,contextLineCount:3}:{enabled:!1}}),"side-by-side"===n&&p.current?.getOriginalEditor().updateOptions({wordWrapOverride2:"inherit"})},[u,n,d]),(0,i.jsxs)("div",{"data-testid":"code-diff",className:"relative flex h-full min-h-0 w-full flex-col overflow-hidden bg-background",children:[(0,i.jsx)("div",{ref:f,className:"min-h-0 flex-1"}),(0,i.jsx)("div",{role:"status","aria-label":c("diffStatus"),className:"flex min-h-6 shrink-0 items-center justify-end border-t px-3 text-xs text-muted-foreground",children:null===E?c("diffCalculating"):c("diffCount",{count:E})}),"loading"===N?(0,i.jsxs)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center gap-2 bg-background text-sm text-muted-foreground",children:[(0,i.jsx)(m.A,{className:"size-4 animate-spin"})," ",c("diffLoading")]}):null,"error"===N?(0,i.jsx)("div",{className:"absolute inset-0 flex items-center justify-center p-6 text-center text-sm text-destructive",children:c("diffFailed")}):null]})});var k=n(58840),N=n(51821),S=n(86963),E=n(35989),D=n(32892);function A({label:e,onClick:t,active:n=!1,children:s}){return(0,i.jsxs)(D.m_,{children:[(0,i.jsx)(D.k$,{render:(0,i.jsx)(S.$,{type:"button",size:"icon-sm",variant:"ghost","aria-label":e,"aria-pressed":n||void 0,onPointerDown:e=>e.preventDefault(),onClick:t}),children:s}),(0,i.jsx)(D.ZI,{children:e})]})}var R=n(36510),z=n(46487),L=n(97921);function M({ref:e,runtime:t,gitRuntime:n,compact:m,visible:w=!0,onEscape:j,onSwitchPane:D}){let F,O,B,U,W,$,P,{t:I}=(0,g.Bd)("projectFiles"),{wrapLines:V,diffViewMode:_,collapseUnchanged:H}=(0,y.TX)();(0,x.useSyncExternalStore)(t.subscribe,t.getRevision,t.getRevision);let{activeDiff:K,activePath:X}=t.state,q=!K&&X?t.state.documents.get(X):null,G=X?(0,L.g)(X):null,Y=q?.status==="text"&&(!G||"source"===q.viewMode),Z=(0,x.useRef)(null),J=(0,x.useRef)(null),Q=(0,x.useRef)(null),ee=(0,x.useRef)(null),et=(0,N.G)();(0,x.useImperativeHandle)(e,()=>({focus(){Y?J.current?.focus():K?Q.current?.focus():Z.current?.querySelector('[data-testid="markdown-preview"]')?.focus()}}),[K,Y]),(0,x.useEffect)(()=>{let e=e=>{ee.current&&e.source===ee.current.contentWindow&&("pi-desk:file-escape"===e.data&&j(),"pi-desk:file-switch-pane"===e.data&&D?.())};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[j,D]);let en=()=>{X&&J.current&&t.saveEditorState(X,J.current.getViewState())},{refresh:ei,unavailable:es}=((0,x.useSyncExternalStore)(n.subscribe,n.getRevision,n.getRevision),F=n.getWorkspace(t.cwd)?.snapshot,O=t.state.activePath,B=!!t.state.activeDiff,U=O?t.state.documents.get(O):void 0,W=(0,x.useRef)(en),(0,x.useEffect)(()=>{W.current=en},[en]),$=(0,x.useCallback)(()=>{O&&!B&&(W.current(),t.reloadFile(O),n.refreshSnapshot(t.cwd))},[B,n,O,t]),(0,x.useEffect)(()=>{if(!w||!O||B)return;let e=()=>"visible"===window.document.visibilityState&&!!Z.current?.getClientRects().length&&!Z.current?.closest('[inert], [aria-hidden="true"]'),i=Date.now();e()&&(t.state.documents.get(O)?.status==="text"&&(W.current(),t.reloadFile(O)),n.refreshSnapshot(t.cwd));let s=()=>{!e()||Date.now()-i<1e3||(i=Date.now(),$())};return window.addEventListener("focus",s),window.document.addEventListener("visibilitychange",s),()=>{window.removeEventListener("focus",s),window.document.removeEventListener("visibilitychange",s)}},[w,B,n,Z,O,$,t]),(0,x.useEffect)(()=>{if(!w||!O||B||U?.status!=="text")return;let e=new AbortController,n=F?.status==="ready"?(0,E.lN)(t.cwd,O,F.repositories):null;return t.compareFile(O,n?.repository.state==="ready"&&n.change?{repositoryRoot:n.repository.root,path:n.change.path}:null,e.signal),()=>e.abort()},[w,B,U,O,t,F]),P=O&&F?.status==="ready"?(0,E.lN)(t.cwd,O,F.repositories):null,{refresh:$,unavailable:F?.status==="error"||P?.repository.state==="unavailable"}),er=q?.status==="text"?q.comparison:void 0,[ea,el]=(0,x.useState)(null),eo=er?.status==="ready"&&q?.status==="text"&&ea?.original===er.original.content&&ea.modified===q.content?ea.count:void 0,ec=e=>{X&&(en(),t.openFileDiff(X,e))},ed=es||er?.status==="error"?I("gitMarkersFailed"):er?.status==="unavailable"||er?.status==="ready"&&null===eo?I("gitMarkersUnavailable"):er?.status==="loading"||er?.status==="ready"&&void 0===eo?I("gitMarkersLoading"):er?.status==="ready"?I("gitChangesCount",{count:eo}):null;return(0,i.jsxs)("div",{ref:Z,className:"flex size-full min-h-0 min-w-0 flex-col outline-none",tabIndex:-1,onFocus:e=>{e.target===e.currentTarget&&(Y?J.current?.focus():K?Q.current?.focus():Z.current?.querySelector('[data-testid="markdown-preview"]')?.focus())},children:[K||X?(0,i.jsx)("div",{className:"flex min-h-9 shrink-0 flex-wrap items-center justify-end gap-2 border-b px-3 py-1","aria-label":I("fileActions"),children:K?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("span",{className:"mr-auto shrink-0 px-1 text-xs text-muted-foreground",children:[K.label??I("headToWorking"),"text"===K.status&&K.original.content===K.modified.content?I("noDiffChanges"):""]}),(0,i.jsx)(A,{label:I("previousChange"),onClick:()=>Q.current?.previousChange(),children:(0,i.jsx)(s.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I("nextChange"),onClick:()=>Q.current?.nextChange(),children:(0,i.jsx)(r.A,{className:"size-4"})}),m?null:(0,i.jsx)(A,{label:"side-by-side"===_?I("inlineDiff"):I("sideBySideDiff"),active:"inline"===_,onClick:()=>t.setDiffViewMode("side-by-side"===_?"inline":"side-by-side"),children:(0,i.jsx)(a.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I(V?"wrapOff":"wrapOn"),active:V,onClick:()=>t.setDiffWrapLines(!V),children:(0,i.jsx)(l.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I(H?"expandUnchanged":"collapseUnchanged"),active:H,onClick:()=>t.setDiffCollapseUnchanged(!H),children:(0,i.jsx)(o.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I("reloadDiff"),onClick:()=>t.reloadDiff(),children:(0,i.jsx)(c.A,{className:"size-4"})})]}):(0,i.jsxs)(i.Fragment,{children:[G&&q?.status==="text"&&X?(0,i.jsx)("div",{className:"mr-auto flex shrink-0",role:"group","aria-label":I("markdown"===G?"markdownMode":"htmlMode"),children:["preview","source"].map(e=>(0,i.jsx)(S.$,{variant:q.viewMode===e?"secondary":"ghost",size:"sm","aria-pressed":q.viewMode===e,onClick:()=>{en(),t.setTextViewMode(X,e)},children:I("preview"===e?"previewMode":"sourceMode")},e))}):null,Y&&ed?(0,i.jsx)("span",{"data-testid":"file-git-status",role:"status",className:"mr-auto min-w-0 truncate text-xs text-muted-foreground",title:er?.status==="error"?er.error:ed,children:m&&er?.status==="ready"&&"number"==typeof eo?I("gitChangesCompact",{count:eo}):ed}):null,Y&&er?.status==="ready"?(0,i.jsxs)(i.Fragment,{children:["number"==typeof eo&&eo>0?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(A,{label:I("previousChange"),onClick:()=>J.current?.previousChange(),children:(0,i.jsx)(s.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I("nextChange"),onClick:()=>J.current?.nextChange(),children:(0,i.jsx)(r.A,{className:"size-4"})})]}):null,(0,i.jsx)(A,{label:I("viewDiff"),onClick:()=>ec(),children:(0,i.jsx)(d.A,{className:"size-4"})})]}):null,Y&&X?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(A,{label:I("findInFile"),onClick:()=>J.current?.openSearch(),children:(0,i.jsx)(u.A,{className:"size-4"})}),m?null:(0,i.jsx)(A,{label:I("goToLine"),onClick:()=>J.current?.gotoLine(),children:(0,i.jsx)(f.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I(V?"wrapOff":"wrapOn"),active:V,onClick:()=>t.setWrapLines(X,!V),children:(0,i.jsx)(l.A,{className:"size-4"})}),(0,i.jsx)(A,{label:I("copySelectionOrAll"),onClick:()=>{if(q?.status!=="text")return;let e=J.current?.getSelectionText()??"";(0,v.x)(e||q.content).then(t=>{t?et.success(I(e?"selectedCodeCopied":"allCodeCopied")):et.error(I("copyContentFailed"))})},children:(0,i.jsx)(p.A,{className:"size-4"})})]}):null,X?(0,i.jsx)(A,{label:I("reloadCurrentFile"),onClick:ei,children:(0,i.jsx)(c.A,{className:"size-4"})}):null]})}):null,(0,i.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden pb-[env(safe-area-inset-bottom)]",children:K?"text"===K.status?(0,i.jsx)(C,{ref:Q,original:K.original,modified:K.modified,viewMode:m?"inline":_,savedState:K.editorState,initialLine:K.initialLine,onSaveState:e=>t.saveDiffState(K,e),onEscape:j},`${K.repositoryRoot}:${K.path}`):"metadata"===K.status?(0,i.jsxs)("div",{className:"grid h-full grid-cols-1 gap-4 overflow-auto p-4 md:grid-cols-2",children:[(0,i.jsx)("pre",{className:"whitespace-pre-wrap break-all text-sm",children:K.originalMetadata}),(0,i.jsx)("pre",{className:"whitespace-pre-wrap break-all text-sm",children:K.modifiedMetadata})]}):"loading"===K.status?(0,i.jsx)(T,{}):(0,i.jsxs)("div",{className:"flex size-full flex-col items-center justify-center gap-3 p-6 text-center text-sm",children:[(0,i.jsx)("p",{className:"text-muted-foreground",children:"binary"===K.status?I("binaryDiffUnavailable"):"too_large"===K.status?I("largeDiffUnavailable"):K.error}),"error"===K.status?(0,i.jsx)(S.$,{variant:"outline",onClick:()=>t.reloadDiff(),children:I("readAgain")}):null]}):X&&q?"loading"===q.status||"unloaded"===q.status?(0,i.jsx)(T,{}):"error"===q.status?(0,i.jsxs)("div",{className:"flex size-full flex-col items-center justify-center gap-3 p-6 text-center",children:[(0,i.jsx)("p",{role:"alert",className:"text-sm text-destructive",children:q.error}),(0,i.jsx)(S.$,{variant:"outline",onClick:()=>t.reloadFile(X),children:I("readAgain")})]}):"image"===q.status?(0,i.jsx)(k.k,{mode:"inline",slides:[{src:q.objectUrl,alt:X}],ariaLabel:I("imageViewer",{name:X.replaceAll("\\","/").split("/").at(-1)??X})},q.objectUrl):"markdown"===G&&"preview"===q.viewMode?(0,i.jsx)(z.n,{content:q.content,label:I("markdownPreview",{name:X}),savedScrollTop:q.previewScrollTop,onScroll:e=>t.savePreviewScrollTop(X,e)},X):"html"===G&&"preview"===q.viewMode?(0,i.jsx)("iframe",{ref:ee,className:"block size-full border-0 bg-white",sandbox:"allow-scripts",srcDoc:(0,R.z)(q.content),title:I("htmlPreview",{name:X})}):(0,i.jsx)(b.e,{ref:J,path:X,content:q.content,size:q.size,originalContent:er?.status==="ready"?er.original.content:void 0,onChanges:e=>{er?.status==="ready"&&el({original:er.original.content,modified:q.content,count:e})},onOpenDiff:ec,savedState:q.editorState,onSaveState:(e,n)=>t.saveEditorState(e,n),onEscape:j},X):(0,i.jsxs)("div",{"data-testid":"file-workspace-empty",className:"flex size-full flex-col items-center justify-center gap-3 p-6 text-sm text-muted-foreground",children:[(0,i.jsx)(h.A,{className:"size-6"}),I("noOpenFile")]})})]})}function T(){let{t:e}=(0,g.Bd)("projectFiles");return(0,i.jsxs)("div",{className:"flex size-full items-center justify-center gap-2 text-sm text-muted-foreground",children:[(0,i.jsx)(m.A,{className:"size-4 animate-spin"}),e("loadingFile")]})}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3814],{3433:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(50735).A)("git-compare-arrows",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"M12 18H7a2 2 0 0 1-2-2V9",key:"16sdep"}],["path",{d:"m9 15 3 3-3 3",key:"1m3kbl"}]])},4719:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={cancelIdleCallback:function(){return l},requestIdleCallback:function(){return a}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},l="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},45903:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={ESCAPE_REGEX:function(){return l},htmlEscapeAttributeString:function(){return o},htmlEscapeJsonString:function(){return c}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},l=/[&><\u2028\u2029]/g,i={"&":"&amp;",'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;"},u=/[&"'<>]/g;function c(e){return e.replace(l,e=>a[e])}function o(e){return e.replace(u,e=>i[e])}},47974:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(50735).A)("fold-vertical",[["path",{d:"M12 22v-6",key:"6o8u61"}],["path",{d:"M12 8V2",key:"1wkif3"}],["path",{d:"M4 12H2",key:"rhcxmi"}],["path",{d:"M10 12H8",key:"s88cx1"}],["path",{d:"M16 12h-2",key:"10asgb"}],["path",{d:"M22 12h-2",key:"14jgyd"}],["path",{d:"m15 19-3-3-3 3",key:"e37ymu"}],["path",{d:"m15 5-3 3-3-3",key:"19d6lf"}]])},60278:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(50735).A)("columns-2",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]])},97876:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var n={default:function(){return k},handleClientScriptLoad:function(){return _},initScriptLoader:function(){return b}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let l=r(54276),i=r(39617),u=r(7962),c=l._(r(44911)),o=i._(r(69266)),d=r(29047),s=r(52459),f=r(4719),p=r(45903),y=new Map,h=new Set,g=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:a=null,dangerouslySetInnerHTML:l,children:i="",strategy:u="afterInteractive",onError:o,stylesheets:d}=e,f=r||t;if(f&&h.has(f))return;if(y.has(t)){h.add(f),y.get(t).then(n,o);return}let p=()=>{a&&a(),h.add(f)},g=document.createElement("script"),_=new Promise((e,t)=>{g.addEventListener("load",function(t){e(),n&&n.call(this,t),p()}),g.addEventListener("error",function(e){t(e)})}).catch(function(e){o&&o(e)});l?(g.innerHTML=l.__html||"",p()):i?(g.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",p()):t&&(g.src=t,y.set(t,_)),(0,s.setAttributesFromProps)(g,e),"worker"===u&&g.setAttribute("type","text/partytown"),g.setAttribute("data-nscript",u),d&&(e=>{if(c.default.preinit)return e.forEach(e=>{c.default.preinit(e,{as:"style"})});{let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}})(d),document.body.appendChild(g)};function _(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,f.requestIdleCallback)(()=>g(e))}):g(e)}function b(e){e.forEach(_),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");h.add(t)})}function m(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:a=null,strategy:l="afterInteractive",onError:i,stylesheets:s,...y}=e,{updateScripts:_,scripts:b,getIsSsr:m,appDir:k,nonce:v}=(0,o.useContext)(d.HeadManagerContext);v=y.nonce||v;let M=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e=t||r;M.current||(a&&e&&h.has(e)&&a(),M.current=!0)},[a,t,r]);let E=(0,o.useRef)(!1);if((0,o.useEffect)(()=>{if(!E.current){if("afterInteractive"===l)g(e);else"lazyOnload"===l&&("complete"===document.readyState?(0,f.requestIdleCallback)(()=>g(e)):window.addEventListener("load",()=>{(0,f.requestIdleCallback)(()=>g(e))}));E.current=!0}},[e,l]),("beforeInteractive"===l||"worker"===l)&&(_?(b[l]=(b[l]||[]).concat([{id:t,src:r,onLoad:n,onReady:a,onError:i,...y,nonce:v}]),_(b)):m&&m()?h.add(t||r):m&&!m()&&g({...e,nonce:v})),k){if(s&&s.forEach(e=>{c.default.preinit(e,{as:"style"})}),"beforeInteractive"===l)if(!r)return y.dangerouslySetInnerHTML&&(y.children=y.dangerouslySetInnerHTML.__html,delete y.dangerouslySetInnerHTML),(0,u.jsx)("script",{nonce:v,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,p.htmlEscapeJsonString)(JSON.stringify([0,{...y,id:t}]))})`}});else return c.default.preload(r,y.integrity?{as:"script",integrity:y.integrity,nonce:v,crossOrigin:y.crossOrigin}:{as:"script",nonce:v,crossOrigin:y.crossOrigin}),(0,u.jsx)("script",{nonce:v,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,p.htmlEscapeJsonString)(JSON.stringify([r,{...y,id:t}]))})`}});"afterInteractive"===l&&r&&c.default.preload(r,y.integrity?{as:"script",integrity:y.integrity,nonce:v,crossOrigin:y.crossOrigin}:{as:"script",nonce:v,crossOrigin:y.crossOrigin})}return null}Object.defineProperty(m,"__nextScript",{value:!0});let k=m;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]);