@jingyi0605/codingns 0.7.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/README.md +6 -0
  2. package/bin/codingns.mjs +747 -28
  3. package/bin/office-mcp-server.mjs +620 -0
  4. package/dist/public/assets/{AdaptiveButlerPage-CgBX49t-.js → AdaptiveButlerPage-BsgVNRAa.js} +1 -1
  5. package/dist/public/assets/{App-tXOqoHNl.js → App-tPcbyRdS.js} +3 -3
  6. package/dist/public/assets/{BootstrapPage-DoRMz87R.js → BootstrapPage--MDOigQi.js} +1 -1
  7. package/dist/public/assets/{ConversationPage-DXR6Hp4O.js → ConversationPage-BBss5ED8.js} +6 -6
  8. package/dist/public/assets/{DesktopDetachPreviewPage-Cyk-ZYCk.js → DesktopDetachPreviewPage-CB8DoqwU.js} +1 -1
  9. package/dist/public/assets/{DesktopWindowPage-DNVNK3hs.js → DesktopWindowPage-GtIx5m8K.js} +1 -1
  10. package/dist/public/assets/FileContextPanel-BcM7AIT4.js +1 -0
  11. package/dist/public/assets/{GitSidebar-Cr3Z9OUI.js → GitSidebar-CMtkaxuI.js} +2 -2
  12. package/dist/public/assets/{MobileCreateSessionSheet-DMW0V6GJ.js → MobileCreateSessionSheet-CrFY41_8.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-CkdnZ_MU.js → MobileTopHeaderFrame-DGVOzXyg.js} +1 -1
  14. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-KIbqBYJN.js → MobileWorkspaceSwitcherHeader-DLkACTnQ.js} +1 -1
  15. package/dist/public/assets/{RelayConnectEntryPage-DIRBH3hw.js → RelayConnectEntryPage-0MPPjxtQ.js} +1 -1
  16. package/dist/public/assets/{ServerSettingsModal-C-9RxdWP.js → ServerSettingsModal-vgOhwus4.js} +1 -1
  17. package/dist/public/assets/{SessionIndexPage-bRlIydRA.js → SessionIndexPage-KK626Ra9.js} +1 -1
  18. package/dist/public/assets/{SettingsPage-CMEt4ua9.js → SettingsPage-B3edBJIo.js} +2 -2
  19. package/dist/public/assets/{TerminalManagerPanel-2bi9wVhT.js → TerminalManagerPanel-BxlhZp8c.js} +1 -1
  20. package/dist/public/assets/{TerminalPage-DayZz2Tf.js → TerminalPage-B6Rdhylx.js} +1 -1
  21. package/dist/public/assets/{TerminalRuntimeFallbackModal-DgwYcp-Y.js → TerminalRuntimeFallbackModal-BVLfrpSa.js} +1 -1
  22. package/dist/public/assets/{ToolFilesPage-YvnP_FXW.js → ToolFilesPage-N_gwwUjD.js} +1 -1
  23. package/dist/public/assets/{ToolGitPage-GMcQKtV9.js → ToolGitPage-DOcuuWM1.js} +1 -1
  24. package/dist/public/assets/{ToolProcessesPage-DFIQ7BCd.js → ToolProcessesPage-D-FfJ7Re.js} +1 -1
  25. package/dist/public/assets/{ToolsHomePage-CSilFzXR.js → ToolsHomePage-CHfPxd20.js} +1 -1
  26. package/dist/public/assets/{WorkbenchLandingPage-1VtToSz9.js → WorkbenchLandingPage-CTTnfovY.js} +1 -1
  27. package/dist/public/assets/WorkbenchLayout-CbpJg0g1.js +244 -0
  28. package/dist/public/assets/{WorkbenchModal-BWXYSXmC.js → WorkbenchModal-Bt_1fYmM.js} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-B4XB8SwG.css +1 -0
  30. package/dist/public/assets/WorkbenchShellRoute-DyaMnPfS.js +1 -0
  31. package/dist/public/assets/{WorkspaceDebugDetailPage-Ux8_Q7la.js → WorkspaceDebugDetailPage-s7yuDIxR.js} +1 -1
  32. package/dist/public/assets/{WorkspaceDetailPage-B402p99m.js → WorkspaceDetailPage-Cf-gVpqK.js} +1 -1
  33. package/dist/public/assets/{WorkspaceHomePage-D2pob6HI.js → WorkspaceHomePage-COf6I8sT.js} +1 -1
  34. package/dist/public/assets/{client-runtime-manager-C5D76ewj.js → client-runtime-manager-DGdKvYzx.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-BeHqeru9.js +590 -0
  36. package/dist/public/assets/index-CcaQt50x.css +1 -0
  37. package/dist/public/assets/index-CuzMc7q2.js +42 -0
  38. package/dist/public/assets/{login-direct-candidate-resolver-wXSaB0i7.js → login-direct-candidate-resolver-DEP_xCmR.js} +1 -1
  39. package/dist/public/assets/{model-switch-api-CPtou49j.js → model-switch-api-c6kcbBGm.js} +1 -1
  40. package/dist/public/assets/{preferences-service-CdaK7zA8.js → preferences-service-CV6Ih0BG.js} +1 -1
  41. package/dist/public/assets/{realtime-client-BjQazYsK.js → realtime-client-CRCx5xBt.js} +1 -1
  42. package/dist/public/assets/{relay-entry-BwE5nw0l.js → relay-entry-C751A-Sm.js} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-C-Lbyx2i.js → terminal-runtime-meta-CRAVR-8G.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-BM7-c-gx.js → useRegisteredDebugTemplates-D6YtNS0r.js} +1 -1
  45. package/dist/public/index.html +2 -2
  46. package/dist/server/config/env.d.ts +3 -0
  47. package/dist/server/config/env.js +67 -1
  48. package/dist/server/config/env.js.map +1 -1
  49. package/dist/server/config/opencode-base-url-resolver.d.ts +3 -2
  50. package/dist/server/config/opencode-base-url-resolver.js +64 -24
  51. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  52. package/dist/server/middlewares/auth-guard.js +4 -0
  53. package/dist/server/middlewares/auth-guard.js.map +1 -1
  54. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +168 -1
  55. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +205 -4
  56. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  57. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +296 -2
  58. package/dist/server/modules/assistant-capability/assistant-capability-service.js +872 -3
  59. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  60. package/dist/server/modules/auth/auth-service.d.ts +21 -1
  61. package/dist/server/modules/auth/auth-service.js +64 -0
  62. package/dist/server/modules/auth/auth-service.js.map +1 -1
  63. package/dist/server/modules/browser-runtime/browser-profile-service.d.ts +26 -0
  64. package/dist/server/modules/browser-runtime/browser-profile-service.js +85 -0
  65. package/dist/server/modules/browser-runtime/browser-profile-service.js.map +1 -0
  66. package/dist/server/modules/browser-runtime/browser-runtime-controller.d.ts +69 -0
  67. package/dist/server/modules/browser-runtime/browser-runtime-controller.js +83 -0
  68. package/dist/server/modules/browser-runtime/browser-runtime-controller.js.map +1 -0
  69. package/dist/server/modules/browser-runtime/browser-runtime-service.d.ts +56 -0
  70. package/dist/server/modules/browser-runtime/browser-runtime-service.js +215 -0
  71. package/dist/server/modules/browser-runtime/browser-runtime-service.js.map +1 -0
  72. package/dist/server/modules/browser-runtime/browser-task-execution-support.d.ts +65 -0
  73. package/dist/server/modules/browser-runtime/browser-task-execution-support.js +432 -0
  74. package/dist/server/modules/browser-runtime/browser-task-execution-support.js.map +1 -0
  75. package/dist/server/modules/browser-runtime/browser-task-executor-registry.d.ts +7 -0
  76. package/dist/server/modules/browser-runtime/browser-task-executor-registry.js +21 -0
  77. package/dist/server/modules/browser-runtime/browser-task-executor-registry.js.map +1 -0
  78. package/dist/server/modules/browser-runtime/browser-task-executor.d.ts +55 -0
  79. package/dist/server/modules/browser-runtime/browser-task-executor.js +2 -0
  80. package/dist/server/modules/browser-runtime/browser-task-executor.js.map +1 -0
  81. package/dist/server/modules/browser-runtime/browser-task-payload.d.ts +31 -0
  82. package/dist/server/modules/browser-runtime/browser-task-payload.js +55 -0
  83. package/dist/server/modules/browser-runtime/browser-task-payload.js.map +1 -0
  84. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.d.ts +19 -0
  85. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js +219 -0
  86. package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js.map +1 -0
  87. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.d.ts +15 -0
  88. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js +33 -0
  89. package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js.map +1 -0
  90. package/dist/server/modules/browser-runtime/playwright-browser-executor.d.ts +16 -0
  91. package/dist/server/modules/browser-runtime/playwright-browser-executor.js +272 -0
  92. package/dist/server/modules/browser-runtime/playwright-browser-executor.js.map +1 -0
  93. package/dist/server/modules/butler/butler-auth-service.js +4 -0
  94. package/dist/server/modules/butler/butler-auth-service.js.map +1 -1
  95. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +1 -0
  96. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -1
  97. package/dist/server/modules/butler/butler-session-summary-service.d.ts +1 -0
  98. package/dist/server/modules/butler/butler-session-summary-service.js +5 -3
  99. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  100. package/dist/server/modules/butler/butler-workspace-context.js +23 -0
  101. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  102. package/dist/server/modules/debug-target/debug-target-service.d.ts +2 -0
  103. package/dist/server/modules/debug-target/debug-target-service.js +14 -0
  104. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
  105. package/dist/server/modules/document-runtime/document-docx-fallback-renderer.py +139 -0
  106. package/dist/server/modules/document-runtime/document-export-executor.d.ts +50 -0
  107. package/dist/server/modules/document-runtime/document-export-executor.js +827 -0
  108. package/dist/server/modules/document-runtime/document-export-executor.js.map +1 -0
  109. package/dist/server/modules/document-runtime/document-runtime-controller.d.ts +127 -0
  110. package/dist/server/modules/document-runtime/document-runtime-controller.js +131 -0
  111. package/dist/server/modules/document-runtime/document-runtime-controller.js.map +1 -0
  112. package/dist/server/modules/document-runtime/document-runtime-service.d.ts +125 -0
  113. package/dist/server/modules/document-runtime/document-runtime-service.js +706 -0
  114. package/dist/server/modules/document-runtime/document-runtime-service.js.map +1 -0
  115. package/dist/server/modules/office/office-controller.d.ts +77 -0
  116. package/dist/server/modules/office/office-controller.js +174 -0
  117. package/dist/server/modules/office/office-controller.js.map +1 -0
  118. package/dist/server/modules/office/office-preview-link-service.d.ts +27 -0
  119. package/dist/server/modules/office/office-preview-link-service.js +121 -0
  120. package/dist/server/modules/office/office-preview-link-service.js.map +1 -0
  121. package/dist/server/modules/office/office-service.d.ts +67 -0
  122. package/dist/server/modules/office/office-service.js +359 -0
  123. package/dist/server/modules/office/office-service.js.map +1 -0
  124. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +38 -14
  125. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
  126. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +4 -0
  127. package/dist/server/modules/opencli/opencli-install-discovery.js +94 -0
  128. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -1
  129. package/dist/server/modules/opencli/opencli-runtime-builder.js +29 -0
  130. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -1
  131. package/dist/server/modules/opencli/opencli-runtime-guard.d.ts +2 -0
  132. package/dist/server/modules/opencli/opencli-runtime-guard.js +5 -0
  133. package/dist/server/modules/opencli/opencli-runtime-guard.js.map +1 -0
  134. package/dist/server/modules/ops-runtime/ops-runtime-controller.d.ts +70 -0
  135. package/dist/server/modules/ops-runtime/ops-runtime-controller.js +83 -0
  136. package/dist/server/modules/ops-runtime/ops-runtime-controller.js.map +1 -0
  137. package/dist/server/modules/ops-runtime/ops-runtime-service.d.ts +80 -0
  138. package/dist/server/modules/ops-runtime/ops-runtime-service.js +327 -0
  139. package/dist/server/modules/ops-runtime/ops-runtime-service.js.map +1 -0
  140. package/dist/server/modules/ops-runtime/ssh-ops-executor.d.ts +41 -0
  141. package/dist/server/modules/ops-runtime/ssh-ops-executor.js +478 -0
  142. package/dist/server/modules/ops-runtime/ssh-ops-executor.js.map +1 -0
  143. package/dist/server/modules/presentation/presentation-controller.d.ts +22 -0
  144. package/dist/server/modules/presentation/presentation-controller.js +59 -0
  145. package/dist/server/modules/presentation/presentation-controller.js.map +1 -0
  146. package/dist/server/modules/presentation/presentation-export-task-service.d.ts +24 -0
  147. package/dist/server/modules/presentation/presentation-export-task-service.js +137 -0
  148. package/dist/server/modules/presentation/presentation-export-task-service.js.map +1 -0
  149. package/dist/server/modules/presentation/presentation-export-types.d.ts +12 -0
  150. package/dist/server/modules/presentation/presentation-export-types.js +2 -0
  151. package/dist/server/modules/presentation/presentation-export-types.js.map +1 -0
  152. package/dist/server/modules/presentation/presentation-pdf-export-service.d.ts +20 -0
  153. package/dist/server/modules/presentation/presentation-pdf-export-service.js +29 -0
  154. package/dist/server/modules/presentation/presentation-pdf-export-service.js.map +1 -0
  155. package/dist/server/modules/presentation/presentation-pptx-export-service.d.ts +20 -0
  156. package/dist/server/modules/presentation/presentation-pptx-export-service.js +64 -0
  157. package/dist/server/modules/presentation/presentation-pptx-export-service.js.map +1 -0
  158. package/dist/server/modules/presentation/presentation-renderer.d.ts +21 -0
  159. package/dist/server/modules/presentation/presentation-renderer.js +208 -0
  160. package/dist/server/modules/presentation/presentation-renderer.js.map +1 -0
  161. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +3 -3
  162. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  163. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +6 -1
  164. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  165. package/dist/server/modules/sessions/codex-app-server-helper-process.js +2 -1
  166. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  167. package/dist/server/modules/sessions/session-controller.d.ts +1 -0
  168. package/dist/server/modules/sessions/session-controller.js +59 -4
  169. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  170. package/dist/server/modules/sessions/session-history-service.js +17 -5
  171. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  172. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -1
  173. package/dist/server/modules/sessions/session-live-runtime-service.js +86 -8
  174. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  175. package/dist/server/modules/sessions/session-provider-config-service.d.ts +25 -1
  176. package/dist/server/modules/sessions/session-provider-config-service.js +54 -5
  177. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  178. package/dist/server/modules/sessions/workspace-office-mcp-config.d.ts +14 -0
  179. package/dist/server/modules/sessions/workspace-office-mcp-config.js +54 -0
  180. package/dist/server/modules/sessions/workspace-office-mcp-config.js.map +1 -0
  181. package/dist/server/modules/sessions/workspace-session-auth-service.d.ts +27 -0
  182. package/dist/server/modules/sessions/workspace-session-auth-service.js +109 -0
  183. package/dist/server/modules/sessions/workspace-session-auth-service.js.map +1 -0
  184. package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +50 -0
  185. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +332 -0
  186. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -0
  187. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +5 -0
  188. package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -1
  189. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/SKILL.md +67 -0
  190. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/agents/openai.yaml +4 -0
  191. package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/references/cli-workflow.md +133 -0
  192. package/dist/server/modules/skills/skill-controller.d.ts +7 -0
  193. package/dist/server/modules/skills/skill-controller.js +7 -0
  194. package/dist/server/modules/skills/skill-controller.js.map +1 -1
  195. package/dist/server/modules/skills/skill-manager-service.d.ts +61 -0
  196. package/dist/server/modules/skills/skill-manager-service.js +218 -0
  197. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  198. package/dist/server/modules/skills/skill-name-policy.js +2 -1
  199. package/dist/server/modules/skills/skill-name-policy.js.map +1 -1
  200. package/dist/server/modules/tasks/task-helper-client.d.ts +1 -0
  201. package/dist/server/modules/tasks/task-helper-client.js +45 -9
  202. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  203. package/dist/server/modules/tasks/task-types.d.ts +5 -0
  204. package/dist/server/modules/tasks/task-types.js +6 -1
  205. package/dist/server/modules/tasks/task-types.js.map +1 -1
  206. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js +2 -1
  207. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js.map +1 -1
  208. package/dist/server/modules/terminal/runtime/node-pty-loader.d.ts +5 -0
  209. package/dist/server/modules/terminal/runtime/node-pty-loader.js +68 -0
  210. package/dist/server/modules/terminal/runtime/node-pty-loader.js.map +1 -0
  211. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js +2 -1
  212. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js.map +1 -1
  213. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js +6 -9
  214. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js.map +1 -1
  215. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js +6 -9
  216. package/dist/server/modules/terminal/runtime/pty-runtime-manager.js.map +1 -1
  217. package/dist/server/routes/assistant.d.ts +2 -1
  218. package/dist/server/routes/assistant.js +20 -1
  219. package/dist/server/routes/assistant.js.map +1 -1
  220. package/dist/server/routes/browser-runtime.d.ts +3 -0
  221. package/dist/server/routes/browser-runtime.js +14 -0
  222. package/dist/server/routes/browser-runtime.js.map +1 -0
  223. package/dist/server/routes/document-runtime.d.ts +3 -0
  224. package/dist/server/routes/document-runtime.js +18 -0
  225. package/dist/server/routes/document-runtime.js.map +1 -0
  226. package/dist/server/routes/office.d.ts +3 -0
  227. package/dist/server/routes/office.js +16 -0
  228. package/dist/server/routes/office.js.map +1 -0
  229. package/dist/server/routes/ops-runtime.d.ts +3 -0
  230. package/dist/server/routes/ops-runtime.js +13 -0
  231. package/dist/server/routes/ops-runtime.js.map +1 -0
  232. package/dist/server/routes/presentation.d.ts +3 -0
  233. package/dist/server/routes/presentation.js +5 -0
  234. package/dist/server/routes/presentation.js.map +1 -0
  235. package/dist/server/routes/skills.js +1 -0
  236. package/dist/server/routes/skills.js.map +1 -1
  237. package/dist/server/server/create-server.d.ts +36 -0
  238. package/dist/server/server/create-server.js +215 -4
  239. package/dist/server/server/create-server.js.map +1 -1
  240. package/dist/server/server/release-manifest-sync.d.ts +1 -0
  241. package/dist/server/server/release-manifest-sync.js +2 -2
  242. package/dist/server/server/release-manifest-sync.js.map +1 -1
  243. package/dist/server/server/start-host.js +1 -1
  244. package/dist/server/server/start-host.js.map +1 -1
  245. package/dist/server/storage/repositories/auth-token-repository.js +22 -6
  246. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  247. package/dist/server/storage/repositories/browser-profile-repository.d.ts +18 -0
  248. package/dist/server/storage/repositories/browser-profile-repository.js +134 -0
  249. package/dist/server/storage/repositories/browser-profile-repository.js.map +1 -0
  250. package/dist/server/storage/repositories/document-comment-repository.d.ts +10 -0
  251. package/dist/server/storage/repositories/document-comment-repository.js +118 -0
  252. package/dist/server/storage/repositories/document-comment-repository.js.map +1 -0
  253. package/dist/server/storage/repositories/document-repository.d.ts +16 -0
  254. package/dist/server/storage/repositories/document-repository.js +109 -0
  255. package/dist/server/storage/repositories/document-repository.js.map +1 -0
  256. package/dist/server/storage/repositories/document-revision-repository.d.ts +10 -0
  257. package/dist/server/storage/repositories/document-revision-repository.js +79 -0
  258. package/dist/server/storage/repositories/document-revision-repository.js.map +1 -0
  259. package/dist/server/storage/repositories/document-template-repository.d.ts +13 -0
  260. package/dist/server/storage/repositories/document-template-repository.js +244 -0
  261. package/dist/server/storage/repositories/document-template-repository.js.map +1 -0
  262. package/dist/server/storage/repositories/office-approval-repository.d.ts +11 -0
  263. package/dist/server/storage/repositories/office-approval-repository.js +109 -0
  264. package/dist/server/storage/repositories/office-approval-repository.js.map +1 -0
  265. package/dist/server/storage/repositories/office-artifact-repository.d.ts +10 -0
  266. package/dist/server/storage/repositories/office-artifact-repository.js +89 -0
  267. package/dist/server/storage/repositories/office-artifact-repository.js.map +1 -0
  268. package/dist/server/storage/repositories/office-audit-event-repository.d.ts +8 -0
  269. package/dist/server/storage/repositories/office-audit-event-repository.js +54 -0
  270. package/dist/server/storage/repositories/office-audit-event-repository.js.map +1 -0
  271. package/dist/server/storage/repositories/office-connector-repository.d.ts +10 -0
  272. package/dist/server/storage/repositories/office-connector-repository.js +97 -0
  273. package/dist/server/storage/repositories/office-connector-repository.js.map +1 -0
  274. package/dist/server/storage/repositories/office-receipt-repository.d.ts +8 -0
  275. package/dist/server/storage/repositories/office-receipt-repository.js +48 -0
  276. package/dist/server/storage/repositories/office-receipt-repository.js.map +1 -0
  277. package/dist/server/storage/repositories/office-rollback-record-repository.d.ts +8 -0
  278. package/dist/server/storage/repositories/office-rollback-record-repository.js +60 -0
  279. package/dist/server/storage/repositories/office-rollback-record-repository.js.map +1 -0
  280. package/dist/server/storage/repositories/office-task-repository.d.ts +19 -0
  281. package/dist/server/storage/repositories/office-task-repository.js +199 -0
  282. package/dist/server/storage/repositories/office-task-repository.js.map +1 -0
  283. package/dist/server/storage/repositories/office-task-step-repository.d.ts +10 -0
  284. package/dist/server/storage/repositories/office-task-step-repository.js +110 -0
  285. package/dist/server/storage/repositories/office-task-step-repository.js.map +1 -0
  286. package/dist/server/storage/repositories/ops-target-repository.d.ts +16 -0
  287. package/dist/server/storage/repositories/ops-target-repository.js +119 -0
  288. package/dist/server/storage/repositories/ops-target-repository.js.map +1 -0
  289. package/dist/server/storage/repositories/session-binding-repository.d.ts +4 -0
  290. package/dist/server/storage/repositories/session-binding-repository.js +70 -69
  291. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  292. package/dist/server/storage/repositories/session-changed-file-repository.d.ts +6 -0
  293. package/dist/server/storage/repositories/session-changed-file-repository.js +44 -43
  294. package/dist/server/storage/repositories/session-changed-file-repository.js.map +1 -1
  295. package/dist/server/storage/repositories/session-fork-repository.d.ts +2 -0
  296. package/dist/server/storage/repositories/session-fork-repository.js +42 -41
  297. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -1
  298. package/dist/server/storage/repositories/session-index-repository.d.ts +5 -0
  299. package/dist/server/storage/repositories/session-index-repository.js +153 -152
  300. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  301. package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +7 -0
  302. package/dist/server/storage/repositories/session-message-attachment-repository.js +91 -90
  303. package/dist/server/storage/repositories/session-message-attachment-repository.js.map +1 -1
  304. package/dist/server/storage/repositories/session-message-origin-repository.d.ts +2 -0
  305. package/dist/server/storage/repositories/session-message-origin-repository.js +25 -24
  306. package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -1
  307. package/dist/server/storage/repositories/session-state-repository.d.ts +2 -0
  308. package/dist/server/storage/repositories/session-state-repository.js +35 -34
  309. package/dist/server/storage/repositories/session-state-repository.js.map +1 -1
  310. package/dist/server/storage/repositories/session-status-snapshot-repository.d.ts +2 -0
  311. package/dist/server/storage/repositories/session-status-snapshot-repository.js +25 -24
  312. package/dist/server/storage/repositories/session-status-snapshot-repository.js.map +1 -1
  313. package/dist/server/storage/sqlite/client.js +123 -1
  314. package/dist/server/storage/sqlite/client.js.map +1 -1
  315. package/dist/server/storage/sqlite/schema.sql +300 -1
  316. package/dist/server/types/domain.d.ts +205 -1
  317. package/package.json +14 -7
  318. package/scripts/postinstall.mjs +159 -7
  319. package/dist/public/assets/FileContextPanel-xGTYDclT.js +0 -1
  320. package/dist/public/assets/WorkbenchLayout-DScHaza9.js +0 -244
  321. package/dist/public/assets/WorkbenchShellRoute-DN6LdrqC.js +0 -1
  322. package/dist/public/assets/WorkbenchShellRoute-DhQo_0vu.css +0 -1
  323. package/dist/public/assets/file-tree-icon-lfU9Ag77.js +0 -3
  324. package/dist/public/assets/index-CFYXCsyx.css +0 -1
  325. package/dist/public/assets/index-NGxWr8Ix.js +0 -42
  326. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.d.ts +0 -42
  327. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +0 -346
  328. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +0 -1
  329. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.d.ts +0 -1
  330. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js +0 -80
  331. package/node_modules/@codingns/session-sync-core/dist/codex-resume-history.js.map +0 -1
  332. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +0 -18
  333. package/node_modules/@codingns/session-sync-core/dist/index.js +0 -19
  334. package/node_modules/@codingns/session-sync-core/dist/index.js.map +0 -1
  335. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +0 -18
  336. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +0 -659
  337. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +0 -1
  338. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +0 -11
  339. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +0 -72
  340. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +0 -1
  341. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +0 -67
  342. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +0 -752
  343. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +0 -1
  344. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +0 -48
  345. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +0 -1184
  346. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +0 -1
  347. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.d.ts +0 -11
  348. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +0 -105
  349. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +0 -1
  350. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +0 -84
  351. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +0 -2436
  352. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +0 -1
  353. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +0 -47
  354. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +0 -1480
  355. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +0 -1
  356. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +0 -33
  357. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +0 -684
  358. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +0 -1
  359. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.d.ts +0 -9
  360. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js +0 -17
  361. package/node_modules/@codingns/session-sync-core/dist/providers/legna-code.js.map +0 -1
  362. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +0 -1
  363. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +0 -8
  364. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +0 -1
  365. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.d.ts +0 -48
  366. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +0 -373
  367. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +0 -1
  368. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +0 -61
  369. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +0 -1191
  370. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +0 -1
  371. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +0 -27
  372. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +0 -415
  373. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +0 -1
  374. package/node_modules/@codingns/session-sync-core/dist/registry.d.ts +0 -7
  375. package/node_modules/@codingns/session-sync-core/dist/registry.js +0 -22
  376. package/node_modules/@codingns/session-sync-core/dist/registry.js.map +0 -1
  377. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +0 -24
  378. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +0 -329
  379. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +0 -1
  380. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +0 -30
  381. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +0 -939
  382. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +0 -1
  383. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.d.ts +0 -1
  384. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +0 -16
  385. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +0 -1
  386. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +0 -70
  387. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +0 -2571
  388. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +0 -1
  389. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +0 -21
  390. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +0 -561
  391. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +0 -1
  392. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +0 -38
  393. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +0 -911
  394. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +0 -1
  395. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +0 -15
  396. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +0 -16
  397. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +0 -1
  398. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +0 -37
  399. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +0 -963
  400. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +0 -1
  401. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +0 -21
  402. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +0 -168
  403. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +0 -1
  404. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +0 -152
  405. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js +0 -2
  406. package/node_modules/@codingns/session-sync-core/dist/runtime/types.js.map +0 -1
  407. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +0 -28
  408. package/node_modules/@codingns/session-sync-core/dist/services.js +0 -148
  409. package/node_modules/@codingns/session-sync-core/dist/services.js.map +0 -1
  410. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +0 -6
  411. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +0 -9
  412. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +0 -1
  413. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +0 -198
  414. package/node_modules/@codingns/session-sync-core/dist/types.js +0 -2
  415. package/node_modules/@codingns/session-sync-core/dist/types.js.map +0 -1
  416. package/node_modules/@codingns/session-sync-core/package.json +0 -33
@@ -1 +1 @@
1
- import{D as c}from"./index-NGxWr8Ix.js";const l=350,u=2,s={loopback:0,lan:1,tailscale:2,custom:3};async function m(e){var t;const r=e.requestedBaseUrl??e.host.baseUrl;if(!d(e.host,r,e.platform))return r;const n=f(((t=e.host.relayTunnel)==null?void 0:t.candidateEndpoints)??[],r);for(const o of n)if(await y(o.url,e.fetchFn))return o.url;return r}function d(e,r,n){var o;if(n==="web")return!1;const t=e.relayTunnel;return!(t!=null&&t.enabled)||!((o=t.candidateEndpoints)!=null&&o.length)?!1:T(r,e)}function f(e,r){return e.filter(n=>n.kind!=="relay"&&n.url!==r).sort((n,t)=>{if(n.priority!==t.priority)return n.priority-t.priority;const o=s[n.kind],i=s[t.kind];return o!==i?o-i:n.url.localeCompare(t.url)}).slice(0,u)}async function y(e,r=fetch){const n=c("/api/public/bootstrap-status",e),t=typeof AbortController=="function"?new AbortController:null,o=globalThis.setTimeout(()=>{t==null||t.abort()},l);try{const i=await r(n,{method:"GET",signal:t==null?void 0:t.signal});if(!i.ok)return!1;const a=await p(i);return typeof(a==null?void 0:a.initialized)=="boolean"}catch{return!1}finally{globalThis.clearTimeout(o)}}function T(e,r){var o;const n=r.relayTunnel;if(!(n!=null&&n.tunnelDomain))return!1;const t=(o=n.candidateEndpoints)==null?void 0:o.find(i=>i.url===e);if(t)return t.kind==="relay";try{return new URL(e).hostname.toLowerCase()===n.tunnelDomain.trim().toLowerCase()}catch{return!1}}async function p(e){const r=await e.text();if(!r.trim())return null;try{return JSON.parse(r)}catch{return null}}export{m as resolveLoginBaseUrlWithDirectCandidates};
1
+ import{D as c}from"./index-CuzMc7q2.js";const l=350,u=2,s={loopback:0,lan:1,tailscale:2,custom:3};async function m(e){var t;const r=e.requestedBaseUrl??e.host.baseUrl;if(!d(e.host,r,e.platform))return r;const n=f(((t=e.host.relayTunnel)==null?void 0:t.candidateEndpoints)??[],r);for(const o of n)if(await y(o.url,e.fetchFn))return o.url;return r}function d(e,r,n){var o;if(n==="web")return!1;const t=e.relayTunnel;return!(t!=null&&t.enabled)||!((o=t.candidateEndpoints)!=null&&o.length)?!1:T(r,e)}function f(e,r){return e.filter(n=>n.kind!=="relay"&&n.url!==r).sort((n,t)=>{if(n.priority!==t.priority)return n.priority-t.priority;const o=s[n.kind],i=s[t.kind];return o!==i?o-i:n.url.localeCompare(t.url)}).slice(0,u)}async function y(e,r=fetch){const n=c("/api/public/bootstrap-status",e),t=typeof AbortController=="function"?new AbortController:null,o=globalThis.setTimeout(()=>{t==null||t.abort()},l);try{const i=await r(n,{method:"GET",signal:t==null?void 0:t.signal});if(!i.ok)return!1;const a=await p(i);return typeof(a==null?void 0:a.initialized)=="boolean"}catch{return!1}finally{globalThis.clearTimeout(o)}}function T(e,r){var o;const n=r.relayTunnel;if(!(n!=null&&n.tunnelDomain))return!1;const t=(o=n.candidateEndpoints)==null?void 0:o.find(i=>i.url===e);if(t)return t.kind==="relay";try{return new URL(e).hostname.toLowerCase()===n.tunnelDomain.trim().toLowerCase()}catch{return!1}}async function p(e){const r=await e.text();if(!r.trim())return null;try{return JSON.parse(r)}catch{return null}}export{m as resolveLoginBaseUrlWithDirectCandidates};
@@ -1 +1 @@
1
- var te=Object.defineProperty;var oe=(e,n,s)=>n in e?te(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var N=(e,n,s)=>oe(e,typeof n!="symbol"?n+"":n,s);import{C as r,A as re,b as g,j as i,t as S,f as ie,Y as ae,h as ue}from"./index-NGxWr8Ix.js";import{e as le,g as de}from"./App-tXOqoHNl.js";function ce(){return r.request("/api/workspaces")}async function en(){try{return await r.request("/api/workbench")}catch(e){if(!(e instanceof re)||e.status!==404)throw e;const n=await ce();return{items:await Promise.all(n.items.map(async t=>({workspace:t,sessions:(await fe(t.id)).items})))}}}function nn(e){return r.request("/api/workspaces/import",{method:"POST",body:JSON.stringify(e)})}function sn(e){return r.request("/api/workspaces/clone",{method:"POST",body:JSON.stringify(e)})}function tn(e){return r.request(`/api/workspaces/${encodeURIComponent(e)}`,{method:"DELETE"})}function on(e){return r.request("/api/debug-targets/analyze",{method:"POST",body:JSON.stringify(e)})}function rn(e,n){return r.request(`/api/debug-targets/${encodeURIComponent(e)}/launch-plan`,{method:"POST",body:JSON.stringify({})})}function an(){return r.request("/api/framework-compatibility-matrix")}function un(e){return r.request("/api/workspaces/reorder",{method:"PUT",body:JSON.stringify(e)})}function ln(e,n){return r.request(`/api/workspaces/${encodeURIComponent(e)}/navigation-state`,{method:"PUT",body:JSON.stringify(n)})}function dn(e){const n=new URLSearchParams;return e!=null&&e.trim()&&n.set("path",e.trim()),r.request(`/api/workspaces/browse${n.size>0?`?${n.toString()}`:""}`)}function cn(e){return r.request("/api/workspaces/directories",{method:"POST",body:JSON.stringify(e)})}function fe(e){return r.request(`/api/sessions?workspaceId=${encodeURIComponent(e)}`)}function fn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}`)}function pn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/changed-files`)}function mn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/seen`,{method:"POST"})}function gn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/title`,{method:"PATCH",body:JSON.stringify({title:n})})}function Sn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/archive`,{method:"PATCH",body:JSON.stringify({archived:n})})}function hn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/favorite`,{method:"PATCH",body:JSON.stringify({favorite:n})})}function yn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}`,{method:"DELETE"})}function An(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/parallel-groups`,{method:"POST",body:JSON.stringify(n)})}function vn(e,n){return r.request(`/api/workspaces/${encodeURIComponent(e)}/parallel-groups`,{method:"POST",body:JSON.stringify(n)})}function Rn(e){return r.request(`/api/parallel-groups/${encodeURIComponent(e)}`)}function Cn(e,n){return r.request(`/api/parallel-groups/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(n)})}function Pn(e){return r.request(`/api/session-isolated-workspaces/${encodeURIComponent(e)}/promote`,{method:"POST"})}function wn(e){return r.request("/api/worktrees",{method:"POST",body:JSON.stringify(e)})}function Dn(e){return r.request(`/api/worktrees/${encodeURIComponent(e)}/merge-preview`,{method:"POST"})}function On(e){return r.request(`/api/worktrees/${encodeURIComponent(e)}/merge-into-parent`,{method:"POST"})}function In(e,n){return r.request(`/api/worktrees/${encodeURIComponent(e)}/cleanup`,{method:"POST",body:JSON.stringify(n??{})})}function Nn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/capabilities`)}function bn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/permission-requests`)}function qn(){return r.request("/api/preferences/quick-phrases")}function En(e){return r.request("/api/preferences/quick-phrases",{method:"PUT",body:JSON.stringify({items:e})})}function pe(e,n,s){var o;const t=new URLSearchParams;return n!=null&&n.trim()&&t.set("workspaceId",n.trim()),(s==null?void 0:s.providerConfigMode)==="cc-switch-preset"&&((o=s.providerPresetId)!=null&&o.trim())&&(t.set("providerConfigMode","cc-switch-preset"),t.set("providerPresetId",s.providerPresetId.trim())),r.request(`/api/providers/${encodeURIComponent(e)}/capabilities${t.size>0?`?${t.toString()}`:""}`)}async function me(){return(await r.request("/api/providers/catalog")).items}async function ge(){return(await r.request("/api/providers/catalog/refresh",{method:"POST"})).items}async function Se(e,n){return(await r.request(`/api/providers/catalog/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify({enabled:n})})).item}async function he(e,n){const s=await Promise.allSettled(e.map(async o=>[o,await pe(o,n)])),t=[];for(const o of s){if(o.status!=="fulfilled")continue;const[a,l]=o.value;t.push([a,l])}return Object.fromEntries(t)}function Ln(e,n,s,t="forward"){const o=new URLSearchParams;return n&&o.set("cursor",n),o.set("limit",String(s)),o.set("direction",t),r.request(`/api/sessions/${encodeURIComponent(e)}/messages?${o.toString()}`)}function xn(e,n){return r.requestBlob(`/api/sessions/${encodeURIComponent(e)}/attachments/${encodeURIComponent(n)}/content`)}function Un(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/messages`,{method:"POST",body:JSON.stringify(n)})}function Tn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/forks`,{method:"POST",body:JSON.stringify(n)})}function Mn(e){return r.request("/api/sessions/start-live",{method:"POST",body:JSON.stringify(e)})}function Bn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/messages/live`,{method:"POST",body:JSON.stringify(n)})}function jn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue`)}function kn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue`,{method:"POST",body:JSON.stringify(n)})}function Kn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue/${encodeURIComponent(n)}`,{method:"DELETE"})}function Fn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue/${encodeURIComponent(n)}/steer`,{method:"POST"})}function Jn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/runtime`)}function Qn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/interrupt`,{method:"POST"})}function Gn(e,n,s){return r.request(`/api/sessions/${encodeURIComponent(e)}/permission-requests/${encodeURIComponent(n)}/reply`,{method:"POST",body:JSON.stringify(s)})}const E="codingns.workspace.session-display-sort-mode",L="codingns.file-panel.show-system-files",j="codingns.notification.preferences",b={notifyOnPermissionRequest:!0,notifyOnSessionCompleted:!0,notifyOnSessionFailed:!0};function q(){return typeof window<"u"&&typeof window.localStorage<"u"}function ye(e){return e==="createdAt"||e==="updatedAt"||e==="title"}function F(){if(!q())return"createdAt";const e=window.localStorage.getItem(E);return ye(e)?e:"createdAt"}function J(){return q()?window.localStorage.getItem(L)==="1":!1}function M(e){return typeof e=="boolean"}function Q(){if(!q())return b;const e=window.localStorage.getItem(j);if(!e)return b;try{const n=JSON.parse(e);return{notifyOnPermissionRequest:M(n.notifyOnPermissionRequest)?n.notifyOnPermissionRequest:b.notifyOnPermissionRequest,notifyOnSessionCompleted:M(n.notifyOnSessionCompleted)?n.notifyOnSessionCompleted:b.notifyOnSessionCompleted,notifyOnSessionFailed:M(n.notifyOnSessionFailed)?n.notifyOnSessionFailed:b.notifyOnSessionFailed}}catch{return b}}function G(e,n){return e.notifyOnPermissionRequest===n.notifyOnPermissionRequest&&e.notifyOnSessionCompleted===n.notifyOnSessionCompleted&&e.notifyOnSessionFailed===n.notifyOnSessionFailed}function Ae(e){q()&&window.localStorage.setItem(j,JSON.stringify(e))}class ve{constructor(){N(this,"state",{sessionDisplaySortMode:F(),showSystemFiles:J(),notificationPreferences:Q()});N(this,"listeners",new Set);N(this,"subscribe",n=>(this.listeners.add(n),()=>{this.listeners.delete(n)}));N(this,"getState",()=>this.state);N(this,"handleStorage",n=>{if(n.key!==null&&n.key!==E&&n.key!==L&&n.key!==j)return;const s=F(),t=J(),o=Q(),a=this.state.sessionDisplaySortMode===s,l=this.state.showSystemFiles===t,d=G(this.state.notificationPreferences,o);a&&l&&d||(this.state={sessionDisplaySortMode:s,showSystemFiles:t,notificationPreferences:o},this.emit())});typeof window<"u"&&window.addEventListener("storage",this.handleStorage)}setSessionDisplaySortMode(n){q()&&(n==="createdAt"?window.localStorage.removeItem(E):window.localStorage.setItem(E,n)),this.state.sessionDisplaySortMode!==n&&(this.state={...this.state,sessionDisplaySortMode:n},this.emit())}setShowSystemFiles(n){q()&&(n?window.localStorage.setItem(L,"1"):window.localStorage.removeItem(L)),this.state.showSystemFiles!==n&&(this.state={...this.state,showSystemFiles:n},this.emit())}setNotificationPreferences(n){const s={...this.state.notificationPreferences,...n};G(this.state.notificationPreferences,s)||(Ae(s),this.state={...this.state,notificationPreferences:s},this.emit())}emit(){for(const n of this.listeners)n()}}const W=new ve;function Wn(e){return g.useSyncExternalStore(W.subscribe,()=>e(W.getState()))}function zn({heading:e,description:n,actions:s,tone:t="default",className:o,children:a}){return i.jsxs("section",{className:I("modal-section",o),"data-tone":t,children:[e||n||s?i.jsxs("div",{className:"modal-section-header",children:[i.jsxs("div",{className:"modal-section-copy",children:[e?i.jsx("strong",{className:"modal-section-heading",children:e}):null,n?i.jsx("p",{className:"modal-section-description",children:n}):null]}),s?i.jsx("div",{className:"modal-section-actions",children:s}):null]}):null,a]})}function Vn({label:e,description:n,className:s,htmlFor:t,children:o}){return i.jsxs("div",{className:I("workbench-modal-field","modal-field",s),children:[i.jsxs("div",{className:"modal-field-copy",children:[t?i.jsx("label",{className:"modal-field-label",htmlFor:t,children:e}):i.jsx("span",{className:"modal-field-label",children:e}),n?i.jsx("span",{className:"modal-field-description",children:n}):null]}),o]})}function Zn({align:e="end",stack:n=!1,className:s,children:t,...o}){return i.jsx("div",{className:I("workbench-modal-actions","modal-actions",s),"data-align":e,"data-stack":n?"true":void 0,...o,children:t})}function Yn({compact:e=!1,className:n,children:s,...t}){return i.jsx("div",{className:I("modal-list",n),"data-compact":e?"true":void 0,...t,children:s})}function Xn(e){const{as:n="div",label:s,description:t,leading:o,trailing:a,tone:l="default",selected:d=!1,className:P,children:p,...c}=e,D={className:I("modal-list-item",P),"data-tone":l!=="default"?l:void 0,"data-selected":d?"true":void 0,"data-interactive":n==="button"?"true":void 0},y=i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"modal-list-item-main",children:[o?i.jsx("div",{className:"modal-list-item-leading",children:o}):null,i.jsxs("div",{className:"modal-list-item-copy",children:[s?i.jsx("span",{className:"modal-list-item-label",children:s}):null,t?i.jsx("span",{className:"modal-list-item-description",children:t}):null,p]})]}),a?i.jsx("div",{className:"modal-list-item-trailing",children:a}):null]});if(n==="button"){const m=c;return i.jsx("button",{type:m.type??"button",...m,...D,children:y})}return i.jsx("div",{...c,...D,children:y})}function Hn({title:e,description:n,action:s,className:t,compact:o=!1}){return i.jsxs("div",{className:I("modal-empty-state",t),"data-compact":o?"true":void 0,children:[i.jsx("strong",{className:"modal-empty-state-title",children:e}),n?i.jsx("p",{className:"modal-empty-state-description",children:n}):null,s?i.jsx("div",{className:"modal-empty-state-action",children:s}):null]})}function $n({tone:e="default",className:n,children:s,...t}){return i.jsx("span",{className:I("modal-tag",n),"data-tone":e!=="default"?e:void 0,...t,children:s})}function I(...e){return e.filter(Boolean).join(" ")}function Re(){return le().haptics}const B=new Set;let h={items:null,loading:!1,requested:!1},C=null;function Ce(){B.forEach(e=>e())}function O(e){h=e,Ce()}function Pe(e){return B.add(e),()=>{B.delete(e)}}function z(){return h}function we(e=!1){if(!e){if(h.items)return Promise.resolve(h.items);if(C)return C}return O({...h,loading:!0,requested:!0}),C=me().then(n=>(O({items:n,loading:!1,requested:!0}),n)).catch(()=>(O({...h,items:null,loading:!1,requested:!0}),null)).finally(()=>{C=null}),C}function _n(){return O({...h,loading:!0,requested:!0}),C=ge().then(e=>(O({items:e,loading:!1,requested:!0}),e)).catch(()=>(O({...h,loading:!1,requested:!0}),null)).finally(()=>{C=null}),C}function De(e){const n=h.items??[],s=Ie(n,e);O({items:s,loading:!1,requested:!0})}async function es(e,n){const s=await Se(e,n);return De(s),s}function Oe(e=!0){const n=g.useSyncExternalStore(Pe,z,z);return g.useEffect(()=>{e&&we()},[e]),n}function Ie(e,n){const s=e.slice(),t=s.findIndex(o=>o.provider===n.provider);return t>=0?(s[t]=n,s):(s.push(n),s)}const Ne="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAF+0lEQVRYha2XbXBUZxXHf+e5u4SkCZjg0NIWnQLJLgRF5UWnL75MP9gMjqPT2eyC0qlMiYxOUAR206LOyhiSTVscp52O0xamWgu7WTp0qLUz6kht6Qed1L7M5GUTsAoDTRSIJJos2b33+GFfWMJuNqmcT/c595z/+d3nOc+9zxXKWE9Li7tm0fjyqmT6H0t/Fp8sFz9XM+UCauouH8Rx+ifmWWdP7Q0sLRbT98g3lySC/mcSQd+GGwrQt2vzx1G2ZEa6KJ3S1mJxlpOKIDyEmEM3FGCk5vw5YCw3FmFbb9hXfV2gcm/26vINBfhS+LU0qgcKXB9xT1hbr6kdDhtgcYaDxHSNwVBg92Ao0DMY8n97zgAAZnK8U2AoX1D0++rzWfkC44k6wAVghP7C3EQo8Iiijyq61oEDiV2bPjojwKk234pEsPnh/lDgzpyv/olXrwi6qyDsjsQy2ZQXmJdefPWWvp0v3uZ/CLQ9NxZINpxJj84IYDvmOUT2G/T1DD0CUB/pflnhd1eT5Mcnwl90Adi23JzPl9TbAEN7fF9AeapQW5AOicftGQFEOJ+9tEDbB9v8x99r21wLYBlnJ5AGUKhfklz8QEbY3J71nVnZceziUPAbtzvGxAB3wdPH6yPRx6cXvw4gbbm/B5zIO5SvVKjdMxAMrKvviPcpHMyLqvyoN+ybh7AUwIi+M9TaVOGI/SJwc4Fsf6rS2SqgxQBkukPDYTM40RdCZB/Z5gKmEGmzjStq2alBoDqbvF2hEWgF9oEuAvlugdx/Deaz9ZEjvcWKFwXIWaLNv14cDqmwugDvFRVOi8qOrOMdhT6BzQhvoNxzjbjItxo6o8+VqjEjAMBQa1OFXbXwh4KGuLqmDleXToHzwG1FpLs9kah/uvf98IPz08nkSuZbp+vDL4zNCJAHaQt82lH9JfCJ2cQrTFjq8hiZGrfVtQGcDQhrFNYAywELuFw15SwRgN6dvrrahcnkreGXJ0pCtDZVOFULwsCerEBJExhVGAY8FH/Z2cBvPJHY1ySx13cbaXMaqACSwCVRLqlhVNBRVTOm4lxCOSdqPkB0FdA2m5kosGGEHpC3UP2z6uRJb9fx8SwsJEL+nwBNwEKgWqBSoXaORQqtH+VNhDdErJMNnYf/ViqwbBNO3lRbVZFSS9yyIG1jucRuVuGnM6TZZL4d/wS9KEgawIH/gF5EzAWBvzecto9KPG7PqgkBTu0NLHVs7VBlcxnwS8ALgtyp6Kco3S9/OF850lQWYCD41RpMZUiUH5BZmgkRDqmyVaCqeJYeS1dqwJq4UoG56S5w7hb4PMp6YH426LJR1+qSAOrzWYPLZCvIPuAWAIHXxGGXY3geWAV6DOTrJRR+r5q8P9dskNtJ1etBVl4R19FPdh4eLQowEPR5RKxfgebOeGMqGvLMX/V0YrK/W+B+4ATCYZRnEJ5E+Q5gFM4AFwQ+I8hbLks2Ltt/ZKTUg163Rwfamrcj5q/54spvLZes9nZ2/yIx0b8jW/wCLmeLOLoCAEdeAjmYnaWPGXga9Jiia1O28+bAbt8dswJQEFF5IrO2chGVBzxdsY0r2qNnBx5uvkuELkAFedDTHj+nIl4AIzJsjL2XTAOisB+XtqryKLBcLHNyKLSpsSyAgKrKJoRtbksaPV3R5yFz7BaHOOBGOdAQib6SRV4L4KQZqe+I/wvYmZWqE1ue8nbFggjbgDoH/VOxY3vZXdDT0uKuqR37I+jdIH9JV9r3NIbjU717fLe4jPkASDVEYhW5730i2PwqIvdlZkK3eCPdv06E/GuAbmCBJxJbUnIGill13b8fyxRnRG070BiOTwG4MeuyszBSeNiw3KZFYDTzdPLzU7u3LPZEYu+qTq5Tlev+K2YESAQD94rKjqzgl72Pxd/P3VNLsgAyXJizoj161kG3Z4d1aZP6HIC36/i4tyt6dE4AasQNDIhxNnoisXevvZndJcLw9DxvpLsb5XGE9yzD2ZlqzPpVPN0SIf854FaUZz1dsW0fVqdsD5Q05Qhgg7z+oTX+Xyv2pzNX+x+eTlGviPgh3AAAAABJRU5ErkJggg==",be="/assets/legna-code-6TqgZ4Ls.png",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAbGSURBVHgBzZo/bBtVHMd/ZzuJA0gYCYlsOFO7xRFDy1R3olucqd0SJtiSjiCknBckpjZjBxRn7BR3owOqs5Wp7tZKoDgSQysh4UqUOCG2eZ/3/Oznv/fObqJ+pfPZd+/ufn++vz/vnQN5FwjbGZFGQSRYUb+yIu2c2tSxIOOMqpktqKpzz9X3ioSLNZkRgUwLhA4aW9KWvPqVl6mgldmVGZSJr0BX8Pb2gIVnRUltxbiKxFOgeLJzAYL3I5BQdhaL/sN9EJ5k1dADw+1LQU1tN328kYgaIMWzDSX4s0sUHmSVwZ5JeFqIGjhZgeKpokyzdKGUGQuyWOtA03YCxlNIC98K5X3AhLgYrYB2ndLeE5l0IFvXklK4mpRsxvyuvmqrrSX71aZUjlsyM4LkpuzM7w8dHhqoAxbO+9Fm63pSwhspLTSo1dt6n830bl1SStx9fK6/Z9LmWL3B1hZ/BHUl1+pgYI9S4Eh0EEVjJ5/SwiPI7m9Nuf+02SfUZi4pO+o8ynDcKmlRqRkPlZ43xQ+q8IXpVfdIsu88vJd2ZOSD/OcJKRXmtMW//PlMyi9a0jjvH5NZCDStEDydCjSlfvm9pa/hd24poc+zf/zH8PUjsCT57wOp/FjpqtQ9pakjR+KJo60Fbdnl3dMubSw4vrc2J/msSXLlF4ZCg+M4zzjGEzM39888aAWVFpYlZN+fRnfEE1iMh8JtVygsDWWefTOvhYMiCLX+8L8h4QHnVx+cas/klgLZvpb0eDrp9d/trjr609P6brbhgesPDXXA5kpS7t0ywYwVi4fERD8noJ1WfIDzBDYeRRw8GscL1gP5iCv0g7FsqAIX4UH9pHeegEb44uG5EuKsT3iuPbg9J08252VPxQ3CoowFGYlgRhEMEY2eFzp3CbbEQ3j28BnXjwI0CSvnXQu6lMJrnOd67qOV6fAf2HuuLPn2l4kbRgGT9yf2OU825o11lXDw+bgenb8LV5JdjwE8s/rAxMPXj0xMkGbxBkpWX8epCRp5WvuERNAHl9qADQ+j8xz0QuGDOz3rIizXW8/wHa7bzISSKAveNCQGGoVElPU3coaTcDQKhmoL3QxEkLMna2FplzKAOCFLGf6b4x+nJQbauURnHjsWWJQg8+1nsChCsZGh2LuUwTvb11J94zfVeVtPGOOej4CuNNlJI2xa9BUeQQaD3FKG83iAdItHClcSQ4rzLJvRohGsRCowqoexyCxKbNiUqVPrnf5MhBL0VKRTv6IWZCJnZJR4bujm7eprY+GD2/M6g/hZyypgKENGspThHha2fqxdjZ4sUg8iRz16aYLXBrN5SLPLa5tBMrGCT3T7wD0GgYcM1XwU0IWsXZ80wPY7WMpVguM2g0ABvMDmZhkXZox4w3dswvQV44FFSIe4vqT46rrbzSAEru1pXF6j1L2vTND6Us10p15Zr5Ywq2OTQRwUO0UMyiCM27PYDDKYLomRoy2VNq+n9HGfbGbvyzM9FWgd+4zMfWY4iaV1v6+assHCZNOl7XcKnUC0bUQ9osrq3qnTevgUTtZYUz4ecGEDDwtjaTYER8jsx0YAO5Gxc2EfyyP83lqq27b4Fc6gqhRolEXSe1FDrRBUZioslrYpkD3WthzHSyg0WNCIkVFeoNWw3S7UsQsAHqiobvQTgrgSNbL80gizdmU4EyEswsNzPMQxV3hqiO1oR3kDoyD87tOm57QStKusUNiUcigRXSlZQRchZW2qpc0Sdg5AbQDuw3XboDIQcwGAUm7uh3LWEPvPx88zRiNgWd5OaBr3o+oBrmeaCJhdDeZ7BB83kbETdjZ3bmzryii6eaDCR8c0PzUk/wOdTX7SFU//bEmg5EYoUiOCvv5H5NXbnuDffpHUGYoxLJN892uvarsgXXIPa/14SJTU+pBepXOWVf5W88yFI58VOWqBW9DAYNM3KQMRE0x4gO2JYmLZrtD1ItLTC3ooK2rKasdvzAIVwNp2PfTqpwmdWZY+CswMKzDeYZp579acNgDjodSLv+IK31JvcT4o218jlhYbM78LcJcUR8EG8xSWrynLL7sHZl7cnQQUoYKvLJn0eVwnHTenCVgxSSbwWNwF4cmm+owsbpeLxLqEC+WhoyPHhosl4Y3hewN4Pyw8mNzfhiehxFgzvRgg/IfhuLPRDXr4ljfwe5f/nkxz/m6HDWMR4zWrPBHPFx+zQ7/BX/d5zRrvRfeFU0pbfVcJHvpeMcVfDfAGby8TG/LO0BFc0vftiwtfzPBnD02rvFnZnrrwVUR3wvEFt5heARddZVDE/uXGjRdt4bru4UWODcfT5WmFdvE/Jeqz44iuBr4AAAAASUVORK5CYII=",qe="/assets/gemini-D4G1NbrE.png",Ee="/assets/kimi-BWNNSh7e.png",Le="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAABzUlEQVR4AeycQQrCQBAEF1+g6J/0o5LPCXmCnnNx0E2nNqGEPciw024VffV0PZ/fHo7BqflBCSgAxd+aAhQAE4DjbYACYAJwvA1QAEwAjrcBCgAIDBRpA2AZClAATACOtwEKgAnA8TZAATABOD7egNc8tz2ftJ+4gPQD9r5fAbDBDQXALx00XgGwGAUoACYAx9sABcAE4HgboACYABxvAxSwJHC7XFryLNP4bzYg7KBar4CKUHiugDDgar0CKkLhuQLCgKv1CqgIhecKCAOu1iugIhSeKyAMuFqvgIpQeK6AMOBq/XAC7o9H6z5fdlRAtp4PJ2BrAHSeAmADClAATACOtwEKgAnA8TZAATABON4GKAAmAMev2AD4JTuNVwAsTgEKgAnA8TZAATABON4GKAAmAMfbAAXABOB4G9ApoPe6AnoJdt5XQCfA3uvDCXhOU0ueXmBr3x9OwNoPHH2fAmBDClAATACOtwEKgAnA8TZAAX8QONAVGwDLVIACYAJwfLwByf/+2WJ32k9cQPoBe9+vANigAhQAE4DjbYACYAJw/A8NgH/pQeMVAItVgAJgAnC8DVAATACOtwEKgAnA8TZAATABON4GFALS4w8AAAD//x7wkLQAAAAGSURBVAMAKj5LkLSa6SQAAAAASUVORK5CYII=",xe=new Set(["low","medium","high","xhigh"]),H=["claude-code","codex","opencode","gemini","kimi","legna-code"],$=["codex","claude-code","opencode","gemini","kimi","legna-code"];function V(e){const n=new Set,s=[],t=[...$,...H];for(const o of t)e.includes(o)&&(n.has(o)||(n.add(o),s.push(o)));for(const o of e)n.has(o)||(n.add(o),s.push(o));return s}const _={"claude-code":{displayNameKey:"conversation.providerClaude",fullDisplayNameKey:"shell.providerClaudeCode",draftTitleKey:"conversation.draftTitleClaude",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:Ne,defaultRunInputMode:"streaming_guidance",reasoningLevelPersists:!1,defaultReasoningLevel:void 0,supportsSlashMenuByDefault:!0,supportsRunSteeringByDefault:!0,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},"legna-code":{displayNameKey:"conversation.providerLegna",fullDisplayNameKey:"shell.providerLegnaCode",draftTitleKey:"conversation.draftTitleLegna",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:be,defaultRunInputMode:"streaming_guidance",reasoningLevelPersists:!1,defaultReasoningLevel:void 0,supportsSlashMenuByDefault:!0,supportsRunSteeringByDefault:!0,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},codex:{displayNameKey:"conversation.providerCodex",draftTitleKey:"conversation.draftTitleCodex",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:X,defaultRunInputMode:"streaming_guidance",reasoningLevelPersists:!0,defaultReasoningLevel:null,supportsSlashMenuByDefault:!1,supportsRunSteeringByDefault:!0,supportsQueueWhileRunningByDefault:!0,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!0},opencode:{displayNameKey:"conversation.providerOpenCode",draftTitleKey:"conversation.draftTitleOpenCode",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:Le,defaultRunInputMode:"none",reasoningLevelPersists:!1,defaultReasoningLevel:void 0,supportsSlashMenuByDefault:!1,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},gemini:{displayNameKey:"conversation.providerGemini",draftTitleKey:"conversation.draftTitleGemini",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:qe,defaultRunInputMode:"none",reasoningLevelPersists:!1,defaultReasoningLevel:null,supportsInterrupt:!0,supportsAttachments:!1,supportsPermissionPrompt:!1,supportsSlashMenuByDefault:!1,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},kimi:{displayNameKey:"conversation.providerKimi",draftTitleKey:"conversation.draftTitleKimi",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:Ee,defaultRunInputMode:"none",reasoningLevelPersists:!1,defaultReasoningLevel:null,supportsInterrupt:!0,supportsAttachments:!1,supportsPermissionPrompt:!1,supportsSlashMenuByDefault:!1,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!0}},Ue=Array.from(new Set(Object.values(_).map(e=>e.icon)));let Z=!1;function Te(e){return H.includes(e)}function f(e){return!e||!Te(e)?null:_[e]}function Me(e){return[{id:"provider-default",name:S(e),usesProviderDefault:!0}]}function Be(e){const n=f(e);return Me((n==null?void 0:n.defaultModelLabelKey)??"conversation.modelUseCliDefault")}function ns(e){return!!(e&&f(e))}function ss(e){const n=f(e);return S((n==null?void 0:n.draftTitleKey)??"conversation.draftTitleCodex")}function je(e,n="compact"){const s=f(e);return s?n==="full"&&s.fullDisplayNameKey?S(s.fullDisplayNameKey):S(s.displayNameKey):(e==null?void 0:e.trim())||S("conversation.providerCodex")}function ke(e){const n=f(e);return(n==null?void 0:n.icon)??X}function ee(){Z||typeof window>"u"||(Z=!0,Ue.forEach(e=>{const n=new window.Image;n.decoding="async",n.src=e,typeof n.decode=="function"&&n.decode().catch(()=>{})}))}function ts(e){const n=f(e);return{provider:e,canStartSession:!0,canResumeSession:!0,canSendMessage:!0,inRunInputMode:(n==null?void 0:n.defaultRunInputMode)??"none",supportsSubagents:!1,supportsInterrupt:(n==null?void 0:n.supportsInterrupt)??!1,supportsStructuredToolCalls:!0,supportsTokenUsage:!0,supportsAttachments:(n==null?void 0:n.supportsAttachments)??!0,supportsPermissionPrompt:(n==null?void 0:n.supportsPermissionPrompt)??!0,supportsCheckpoint:!1,supportsSessionDelete:(n==null?void 0:n.supportsSessionDeleteByDefault)??!1,modelOptions:Be(e),defaultReasoningLevel:n==null?void 0:n.defaultReasoningLevel,supportsRunSteering:n==null?void 0:n.supportsRunSteeringByDefault,supportsQueueWhileRunning:n==null?void 0:n.supportsQueueWhileRunningByDefault,limitations:[]}}function os(e){return(e==null?void 0:e.provider)??"claude-code"}function rs(e){var s;if((e==null?void 0:e.supportsSlashMenu)!==void 0)return e.supportsSlashMenu;const n=(e==null?void 0:e.provider)??null;return((s=f(n))==null?void 0:s.supportsSlashMenuByDefault)??!1}function is(e){var n;return(e==null?void 0:e.supportsReasoningSelector)!==void 0?e.supportsReasoningSelector:!!((n=e==null?void 0:e.modelOptions)!=null&&n.some(s=>{var t;return((t=s.supportedReasoningEfforts)==null?void 0:t.some(o=>xe.has(o)))??!1}))}function as(e,n){var a;if((e==null?void 0:e.supportsQueueWhileRunning)!==void 0)return e.supportsQueueWhileRunning;const s=(e==null?void 0:e.provider)??null,t=(a=f(s))==null?void 0:a.supportsQueueWhileRunningByDefault;if(t!==void 0)return t;const o=(e==null?void 0:e.inRunInputMode)??"none";return o==="queued_guidance"||o==="none"||o==="streaming_guidance"&&n===!1}function us(e){var s;if((e==null?void 0:e.supportsRunSteering)!==void 0)return e.supportsRunSteering;const n=(e==null?void 0:e.provider)??null;return((s=f(n))==null?void 0:s.supportsRunSteeringByDefault)??(e==null?void 0:e.inRunInputMode)==="streaming_guidance"}function ls(e){const n=f(e);return(n==null?void 0:n.reasoningLevelPersists)??!1}function ds(e,n){var t;return((t=f(n??null))==null?void 0:t.foldRulesMessagesByDefault)??!1}typeof window<"u"&&ee();function Ke(e,n=!0){const s=g.useMemo(()=>V(e),[e]),{items:t,loading:o,requested:a}=Oe(n),l=g.useMemo(()=>{if(!t)return a&&!o?s:[];const d=new Set(s),P=t.filter(p=>p.enabled&&d.has(p.provider)).map(p=>p.provider);return V(P)},[s,t]);return{providerCatalog:t,visibleProviders:l,loading:o,ready:t!==null||a&&!o}}const k=new Map;function cs(){k.clear()}function fs({disabled:e=!1,workspaceId:n=null,pendingProvider:s=null,selectedProvider:t=null,providers:o=$,className:a,disabledReasons:l,statusHintByProvider:d,onSelect:P}){const p=Re(),{visibleProviders:c,ready:w}=Ke(o),D=!!n,[y,m]=g.useState(()=>Y(c,n)),x=c.map(u=>({provider:u}));return g.useEffect(()=>{ee()},[]),g.useEffect(()=>{if(!w){m({});return}if(!n){m({});return}const u=Y(c,n);m(u);const A=c.filter(R=>!u[R]);if(A.length===0)return;let v=!1;return he(A,n).then(R=>{Je(n,R),v||m(U=>({...U,...R}))}),()=>{v=!0}},[w,c,n]),w?i.jsx("div",{className:`session-provider-grid${a?` ${a}`:""}`,children:x.map(u=>{const A=je(u.provider,"full"),v=s===u.provider,R=t===u.provider,U=!!y[u.provider],se=Fe(y[u.provider]??null),T=(l==null?void 0:l[u.provider])??se,K=v?S("shell.startingSession"):T||((d==null?void 0:d[u.provider])??(D&&!U&&!v?S("shell.providerChecking"):null));return i.jsxs("button",{type:"button",className:"session-provider-card","data-provider":u.provider,"data-pending":v?"true":"false","data-selected":R?"true":"false","aria-label":A,disabled:e||!!T,onClick:()=>{p.trigger("action"),P(u.provider)},children:[i.jsx("span",{className:"session-provider-card-icon","aria-hidden":"true",children:i.jsx("img",{src:ke(u.provider),alt:"",loading:"eager",decoding:"async"})}),i.jsxs("span",{className:"session-provider-card-copy",children:[i.jsx("strong",{children:A}),K?i.jsx("span",{className:"session-provider-card-status",children:K}):null]})]},u.provider)})}):i.jsx("div",{className:`session-provider-grid${a?` ${a}`:""}`,children:i.jsx("div",{className:"session-provider-card","aria-hidden":"true","data-placeholder":"true",children:i.jsx("span",{className:"session-provider-card-copy",children:i.jsx("strong",{children:S("shell.providerChecking")})})})})}function Fe(e){return!e||e.canStartSession!==!1?null:e.limitations[0]??S("conversation.capabilityDenied")}function Y(e,n){const s=(n==null?void 0:n.trim())??"";if(!s)return{};const t=[];for(const o of e){const a=k.get(ne(s,o));a&&t.push([o,a])}return Object.fromEntries(t)}function Je(e,n){const s=e.trim();if(s)for(const[t,o]of Object.entries(n))o&&k.set(ne(s,t),o)}function ne(e,n){return`${e}::${n}`}function ps(){const e=ie(s=>s),n=ae(s=>s);return Qe(e,n)}function Qe(e,n){var l;const s=ue(e);if(!s)return null;const t=!!((l=s.relayTunnel)!=null&&l.enabled),a=!(e.platform==="web"&&t)&&n.activeHostId===s.id&&n.candidateProbePhase==="ready"?Ge(n):null;if(a){const d=We(a.kind);return{kind:d,url:a.url,endpointId:a.endpointId,autoDirect:t&&d!=="relay",probeInProgress:!1}}return{kind:ze(s),url:s.baseUrl,endpointId:null,autoDirect:!1,probeInProgress:t&&n.activeHostId===s.id&&n.candidateProbePhase==="probing"}}function ms(e){switch(e){case"relay":return"common.connectionRouteRelay";case"lan":return"common.connectionRouteLan";case"loopback":return"common.connectionRouteLoopback";case"tailscale":return"common.connectionRouteTailscale";default:return"common.connectionRouteDirect"}}function Ge(e){const n=e.preferredDirectCandidateEndpointId??e.preferredCandidateEndpointId;return n?e.candidateEndpoints.find(s=>s.endpointId===n&&s.status==="verified")??null:null}function We(e){return e==="custom"?"direct":e}function ze(e){var n;if((n=e.relayTunnel)!=null&&n.enabled&&Ve(e.baseUrl,e.relayTunnel.tunnelDomain))return"relay";try{const s=new URL(e.baseUrl).hostname.toLowerCase();if(Ze(s))return"loopback";if(Ye(s))return"tailscale";if(Xe(s))return"lan"}catch{return"direct"}return e.kind==="local"?"loopback":e.kind==="lan"?"lan":"direct"}function Ve(e,n){try{return new URL(e).hostname.toLowerCase()===n.trim().toLowerCase()}catch{return!1}}function Ze(e){return e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="[::1]"}function Ye(e){if(e.endsWith(".ts.net"))return!0;const n=e.split(".").map(o=>Number(o));if(n.length!==4||n.some(o=>Number.isNaN(o)))return!1;const[s,t]=n;return s===100&&t>=64&&t<=127}function Xe(e){const n=e.split(".").map(o=>Number(o));if(n.length!==4||n.some(o=>Number.isNaN(o)))return!1;const[s,t]=n;return s===10||s===192&&t===168||s===172&&t>=16&&t<=31}function gs({open:e,title:n,description:s,height:t="auto",kind:o="form",dismissible:a=!0,closeOnBackdrop:l=!0,showHandle:d=!1,showCancelButton:P=!0,cancelLabel:p,className:c,cardClassName:w,bodyClassName:D,footer:y,onClose:m,children:x}){const u=g.useId(),A=g.useId(),v=a&&l;return!e||typeof document>"u"?null:de.createPortal(i.jsx("div",{className:"ios-action-sheet-overlay mobile-sheet-overlay",role:"presentation",onClick:()=>{v&&m()},children:i.jsxs("div",{className:`mobile-workspace-home-sheet mobile-sheet${c?` ${c}`:""}`,"data-height":t,"data-kind":o,role:"dialog","aria-modal":"true","aria-labelledby":u,"aria-describedby":s?A:void 0,onClick:R=>R.stopPropagation(),children:[i.jsxs("div",{className:`mobile-workspace-home-sheet-card mobile-sheet-card${w?` ${w}`:""}`,children:[d?i.jsx("div",{className:"mobile-sheet-handle","aria-hidden":"true"}):null,i.jsx("div",{className:"mobile-workspace-home-sheet-header mobile-sheet-header",children:i.jsxs("div",{className:"mobile-sheet-title-wrap",children:[i.jsx("strong",{id:u,children:n}),s?i.jsx("p",{id:A,children:s}):null]})}),i.jsx("div",{className:D?`mobile-sheet-body ${D}`:"mobile-sheet-body",children:x}),y?i.jsx("div",{className:"mobile-sheet-footer",children:y}):null]}),P?i.jsx("button",{type:"button",className:"ios-action-sheet-cancel mobile-sheet-cancel",disabled:!a,onClick:()=>{a&&m()},children:p??S("common.cancel")}):null]})}),document.body)}async function Ss(){return await r.request("/api/system/model-switch")}async function hs(e){return await r.request("/api/system/model-switch",{method:"POST",body:JSON.stringify(e)})}export{ls as $,Oe as A,kn as B,Kn as C,Fn as D,Qn as E,Gn as F,mn as G,Ln as H,Jn as I,Nn as J,bn as K,jn as L,gs as M,Un as N,ns as O,us as P,Rn as Q,yn as R,fs as S,Pn as T,ss as U,Hn as V,os as W,is as X,rs as Y,as as Z,En as _,je as a,qn as a0,ke as a1,ds as a2,xn as a3,dn as a4,sn as a5,nn as a6,cn as a7,Cn as a8,An as a9,vn as aa,Dn as ab,On as ac,In as ad,Sn as ae,cs as af,ln as ag,un as ah,hn as ai,gn as aj,wn as ak,hs as al,_n as am,es as an,we as ao,W as ap,pn as aq,on as b,rn as c,an as d,Re as e,zn as f,en as g,Vn as h,Yn as i,Xn as j,$n as k,ps as l,ms as m,Ke as n,$ as o,ts as p,Ss as q,tn as r,pe as s,he as t,Wn as u,Zn as v,Tn as w,Bn as x,Mn as y,fn as z};
1
+ var te=Object.defineProperty;var oe=(e,n,s)=>n in e?te(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var N=(e,n,s)=>oe(e,typeof n!="symbol"?n+"":n,s);import{C as r,A as re,b as g,j as i,t as S,f as ie,Y as ae,h as ue}from"./index-CuzMc7q2.js";import{e as le,g as de}from"./App-tPcbyRdS.js";function ce(){return r.request("/api/workspaces")}async function en(){try{return await r.request("/api/workbench")}catch(e){if(!(e instanceof re)||e.status!==404)throw e;const n=await ce();return{items:await Promise.all(n.items.map(async t=>({workspace:t,sessions:(await fe(t.id)).items})))}}}function nn(e){return r.request("/api/workspaces/import",{method:"POST",body:JSON.stringify(e)})}function sn(e){return r.request("/api/workspaces/clone",{method:"POST",body:JSON.stringify(e)})}function tn(e){return r.request(`/api/workspaces/${encodeURIComponent(e)}`,{method:"DELETE"})}function on(e){return r.request("/api/debug-targets/analyze",{method:"POST",body:JSON.stringify(e)})}function rn(e,n){return r.request(`/api/debug-targets/${encodeURIComponent(e)}/launch-plan`,{method:"POST",body:JSON.stringify({})})}function an(){return r.request("/api/framework-compatibility-matrix")}function un(e){return r.request("/api/workspaces/reorder",{method:"PUT",body:JSON.stringify(e)})}function ln(e,n){return r.request(`/api/workspaces/${encodeURIComponent(e)}/navigation-state`,{method:"PUT",body:JSON.stringify(n)})}function dn(e){const n=new URLSearchParams;return e!=null&&e.trim()&&n.set("path",e.trim()),r.request(`/api/workspaces/browse${n.size>0?`?${n.toString()}`:""}`)}function cn(e){return r.request("/api/workspaces/directories",{method:"POST",body:JSON.stringify(e)})}function fe(e){return r.request(`/api/sessions?workspaceId=${encodeURIComponent(e)}`)}function fn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}`)}function pn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/changed-files`)}function mn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/seen`,{method:"POST"})}function gn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/title`,{method:"PATCH",body:JSON.stringify({title:n})})}function Sn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/archive`,{method:"PATCH",body:JSON.stringify({archived:n})})}function hn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/favorite`,{method:"PATCH",body:JSON.stringify({favorite:n})})}function yn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}`,{method:"DELETE"})}function An(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/parallel-groups`,{method:"POST",body:JSON.stringify(n)})}function vn(e,n){return r.request(`/api/workspaces/${encodeURIComponent(e)}/parallel-groups`,{method:"POST",body:JSON.stringify(n)})}function Rn(e){return r.request(`/api/parallel-groups/${encodeURIComponent(e)}`)}function Cn(e,n){return r.request(`/api/parallel-groups/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(n)})}function Pn(e){return r.request(`/api/session-isolated-workspaces/${encodeURIComponent(e)}/promote`,{method:"POST"})}function wn(e){return r.request("/api/worktrees",{method:"POST",body:JSON.stringify(e)})}function Dn(e){return r.request(`/api/worktrees/${encodeURIComponent(e)}/merge-preview`,{method:"POST"})}function On(e){return r.request(`/api/worktrees/${encodeURIComponent(e)}/merge-into-parent`,{method:"POST"})}function In(e,n){return r.request(`/api/worktrees/${encodeURIComponent(e)}/cleanup`,{method:"POST",body:JSON.stringify(n??{})})}function Nn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/capabilities`)}function bn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/permission-requests`)}function qn(){return r.request("/api/preferences/quick-phrases")}function En(e){return r.request("/api/preferences/quick-phrases",{method:"PUT",body:JSON.stringify({items:e})})}function pe(e,n,s){var o;const t=new URLSearchParams;return n!=null&&n.trim()&&t.set("workspaceId",n.trim()),(s==null?void 0:s.providerConfigMode)==="cc-switch-preset"&&((o=s.providerPresetId)!=null&&o.trim())&&(t.set("providerConfigMode","cc-switch-preset"),t.set("providerPresetId",s.providerPresetId.trim())),r.request(`/api/providers/${encodeURIComponent(e)}/capabilities${t.size>0?`?${t.toString()}`:""}`)}async function me(){return(await r.request("/api/providers/catalog")).items}async function ge(){return(await r.request("/api/providers/catalog/refresh",{method:"POST"})).items}async function Se(e,n){return(await r.request(`/api/providers/catalog/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify({enabled:n})})).item}async function he(e,n){const s=await Promise.allSettled(e.map(async o=>[o,await pe(o,n)])),t=[];for(const o of s){if(o.status!=="fulfilled")continue;const[a,l]=o.value;t.push([a,l])}return Object.fromEntries(t)}function Ln(e,n,s,t="forward"){const o=new URLSearchParams;return n&&o.set("cursor",n),o.set("limit",String(s)),o.set("direction",t),r.request(`/api/sessions/${encodeURIComponent(e)}/messages?${o.toString()}`)}function xn(e,n){return r.requestBlob(`/api/sessions/${encodeURIComponent(e)}/attachments/${encodeURIComponent(n)}/content`)}function Un(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/messages`,{method:"POST",body:JSON.stringify(n)})}function Tn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/forks`,{method:"POST",body:JSON.stringify(n)})}function Mn(e){return r.request("/api/sessions/start-live",{method:"POST",body:JSON.stringify(e)})}function Bn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/messages/live`,{method:"POST",body:JSON.stringify(n)})}function jn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue`)}function kn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue`,{method:"POST",body:JSON.stringify(n)})}function Kn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue/${encodeURIComponent(n)}`,{method:"DELETE"})}function Fn(e,n){return r.request(`/api/sessions/${encodeURIComponent(e)}/queue/${encodeURIComponent(n)}/steer`,{method:"POST"})}function Jn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/runtime`)}function Qn(e){return r.request(`/api/sessions/${encodeURIComponent(e)}/interrupt`,{method:"POST"})}function Gn(e,n,s){return r.request(`/api/sessions/${encodeURIComponent(e)}/permission-requests/${encodeURIComponent(n)}/reply`,{method:"POST",body:JSON.stringify(s)})}const E="codingns.workspace.session-display-sort-mode",L="codingns.file-panel.show-system-files",j="codingns.notification.preferences",b={notifyOnPermissionRequest:!0,notifyOnSessionCompleted:!0,notifyOnSessionFailed:!0};function q(){return typeof window<"u"&&typeof window.localStorage<"u"}function ye(e){return e==="createdAt"||e==="updatedAt"||e==="title"}function F(){if(!q())return"createdAt";const e=window.localStorage.getItem(E);return ye(e)?e:"createdAt"}function J(){return q()?window.localStorage.getItem(L)==="1":!1}function M(e){return typeof e=="boolean"}function Q(){if(!q())return b;const e=window.localStorage.getItem(j);if(!e)return b;try{const n=JSON.parse(e);return{notifyOnPermissionRequest:M(n.notifyOnPermissionRequest)?n.notifyOnPermissionRequest:b.notifyOnPermissionRequest,notifyOnSessionCompleted:M(n.notifyOnSessionCompleted)?n.notifyOnSessionCompleted:b.notifyOnSessionCompleted,notifyOnSessionFailed:M(n.notifyOnSessionFailed)?n.notifyOnSessionFailed:b.notifyOnSessionFailed}}catch{return b}}function G(e,n){return e.notifyOnPermissionRequest===n.notifyOnPermissionRequest&&e.notifyOnSessionCompleted===n.notifyOnSessionCompleted&&e.notifyOnSessionFailed===n.notifyOnSessionFailed}function Ae(e){q()&&window.localStorage.setItem(j,JSON.stringify(e))}class ve{constructor(){N(this,"state",{sessionDisplaySortMode:F(),showSystemFiles:J(),notificationPreferences:Q()});N(this,"listeners",new Set);N(this,"subscribe",n=>(this.listeners.add(n),()=>{this.listeners.delete(n)}));N(this,"getState",()=>this.state);N(this,"handleStorage",n=>{if(n.key!==null&&n.key!==E&&n.key!==L&&n.key!==j)return;const s=F(),t=J(),o=Q(),a=this.state.sessionDisplaySortMode===s,l=this.state.showSystemFiles===t,d=G(this.state.notificationPreferences,o);a&&l&&d||(this.state={sessionDisplaySortMode:s,showSystemFiles:t,notificationPreferences:o},this.emit())});typeof window<"u"&&window.addEventListener("storage",this.handleStorage)}setSessionDisplaySortMode(n){q()&&(n==="createdAt"?window.localStorage.removeItem(E):window.localStorage.setItem(E,n)),this.state.sessionDisplaySortMode!==n&&(this.state={...this.state,sessionDisplaySortMode:n},this.emit())}setShowSystemFiles(n){q()&&(n?window.localStorage.setItem(L,"1"):window.localStorage.removeItem(L)),this.state.showSystemFiles!==n&&(this.state={...this.state,showSystemFiles:n},this.emit())}setNotificationPreferences(n){const s={...this.state.notificationPreferences,...n};G(this.state.notificationPreferences,s)||(Ae(s),this.state={...this.state,notificationPreferences:s},this.emit())}emit(){for(const n of this.listeners)n()}}const W=new ve;function Wn(e){return g.useSyncExternalStore(W.subscribe,()=>e(W.getState()))}function zn({heading:e,description:n,actions:s,tone:t="default",className:o,children:a}){return i.jsxs("section",{className:I("modal-section",o),"data-tone":t,children:[e||n||s?i.jsxs("div",{className:"modal-section-header",children:[i.jsxs("div",{className:"modal-section-copy",children:[e?i.jsx("strong",{className:"modal-section-heading",children:e}):null,n?i.jsx("p",{className:"modal-section-description",children:n}):null]}),s?i.jsx("div",{className:"modal-section-actions",children:s}):null]}):null,a]})}function Vn({label:e,description:n,className:s,htmlFor:t,children:o}){return i.jsxs("div",{className:I("workbench-modal-field","modal-field",s),children:[i.jsxs("div",{className:"modal-field-copy",children:[t?i.jsx("label",{className:"modal-field-label",htmlFor:t,children:e}):i.jsx("span",{className:"modal-field-label",children:e}),n?i.jsx("span",{className:"modal-field-description",children:n}):null]}),o]})}function Zn({align:e="end",stack:n=!1,className:s,children:t,...o}){return i.jsx("div",{className:I("workbench-modal-actions","modal-actions",s),"data-align":e,"data-stack":n?"true":void 0,...o,children:t})}function Yn({compact:e=!1,className:n,children:s,...t}){return i.jsx("div",{className:I("modal-list",n),"data-compact":e?"true":void 0,...t,children:s})}function Xn(e){const{as:n="div",label:s,description:t,leading:o,trailing:a,tone:l="default",selected:d=!1,className:P,children:p,...c}=e,D={className:I("modal-list-item",P),"data-tone":l!=="default"?l:void 0,"data-selected":d?"true":void 0,"data-interactive":n==="button"?"true":void 0},y=i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"modal-list-item-main",children:[o?i.jsx("div",{className:"modal-list-item-leading",children:o}):null,i.jsxs("div",{className:"modal-list-item-copy",children:[s?i.jsx("span",{className:"modal-list-item-label",children:s}):null,t?i.jsx("span",{className:"modal-list-item-description",children:t}):null,p]})]}),a?i.jsx("div",{className:"modal-list-item-trailing",children:a}):null]});if(n==="button"){const m=c;return i.jsx("button",{type:m.type??"button",...m,...D,children:y})}return i.jsx("div",{...c,...D,children:y})}function Hn({title:e,description:n,action:s,className:t,compact:o=!1}){return i.jsxs("div",{className:I("modal-empty-state",t),"data-compact":o?"true":void 0,children:[i.jsx("strong",{className:"modal-empty-state-title",children:e}),n?i.jsx("p",{className:"modal-empty-state-description",children:n}):null,s?i.jsx("div",{className:"modal-empty-state-action",children:s}):null]})}function $n({tone:e="default",className:n,children:s,...t}){return i.jsx("span",{className:I("modal-tag",n),"data-tone":e!=="default"?e:void 0,...t,children:s})}function I(...e){return e.filter(Boolean).join(" ")}function Re(){return le().haptics}const B=new Set;let h={items:null,loading:!1,requested:!1},C=null;function Ce(){B.forEach(e=>e())}function O(e){h=e,Ce()}function Pe(e){return B.add(e),()=>{B.delete(e)}}function z(){return h}function we(e=!1){if(!e){if(h.items)return Promise.resolve(h.items);if(C)return C}return O({...h,loading:!0,requested:!0}),C=me().then(n=>(O({items:n,loading:!1,requested:!0}),n)).catch(()=>(O({...h,items:null,loading:!1,requested:!0}),null)).finally(()=>{C=null}),C}function _n(){return O({...h,loading:!0,requested:!0}),C=ge().then(e=>(O({items:e,loading:!1,requested:!0}),e)).catch(()=>(O({...h,loading:!1,requested:!0}),null)).finally(()=>{C=null}),C}function De(e){const n=h.items??[],s=Ie(n,e);O({items:s,loading:!1,requested:!0})}async function es(e,n){const s=await Se(e,n);return De(s),s}function Oe(e=!0){const n=g.useSyncExternalStore(Pe,z,z);return g.useEffect(()=>{e&&we()},[e]),n}function Ie(e,n){const s=e.slice(),t=s.findIndex(o=>o.provider===n.provider);return t>=0?(s[t]=n,s):(s.push(n),s)}const Ne="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAF+0lEQVRYha2XbXBUZxXHf+e5u4SkCZjg0NIWnQLJLgRF5UWnL75MP9gMjqPT2eyC0qlMiYxOUAR206LOyhiSTVscp52O0xamWgu7WTp0qLUz6kht6Qed1L7M5GUTsAoDTRSIJJos2b33+GFfWMJuNqmcT/c595z/+d3nOc+9zxXKWE9Li7tm0fjyqmT6H0t/Fp8sFz9XM+UCauouH8Rx+ifmWWdP7Q0sLRbT98g3lySC/mcSQd+GGwrQt2vzx1G2ZEa6KJ3S1mJxlpOKIDyEmEM3FGCk5vw5YCw3FmFbb9hXfV2gcm/26vINBfhS+LU0qgcKXB9xT1hbr6kdDhtgcYaDxHSNwVBg92Ao0DMY8n97zgAAZnK8U2AoX1D0++rzWfkC44k6wAVghP7C3EQo8Iiijyq61oEDiV2bPjojwKk234pEsPnh/lDgzpyv/olXrwi6qyDsjsQy2ZQXmJdefPWWvp0v3uZ/CLQ9NxZINpxJj84IYDvmOUT2G/T1DD0CUB/pflnhd1eT5Mcnwl90Adi23JzPl9TbAEN7fF9AeapQW5AOicftGQFEOJ+9tEDbB9v8x99r21wLYBlnJ5AGUKhfklz8QEbY3J71nVnZceziUPAbtzvGxAB3wdPH6yPRx6cXvw4gbbm/B5zIO5SvVKjdMxAMrKvviPcpHMyLqvyoN+ybh7AUwIi+M9TaVOGI/SJwc4Fsf6rS2SqgxQBkukPDYTM40RdCZB/Z5gKmEGmzjStq2alBoDqbvF2hEWgF9oEuAvlugdx/Deaz9ZEjvcWKFwXIWaLNv14cDqmwugDvFRVOi8qOrOMdhT6BzQhvoNxzjbjItxo6o8+VqjEjAMBQa1OFXbXwh4KGuLqmDleXToHzwG1FpLs9kah/uvf98IPz08nkSuZbp+vDL4zNCJAHaQt82lH9JfCJ2cQrTFjq8hiZGrfVtQGcDQhrFNYAywELuFw15SwRgN6dvrrahcnkreGXJ0pCtDZVOFULwsCerEBJExhVGAY8FH/Z2cBvPJHY1ySx13cbaXMaqACSwCVRLqlhVNBRVTOm4lxCOSdqPkB0FdA2m5kosGGEHpC3UP2z6uRJb9fx8SwsJEL+nwBNwEKgWqBSoXaORQqtH+VNhDdErJMNnYf/ViqwbBNO3lRbVZFSS9yyIG1jucRuVuGnM6TZZL4d/wS9KEgawIH/gF5EzAWBvzecto9KPG7PqgkBTu0NLHVs7VBlcxnwS8ALgtyp6Kco3S9/OF850lQWYCD41RpMZUiUH5BZmgkRDqmyVaCqeJYeS1dqwJq4UoG56S5w7hb4PMp6YH426LJR1+qSAOrzWYPLZCvIPuAWAIHXxGGXY3geWAV6DOTrJRR+r5q8P9dskNtJ1etBVl4R19FPdh4eLQowEPR5RKxfgebOeGMqGvLMX/V0YrK/W+B+4ATCYZRnEJ5E+Q5gFM4AFwQ+I8hbLks2Ltt/ZKTUg163Rwfamrcj5q/54spvLZes9nZ2/yIx0b8jW/wCLmeLOLoCAEdeAjmYnaWPGXga9Jiia1O28+bAbt8dswJQEFF5IrO2chGVBzxdsY0r2qNnBx5uvkuELkAFedDTHj+nIl4AIzJsjL2XTAOisB+XtqryKLBcLHNyKLSpsSyAgKrKJoRtbksaPV3R5yFz7BaHOOBGOdAQib6SRV4L4KQZqe+I/wvYmZWqE1ue8nbFggjbgDoH/VOxY3vZXdDT0uKuqR37I+jdIH9JV9r3NIbjU717fLe4jPkASDVEYhW5730i2PwqIvdlZkK3eCPdv06E/GuAbmCBJxJbUnIGill13b8fyxRnRG070BiOTwG4MeuyszBSeNiw3KZFYDTzdPLzU7u3LPZEYu+qTq5Tlev+K2YESAQD94rKjqzgl72Pxd/P3VNLsgAyXJizoj161kG3Z4d1aZP6HIC36/i4tyt6dE4AasQNDIhxNnoisXevvZndJcLw9DxvpLsb5XGE9yzD2ZlqzPpVPN0SIf854FaUZz1dsW0fVqdsD5Q05Qhgg7z+oTX+Xyv2pzNX+x+eTlGviPgh3AAAAABJRU5ErkJggg==",be="/assets/legna-code-6TqgZ4Ls.png",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAbGSURBVHgBzZo/bBtVHMd/ZzuJA0gYCYlsOFO7xRFDy1R3olucqd0SJtiSjiCknBckpjZjBxRn7BR3owOqs5Wp7tZKoDgSQysh4UqUOCG2eZ/3/Oznv/fObqJ+pfPZd+/ufn++vz/vnQN5FwjbGZFGQSRYUb+yIu2c2tSxIOOMqpktqKpzz9X3ioSLNZkRgUwLhA4aW9KWvPqVl6mgldmVGZSJr0BX8Pb2gIVnRUltxbiKxFOgeLJzAYL3I5BQdhaL/sN9EJ5k1dADw+1LQU1tN328kYgaIMWzDSX4s0sUHmSVwZ5JeFqIGjhZgeKpokyzdKGUGQuyWOtA03YCxlNIC98K5X3AhLgYrYB2ndLeE5l0IFvXklK4mpRsxvyuvmqrrSX71aZUjlsyM4LkpuzM7w8dHhqoAxbO+9Fm63pSwhspLTSo1dt6n830bl1SStx9fK6/Z9LmWL3B1hZ/BHUl1+pgYI9S4Eh0EEVjJ5/SwiPI7m9Nuf+02SfUZi4pO+o8ynDcKmlRqRkPlZ43xQ+q8IXpVfdIsu88vJd2ZOSD/OcJKRXmtMW//PlMyi9a0jjvH5NZCDStEDydCjSlfvm9pa/hd24poc+zf/zH8PUjsCT57wOp/FjpqtQ9pakjR+KJo60Fbdnl3dMubSw4vrc2J/msSXLlF4ZCg+M4zzjGEzM39888aAWVFpYlZN+fRnfEE1iMh8JtVygsDWWefTOvhYMiCLX+8L8h4QHnVx+cas/klgLZvpb0eDrp9d/trjr609P6brbhgesPDXXA5kpS7t0ywYwVi4fERD8noJ1WfIDzBDYeRRw8GscL1gP5iCv0g7FsqAIX4UH9pHeegEb44uG5EuKsT3iuPbg9J08252VPxQ3CoowFGYlgRhEMEY2eFzp3CbbEQ3j28BnXjwI0CSvnXQu6lMJrnOd67qOV6fAf2HuuLPn2l4kbRgGT9yf2OU825o11lXDw+bgenb8LV5JdjwE8s/rAxMPXj0xMkGbxBkpWX8epCRp5WvuERNAHl9qADQ+j8xz0QuGDOz3rIizXW8/wHa7bzISSKAveNCQGGoVElPU3coaTcDQKhmoL3QxEkLMna2FplzKAOCFLGf6b4x+nJQbauURnHjsWWJQg8+1nsChCsZGh2LuUwTvb11J94zfVeVtPGOOej4CuNNlJI2xa9BUeQQaD3FKG83iAdItHClcSQ4rzLJvRohGsRCowqoexyCxKbNiUqVPrnf5MhBL0VKRTv6IWZCJnZJR4bujm7eprY+GD2/M6g/hZyypgKENGspThHha2fqxdjZ4sUg8iRz16aYLXBrN5SLPLa5tBMrGCT3T7wD0GgYcM1XwU0IWsXZ80wPY7WMpVguM2g0ABvMDmZhkXZox4w3dswvQV44FFSIe4vqT46rrbzSAEru1pXF6j1L2vTND6Us10p15Zr5Ywq2OTQRwUO0UMyiCM27PYDDKYLomRoy2VNq+n9HGfbGbvyzM9FWgd+4zMfWY4iaV1v6+assHCZNOl7XcKnUC0bUQ9osrq3qnTevgUTtZYUz4ecGEDDwtjaTYER8jsx0YAO5Gxc2EfyyP83lqq27b4Fc6gqhRolEXSe1FDrRBUZioslrYpkD3WthzHSyg0WNCIkVFeoNWw3S7UsQsAHqiobvQTgrgSNbL80gizdmU4EyEswsNzPMQxV3hqiO1oR3kDoyD87tOm57QStKusUNiUcigRXSlZQRchZW2qpc0Sdg5AbQDuw3XboDIQcwGAUm7uh3LWEPvPx88zRiNgWd5OaBr3o+oBrmeaCJhdDeZ7BB83kbETdjZ3bmzryii6eaDCR8c0PzUk/wOdTX7SFU//bEmg5EYoUiOCvv5H5NXbnuDffpHUGYoxLJN892uvarsgXXIPa/14SJTU+pBepXOWVf5W88yFI58VOWqBW9DAYNM3KQMRE0x4gO2JYmLZrtD1ItLTC3ooK2rKasdvzAIVwNp2PfTqpwmdWZY+CswMKzDeYZp579acNgDjodSLv+IK31JvcT4o218jlhYbM78LcJcUR8EG8xSWrynLL7sHZl7cnQQUoYKvLJn0eVwnHTenCVgxSSbwWNwF4cmm+owsbpeLxLqEC+WhoyPHhosl4Y3hewN4Pyw8mNzfhiehxFgzvRgg/IfhuLPRDXr4ljfwe5f/nkxz/m6HDWMR4zWrPBHPFx+zQ7/BX/d5zRrvRfeFU0pbfVcJHvpeMcVfDfAGby8TG/LO0BFc0vftiwtfzPBnD02rvFnZnrrwVUR3wvEFt5heARddZVDE/uXGjRdt4bru4UWODcfT5WmFdvE/Jeqz44iuBr4AAAAASUVORK5CYII=",qe="/assets/gemini-D4G1NbrE.png",Ee="/assets/kimi-BWNNSh7e.png",Le="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAABzUlEQVR4AeycQQrCQBAEF1+g6J/0o5LPCXmCnnNx0E2nNqGEPciw024VffV0PZ/fHo7BqflBCSgAxd+aAhQAE4DjbYACYAJwvA1QAEwAjrcBCgAIDBRpA2AZClAATACOtwEKgAnA8TZAATABOD7egNc8tz2ftJ+4gPQD9r5fAbDBDQXALx00XgGwGAUoACYAx9sABcAE4HgboACYABxvAxSwJHC7XFryLNP4bzYg7KBar4CKUHiugDDgar0CKkLhuQLCgKv1CqgIhecKCAOu1iugIhSeKyAMuFqvgIpQeK6AMOBq/XAC7o9H6z5fdlRAtp4PJ2BrAHSeAmADClAATACOtwEKgAnA8TZAATABON4GKAAmAMev2AD4JTuNVwAsTgEKgAnA8TZAATABON4GKAAmAMfbAAXABOB4G9ApoPe6AnoJdt5XQCfA3uvDCXhOU0ueXmBr3x9OwNoPHH2fAmBDClAATACOtwEKgAnA8TZAAX8QONAVGwDLVIACYAJwfLwByf/+2WJ32k9cQPoBe9+vANigAhQAE4DjbYACYAJw/A8NgH/pQeMVAItVgAJgAnC8DVAATACOtwEKgAnA8TZAATABON4GFALS4w8AAAD//x7wkLQAAAAGSURBVAMAKj5LkLSa6SQAAAAASUVORK5CYII=",xe=new Set(["low","medium","high","xhigh"]),H=["claude-code","codex","opencode","gemini","kimi","legna-code"],$=["codex","claude-code","opencode","gemini","kimi","legna-code"];function V(e){const n=new Set,s=[],t=[...$,...H];for(const o of t)e.includes(o)&&(n.has(o)||(n.add(o),s.push(o)));for(const o of e)n.has(o)||(n.add(o),s.push(o));return s}const _={"claude-code":{displayNameKey:"conversation.providerClaude",fullDisplayNameKey:"shell.providerClaudeCode",draftTitleKey:"conversation.draftTitleClaude",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:Ne,defaultRunInputMode:"streaming_guidance",reasoningLevelPersists:!1,defaultReasoningLevel:void 0,supportsSlashMenuByDefault:!0,supportsRunSteeringByDefault:!0,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},"legna-code":{displayNameKey:"conversation.providerLegna",fullDisplayNameKey:"shell.providerLegnaCode",draftTitleKey:"conversation.draftTitleLegna",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:be,defaultRunInputMode:"streaming_guidance",reasoningLevelPersists:!1,defaultReasoningLevel:void 0,supportsSlashMenuByDefault:!0,supportsRunSteeringByDefault:!0,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},codex:{displayNameKey:"conversation.providerCodex",draftTitleKey:"conversation.draftTitleCodex",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:X,defaultRunInputMode:"streaming_guidance",reasoningLevelPersists:!0,defaultReasoningLevel:null,supportsSlashMenuByDefault:!1,supportsRunSteeringByDefault:!0,supportsQueueWhileRunningByDefault:!0,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!0},opencode:{displayNameKey:"conversation.providerOpenCode",draftTitleKey:"conversation.draftTitleOpenCode",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:Le,defaultRunInputMode:"none",reasoningLevelPersists:!1,defaultReasoningLevel:void 0,supportsSlashMenuByDefault:!1,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},gemini:{displayNameKey:"conversation.providerGemini",draftTitleKey:"conversation.draftTitleGemini",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:qe,defaultRunInputMode:"none",reasoningLevelPersists:!1,defaultReasoningLevel:null,supportsInterrupt:!0,supportsAttachments:!1,supportsPermissionPrompt:!1,supportsSlashMenuByDefault:!1,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!1},kimi:{displayNameKey:"conversation.providerKimi",draftTitleKey:"conversation.draftTitleKimi",defaultModelLabelKey:"conversation.modelUseCliDefault",icon:Ee,defaultRunInputMode:"none",reasoningLevelPersists:!1,defaultReasoningLevel:null,supportsInterrupt:!0,supportsAttachments:!1,supportsPermissionPrompt:!1,supportsSlashMenuByDefault:!1,supportsSessionDeleteByDefault:!0,foldRulesMessagesByDefault:!0}},Ue=Array.from(new Set(Object.values(_).map(e=>e.icon)));let Z=!1;function Te(e){return H.includes(e)}function f(e){return!e||!Te(e)?null:_[e]}function Me(e){return[{id:"provider-default",name:S(e),usesProviderDefault:!0}]}function Be(e){const n=f(e);return Me((n==null?void 0:n.defaultModelLabelKey)??"conversation.modelUseCliDefault")}function ns(e){return!!(e&&f(e))}function ss(e){const n=f(e);return S((n==null?void 0:n.draftTitleKey)??"conversation.draftTitleCodex")}function je(e,n="compact"){const s=f(e);return s?n==="full"&&s.fullDisplayNameKey?S(s.fullDisplayNameKey):S(s.displayNameKey):(e==null?void 0:e.trim())||S("conversation.providerCodex")}function ke(e){const n=f(e);return(n==null?void 0:n.icon)??X}function ee(){Z||typeof window>"u"||(Z=!0,Ue.forEach(e=>{const n=new window.Image;n.decoding="async",n.src=e,typeof n.decode=="function"&&n.decode().catch(()=>{})}))}function ts(e){const n=f(e);return{provider:e,canStartSession:!0,canResumeSession:!0,canSendMessage:!0,inRunInputMode:(n==null?void 0:n.defaultRunInputMode)??"none",supportsSubagents:!1,supportsInterrupt:(n==null?void 0:n.supportsInterrupt)??!1,supportsStructuredToolCalls:!0,supportsTokenUsage:!0,supportsAttachments:(n==null?void 0:n.supportsAttachments)??!0,supportsPermissionPrompt:(n==null?void 0:n.supportsPermissionPrompt)??!0,supportsCheckpoint:!1,supportsSessionDelete:(n==null?void 0:n.supportsSessionDeleteByDefault)??!1,modelOptions:Be(e),defaultReasoningLevel:n==null?void 0:n.defaultReasoningLevel,supportsRunSteering:n==null?void 0:n.supportsRunSteeringByDefault,supportsQueueWhileRunning:n==null?void 0:n.supportsQueueWhileRunningByDefault,limitations:[]}}function os(e){return(e==null?void 0:e.provider)??"claude-code"}function rs(e){var s;if((e==null?void 0:e.supportsSlashMenu)!==void 0)return e.supportsSlashMenu;const n=(e==null?void 0:e.provider)??null;return((s=f(n))==null?void 0:s.supportsSlashMenuByDefault)??!1}function is(e){var n;return(e==null?void 0:e.supportsReasoningSelector)!==void 0?e.supportsReasoningSelector:!!((n=e==null?void 0:e.modelOptions)!=null&&n.some(s=>{var t;return((t=s.supportedReasoningEfforts)==null?void 0:t.some(o=>xe.has(o)))??!1}))}function as(e,n){var a;if((e==null?void 0:e.supportsQueueWhileRunning)!==void 0)return e.supportsQueueWhileRunning;const s=(e==null?void 0:e.provider)??null,t=(a=f(s))==null?void 0:a.supportsQueueWhileRunningByDefault;if(t!==void 0)return t;const o=(e==null?void 0:e.inRunInputMode)??"none";return o==="queued_guidance"||o==="none"||o==="streaming_guidance"&&n===!1}function us(e){var s;if((e==null?void 0:e.supportsRunSteering)!==void 0)return e.supportsRunSteering;const n=(e==null?void 0:e.provider)??null;return((s=f(n))==null?void 0:s.supportsRunSteeringByDefault)??(e==null?void 0:e.inRunInputMode)==="streaming_guidance"}function ls(e){const n=f(e);return(n==null?void 0:n.reasoningLevelPersists)??!1}function ds(e,n){var t;return((t=f(n??null))==null?void 0:t.foldRulesMessagesByDefault)??!1}typeof window<"u"&&ee();function Ke(e,n=!0){const s=g.useMemo(()=>V(e),[e]),{items:t,loading:o,requested:a}=Oe(n),l=g.useMemo(()=>{if(!t)return a&&!o?s:[];const d=new Set(s),P=t.filter(p=>p.enabled&&d.has(p.provider)).map(p=>p.provider);return V(P)},[s,t]);return{providerCatalog:t,visibleProviders:l,loading:o,ready:t!==null||a&&!o}}const k=new Map;function cs(){k.clear()}function fs({disabled:e=!1,workspaceId:n=null,pendingProvider:s=null,selectedProvider:t=null,providers:o=$,className:a,disabledReasons:l,statusHintByProvider:d,onSelect:P}){const p=Re(),{visibleProviders:c,ready:w}=Ke(o),D=!!n,[y,m]=g.useState(()=>Y(c,n)),x=c.map(u=>({provider:u}));return g.useEffect(()=>{ee()},[]),g.useEffect(()=>{if(!w){m({});return}if(!n){m({});return}const u=Y(c,n);m(u);const A=c.filter(R=>!u[R]);if(A.length===0)return;let v=!1;return he(A,n).then(R=>{Je(n,R),v||m(U=>({...U,...R}))}),()=>{v=!0}},[w,c,n]),w?i.jsx("div",{className:`session-provider-grid${a?` ${a}`:""}`,children:x.map(u=>{const A=je(u.provider,"full"),v=s===u.provider,R=t===u.provider,U=!!y[u.provider],se=Fe(y[u.provider]??null),T=(l==null?void 0:l[u.provider])??se,K=v?S("shell.startingSession"):T||((d==null?void 0:d[u.provider])??(D&&!U&&!v?S("shell.providerChecking"):null));return i.jsxs("button",{type:"button",className:"session-provider-card","data-provider":u.provider,"data-pending":v?"true":"false","data-selected":R?"true":"false","aria-label":A,disabled:e||!!T,onClick:()=>{p.trigger("action"),P(u.provider)},children:[i.jsx("span",{className:"session-provider-card-icon","aria-hidden":"true",children:i.jsx("img",{src:ke(u.provider),alt:"",loading:"eager",decoding:"async"})}),i.jsxs("span",{className:"session-provider-card-copy",children:[i.jsx("strong",{children:A}),K?i.jsx("span",{className:"session-provider-card-status",children:K}):null]})]},u.provider)})}):i.jsx("div",{className:`session-provider-grid${a?` ${a}`:""}`,children:i.jsx("div",{className:"session-provider-card","aria-hidden":"true","data-placeholder":"true",children:i.jsx("span",{className:"session-provider-card-copy",children:i.jsx("strong",{children:S("shell.providerChecking")})})})})}function Fe(e){return!e||e.canStartSession!==!1?null:e.limitations[0]??S("conversation.capabilityDenied")}function Y(e,n){const s=(n==null?void 0:n.trim())??"";if(!s)return{};const t=[];for(const o of e){const a=k.get(ne(s,o));a&&t.push([o,a])}return Object.fromEntries(t)}function Je(e,n){const s=e.trim();if(s)for(const[t,o]of Object.entries(n))o&&k.set(ne(s,t),o)}function ne(e,n){return`${e}::${n}`}function ps(){const e=ie(s=>s),n=ae(s=>s);return Qe(e,n)}function Qe(e,n){var l;const s=ue(e);if(!s)return null;const t=!!((l=s.relayTunnel)!=null&&l.enabled),a=!(e.platform==="web"&&t)&&n.activeHostId===s.id&&n.candidateProbePhase==="ready"?Ge(n):null;if(a){const d=We(a.kind);return{kind:d,url:a.url,endpointId:a.endpointId,autoDirect:t&&d!=="relay",probeInProgress:!1}}return{kind:ze(s),url:s.baseUrl,endpointId:null,autoDirect:!1,probeInProgress:t&&n.activeHostId===s.id&&n.candidateProbePhase==="probing"}}function ms(e){switch(e){case"relay":return"common.connectionRouteRelay";case"lan":return"common.connectionRouteLan";case"loopback":return"common.connectionRouteLoopback";case"tailscale":return"common.connectionRouteTailscale";default:return"common.connectionRouteDirect"}}function Ge(e){const n=e.preferredDirectCandidateEndpointId??e.preferredCandidateEndpointId;return n?e.candidateEndpoints.find(s=>s.endpointId===n&&s.status==="verified")??null:null}function We(e){return e==="custom"?"direct":e}function ze(e){var n;if((n=e.relayTunnel)!=null&&n.enabled&&Ve(e.baseUrl,e.relayTunnel.tunnelDomain))return"relay";try{const s=new URL(e.baseUrl).hostname.toLowerCase();if(Ze(s))return"loopback";if(Ye(s))return"tailscale";if(Xe(s))return"lan"}catch{return"direct"}return e.kind==="local"?"loopback":e.kind==="lan"?"lan":"direct"}function Ve(e,n){try{return new URL(e).hostname.toLowerCase()===n.trim().toLowerCase()}catch{return!1}}function Ze(e){return e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="[::1]"}function Ye(e){if(e.endsWith(".ts.net"))return!0;const n=e.split(".").map(o=>Number(o));if(n.length!==4||n.some(o=>Number.isNaN(o)))return!1;const[s,t]=n;return s===100&&t>=64&&t<=127}function Xe(e){const n=e.split(".").map(o=>Number(o));if(n.length!==4||n.some(o=>Number.isNaN(o)))return!1;const[s,t]=n;return s===10||s===192&&t===168||s===172&&t>=16&&t<=31}function gs({open:e,title:n,description:s,height:t="auto",kind:o="form",dismissible:a=!0,closeOnBackdrop:l=!0,showHandle:d=!1,showCancelButton:P=!0,cancelLabel:p,className:c,cardClassName:w,bodyClassName:D,footer:y,onClose:m,children:x}){const u=g.useId(),A=g.useId(),v=a&&l;return!e||typeof document>"u"?null:de.createPortal(i.jsx("div",{className:"ios-action-sheet-overlay mobile-sheet-overlay",role:"presentation",onClick:()=>{v&&m()},children:i.jsxs("div",{className:`mobile-workspace-home-sheet mobile-sheet${c?` ${c}`:""}`,"data-height":t,"data-kind":o,role:"dialog","aria-modal":"true","aria-labelledby":u,"aria-describedby":s?A:void 0,onClick:R=>R.stopPropagation(),children:[i.jsxs("div",{className:`mobile-workspace-home-sheet-card mobile-sheet-card${w?` ${w}`:""}`,children:[d?i.jsx("div",{className:"mobile-sheet-handle","aria-hidden":"true"}):null,i.jsx("div",{className:"mobile-workspace-home-sheet-header mobile-sheet-header",children:i.jsxs("div",{className:"mobile-sheet-title-wrap",children:[i.jsx("strong",{id:u,children:n}),s?i.jsx("p",{id:A,children:s}):null]})}),i.jsx("div",{className:D?`mobile-sheet-body ${D}`:"mobile-sheet-body",children:x}),y?i.jsx("div",{className:"mobile-sheet-footer",children:y}):null]}),P?i.jsx("button",{type:"button",className:"ios-action-sheet-cancel mobile-sheet-cancel",disabled:!a,onClick:()=>{a&&m()},children:p??S("common.cancel")}):null]})}),document.body)}async function Ss(){return await r.request("/api/system/model-switch")}async function hs(e){return await r.request("/api/system/model-switch",{method:"POST",body:JSON.stringify(e)})}export{ls as $,Oe as A,kn as B,Kn as C,Fn as D,Qn as E,Gn as F,mn as G,Ln as H,Jn as I,Nn as J,bn as K,jn as L,gs as M,Un as N,ns as O,us as P,Rn as Q,yn as R,fs as S,Pn as T,ss as U,Hn as V,os as W,is as X,rs as Y,as as Z,En as _,je as a,qn as a0,ke as a1,ce as a2,ds as a3,xn as a4,dn as a5,sn as a6,nn as a7,cn as a8,Cn as a9,An as aa,vn as ab,Dn as ac,On as ad,In as ae,Sn as af,cs as ag,ln as ah,un as ai,hn as aj,gn as ak,wn as al,hs as am,_n as an,es as ao,we as ap,W as aq,pn as ar,on as b,rn as c,an as d,Re as e,zn as f,en as g,Vn as h,Yn as i,Xn as j,$n as k,ps as l,ms as m,Ke as n,$ as o,ts as p,Ss as q,tn as r,pe as s,he as t,Wn as u,Zn as v,Tn as w,Bn as x,Mn as y,fn as z};
@@ -1 +1 @@
1
- import{C as e}from"./index-NGxWr8Ix.js";const r="/api/preferences/profile";async function f(){return e.request(r)}async function o(t){return e.request(r,{method:"PUT",body:JSON.stringify(t)})}export{f as fetchPreferencesProfile,o as updatePreferencesProfile};
1
+ import{C as e}from"./index-CuzMc7q2.js";const r="/api/preferences/profile";async function f(){return e.request(r)}async function o(t){return e.request(r,{method:"PUT",body:JSON.stringify(t)})}export{f as fetchPreferencesProfile,o as updatePreferencesProfile};
@@ -1 +1 @@
1
- var Cn=Object.defineProperty;var jn=(s,r,l)=>r in s?Cn(s,r,{enumerable:!0,configurable:!0,writable:!0,value:l}):s[r]=l;var U=(s,r,l)=>jn(s,typeof r!="symbol"?r+"":r,l);import{t as o,b as n,j as t,u as kn,E as _t,a as js,m as ks,H as Sn,J as Pn,F as Rn}from"./index-NGxWr8Ix.js";import{g as Wt,e as Nn,f as En}from"./App-tXOqoHNl.js";import{e as Ln,W as qn,q as Ss,s as Ps,X as In,Y as Tn,n as An,p as Ut,a as Fs,P as On,Z as Fn,_ as _n,$ as Un,a0 as Bn,t as $n,M as zn,i as Dn,j as Rs,a1 as Hn}from"./model-switch-api-CPtou49j.js";import{W as Bt}from"./WorkbenchModal-BWXYSXmC.js";import{bd as Kn,be as Wn,bf as Vn,bg as Qn,Q as Ae,S as de,U as Ns,V as ue,X as mt,T as Es,R as ft,bh as ht,Y as Ls,aO as Gn,a7 as Oe}from"./WorkbenchLayout-DScHaza9.js";function $t(s,r){if(!s)return{allowed:!1,hidden:!1,reason:o("conversation.capabilityDenied")};switch(r){case"send_message":return s.canSendMessage===!1?{allowed:!1,hidden:!1,reason:o("conversation.capabilitySendDisabled")}:{allowed:!0,hidden:!1,reason:null};case"attachments":return s.supportsAttachments?{allowed:!0,hidden:!1,reason:null}:{allowed:!1,hidden:!1,reason:o("conversation.capabilityAttachmentDisabled")};case"interrupt":return s.supportsInterrupt?{allowed:!0,hidden:!1,reason:null}:{allowed:!1,hidden:!1,reason:o("conversation.capabilityInterruptDisabled")};default:return{allowed:!1,hidden:!1,reason:o("conversation.capabilityDenied")}}}const pt=12,te=16,Jn=640,zt=180;function Xn({provider:s,messages:r,variant:l="header"}){const[d,p]=n.useState(!1),[f,h]=n.useState(null),i=n.useId(),C=n.useRef(null),v=n.useRef(null),m=n.useMemo(()=>Kn(r,s),[r,s]);if(n.useLayoutEffect(()=>{if(!d)return;function M(){const S=C.current;if(!S)return;const x=S.getBoundingClientRect(),E=window.innerWidth,R=window.innerHeight,L=Math.min(Jn,Math.max(280,E-te*2)),q=x.left+x.width/2-L/2,G=Yn(q,te,Math.max(te,E-L-te));if(l==="header"){h({left:G,width:L,top:Math.min(x.bottom+pt,R-zt-te),maxHeight:Math.max(zt,R-x.bottom-pt-te)});return}h({left:G,width:L,bottom:Math.max(te,R-x.top+pt),maxHeight:Math.max(zt,x.top-pt-te)})}return M(),window.addEventListener("resize",M),window.addEventListener("scroll",M,!0),()=>{window.removeEventListener("resize",M),window.removeEventListener("scroll",M,!0)}},[d,l]),n.useEffect(()=>{if(!d)return;function M(x){const E=C.current,R=v.current,L=x.target;L instanceof Node&&(E!=null&&E.contains(L)||R!=null&&R.contains(L)||p(!1))}function S(x){x.key==="Escape"&&p(!1)}return document.addEventListener("pointerdown",M),document.addEventListener("keydown",S),()=>{document.removeEventListener("pointerdown",M),document.removeEventListener("keydown",S)}},[d]),!m||m.items.length===0)return null;const $=Wn(m.items),V=$.in_progress||$.pending,N=V>0?V:m.items.length,g=l==="composer"?"conversation-task-progress-button composer-task-progress-button":"conversation-header-ai-button conversation-task-progress-button",y=d&&f?Wt.createPortal(t.jsx("div",{id:i,ref:v,className:"conversation-task-progress-popover",role:"region","aria-label":o("conversation.taskProgressModalTitle"),style:{left:f.left,width:f.width,maxHeight:f.maxHeight,top:f.top,bottom:f.bottom},children:t.jsx(Vn,{snapshot:m,className:"conversation-task-progress-popover-card"})}),document.body):null;return t.jsxs("div",{className:"conversation-task-progress-entry","data-variant":l,ref:C,children:[t.jsxs("button",{type:"button",className:g,"data-variant":l,"aria-label":o("conversation.taskProgressButton",{count:m.items.length}),"aria-expanded":d,"aria-controls":d?i:void 0,title:o("conversation.taskProgressButton",{count:m.items.length}),onClick:()=>{p(M=>!M)},children:[t.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:t.jsx(Qn,{})}),t.jsx("span",{className:"conversation-task-progress-badge",children:N})]}),y]})}function Yn(s,r,l){return Math.min(Math.max(s,r),l)}const Zn="codingns.conversation.composer-draft:",eo=1,to=[{id:"builtin-stage-and-summarize",text:"请将本次会话变更的所有代码提交到git暂存区,然后总结一条中文的提交信息"},{id:"builtin-review-module",text:"分析本项目 模块的代码实现,并分析存在的问题"},{id:"builtin-group-commits",text:"分析当前项目中的未提交文件,按照功能模块进行分类提交,提交信息格式请参考我最近的提交记录"}];function Vt(){return typeof window<"u"&&typeof window.localStorage<"u"}function so(s){if(!s||typeof s!="object")return null;const r="id"in s?s.id:null,l="fileName"in s?s.fileName:null,d="mimeType"in s?s.mimeType:null,p="fileSize"in s?s.fileSize:null,f="lastModified"in s?s.lastModified:null,h="contentBase64"in s?s.contentBase64:null;if(typeof r!="string"||typeof l!="string"||typeof d!="string"||typeof p!="number"||typeof f!="number"||typeof h!="string")return null;const i=r.trim(),C=l.trim(),v=d.trim(),m=h.trim();return!i||!C||!v||p<0||f<0||!m?null:{id:i,fileName:C,mimeType:v,fileSize:p,lastModified:f,contentBase64:m}}function no(s){if(!s||typeof s!="object")return null;const r="content"in s?s.content:null,l="attachments"in s?s.attachments:null;if(typeof r!="string"||!Array.isArray(l))return null;const d=l.map(p=>so(p)).filter(p=>p!==null);return d.length!==l.length||r.length===0&&d.length===0?null:{content:r,attachments:d}}function Fe(s){return`${Zn}${s}`}function oo(s){var r,l;return{id:((l=(r=globalThis.crypto)==null?void 0:r.randomUUID)==null?void 0:l.call(r))??`phrase-${Date.now()}-${Math.random().toString(16).slice(2)}`,text:s.trim()}}function ro(s){if(!Vt())return null;const r=s.trim();if(!r)return null;const l=window.localStorage.getItem(Fe(r));if(!l)return null;try{const d=JSON.parse(l),p=d&&typeof d=="object"&&"draft"in d&&d.draft&&typeof d.draft=="object"?d.draft:d,f=no(p);return f||(window.localStorage.removeItem(Fe(r)),null)}catch{return window.localStorage.removeItem(Fe(r)),null}}function io(s,r){if(!Vt())return!1;const l=s.trim();if(!l)return!1;if(r.content.length===0&&r.attachments.length===0)return _s(l),!0;try{return window.localStorage.setItem(Fe(l),JSON.stringify({schemaVersion:eo,draft:r})),!0}catch{return!1}}function _s(s){if(!Vt())return;const r=s.trim();r&&window.localStorage.removeItem(Fe(r))}const qs="workbench:focus-composer",ao=["codex","claude-code","opencode","gemini","kimi"],lo=new Set(["codex","claude-code","opencode"]),co=new Set(["codex","claude-code","opencode"]),Is={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},ye=new Map;function uo(s){return[{id:ft,name:o("conversation.modelUseCliDefault"),provider:s,usesProviderDefault:!0}]}function Ts(s){return uo(s)}function mo(){var s,r;return((r=(s=globalThis.crypto)==null?void 0:s.randomUUID)==null?void 0:r.call(s))??`${Date.now()}-${Math.random().toString(16).slice(2)}`}function As(s){if(s){s.value="";try{const r=s.showPicker;if(typeof r=="function"){r.call(s);return}}catch{}s.click()}}function ho(s,r,l,d){const p=globalThis.atob(l),f=Uint8Array.from(p,h=>h.charCodeAt(0));return new File([f],s,{type:r,lastModified:d})}function po(s){return s.trim().toLowerCase().startsWith("image/")}function _e(s){const r=s.type.trim().toLowerCase();return r.length>0?r:"application/octet-stream"}function Us(s){return po(_e(s))?"image":"file"}function Bs(s,r=mo()){const l=Us(s);return{id:r,file:s,kind:l,previewUrl:l==="image"?URL.createObjectURL(s):null}}function fo(s){const r=ho(s.fileName,s.mimeType,s.contentBase64,s.lastModified);return Bs(r,s.id)}function vo(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/(1024*1024)).toFixed(1)} MB`}function go(s){const r=s.trim().replace(/\s+/g," ");return r.length===0?o("conversation.forkDraftEmpty"):r.length>140?`${r.slice(0,140)}…`:r}function bo(s,r){return r===s?co.has(r)?null:o("conversation.forkProviderNativeUnsupported"):lo.has(r)?null:o("conversation.forkProviderReconstructedUnsupported")}function $s(s){return(s==null?void 0:s.canStartSession)===!1}function xo(s){return $s(s)?(s==null?void 0:s.limitations[0])??o("conversation.capabilityDenied"):null}function yo(s,r){return{id:r,kind:Us(s),fileName:s.name,mimeType:_e(s),fileSize:s.size}}function Os(s){return new Promise((r,l)=>{const d=new FileReader;d.onerror=()=>{l(d.error??new Error("FILE_READ_FAILED"))},d.onload=()=>{const p=typeof d.result=="string"?d.result:"",f=p.includes(",")?p.split(",").at(-1)??"":p;r(f)},d.readAsDataURL(s)})}function wo(s){s.forEach(r=>{r.previewUrl&&URL.revokeObjectURL(r.previewUrl)})}function Mo(s,r){const l=new Set(s.map(p=>`${p.file.name}:${p.file.size}:${p.file.lastModified}`)),d=[...s];return r.forEach(p=>{const f=`${p.name}:${p.size}:${p.lastModified}`;l.has(f)||(l.add(f),d.push(Bs(p)))}),d}function Co(s,r,l){const d=s.nativeEvent;return d.isComposing||d.keyCode===229||r||l}function Do({capabilities:s,placeholder:r,draftStorageId:l,initialModel:d=null,workspaceId:p=null,initialProviderConfigMode:f="global-default",initialProviderPresetId:h=null,forkDraft:i=null,onClearForkDraft:C,onForkDraftChange:v,panelRef:m,portalContainer:$=null,hasActiveRun:V=null,canInterrupt:N=null,contextUsage:g=null,taskProvider:y=null,taskMessages:M=[],hasPendingQueuedMessages:S=!1,isSubmitting:x,isRunning:E=!1,onInterrupt:R,onQueueSend:L,onSend:we}){const q=Nn(),G=n.useId(),zs=n.useId(),[J,me]=n.useState(""),[z,Me]=n.useState(""),[he,Ue]=n.useState("medium"),[X,Ce]=n.useState([]),[Ds,pe]=n.useState(!1),[Be,$e]=n.useState(!1),[I,ze]=n.useState(to),[Hs,De]=n.useState(!1),[Ks,fe]=n.useState(!1),[He,Qt]=n.useState(""),[je,Gt]=n.useState(!1),[Ws,D]=n.useState(!1),[Jt,Xt]=n.useState(!1),[vt,Yt]=n.useState(!1),[se,Ke]=n.useState(null),[Vs,gt]=n.useState(!1),[bt,xt]=n.useState(null),[Zt,yt]=n.useState(!1),es=n.useMemo(()=>Ae(f,h),[f,h]),[F,ke]=n.useState(es.providerConfigMode),[H,We]=n.useState(es.providerPresetId),ne=n.useMemo(()=>Ae(F,H),[F,H]),[wt,Se]=n.useState(null),[Mt,Ve]=n.useState(!1),[oe,Pe]=n.useState(null),[Qs,Qe]=n.useState(!1),[Ge,K]=n.useState("global-default"),[Re,Q]=n.useState(null),[Je,Ct]=n.useState({}),[Xe,Ye]=n.useState(null),Ne=n.useRef(null),jt=n.useRef(null),ts=n.useRef(null),kt=n.useRef(!1),St=n.useRef(!1),Ze=n.useRef(!1),Ee=n.useRef(null),Y=n.useRef(new Set),re=n.useRef(new Map),Pt=n.useRef(0),et=n.useRef(null),{showToast:Le}=En(),tt=Ln(),Rt=n.useCallback(()=>{Ee.current!==null&&(globalThis.clearTimeout(Ee.current),Ee.current=null),Ze.current=!1},[]);n.useEffect(()=>Rt,[Rt]);const w=(s==null?void 0:s.provider)??y??qn(s),ve=de(w),ge=kn(e=>_t(w)?e.profile.providers[w]:null),qe=(ge==null?void 0:ge.defaultModel)??null,Ie=(ge==null?void 0:ge.defaultReasoningLevel)??null;n.useEffect(()=>{const e=Ae(f,h);ke(e.providerConfigMode),We(e.providerPresetId)},[l,f,h,w]),n.useEffect(()=>{if(!i){K("global-default"),Q(null);return}if(de(i.targetProvider)){const e=Ae(i.targetProviderConfigMode,i.targetProviderPresetId);K(e.providerConfigMode),Q(e.providerPresetId);return}K("global-default"),Q(null)},[i]),n.useEffect(()=>{if(!ve){Ke(null),gt(!1);return}const e=ye.get(ve)??null;e&&Ke(e);let a=!1;return gt(!e),Ss().then(c=>{c.items.forEach(u=>{ye.set(u.app,u)}),a||Ke(ye.get(ve)??null)}).catch(()=>{!a&&!e&&Ke(null)}).finally(()=>{a||gt(!1)}),()=>{a=!0}},[ve]),n.useEffect(()=>{const e=i?de(i.targetProvider):null;if(!e){Pe(null),Qe(!1);return}const a=ye.get(e)??null;a&&Pe(a);let c=!1;return Qe(!a),Ss().then(u=>{u.items.forEach(b=>{ye.set(b.app,b)}),c||Pe(ye.get(e)??null)}).catch(()=>{!c&&!a&&Pe(null)}).finally(()=>{c||Qe(!1)}),()=>{c=!0}},[i]),n.useEffect(()=>{if(F==="cc-switch-preset"){if(!H){ke("global-default");return}se&&!se.options.some(e=>e.id===H)&&(ke("global-default"),We(null))}},[se,F,H]),n.useEffect(()=>{if(F!=="cc-switch-preset"||!H||!(p!=null&&p.trim())){xt(null),yt(!1);return}let e=!1;return yt(!0),Ps(w,p,{providerConfigMode:"cc-switch-preset",providerPresetId:H}).then(a=>{e||xt(a)}).catch(()=>{e||xt(null)}).finally(()=>{e||yt(!1)}),()=>{e=!0}},[w,F,H,p]),n.useEffect(()=>{if(!(!i||Ge!=="cc-switch-preset")){if(!Re){K("global-default");return}oe&&!oe.options.some(e=>e.id===Re)&&(K("global-default"),Q(null))}},[oe,i,Ge,Re]);const Nt=n.useMemo(()=>$t(s,"send_message"),[s]),ss=n.useMemo(()=>$t(s,"interrupt"),[s]),T=n.useMemo(()=>$t(s,"attachments"),[s]),be=n.useMemo(()=>F!=="cc-switch-preset"?s:bt??s,[s,bt,F]),B=n.useMemo(()=>{var a;const e=(a=be==null?void 0:be.modelOptions)==null?void 0:a.map(c=>{var u;return{...c,provider:w,supportedReasoningEfforts:(u=c.supportedReasoningEfforts)==null?void 0:u.filter(b=>b==="low"||b==="medium"||b==="high"||b==="xhigh")}});return e!=null&&e.length?e:Ts(w)},[be==null?void 0:be.modelOptions,w]),st=n.useMemo(()=>Ns(se),[se]),Et=F==="cc-switch-preset"?H??ue:ue,ie=n.useMemo(()=>st.find(e=>e.value===Et)??st[0]??null,[st,Et]),A=n.useMemo(()=>B.find(e=>e.id===z)??null,[B,z]),nt=In(s),Gs=Tn(s),Lt=n.useMemo(()=>[{value:"low",label:o("conversation.reasoningLow")},{value:"medium",label:o("conversation.reasoningMedium")},{value:"high",label:o("conversation.reasoningHigh")},{value:"xhigh",label:o("conversation.reasoningMaximum")}],[]),W=n.useMemo(()=>{if(!nt)return[];const e=A==null?void 0:A.supportedReasoningEfforts;return!e||e.length===0?Lt:Lt.filter(a=>e.includes(a.value))},[nt,Lt,A==null?void 0:A.supportedReasoningEfforts]),ns=n.useMemo(()=>B.map(e=>({value:e.id,label:mt(e)?o("conversation.modelUseCliDefault"):e.name})),[B]),qt=n.useMemo(()=>Es(se),[se]),Js=n.useMemo(()=>{const e=A?mt(A)?o("conversation.modelUseCliDefault"):A.name:o("conversation.modelUseCliDefault");return qt?`${(ie==null?void 0:ie.label)??o("conversation.deploymentDefaultPreset")} · ${e}`:e},[A,ie,qt]),Xs=n.useMemo(()=>W.map(e=>({value:e.value,label:e.label})),[W]),Ys=n.useMemo(()=>[{command:"/plan",label:o("conversation.slashCommandPlan")},{command:"/review",label:o("conversation.slashCommandReview")},{command:"/explain",label:o("conversation.slashCommandExplain")}],[]),os=(s==null?void 0:s.inRunInputMode)??"none",_=!!i,{visibleProviders:ot}=An(ao,_),rs=(i==null?void 0:i.targetProvider)??null,Zs=de(rs),O=n.useMemo(()=>Ae(Ge,Re),[Ge,Re]),rt=!!i&&(s==null?void 0:s.provider)===rs&&ne.providerConfigMode===O.providerConfigMode&&ne.providerPresetId===O.providerPresetId,Z=n.useMemo(()=>i?rt?s:wt??Ut(i.targetProvider):null,[s,wt,i,rt]),ee=n.useMemo(()=>{var a;if(!i)return[];const e=(a=Z==null?void 0:Z.modelOptions)==null?void 0:a.map(c=>{var u;return{...c,provider:i.targetProvider,supportedReasoningEfforts:(u=c.supportedReasoningEfforts)==null?void 0:u.filter(b=>b==="low"||b==="medium"||b==="high"||b==="xhigh")}});return e!=null&&e.length?e:Ts(i.targetProvider)},[Z==null?void 0:Z.modelOptions,i]),is=n.useMemo(()=>ee.map(e=>({value:e.id,label:mt(e)?o("conversation.modelUseCliDefault"):e.name})),[ee]),it=n.useMemo(()=>!i||!i.targetModel?ft:ee.some(e=>e.id===i.targetModel)?i.targetModel:ft,[ee,i]),at=n.useMemo(()=>Ns(oe),[oe]),It=O.providerConfigMode==="cc-switch-preset"?O.providerPresetId??ue:ue,ae=n.useMemo(()=>at.find(e=>e.value===It)??at[0]??null,[at,It]),lt=n.useMemo(()=>ee.find(e=>e.id===it)??null,[ee,it]),Tt=n.useMemo(()=>Es(oe),[oe]),en=n.useMemo(()=>{const e=lt?mt(lt)?o("conversation.modelUseCliDefault"):lt.name:o("conversation.modelUseCliDefault");return Tt?`${(ae==null?void 0:ae.label)??o("conversation.deploymentDefaultPreset")} · ${e}`:e},[lt,ae,Tt]),le=n.useMemo(()=>i?ot.filter(e=>bo(i.sourceProvider,e)!==null?!1:!$s(Je[e]??null)):[],[i,Je,ot]),as=n.useMemo(()=>i?le.length>0?le:[i.targetProvider]:[],[i,le]),tn=n.useMemo(()=>as.map(e=>({value:e,label:Fs(e,"full")})),[as]),ct=n.useMemo(()=>i?xo(Je[i.targetProvider]??Z??null):null,[Z,i,Je]),dt=V??null,ce=E||dt===!0,sn=ce&&os==="streaming_guidance"&&dt===!1&&!On(s),ls=!_&&ce&&os==="streaming_guidance"&&!sn,At=!_&&ce&&typeof L=="function"&&Fn(s,dt),P=!_&&ce&&!ls&&!At,Ot=_&&!!ct,cs=J.trim().length>0||X.length>0,ds=N===!1&&dt===!0?ss.allowed:N??ss.allowed,Ft=ce&&ds&&!!R&&!Jt,nn=!cs&&(vt||x||ce||S),us=Ft?o("conversation.capabilityInterrupt"):o("conversation.runtimeRunning"),ms=ce?At?o("conversation.queueGuidanceButton"):ls?o("conversation.sendGuidanceButton"):o("conversation.sendButton"):o("conversation.sendButton"),hs=n.useCallback(e=>{Me(e),_t(w)&&js({providers:{[w]:{defaultModel:e}}}).catch(()=>{})},[w]),on=n.useCallback(e=>{if(e==="__global_default__"){ke("global-default"),We(null);return}ke("cc-switch-preset"),We(e)},[]),rn=n.useCallback(e=>{Ue(e),_t(w)&&js({providers:{[w]:{defaultReasoningLevel:e}}}).catch(()=>{})},[w]),ut=n.useCallback(e=>{Y.current.forEach(a=>{URL.revokeObjectURL(a)}),Y.current.clear(),e.forEach(a=>{a.previewUrl&&Y.current.add(a.previewUrl)}),Ce(e)},[]),Te=n.useCallback(e=>{e.length!==0&&Ce(a=>{const c=Mo(a,e);return c.forEach(u=>{u.previewUrl&&Y.current.add(u.previewUrl)}),c})},[]),an=n.useCallback(e=>{re.current.delete(e),Ce(a=>{const c=a.find(u=>u.id===e);return c!=null&&c.previewUrl&&(Y.current.delete(c.previewUrl),URL.revokeObjectURL(c.previewUrl)),a.filter(u=>u.id!==e)})},[]),ps=n.useCallback(e=>{const a=Array.from(e.target.files??[]);a.length>0&&Te(a),e.target.value=""},[Te]),ln=n.useCallback(e=>{var c;q.isMobile||!T.allowed||P||!((((c=e.dataTransfer.files)==null?void 0:c.length)??0)>0||Array.from(e.dataTransfer.items??[]).some(u=>u.kind==="file"))||(e.preventDefault(),e.dataTransfer.dropEffect="copy",Be||$e(!0),D(!1))},[T.allowed,Be,P,q.isMobile]),cn=n.useCallback(e=>{const a=e.relatedTarget;a instanceof Node&&e.currentTarget.contains(a)||$e(!1)},[]),dn=n.useCallback(e=>{if(q.isMobile||!T.allowed||P)return;const a=Array.from(e.dataTransfer.files??[]);a.length!==0&&(e.preventDefault(),$e(!1),Te(a))},[T.allowed,P,Te,q.isMobile]),fs=n.useCallback(e=>{if(!T.allowed||P)return;const a=e==="camera"?ts.current:jt.current;As(a),pe(!1)},[T.allowed,P]),un=n.useCallback(()=>{if(!(!T.allowed||P)){if(D(!1),q.isNativeMobile){tt.trigger("selection"),pe(!0);return}As(jt.current)}},[T.allowed,tt,P,q.isNativeMobile]),mn=n.useCallback(()=>{D(e=>!e)},[]),hn=n.useCallback(e=>{var a;me(c=>c.trimStart().startsWith(e)?c:c.trim()?`${e} ${c.trim()}`:`${e} `),D(!1),(a=Ne.current)==null||a.focus()},[]),xe=n.useCallback(async e=>{const a=I;Pt.current+=1,ze(e),Gt(!0);try{const c=await _n(e.map(u=>({id:u.id,text:u.text})));return ze(c.items.map(u=>({id:u.id,text:u.text}))),!0}catch(c){return ze(a),Le({title:c instanceof Error?c.message:o("conversation.quickPhraseSaveFailed"),tone:"error"}),!1}finally{Gt(!1)}},[I,Le]),pn=n.useCallback(async()=>{const e=He.trim();!e||!await xe([...I,oo(e)])||(Qt(""),fe(!1))},[xe,He,I]),fn=n.useCallback(e=>{xe(I.filter(a=>a.id!==e))},[xe,I]),vs=n.useCallback((e,a)=>{const c=I.findIndex(k=>k.id===e);if(c<0)return;const u=c+a;if(u<0||u>=I.length)return;const b=[...I],[j]=b.splice(c,1);b.splice(u,0,j),xe(b)},[xe,I]),vn=n.useCallback(e=>{var a;me(e),De(!1),(a=Ne.current)==null||a.focus()},[]),gs=n.useCallback(e=>{const a=e?ro(e):null,c=(a==null?void 0:a.attachments.map(u=>fo(u)))??[];re.current=new Map(((a==null?void 0:a.attachments)??[]).map(u=>[u.id,u])),ut(c),me((a==null?void 0:a.content)??""),D(!1)},[ut]);n.useEffect(()=>{if(!B.length)return;const e=(d==null?void 0:d.trim())||null,a=`${l??"default"}:${w}:${e??""}`;if(!!(e&&B.some(b=>b.id===e))){if(et.current!==a){et.current=a,z!==e&&Me(e);return}if(B.some(b=>b.id===z))return;Me(e);return}if(!e&&et.current!==a&&(et.current=a),qe&&B.some(b=>b.id===qe)){z!==qe&&Me(qe);return}if(B.some(b=>b.id===z))return;const u=B[0].id;Me(u)},[B,l,w,z,qe,d]),n.useEffect(()=>{if(!Un(w)||W.length===0)return;if(Ie&&W.some(c=>c.value===Ie)){he!==Ie&&Ue(Ie);return}const e=s==null?void 0:s.defaultReasoningLevel;if(e&&W.some(c=>c.value===e)){he!==e&&Ue(e);return}if(W.some(c=>c.value===he))return;const a=W[0].value;Ue(a)},[W,s==null?void 0:s.defaultReasoningLevel,w,he,Ie]),n.useEffect(()=>{let e=!1;const a=Pt.current;return Bn().then(c=>{e||Pt.current!==a||ze(c.items.map(u=>({id:u.id,text:u.text})))}).catch(()=>{}),()=>{e=!0}},[]),n.useEffect(()=>{gs(l)},[l,gs]),n.useEffect(()=>{if(!l)return;const e=l,a=new Set(X.map(b=>b.id));re.current.forEach((b,j)=>{a.has(j)||re.current.delete(j)});let c=!1;async function u(){if(J.length===0&&X.length===0){_s(e);return}const b=await Promise.all(X.map(async j=>{const k=re.current.get(j.id);return k&&k.fileName===j.file.name&&k.fileSize===j.file.size&&k.lastModified===j.file.lastModified&&k.mimeType===_e(j.file)?k:{id:j.id,fileName:j.file.name,mimeType:_e(j.file),fileSize:j.file.size,lastModified:j.file.lastModified,contentBase64:await Os(j.file)}}));c||(re.current=new Map(b.map(j=>[j.id,j])),io(e,{content:J,attachments:b}))}return u(),()=>{c=!0}},[X,J,l]),n.useEffect(()=>{const e=Ne.current;e&&(e.style.height="0px",e.style.height=`${Math.min(e.scrollHeight,120)}px`)},[J]),n.useEffect(()=>{T.allowed||(re.current.clear(),pe(!1),ut([]))},[T.allowed,ut]),n.useEffect(()=>{q.isMobile||pe(!1)},[q.isMobile]),n.useEffect(()=>()=>{Y.current.forEach(e=>{URL.revokeObjectURL(e)}),Y.current.clear()},[]),n.useEffect(()=>{function e(){var a;(a=Ne.current)==null||a.focus()}return window.addEventListener(qs,e),()=>{window.removeEventListener(qs,e)}},[]),n.useEffect(()=>{if(!i){Se(null),Ve(!1),Pe(null),Qe(!1),Ct({}),Ye(null);return}if(rt){Se(null),Ve(!1);return}let e=!1;return Se(Ut(i.targetProvider)),Ve(!0),Ps(i.targetProvider,i.workspaceId,{providerConfigMode:O.providerConfigMode,providerPresetId:O.providerConfigMode==="cc-switch-preset"?O.providerPresetId:null}).then(a=>{e||Se(a)}).catch(()=>{e||Se(Ut(i.targetProvider))}).finally(()=>{e||Ve(!1)}),()=>{e=!0}},[i,O.providerConfigMode,O.providerPresetId,rt]),n.useEffect(()=>{if(!i){Ct({});return}let e=!1;return $n(ot,i.workspaceId).then(a=>{e||Ct(a)}),()=>{e=!0}},[i==null?void 0:i.workspaceId,ot]),n.useEffect(()=>{!i||!v||le.length!==0&&(le.includes(i.targetProvider)||v({...i,targetProvider:le[0]??i.targetProvider,targetModel:null,targetProviderConfigMode:"global-default",targetProviderPresetId:null}))},[i,v,le]),n.useEffect(()=>{!i||!i.targetModel||!v||ee.some(e=>e.id===i.targetModel)||v({...i,targetModel:null})},[ee,i,v]);const gn=n.useCallback(e=>{if(!(!i||!v||e===i.targetProvider)){if(e!==i.sourceProvider&&i.targetProvider===i.sourceProvider){Ye(e);return}e===w&&de(e)?(K(ne.providerConfigMode),Q(ne.providerPresetId)):(K("global-default"),Q(null)),v({...i,targetProvider:e,targetModel:null,targetProviderConfigMode:e===w&&de(e)?ne.providerConfigMode:"global-default",targetProviderPresetId:e===w&&de(e)?ne.providerPresetId:null})}},[ne,i,v,w]),bs=n.useCallback(e=>{!i||!v||v({...i,targetModel:e===ft?null:e})},[i,v]),bn=n.useCallback(e=>{!i||!v||(e===ue?(K("global-default"),Q(null)):(K("cc-switch-preset"),Q(e)),v({...i,targetModel:null,targetProviderConfigMode:e===ue?"global-default":"cc-switch-preset",targetProviderPresetId:e===ue?null:e}))},[i,v]),xn=n.useCallback(()=>{!i||!Xe||!v||(K("global-default"),Q(null),v({...i,targetProvider:Xe,targetModel:null,targetProviderConfigMode:"global-default",targetProviderPresetId:null}),Ye(null))},[i,v,Xe]),xs=n.useCallback(()=>{Ye(null)},[]);async function yn(e){if(kt.current)return;const a=J.trim(),c=X;if(a.length===0&&c.length===0||!Nt.allowed||P||Ot){Le({title:P?o("conversation.runtimeRunning"):ct??Nt.reason??o("conversation.capabilityDenied"),tone:"error"});return}kt.current=!0,tt.trigger(e==="queue"?"selection":"action"),Yt(!0),me(""),Ce([]),pe(!1),$e(!1),De(!1),fe(!1),D(!1);try{const u=await Promise.all(c.map(async k=>({kind:k.kind,fileName:k.file.name,mimeType:_e(k.file),fileSize:k.file.size,contentBase64:await Os(k.file)}))),b=c.map(k=>yo(k.file,k.id));await(e==="queue"&&L?L:we)(a,{model:_||A!=null&&A.usesProviderDefault?void 0:z||void 0,reasoningLevel:_?void 0:nt&&W.length>0?he:void 0,providerConfigMode:_?O.providerConfigMode:F,providerPresetId:_?O.providerConfigMode==="cc-switch-preset"?O.providerPresetId:null:F==="cc-switch-preset"?H:null,attachments:u,attachmentMeta:b}),wo(c),c.forEach(k=>{k.previewUrl&&Y.current.delete(k.previewUrl)})}catch(u){me(a),Ce(c),Le({title:u instanceof Error&&u.message==="FILE_READ_FAILED"?o("conversation.attachmentReadFailed"):u instanceof Error?u.message:o("conversation.capabilityDenied"),tone:"error"})}finally{Yt(!1),kt.current=!1}}async function ys(e){e.preventDefault(),await yn(At?"queue":"send")}async function wn(){if(!(!ds||!R||Jt))try{Xt(!0),tt.trigger("action"),await R()}catch(e){Le({title:e instanceof Error?e.message:o("conversation.capabilityInterruptDisabled"),tone:"error"})}finally{Xt(!1)}}const ws=vt||x||P||Ot||!Nt.allowed||!cs,Ms=vt||x||P||!T.allowed,Mn=J.length===0&&!P,Cs=t.jsxs("section",{ref:m,className:"composer-panel",children:[t.jsxs("form",{className:"composer-form",onSubmit:ys,children:[t.jsx("input",{id:G,ref:jt,type:"file",multiple:!0,tabIndex:-1,"aria-hidden":"true",style:Is,onChange:ps}),t.jsx("input",{id:zs,ref:ts,type:"file",accept:"image/*",capture:"environment",tabIndex:-1,"aria-hidden":"true",style:Is,onChange:ps}),t.jsxs("div",{className:"composer-input-container","data-drag-active":Be?"true":void 0,onDragOver:ln,onDragLeave:cn,onDrop:dn,children:[i?t.jsxs("div",{className:"composer-fork-draft",children:[t.jsxs("div",{className:"composer-fork-draft-main",children:[t.jsxs("div",{className:"composer-fork-draft-copy",children:[t.jsx("span",{className:"composer-fork-draft-label",children:o("conversation.forkDraftLabel")}),t.jsx("span",{className:"composer-fork-draft-text",children:go(i.content)})]}),t.jsxs("div",{className:"composer-fork-config",children:[t.jsxs("div",{className:"composer-fork-config-grid",children:[t.jsxs("div",{className:"composer-fork-field",children:[t.jsx("span",{className:"composer-fork-model-label",children:o("conversation.forkTargetProviderLabel")}),t.jsx(ht,{ariaLabel:o("conversation.forkTargetProviderLabel"),value:i.targetProvider,options:tn,onChange:e=>gn(e),compact:!0})]}),t.jsxs("div",{className:"composer-fork-field",children:[t.jsx("span",{className:"composer-fork-model-label",children:o("conversation.forkTargetModelLabel")}),Zs?t.jsx(Ls,{ariaLabel:o("conversation.forkTargetModelLabel"),triggerLabel:en,presetOptions:at,selectedPresetValue:It,selectedPresetSummary:(ae==null?void 0:ae.summary)??null,onSelectPreset:bn,modelOptions:is,selectedModelValue:it,onSelectModel:bs,loadingPresets:Qs,loadingModels:Mt,modelColumnDisabled:O.providerConfigMode==="cc-switch-preset"&&Mt&&wt===null,showPresetColumn:Tt,modelEmptyText:o("conversation.deploymentModelEmpty")}):t.jsx(ht,{ariaLabel:o("conversation.forkTargetModelLabel"),value:it,options:is,onChange:bs,disabled:Mt||Ot,compact:!0})]})]}),ct?t.jsx("p",{className:"composer-capability-hint",children:ct}):null]})]}),C?t.jsx("button",{type:"button",className:"composer-fork-draft-clear","aria-label":o("conversation.forkDraftClear"),title:o("conversation.forkDraftClear"),onClick:C,children:t.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}):null]}):null,X.length>0?t.jsx("div",{className:"composer-attachments",children:X.map(e=>t.jsxs("div",{className:"composer-attachment-card",children:[e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:o("conversation.attachmentPreviewAlt"),className:"composer-attachment-preview"}):t.jsx("div",{className:"composer-attachment-file","aria-hidden":"true",children:t.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[t.jsx("path",{d:"M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7z"}),t.jsx("path",{d:"M14 2v5h5"}),t.jsx("path",{d:"M9 13h6"}),t.jsx("path",{d:"M9 17h6"})]})}),t.jsxs("div",{className:"composer-attachment-meta",children:[t.jsx("span",{className:"attachment-name",title:e.file.name,children:e.file.name}),t.jsx("span",{className:"attachment-size",children:vo(e.file.size)})]}),t.jsx("button",{type:"button",className:"attachment-remove",onClick:()=>an(e.id),"aria-label":o("conversation.removeAttachment"),children:t.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},e.id))}):null,Be?t.jsx("div",{className:"composer-drop-hint",children:o("conversation.attachmentDropHint")}):null,t.jsxs("div",{className:"composer-input-wrapper",children:[t.jsx("textarea",{ref:Ne,className:"composer-input",value:J,placeholder:r??o("conversation.composerPlaceholder"),readOnly:P,"aria-readonly":P,onChange:e=>me(e.target.value),rows:1,onFocus:()=>D(!1),onCompositionStart:()=>{Rt(),St.current=!0},onCompositionEnd:()=>{St.current=!1,Ze.current=!0,Ee.current=globalThis.setTimeout(()=>{Ze.current=!1,Ee.current=null},0)},onPaste:e=>{if(P||!T.allowed)return;const a=Array.from(e.clipboardData.items).filter(c=>c.kind==="file").map(c=>c.getAsFile()).filter(c=>!!c);a.length!==0&&(e.preventDefault(),Te(a))},onKeyDown:e=>{if(e.key==="Escape"&&D(!1),e.key==="Enter"&&!e.shiftKey){if(Co(e,St.current,Ze.current))return;e.preventDefault(),ws||ys(e)}}}),t.jsx("div",{className:"composer-input-actions",children:nn?t.jsx("button",{className:"composer-send composer-send-busy",type:"button",disabled:!Ft,onClick:()=>{Ft&&wn()},"aria-label":us,title:us,children:t.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:t.jsx("rect",{x:"6",y:"6",width:"12",height:"12"})})}):t.jsx("button",{className:"composer-send",type:"submit",disabled:ws,"aria-label":ms,title:ms,children:t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[t.jsx("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),t.jsx("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})})]}),Ws?t.jsx("div",{className:"composer-slash-menu",role:"menu","aria-label":o("conversation.slashMenuTitle"),children:Ys.map(e=>t.jsxs("button",{type:"button",className:"composer-slash-item",onClick:()=>hn(e.command),children:[t.jsx("span",{className:"composer-slash-command",children:e.command}),t.jsx("span",{className:"composer-slash-label",children:e.label})]},e.command))}):null,t.jsxs("div",{className:"composer-controls",children:[t.jsxs("div",{className:"composer-controls-left",children:[T.allowed?q.isNativeMobile?t.jsx("button",{type:"button",className:"composer-attach-btn","aria-label":o("conversation.attachFiles"),title:o("conversation.attachFiles"),disabled:Ms,onClick:un,children:t.jsx(Dt,{})}):Ms?t.jsx("button",{type:"button",className:"composer-attach-btn","aria-label":o("conversation.attachFiles"),title:o("conversation.attachFiles"),disabled:!0,children:t.jsx(Dt,{})}):t.jsx("label",{htmlFor:G,className:"composer-attach-btn","aria-label":o("conversation.attachFiles"),title:o("conversation.attachFiles"),onClick:()=>{D(!1)},children:t.jsx(Dt,{})}):null,!_&&ve?t.jsx(Ls,{ariaLabel:o("conversation.modelSelectorLabel"),triggerLabel:Js,presetOptions:st,selectedPresetValue:Et,selectedPresetSummary:(ie==null?void 0:ie.summary)??null,onSelectPreset:on,modelOptions:ns,selectedModelValue:z,onSelectModel:hs,loadingPresets:Vs,loadingModels:Zt,modelColumnDisabled:F==="cc-switch-preset"&&Zt&&bt===null,showPresetColumn:qt,modelEmptyText:o("conversation.deploymentModelEmpty")}):null,!_&&!ve?t.jsx(ht,{ariaLabel:o("conversation.modelSelectorLabel"),value:z,options:ns,onChange:hs}):null,!_&&nt&&W.length>0?t.jsx(ht,{ariaLabel:o("conversation.reasoningSelectorLabel"),value:he,options:Xs,onChange:e=>rn(e),compact:!0}):null,Gs?t.jsxs("button",{type:"button",className:"composer-slash-btn",onClick:mn,title:o("conversation.slashMenu"),children:[t.jsx("span",{className:"slash-icon",children:"/"}),t.jsx("span",{children:o("conversation.slashMenu")})]}):null,t.jsx(Eo,{contextUsage:g}),t.jsx(Xn,{provider:y,messages:M,variant:"composer"})]}),Mn?t.jsx("div",{className:"composer-quick-phrase-group",children:t.jsx("button",{type:"button",className:"composer-quick-phrase-trigger","aria-label":o("conversation.quickPhraseTrigger"),title:o("conversation.quickPhraseTrigger"),onClick:()=>{De(!0),D(!1)},children:t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("path",{d:"M7 8h10"}),t.jsx("path",{d:"M7 12h8"}),t.jsx("path",{d:"M7 16h5"}),t.jsx("path",{d:"M5 5h14v14H9l-4 4V5z"})]})})}):null]})]})]}),t.jsx(Bt,{open:Hs,title:o("conversation.quickPhraseModalTitle"),description:o("conversation.quickPhraseModalDescription"),className:"composer-quick-phrase-modal",onClose:()=>{De(!1),fe(!1)},children:t.jsxs("div",{className:"composer-quick-phrase-modal-body",children:[t.jsxs("div",{className:"composer-quick-phrase-toolbar",children:[t.jsx("div",{className:"composer-quick-phrase-toolbar-copy",children:t.jsx("span",{children:o("conversation.quickPhraseListLabel")})}),t.jsx("button",{type:"button",className:"primary-button",disabled:je,onClick:()=>fe(!0),children:o("conversation.quickPhraseOpenCreateAction")})]}),t.jsx("div",{className:"composer-quick-phrase-list",role:"list","aria-label":o("conversation.quickPhraseListLabel"),children:I.length===0?t.jsx("div",{className:"composer-quick-phrase-empty",children:o("conversation.quickPhraseEmpty")}):I.map((e,a)=>t.jsxs("div",{className:"composer-quick-phrase-item",role:"listitem",children:[t.jsxs("button",{type:"button",className:"composer-quick-phrase-select",onClick:()=>vn(e.text),children:[t.jsx("span",{className:"composer-quick-phrase-order",children:o("conversation.quickPhraseOrderLabel",{index:a+1})}),t.jsx("span",{className:"composer-quick-phrase-text",children:e.text})]}),t.jsxs("div",{className:"composer-quick-phrase-actions",children:[t.jsx("button",{type:"button",className:"composer-quick-phrase-action",disabled:je||a===0,"aria-label":o("conversation.quickPhraseMoveUp"),title:o("conversation.quickPhraseMoveUp"),onClick:()=>vs(e.id,-1),children:"↑"}),t.jsx("button",{type:"button",className:"composer-quick-phrase-action",disabled:je||a===I.length-1,"aria-label":o("conversation.quickPhraseMoveDown"),title:o("conversation.quickPhraseMoveDown"),onClick:()=>vs(e.id,1),children:"↓"}),t.jsx("button",{type:"button",className:"composer-quick-phrase-action is-danger",disabled:je,"aria-label":o("conversation.quickPhraseDelete"),title:o("conversation.quickPhraseDelete"),onClick:()=>fn(e.id),children:"×"})]})]},e.id))})]})}),t.jsx(Bt,{open:Ks,title:o("conversation.quickPhraseCreateModalTitle"),description:o("conversation.quickPhraseCreateModalDescription"),className:"composer-quick-phrase-create-modal",onClose:()=>fe(!1),children:t.jsxs("div",{className:"composer-quick-phrase-modal-body",children:[t.jsxs("label",{className:"workbench-modal-field",children:[t.jsx("span",{children:o("conversation.quickPhraseCreateLabel")}),t.jsx("textarea",{className:"composer-quick-phrase-textarea",value:He,placeholder:o("conversation.quickPhraseCreatePlaceholder"),rows:4,onChange:e=>Qt(e.target.value)})]}),t.jsxs("div",{className:"workbench-modal-actions",children:[t.jsx("button",{type:"button",className:"secondary-button",onClick:()=>fe(!1),children:o("common.cancel")}),t.jsx("button",{type:"button",className:"primary-button",disabled:je||He.trim().length===0,onClick:()=>{pn()},children:o("conversation.quickPhraseCreateAction")})]})]})}),t.jsx(Bt,{open:Xe!==null,title:o("conversation.forkSwitchConfirmTitle"),description:o("conversation.forkSwitchConfirmDescription"),className:"composer-fork-confirm-modal",onClose:xs,children:t.jsxs("div",{className:"composer-fork-confirm-body",children:[t.jsxs("div",{className:"composer-fork-confirm-list",children:[t.jsxs("div",{className:"composer-fork-confirm-item",children:[t.jsx("span",{className:"composer-fork-confirm-icon is-keep","aria-hidden":"true",children:t.jsx(Po,{})}),t.jsxs("div",{className:"composer-fork-confirm-copy",children:[t.jsx("strong",{children:o("conversation.forkSwitchConfirmKeepTitle")}),t.jsx("p",{children:o("conversation.forkSwitchConfirmKeepBody")})]})]}),t.jsxs("div",{className:"composer-fork-confirm-item",children:[t.jsx("span",{className:"composer-fork-confirm-icon is-convert","aria-hidden":"true",children:t.jsx(Ro,{})}),t.jsxs("div",{className:"composer-fork-confirm-copy",children:[t.jsx("strong",{children:o("conversation.forkSwitchConfirmConvertTitle")}),t.jsx("p",{children:o("conversation.forkSwitchConfirmConvertBody")})]})]}),t.jsxs("div",{className:"composer-fork-confirm-item",children:[t.jsx("span",{className:"composer-fork-confirm-icon is-drop","aria-hidden":"true",children:t.jsx(No,{})}),t.jsxs("div",{className:"composer-fork-confirm-copy",children:[t.jsx("strong",{children:o("conversation.forkSwitchConfirmDropTitle")}),t.jsx("p",{children:o("conversation.forkSwitchConfirmDropBody")})]})]})]}),t.jsxs("div",{className:"workbench-modal-actions",children:[t.jsx("button",{type:"button",className:"secondary-button",onClick:xs,children:o("conversation.forkSwitchKeepNative")}),t.jsx("button",{type:"button",className:"primary-button",onClick:xn,children:o("conversation.forkSwitchConfirmAction")})]})]})}),t.jsx(jo,{open:Ds&&q.isNativeMobile,onClose:()=>pe(!1),onSelectCamera:()=>fs("camera"),onSelectLibrary:()=>fs("library")})]});return $?Wt.createPortal(Cs,$):Cs}function jo({open:s,onClose:r,onSelectCamera:l,onSelectLibrary:d}){return t.jsx(zn,{open:s,title:o("conversation.attachmentSourceSheetTitle"),description:o("conversation.attachmentSourceSheetDescription"),kind:"action",height:"auto",className:"composer-attachment-sheet",cardClassName:"composer-attachment-sheet-card",bodyClassName:"composer-attachment-sheet-body",showHandle:!0,onClose:r,children:t.jsxs(Dn,{className:"composer-attachment-sheet-actions",children:[t.jsx(Rs,{as:"button",className:"mobile-workspace-home-row composer-attachment-sheet-option","aria-label":o("conversation.attachmentTakePhoto"),label:o("conversation.attachmentTakePhoto"),description:o("conversation.attachmentTakePhotoHint"),trailing:t.jsx(ko,{}),onClick:l}),t.jsx(Rs,{as:"button",className:"mobile-workspace-home-row composer-attachment-sheet-option","aria-label":o("conversation.attachmentChooseFromLibrary"),label:o("conversation.attachmentChooseFromLibrary"),description:o("conversation.attachmentChooseFromLibraryHint"),trailing:t.jsx(So,{}),onClick:d})]})})}function ko(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[t.jsx("path",{d:"M4 8h3l1.5-2h7L17 8h3a1 1 0 0 1 1 1v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a1 1 0 0 1 1-1Z"}),t.jsx("circle",{cx:"12",cy:"13",r:"4"})]})}function Dt(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"4"}),t.jsx("path",{d:"M8 12h8M12 8v8"})]})}function So(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[t.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2.5"}),t.jsx("path",{d:"m7.5 15 3-3 2.5 2.5 3-4L18 13.5"}),t.jsx("circle",{cx:"8.75",cy:"8.75",r:"1.25",fill:"currentColor",stroke:"none"})]})}function Po(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[t.jsx("path",{d:"M12 3 4 7v5c0 5 3.5 8 8 9 4.5-1 8-4 8-9V7l-8-4Z"}),t.jsx("path",{d:"m9.5 12 1.8 1.8L15 10.2"})]})}function Ro(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[t.jsx("path",{d:"M4 7h9"}),t.jsx("path",{d:"m10 3 4 4-4 4"}),t.jsx("path",{d:"M20 17h-9"}),t.jsx("path",{d:"m14 13-4 4 4 4"})]})}function No(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[t.jsx("path",{d:"m7 7 10 10"}),t.jsx("path",{d:"M17 7 7 17"}),t.jsx("path",{d:"M12 3v2"}),t.jsx("path",{d:"M12 19v2"})]})}function Eo({contextUsage:s}){const[r,l]=n.useState(!1),d=n.useRef(null),p=n.useRef(null),[f,h]=n.useState(null),i=n.useId(),C=s?Math.round(s.usageRatio*100):null,v=s?Math.max(0,Math.min(s.usageRatio,1)):0,m=Lo(v),$=s?qo(s.contextWindowSource):null,V=s?`${o("conversation.contextUsageTitle")} ${C}%`:o("conversation.contextUsageUnavailable"),N=n.useCallback(()=>{const g=d.current;if(!g||typeof window>"u")return;const y=g.getBoundingClientRect(),M=window.innerWidth,S=window.innerHeight,x=12,E=10,R=Math.min(240,Math.max(188,M-x*2)),L=Math.min(Math.max(x,y.left+y.width/2-R/2),Math.max(x,M-R-x)),we=y.top-x,q=S-y.bottom-x,G=we>=140||we>=q;h({position:"fixed",left:L,width:R,maxWidth:M-x*2,top:G?void 0:y.bottom+E,bottom:G?S-y.top+E:void 0})},[]);return n.useEffect(()=>{if(!r)return;function g(M){var x,E;const S=M.target;!((x=d.current)!=null&&x.contains(S))&&!((E=p.current)!=null&&E.contains(S))&&l(!1)}function y(M){M.key==="Escape"&&l(!1)}return window.addEventListener("pointerdown",g),window.addEventListener("keydown",y),window.addEventListener("resize",N),window.addEventListener("scroll",N,!0),N(),()=>{window.removeEventListener("pointerdown",g),window.removeEventListener("keydown",y),window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)}},[r,N]),t.jsxs(t.Fragment,{children:[t.jsx("button",{ref:d,type:"button",className:`composer-context-ring ${m}`,style:{"--context-usage-progress":`${v}`},"aria-label":V,"aria-expanded":r,"aria-describedby":r?i:void 0,onClick:()=>l(g=>!g),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),onFocus:()=>l(!0),onBlur:()=>l(!1),children:t.jsx("span",{className:"composer-context-ring-value",children:C===null?"--":t.jsxs(t.Fragment,{children:[t.jsx("span",{children:C}),t.jsx("span",{className:"composer-context-ring-suffix",children:"%"})]})})}),r&&f&&typeof document<"u"?Wt.createPortal(t.jsx("div",{ref:p,id:i,className:"composer-context-tooltip",style:f,role:"tooltip",children:s?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"composer-context-tooltip-title",children:o("conversation.contextUsageTitle")}),t.jsxs("div",{className:"composer-context-tooltip-line",children:[C,"% · ",Ht(s.promptTokens)," /"," ",Ht(s.contextWindow)," tokens"]}),s.cachedInputTokens>0?t.jsx("div",{className:"composer-context-tooltip-line",children:o("conversation.contextUsageCachedTokens").replace("{count}",Ht(s.cachedInputTokens))}):null,$?t.jsx("div",{className:"composer-context-tooltip-meta",children:$}):null,s.isEstimated?t.jsx("div",{className:"composer-context-tooltip-meta",children:o("conversation.contextUsageEstimated")}):null]}):t.jsx("div",{className:"composer-context-tooltip-line",children:o("conversation.contextUsageUnavailable")})}),document.body):null]})}function Lo(s){return s>=.95?"is-critical":s>=.8?"is-warning":"is-normal"}function qo(s){switch(s){case"provider-log":return o("conversation.contextUsageSourceProviderLog");case"provider-runtime":return o("conversation.contextUsageSourceProviderRuntime");case"provider-config":return o("conversation.contextUsageSourceProviderConfig");case"model-map":return o("conversation.contextUsageSourceModelMap");default:return""}}function Ht(s){return new Intl.NumberFormat().format(s)}function Ho({requests:s,replyingRequestId:r,onReply:l}){const[d,p]=n.useState({}),f=n.useMemo(()=>s.filter(h=>h.status==="pending"),[s]);return f.length===0?null:t.jsxs("section",{className:"permission-request-list",children:[t.jsxs("div",{className:"permission-request-list-header",children:[t.jsxs("div",{children:[t.jsx("strong",{children:o("conversation.permissionRequestSectionTitle")}),t.jsx("p",{children:o("conversation.permissionRequestSectionDescription")})]}),t.jsx("span",{className:"permission-request-count",children:f.length})]}),t.jsx("div",{className:"permission-request-stack",children:f.map(h=>{var V,N;const i=d[h.id]??{},C=h.paths.filter(Boolean),v=h.kind==="command"&&!!((V=h.command)!=null&&V.trim()),m=h.questions.length===0&&C.length===0&&!v&&!!((N=h.summary)!=null&&N.trim()),$=h.kind==="user_input"&&h.questions.some(g=>{var y;return(((y=i[g.id])==null?void 0:y.filter(Boolean).length)??0)===0});return t.jsxs("article",{className:"permission-request-card",children:[t.jsxs("header",{className:"permission-request-card-header",children:[t.jsxs("div",{className:"permission-request-provider",children:[t.jsx("span",{className:"permission-request-provider-icon","aria-hidden":"true",children:t.jsx("img",{src:Hn(h.provider),alt:"",loading:"lazy"})}),t.jsxs("div",{className:"permission-request-provider-copy",children:[t.jsx("strong",{children:h.title}),t.jsx("span",{children:Fs(h.provider,"full")})]})]}),t.jsx("span",{className:"permission-request-kind",children:To(h.kind)})]}),t.jsxs("div",{className:"permission-request-card-body",children:[C.length>0?t.jsx("div",{className:"permission-request-block",children:t.jsx("ul",{className:"permission-request-target-list",children:C.map(g=>t.jsxs("li",{className:"permission-request-target-item",children:[t.jsx("strong",{children:Ao(g)}),t.jsx("span",{children:g})]},`${h.id}:${g}`))})}):null,v?t.jsxs("div",{className:"permission-request-block",children:[t.jsx("div",{className:"permission-request-block-label",children:o("conversation.permissionRequestCommandLabel")}),t.jsx("pre",{children:h.command})]}):null,m?t.jsx("p",{className:"permission-request-summary",children:h.summary}):null,h.questions.length>0?t.jsxs("div",{className:"permission-request-block",children:[t.jsx("div",{className:"permission-request-block-label",children:o("conversation.permissionRequestQuestionsLabel")}),t.jsx("div",{className:"permission-request-question-list",children:h.questions.map(g=>t.jsxs("div",{className:"permission-request-question",children:[t.jsx("div",{className:"permission-request-question-header",children:g.header}),t.jsx("p",{children:g.question}),t.jsx("div",{className:"permission-request-question-options",children:g.options.map(y=>{var S;const M=((S=i[g.id])==null?void 0:S.includes(y.label))??!1;return t.jsxs("label",{className:"permission-request-question-option",children:[t.jsx("input",{type:"radio",name:`${h.id}:${g.id}`,checked:M,onChange:()=>{p(x=>({...x,[h.id]:{...x[h.id]??{},[g.id]:[y.label]}}))}}),t.jsxs("span",{children:[t.jsx("strong",{children:y.label}),y.description?t.jsx("small",{children:y.description}):null]})]},`${g.id}:${y.label}`)})})]},g.id))})]}):null]}),t.jsx("footer",{className:"permission-request-card-footer",children:h.actions.map(g=>t.jsx("button",{type:"button",className:Io(g.tone),disabled:r===h.id||g.value==="submit"&&$,onClick:()=>void l(h.id,{action:g.value,answers:Object.keys(i).length>0?i:void 0}),children:r===h.id?o("conversation.permissionRequestSubmitting"):g.label},`${h.id}:${g.value}`))})]},h.id)})})]})}function Io(s){return s==="danger"?"workbench-danger-button permission-request-action":s==="primary"?"primary-button permission-request-action":"secondary-button permission-request-action"}function To(s){return s==="command"?o("conversation.permissionRequestKindCommand"):s==="file_change"?o("conversation.permissionRequestKindFileChange"):s==="permissions"?o("conversation.permissionRequestKindPermissions"):s==="user_input"?o("conversation.permissionRequestKindUserInput"):o("conversation.permissionRequestKindToolCall")}function Ao(s){return s.split(/[/\\]+/).filter(Boolean).at(-1)??s}class Ko{constructor(r){U(this,"socket",null);U(this,"disposed",!1);U(this,"authRecoveryInFlight",!1);U(this,"latestCursor");U(this,"subscribed",!1);U(this,"pendingOlderRequest",null);U(this,"inFlightOlderRequest",null);U(this,"subscribeStartedAtMs",null);U(this,"firstBackfillLogged",!1);U(this,"olderRequestStartedAtMs",null);U(this,"connectionManager");this.options=r,this.latestCursor=r.cursor,this.connectionManager=new Gn({onReconnect:l=>{this.connect(l)},onStateChange:r.onConnectionChange})}start(){this.connectionManager.start()}updateCursor(r){this.latestCursor=r}reconnectNow(){this.connectionManager.reconnectNow()}requestOlderMessages(r,l){return Oo(this.socket)?this.subscribed?(this.sendOlderMessagesRequest(r,l),!0):(this.pendingOlderRequest={cursor:r,limit:l},!0):!1}close(){var r;this.disposed=!0,this.subscribed=!1,this.pendingOlderRequest=null,this.inFlightOlderRequest=null,this.connectionManager.close(),(r=this.socket)==null||r.close(),this.socket=null}connect(r){var C;if(this.disposed)return;r&&this.socket&&(this.socket.close(),this.socket=null);const l=(C=ks.getState().session)==null?void 0:C.accessToken;if(!l){this.options.onUnauthorized();return}const d=Sn(),p=Pn(d),f=p.baseUrl,h=`${Rn("/ws",f)}?access_token=${encodeURIComponent(l)}`,i=p.transport.createWebSocket({path:"/ws",baseUrl:f,url:h});this.subscribed=!1,this.firstBackfillLogged=!1,this.socket=i,i.addEventListener("open",()=>{this.subscribeStartedAtMs=performance.now(),i.send(JSON.stringify({type:"session.subscribe",sessionId:this.options.sessionId,cursor:this.latestCursor,limit:this.options.limit})),Oe("session.subscribe.sent",{sessionId:this.options.sessionId,hasCursor:this.latestCursor!==null,limit:this.options.limit,baseUrl:f})}),i.addEventListener("message",v=>{if(!(v instanceof MessageEvent)||typeof v.data!="string")return;const m=JSON.parse(v.data);if(m.type==="system.connected"){this.connectionManager.markConnected();return}if(m.type==="session.subscribed"){this.subscribed=!0,Oe("session.subscribe.ack",{sessionId:m.sessionId,durationMs:Kt(this.subscribeStartedAtMs)}),this.options.onSubscribed(),this.flushPendingOlderRequest();return}if(m.type==="session.error"){if(this.clearOlderMessagesRequest(),m.error_code==="UNAUTHORIZED"){this.handleUnauthorized();return}this.options.onError(m);return}if(m.type==="session.runtime_status"){this.options.onRuntimeStatus(m);return}if(m.type==="session.activity"){this.options.onActivity(m);return}if(m.type==="session.history_older"){Oe("session.history_older.received",{sessionId:m.sessionId,messageCount:m.messages.length,olderCursor:m.olderCursor,durationMs:Kt(this.olderRequestStartedAtMs)}),this.olderRequestStartedAtMs=null,this.clearOlderMessagesRequest(),this.options.onOlderHistory(m);return}if(m.type==="session.runtime_message"){this.options.onRuntimeMessage(m);return}if(m.type==="session.runtime_error"){this.options.onRuntimeError(m);return}if(m.type==="session.interrupted"){this.options.onInterrupted(m);return}if(m.type==="session.permission_request"){this.options.onPermissionRequest(m);return}if(m.type==="session.permission_request_resolved"){this.options.onPermissionRequestResolved(m);return}this.latestCursor=m.cursor,this.firstBackfillLogged||(this.firstBackfillLogged=!0,Oe("session.initial_messages.received",{sessionId:m.sessionId,eventType:m.type,messageCount:m.messages.length,olderCursor:m.olderCursor??null,durationMs:Kt(this.subscribeStartedAtMs)})),this.options.onEnvelope(m)}),i.addEventListener("close",()=>{this.disposed||this.socket!==i||(this.subscribed=!1,this.requeueInFlightOlderRequest(),this.connectionManager.markDisconnected())}),i.addEventListener("error",()=>{this.disposed||this.socket!==i||this.connectionManager.markTransientFailure()})}handleUnauthorized(){if(this.authRecoveryInFlight||this.disposed)return;this.authRecoveryInFlight=!0,this.subscribed=!1,this.requeueInFlightOlderRequest();const r=this.socket;this.socket=null,r==null||r.close(),ks.refresh().then(l=>{if(this.authRecoveryInFlight=!1,!this.disposed){if(l.status==="refreshed"){this.connectionManager.reconnectNow();return}if(l.status==="deferred"){this.connectionManager.markDisconnected();return}this.options.onUnauthorized()}})}sendOlderMessagesRequest(r,l){var d;this.inFlightOlderRequest={cursor:r,limit:l},this.olderRequestStartedAtMs=performance.now(),(d=this.socket)==null||d.send(JSON.stringify({type:"session.load_older",sessionId:this.options.sessionId,cursor:r,limit:l})),Oe("session.load_older.sent",{sessionId:this.options.sessionId,hasCursor:r!==null,limit:l})}flushPendingOlderRequest(){if(!this.pendingOlderRequest)return;const r=this.pendingOlderRequest;this.pendingOlderRequest=null,this.sendOlderMessagesRequest(r.cursor,r.limit)}clearOlderMessagesRequest(){this.pendingOlderRequest=null,this.inFlightOlderRequest=null}requeueInFlightOlderRequest(){this.inFlightOlderRequest&&(this.pendingOlderRequest=this.inFlightOlderRequest,this.inFlightOlderRequest=null,this.olderRequestStartedAtMs=null)}}function Kt(s){return s===null||typeof performance>"u"?null:Math.round(performance.now()-s)}function Oo(s){return s!==null&&s.readyState===1}export{Do as C,Ho as P,Ko as R};
1
+ var Cn=Object.defineProperty;var jn=(s,r,l)=>r in s?Cn(s,r,{enumerable:!0,configurable:!0,writable:!0,value:l}):s[r]=l;var U=(s,r,l)=>jn(s,typeof r!="symbol"?r+"":r,l);import{t as o,b as n,j as t,u as kn,E as _t,a as js,m as ks,H as Sn,J as Pn,F as Rn}from"./index-CuzMc7q2.js";import{g as Wt,e as Nn,f as En}from"./App-tPcbyRdS.js";import{e as Ln,W as qn,q as Ss,s as Ps,X as In,Y as Tn,n as An,p as Ut,a as Fs,P as On,Z as Fn,_ as _n,$ as Un,a0 as Bn,t as $n,M as zn,i as Dn,j as Rs,a1 as Hn}from"./model-switch-api-c6kcbBGm.js";import{W as Bt}from"./WorkbenchModal-Bt_1fYmM.js";import{bd as Kn,be as Wn,bf as Vn,bg as Qn,Q as Ae,S as de,U as Ns,V as ue,X as mt,T as Es,R as ft,bh as ht,Y as Ls,aO as Gn,a7 as Oe}from"./WorkbenchLayout-CbpJg0g1.js";function $t(s,r){if(!s)return{allowed:!1,hidden:!1,reason:o("conversation.capabilityDenied")};switch(r){case"send_message":return s.canSendMessage===!1?{allowed:!1,hidden:!1,reason:o("conversation.capabilitySendDisabled")}:{allowed:!0,hidden:!1,reason:null};case"attachments":return s.supportsAttachments?{allowed:!0,hidden:!1,reason:null}:{allowed:!1,hidden:!1,reason:o("conversation.capabilityAttachmentDisabled")};case"interrupt":return s.supportsInterrupt?{allowed:!0,hidden:!1,reason:null}:{allowed:!1,hidden:!1,reason:o("conversation.capabilityInterruptDisabled")};default:return{allowed:!1,hidden:!1,reason:o("conversation.capabilityDenied")}}}const pt=12,te=16,Jn=640,zt=180;function Xn({provider:s,messages:r,variant:l="header"}){const[d,p]=n.useState(!1),[f,h]=n.useState(null),i=n.useId(),C=n.useRef(null),v=n.useRef(null),m=n.useMemo(()=>Kn(r,s),[r,s]);if(n.useLayoutEffect(()=>{if(!d)return;function M(){const S=C.current;if(!S)return;const x=S.getBoundingClientRect(),E=window.innerWidth,R=window.innerHeight,L=Math.min(Jn,Math.max(280,E-te*2)),q=x.left+x.width/2-L/2,G=Yn(q,te,Math.max(te,E-L-te));if(l==="header"){h({left:G,width:L,top:Math.min(x.bottom+pt,R-zt-te),maxHeight:Math.max(zt,R-x.bottom-pt-te)});return}h({left:G,width:L,bottom:Math.max(te,R-x.top+pt),maxHeight:Math.max(zt,x.top-pt-te)})}return M(),window.addEventListener("resize",M),window.addEventListener("scroll",M,!0),()=>{window.removeEventListener("resize",M),window.removeEventListener("scroll",M,!0)}},[d,l]),n.useEffect(()=>{if(!d)return;function M(x){const E=C.current,R=v.current,L=x.target;L instanceof Node&&(E!=null&&E.contains(L)||R!=null&&R.contains(L)||p(!1))}function S(x){x.key==="Escape"&&p(!1)}return document.addEventListener("pointerdown",M),document.addEventListener("keydown",S),()=>{document.removeEventListener("pointerdown",M),document.removeEventListener("keydown",S)}},[d]),!m||m.items.length===0)return null;const $=Wn(m.items),V=$.in_progress||$.pending,N=V>0?V:m.items.length,g=l==="composer"?"conversation-task-progress-button composer-task-progress-button":"conversation-header-ai-button conversation-task-progress-button",y=d&&f?Wt.createPortal(t.jsx("div",{id:i,ref:v,className:"conversation-task-progress-popover",role:"region","aria-label":o("conversation.taskProgressModalTitle"),style:{left:f.left,width:f.width,maxHeight:f.maxHeight,top:f.top,bottom:f.bottom},children:t.jsx(Vn,{snapshot:m,className:"conversation-task-progress-popover-card"})}),document.body):null;return t.jsxs("div",{className:"conversation-task-progress-entry","data-variant":l,ref:C,children:[t.jsxs("button",{type:"button",className:g,"data-variant":l,"aria-label":o("conversation.taskProgressButton",{count:m.items.length}),"aria-expanded":d,"aria-controls":d?i:void 0,title:o("conversation.taskProgressButton",{count:m.items.length}),onClick:()=>{p(M=>!M)},children:[t.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:t.jsx(Qn,{})}),t.jsx("span",{className:"conversation-task-progress-badge",children:N})]}),y]})}function Yn(s,r,l){return Math.min(Math.max(s,r),l)}const Zn="codingns.conversation.composer-draft:",eo=1,to=[{id:"builtin-stage-and-summarize",text:"请将本次会话变更的所有代码提交到git暂存区,然后总结一条中文的提交信息"},{id:"builtin-review-module",text:"分析本项目 模块的代码实现,并分析存在的问题"},{id:"builtin-group-commits",text:"分析当前项目中的未提交文件,按照功能模块进行分类提交,提交信息格式请参考我最近的提交记录"}];function Vt(){return typeof window<"u"&&typeof window.localStorage<"u"}function so(s){if(!s||typeof s!="object")return null;const r="id"in s?s.id:null,l="fileName"in s?s.fileName:null,d="mimeType"in s?s.mimeType:null,p="fileSize"in s?s.fileSize:null,f="lastModified"in s?s.lastModified:null,h="contentBase64"in s?s.contentBase64:null;if(typeof r!="string"||typeof l!="string"||typeof d!="string"||typeof p!="number"||typeof f!="number"||typeof h!="string")return null;const i=r.trim(),C=l.trim(),v=d.trim(),m=h.trim();return!i||!C||!v||p<0||f<0||!m?null:{id:i,fileName:C,mimeType:v,fileSize:p,lastModified:f,contentBase64:m}}function no(s){if(!s||typeof s!="object")return null;const r="content"in s?s.content:null,l="attachments"in s?s.attachments:null;if(typeof r!="string"||!Array.isArray(l))return null;const d=l.map(p=>so(p)).filter(p=>p!==null);return d.length!==l.length||r.length===0&&d.length===0?null:{content:r,attachments:d}}function Fe(s){return`${Zn}${s}`}function oo(s){var r,l;return{id:((l=(r=globalThis.crypto)==null?void 0:r.randomUUID)==null?void 0:l.call(r))??`phrase-${Date.now()}-${Math.random().toString(16).slice(2)}`,text:s.trim()}}function ro(s){if(!Vt())return null;const r=s.trim();if(!r)return null;const l=window.localStorage.getItem(Fe(r));if(!l)return null;try{const d=JSON.parse(l),p=d&&typeof d=="object"&&"draft"in d&&d.draft&&typeof d.draft=="object"?d.draft:d,f=no(p);return f||(window.localStorage.removeItem(Fe(r)),null)}catch{return window.localStorage.removeItem(Fe(r)),null}}function io(s,r){if(!Vt())return!1;const l=s.trim();if(!l)return!1;if(r.content.length===0&&r.attachments.length===0)return _s(l),!0;try{return window.localStorage.setItem(Fe(l),JSON.stringify({schemaVersion:eo,draft:r})),!0}catch{return!1}}function _s(s){if(!Vt())return;const r=s.trim();r&&window.localStorage.removeItem(Fe(r))}const qs="workbench:focus-composer",ao=["codex","claude-code","opencode","gemini","kimi"],lo=new Set(["codex","claude-code","opencode"]),co=new Set(["codex","claude-code","opencode"]),Is={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},ye=new Map;function uo(s){return[{id:ft,name:o("conversation.modelUseCliDefault"),provider:s,usesProviderDefault:!0}]}function Ts(s){return uo(s)}function mo(){var s,r;return((r=(s=globalThis.crypto)==null?void 0:s.randomUUID)==null?void 0:r.call(s))??`${Date.now()}-${Math.random().toString(16).slice(2)}`}function As(s){if(s){s.value="";try{const r=s.showPicker;if(typeof r=="function"){r.call(s);return}}catch{}s.click()}}function ho(s,r,l,d){const p=globalThis.atob(l),f=Uint8Array.from(p,h=>h.charCodeAt(0));return new File([f],s,{type:r,lastModified:d})}function po(s){return s.trim().toLowerCase().startsWith("image/")}function _e(s){const r=s.type.trim().toLowerCase();return r.length>0?r:"application/octet-stream"}function Us(s){return po(_e(s))?"image":"file"}function Bs(s,r=mo()){const l=Us(s);return{id:r,file:s,kind:l,previewUrl:l==="image"?URL.createObjectURL(s):null}}function fo(s){const r=ho(s.fileName,s.mimeType,s.contentBase64,s.lastModified);return Bs(r,s.id)}function vo(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/(1024*1024)).toFixed(1)} MB`}function go(s){const r=s.trim().replace(/\s+/g," ");return r.length===0?o("conversation.forkDraftEmpty"):r.length>140?`${r.slice(0,140)}…`:r}function bo(s,r){return r===s?co.has(r)?null:o("conversation.forkProviderNativeUnsupported"):lo.has(r)?null:o("conversation.forkProviderReconstructedUnsupported")}function $s(s){return(s==null?void 0:s.canStartSession)===!1}function xo(s){return $s(s)?(s==null?void 0:s.limitations[0])??o("conversation.capabilityDenied"):null}function yo(s,r){return{id:r,kind:Us(s),fileName:s.name,mimeType:_e(s),fileSize:s.size}}function Os(s){return new Promise((r,l)=>{const d=new FileReader;d.onerror=()=>{l(d.error??new Error("FILE_READ_FAILED"))},d.onload=()=>{const p=typeof d.result=="string"?d.result:"",f=p.includes(",")?p.split(",").at(-1)??"":p;r(f)},d.readAsDataURL(s)})}function wo(s){s.forEach(r=>{r.previewUrl&&URL.revokeObjectURL(r.previewUrl)})}function Mo(s,r){const l=new Set(s.map(p=>`${p.file.name}:${p.file.size}:${p.file.lastModified}`)),d=[...s];return r.forEach(p=>{const f=`${p.name}:${p.size}:${p.lastModified}`;l.has(f)||(l.add(f),d.push(Bs(p)))}),d}function Co(s,r,l){const d=s.nativeEvent;return d.isComposing||d.keyCode===229||r||l}function Do({capabilities:s,placeholder:r,draftStorageId:l,initialModel:d=null,workspaceId:p=null,initialProviderConfigMode:f="global-default",initialProviderPresetId:h=null,forkDraft:i=null,onClearForkDraft:C,onForkDraftChange:v,panelRef:m,portalContainer:$=null,hasActiveRun:V=null,canInterrupt:N=null,contextUsage:g=null,taskProvider:y=null,taskMessages:M=[],hasPendingQueuedMessages:S=!1,isSubmitting:x,isRunning:E=!1,onInterrupt:R,onQueueSend:L,onSend:we}){const q=Nn(),G=n.useId(),zs=n.useId(),[J,me]=n.useState(""),[z,Me]=n.useState(""),[he,Ue]=n.useState("medium"),[X,Ce]=n.useState([]),[Ds,pe]=n.useState(!1),[Be,$e]=n.useState(!1),[I,ze]=n.useState(to),[Hs,De]=n.useState(!1),[Ks,fe]=n.useState(!1),[He,Qt]=n.useState(""),[je,Gt]=n.useState(!1),[Ws,D]=n.useState(!1),[Jt,Xt]=n.useState(!1),[vt,Yt]=n.useState(!1),[se,Ke]=n.useState(null),[Vs,gt]=n.useState(!1),[bt,xt]=n.useState(null),[Zt,yt]=n.useState(!1),es=n.useMemo(()=>Ae(f,h),[f,h]),[F,ke]=n.useState(es.providerConfigMode),[H,We]=n.useState(es.providerPresetId),ne=n.useMemo(()=>Ae(F,H),[F,H]),[wt,Se]=n.useState(null),[Mt,Ve]=n.useState(!1),[oe,Pe]=n.useState(null),[Qs,Qe]=n.useState(!1),[Ge,K]=n.useState("global-default"),[Re,Q]=n.useState(null),[Je,Ct]=n.useState({}),[Xe,Ye]=n.useState(null),Ne=n.useRef(null),jt=n.useRef(null),ts=n.useRef(null),kt=n.useRef(!1),St=n.useRef(!1),Ze=n.useRef(!1),Ee=n.useRef(null),Y=n.useRef(new Set),re=n.useRef(new Map),Pt=n.useRef(0),et=n.useRef(null),{showToast:Le}=En(),tt=Ln(),Rt=n.useCallback(()=>{Ee.current!==null&&(globalThis.clearTimeout(Ee.current),Ee.current=null),Ze.current=!1},[]);n.useEffect(()=>Rt,[Rt]);const w=(s==null?void 0:s.provider)??y??qn(s),ve=de(w),ge=kn(e=>_t(w)?e.profile.providers[w]:null),qe=(ge==null?void 0:ge.defaultModel)??null,Ie=(ge==null?void 0:ge.defaultReasoningLevel)??null;n.useEffect(()=>{const e=Ae(f,h);ke(e.providerConfigMode),We(e.providerPresetId)},[l,f,h,w]),n.useEffect(()=>{if(!i){K("global-default"),Q(null);return}if(de(i.targetProvider)){const e=Ae(i.targetProviderConfigMode,i.targetProviderPresetId);K(e.providerConfigMode),Q(e.providerPresetId);return}K("global-default"),Q(null)},[i]),n.useEffect(()=>{if(!ve){Ke(null),gt(!1);return}const e=ye.get(ve)??null;e&&Ke(e);let a=!1;return gt(!e),Ss().then(c=>{c.items.forEach(u=>{ye.set(u.app,u)}),a||Ke(ye.get(ve)??null)}).catch(()=>{!a&&!e&&Ke(null)}).finally(()=>{a||gt(!1)}),()=>{a=!0}},[ve]),n.useEffect(()=>{const e=i?de(i.targetProvider):null;if(!e){Pe(null),Qe(!1);return}const a=ye.get(e)??null;a&&Pe(a);let c=!1;return Qe(!a),Ss().then(u=>{u.items.forEach(b=>{ye.set(b.app,b)}),c||Pe(ye.get(e)??null)}).catch(()=>{!c&&!a&&Pe(null)}).finally(()=>{c||Qe(!1)}),()=>{c=!0}},[i]),n.useEffect(()=>{if(F==="cc-switch-preset"){if(!H){ke("global-default");return}se&&!se.options.some(e=>e.id===H)&&(ke("global-default"),We(null))}},[se,F,H]),n.useEffect(()=>{if(F!=="cc-switch-preset"||!H||!(p!=null&&p.trim())){xt(null),yt(!1);return}let e=!1;return yt(!0),Ps(w,p,{providerConfigMode:"cc-switch-preset",providerPresetId:H}).then(a=>{e||xt(a)}).catch(()=>{e||xt(null)}).finally(()=>{e||yt(!1)}),()=>{e=!0}},[w,F,H,p]),n.useEffect(()=>{if(!(!i||Ge!=="cc-switch-preset")){if(!Re){K("global-default");return}oe&&!oe.options.some(e=>e.id===Re)&&(K("global-default"),Q(null))}},[oe,i,Ge,Re]);const Nt=n.useMemo(()=>$t(s,"send_message"),[s]),ss=n.useMemo(()=>$t(s,"interrupt"),[s]),T=n.useMemo(()=>$t(s,"attachments"),[s]),be=n.useMemo(()=>F!=="cc-switch-preset"?s:bt??s,[s,bt,F]),B=n.useMemo(()=>{var a;const e=(a=be==null?void 0:be.modelOptions)==null?void 0:a.map(c=>{var u;return{...c,provider:w,supportedReasoningEfforts:(u=c.supportedReasoningEfforts)==null?void 0:u.filter(b=>b==="low"||b==="medium"||b==="high"||b==="xhigh")}});return e!=null&&e.length?e:Ts(w)},[be==null?void 0:be.modelOptions,w]),st=n.useMemo(()=>Ns(se),[se]),Et=F==="cc-switch-preset"?H??ue:ue,ie=n.useMemo(()=>st.find(e=>e.value===Et)??st[0]??null,[st,Et]),A=n.useMemo(()=>B.find(e=>e.id===z)??null,[B,z]),nt=In(s),Gs=Tn(s),Lt=n.useMemo(()=>[{value:"low",label:o("conversation.reasoningLow")},{value:"medium",label:o("conversation.reasoningMedium")},{value:"high",label:o("conversation.reasoningHigh")},{value:"xhigh",label:o("conversation.reasoningMaximum")}],[]),W=n.useMemo(()=>{if(!nt)return[];const e=A==null?void 0:A.supportedReasoningEfforts;return!e||e.length===0?Lt:Lt.filter(a=>e.includes(a.value))},[nt,Lt,A==null?void 0:A.supportedReasoningEfforts]),ns=n.useMemo(()=>B.map(e=>({value:e.id,label:mt(e)?o("conversation.modelUseCliDefault"):e.name})),[B]),qt=n.useMemo(()=>Es(se),[se]),Js=n.useMemo(()=>{const e=A?mt(A)?o("conversation.modelUseCliDefault"):A.name:o("conversation.modelUseCliDefault");return qt?`${(ie==null?void 0:ie.label)??o("conversation.deploymentDefaultPreset")} · ${e}`:e},[A,ie,qt]),Xs=n.useMemo(()=>W.map(e=>({value:e.value,label:e.label})),[W]),Ys=n.useMemo(()=>[{command:"/plan",label:o("conversation.slashCommandPlan")},{command:"/review",label:o("conversation.slashCommandReview")},{command:"/explain",label:o("conversation.slashCommandExplain")}],[]),os=(s==null?void 0:s.inRunInputMode)??"none",_=!!i,{visibleProviders:ot}=An(ao,_),rs=(i==null?void 0:i.targetProvider)??null,Zs=de(rs),O=n.useMemo(()=>Ae(Ge,Re),[Ge,Re]),rt=!!i&&(s==null?void 0:s.provider)===rs&&ne.providerConfigMode===O.providerConfigMode&&ne.providerPresetId===O.providerPresetId,Z=n.useMemo(()=>i?rt?s:wt??Ut(i.targetProvider):null,[s,wt,i,rt]),ee=n.useMemo(()=>{var a;if(!i)return[];const e=(a=Z==null?void 0:Z.modelOptions)==null?void 0:a.map(c=>{var u;return{...c,provider:i.targetProvider,supportedReasoningEfforts:(u=c.supportedReasoningEfforts)==null?void 0:u.filter(b=>b==="low"||b==="medium"||b==="high"||b==="xhigh")}});return e!=null&&e.length?e:Ts(i.targetProvider)},[Z==null?void 0:Z.modelOptions,i]),is=n.useMemo(()=>ee.map(e=>({value:e.id,label:mt(e)?o("conversation.modelUseCliDefault"):e.name})),[ee]),it=n.useMemo(()=>!i||!i.targetModel?ft:ee.some(e=>e.id===i.targetModel)?i.targetModel:ft,[ee,i]),at=n.useMemo(()=>Ns(oe),[oe]),It=O.providerConfigMode==="cc-switch-preset"?O.providerPresetId??ue:ue,ae=n.useMemo(()=>at.find(e=>e.value===It)??at[0]??null,[at,It]),lt=n.useMemo(()=>ee.find(e=>e.id===it)??null,[ee,it]),Tt=n.useMemo(()=>Es(oe),[oe]),en=n.useMemo(()=>{const e=lt?mt(lt)?o("conversation.modelUseCliDefault"):lt.name:o("conversation.modelUseCliDefault");return Tt?`${(ae==null?void 0:ae.label)??o("conversation.deploymentDefaultPreset")} · ${e}`:e},[lt,ae,Tt]),le=n.useMemo(()=>i?ot.filter(e=>bo(i.sourceProvider,e)!==null?!1:!$s(Je[e]??null)):[],[i,Je,ot]),as=n.useMemo(()=>i?le.length>0?le:[i.targetProvider]:[],[i,le]),tn=n.useMemo(()=>as.map(e=>({value:e,label:Fs(e,"full")})),[as]),ct=n.useMemo(()=>i?xo(Je[i.targetProvider]??Z??null):null,[Z,i,Je]),dt=V??null,ce=E||dt===!0,sn=ce&&os==="streaming_guidance"&&dt===!1&&!On(s),ls=!_&&ce&&os==="streaming_guidance"&&!sn,At=!_&&ce&&typeof L=="function"&&Fn(s,dt),P=!_&&ce&&!ls&&!At,Ot=_&&!!ct,cs=J.trim().length>0||X.length>0,ds=N===!1&&dt===!0?ss.allowed:N??ss.allowed,Ft=ce&&ds&&!!R&&!Jt,nn=!cs&&(vt||x||ce||S),us=Ft?o("conversation.capabilityInterrupt"):o("conversation.runtimeRunning"),ms=ce?At?o("conversation.queueGuidanceButton"):ls?o("conversation.sendGuidanceButton"):o("conversation.sendButton"):o("conversation.sendButton"),hs=n.useCallback(e=>{Me(e),_t(w)&&js({providers:{[w]:{defaultModel:e}}}).catch(()=>{})},[w]),on=n.useCallback(e=>{if(e==="__global_default__"){ke("global-default"),We(null);return}ke("cc-switch-preset"),We(e)},[]),rn=n.useCallback(e=>{Ue(e),_t(w)&&js({providers:{[w]:{defaultReasoningLevel:e}}}).catch(()=>{})},[w]),ut=n.useCallback(e=>{Y.current.forEach(a=>{URL.revokeObjectURL(a)}),Y.current.clear(),e.forEach(a=>{a.previewUrl&&Y.current.add(a.previewUrl)}),Ce(e)},[]),Te=n.useCallback(e=>{e.length!==0&&Ce(a=>{const c=Mo(a,e);return c.forEach(u=>{u.previewUrl&&Y.current.add(u.previewUrl)}),c})},[]),an=n.useCallback(e=>{re.current.delete(e),Ce(a=>{const c=a.find(u=>u.id===e);return c!=null&&c.previewUrl&&(Y.current.delete(c.previewUrl),URL.revokeObjectURL(c.previewUrl)),a.filter(u=>u.id!==e)})},[]),ps=n.useCallback(e=>{const a=Array.from(e.target.files??[]);a.length>0&&Te(a),e.target.value=""},[Te]),ln=n.useCallback(e=>{var c;q.isMobile||!T.allowed||P||!((((c=e.dataTransfer.files)==null?void 0:c.length)??0)>0||Array.from(e.dataTransfer.items??[]).some(u=>u.kind==="file"))||(e.preventDefault(),e.dataTransfer.dropEffect="copy",Be||$e(!0),D(!1))},[T.allowed,Be,P,q.isMobile]),cn=n.useCallback(e=>{const a=e.relatedTarget;a instanceof Node&&e.currentTarget.contains(a)||$e(!1)},[]),dn=n.useCallback(e=>{if(q.isMobile||!T.allowed||P)return;const a=Array.from(e.dataTransfer.files??[]);a.length!==0&&(e.preventDefault(),$e(!1),Te(a))},[T.allowed,P,Te,q.isMobile]),fs=n.useCallback(e=>{if(!T.allowed||P)return;const a=e==="camera"?ts.current:jt.current;As(a),pe(!1)},[T.allowed,P]),un=n.useCallback(()=>{if(!(!T.allowed||P)){if(D(!1),q.isNativeMobile){tt.trigger("selection"),pe(!0);return}As(jt.current)}},[T.allowed,tt,P,q.isNativeMobile]),mn=n.useCallback(()=>{D(e=>!e)},[]),hn=n.useCallback(e=>{var a;me(c=>c.trimStart().startsWith(e)?c:c.trim()?`${e} ${c.trim()}`:`${e} `),D(!1),(a=Ne.current)==null||a.focus()},[]),xe=n.useCallback(async e=>{const a=I;Pt.current+=1,ze(e),Gt(!0);try{const c=await _n(e.map(u=>({id:u.id,text:u.text})));return ze(c.items.map(u=>({id:u.id,text:u.text}))),!0}catch(c){return ze(a),Le({title:c instanceof Error?c.message:o("conversation.quickPhraseSaveFailed"),tone:"error"}),!1}finally{Gt(!1)}},[I,Le]),pn=n.useCallback(async()=>{const e=He.trim();!e||!await xe([...I,oo(e)])||(Qt(""),fe(!1))},[xe,He,I]),fn=n.useCallback(e=>{xe(I.filter(a=>a.id!==e))},[xe,I]),vs=n.useCallback((e,a)=>{const c=I.findIndex(k=>k.id===e);if(c<0)return;const u=c+a;if(u<0||u>=I.length)return;const b=[...I],[j]=b.splice(c,1);b.splice(u,0,j),xe(b)},[xe,I]),vn=n.useCallback(e=>{var a;me(e),De(!1),(a=Ne.current)==null||a.focus()},[]),gs=n.useCallback(e=>{const a=e?ro(e):null,c=(a==null?void 0:a.attachments.map(u=>fo(u)))??[];re.current=new Map(((a==null?void 0:a.attachments)??[]).map(u=>[u.id,u])),ut(c),me((a==null?void 0:a.content)??""),D(!1)},[ut]);n.useEffect(()=>{if(!B.length)return;const e=(d==null?void 0:d.trim())||null,a=`${l??"default"}:${w}:${e??""}`;if(!!(e&&B.some(b=>b.id===e))){if(et.current!==a){et.current=a,z!==e&&Me(e);return}if(B.some(b=>b.id===z))return;Me(e);return}if(!e&&et.current!==a&&(et.current=a),qe&&B.some(b=>b.id===qe)){z!==qe&&Me(qe);return}if(B.some(b=>b.id===z))return;const u=B[0].id;Me(u)},[B,l,w,z,qe,d]),n.useEffect(()=>{if(!Un(w)||W.length===0)return;if(Ie&&W.some(c=>c.value===Ie)){he!==Ie&&Ue(Ie);return}const e=s==null?void 0:s.defaultReasoningLevel;if(e&&W.some(c=>c.value===e)){he!==e&&Ue(e);return}if(W.some(c=>c.value===he))return;const a=W[0].value;Ue(a)},[W,s==null?void 0:s.defaultReasoningLevel,w,he,Ie]),n.useEffect(()=>{let e=!1;const a=Pt.current;return Bn().then(c=>{e||Pt.current!==a||ze(c.items.map(u=>({id:u.id,text:u.text})))}).catch(()=>{}),()=>{e=!0}},[]),n.useEffect(()=>{gs(l)},[l,gs]),n.useEffect(()=>{if(!l)return;const e=l,a=new Set(X.map(b=>b.id));re.current.forEach((b,j)=>{a.has(j)||re.current.delete(j)});let c=!1;async function u(){if(J.length===0&&X.length===0){_s(e);return}const b=await Promise.all(X.map(async j=>{const k=re.current.get(j.id);return k&&k.fileName===j.file.name&&k.fileSize===j.file.size&&k.lastModified===j.file.lastModified&&k.mimeType===_e(j.file)?k:{id:j.id,fileName:j.file.name,mimeType:_e(j.file),fileSize:j.file.size,lastModified:j.file.lastModified,contentBase64:await Os(j.file)}}));c||(re.current=new Map(b.map(j=>[j.id,j])),io(e,{content:J,attachments:b}))}return u(),()=>{c=!0}},[X,J,l]),n.useEffect(()=>{const e=Ne.current;e&&(e.style.height="0px",e.style.height=`${Math.min(e.scrollHeight,120)}px`)},[J]),n.useEffect(()=>{T.allowed||(re.current.clear(),pe(!1),ut([]))},[T.allowed,ut]),n.useEffect(()=>{q.isMobile||pe(!1)},[q.isMobile]),n.useEffect(()=>()=>{Y.current.forEach(e=>{URL.revokeObjectURL(e)}),Y.current.clear()},[]),n.useEffect(()=>{function e(){var a;(a=Ne.current)==null||a.focus()}return window.addEventListener(qs,e),()=>{window.removeEventListener(qs,e)}},[]),n.useEffect(()=>{if(!i){Se(null),Ve(!1),Pe(null),Qe(!1),Ct({}),Ye(null);return}if(rt){Se(null),Ve(!1);return}let e=!1;return Se(Ut(i.targetProvider)),Ve(!0),Ps(i.targetProvider,i.workspaceId,{providerConfigMode:O.providerConfigMode,providerPresetId:O.providerConfigMode==="cc-switch-preset"?O.providerPresetId:null}).then(a=>{e||Se(a)}).catch(()=>{e||Se(Ut(i.targetProvider))}).finally(()=>{e||Ve(!1)}),()=>{e=!0}},[i,O.providerConfigMode,O.providerPresetId,rt]),n.useEffect(()=>{if(!i){Ct({});return}let e=!1;return $n(ot,i.workspaceId).then(a=>{e||Ct(a)}),()=>{e=!0}},[i==null?void 0:i.workspaceId,ot]),n.useEffect(()=>{!i||!v||le.length!==0&&(le.includes(i.targetProvider)||v({...i,targetProvider:le[0]??i.targetProvider,targetModel:null,targetProviderConfigMode:"global-default",targetProviderPresetId:null}))},[i,v,le]),n.useEffect(()=>{!i||!i.targetModel||!v||ee.some(e=>e.id===i.targetModel)||v({...i,targetModel:null})},[ee,i,v]);const gn=n.useCallback(e=>{if(!(!i||!v||e===i.targetProvider)){if(e!==i.sourceProvider&&i.targetProvider===i.sourceProvider){Ye(e);return}e===w&&de(e)?(K(ne.providerConfigMode),Q(ne.providerPresetId)):(K("global-default"),Q(null)),v({...i,targetProvider:e,targetModel:null,targetProviderConfigMode:e===w&&de(e)?ne.providerConfigMode:"global-default",targetProviderPresetId:e===w&&de(e)?ne.providerPresetId:null})}},[ne,i,v,w]),bs=n.useCallback(e=>{!i||!v||v({...i,targetModel:e===ft?null:e})},[i,v]),bn=n.useCallback(e=>{!i||!v||(e===ue?(K("global-default"),Q(null)):(K("cc-switch-preset"),Q(e)),v({...i,targetModel:null,targetProviderConfigMode:e===ue?"global-default":"cc-switch-preset",targetProviderPresetId:e===ue?null:e}))},[i,v]),xn=n.useCallback(()=>{!i||!Xe||!v||(K("global-default"),Q(null),v({...i,targetProvider:Xe,targetModel:null,targetProviderConfigMode:"global-default",targetProviderPresetId:null}),Ye(null))},[i,v,Xe]),xs=n.useCallback(()=>{Ye(null)},[]);async function yn(e){if(kt.current)return;const a=J.trim(),c=X;if(a.length===0&&c.length===0||!Nt.allowed||P||Ot){Le({title:P?o("conversation.runtimeRunning"):ct??Nt.reason??o("conversation.capabilityDenied"),tone:"error"});return}kt.current=!0,tt.trigger(e==="queue"?"selection":"action"),Yt(!0),me(""),Ce([]),pe(!1),$e(!1),De(!1),fe(!1),D(!1);try{const u=await Promise.all(c.map(async k=>({kind:k.kind,fileName:k.file.name,mimeType:_e(k.file),fileSize:k.file.size,contentBase64:await Os(k.file)}))),b=c.map(k=>yo(k.file,k.id));await(e==="queue"&&L?L:we)(a,{model:_||A!=null&&A.usesProviderDefault?void 0:z||void 0,reasoningLevel:_?void 0:nt&&W.length>0?he:void 0,providerConfigMode:_?O.providerConfigMode:F,providerPresetId:_?O.providerConfigMode==="cc-switch-preset"?O.providerPresetId:null:F==="cc-switch-preset"?H:null,attachments:u,attachmentMeta:b}),wo(c),c.forEach(k=>{k.previewUrl&&Y.current.delete(k.previewUrl)})}catch(u){me(a),Ce(c),Le({title:u instanceof Error&&u.message==="FILE_READ_FAILED"?o("conversation.attachmentReadFailed"):u instanceof Error?u.message:o("conversation.capabilityDenied"),tone:"error"})}finally{Yt(!1),kt.current=!1}}async function ys(e){e.preventDefault(),await yn(At?"queue":"send")}async function wn(){if(!(!ds||!R||Jt))try{Xt(!0),tt.trigger("action"),await R()}catch(e){Le({title:e instanceof Error?e.message:o("conversation.capabilityInterruptDisabled"),tone:"error"})}finally{Xt(!1)}}const ws=vt||x||P||Ot||!Nt.allowed||!cs,Ms=vt||x||P||!T.allowed,Mn=J.length===0&&!P,Cs=t.jsxs("section",{ref:m,className:"composer-panel",children:[t.jsxs("form",{className:"composer-form",onSubmit:ys,children:[t.jsx("input",{id:G,ref:jt,type:"file",multiple:!0,tabIndex:-1,"aria-hidden":"true",style:Is,onChange:ps}),t.jsx("input",{id:zs,ref:ts,type:"file",accept:"image/*",capture:"environment",tabIndex:-1,"aria-hidden":"true",style:Is,onChange:ps}),t.jsxs("div",{className:"composer-input-container","data-drag-active":Be?"true":void 0,onDragOver:ln,onDragLeave:cn,onDrop:dn,children:[i?t.jsxs("div",{className:"composer-fork-draft",children:[t.jsxs("div",{className:"composer-fork-draft-main",children:[t.jsxs("div",{className:"composer-fork-draft-copy",children:[t.jsx("span",{className:"composer-fork-draft-label",children:o("conversation.forkDraftLabel")}),t.jsx("span",{className:"composer-fork-draft-text",children:go(i.content)})]}),t.jsxs("div",{className:"composer-fork-config",children:[t.jsxs("div",{className:"composer-fork-config-grid",children:[t.jsxs("div",{className:"composer-fork-field",children:[t.jsx("span",{className:"composer-fork-model-label",children:o("conversation.forkTargetProviderLabel")}),t.jsx(ht,{ariaLabel:o("conversation.forkTargetProviderLabel"),value:i.targetProvider,options:tn,onChange:e=>gn(e),compact:!0})]}),t.jsxs("div",{className:"composer-fork-field",children:[t.jsx("span",{className:"composer-fork-model-label",children:o("conversation.forkTargetModelLabel")}),Zs?t.jsx(Ls,{ariaLabel:o("conversation.forkTargetModelLabel"),triggerLabel:en,presetOptions:at,selectedPresetValue:It,selectedPresetSummary:(ae==null?void 0:ae.summary)??null,onSelectPreset:bn,modelOptions:is,selectedModelValue:it,onSelectModel:bs,loadingPresets:Qs,loadingModels:Mt,modelColumnDisabled:O.providerConfigMode==="cc-switch-preset"&&Mt&&wt===null,showPresetColumn:Tt,modelEmptyText:o("conversation.deploymentModelEmpty")}):t.jsx(ht,{ariaLabel:o("conversation.forkTargetModelLabel"),value:it,options:is,onChange:bs,disabled:Mt||Ot,compact:!0})]})]}),ct?t.jsx("p",{className:"composer-capability-hint",children:ct}):null]})]}),C?t.jsx("button",{type:"button",className:"composer-fork-draft-clear","aria-label":o("conversation.forkDraftClear"),title:o("conversation.forkDraftClear"),onClick:C,children:t.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}):null]}):null,X.length>0?t.jsx("div",{className:"composer-attachments",children:X.map(e=>t.jsxs("div",{className:"composer-attachment-card",children:[e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:o("conversation.attachmentPreviewAlt"),className:"composer-attachment-preview"}):t.jsx("div",{className:"composer-attachment-file","aria-hidden":"true",children:t.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[t.jsx("path",{d:"M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7z"}),t.jsx("path",{d:"M14 2v5h5"}),t.jsx("path",{d:"M9 13h6"}),t.jsx("path",{d:"M9 17h6"})]})}),t.jsxs("div",{className:"composer-attachment-meta",children:[t.jsx("span",{className:"attachment-name",title:e.file.name,children:e.file.name}),t.jsx("span",{className:"attachment-size",children:vo(e.file.size)})]}),t.jsx("button",{type:"button",className:"attachment-remove",onClick:()=>an(e.id),"aria-label":o("conversation.removeAttachment"),children:t.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},e.id))}):null,Be?t.jsx("div",{className:"composer-drop-hint",children:o("conversation.attachmentDropHint")}):null,t.jsxs("div",{className:"composer-input-wrapper",children:[t.jsx("textarea",{ref:Ne,className:"composer-input",value:J,placeholder:r??o("conversation.composerPlaceholder"),readOnly:P,"aria-readonly":P,onChange:e=>me(e.target.value),rows:1,onFocus:()=>D(!1),onCompositionStart:()=>{Rt(),St.current=!0},onCompositionEnd:()=>{St.current=!1,Ze.current=!0,Ee.current=globalThis.setTimeout(()=>{Ze.current=!1,Ee.current=null},0)},onPaste:e=>{if(P||!T.allowed)return;const a=Array.from(e.clipboardData.items).filter(c=>c.kind==="file").map(c=>c.getAsFile()).filter(c=>!!c);a.length!==0&&(e.preventDefault(),Te(a))},onKeyDown:e=>{if(e.key==="Escape"&&D(!1),e.key==="Enter"&&!e.shiftKey){if(Co(e,St.current,Ze.current))return;e.preventDefault(),ws||ys(e)}}}),t.jsx("div",{className:"composer-input-actions",children:nn?t.jsx("button",{className:"composer-send composer-send-busy",type:"button",disabled:!Ft,onClick:()=>{Ft&&wn()},"aria-label":us,title:us,children:t.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:t.jsx("rect",{x:"6",y:"6",width:"12",height:"12"})})}):t.jsx("button",{className:"composer-send",type:"submit",disabled:ws,"aria-label":ms,title:ms,children:t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[t.jsx("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),t.jsx("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})})]}),Ws?t.jsx("div",{className:"composer-slash-menu",role:"menu","aria-label":o("conversation.slashMenuTitle"),children:Ys.map(e=>t.jsxs("button",{type:"button",className:"composer-slash-item",onClick:()=>hn(e.command),children:[t.jsx("span",{className:"composer-slash-command",children:e.command}),t.jsx("span",{className:"composer-slash-label",children:e.label})]},e.command))}):null,t.jsxs("div",{className:"composer-controls",children:[t.jsxs("div",{className:"composer-controls-left",children:[T.allowed?q.isNativeMobile?t.jsx("button",{type:"button",className:"composer-attach-btn","aria-label":o("conversation.attachFiles"),title:o("conversation.attachFiles"),disabled:Ms,onClick:un,children:t.jsx(Dt,{})}):Ms?t.jsx("button",{type:"button",className:"composer-attach-btn","aria-label":o("conversation.attachFiles"),title:o("conversation.attachFiles"),disabled:!0,children:t.jsx(Dt,{})}):t.jsx("label",{htmlFor:G,className:"composer-attach-btn","aria-label":o("conversation.attachFiles"),title:o("conversation.attachFiles"),onClick:()=>{D(!1)},children:t.jsx(Dt,{})}):null,!_&&ve?t.jsx(Ls,{ariaLabel:o("conversation.modelSelectorLabel"),triggerLabel:Js,presetOptions:st,selectedPresetValue:Et,selectedPresetSummary:(ie==null?void 0:ie.summary)??null,onSelectPreset:on,modelOptions:ns,selectedModelValue:z,onSelectModel:hs,loadingPresets:Vs,loadingModels:Zt,modelColumnDisabled:F==="cc-switch-preset"&&Zt&&bt===null,showPresetColumn:qt,modelEmptyText:o("conversation.deploymentModelEmpty")}):null,!_&&!ve?t.jsx(ht,{ariaLabel:o("conversation.modelSelectorLabel"),value:z,options:ns,onChange:hs}):null,!_&&nt&&W.length>0?t.jsx(ht,{ariaLabel:o("conversation.reasoningSelectorLabel"),value:he,options:Xs,onChange:e=>rn(e),compact:!0}):null,Gs?t.jsxs("button",{type:"button",className:"composer-slash-btn",onClick:mn,title:o("conversation.slashMenu"),children:[t.jsx("span",{className:"slash-icon",children:"/"}),t.jsx("span",{children:o("conversation.slashMenu")})]}):null,t.jsx(Eo,{contextUsage:g}),t.jsx(Xn,{provider:y,messages:M,variant:"composer"})]}),Mn?t.jsx("div",{className:"composer-quick-phrase-group",children:t.jsx("button",{type:"button",className:"composer-quick-phrase-trigger","aria-label":o("conversation.quickPhraseTrigger"),title:o("conversation.quickPhraseTrigger"),onClick:()=>{De(!0),D(!1)},children:t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("path",{d:"M7 8h10"}),t.jsx("path",{d:"M7 12h8"}),t.jsx("path",{d:"M7 16h5"}),t.jsx("path",{d:"M5 5h14v14H9l-4 4V5z"})]})})}):null]})]})]}),t.jsx(Bt,{open:Hs,title:o("conversation.quickPhraseModalTitle"),description:o("conversation.quickPhraseModalDescription"),className:"composer-quick-phrase-modal",onClose:()=>{De(!1),fe(!1)},children:t.jsxs("div",{className:"composer-quick-phrase-modal-body",children:[t.jsxs("div",{className:"composer-quick-phrase-toolbar",children:[t.jsx("div",{className:"composer-quick-phrase-toolbar-copy",children:t.jsx("span",{children:o("conversation.quickPhraseListLabel")})}),t.jsx("button",{type:"button",className:"primary-button",disabled:je,onClick:()=>fe(!0),children:o("conversation.quickPhraseOpenCreateAction")})]}),t.jsx("div",{className:"composer-quick-phrase-list",role:"list","aria-label":o("conversation.quickPhraseListLabel"),children:I.length===0?t.jsx("div",{className:"composer-quick-phrase-empty",children:o("conversation.quickPhraseEmpty")}):I.map((e,a)=>t.jsxs("div",{className:"composer-quick-phrase-item",role:"listitem",children:[t.jsxs("button",{type:"button",className:"composer-quick-phrase-select",onClick:()=>vn(e.text),children:[t.jsx("span",{className:"composer-quick-phrase-order",children:o("conversation.quickPhraseOrderLabel",{index:a+1})}),t.jsx("span",{className:"composer-quick-phrase-text",children:e.text})]}),t.jsxs("div",{className:"composer-quick-phrase-actions",children:[t.jsx("button",{type:"button",className:"composer-quick-phrase-action",disabled:je||a===0,"aria-label":o("conversation.quickPhraseMoveUp"),title:o("conversation.quickPhraseMoveUp"),onClick:()=>vs(e.id,-1),children:"↑"}),t.jsx("button",{type:"button",className:"composer-quick-phrase-action",disabled:je||a===I.length-1,"aria-label":o("conversation.quickPhraseMoveDown"),title:o("conversation.quickPhraseMoveDown"),onClick:()=>vs(e.id,1),children:"↓"}),t.jsx("button",{type:"button",className:"composer-quick-phrase-action is-danger",disabled:je,"aria-label":o("conversation.quickPhraseDelete"),title:o("conversation.quickPhraseDelete"),onClick:()=>fn(e.id),children:"×"})]})]},e.id))})]})}),t.jsx(Bt,{open:Ks,title:o("conversation.quickPhraseCreateModalTitle"),description:o("conversation.quickPhraseCreateModalDescription"),className:"composer-quick-phrase-create-modal",onClose:()=>fe(!1),children:t.jsxs("div",{className:"composer-quick-phrase-modal-body",children:[t.jsxs("label",{className:"workbench-modal-field",children:[t.jsx("span",{children:o("conversation.quickPhraseCreateLabel")}),t.jsx("textarea",{className:"composer-quick-phrase-textarea",value:He,placeholder:o("conversation.quickPhraseCreatePlaceholder"),rows:4,onChange:e=>Qt(e.target.value)})]}),t.jsxs("div",{className:"workbench-modal-actions",children:[t.jsx("button",{type:"button",className:"secondary-button",onClick:()=>fe(!1),children:o("common.cancel")}),t.jsx("button",{type:"button",className:"primary-button",disabled:je||He.trim().length===0,onClick:()=>{pn()},children:o("conversation.quickPhraseCreateAction")})]})]})}),t.jsx(Bt,{open:Xe!==null,title:o("conversation.forkSwitchConfirmTitle"),description:o("conversation.forkSwitchConfirmDescription"),className:"composer-fork-confirm-modal",onClose:xs,children:t.jsxs("div",{className:"composer-fork-confirm-body",children:[t.jsxs("div",{className:"composer-fork-confirm-list",children:[t.jsxs("div",{className:"composer-fork-confirm-item",children:[t.jsx("span",{className:"composer-fork-confirm-icon is-keep","aria-hidden":"true",children:t.jsx(Po,{})}),t.jsxs("div",{className:"composer-fork-confirm-copy",children:[t.jsx("strong",{children:o("conversation.forkSwitchConfirmKeepTitle")}),t.jsx("p",{children:o("conversation.forkSwitchConfirmKeepBody")})]})]}),t.jsxs("div",{className:"composer-fork-confirm-item",children:[t.jsx("span",{className:"composer-fork-confirm-icon is-convert","aria-hidden":"true",children:t.jsx(Ro,{})}),t.jsxs("div",{className:"composer-fork-confirm-copy",children:[t.jsx("strong",{children:o("conversation.forkSwitchConfirmConvertTitle")}),t.jsx("p",{children:o("conversation.forkSwitchConfirmConvertBody")})]})]}),t.jsxs("div",{className:"composer-fork-confirm-item",children:[t.jsx("span",{className:"composer-fork-confirm-icon is-drop","aria-hidden":"true",children:t.jsx(No,{})}),t.jsxs("div",{className:"composer-fork-confirm-copy",children:[t.jsx("strong",{children:o("conversation.forkSwitchConfirmDropTitle")}),t.jsx("p",{children:o("conversation.forkSwitchConfirmDropBody")})]})]})]}),t.jsxs("div",{className:"workbench-modal-actions",children:[t.jsx("button",{type:"button",className:"secondary-button",onClick:xs,children:o("conversation.forkSwitchKeepNative")}),t.jsx("button",{type:"button",className:"primary-button",onClick:xn,children:o("conversation.forkSwitchConfirmAction")})]})]})}),t.jsx(jo,{open:Ds&&q.isNativeMobile,onClose:()=>pe(!1),onSelectCamera:()=>fs("camera"),onSelectLibrary:()=>fs("library")})]});return $?Wt.createPortal(Cs,$):Cs}function jo({open:s,onClose:r,onSelectCamera:l,onSelectLibrary:d}){return t.jsx(zn,{open:s,title:o("conversation.attachmentSourceSheetTitle"),description:o("conversation.attachmentSourceSheetDescription"),kind:"action",height:"auto",className:"composer-attachment-sheet",cardClassName:"composer-attachment-sheet-card",bodyClassName:"composer-attachment-sheet-body",showHandle:!0,onClose:r,children:t.jsxs(Dn,{className:"composer-attachment-sheet-actions",children:[t.jsx(Rs,{as:"button",className:"mobile-workspace-home-row composer-attachment-sheet-option","aria-label":o("conversation.attachmentTakePhoto"),label:o("conversation.attachmentTakePhoto"),description:o("conversation.attachmentTakePhotoHint"),trailing:t.jsx(ko,{}),onClick:l}),t.jsx(Rs,{as:"button",className:"mobile-workspace-home-row composer-attachment-sheet-option","aria-label":o("conversation.attachmentChooseFromLibrary"),label:o("conversation.attachmentChooseFromLibrary"),description:o("conversation.attachmentChooseFromLibraryHint"),trailing:t.jsx(So,{}),onClick:d})]})})}function ko(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[t.jsx("path",{d:"M4 8h3l1.5-2h7L17 8h3a1 1 0 0 1 1 1v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a1 1 0 0 1 1-1Z"}),t.jsx("circle",{cx:"12",cy:"13",r:"4"})]})}function Dt(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"4"}),t.jsx("path",{d:"M8 12h8M12 8v8"})]})}function So(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[t.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2.5"}),t.jsx("path",{d:"m7.5 15 3-3 2.5 2.5 3-4L18 13.5"}),t.jsx("circle",{cx:"8.75",cy:"8.75",r:"1.25",fill:"currentColor",stroke:"none"})]})}function Po(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[t.jsx("path",{d:"M12 3 4 7v5c0 5 3.5 8 8 9 4.5-1 8-4 8-9V7l-8-4Z"}),t.jsx("path",{d:"m9.5 12 1.8 1.8L15 10.2"})]})}function Ro(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[t.jsx("path",{d:"M4 7h9"}),t.jsx("path",{d:"m10 3 4 4-4 4"}),t.jsx("path",{d:"M20 17h-9"}),t.jsx("path",{d:"m14 13-4 4 4 4"})]})}function No(){return t.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[t.jsx("path",{d:"m7 7 10 10"}),t.jsx("path",{d:"M17 7 7 17"}),t.jsx("path",{d:"M12 3v2"}),t.jsx("path",{d:"M12 19v2"})]})}function Eo({contextUsage:s}){const[r,l]=n.useState(!1),d=n.useRef(null),p=n.useRef(null),[f,h]=n.useState(null),i=n.useId(),C=s?Math.round(s.usageRatio*100):null,v=s?Math.max(0,Math.min(s.usageRatio,1)):0,m=Lo(v),$=s?qo(s.contextWindowSource):null,V=s?`${o("conversation.contextUsageTitle")} ${C}%`:o("conversation.contextUsageUnavailable"),N=n.useCallback(()=>{const g=d.current;if(!g||typeof window>"u")return;const y=g.getBoundingClientRect(),M=window.innerWidth,S=window.innerHeight,x=12,E=10,R=Math.min(240,Math.max(188,M-x*2)),L=Math.min(Math.max(x,y.left+y.width/2-R/2),Math.max(x,M-R-x)),we=y.top-x,q=S-y.bottom-x,G=we>=140||we>=q;h({position:"fixed",left:L,width:R,maxWidth:M-x*2,top:G?void 0:y.bottom+E,bottom:G?S-y.top+E:void 0})},[]);return n.useEffect(()=>{if(!r)return;function g(M){var x,E;const S=M.target;!((x=d.current)!=null&&x.contains(S))&&!((E=p.current)!=null&&E.contains(S))&&l(!1)}function y(M){M.key==="Escape"&&l(!1)}return window.addEventListener("pointerdown",g),window.addEventListener("keydown",y),window.addEventListener("resize",N),window.addEventListener("scroll",N,!0),N(),()=>{window.removeEventListener("pointerdown",g),window.removeEventListener("keydown",y),window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)}},[r,N]),t.jsxs(t.Fragment,{children:[t.jsx("button",{ref:d,type:"button",className:`composer-context-ring ${m}`,style:{"--context-usage-progress":`${v}`},"aria-label":V,"aria-expanded":r,"aria-describedby":r?i:void 0,onClick:()=>l(g=>!g),onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),onFocus:()=>l(!0),onBlur:()=>l(!1),children:t.jsx("span",{className:"composer-context-ring-value",children:C===null?"--":t.jsxs(t.Fragment,{children:[t.jsx("span",{children:C}),t.jsx("span",{className:"composer-context-ring-suffix",children:"%"})]})})}),r&&f&&typeof document<"u"?Wt.createPortal(t.jsx("div",{ref:p,id:i,className:"composer-context-tooltip",style:f,role:"tooltip",children:s?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"composer-context-tooltip-title",children:o("conversation.contextUsageTitle")}),t.jsxs("div",{className:"composer-context-tooltip-line",children:[C,"% · ",Ht(s.promptTokens)," /"," ",Ht(s.contextWindow)," tokens"]}),s.cachedInputTokens>0?t.jsx("div",{className:"composer-context-tooltip-line",children:o("conversation.contextUsageCachedTokens").replace("{count}",Ht(s.cachedInputTokens))}):null,$?t.jsx("div",{className:"composer-context-tooltip-meta",children:$}):null,s.isEstimated?t.jsx("div",{className:"composer-context-tooltip-meta",children:o("conversation.contextUsageEstimated")}):null]}):t.jsx("div",{className:"composer-context-tooltip-line",children:o("conversation.contextUsageUnavailable")})}),document.body):null]})}function Lo(s){return s>=.95?"is-critical":s>=.8?"is-warning":"is-normal"}function qo(s){switch(s){case"provider-log":return o("conversation.contextUsageSourceProviderLog");case"provider-runtime":return o("conversation.contextUsageSourceProviderRuntime");case"provider-config":return o("conversation.contextUsageSourceProviderConfig");case"model-map":return o("conversation.contextUsageSourceModelMap");default:return""}}function Ht(s){return new Intl.NumberFormat().format(s)}function Ho({requests:s,replyingRequestId:r,onReply:l}){const[d,p]=n.useState({}),f=n.useMemo(()=>s.filter(h=>h.status==="pending"),[s]);return f.length===0?null:t.jsxs("section",{className:"permission-request-list",children:[t.jsxs("div",{className:"permission-request-list-header",children:[t.jsxs("div",{children:[t.jsx("strong",{children:o("conversation.permissionRequestSectionTitle")}),t.jsx("p",{children:o("conversation.permissionRequestSectionDescription")})]}),t.jsx("span",{className:"permission-request-count",children:f.length})]}),t.jsx("div",{className:"permission-request-stack",children:f.map(h=>{var V,N;const i=d[h.id]??{},C=h.paths.filter(Boolean),v=h.kind==="command"&&!!((V=h.command)!=null&&V.trim()),m=h.questions.length===0&&C.length===0&&!v&&!!((N=h.summary)!=null&&N.trim()),$=h.kind==="user_input"&&h.questions.some(g=>{var y;return(((y=i[g.id])==null?void 0:y.filter(Boolean).length)??0)===0});return t.jsxs("article",{className:"permission-request-card",children:[t.jsxs("header",{className:"permission-request-card-header",children:[t.jsxs("div",{className:"permission-request-provider",children:[t.jsx("span",{className:"permission-request-provider-icon","aria-hidden":"true",children:t.jsx("img",{src:Hn(h.provider),alt:"",loading:"lazy"})}),t.jsxs("div",{className:"permission-request-provider-copy",children:[t.jsx("strong",{children:h.title}),t.jsx("span",{children:Fs(h.provider,"full")})]})]}),t.jsx("span",{className:"permission-request-kind",children:To(h.kind)})]}),t.jsxs("div",{className:"permission-request-card-body",children:[C.length>0?t.jsx("div",{className:"permission-request-block",children:t.jsx("ul",{className:"permission-request-target-list",children:C.map(g=>t.jsxs("li",{className:"permission-request-target-item",children:[t.jsx("strong",{children:Ao(g)}),t.jsx("span",{children:g})]},`${h.id}:${g}`))})}):null,v?t.jsxs("div",{className:"permission-request-block",children:[t.jsx("div",{className:"permission-request-block-label",children:o("conversation.permissionRequestCommandLabel")}),t.jsx("pre",{children:h.command})]}):null,m?t.jsx("p",{className:"permission-request-summary",children:h.summary}):null,h.questions.length>0?t.jsxs("div",{className:"permission-request-block",children:[t.jsx("div",{className:"permission-request-block-label",children:o("conversation.permissionRequestQuestionsLabel")}),t.jsx("div",{className:"permission-request-question-list",children:h.questions.map(g=>t.jsxs("div",{className:"permission-request-question",children:[t.jsx("div",{className:"permission-request-question-header",children:g.header}),t.jsx("p",{children:g.question}),t.jsx("div",{className:"permission-request-question-options",children:g.options.map(y=>{var S;const M=((S=i[g.id])==null?void 0:S.includes(y.label))??!1;return t.jsxs("label",{className:"permission-request-question-option",children:[t.jsx("input",{type:"radio",name:`${h.id}:${g.id}`,checked:M,onChange:()=>{p(x=>({...x,[h.id]:{...x[h.id]??{},[g.id]:[y.label]}}))}}),t.jsxs("span",{children:[t.jsx("strong",{children:y.label}),y.description?t.jsx("small",{children:y.description}):null]})]},`${g.id}:${y.label}`)})})]},g.id))})]}):null]}),t.jsx("footer",{className:"permission-request-card-footer",children:h.actions.map(g=>t.jsx("button",{type:"button",className:Io(g.tone),disabled:r===h.id||g.value==="submit"&&$,onClick:()=>void l(h.id,{action:g.value,answers:Object.keys(i).length>0?i:void 0}),children:r===h.id?o("conversation.permissionRequestSubmitting"):g.label},`${h.id}:${g.value}`))})]},h.id)})})]})}function Io(s){return s==="danger"?"workbench-danger-button permission-request-action":s==="primary"?"primary-button permission-request-action":"secondary-button permission-request-action"}function To(s){return s==="command"?o("conversation.permissionRequestKindCommand"):s==="file_change"?o("conversation.permissionRequestKindFileChange"):s==="permissions"?o("conversation.permissionRequestKindPermissions"):s==="user_input"?o("conversation.permissionRequestKindUserInput"):o("conversation.permissionRequestKindToolCall")}function Ao(s){return s.split(/[/\\]+/).filter(Boolean).at(-1)??s}class Ko{constructor(r){U(this,"socket",null);U(this,"disposed",!1);U(this,"authRecoveryInFlight",!1);U(this,"latestCursor");U(this,"subscribed",!1);U(this,"pendingOlderRequest",null);U(this,"inFlightOlderRequest",null);U(this,"subscribeStartedAtMs",null);U(this,"firstBackfillLogged",!1);U(this,"olderRequestStartedAtMs",null);U(this,"connectionManager");this.options=r,this.latestCursor=r.cursor,this.connectionManager=new Gn({onReconnect:l=>{this.connect(l)},onStateChange:r.onConnectionChange})}start(){this.connectionManager.start()}updateCursor(r){this.latestCursor=r}reconnectNow(){this.connectionManager.reconnectNow()}requestOlderMessages(r,l){return Oo(this.socket)?this.subscribed?(this.sendOlderMessagesRequest(r,l),!0):(this.pendingOlderRequest={cursor:r,limit:l},!0):!1}close(){var r;this.disposed=!0,this.subscribed=!1,this.pendingOlderRequest=null,this.inFlightOlderRequest=null,this.connectionManager.close(),(r=this.socket)==null||r.close(),this.socket=null}connect(r){var C;if(this.disposed)return;r&&this.socket&&(this.socket.close(),this.socket=null);const l=(C=ks.getState().session)==null?void 0:C.accessToken;if(!l){this.options.onUnauthorized();return}const d=Sn(),p=Pn(d),f=p.baseUrl,h=`${Rn("/ws",f)}?access_token=${encodeURIComponent(l)}`,i=p.transport.createWebSocket({path:"/ws",baseUrl:f,url:h});this.subscribed=!1,this.firstBackfillLogged=!1,this.socket=i,i.addEventListener("open",()=>{this.subscribeStartedAtMs=performance.now(),i.send(JSON.stringify({type:"session.subscribe",sessionId:this.options.sessionId,cursor:this.latestCursor,limit:this.options.limit})),Oe("session.subscribe.sent",{sessionId:this.options.sessionId,hasCursor:this.latestCursor!==null,limit:this.options.limit,baseUrl:f})}),i.addEventListener("message",v=>{if(!(v instanceof MessageEvent)||typeof v.data!="string")return;const m=JSON.parse(v.data);if(m.type==="system.connected"){this.connectionManager.markConnected();return}if(m.type==="session.subscribed"){this.subscribed=!0,Oe("session.subscribe.ack",{sessionId:m.sessionId,durationMs:Kt(this.subscribeStartedAtMs)}),this.options.onSubscribed(),this.flushPendingOlderRequest();return}if(m.type==="session.error"){if(this.clearOlderMessagesRequest(),m.error_code==="UNAUTHORIZED"){this.handleUnauthorized();return}this.options.onError(m);return}if(m.type==="session.runtime_status"){this.options.onRuntimeStatus(m);return}if(m.type==="session.activity"){this.options.onActivity(m);return}if(m.type==="session.history_older"){Oe("session.history_older.received",{sessionId:m.sessionId,messageCount:m.messages.length,olderCursor:m.olderCursor,durationMs:Kt(this.olderRequestStartedAtMs)}),this.olderRequestStartedAtMs=null,this.clearOlderMessagesRequest(),this.options.onOlderHistory(m);return}if(m.type==="session.runtime_message"){this.options.onRuntimeMessage(m);return}if(m.type==="session.runtime_error"){this.options.onRuntimeError(m);return}if(m.type==="session.interrupted"){this.options.onInterrupted(m);return}if(m.type==="session.permission_request"){this.options.onPermissionRequest(m);return}if(m.type==="session.permission_request_resolved"){this.options.onPermissionRequestResolved(m);return}this.latestCursor=m.cursor,this.firstBackfillLogged||(this.firstBackfillLogged=!0,Oe("session.initial_messages.received",{sessionId:m.sessionId,eventType:m.type,messageCount:m.messages.length,olderCursor:m.olderCursor??null,durationMs:Kt(this.subscribeStartedAtMs)})),this.options.onEnvelope(m)}),i.addEventListener("close",()=>{this.disposed||this.socket!==i||(this.subscribed=!1,this.requeueInFlightOlderRequest(),this.connectionManager.markDisconnected())}),i.addEventListener("error",()=>{this.disposed||this.socket!==i||this.connectionManager.markTransientFailure()})}handleUnauthorized(){if(this.authRecoveryInFlight||this.disposed)return;this.authRecoveryInFlight=!0,this.subscribed=!1,this.requeueInFlightOlderRequest();const r=this.socket;this.socket=null,r==null||r.close(),ks.refresh().then(l=>{if(this.authRecoveryInFlight=!1,!this.disposed){if(l.status==="refreshed"){this.connectionManager.reconnectNow();return}if(l.status==="deferred"){this.connectionManager.markDisconnected();return}this.options.onUnauthorized()}})}sendOlderMessagesRequest(r,l){var d;this.inFlightOlderRequest={cursor:r,limit:l},this.olderRequestStartedAtMs=performance.now(),(d=this.socket)==null||d.send(JSON.stringify({type:"session.load_older",sessionId:this.options.sessionId,cursor:r,limit:l})),Oe("session.load_older.sent",{sessionId:this.options.sessionId,hasCursor:r!==null,limit:l})}flushPendingOlderRequest(){if(!this.pendingOlderRequest)return;const r=this.pendingOlderRequest;this.pendingOlderRequest=null,this.sendOlderMessagesRequest(r.cursor,r.limit)}clearOlderMessagesRequest(){this.pendingOlderRequest=null,this.inFlightOlderRequest=null}requeueInFlightOlderRequest(){this.inFlightOlderRequest&&(this.pendingOlderRequest=this.inFlightOlderRequest,this.inFlightOlderRequest=null,this.olderRequestStartedAtMs=null)}}function Kt(s){return s===null||typeof performance>"u"?null:Math.round(performance.now()-s)}function Oo(s){return s!==null&&s.readyState===1}export{Do as C,Ho as P,Ko as R};
@@ -1 +1 @@
1
- import{k as A,n as m}from"./index-NGxWr8Ix.js";function S(r,t,n){var y;const a=p(t.tunnelDomain),l=m(t.controlBaseUrl),o=w(a,l),s=new Date().toISOString(),e=B(r.hosts,o,t.bindingId??null),c=z(n==null?void 0:n.displayName)??(e==null?void 0:e.name)??a,h={endpointId:`relay-entry:${o}`,kind:"relay",url:o,priority:0,expiresAt:null,source:"user_saved"},E=f(t.candidateEndpoints).filter(d=>d.url!==o),I=(((y=e==null?void 0:e.relayTunnel)==null?void 0:y.candidateEndpoints)??[]).filter(d=>d.url!==o),u={id:(e==null?void 0:e.id)??D(t.bindingId??null,a),name:c,baseUrl:o,kind:"remote",createdAt:(e==null?void 0:e.createdAt)??s,updatedAt:s,lastConnectedAt:(e==null?void 0:e.lastConnectedAt)??null,lastUserId:(e==null?void 0:e.lastUserId)??null,lastUsername:(e==null?void 0:e.lastUsername)??null,relayTunnel:{provider:"codingns_relay",enabled:!0,tunnelDomain:a,controlBaseUrl:l,bindingId:i(t.bindingId??null),hostFingerprint:i(t.hostFingerprint??null),candidateEndpoints:U([h,...E,...I])}},C=e?r.hosts.map(d=>d.id===e.id?u:d):[u,...r.hosts];return{activeHostId:(n==null?void 0:n.activate)===!1?r.activeHostId:u.id,activeDiscoveredHostId:(n==null?void 0:n.activate)===!1?r.activeDiscoveredHostId:null,hosts:C}}async function F(r,t=fetch){var l;const n=A(r);if(!n)return null;const a={tunnelDomain:n.tunnelDomain,controlBaseUrl:n.controlBaseUrl};try{const o=await t(new URL(`/api/v1/tunnels/${encodeURIComponent(n.tunnelDomain)}`,b(n.controlBaseUrl)).toString(),{method:"GET"});if(!o.ok)return a;const e=(await o.json()).binding;return{tunnelDomain:p((e==null?void 0:e.tunnelDomain)??n.tunnelDomain),controlBaseUrl:m((e==null?void 0:e.controlBaseUrl)??n.controlBaseUrl),bindingId:i((e==null?void 0:e.bindingId)??null),hostFingerprint:i((e==null?void 0:e.hostFingerprint)??null),candidateEndpoints:f((l=e==null?void 0:e.runtime)==null?void 0:l.candidateEndpoints)}}catch{return a}}function B(r,t,n){if(n){const a=r.find(l=>{var o;return((o=l.relayTunnel)==null?void 0:o.bindingId)===n})??null;if(a)return a}return r.find(a=>a.baseUrl===t)??null}function D(r,t){return r?`relay-entry:${r}`:`relay-entry:${t}`}function p(r){const t=r.trim().toLowerCase();if(!t||!/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(t))throw new Error("隧道域名无效");return t}function i(r){const t=r==null?void 0:r.trim();return t||null}function z(r){const t=r==null?void 0:r.trim();return t||null}function w(r,t){const n=new URL(t);return n.hostname=r,n.username="",n.password="",n.pathname="",n.search="",n.hash="",m(n.toString())}function b(r){return r.endsWith("/")?r:`${r}/`}function f(r){if(!Array.isArray(r))return[];const t=[];for(const n of r){if(typeof n!="object"||n===null||Array.isArray(n))continue;const a=i(n.endpointId),l=i(n.kind),o=i(n.url),s=n.priority,e=i(n.expiresAt),c=i(n.source);!a||!o||!Number.isFinite(s)||!R(l)||!k(c)||t.push({endpointId:a,kind:l,url:o,priority:Number(s),expiresAt:e,source:c})}return U(t)}function U(r){const t=new Map;for(const n of r)t.has(n.url)||t.set(n.url,n);return Array.from(t.values()).sort((n,a)=>n.priority!==a.priority?n.priority-a.priority:n.url.localeCompare(a.url))}function R(r){return r==="relay"||r==="lan"||r==="loopback"||r==="tailscale"||r==="custom"}function k(r){return r==="host_reported"||r==="desktop_scan"||r==="user_saved"}export{S as b,F as r};
1
+ import{k as A,n as m}from"./index-CuzMc7q2.js";function S(r,t,n){var y;const a=p(t.tunnelDomain),l=m(t.controlBaseUrl),o=w(a,l),s=new Date().toISOString(),e=B(r.hosts,o,t.bindingId??null),c=z(n==null?void 0:n.displayName)??(e==null?void 0:e.name)??a,h={endpointId:`relay-entry:${o}`,kind:"relay",url:o,priority:0,expiresAt:null,source:"user_saved"},E=f(t.candidateEndpoints).filter(d=>d.url!==o),I=(((y=e==null?void 0:e.relayTunnel)==null?void 0:y.candidateEndpoints)??[]).filter(d=>d.url!==o),u={id:(e==null?void 0:e.id)??D(t.bindingId??null,a),name:c,baseUrl:o,kind:"remote",createdAt:(e==null?void 0:e.createdAt)??s,updatedAt:s,lastConnectedAt:(e==null?void 0:e.lastConnectedAt)??null,lastUserId:(e==null?void 0:e.lastUserId)??null,lastUsername:(e==null?void 0:e.lastUsername)??null,relayTunnel:{provider:"codingns_relay",enabled:!0,tunnelDomain:a,controlBaseUrl:l,bindingId:i(t.bindingId??null),hostFingerprint:i(t.hostFingerprint??null),candidateEndpoints:U([h,...E,...I])}},C=e?r.hosts.map(d=>d.id===e.id?u:d):[u,...r.hosts];return{activeHostId:(n==null?void 0:n.activate)===!1?r.activeHostId:u.id,activeDiscoveredHostId:(n==null?void 0:n.activate)===!1?r.activeDiscoveredHostId:null,hosts:C}}async function F(r,t=fetch){var l;const n=A(r);if(!n)return null;const a={tunnelDomain:n.tunnelDomain,controlBaseUrl:n.controlBaseUrl};try{const o=await t(new URL(`/api/v1/tunnels/${encodeURIComponent(n.tunnelDomain)}`,b(n.controlBaseUrl)).toString(),{method:"GET"});if(!o.ok)return a;const e=(await o.json()).binding;return{tunnelDomain:p((e==null?void 0:e.tunnelDomain)??n.tunnelDomain),controlBaseUrl:m((e==null?void 0:e.controlBaseUrl)??n.controlBaseUrl),bindingId:i((e==null?void 0:e.bindingId)??null),hostFingerprint:i((e==null?void 0:e.hostFingerprint)??null),candidateEndpoints:f((l=e==null?void 0:e.runtime)==null?void 0:l.candidateEndpoints)}}catch{return a}}function B(r,t,n){if(n){const a=r.find(l=>{var o;return((o=l.relayTunnel)==null?void 0:o.bindingId)===n})??null;if(a)return a}return r.find(a=>a.baseUrl===t)??null}function D(r,t){return r?`relay-entry:${r}`:`relay-entry:${t}`}function p(r){const t=r.trim().toLowerCase();if(!t||!/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(t))throw new Error("隧道域名无效");return t}function i(r){const t=r==null?void 0:r.trim();return t||null}function z(r){const t=r==null?void 0:r.trim();return t||null}function w(r,t){const n=new URL(t);return n.hostname=r,n.username="",n.password="",n.pathname="",n.search="",n.hash="",m(n.toString())}function b(r){return r.endsWith("/")?r:`${r}/`}function f(r){if(!Array.isArray(r))return[];const t=[];for(const n of r){if(typeof n!="object"||n===null||Array.isArray(n))continue;const a=i(n.endpointId),l=i(n.kind),o=i(n.url),s=n.priority,e=i(n.expiresAt),c=i(n.source);!a||!o||!Number.isFinite(s)||!R(l)||!k(c)||t.push({endpointId:a,kind:l,url:o,priority:Number(s),expiresAt:e,source:c})}return U(t)}function U(r){const t=new Map;for(const n of r)t.has(n.url)||t.set(n.url,n);return Array.from(t.values()).sort((n,a)=>n.priority!==a.priority?n.priority-a.priority:n.url.localeCompare(a.url))}function R(r){return r==="relay"||r==="lan"||r==="loopback"||r==="tailscale"||r==="custom"}function k(r){return r==="host_reported"||r==="desktop_scan"||r==="user_saved"}export{S as b,F as r};
@@ -1 +1 @@
1
- import{C as n,t}from"./index-NGxWr8Ix.js";function o(){return n.request("/api/terminals/shells")}function m(e){return n.request(`/api/terminals?workspaceId=${encodeURIComponent(e)}`)}function l(e){return n.request(`/api/terminals/templates/runtime-status?workspaceId=${encodeURIComponent(e)}`)}function u(e){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}/stop`,{method:"POST"})}function p(e){return n.request("/api/terminals",{method:"POST",body:JSON.stringify(e)})}function c(e){return n.request(`/api/terminals/${encodeURIComponent(e)}`,{method:"DELETE"})}function d(e){return n.request(`/api/terminals/${encodeURIComponent(e)}/record`,{method:"DELETE"})}function f(e,r={}){const i=new URLSearchParams;typeof r.beforeSeq=="number"&&i.set("beforeSeq",String(r.beforeSeq)),typeof r.limit=="number"&&i.set("limit",String(r.limit));const a=i.toString();return n.request(`/api/terminals/${encodeURIComponent(e)}/history${a?`?${a}`:""}`)}function b(e){return n.request(`/api/terminals/templates?workspaceId=${encodeURIComponent(e)}`)}function h(e){return n.request("/api/terminals/templates",{method:"POST",body:JSON.stringify(e)})}function S(e,r){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(r)})}function T(e){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}`,{method:"DELETE"})}function q(e,r){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}/run`,{method:"POST",body:JSON.stringify(r)})}function w(e){return[{value:"",label:t("terminal.runtimeAutoOption"),description:t("terminal.runtimeAutoDescription")},{value:"tmux",label:e==="windows"?t("terminal.runtimePersistentLabel"):"tmux",description:e==="windows"?t("terminal.runtimeWindowsPersistentDescription"):t("terminal.runtimeTmuxDescription")},{value:"embedded-pty",label:"embedded-pty",description:t("terminal.runtimeEmbeddedDescription")}]}function C(e,r){return e?e==="conpty-powershell"?t("terminal.runtimeConptyPowerShellLabel"):e==="conpty-cmd"?t("terminal.runtimeConptyCmdLabel"):e==="conpty-git-bash"?t("terminal.runtimeConptyGitBashLabel"):e==="tmux"&&r==="windows"?t("terminal.runtimePersistentLabel"):e:t("terminal.runtimeAutoOption")}function R(e,r){return e?e==="embedded-pty"?"pty":e==="conpty-powershell"||e==="conpty-cmd"||e==="conpty-git-bash"||e==="tmux"&&r==="windows"?t("terminal.runtimePersistentShortLabel"):e:t("terminal.runtimeAutoShortLabel")}export{l as a,w as b,m as c,o as d,R as e,c as f,C as g,f as h,p as i,d as j,h as k,b as l,T as m,q as r,u as s,S as u};
1
+ import{C as n,t}from"./index-CuzMc7q2.js";function o(){return n.request("/api/terminals/shells")}function m(e){return n.request(`/api/terminals?workspaceId=${encodeURIComponent(e)}`)}function l(e){return n.request(`/api/terminals/templates/runtime-status?workspaceId=${encodeURIComponent(e)}`)}function u(e){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}/stop`,{method:"POST"})}function p(e){return n.request("/api/terminals",{method:"POST",body:JSON.stringify(e)})}function c(e){return n.request(`/api/terminals/${encodeURIComponent(e)}`,{method:"DELETE"})}function d(e){return n.request(`/api/terminals/${encodeURIComponent(e)}/record`,{method:"DELETE"})}function f(e,r={}){const i=new URLSearchParams;typeof r.beforeSeq=="number"&&i.set("beforeSeq",String(r.beforeSeq)),typeof r.limit=="number"&&i.set("limit",String(r.limit));const a=i.toString();return n.request(`/api/terminals/${encodeURIComponent(e)}/history${a?`?${a}`:""}`)}function b(e){return n.request(`/api/terminals/templates?workspaceId=${encodeURIComponent(e)}`)}function h(e){return n.request("/api/terminals/templates",{method:"POST",body:JSON.stringify(e)})}function S(e,r){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(r)})}function T(e){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}`,{method:"DELETE"})}function q(e,r){return n.request(`/api/terminals/templates/${encodeURIComponent(e)}/run`,{method:"POST",body:JSON.stringify(r)})}function w(e){return[{value:"",label:t("terminal.runtimeAutoOption"),description:t("terminal.runtimeAutoDescription")},{value:"tmux",label:e==="windows"?t("terminal.runtimePersistentLabel"):"tmux",description:e==="windows"?t("terminal.runtimeWindowsPersistentDescription"):t("terminal.runtimeTmuxDescription")},{value:"embedded-pty",label:"embedded-pty",description:t("terminal.runtimeEmbeddedDescription")}]}function C(e,r){return e?e==="conpty-powershell"?t("terminal.runtimeConptyPowerShellLabel"):e==="conpty-cmd"?t("terminal.runtimeConptyCmdLabel"):e==="conpty-git-bash"?t("terminal.runtimeConptyGitBashLabel"):e==="tmux"&&r==="windows"?t("terminal.runtimePersistentLabel"):e:t("terminal.runtimeAutoOption")}function R(e,r){return e?e==="embedded-pty"?"pty":e==="conpty-powershell"||e==="conpty-cmd"||e==="conpty-git-bash"||e==="tmux"&&r==="windows"?t("terminal.runtimePersistentShortLabel"):e:t("terminal.runtimeAutoShortLabel")}export{l as a,w as b,m as c,o as d,R as e,c as f,C as g,f as h,p as i,d as j,h as k,b as l,T as m,q as r,u as s,S as u};
@@ -1 +1 @@
1
- import{j as l,t as s,b as u}from"./index-NGxWr8Ix.js";import{b as x,d as k}from"./model-switch-api-CPtou49j.js";import{l as j,a as p}from"./terminal-runtime-meta-C-Lbyx2i.js";function O({workspace:e,state:r,variant:t}){return e?t==="mobile"?l.jsx(v,{workspace:e,state:r}):l.jsx(P,{workspace:e,state:r}):l.jsx("p",{className:"workbench-section-empty",children:s("shell.workspaceDetailMissingBody")})}function v({workspace:e,state:r}){const t=r.primaryAnalysis,o=r.analyses.length;return l.jsx(l.Fragment,{children:l.jsxs("section",{className:"mobile-feature-panel surface-card mobile-workspace-composition-panel",children:[l.jsx("div",{className:"mobile-feature-section-header",children:l.jsx("div",{children:l.jsx("h2",{children:s("shell.workspaceDetailRegisteredDebugAnalysisTitle")})})}),r.loading&&t===null?l.jsx("p",{children:s("common.loading")}):null,r.error?l.jsx("p",{className:"status-text","data-tone":"error",children:r.error}):null,t?l.jsxs("div",{className:"mobile-detail-grid mobile-workspace-detail-grid",children:[l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugFrameworkLabel")}),l.jsx("strong",{children:t.primaryFramework??s("common.unknown")})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugConfidenceLabel")}),l.jsx("strong",{children:y(t.confidence)})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugSummaryServiceCountLabel")}),l.jsx("strong",{children:o})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugCompatibilityLabel")}),l.jsx("strong",{children:D(t.compatibilityLevel)})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugLastAnalyzedAtLabel")}),l.jsx("strong",{children:r.lastAnalyzedAt??s("shell.workspaceDetailDebugFrameworkNoteEmpty")})]}),l.jsxs("div",{className:"mobile-detail-metric mobile-detail-metric-wide",children:[l.jsx("span",{children:s("shell.manageWorkspacePathLabel")}),l.jsx("strong",{children:e.path})]})]}):null]})})}function P({workspace:e,state:r}){const t=r.primaryAnalysis,o=r.analyses.length;return l.jsxs("section",{className:"debug-readiness-section surface-card",children:[l.jsx("div",{className:"debug-readiness-section-header",children:l.jsxs("div",{children:[l.jsx("h3",{children:s("shell.workspaceDetailRegisteredDebugAnalysisTitle")}),l.jsx("p",{children:s("shell.workspaceDetailRegisteredDebugAnalysisDescription")})]})}),r.loading&&t===null?l.jsx("p",{className:"workbench-section-empty",children:s("common.loading")}):null,r.error?l.jsx("p",{className:"workbench-manage-status status-text","data-tone":"error",children:r.error}):null,t?l.jsxs("div",{className:"debug-readiness-summary-grid",children:[l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugFrameworkLabel")}),l.jsx("strong",{children:t.primaryFramework??s("common.unknown")})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugConfidenceLabel")}),l.jsx("strong",{children:y(t.confidence)}),l.jsx("small",{children:r.lastAnalyzedAt??s("shell.workspaceDetailDebugFrameworkNoteEmpty")})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugSummaryServiceCountLabel")}),l.jsx("strong",{children:o})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugCompatibilityLabel")}),l.jsx("strong",{children:D(t.compatibilityLevel)})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.manageWorkspacePathLabel")}),l.jsx("strong",{title:e.path,children:e.path})]})]}):null]})}function D(e){switch(e){case"supported":return s("shell.workspaceDetailDebugCompatibilitySupported");case"conditional":return s("shell.workspaceDetailDebugCompatibilityConditional");case"unsupported":return s("shell.workspaceDetailDebugCompatibilityUnsupported");default:return s("shell.workspaceDetailDebugCompatibilityUnknown")}}function y(e){switch(e){case"high":return s("shell.workspaceDetailDebugConfidenceHigh");case"medium":return s("shell.workspaceDetailDebugConfidenceMedium");case"low":return s("shell.workspaceDetailDebugConfidenceLow");default:return s("common.unknown")}}function F(e,r,t){const o=new Map(r.map(i=>[i.templateId,i])),c=new Map(((t==null?void 0:t.services)??[]).map(i=>[i.serviceId,i])),a=new Map;for(const i of e)i.port!==null&&a.set(i.port,(a.get(i.port)??0)+1);const n=e.map(i=>{const g=o.get(i.id)??null,m=c.get(i.id)??null;if(m){const w=m.autoStartAllowed?m.leasedPort!==null&&m.leasedPort!==i.port?"orchestrated":"runnable":"blocked";return{template:i,runtimeStatus:g,planItem:m,decision:w,assignedPort:m.leasedPort,reason:A(i,m)}}return i.port===null?{template:i,runtimeStatus:g,planItem:null,decision:"blocked",assignedPort:null,reason:s("shell.workspaceDetailRegisteredDebugPlanReasonPortMissing")}:(a.get(i.port)??0)>1||g!=null&&g.occupied?{template:i,runtimeStatus:g,planItem:null,decision:"orchestrated",assignedPort:i.port,reason:(a.get(i.port)??0)>1?s("shell.workspaceDetailRegisteredDebugPlanReasonDuplicatePortWillOrchestrate"):s("shell.workspaceDetailRegisteredDebugPlanReasonPortOccupiedWillOrchestrate")}:{template:i,runtimeStatus:g,planItem:null,decision:"runnable",assignedPort:i.port,reason:s("shell.workspaceDetailRegisteredDebugPlanReasonRunnable")}}),h=n.filter(i=>i.decision==="runnable").length,b=n.filter(i=>i.decision==="orchestrated").length,d=n.filter(i=>i.decision==="blocked").length;return{generatedAt:(t==null?void 0:t.runtimeSession.createdAt)??new Date().toISOString(),autoStartAllowed:(t==null?void 0:t.autoStartAllowed)??(n.length>0&&d===0),runnableCount:h,orchestratedCount:b,blockedCount:d,items:n}}function R(e){return e.autoStartAllowed&&e.blockedCount===0}function E(e,r){return r===0?"danger":R(e)?"success":"warn"}function z(e,r){return r===0?s("shell.workspaceDetailRegisteredDebugOverallStatusEmpty"):R(e)?s("shell.workspaceDetailRegisteredDebugOverallStatusReady"):s("shell.workspaceDetailRegisteredDebugOverallStatusPartial")}function W(e,r){return r===0?s("shell.workspaceDetailRegisteredDebugTemplatesEmpty"):s("shell.workspaceDetailRegisteredDebugOverallSummary",{runnable:e.runnableCount,orchestrated:e.orchestratedCount,blocked:e.blockedCount})}function $(e){const r=e.args.join(" ").trim();return r?`${e.command} ${r}`:e.command}function B(e,r){const t=r.replace(/[\\/]+$/,"");return e===t?".":e.startsWith(`${t}/`)||e.startsWith(`${t}\\`)?e.slice(t.length+1):e}function V(e){return e===null?s("shell.workspaceDetailRegisteredDebugTemplatePortMissing"):String(e)}function U(e){if(!e)return s("shell.workspaceDetailDebugPortEmpty");const r=new Date(e);return Number.isNaN(r.getTime())?e:new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(r)}function q(e,r){if(e.port!==null)return r!=null&&r.occupied?"warn":"success"}function H(e,r){return e.port===null?s("shell.workspaceDetailRegisteredDebugTemplateStatusUntracked"):r!=null&&r.occupied?s("shell.workspaceDetailRegisteredDebugTemplateStatusOccupied"):s("shell.workspaceDetailRegisteredDebugTemplateStatusIdle")}function _(e){return e!=null&&e.occupied?e.processId&&e.processName?`PID ${e.processId} · ${e.processName}`:e.processId?`PID ${e.processId}`:e.processName??s("shell.workspaceDetailRegisteredDebugRuntimeUnknown"):s("shell.workspaceDetailRegisteredDebugRuntimeIdle")}function G(e,r){return e.port===null?s("shell.workspaceDetailRegisteredDebugPlanReasonPortMissing"):r!=null&&r.occupied?s("shell.workspaceDetailRegisteredDebugPlanReasonPortOccupiedWillOrchestrate"):s("shell.workspaceDetailRegisteredDebugPlanReasonRunnable")}function J(e){switch(e){case"runnable":return s("shell.workspaceDetailRegisteredDebugPlanActionStart");case"orchestrated":return s("shell.workspaceDetailRegisteredDebugPlanActionOrchestrated");default:return s("shell.workspaceDetailRegisteredDebugPlanActionBlocked")}}function A(e,r){var t;return r.missingRequirements.length>0?r.missingRequirements.map(o=>C(o)).join(";"):(t=r.aiFallback)!=null&&t.eligible?r.aiFallback.reason:r.leasedPort!==null&&r.leasedPort!==e.port?s("shell.workspaceDetailRegisteredDebugPlanReasonPortOrchestrated",{port:r.leasedPort}):Object.keys(r.envPatch).length>0?s("shell.workspaceDetailRegisteredDebugPlanReasonServiceDiscoveryInjected"):s("shell.workspaceDetailRegisteredDebugPlanReasonRunnable")}function C(e){switch(e){case"analysis":return s("shell.workspaceDetailRegisteredDebugPlanReasonAnalysisMissing");case"service_discovery":return s("shell.workspaceDetailRegisteredDebugPlanReasonServiceDiscoveryMissing");case"callback":return s("shell.workspaceDetailRegisteredDebugPlanReasonCallbackMissing");case"port":return s("shell.workspaceDetailRegisteredDebugPlanReasonPortMissing");default:return e}}function K(e){const[r,t]=u.useState({loading:!1,error:null,targetId:null,targetSourceType:null,services:[],analyses:[],matrixItems:[]}),[o,c]=u.useState(0),a=u.useCallback(()=>{c(d=>d+1)},[]);u.useEffect(()=>{if(!(e!=null&&e.id)||!e.path){t({loading:!1,error:null,targetId:null,targetSourceType:null,services:[],analyses:[],matrixItems:[]});return}let d=!1;return t(i=>({...i,loading:!0,error:null})),(async()=>{try{const[i,g]=await Promise.all([x({workspaceId:e.id,rootPath:e.path}),k()]);if(d)return;t({loading:!1,error:null,targetId:i.target.id,targetSourceType:i.target.sourceType,services:i.services,analyses:i.analyses,matrixItems:g.items})}catch(i){if(d)return;t({loading:!1,error:i instanceof Error?i.message:s("shell.workspaceDetailDebugAnalyzeFailed"),targetId:null,targetSourceType:null,services:[],analyses:[],matrixItems:[]})}})(),()=>{d=!0}},[o,e==null?void 0:e.id,e==null?void 0:e.path]);const n=u.useMemo(()=>N(r.services,r.analyses),[r.analyses,r.services]),h=u.useMemo(()=>r.matrixItems.find(d=>d.framework===((n==null?void 0:n.primaryFramework)??"unknown"))??null,[n==null?void 0:n.primaryFramework,r.matrixItems]),b=u.useMemo(()=>{var d;return((d=r.analyses[0])==null?void 0:d.createdAt)??null},[r.analyses]);return{...r,primaryAnalysis:n,currentCompatibilityItem:h,lastAnalyzedAt:b,refresh:a}}function N(e,r){if(r.length===0)return null;const t=new Map(r.filter(c=>c.serviceId).map(c=>[c.serviceId,c]));return[...e].sort((c,a)=>I(c,a)).map(c=>t.get(c.id)??null).find(c=>c!==null)??r[0]??null}function I(e,r){const t=f(e.role)-f(r.role);return t!==0?t:e.name.localeCompare(r.name)}function f(e){switch(e){case"frontend":return 0;case"backend":return 1;case"worker":return 2;case"mock":return 3;default:return 4}}function Q(e){const[r,t]=u.useState({loading:!1,error:null,templates:[],runtimeStatuses:[],lastRefreshedAt:null}),o=u.useCallback(async()=>{if(!(e!=null&&e.id)){t({loading:!1,error:null,templates:[],runtimeStatuses:[],lastRefreshedAt:null});return}t(a=>({...a,loading:!0,error:null}));try{const[a,n]=await Promise.all([j(e.id),p(e.id)]);t({loading:!1,error:null,templates:T(a.items),runtimeStatuses:n.items,lastRefreshedAt:new Date().toISOString()})}catch(a){throw t(n=>({...n,loading:!1,error:a instanceof Error?a.message:s("shell.workspaceDetailRegisteredDebugLoadFailed")})),a}},[e==null?void 0:e.id]),c=u.useCallback(async()=>{if(e!=null&&e.id){t(a=>({...a,loading:!0,error:null}));try{const a=await p(e.id);t(n=>({...n,loading:!1,error:null,runtimeStatuses:a.items,lastRefreshedAt:new Date().toISOString()}))}catch(a){throw t(n=>({...n,loading:!1,error:a instanceof Error?a.message:s("shell.workspaceDetailRegisteredDebugActionRefreshFailed")})),a}}},[e==null?void 0:e.id]);return u.useEffect(()=>{o().catch(()=>{})},[o]),{...r,refreshAll:o,refreshRuntime:c}}function T(e){return[...e].sort((r,t)=>{const o=r.cwd.localeCompare(t.cwd);return o!==0?o:r.name.localeCompare(t.name)})}export{O as D,U as a,F as b,H as c,B as d,V as e,z as f,_ as g,$ as h,G as i,Q as j,W as k,J as l,q as m,E as r,K as u};
1
+ import{j as l,t as s,b as u}from"./index-CuzMc7q2.js";import{b as x,d as k}from"./model-switch-api-c6kcbBGm.js";import{l as j,a as p}from"./terminal-runtime-meta-CRAVR-8G.js";function O({workspace:e,state:r,variant:t}){return e?t==="mobile"?l.jsx(v,{workspace:e,state:r}):l.jsx(P,{workspace:e,state:r}):l.jsx("p",{className:"workbench-section-empty",children:s("shell.workspaceDetailMissingBody")})}function v({workspace:e,state:r}){const t=r.primaryAnalysis,o=r.analyses.length;return l.jsx(l.Fragment,{children:l.jsxs("section",{className:"mobile-feature-panel surface-card mobile-workspace-composition-panel",children:[l.jsx("div",{className:"mobile-feature-section-header",children:l.jsx("div",{children:l.jsx("h2",{children:s("shell.workspaceDetailRegisteredDebugAnalysisTitle")})})}),r.loading&&t===null?l.jsx("p",{children:s("common.loading")}):null,r.error?l.jsx("p",{className:"status-text","data-tone":"error",children:r.error}):null,t?l.jsxs("div",{className:"mobile-detail-grid mobile-workspace-detail-grid",children:[l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugFrameworkLabel")}),l.jsx("strong",{children:t.primaryFramework??s("common.unknown")})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugConfidenceLabel")}),l.jsx("strong",{children:y(t.confidence)})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugSummaryServiceCountLabel")}),l.jsx("strong",{children:o})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugCompatibilityLabel")}),l.jsx("strong",{children:D(t.compatibilityLevel)})]}),l.jsxs("div",{className:"mobile-detail-metric",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugLastAnalyzedAtLabel")}),l.jsx("strong",{children:r.lastAnalyzedAt??s("shell.workspaceDetailDebugFrameworkNoteEmpty")})]}),l.jsxs("div",{className:"mobile-detail-metric mobile-detail-metric-wide",children:[l.jsx("span",{children:s("shell.manageWorkspacePathLabel")}),l.jsx("strong",{children:e.path})]})]}):null]})})}function P({workspace:e,state:r}){const t=r.primaryAnalysis,o=r.analyses.length;return l.jsxs("section",{className:"debug-readiness-section surface-card",children:[l.jsx("div",{className:"debug-readiness-section-header",children:l.jsxs("div",{children:[l.jsx("h3",{children:s("shell.workspaceDetailRegisteredDebugAnalysisTitle")}),l.jsx("p",{children:s("shell.workspaceDetailRegisteredDebugAnalysisDescription")})]})}),r.loading&&t===null?l.jsx("p",{className:"workbench-section-empty",children:s("common.loading")}):null,r.error?l.jsx("p",{className:"workbench-manage-status status-text","data-tone":"error",children:r.error}):null,t?l.jsxs("div",{className:"debug-readiness-summary-grid",children:[l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugFrameworkLabel")}),l.jsx("strong",{children:t.primaryFramework??s("common.unknown")})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugConfidenceLabel")}),l.jsx("strong",{children:y(t.confidence)}),l.jsx("small",{children:r.lastAnalyzedAt??s("shell.workspaceDetailDebugFrameworkNoteEmpty")})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugSummaryServiceCountLabel")}),l.jsx("strong",{children:o})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.workspaceDetailDebugCompatibilityLabel")}),l.jsx("strong",{children:D(t.compatibilityLevel)})]}),l.jsxs("article",{className:"debug-readiness-summary-card",children:[l.jsx("span",{children:s("shell.manageWorkspacePathLabel")}),l.jsx("strong",{title:e.path,children:e.path})]})]}):null]})}function D(e){switch(e){case"supported":return s("shell.workspaceDetailDebugCompatibilitySupported");case"conditional":return s("shell.workspaceDetailDebugCompatibilityConditional");case"unsupported":return s("shell.workspaceDetailDebugCompatibilityUnsupported");default:return s("shell.workspaceDetailDebugCompatibilityUnknown")}}function y(e){switch(e){case"high":return s("shell.workspaceDetailDebugConfidenceHigh");case"medium":return s("shell.workspaceDetailDebugConfidenceMedium");case"low":return s("shell.workspaceDetailDebugConfidenceLow");default:return s("common.unknown")}}function F(e,r,t){const o=new Map(r.map(i=>[i.templateId,i])),c=new Map(((t==null?void 0:t.services)??[]).map(i=>[i.serviceId,i])),a=new Map;for(const i of e)i.port!==null&&a.set(i.port,(a.get(i.port)??0)+1);const n=e.map(i=>{const g=o.get(i.id)??null,m=c.get(i.id)??null;if(m){const w=m.autoStartAllowed?m.leasedPort!==null&&m.leasedPort!==i.port?"orchestrated":"runnable":"blocked";return{template:i,runtimeStatus:g,planItem:m,decision:w,assignedPort:m.leasedPort,reason:A(i,m)}}return i.port===null?{template:i,runtimeStatus:g,planItem:null,decision:"blocked",assignedPort:null,reason:s("shell.workspaceDetailRegisteredDebugPlanReasonPortMissing")}:(a.get(i.port)??0)>1||g!=null&&g.occupied?{template:i,runtimeStatus:g,planItem:null,decision:"orchestrated",assignedPort:i.port,reason:(a.get(i.port)??0)>1?s("shell.workspaceDetailRegisteredDebugPlanReasonDuplicatePortWillOrchestrate"):s("shell.workspaceDetailRegisteredDebugPlanReasonPortOccupiedWillOrchestrate")}:{template:i,runtimeStatus:g,planItem:null,decision:"runnable",assignedPort:i.port,reason:s("shell.workspaceDetailRegisteredDebugPlanReasonRunnable")}}),h=n.filter(i=>i.decision==="runnable").length,b=n.filter(i=>i.decision==="orchestrated").length,d=n.filter(i=>i.decision==="blocked").length;return{generatedAt:(t==null?void 0:t.runtimeSession.createdAt)??new Date().toISOString(),autoStartAllowed:(t==null?void 0:t.autoStartAllowed)??(n.length>0&&d===0),runnableCount:h,orchestratedCount:b,blockedCount:d,items:n}}function R(e){return e.autoStartAllowed&&e.blockedCount===0}function E(e,r){return r===0?"danger":R(e)?"success":"warn"}function z(e,r){return r===0?s("shell.workspaceDetailRegisteredDebugOverallStatusEmpty"):R(e)?s("shell.workspaceDetailRegisteredDebugOverallStatusReady"):s("shell.workspaceDetailRegisteredDebugOverallStatusPartial")}function W(e,r){return r===0?s("shell.workspaceDetailRegisteredDebugTemplatesEmpty"):s("shell.workspaceDetailRegisteredDebugOverallSummary",{runnable:e.runnableCount,orchestrated:e.orchestratedCount,blocked:e.blockedCount})}function $(e){const r=e.args.join(" ").trim();return r?`${e.command} ${r}`:e.command}function B(e,r){const t=r.replace(/[\\/]+$/,"");return e===t?".":e.startsWith(`${t}/`)||e.startsWith(`${t}\\`)?e.slice(t.length+1):e}function V(e){return e===null?s("shell.workspaceDetailRegisteredDebugTemplatePortMissing"):String(e)}function U(e){if(!e)return s("shell.workspaceDetailDebugPortEmpty");const r=new Date(e);return Number.isNaN(r.getTime())?e:new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(r)}function q(e,r){if(e.port!==null)return r!=null&&r.occupied?"warn":"success"}function H(e,r){return e.port===null?s("shell.workspaceDetailRegisteredDebugTemplateStatusUntracked"):r!=null&&r.occupied?s("shell.workspaceDetailRegisteredDebugTemplateStatusOccupied"):s("shell.workspaceDetailRegisteredDebugTemplateStatusIdle")}function _(e){return e!=null&&e.occupied?e.processId&&e.processName?`PID ${e.processId} · ${e.processName}`:e.processId?`PID ${e.processId}`:e.processName??s("shell.workspaceDetailRegisteredDebugRuntimeUnknown"):s("shell.workspaceDetailRegisteredDebugRuntimeIdle")}function G(e,r){return e.port===null?s("shell.workspaceDetailRegisteredDebugPlanReasonPortMissing"):r!=null&&r.occupied?s("shell.workspaceDetailRegisteredDebugPlanReasonPortOccupiedWillOrchestrate"):s("shell.workspaceDetailRegisteredDebugPlanReasonRunnable")}function J(e){switch(e){case"runnable":return s("shell.workspaceDetailRegisteredDebugPlanActionStart");case"orchestrated":return s("shell.workspaceDetailRegisteredDebugPlanActionOrchestrated");default:return s("shell.workspaceDetailRegisteredDebugPlanActionBlocked")}}function A(e,r){var t;return r.missingRequirements.length>0?r.missingRequirements.map(o=>C(o)).join(";"):(t=r.aiFallback)!=null&&t.eligible?r.aiFallback.reason:r.leasedPort!==null&&r.leasedPort!==e.port?s("shell.workspaceDetailRegisteredDebugPlanReasonPortOrchestrated",{port:r.leasedPort}):Object.keys(r.envPatch).length>0?s("shell.workspaceDetailRegisteredDebugPlanReasonServiceDiscoveryInjected"):s("shell.workspaceDetailRegisteredDebugPlanReasonRunnable")}function C(e){switch(e){case"analysis":return s("shell.workspaceDetailRegisteredDebugPlanReasonAnalysisMissing");case"service_discovery":return s("shell.workspaceDetailRegisteredDebugPlanReasonServiceDiscoveryMissing");case"callback":return s("shell.workspaceDetailRegisteredDebugPlanReasonCallbackMissing");case"port":return s("shell.workspaceDetailRegisteredDebugPlanReasonPortMissing");default:return e}}function K(e){const[r,t]=u.useState({loading:!1,error:null,targetId:null,targetSourceType:null,services:[],analyses:[],matrixItems:[]}),[o,c]=u.useState(0),a=u.useCallback(()=>{c(d=>d+1)},[]);u.useEffect(()=>{if(!(e!=null&&e.id)||!e.path){t({loading:!1,error:null,targetId:null,targetSourceType:null,services:[],analyses:[],matrixItems:[]});return}let d=!1;return t(i=>({...i,loading:!0,error:null})),(async()=>{try{const[i,g]=await Promise.all([x({workspaceId:e.id,rootPath:e.path}),k()]);if(d)return;t({loading:!1,error:null,targetId:i.target.id,targetSourceType:i.target.sourceType,services:i.services,analyses:i.analyses,matrixItems:g.items})}catch(i){if(d)return;t({loading:!1,error:i instanceof Error?i.message:s("shell.workspaceDetailDebugAnalyzeFailed"),targetId:null,targetSourceType:null,services:[],analyses:[],matrixItems:[]})}})(),()=>{d=!0}},[o,e==null?void 0:e.id,e==null?void 0:e.path]);const n=u.useMemo(()=>N(r.services,r.analyses),[r.analyses,r.services]),h=u.useMemo(()=>r.matrixItems.find(d=>d.framework===((n==null?void 0:n.primaryFramework)??"unknown"))??null,[n==null?void 0:n.primaryFramework,r.matrixItems]),b=u.useMemo(()=>{var d;return((d=r.analyses[0])==null?void 0:d.createdAt)??null},[r.analyses]);return{...r,primaryAnalysis:n,currentCompatibilityItem:h,lastAnalyzedAt:b,refresh:a}}function N(e,r){if(r.length===0)return null;const t=new Map(r.filter(c=>c.serviceId).map(c=>[c.serviceId,c]));return[...e].sort((c,a)=>I(c,a)).map(c=>t.get(c.id)??null).find(c=>c!==null)??r[0]??null}function I(e,r){const t=f(e.role)-f(r.role);return t!==0?t:e.name.localeCompare(r.name)}function f(e){switch(e){case"frontend":return 0;case"backend":return 1;case"worker":return 2;case"mock":return 3;default:return 4}}function Q(e){const[r,t]=u.useState({loading:!1,error:null,templates:[],runtimeStatuses:[],lastRefreshedAt:null}),o=u.useCallback(async()=>{if(!(e!=null&&e.id)){t({loading:!1,error:null,templates:[],runtimeStatuses:[],lastRefreshedAt:null});return}t(a=>({...a,loading:!0,error:null}));try{const[a,n]=await Promise.all([j(e.id),p(e.id)]);t({loading:!1,error:null,templates:T(a.items),runtimeStatuses:n.items,lastRefreshedAt:new Date().toISOString()})}catch(a){throw t(n=>({...n,loading:!1,error:a instanceof Error?a.message:s("shell.workspaceDetailRegisteredDebugLoadFailed")})),a}},[e==null?void 0:e.id]),c=u.useCallback(async()=>{if(e!=null&&e.id){t(a=>({...a,loading:!0,error:null}));try{const a=await p(e.id);t(n=>({...n,loading:!1,error:null,runtimeStatuses:a.items,lastRefreshedAt:new Date().toISOString()}))}catch(a){throw t(n=>({...n,loading:!1,error:a instanceof Error?a.message:s("shell.workspaceDetailRegisteredDebugActionRefreshFailed")})),a}}},[e==null?void 0:e.id]);return u.useEffect(()=>{o().catch(()=>{})},[o]),{...r,refreshAll:o,refreshRuntime:c}}function T(e){return[...e].sort((r,t)=>{const o=r.cwd.localeCompare(t.cwd);return o!==0?o:r.name.localeCompare(t.name)})}export{O as D,U as a,F as b,H as c,B as d,V as e,z as f,_ as g,$ as h,G as i,Q as j,W as k,J as l,q as m,E as r,K as u};