@aiworker/web 1.22.0 → 1.22.2

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 (354) hide show
  1. package/README.md +4 -4
  2. package/bin/cli.js +7 -4
  3. package/bin/cli.test.js +165 -73
  4. package/bin/lib/cli-api-target.js +2 -2
  5. package/bin/lib/cli-args.js +119 -119
  6. package/bin/lib/cli-lifecycle.js +9 -9
  7. package/bin/lib/cli-network.js +3 -3
  8. package/bin/lib/cli-paths.js +3 -3
  9. package/bin/lib/cli-ports.js +2 -2
  10. package/bin/lib/cli-process.js +4 -4
  11. package/bin/lib/cli-startup.js +64 -15
  12. package/bin/lib/cli-tunnel-profiles.js +1 -1
  13. package/bin/lib/cli-tunnel-utils.js +2 -2
  14. package/bin/lib/commands-connect-url.js +19 -19
  15. package/bin/lib/commands-lifecycle.js +27 -27
  16. package/bin/lib/commands-logs.js +5 -5
  17. package/bin/lib/commands-models.js +1 -1
  18. package/bin/lib/commands-projects.js +1 -1
  19. package/bin/lib/commands-schedule.js +1 -1
  20. package/bin/lib/commands-serve.js +29 -29
  21. package/bin/lib/commands-session.js +1 -1
  22. package/bin/lib/commands-startup.js +45 -10
  23. package/bin/lib/commands-status.js +1 -1
  24. package/bin/lib/commands-tunnel.js +40 -40
  25. package/bin/lib/commands-update.js +1 -1
  26. package/bin/lib/commands-update.test.js +6 -6
  27. package/dist/assets/{CodeMirrorCommentWidgets-B3u7UIcE.js → CodeMirrorCommentWidgets-CSICpWQD.js} +1 -1
  28. package/dist/assets/{DiffView-DluiRSla.js → DiffView-hDBKesA_.js} +3 -3
  29. package/dist/assets/DirtyBranchSwitchDialog-C22HdWj4.js +1 -0
  30. package/dist/assets/FilesView-CdWzeOp9.js +17 -0
  31. package/dist/assets/GitView-VQQkYuUw.js +6 -0
  32. package/dist/assets/{JsonTreeView-B0BdZEHG.js → JsonTreeView-6lrhwD3q.js} +1 -1
  33. package/dist/assets/LinearIssuesView-Ba6Q9569.js +1 -0
  34. package/dist/assets/{MarkdownImageGallery-ClOvuZxC.js → MarkdownImageGallery-Czv_mhvS.js} +1 -1
  35. package/dist/assets/MarkdownRendererImpl-BrMcswiy.js +12 -0
  36. package/dist/assets/{OnboardingScreen-D2DG7K6b.js → OnboardingScreen-ChxQoAkx.js} +1 -1
  37. package/dist/assets/{PatchDiff-DvfqDql7.js → PatchDiff-BzcZPlOq.js} +1 -1
  38. package/dist/assets/{PierreDiffViewer-B7m3f0d7.js → PierreDiffViewer-BchBtZlp.js} +2 -2
  39. package/dist/assets/PlanView-DyDt_nZ_.js +5 -0
  40. package/dist/assets/SettingsView-BKf5xBsP.js +28 -0
  41. package/dist/assets/{SettingsWindow-i45U1Cy1.js → SettingsWindow-DDQYaKWQ.js} +1 -1
  42. package/dist/assets/{ToolOutputDialog-BTwyh5OF.js → ToolOutputDialog-iYF8Y2bz.js} +6 -6
  43. package/dist/assets/ToolPartDiffPreview-CdjbOVMM.js +8 -0
  44. package/dist/assets/{VirtualizedFileDiff-DD8lDVej.js → VirtualizedFileDiff-fFFm2QgH.js} +1 -1
  45. package/dist/assets/{WalkthroughView-egQgxel3.js → WalkthroughView-DOeCsMju.js} +2 -2
  46. package/dist/assets/{computeVirtualFileMetrics-BMIRgMHv.js → computeVirtualFileMetrics-CzgLum_K.js} +2 -2
  47. package/dist/assets/{contextPanelEmbeddedChat-C3fjDbdg.js → contextPanelEmbeddedChat-C0ZLAepL.js} +1 -1
  48. package/dist/assets/{de-C1P6X5Rs.js → de-B5JaA3SA.js} +6 -5
  49. package/dist/assets/{es-CDgaF1_t.js → es-EPIH88ii.js} +6 -5
  50. package/dist/assets/{fr-Bgxqvvz_.js → fr-CAMfxUdZ.js} +6 -5
  51. package/dist/assets/{index-CODwDsU_.js → index-Bl3LSbjn.js} +1 -1
  52. package/dist/assets/index-DF5kMP-i.js +39 -0
  53. package/dist/assets/index-Dl3xbAB_.css +1 -0
  54. package/dist/assets/{isDiffPlainText-BqayB8d3.js → isDiffPlainText-Dx-dB_8l.js} +1 -1
  55. package/dist/assets/{isFilePlainText-QfoiKJNY.js → isFilePlainText-CWFPwmnU.js} +1 -1
  56. package/dist/assets/{ja-BDRrEcNP.js → ja-CifOE1VN.js} +7 -6
  57. package/dist/assets/{ko-Ba8sQV79.js → ko-BBDyAyYQ.js} +7 -6
  58. package/dist/assets/{main-C5DVOxc6.js → main-DnBAoktx.js} +2 -2
  59. package/dist/assets/main-MhSaOZoB.js +930 -0
  60. package/dist/assets/{markdownCore-CZwzz5gw.js → markdownCore-BrBwOOMn.js} +2 -2
  61. package/dist/assets/{miniChat-DUJ4irZc.js → miniChat-BKyvLseN.js} +2 -2
  62. package/dist/assets/{mobile-CcaxB0n4.js → mobile-DKjeFgMN.js} +2 -2
  63. package/dist/assets/{patchFileDiff-yNfWXN4E.js → patchFileDiff-o8ms1me8.js} +1 -1
  64. package/dist/assets/pl-DgEHYfFM.js +16 -0
  65. package/dist/assets/{pt-BR-DIs6ElwV.js → pt-BR-DuWHojUw.js} +6 -5
  66. package/dist/assets/{renderElectronMiniChatApp-BcKLHXKe.js → renderElectronMiniChatApp-CDgBwwCS.js} +2 -2
  67. package/dist/assets/renderMobileApp-DJIKIK1r.js +25 -0
  68. package/dist/assets/runtimeEndpointReset-CYJ9O_xX.js +17 -0
  69. package/dist/assets/{scheduledTasksApi-DLW0mkQK.js → scheduledTasksApi-D8yamh1b.js} +1 -1
  70. package/dist/assets/{shikiHighlight-DYOWuY65.js → shikiHighlight-TEQCmzW8.js} +1 -1
  71. package/dist/assets/tr-D5m2yIWL.js +7 -0
  72. package/dist/assets/{uk-ZrCNjM7Y.js → uk-D_q60oog.js} +6 -5
  73. package/dist/assets/{useAppFontEffects-CjrntdL0.js → useAppFontEffects-D7sNpuL2.js} +161 -190
  74. package/dist/assets/useInlineCommentController-Brz_cLcQ.js +2 -0
  75. package/dist/assets/{useRootScrollLock-BHYPkrLv.js → useRootScrollLock-lXEnWlaU.js} +1 -1
  76. package/dist/assets/{vendor-codemirror-language-data-DFZik9R2.js → vendor-codemirror-language-data-Dp3KMRQG.js} +2 -2
  77. package/dist/assets/vendor-zod-CK21ihK-.js +39 -0
  78. package/dist/assets/{web-components-Bhg83tjf.js → web-components-_mNEMjFY.js} +1 -1
  79. package/dist/assets/{zh-CN-iv_AV4EC.js → zh-CN-D8QvsVeg.js} +6 -5
  80. package/dist/assets/{zh-TW-CzEUk38j.js → zh-TW-B9t7rQQO.js} +6 -5
  81. package/dist/index.html +22 -22
  82. package/dist/mini-chat.html +7 -7
  83. package/dist/mobile.html +5 -5
  84. package/package.json +3 -3
  85. package/server/index.js +118 -85
  86. package/server/lib/agent-memory/actions.js +2 -2
  87. package/server/lib/agent-memory/feature-flag.js +1 -1
  88. package/server/lib/agent-memory/feature-flag.test.js +8 -8
  89. package/server/lib/agent-memory/routes.js +2 -2
  90. package/server/lib/agent-tool/runtime.js +37 -54
  91. package/server/lib/agent-tool/runtime.test.js +59 -59
  92. package/server/lib/browser-control/broker.js +3 -3
  93. package/server/lib/browser-control/broker.test.js +1 -1
  94. package/server/lib/changelog/update-notes.js +82 -0
  95. package/server/lib/changelog/update-notes.test.js +59 -0
  96. package/server/lib/client-auth/remote-clients.test.js +5 -5
  97. package/server/lib/context-obligatory/runtime.js +7 -7
  98. package/server/lib/context-obligatory/runtime.test.js +5 -5
  99. package/server/lib/dev-servers/parse.js +2 -2
  100. package/server/lib/dev-servers/parse.test.js +2 -2
  101. package/server/lib/dev-servers/routes.js +1 -1
  102. package/server/lib/dev-tunnel/DOCUMENTATION.md +13 -4
  103. package/server/lib/dev-tunnel/client.js +1 -1
  104. package/server/lib/dev-tunnel/runtime.js +5 -5
  105. package/server/lib/dev-tunnel/tunnel.test.js +21 -1
  106. package/server/lib/dictation/local/model-catalog.js +1 -1
  107. package/server/lib/dictation/local/worker-process.js +2 -2
  108. package/server/lib/event-stream/directory-ws-bridge.js +1 -1
  109. package/server/lib/event-stream/global-ws-bridge.js +1 -1
  110. package/server/lib/event-stream/protocol.test.js +4 -4
  111. package/server/lib/event-stream/runtime.test.js +6 -6
  112. package/server/lib/fs/DOCUMENTATION.md +2 -0
  113. package/server/lib/fs/routes.js +37 -26
  114. package/server/lib/fs/routes.test.js +98 -21
  115. package/server/lib/git/DOCUMENTATION.md +3 -1
  116. package/server/lib/git/identity-storage.js +1 -1
  117. package/server/lib/git/issue-2746-longpaths.test.js +4 -4
  118. package/server/lib/git/routes.js +17 -1
  119. package/server/lib/git/service.js +116 -26
  120. package/server/lib/git/service.test.js +174 -3
  121. package/server/lib/github/auth.js +8 -8
  122. package/server/lib/github/pr-status.js +1 -1
  123. package/server/lib/github/routes.js +2 -2
  124. package/server/lib/inherited-env.js +1 -1
  125. package/server/lib/inherited-env.test.js +2 -2
  126. package/server/lib/linear/auth.js +8 -8
  127. package/server/lib/linear/auth.test.js +24 -24
  128. package/server/lib/linear/issues.test.js +6 -6
  129. package/server/lib/linear/mapping.test.js +4 -4
  130. package/server/lib/linear/oauth.js +2 -2
  131. package/server/lib/linear/oauth.test.js +14 -14
  132. package/server/lib/linear/routes.js +5 -5
  133. package/server/lib/linear/routes.test.js +16 -16
  134. package/server/lib/linear/status-runtime.test.js +9 -9
  135. package/server/lib/linear/status.js +1 -1
  136. package/server/lib/linear/status.test.js +15 -15
  137. package/server/lib/linear/teams.test.js +4 -4
  138. package/server/lib/magic-prompts/routes.js +2 -2
  139. package/server/lib/mcp-reconnect/DOCUMENTATION.md +55 -0
  140. package/server/lib/mcp-reconnect/runtime.js +122 -0
  141. package/server/lib/mcp-reconnect/runtime.test.js +140 -0
  142. package/server/lib/message-queue/DOCUMENTATION.md +158 -0
  143. package/server/lib/message-queue/runtime.js +870 -0
  144. package/server/lib/message-queue/runtime.test.js +482 -0
  145. package/server/lib/notifications/apns-runtime.js +17 -17
  146. package/server/lib/notifications/apns-runtime.test.js +11 -11
  147. package/server/lib/notifications/emitter-runtime.js +1 -1
  148. package/server/lib/notifications/emitter-runtime.test.js +1 -1
  149. package/server/lib/notifications/push-runtime.js +7 -7
  150. package/server/lib/notifications/routes.js +1 -1
  151. package/server/lib/notifications/runtime.js +1 -1
  152. package/server/lib/openchamber-control/action-resolution.test.js +10 -10
  153. package/server/lib/openchamber-control/actions.js +24 -24
  154. package/server/lib/openchamber-control/error.js +4 -4
  155. package/server/lib/openchamber-control/routes.js +2 -2
  156. package/server/lib/openchamber-control/routes.test.js +5 -5
  157. package/server/lib/openchamber-control/screenshots.js +1 -1
  158. package/server/lib/openchamber-control/screenshots.test.js +1 -1
  159. package/server/lib/openchamber-control/service.js +50 -50
  160. package/server/lib/openchamber-control/service.test.js +5 -5
  161. package/server/lib/openchamber-sessions/routes.js +124 -22
  162. package/server/lib/openchamber-sessions/routes.test.js +99 -11
  163. package/server/lib/opencode/DOCUMENTATION.md +13 -5
  164. package/server/lib/opencode/auth.js +1 -1
  165. package/server/lib/opencode/bootstrap-runtime.js +6 -6
  166. package/server/lib/opencode/cli-options.js +8 -8
  167. package/server/lib/opencode/config-paths.test.js +116 -0
  168. package/server/lib/opencode/core-routes.js +8 -7
  169. package/server/lib/opencode/core-routes.test.js +11 -11
  170. package/server/lib/opencode/env-config.js +5 -5
  171. package/server/lib/opencode/env-config.test.js +7 -7
  172. package/server/lib/opencode/env-runtime.js +10 -10
  173. package/server/lib/opencode/env-runtime.test.js +18 -18
  174. package/server/lib/opencode/feature-routes-runtime.js +17 -12
  175. package/server/lib/opencode/hmr-state-runtime.js +2 -2
  176. package/server/lib/opencode/hmr-state-runtime.test.js +1 -1
  177. package/server/lib/opencode/input-history-scope.js +14 -0
  178. package/server/lib/opencode/lifecycle.js +8 -8
  179. package/server/lib/opencode/lifecycle.test.js +4 -4
  180. package/server/lib/opencode/managed-plugin-config.js +35 -0
  181. package/server/lib/opencode/managed-process-registry.js +3 -3
  182. package/server/lib/opencode/mcp-oauth-callback.test.js +2 -2
  183. package/server/lib/opencode/openchamber-routes.js +15 -15
  184. package/server/lib/opencode/openchamber-routes.test.js +11 -11
  185. package/server/lib/opencode/plugins.js +2 -2
  186. package/server/lib/opencode/plugins.test.js +1 -1
  187. package/server/lib/opencode/project-icon-routes.js +2 -2
  188. package/server/lib/opencode/project-icon-routes.test.js +1 -1
  189. package/server/lib/opencode/providers.js +44 -2
  190. package/server/lib/opencode/providers.test.js +131 -4
  191. package/server/lib/opencode/proxy.js +2 -2
  192. package/server/lib/opencode/pwa-manifest-routes.js +1 -1
  193. package/server/lib/opencode/restart-session-recovery.test.js +1 -1
  194. package/server/lib/opencode/routes-upgrade.test.js +4 -4
  195. package/server/lib/opencode/routes.js +14 -14
  196. package/server/lib/opencode/server-startup-runtime.js +6 -6
  197. package/server/lib/opencode/session-runtime.js +3 -3
  198. package/server/lib/opencode/session-runtime.test.js +6 -6
  199. package/server/lib/opencode/settings-helpers.js +31 -3
  200. package/server/lib/opencode/settings-helpers.test.js +189 -12
  201. package/server/lib/opencode/settings-runtime.js +2 -2
  202. package/server/lib/opencode/settings-runtime.test.js +29 -0
  203. package/server/lib/opencode/shared.js +5 -2
  204. package/server/lib/opencode/shared.test.js +7 -7
  205. package/server/lib/opencode/shutdown-runtime.js +2 -0
  206. package/server/lib/opencode/skill-routes.js +2 -1
  207. package/server/lib/opencode/snippets.js +1 -2
  208. package/server/lib/opencode/startup-performance.js +1 -1
  209. package/server/lib/opencode/startup-performance.test.js +6 -6
  210. package/server/lib/opencode/static-routes-runtime.js +8 -8
  211. package/server/lib/opencode/static-routes-runtime.test.js +7 -7
  212. package/server/lib/opencode/upgrade-capability.js +2 -2
  213. package/server/lib/opencode/upgrade-capability.test.js +3 -3
  214. package/server/lib/package-manager.js +17 -42
  215. package/server/lib/package-manager.test.js +19 -19
  216. package/server/lib/permission-auto-accept/runtime.js +1 -1
  217. package/server/lib/project-context/routes.js +1 -1
  218. package/server/lib/projects/project-config.js +2 -2
  219. package/server/lib/quota/DOCUMENTATION.md +9 -1
  220. package/server/lib/quota/credentials/providers.js +4 -0
  221. package/server/lib/quota/credentials/store.js +4 -4
  222. package/server/lib/quota/credentials/store.test.js +8 -8
  223. package/server/lib/quota/index.js +1 -0
  224. package/server/lib/quota/providers/exe-dev.js +75 -0
  225. package/server/lib/quota/providers/exe-dev.test.js +47 -0
  226. package/server/lib/quota/providers/hyper.js +118 -0
  227. package/server/lib/quota/providers/hyper.test.js +126 -0
  228. package/server/lib/quota/providers/index.js +15 -0
  229. package/server/lib/quota/providers/ollama-cloud.js +1 -1
  230. package/server/lib/quota/providers/opencode-go.js +2 -1
  231. package/server/lib/quota/providers/opencode-go.test.js +9 -5
  232. package/server/lib/quota/providers/xai.js +1 -1
  233. package/server/lib/quota/routes.js +2 -0
  234. package/server/lib/quota/utils/auth.js +1 -1
  235. package/server/lib/relay/DOCUMENTATION.md +1 -1
  236. package/server/lib/relay/host-client.js +1 -1
  237. package/server/lib/relay/host-client.test.js +9 -1
  238. package/server/lib/relay/host-lock.js +1 -1
  239. package/server/lib/relay/service.js +5 -5
  240. package/server/lib/relay/tunnel-host.js +3 -1
  241. package/server/lib/relay/tunnel-host.test.js +9 -1
  242. package/server/lib/scheduled-tasks/issue-2710-double-execution.test.js +2 -2
  243. package/server/lib/scheduled-tasks/routes.js +5 -5
  244. package/server/lib/scheduled-tasks/service.js +25 -25
  245. package/server/lib/scheduled-tasks/service.test.js +1 -1
  246. package/server/lib/security/bind-host.js +4 -4
  247. package/server/lib/security/bind-host.test.js +1 -1
  248. package/server/lib/security/request-security.js +11 -5
  249. package/server/lib/security/request-security.test.js +14 -14
  250. package/server/lib/session-assist/runtime.js +10 -9
  251. package/server/lib/session-folders/routes.js +2 -2
  252. package/server/lib/session-folders/routes.test.js +8 -8
  253. package/server/lib/session-goal/DOCUMENTATION.md +20 -7
  254. package/server/lib/session-goal/create.js +4 -2
  255. package/server/lib/session-goal/create.test.js +1 -1
  256. package/server/lib/session-goal/objectives.js +4 -4
  257. package/server/lib/session-goal/routes.js +1 -1
  258. package/server/lib/session-goal/runtime.js +88 -22
  259. package/server/lib/session-goal/runtime.test.js +428 -2
  260. package/server/lib/session-knowledge/runtime.js +11 -11
  261. package/server/lib/session-knowledge/runtime.test.js +5 -5
  262. package/server/lib/skills-catalog/DOCUMENTATION.md +1 -1
  263. package/server/lib/skills-catalog/cache.test.js +2 -2
  264. package/server/lib/skills-catalog/disk-cache.js +5 -5
  265. package/server/lib/skills-catalog/github-meta.test.js +2 -2
  266. package/server/lib/skills-catalog/install.js +3 -2
  267. package/server/lib/small-model/DOCUMENTATION.md +4 -0
  268. package/server/lib/small-model/call.js +9 -3
  269. package/server/lib/small-model/call.test.js +29 -6
  270. package/server/lib/small-model/index.js +8 -7
  271. package/server/lib/small-model/index.test.js +1 -1
  272. package/server/lib/small-model/resolve.js +1 -1
  273. package/server/lib/small-model/resolve.test.js +1 -1
  274. package/server/lib/small-model/routes.js +2 -1
  275. package/server/lib/system-prompt/runtime.js +3 -22
  276. package/server/lib/system-prompt/runtime.test.js +3 -3
  277. package/server/lib/terminal/DOCUMENTATION.md +11 -7
  278. package/server/lib/terminal/runtime.js +180 -26
  279. package/server/lib/terminal/runtime.test.js +554 -27
  280. package/server/lib/terminal/shells.js +20 -3
  281. package/server/lib/terminal/shells.test.js +33 -2
  282. package/server/lib/tts/base-url.js +3 -3
  283. package/server/lib/tts/routes.test.js +20 -20
  284. package/server/lib/ui-auth/ui-auth.js +12 -9
  285. package/server/lib/ui-auth/ui-auth.test.js +19 -3
  286. package/server/lib/ui-auth/ui-passkeys.js +7 -7
  287. package/server/lib/walkthrough/index.js +1 -0
  288. package/server/lib/walkthrough/jobs.test.js +1 -1
  289. package/server/lib/walkthrough/language.test.js +1 -1
  290. package/server/lib/walkthrough/model-settings.js +3 -3
  291. package/server/lib/walkthrough/model-settings.test.js +1 -1
  292. package/server/lib/walkthrough/pull-request.test.js +5 -5
  293. package/server/lib/walkthrough/reproduce-2607.test.js +2 -2
  294. package/server/lib/walkthrough/routes.test.js +26 -5
  295. package/server/lib/walkthrough/store.js +3 -3
  296. package/server/lib/walkthrough/store.test.js +1 -1
  297. package/server/opencode-proxy.test.js +2 -2
  298. package/server/proxy-headers.js +1 -1
  299. package/server/sse-routes.test.js +4 -4
  300. package/README.md.bak +0 -250
  301. package/bin/lib/DOCUMENTATION.md.bak +0 -163
  302. package/dist/assets/CommitSection-SGBCAW0w.js +0 -1
  303. package/dist/assets/FilesView-Bdq8ppva.js +0 -17
  304. package/dist/assets/GitView-Znn7VJcP.js +0 -6
  305. package/dist/assets/LinearIssuesView-jP-hXyac.js +0 -1
  306. package/dist/assets/MarkdownRendererImpl-Dt9mjTRN.js +0 -12
  307. package/dist/assets/PlanView-B0F3BtPZ.js +0 -5
  308. package/dist/assets/SettingsView-BBW-S-gh.js +0 -28
  309. package/dist/assets/ToolPartDiffPreview-CUNe28U1.js +0 -8
  310. package/dist/assets/index-C57jT0Sa.css +0 -1
  311. package/dist/assets/index-DW_E3rnL.js +0 -7
  312. package/dist/assets/main-Bv5Pkngh.js +0 -928
  313. package/dist/assets/pl-Dioz29BI.js +0 -15
  314. package/dist/assets/renderMobileApp-D9yQJy0L.js +0 -25
  315. package/dist/assets/runtimeEndpointReset-CjhvxLH0.js +0 -16
  316. package/dist/assets/tr-DFnMlPxY.js +0 -6
  317. package/dist/assets/useInlineCommentController-CDEuSlPH.js +0 -2
  318. package/dist/assets/vendor-zod-BLfBSgBh.js +0 -39
  319. package/server/index.d.ts.bak +0 -39
  320. package/server/lib/agent-tool/DOCUMENTATION.md.bak +0 -119
  321. package/server/lib/browser-control/DOCUMENTATION.md.bak +0 -50
  322. package/server/lib/context-obligatory/DOCUMENTATION.md.bak +0 -19
  323. package/server/lib/dev-tunnel/DOCUMENTATION.md.bak +0 -57
  324. package/server/lib/dictation/DOCUMENTATION.md.bak +0 -100
  325. package/server/lib/event-stream/DOCUMENTATION.md.bak +0 -62
  326. package/server/lib/fs/DOCUMENTATION.md.bak +0 -47
  327. package/server/lib/git/DOCUMENTATION.md.bak +0 -193
  328. package/server/lib/github/DOCUMENTATION.md.bak +0 -183
  329. package/server/lib/linear/DOCUMENTATION.md.bak +0 -97
  330. package/server/lib/linear/OAUTH-BROKER-HANDOFF.md.bak +0 -91
  331. package/server/lib/markdown-image-grants/DOCUMENTATION.md.bak +0 -40
  332. package/server/lib/notifications/APNS.md.bak +0 -135
  333. package/server/lib/notifications/DOCUMENTATION.md.bak +0 -138
  334. package/server/lib/openchamber-control/DOCUMENTATION.md.bak +0 -64
  335. package/server/lib/opencode/DOCUMENTATION.md.bak +0 -431
  336. package/server/lib/opencode/managed-process-registry.d.ts.bak +0 -13
  337. package/server/lib/opencode/provider-env-aliases.d.ts.bak +0 -3
  338. package/server/lib/permission-auto-accept/DOCUMENTATION.md.bak +0 -34
  339. package/server/lib/project-context/DOCUMENTATION.md.bak +0 -160
  340. package/server/lib/quota/DOCUMENTATION.md.bak +0 -123
  341. package/server/lib/relay/DOCUMENTATION.md.bak +0 -100
  342. package/server/lib/scheduled-tasks/DOCUMENTATION.md.bak +0 -182
  343. package/server/lib/session-assist/DOCUMENTATION.md.bak +0 -66
  344. package/server/lib/session-goal/DOCUMENTATION.md.bak +0 -213
  345. package/server/lib/session-knowledge/DOCUMENTATION.md.bak +0 -89
  346. package/server/lib/skills-catalog/DOCUMENTATION.md.bak +0 -151
  347. package/server/lib/small-model/DOCUMENTATION.md.bak +0 -212
  348. package/server/lib/system-prompt/DOCUMENTATION.md.bak +0 -36
  349. package/server/lib/terminal/DOCUMENTATION.md.bak +0 -50
  350. package/server/lib/text/DOCUMENTATION.md.bak +0 -35
  351. package/server/lib/tts/DOCUMENTATION.md.bak +0 -147
  352. package/server/lib/tunnels/DOCUMENTATION.md.bak +0 -21
  353. package/server/lib/ui-auth/DOCUMENTATION.md.bak +0 -44
  354. package/server/lib/walkthrough/DOCUMENTATION.md.bak +0 -411
@@ -1 +0,0 @@
1
- import{R as r,j as s,f as et}from"./vendor-react-BUCujlKS.js";import{f as bt,V as yt,au as fe,c8 as vt,bR as jt,t as v,ig as It,I as u,B as xe,o as Ye,c2 as He,a1 as Qe,bU as Nt,bV as Pt,bW as wt,bX as St,bY as kt,b_ as Ze,h as D,S as Lt,fI as Ct,b1 as Rt,b3 as At,fJ as Ft,b4 as Et}from"./useAppFontEffects-CjrntdL0.js";import{u as f,d7 as K}from"./index-DW_E3rnL.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-BeMD8X_w.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./contextPanelEmbeddedChat-C3fjDbdg.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-livSKyyV.js";import"./vendor-motion-dom-D_o3BTI3.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-g05Cx3z9.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-DFZik9R2.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-gg7YLRW7.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-zod-BLfBSgBh.js";import"./vendor-opencode-sdk-BJ73u-bH.js";const $e="[&_img]:max-w-full [&_img]:h-auto",tt="flex h-8 min-w-0 flex-1 items-center gap-1.5 rounded-md px-2 typography-ui-label font-semibold text-foreground outline-none hover:bg-interactive-hover focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",Re="flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-foreground outline-none hover:bg-interactive-hover focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",Tt=520,Je=t=>t.name?.trim()||t.urlKey?.trim()||t.id,Mt={0:"contextPanel.linear.priority.none",1:"contextPanel.linear.priority.urgent",2:"contextPanel.linear.priority.high",3:"contextPanel.linear.priority.medium",4:"contextPanel.linear.priority.low"},Kt={triage:0,backlog:1,unstarted:2,started:3,completed:4,canceled:5},Xe=t=>t==="triage"||t==="backlog"||t==="unstarted"||t==="started"||t==="completed"||t==="canceled"?Kt[t]:99,Dt=(t,n)=>{const o=Xe(t.type)-Xe(n.type);return o!==0?o:t.position!==n.position?t.position-n.position:t.name.localeCompare(n.name)},Ot=t=>t!==0&&t!==1&&t!==2&&t!==3&&t!==4?null:Mt[t],he=[{value:"all",labelKey:"contextPanel.linear.filter.status.all"},{value:"backlog",labelKey:"contextPanel.linear.filter.status.backlog"},{value:"todo",labelKey:"contextPanel.linear.filter.status.todo"},{value:"started",labelKey:"contextPanel.linear.filter.status.started"},{value:"inReview",labelKey:"contextPanel.linear.filter.status.inReview"},{value:"completed",labelKey:"contextPanel.linear.filter.status.completed"},{value:"canceled",labelKey:"contextPanel.linear.filter.status.canceled"},{value:"duplicate",labelKey:"contextPanel.linear.filter.status.duplicate"}],Ut=t=>he.some(n=>n.value===t),ge=[{value:"all",labelKey:"contextPanel.linear.filter.priority.all"},{value:"urgent",labelKey:"contextPanel.linear.priority.urgent"},{value:"high",labelKey:"contextPanel.linear.priority.high"},{value:"medium",labelKey:"contextPanel.linear.priority.medium"},{value:"low",labelKey:"contextPanel.linear.priority.low"},{value:"none",labelKey:"contextPanel.linear.priority.none"}],_t=t=>ge.some(n=>n.value===t),zt=t=>t?{color:t,backgroundColor:`color-mix(in srgb, ${t} 18%, transparent)`}:{backgroundColor:"color-mix(in srgb, var(--surface-mutedForeground) 12%, transparent)"},Wt=t=>{const n=et.c(4),{labels:o}=t;if(o.length===0)return null;let c;n[0]!==o?(c=o.map(qt),n[0]=o,n[1]=c):c=n[1];let y;return n[2]!==c?(y=s.jsx("div",{className:"flex min-w-0 flex-wrap items-center gap-1",children:c}),n[2]=c,n[3]=y):y=n[3],y},te=t=>{const n=et.c(31),{icon:o,label:c,ariaLabel:y,value:W,items:V,disabled:j,compact:x,active:w,onValueChange:d}=t,[S,G]=r.useState(!1),B=j?!1:S;let A;n[0]!==j?(A=E=>{j||G(E)},n[0]=j,n[1]=A):A=n[1];const H=w===!0,k=x?Re:tt,Q=x?c:void 0,Z=w?"text-primary":"text-muted-foreground";let L;n[2]!==Z?(L=D("size-3.5 shrink-0",Z),n[2]=Z,n[3]=L):L=n[3];let h;n[4]!==o||n[5]!==L?(h=s.jsx(u,{name:o,className:L}),n[4]=o,n[5]=L,n[6]=h):h=n[6];let C;n[7]!==x||n[8]!==c?(C=x?null:s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"min-w-0 truncate",children:c}),s.jsx(u,{name:"arrow-down-s",className:"size-4 shrink-0 opacity-60"})]}),n[7]=x,n[8]=c,n[9]=C):C=n[9];let I;n[10]!==y||n[11]!==j||n[12]!==H||n[13]!==k||n[14]!==Q||n[15]!==h||n[16]!==C?(I=s.jsx(Rt,{asChild:!0,children:s.jsxs("button",{type:"button",disabled:j,"aria-pressed":H,className:k,"aria-label":y,title:Q,children:[h,C]})}),n[10]=y,n[11]=j,n[12]=H,n[13]=k,n[14]=Q,n[15]=h,n[16]=C,n[17]=I):I=n[17];let R;n[18]!==d?(R=E=>{d(E),G(!1)},n[18]=d,n[19]=R):R=n[19];let N;n[20]!==V?(N=V.map(Yt),n[20]=V,n[21]=N):N=n[21];let g;n[22]!==R||n[23]!==N||n[24]!==W?(g=s.jsx(At,{align:"start",className:"min-w-40",children:s.jsx(Ft,{value:W,onValueChange:R,children:N})}),n[22]=R,n[23]=N,n[24]=W,n[25]=g):g=n[25];let F;return n[26]!==B||n[27]!==I||n[28]!==g||n[29]!==A?(F=s.jsxs(Et,{open:B,onOpenChange:A,children:[I,g]}),n[26]=B,n[27]=I,n[28]=g,n[29]=A,n[30]=F):F=n[30],F},Vt=t=>{const n=t.trim();if(!n)return null;const o=n.match(/linear\.app\/(?:[^/]+\/)?issue\/([A-Za-z][A-Za-z0-9]*-\d+)/i);return o?o[1].toUpperCase():/^[A-Za-z][A-Za-z0-9]*-\d+$/.test(n)?n.toUpperCase():null},Gt=t=>({id:t.id,identifier:t.identifier,title:t.title,url:t.url,state:t.state,assignee:t.assignee,team:t.team,priority:t.priority,labels:t.labels}),Bt=(t,n)=>{const o=Gt(n);return t.map(c=>c.id===n.id?o:c)},In=()=>{const{t}=bt(),{linear:n}=yt(),o=fe(e=>e.status),c=fe(e=>e.hasChecked),y=fe(e=>e.refreshStatus),W=fe(e=>e.setStatus),V=f(e=>e.setSettingsDialogOpen),j=f(e=>e.setSettingsPage),x=f(e=>e.linearIssueListStatus),w=f(e=>e.linearIssueListAssignee),d=f(e=>e.linearIssueListTeamId),S=f(e=>e.linearIssueListPriority),G=f(e=>e.linearIssueFocus),B=f(e=>e.timeFormatPreference),A=f(e=>e.setLinearIssueListStatus),H=f(e=>e.setLinearIssueListAssignee),k=f(e=>e.setLinearIssueListTeamId),Q=f(e=>e.setLinearIssueListPriority),Z=f(e=>e.resetLinearIssueListFilters),L=f(e=>e.setLinearIssueFocus),[h,C]=r.useState(""),[I,R]=r.useState(!1),[N,g]=r.useState([]),[F,E]=r.useState(null),[be,se]=r.useState(!1),[O,U]=r.useState(!0),[ne,Ae]=r.useState(!1),[$,Fe]=r.useState(!1),[Ee,ae]=r.useState(null),[J,T]=r.useState(null),[l,X]=r.useState(null),[_,re]=r.useState([]),[st,Te]=r.useState(!1),[q,Me]=r.useState(!1),[le,Ke]=r.useState(!1),[ie,ye]=r.useState(!1),[Y,oe]=r.useState([]),[ce,De]=r.useState(!1),P=r.useRef(0),ve=r.useRef(null),Oe=r.useRef(null),[Ue,nt]=r.useState(0),ue=r.useMemo(()=>Vt(h),[h]),je=vt(h,350),at=r.useCallback(e=>{if(!e)return"";const a=Date.parse(e);return Number.isFinite(a)?jt(a,B,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}):""},[B]),rt=r.useCallback(()=>{j("integrations"),V(!0)},[V,j]),de=r.useMemo(()=>({query:je.trim()||void 0,status:x,assignee:w,teamId:d===K?void 0:d,priority:S==="all"?void 0:S}),[je,w,S,x,d]),me=o?.workspaces??[],z=me.find(e=>e.current)?.id||o?.organization?.id||"",_e=r.useCallback(async()=>{if(c&&o?.connected===!1){U(!1),g([]),se(!1),E(null),ae(null);return}if(!n?.issuesList){U(!0),ae(t("session.linearIssuePicker.error.runtimeUnavailable"));return}const e=P.current+1;P.current=e,Ae(!0),ae(null);try{const a=await n.issuesList(de);if(e!==P.current)return;if(U(a.connected!==!1),a.connected===!1){g([]),se(!1),E(null);return}g(a.issues??[]),E(a.cursor??null),se(!!a.hasMore)}catch(a){if(e!==P.current)return;ae(a instanceof Error?a.message:String(a))}finally{e===P.current&&Ae(!1)}},[n,c,o,de,t]);r.useEffect(()=>{n&&!c&&y(n)},[n,c,y]),r.useEffect(()=>{_e()},[_e]),r.useEffect(()=>{if(!n?.mappingGet||!O){oe([]);return}let e=!1;return n.mappingGet().then(a=>{if(!e){if(a.connected===!1){oe([]);return}oe(a.teams??[])}}).catch(()=>{e||oe([])}),()=>{e=!0}},[O,z,n]),r.useEffect(()=>{d===K||Y.length===0||Y.some(e=>e.id===d)||k(K)},[d,k,Y]);const lt=r.useCallback(async()=>{if(!n?.issuesList||$||ne||!be||!F)return;const e=P.current+1;P.current=e,Fe(!0);try{const a=await n.issuesList({...de,cursor:F});if(e!==P.current||(U(a.connected!==!1),a.connected===!1))return;g(i=>[...i,...a.issues??[]]),E(a.cursor??null),se(!!a.hasMore)}catch(a){if(e!==P.current)return;const i=a instanceof Error?a.message:String(a);v.error(t("session.linearIssuePicker.toast.loadMoreFailed"),{description:i})}finally{e===P.current&&Fe(!1)}},[F,be,ne,$,n,de,t]);r.useEffect(()=>{if(!J||!n?.issueGet)return;let e=!1;return Te(!0),X(null),re([]),(async()=>{try{const a=await n.issueGet(J);if(e)return;if(a.connected===!1){U(!1),T(null);return}const i=a.issue;if(!i){v.error(t("session.linearIssuePicker.error.issueNotFound")),T(null);return}X(i);const M=i.team?.id;if(!M||!n.issueStates)return;try{const b=await n.issueStates(M);if(e)return;if(b.connected===!1){U(!1);return}re(b.states??[])}catch(b){if(e)return;const pe=b instanceof Error?b.message:String(b);v.error(t("session.linearIssuePicker.toast.loadIssueDetailsFailed"),{description:pe})}}catch(a){if(e)return;const i=a instanceof Error?a.message:String(a);v.error(t("session.linearIssuePicker.toast.loadIssueDetailsFailed"),{description:i}),T(null)}finally{e||Te(!1)}})(),()=>{e=!0}},[n,J,t]),r.useEffect(()=>{G&&(T(G),L(null))},[G,L]);const ze=r.useCallback(e=>{X(e),g(a=>Bt(a,e))},[]),Ie=r.useCallback(async(e,a)=>{if(!(!n?.issueUpdate||!l||q)&&l.state?.id!==e){Me(!0);try{const i=await n.issueUpdate({id:l.id,stateId:e});if(i.connected===!1){U(!1),v.error(t(a));return}if(!i.issue){v.error(t(a));return}ze(i.issue),v.success(t("contextPanel.linear.toast.statusUpdated"))}catch(i){const M=i instanceof Error?i.message:String(i);v.error(t(a),{description:M})}finally{Me(!1)}}},[ze,q,n,l,t]),it=r.useCallback(()=>{const e=_.find(a=>a.type==="completed");if(!e){v.error(t("contextPanel.linear.error.noCompletedState"));return}Ie(e.id,"contextPanel.linear.toast.closeFailed")},[t,Ie,_]),ot=r.useCallback(async()=>{if(!(!l||le)){Ke(!0);try{await It({linear:n,issueKey:l.id,createInWorktree:ie,t})}finally{Ke(!1)}}},[ie,le,n,l,t]),ct=r.useCallback(async e=>{if(!(!n?.authActivate||!e||e===z||ce)){De(!0);try{const a=await n.authActivate(e);W(a),T(null),X(null),re([]),k(K),v.success(t("contextPanel.linear.toast.workspaceSwitched"))}catch(a){const i=a instanceof Error?a.message:String(a);v.error(t("contextPanel.linear.toast.workspaceSwitchFailed"),{description:i})}finally{De(!1)}}},[z,ce,n,W,k,t]),Ne=r.useMemo(()=>{const e=new Map(_.map(b=>[b.id,b])),a=l?.state?.id,i=l?.state?.name;return[...a&&i&&!e.has(a)?[{id:a,name:i,type:l.state?.type??null,position:0},..._]:_].sort(Dt)},[l,_]),ut=_.find(e=>e.type==="completed"),dt=l?.state?.type==="completed",We=c&&O===!1,mt=!n,Ve=!!J,Ge=x==="all"&&w==="any"&&d===K&&S==="all",Pe=!!n&&O&&!We,ee=!Pe||ce,m=Ue>0&&Ue<Tt,we=h.trim().length>0,pt=!Ge||we,Se=!m||I||we,ke=r.useCallback(()=>{C(""),R(!1)},[]);r.useEffect(()=>{const e=ve.current;if(!e||!globalThis.ResizeObserver)return;const a=new ResizeObserver(i=>{nt(i[0]?.contentRect.width??0)});return a.observe(e),()=>a.disconnect()},[Ve]),r.useEffect(()=>{m&&I&&Oe.current?.focus()},[m,I]);const ft=s.jsxs("div",{className:"flex items-center gap-2 cursor-pointer",role:"button",tabIndex:0,"aria-pressed":ie,onClick:()=>ye(e=>!e),onKeyDown:e=>{(e.key===" "||e.key==="Enter")&&(e.preventDefault(),ye(a=>!a))},children:[s.jsx("button",{type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),ye(a=>!a)},"aria-label":t("session.linearIssuePicker.actions.toggleWorktreeAria"),className:"flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",children:ie?s.jsx(u,{name:"checkbox",className:"h-4 w-4 text-primary"}):s.jsx(u,{name:"checkbox-blank",className:"h-4 w-4"})}),s.jsx("span",{className:"typography-meta text-muted-foreground",children:t("session.linearIssuePicker.actions.createInWorktree")})]}),xt=e=>s.jsxs("div",{className:D("group flex items-center gap-2 py-1.5 px-1 rounded cursor-pointer hover:bg-interactive-hover/30 transition-colors",J===e.id&&"bg-interactive-selection/30"),onClick:()=>T(e.id),children:[s.jsx("span",{className:"typography-meta text-muted-foreground w-16 text-right flex-shrink-0",children:e.identifier}),s.jsx("p",{className:"flex-1 min-w-0 typography-small text-foreground truncate ml-0.5",children:e.title}),s.jsx("div",{className:"flex-shrink-0 h-5 flex items-center mr-1",children:s.jsx("button",{type:"button",className:"hidden group-hover:flex h-5 w-5 items-center justify-center text-muted-foreground hover:text-foreground transition-colors",onClick:a=>{a.stopPropagation(),Ye(e.url)},"aria-label":t("session.linearIssuePicker.actions.openInLinearAria"),children:s.jsx(u,{name:"external-link",className:"h-4 w-4"})})})]},e.id);if(Ve){const e=l?.assignee?.displayName||l?.assignee?.name,a=l?.comments??[],i=l?.description?.trim()||"",M=l?.state?.id||"",b=Ot(l?.priority),pe=l?.labels??[];return s.jsxs("div",{ref:ve,className:"flex h-full min-h-0 flex-col",children:[s.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[s.jsxs(xe,{type:"button",variant:"ghost",size:"sm",className:"h-7 px-2",onClick:()=>{T(null),X(null),re([])},"aria-label":t("contextPanel.linear.actions.backToList"),children:[s.jsx(u,{name:"arrow-left-s",className:"h-4 w-4"}),t("contextPanel.linear.actions.backToList")]}),l?s.jsx("button",{type:"button",className:"ml-auto flex h-7 w-7 items-center justify-center text-muted-foreground hover:text-foreground",onClick:()=>{Ye(l.url)},"aria-label":t("session.linearIssuePicker.actions.openInLinearAria"),children:s.jsx(u,{name:"external-link",className:"h-4 w-4"})}):null]}),s.jsxs(He,{as:Qe,outerClassName:"h-full min-h-0 flex-1",className:"px-4 py-3",disableHorizontal:!0,preventOverscroll:!0,children:[st&&!l?s.jsxs("div",{className:"flex items-center justify-center gap-2 py-8 text-muted-foreground",children:[s.jsx(u,{name:"loader-4",className:"h-4 w-4 animate-spin"}),t("contextPanel.linear.loading.issue")]}):null,l?s.jsx(r.Suspense,{fallback:s.jsxs("div",{className:"flex items-center justify-center gap-2 py-8 text-muted-foreground",children:[s.jsx(u,{name:"loader-4",className:"h-4 w-4 animate-spin"}),t("contextPanel.linear.loading.issue")]}),children:s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{children:[s.jsx("div",{className:"typography-meta text-muted-foreground",children:l.identifier}),s.jsx("h2",{className:"typography-ui-header text-foreground mt-0.5",children:l.title})]}),s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[Ne.length>0&&M?s.jsxs(Nt,{value:M,onValueChange:p=>{Ie(p,"contextPanel.linear.toast.statusUpdateFailed")},disabled:q,children:[s.jsx(Pt,{size:"sm",className:"h-7 w-auto min-w-0","aria-label":t("contextPanel.linear.label.statusAria"),children:s.jsx(wt,{placeholder:t("contextPanel.linear.label.status"),children:p=>Ne.find(Le=>Le.id===p)?.name??p})}),s.jsx(St,{children:Ne.map(p=>s.jsx(kt,{value:p.id,children:p.name},p.id))})]}):l.state?.name?s.jsx("span",{className:"typography-meta text-muted-foreground",children:l.state.name}):null,ut&&!dt?s.jsxs(xe,{type:"button",variant:"outline",size:"sm",className:"h-7",onClick:it,disabled:q,children:[q?s.jsx(u,{name:"loader-4",className:"h-4 w-4 animate-spin"}):null,t("contextPanel.linear.actions.closeIssue")]}):null]}),s.jsxs("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 typography-meta",children:[l.team?.name?s.jsxs(s.Fragment,{children:[s.jsx("dt",{className:"text-muted-foreground",children:t("contextPanel.linear.label.team")}),s.jsx("dd",{className:"text-foreground min-w-0 truncate",children:l.team.name})]}):null,s.jsx("dt",{className:"text-muted-foreground",children:t("contextPanel.linear.label.assignee")}),s.jsx("dd",{className:"text-foreground min-w-0 truncate",children:e||t("contextPanel.linear.label.unassigned")}),b?s.jsxs(s.Fragment,{children:[s.jsx("dt",{className:"text-muted-foreground",children:t("contextPanel.linear.label.priority")}),s.jsx("dd",{className:"text-foreground min-w-0 truncate",children:t(b)})]}):null,pe.length>0?s.jsxs(s.Fragment,{children:[s.jsx("dt",{className:"text-muted-foreground",children:t("contextPanel.linear.label.labels")}),s.jsx("dd",{className:"min-w-0",children:s.jsx(Wt,{labels:pe})})]}):null]}),s.jsx("div",{children:i?s.jsx(Ze,{content:i,className:$e,enableFileReferences:!1}):s.jsx("p",{className:"typography-meta text-muted-foreground",children:t("contextPanel.linear.empty.noDescription")})}),s.jsxs("div",{children:[s.jsx("h3",{className:"typography-ui-label text-foreground mb-2",children:t("contextPanel.linear.label.comments")}),a.length===0?s.jsx("p",{className:"typography-meta text-muted-foreground",children:t("contextPanel.linear.empty.noComments")}):s.jsx("div",{className:"relative pl-3",children:a.map((p,Le)=>{const Ce=p.user?.displayName||p.user?.name||t("contextPanel.linear.label.unassigned"),Be=p.user?.avatarUrl||null,ht=Ce.charAt(0).toUpperCase(),gt=Le===a.length-1,qe=at(p.createdAt);return s.jsxs("div",{className:"relative pl-10 pb-5 last:pb-0",children:[gt?null:s.jsx("div",{className:"absolute left-4 top-[2.375rem] bottom-[0.375rem] w-px bg-border/60"}),s.jsx("div",{className:"absolute left-0 top-0 z-10 flex size-8 items-center justify-center overflow-hidden rounded-full border border-border/60 bg-surface-elevated text-xs text-muted-foreground",children:Be?s.jsx("img",{src:Be,alt:Ce,className:"h-full w-full object-cover",loading:"lazy",referrerPolicy:"no-referrer"}):s.jsx("span",{children:ht})}),s.jsxs("div",{className:"rounded-lg bg-surface-elevated px-3 pt-0 pb-3 space-y-2",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 typography-micro text-muted-foreground",children:[s.jsx("span",{className:"text-foreground whitespace-nowrap",children:Ce}),qe?s.jsx("span",{className:"whitespace-nowrap",children:qe}):null]}),p.body.trim()?s.jsx(Ze,{content:p.body,className:D("typography-markdown-body text-foreground break-words",$e),enableFileReferences:!1}):null]})]},p.id)})})]})]})}):null]}),l?s.jsxs("div",{className:"shrink-0 border-t border-border px-4 py-3 flex flex-col gap-3",children:[ft,s.jsxs(xe,{type:"button",onClick:()=>{ot()},disabled:le||q,className:"w-full",children:[le?s.jsx(u,{name:"loader-4",className:"h-4 w-4 animate-spin"}):null,t("contextPanel.linear.actions.startSession")]})]}):null]})}return s.jsxs("div",{ref:ve,className:"flex h-full min-h-0 flex-col",children:[s.jsxs("div",{className:"px-3 pt-3 space-y-2",children:[Se?s.jsxs("div",{className:"relative",children:[s.jsx(u,{name:"search",className:D("absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4",we?"text-primary":"text-muted-foreground")}),s.jsx(Lt,{ref:Oe,placeholder:t("session.linearIssuePicker.searchPlaceholder"),value:h,onChange:e=>C(e.target.value),onKeyDown:e=>{e.key==="Escape"&&m&&(e.preventDefault(),ke())},className:D("pl-9 w-full",m&&"pr-9")}),m?s.jsx("button",{type:"button",className:"absolute right-1.5 top-1/2 flex h-7 w-7 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-interactive-hover hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring","aria-label":t("contextPanel.linear.actions.closeSearch"),title:t("contextPanel.linear.actions.closeSearch"),onClick:ke,children:s.jsx(u,{name:"close",className:"size-3.5"})}):null]}):null,Pe||m&&!Se?s.jsxs("div",{className:D("flex min-w-0 items-center",m&&"gap-0.5"),children:[Pe?s.jsxs(s.Fragment,{children:[s.jsx(te,{icon:"task",label:t((he.find(e=>e.value===x)??he[0]).labelKey),ariaLabel:t("contextPanel.linear.filter.statusAria"),value:x,active:x!=="all",disabled:ee,items:he.map(e=>({value:e.value,label:t(e.labelKey)})),onValueChange:e=>{Ut(e)&&A(e)}}),s.jsx(te,{icon:"error-warning",compact:m,label:t((ge.find(e=>e.value===S)??ge[0]).labelKey),ariaLabel:t("contextPanel.linear.filter.priorityAria"),value:S,active:S!=="all",disabled:ee,items:ge.map(e=>({value:e.value,label:t(e.labelKey)})),onValueChange:e=>{_t(e)&&Q(e)}}),s.jsx(te,{icon:"user-3",compact:m,label:t(w==="me"?"contextPanel.linear.filter.assignee.me":"contextPanel.linear.filter.assignee.any"),ariaLabel:t("contextPanel.linear.filter.assigneeAria"),value:w,active:w!=="any",disabled:ee,items:[{value:"any",label:t("contextPanel.linear.filter.assignee.any")},{value:"me",label:t("contextPanel.linear.filter.assignee.me")}],onValueChange:e=>{(e==="any"||e==="me")&&H(e)}}),Y.length>0?s.jsx(te,{icon:"team",compact:m,label:d===K?t("contextPanel.linear.filter.team.all"):Y.find(e=>e.id===d)?.name??d,ariaLabel:t("contextPanel.linear.filter.teamAria"),value:d,active:d!==K,disabled:ee,items:[{value:K,label:t("contextPanel.linear.filter.team.all")},...Y.map(e=>({value:e.id,label:e.name}))],onValueChange:k}):null,me.length>1&&z?s.jsx(te,{icon:"briefcase",compact:m,label:Je(me.find(e=>e.id===z)??{id:z,name:null,urlKey:null}),ariaLabel:t("contextPanel.linear.label.workspaceAria"),value:z,disabled:ce,items:me.map(e=>({value:e.id,label:Je(e)})),onValueChange:e=>{ct(e)}}):null,pt?s.jsxs("button",{type:"button",className:D(m?Re:tt,!m&&"flex-none"),"aria-label":t("contextPanel.linear.filter.clearAria"),title:t("contextPanel.linear.filter.clearAria"),disabled:ee,onClick:()=>{Z(),ke()},children:[s.jsx(u,{name:"close",className:"size-3.5 shrink-0 text-muted-foreground"}),m?null:s.jsx("span",{className:"min-w-0 truncate",children:t("contextPanel.linear.filter.clear")})]}):null]}):null,m&&!Se?s.jsx("button",{type:"button",className:Re,"aria-label":t("contextPanel.linear.filter.searchAria"),title:t("contextPanel.linear.filter.searchAria"),onClick:()=>R(!0),children:s.jsx(u,{name:"search",className:"size-3.5 shrink-0 text-muted-foreground"})}):null]}):null]}),s.jsxs(He,{as:Qe,outerClassName:"h-full min-h-0 flex-1",className:"px-3 py-2",disableHorizontal:!0,preventOverscroll:!0,children:[mt?s.jsx("div",{className:"text-center text-muted-foreground py-8",children:t("session.linearIssuePicker.empty.runtimeUnavailable")}):null,ne&&N.length===0?s.jsxs("div",{className:"text-center text-muted-foreground py-8 flex items-center justify-center gap-2",children:[s.jsx(u,{name:"loader-4",className:"h-4 w-4 animate-spin"}),t("session.linearIssuePicker.loading.issues")]}):null,We?s.jsxs("div",{className:"text-center text-muted-foreground py-8 space-y-3",children:[s.jsx("div",{children:t("session.linearIssuePicker.empty.notConnected")}),s.jsx("div",{className:"flex justify-center",children:s.jsx(xe,{variant:"outline",size:"sm",onClick:rt,children:t("session.linearIssuePicker.actions.openSettings")})})]}):null,Ee?s.jsx("div",{className:"text-center text-muted-foreground py-8 break-words",children:Ee}):null,ue&&n&&O?s.jsxs("div",{className:"group flex items-center gap-2 py-1.5 px-1 hover:bg-interactive-hover/30 rounded transition-colors cursor-pointer",onClick:()=>T(ue),children:[s.jsx("span",{className:"typography-meta text-muted-foreground w-16 text-right flex-shrink-0",children:ue}),s.jsx("p",{className:"flex-1 min-w-0 typography-small text-foreground truncate ml-0.5",children:t("session.linearIssuePicker.actions.useIssue",{identifier:ue})})]}):null,N.length===0&&!ne&&O&&n?s.jsx("div",{className:"text-center text-muted-foreground py-8",children:je.trim()?t("session.linearIssuePicker.empty.noIssuesFound"):t(Ge?"session.linearIssuePicker.empty.noOpenIssuesFound":"contextPanel.linear.empty.noMatchingIssues")}):null,N.map(xt),be&&O&&n?s.jsx("div",{className:"py-2 flex justify-center",children:s.jsx("button",{type:"button",onClick:()=>{lt()},disabled:$,className:D("typography-meta text-muted-foreground hover:text-foreground transition-colors underline underline-offset-4",$&&"opacity-50 cursor-not-allowed hover:text-muted-foreground"),children:$?s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(u,{name:"loader-4",className:"h-4 w-4 animate-spin"}),t("session.linearIssuePicker.loading.more")]}):t("session.linearIssuePicker.actions.loadMore")})}):null]})]})};function qt(t){return s.jsx("span",{className:"inline-flex h-5 max-w-[8rem] items-center truncate rounded-md px-1.5 typography-meta text-muted-foreground",style:zt(t.color),children:t.name},t.id)}function Yt(t){return s.jsx(Ct,{value:t.value,children:t.label},t.value)}export{In as LinearIssuesView};
@@ -1,12 +0,0 @@
1
- import{R as E,f as ie,j as ee}from"./vendor-react-BUCujlKS.js";import{m as zt}from"./vendor-morphdom-B7dS_VPB.js";import{r as Bt,a as $t}from"./vendor-beautiful-mermaid-DztCUpLZ.js";import{fs as it,ft as Ht,fu as Vt,fv as Kt,g as be,b8 as jt,bb as Ut,fw as Zt,fx as Xt,V as st,ab as at,fy as lt,f as ct,h as dt,ea as Gt,fz as Yt,fA as De,fB as Jt,fC as Qt,fD as en,fE as tn,fF as nn,o as rn}from"./useAppFontEffects-CjrntdL0.js";import{r as on,F as ut,I as te,ci as sn,u as X,a as an,al as Oe,z as ln,A as cn}from"./index-DW_E3rnL.js";import{h as dn}from"./contextPanelEmbeddedChat-C3fjDbdg.js";import{getCachedMarkdownBlocks as We,renderMarkdownSync as un,renderMarkdownBlocks as mn}from"./markdownCore-CZwzz5gw.js";import{r as pn}from"./registerCustomTheme-BBXUCRnG.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-elkjs-BRwcR927.js";import"./vendor-entities-C3BA0AJP.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-BeMD8X_w.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-livSKyyV.js";import"./vendor-motion-dom-D_o3BTI3.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-g05Cx3z9.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-DFZik9R2.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-gg7YLRW7.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-zod-BLfBSgBh.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./vendor-marked-CX41MkDF.js";import"./vendor-marked-linkify-it-CXI_LHIE.js";import"./vendor-linkify-it-DZCzzDkK.js";import"./vendor-uc.micro-BAd0H0z4.js";import"./vendor-remend-BWYYytN3.js";import"./vendor-katex-k3Ppq1Ha.js";import"./vendor-dompurify-r8glNMJW.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";const mt=t=>{const e=t.target;if(!(e instanceof Element))return null;const n=e.closest("a[href]");return!(n instanceof HTMLAnchorElement)||n.getAttribute("data-openchamber-file-link")==="true"?null:n},Le=(t,e)=>{if(t.defaultPrevented)return!1;const r=mt(t)?.getAttribute("href")??"";return Ht(r)?(t.preventDefault(),t.stopPropagation(),e?.(r),!0):!1},fn=t=>t.button===0&&!t.metaKey&&!t.ctrlKey&&!t.altKey&&!t.shiftKey,hn=(t,e)=>{const n=o=>{if(Le(o,e.openAppLink)||!e.allowExternalHttp||o.defaultPrevented||!fn(o))return;const s=mt(o)?.getAttribute("href")??"";it(s)&&(o.preventDefault(),o.stopPropagation(),e.openExternalHttp(s))},r=o=>{o.button===1&&Le(o,e.openAppLink)},i=o=>{Le(o)};return t.addEventListener("click",n),t.addEventListener("auxclick",r),t.addEventListener("dragstart",i),()=>{t.removeEventListener("click",n),t.removeEventListener("auxclick",r),t.removeEventListener("dragstart",i)}},pt="openchamber-md",gn={name:pt,colors:{"editor.background":"transparent","editor.foreground":"var(--md-syntax-foreground)"},tokenColors:[{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:"var(--md-syntax-comment)",fontStyle:"italic"}},{scope:["string","punctuation.definition.string","string.template"],settings:{foreground:"var(--md-syntax-string)"}},{scope:["constant.numeric","constant.language","constant.character","constant"],settings:{foreground:"var(--md-syntax-number)"}},{scope:["keyword","storage","storage.type","storage.modifier","keyword.control"],settings:{foreground:"var(--md-syntax-keyword)"}},{scope:["keyword.operator","punctuation.separator","punctuation.terminator"],settings:{foreground:"var(--md-syntax-operator)"}},{scope:["entity.name.function","support.function","meta.function-call"],settings:{foreground:"var(--md-syntax-function)"}},{scope:["entity.name.type","entity.name.class","support.type","support.class","entity.other.inherited-class"],settings:{foreground:"var(--md-syntax-type)"}},{scope:["variable","variable.other","variable.parameter","meta.definition.variable"],settings:{foreground:"var(--md-syntax-variable)"}},{scope:["variable.other.property","meta.property-name","support.type.property-name"],settings:{foreground:"var(--md-syntax-property)"}},{scope:["entity.name.tag","punctuation.definition.tag"],settings:{foreground:"var(--md-syntax-keyword)"}},{scope:["entity.other.attribute-name"],settings:{foreground:"var(--md-syntax-property)"}},{scope:["markup.bold","punctuation.definition.bold"],settings:{fontStyle:"bold"}},{scope:["markup.italic","punctuation.definition.italic"],settings:{fontStyle:"italic"}},{scope:["markup.heading","markup.heading entity.name"],settings:{foreground:"var(--md-syntax-keyword)",fontStyle:"bold"}},{scope:["markup.inserted","punctuation.definition.inserted"],settings:{foreground:"var(--md-syntax-inserted)"}},{scope:["markup.deleted","punctuation.definition.deleted"],settings:{foreground:"var(--md-syntax-deleted)"}},{scope:["invalid","invalid.illegal"],settings:{foreground:"var(--md-syntax-deleted)"}}]};let qe=!1;const bn=()=>{qe||(qe=!0,pn(pt,()=>Promise.resolve(gn)))},R=t=>Number.isFinite(t)&&t>0,ze=t=>{if(t==null)return null;const e=String(t).trim().match(/^([+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?)(?:px)?$/);if(!e)return null;const n=Number(e[1]);return R(n)?n:null},Me=(t,e,n)=>Math.min(n,Math.max(e,t)),wn=6,Be=1.25,yn=1.0015,An=.5,vn=12,$e=3,kn=400,ne='[data-markdown="mermaid-block"]',I=t=>t.querySelector(ne)!==null,En=t=>[t.x,t.y,t.width,t.height].map(e=>{const n=Number(e.toFixed(wn));return Object.is(n,-0)?"0":String(n)}).join(" "),Cn=t=>{const e=t.viewBox?.trim().split(/[\s,]+/).map(i=>Number.parseFloat(i));if(e?.length===4){const[i,o,s,a]=e;if(Number.isFinite(i)&&Number.isFinite(o)&&R(s)&&R(a))return{x:i,y:o,width:s,height:a}}const n=ze(t.width),r=ze(t.height);return n===null||r===null?null:{x:0,y:0,width:n,height:r}},Sn=t=>{let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return(e>>>0).toString(36)},Ln=t=>{const e=t.renderMode||"unknown",n=t.svgMarkup??"";if(!n){const r=[t.viewBox??"",t.width??"",t.height??""];return r.some(i=>i!=="")?`${e}:bounds:${r.join(":")}`:`${e}:no-svg`}return[e,Sn(n)].join(":")},ft=(t,e)=>{if(!R(e.width)||!R(e.height))return t;const n=t.width/t.height,r=e.width/e.height;if(n>r){const o=t.width/r;return{x:t.x,y:t.y-(o-t.height)/2,width:t.width,height:o}}const i=t.height*r;return{x:t.x-(i-t.width)/2,y:t.y,width:i,height:t.height}},Mn=({currentBox:t,viewport:e,delta:n})=>!R(e.width)||!R(e.height)||!R(t.width)||!R(t.height)?t:{x:t.x-n.x/e.width*t.width,y:t.y-n.y/e.height*t.height,width:t.width,height:t.height},Nn=(t,e)=>{const n=e.x-t.x,r=e.y-t.y;return n*n+r*r>$e*$e},Rn=({currentBox:t,contentBox:e,viewport:n,pointer:r,zoomFactor:i,minScale:o,maxScale:s})=>{if(!R(n.width)||!R(n.height)||!R(i)||!R(t.width)||!R(t.height)||!R(e.width)||!R(e.height)||!R(o)||!R(s))return t;const a=Math.min(o,s),l=Math.max(o,s),c=ft(e,n),u=c.width/t.width,g=Me(u*i,a,l),p=c.width/g,h=p/(t.width/t.height),m=Me(r.x/n.width,0,1),f=Me(r.y/n.height,0,1),A=t.x+m*t.width,v=t.y+f*t.height;return{x:A-m*p,y:v-f*h,width:p,height:h}},we=new WeakMap,xe=new WeakMap,V=new Set,re=new Set;let H=null,Q=null,Y=null;const _n=t=>t.querySelector('[data-markdown="mermaid-viewport"]')??t.querySelector('[data-markdown="mermaid"]'),ht=t=>{const e=t.querySelector('[data-markdown="mermaid"] svg'),n=t.querySelector('[data-markdown="mermaid"]');return Ln({renderMode:t.getAttribute("data-mermaid-render"),svgMarkup:n?.getAttribute("data-md-original-svg")??e?.outerHTML??null,viewBox:e?.getAttribute("viewBox"),width:e?.getAttribute("width"),height:e?.getAttribute("height")})},Z=t=>{const e=t.getBoundingClientRect();return{width:e.width,height:e.height}},Tn=(t,e)=>{const n=e.getBoundingClientRect();return{x:t.clientX-n.left,y:t.clientY-n.top}},xn=t=>t instanceof Element&&!!t.closest('button, a, [role="button"]'),gt=t=>{const e=t.map(n=>Z(n.viewport));t.forEach((n,r)=>{const i=e[r];i&&n.fitToViewport(i)})},bt=()=>{Y!==null||V.size===0||(Y=window.requestAnimationFrame(()=>{Y=null,gt(Array.from(V))}))},Pn=()=>{if(H)return H;const t=globalThis.ResizeObserver;return t?(H=new t(e=>{for(const n of e)n.target instanceof HTMLElement&&xe.get(n.target)?.fitToViewport({width:n.contentRect.width,height:n.contentRect.height})}),H):null},In=t=>{if(V.has(t))return;const e=V.size===0;V.add(t),xe.set(t.viewport,t),Pn()?.observe(t.viewport),e&&window.addEventListener("resize",bt)},Fn=t=>{V.delete(t)&&(H?.unobserve(t.viewport),xe.delete(t.viewport),!(V.size>0)&&(H?.disconnect(),H=null,window.removeEventListener("resize",bt),Y!==null&&(window.cancelAnimationFrame(Y),Y=null)))},Dn=t=>{const e=_n(t),n=t.querySelector('[data-markdown="mermaid"] svg');if(!e||!n)return null;const r=Cn({viewBox:n.getAttribute("viewBox"),width:n.getAttribute("width"),height:n.getAttribute("height")});if(!r)return null;let i=r,o=null,s=null,a=null,l=null;const c=d=>{i=d,n.setAttribute("viewBox",En(d)),n.removeAttribute("width"),n.removeAttribute("height")},u=d=>{c(ft(r,d))},g=()=>{u(Z(e))},p=(d,y)=>{c(Rn({currentBox:i,contentBox:r,viewport:Z(e),pointer:d,zoomFactor:y,minScale:An,maxScale:vn}))},h=()=>{const d=Z(e);p({x:d.width/2,y:d.height/2},Be)},m=()=>{const d=Z(e);p({x:d.width/2,y:d.height/2},1/Be)},f=d=>{!d.ctrlKey&&!d.metaKey||(d.preventDefault(),d.stopPropagation(),p(Tn(d,e),Math.pow(yn,-d.deltaY)))},A=d=>{d.button!==0||xn(d.target)||(o=d.pointerId,s={x:d.clientX,y:d.clientY},a=s,l!==null&&(window.clearTimeout(l),l=null),t.removeAttribute("data-mermaid-suppress-click"),e.setPointerCapture?.(d.pointerId),t.setAttribute("data-mermaid-panning","true"),d.preventDefault())},v=d=>{if(o!==d.pointerId||!a)return;const y={x:d.clientX,y:d.clientY};c(Mn({currentBox:i,viewport:Z(e),delta:{x:y.x-a.x,y:y.y-a.y}})),a=y,s&&Nn(s,y)&&t.setAttribute("data-mermaid-suppress-click","true"),d.preventDefault()},w=d=>{o===d.pointerId&&(e.releasePointerCapture?.(d.pointerId),o=null,s=null,a=null,t.removeAttribute("data-mermaid-panning"),t.hasAttribute("data-mermaid-suppress-click")&&(l=window.setTimeout(()=>{t.removeAttribute("data-mermaid-suppress-click"),l=null},kn)))};e.addEventListener("wheel",f,{passive:!1}),e.addEventListener("pointerdown",A),e.addEventListener("pointermove",v),e.addEventListener("pointerup",w),e.addEventListener("pointercancel",w);const k={viewport:e,zoomIn:h,zoomOut:m,fit:g,fitToViewport:u,cleanup:()=>{Fn(k),e.removeEventListener("wheel",f),e.removeEventListener("pointerdown",A),e.removeEventListener("pointermove",v),e.removeEventListener("pointerup",w),e.removeEventListener("pointercancel",w),l!==null&&window.clearTimeout(l),t.removeAttribute("data-mermaid-panning"),t.removeAttribute("data-mermaid-suppress-click"),we.delete(t)}};return k},wt=t=>{for(const[e,n]of t.controllers){const r=ht(e);(!t.container.contains(e)||r!==t.signatures.get(e))&&(n.cleanup(),t.controllers.delete(e),t.signatures.delete(e))}},On=t=>{if(t.disposed)return[];const e=[];for(const n of Array.from(t.container.querySelectorAll(ne))){if(t.controllers.has(n)||n.querySelector('[data-markdown="mermaid"] svg')===null)continue;const r=Dn(n);r&&(t.controllers.set(n,r),t.signatures.set(n,ht(n)),we.set(n,r),e.push(r))}return e},yt=()=>{const t=Array.from(re);re.clear();const e=[];for(const n of t)n.disposed||(wt(n),e.push(...On(n)));gt(e);for(const n of e)In(n)},Wn=()=>{Q===null&&(Q=window.requestAnimationFrame(()=>{Q=null,Q=window.requestAnimationFrame(()=>{Q=null,yt()})}))},qn=t=>{t.disposed||(wt(t),re.add(t),Wn())},zn=t=>{if(!(t instanceof HTMLElement))return null;const e=we.get(t);if(e)return e;for(const n of re)if(n.container.contains(t))return yt(),we.get(t)??null;return null},Bn=t=>{const e={container:t,controllers:new Map,signatures:new Map,disposed:!1},n=()=>qn(e),r=()=>{e.disposed=!0,re.delete(e);for(const i of e.controllers.values())i.cleanup();e.controllers.clear(),e.signatures.clear()};return n(),{refresh:n,cleanup:r}},$n={copy:"file-copy",check:"check",download:"download",zoomIn:"add",zoomOut:"subtract",fit:"refresh",textWrap:"text-wrap",image:"file-image"},At="p-1 rounded hover:bg-interactive-hover/60 text-muted-foreground hover:text-foreground transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--interactive-focus-ring)]",oe=(t,e)=>{const n=$n[e],r=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("class","remixicon size-3.5"),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("aria-hidden","true");const i=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","use");i.setAttribute("href",`#oc-${n}`),r.appendChild(i),t.replaceChildren(r)},Hn=t=>{for(const e of Array.from(t.querySelectorAll('[data-openchamber-markdown-image-label="true"]'))){if(e.querySelector("[data-openchamber-markdown-image-label-icon]"))continue;const n=document.createElement("span");n.className="inline-flex shrink-0",n.setAttribute("aria-hidden","true"),n.setAttribute("data-openchamber-markdown-image-label-icon","true"),oe(n,"image"),e.prepend(n)}},W=(t,e,n)=>{const r=document.createElement("button");return r.type="button",r.className=At,r.setAttribute("data-md-action",n),r.setAttribute("title",e),r.setAttribute("aria-label",e),oe(r,t),r},vt=(t,e,n)=>{const r=t.querySelector("[data-md-code-body]"),i=t.querySelector("pre"),o=t.querySelector("pre code"),s=t.querySelectorAll("[data-md-code-line-content]"),a=t.querySelector('[data-md-action="toggle-code-wrap"]');t.setAttribute("data-code-wrap",e?"true":"false"),r?.classList.toggle("overflow-x-auto",!e),r?.classList.toggle("overflow-x-hidden",e),i?.classList.toggle("whitespace-pre-wrap",e),i?.classList.toggle("break-words",e),o?.classList.toggle("whitespace-pre-wrap",e),o?.classList.toggle("break-words",e),i&&(i.style.whiteSpace=e?"pre-wrap":"pre",i.style.overflowWrap=e?"anywhere":"normal"),o&&(o.style.whiteSpace=e?"pre-wrap":"pre",o.style.overflowWrap=e?"anywhere":"normal");for(const l of Array.from(s))l.style.whiteSpace=e?"pre-wrap":"pre",l.style.overflowWrap=e?"anywhere":"normal";if(a){const l=e?n.disableCodeWrap:n.enableCodeWrap;a.setAttribute("title",l),a.setAttribute("aria-label",l),a.classList.toggle("text-foreground",e),a.classList.toggle("opacity-100",e),a.classList.toggle("text-muted-foreground",!e),a.classList.toggle("opacity-65",!e),a.setAttribute("aria-pressed",e?"true":"false")}},kt=t=>{const e=t.querySelector(":scope > code");if(!e||e.hasAttribute("data-md-code-lines"))return;t.removeAttribute("data-md-gutter-reserved");const n=e.textContent??"",r=n.endsWith(`
2
- `),i=r?n.slice(0,-1).split(`
3
- `):n.split(`
4
- `),o=i.length>0?i:[""],s=Array.from(e.children).filter(c=>c.classList.contains("line"));r&&s.length===o.length+1&&s.at(-1)?.textContent===""&&s.pop();const a=s.length===o.length,l=document.createDocumentFragment();o.forEach((c,u)=>{const g=document.createElement("span");g.setAttribute("data-md-code-line","");const p=document.createElement("span");p.setAttribute("data-md-code-line-number",String(u+1)),p.setAttribute("aria-hidden","true");const h=document.createElement("span");if(h.setAttribute("data-md-code-line-content",""),a){const m=s[u];m&&h.append(...Array.from(m.childNodes))}else h.textContent=c;if(g.append(p,h),l.appendChild(g),u<o.length-1||r){const m=document.createElement("span");m.setAttribute("data-md-code-line-break",""),m.textContent=`
5
- `,l.appendChild(m)}}),e.replaceChildren(l),e.setAttribute("data-md-code-lines",""),e.toggleAttribute("data-md-code-trailing-newline",r)},Et=t=>{const e=Array.from(t.querySelectorAll("[data-md-code-line-content]"));if(e.length===0)return t.textContent??"";const n=e.map(r=>r.textContent??"").join(`
6
- `);return t.hasAttribute("data-md-code-trailing-newline")?`${n}
7
- `:n},He=(t,e,n)=>{const r=t.querySelectorAll('[data-component="markdown-code"]');for(const i of Array.from(r)){const o=i.querySelector("pre");o&&kt(o),vt(i,e,n)}},Ve=(t,e,n,r)=>{oe(t,"check"),t.setAttribute("title",e),t.setAttribute("aria-label",e),window.setTimeout(()=>{oe(t,n),t.setAttribute("title",r),t.setAttribute("aria-label",r)},2e3)},Vn=t=>{const e=t.querySelectorAll(":not(pre) > code");for(const n of Array.from(e))n.getAttribute("data-markdown")!=="inline-code"&&n.setAttribute("data-markdown","inline-code")},Kn=(t,e)=>{const n=t.querySelectorAll("pre");for(const r of Array.from(n)){if(r.querySelector("code.language-mermaid"))continue;const i=r.parentElement;if(!i||i.closest('[data-component="markdown-code"]'))continue;const o=r.querySelector("code")?.className.match(/language-([\w+#.-]+)/)?.[1],s=r.getAttribute("data-md-lang")??o??"text",a=document.createElement("div");a.setAttribute("data-component","markdown-code"),a.className="my-4 group overflow-hidden rounded-2xl border border-border/80 bg-[var(--surface-elevated)]";const l=document.createElement("div");l.className="flex items-center justify-between border-b border-border/70 px-3 py-1.5";const c=document.createElement("span");c.className="font-mono text-[13px] text-muted-foreground",c.textContent=s;const u=W("copy",e.labels.copy,"copy-code"),g=W("textWrap",e.codeBlockLineWrap?e.labels.disableCodeWrap:e.labels.enableCodeWrap,"toggle-code-wrap");l.appendChild(c);const p=document.createElement("div");p.className="flex items-center gap-1",p.setAttribute("data-md-code-actions",""),p.appendChild(g),p.appendChild(u),l.appendChild(p);const h=document.createElement("div");h.setAttribute("data-md-code-body",""),h.className="px-3 py-2.5 overflow-x-auto",i.replaceChild(a,r),r.style.margin="0",r.style.background="transparent",r.classList.add("min-w-0","w-full","flex-1"),e.deferCodeLineNumberSync?r.setAttribute("data-md-gutter-reserved",""):kt(r),h.appendChild(r),a.appendChild(l),a.appendChild(h),vt(a,e.codeBlockLineWrap,e.labels)}},Ke=t=>{const e=[],n=[],r=t.querySelectorAll("thead th");for(const o of Array.from(r))e.push((o.textContent??"").trim());const i=t.querySelectorAll("tbody tr");for(const o of Array.from(i)){const s=Array.from(o.querySelectorAll("td")).map(a=>(a.textContent??"").trim());s.length>0&&n.push(s)}return{headers:e,rows:n}},jn=t=>/[",\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t,je=({headers:t,rows:e})=>[t,...e].map(n=>n.map(jn).join(",")).join(`
8
- `),Un=({headers:t,rows:e})=>[t,...e].map(n=>n.join(" ")).join(`
9
- `),Ue=({headers:t,rows:e})=>{const n=`| ${t.join(" | ")} |`,r=`| ${t.map(()=>"---").join(" | ")} |`,i=e.map(o=>`| ${o.join(" | ")} |`).join(`
10
- `);return`${n}
11
- ${r}
12
- ${i}`},Ze=(t,e)=>{const n=document.createElement("div");n.className=`absolute top-full right-0 mt-1 hidden ${jt}`,n.style.backgroundColor="var(--surface-elevated)",n.style.color="var(--surface-elevated-foreground)",n.setAttribute("data-md-menu",t);for(const r of e){const i=document.createElement("button");i.type="button",i.className=`w-full text-left ${Ut}`,i.setAttribute("data-md-action",`${t}-${r.key}`),i.textContent=r.label,n.appendChild(i)}return n},Zn=(t,e)=>{const n=t.querySelectorAll("table");for(const r of Array.from(n)){if(r.closest('[data-markdown="table-wrapper"]'))continue;const o=document.createElement("div");o.className="group my-4 flex flex-col space-y-2",o.setAttribute("data-markdown","table-wrapper");const s=document.createElement("div");s.className="flex items-center justify-end gap-1";const a=document.createElement("div");a.className="relative",a.appendChild(W("copy",e.copyTable,"table-copy-toggle")),a.appendChild(Ze("table-copy",[{key:"csv",label:"CSV"},{key:"tsv",label:"TSV"},{key:"markdown",label:"Markdown"}]));const l=document.createElement("div");l.className="relative",l.appendChild(W("download",e.downloadTable,"table-download-toggle")),l.appendChild(Ze("table-download",[{key:"csv",label:"CSV"},{key:"markdown",label:"Markdown"}])),s.appendChild(a),s.appendChild(l);const c=document.createElement("div");c.className="overflow-x-auto rounded-lg border border-border/80 bg-[var(--surface-elevated)]";const u=r.parentElement;if(!u)continue;u.replaceChild(o,r),r.setAttribute("data-markdown","table"),r.classList.add("w-full","border-collapse","text-sm");for(const p of Array.from(r.querySelectorAll("tr")))p.classList.add("border-b","border-border/60");const g=r.querySelector("tbody tr:last-child");g?.classList.remove("border-b"),g?.classList.add("border-0");for(const p of Array.from(r.querySelectorAll("th")))p.classList.add("border-r","border-border/60","px-4","py-2.5","text-left","align-middle","font-semibold","text-foreground","last:border-r-0");for(const p of Array.from(r.querySelectorAll("td")))p.classList.add("border-r","border-border/60","px-4","py-2.5","align-middle","text-foreground/90","last:border-r-0");c.appendChild(r),o.appendChild(s),o.appendChild(c)}},Xn=(t,e)=>{const n=t.querySelectorAll("pre > code.language-mermaid");for(const r of Array.from(n)){const i=r.parentElement;if(!i)continue;const o=(r.textContent??"").replace(/\s+$/,""),s=e.renderMermaid(o),a=document.createElement("div");a.setAttribute("data-markdown","mermaid-block"),a.setAttribute("data-md-source",o),a.className="group relative";const l=document.createElement("div");l.setAttribute("data-markdown","mermaid-scroll");const c=document.createElement("div");if(c.setAttribute("data-markdown","mermaid-toolbar"),c.className="absolute top-1 right-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity",s.svg){a.setAttribute("data-mermaid-render","svg");const g=document.createElement("div");g.setAttribute("data-markdown","mermaid-viewport");const p=document.createElement("div");if(p.setAttribute("data-markdown","mermaid"),p.setAttribute("data-md-original-svg",s.svg),p.innerHTML=s.svg,g.appendChild(p),l.appendChild(g),e.mermaidControls.showPanZoomControls&&(c.appendChild(W("zoomIn",e.labels.zoomInDiagram,"mermaid-zoom-in")),c.appendChild(W("zoomOut",e.labels.zoomOutDiagram,"mermaid-zoom-out")),c.appendChild(W("fit",e.labels.resetDiagramView,"mermaid-fit"))),e.mermaidControls.copy){const h=W("copy",e.labels.copyDiagram,"mermaid-copy");h.setAttribute("data-md-source",o),c.appendChild(h)}if(e.mermaidControls.download){const h=W("download",e.labels.downloadDiagram,"mermaid-download");h.setAttribute("data-md-svg","1"),c.appendChild(h)}}else{a.setAttribute("data-mermaid-render","ascii");const g=document.createElement("pre");if(g.setAttribute("data-markdown","mermaid-ascii"),g.textContent=s.ascii||o,l.appendChild(g),e.mermaidControls.copy){const p=W("copy",e.labels.copyDiagram,"mermaid-copy");p.setAttribute("data-md-source",s.ascii||o),c.appendChild(p)}}a.appendChild(l),a.appendChild(c);const u=i.parentElement;u&&u.replaceChild(a,i)}},Gn=(t,e)=>{const n=t.querySelectorAll("a[href]");for(const r of Array.from(n)){if(r.getAttribute("data-md-link-decorated")==="true"||r.getAttribute("data-openchamber-file-link")==="true")continue;const i=r.getAttribute("href")??"";if(!it(i))continue;r.setAttribute("data-md-link-decorated","true");const o=Vt(i);if(o){const s=document.createElement("span");s.className="mr-1 inline-flex size-[18px] items-center justify-center rounded border border-[var(--border)] bg-[var(--interactive-hover)] align-middle";const a=document.createElement("img");a.src=o,a.alt="",a.setAttribute("aria-hidden","true"),a.loading="lazy",a.decoding="async",a.className="size-3.5 rounded-sm",a.addEventListener("error",()=>s.remove(),{once:!0}),s.appendChild(a),r.parentNode?.insertBefore(s,r)}if(e.onPreviewLoopback&&Kt(i)){const s=document.createElement("button");s.type="button",s.className=`ml-1 align-middle ${At}`,s.setAttribute("data-md-action","preview-loopback"),s.setAttribute("data-md-url",i),s.setAttribute("title",e.labels.previewTitle),s.setAttribute("aria-label",e.labels.previewLabel),oe(s,"download"),r.parentNode?.insertBefore(s,r.nextSibling)}}},me=(t,e)=>{Hn(t),Vn(t),Xn(t,e),Kn(t,e),Zn(t,e.labels),Gn(t,e)},Xe=(t,e,n)=>{const r=new Blob([e],{type:n}),i=URL.createObjectURL(r),o=document.createElement("a");o.href=i,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(i)},pe=t=>{for(const e of Array.from(t.querySelectorAll("[data-md-menu]")))e.classList.add("hidden")},Ge=t=>(t.nodeType===1?t:t.parentElement)?.closest("pre code[data-md-code-lines]")??null,Yn=t=>{const e=Ge(t.startContainer);return!e||e!==Ge(t.endContainer)?null:t.toString()},fe=new WeakMap,Jn=t=>{let e=fe.get(t);if(!e){const n=()=>{const o=t.getSelection();return!o||o.rangeCount!==1||o.isCollapsed?null:Yn(o.getRangeAt(0))},r=o=>{if(!o.clipboardData)return;const s=n();s!==null&&(o.preventDefault(),o.stopPropagation(),o.clipboardData.setData("text/plain",s))},i=o=>{const s=n();s!==null&&(o.preventDefault(),be(s))};e={registrations:0,handler:r,menuHandler:i},fe.set(t,e),t.addEventListener("copy",r,!0),t.defaultView?.addEventListener("aiworker:copy",i)}return e.registrations+=1,()=>{const n=fe.get(t);n&&(n.registrations-=1,!(n.registrations>0)&&(t.removeEventListener("copy",n.handler,!0),t.defaultView?.removeEventListener("aiworker:copy",n.menuHandler),fe.delete(t)))}},Qn=(t,e)=>{const n=Jn(t.ownerDocument),r=i=>{const o=i.target;if(!(o instanceof Element))return;const s=o.closest("[data-md-action]");if(!s){pe(t);return}const a=s.getAttribute("data-md-action")??"";if(a==="copy-code"){const l=s.closest('[data-component="markdown-code"]')?.querySelector("code"),c=l?Et(l):"";c&&(s.setAttribute("data-md-copy-pending",""),be(c).then(()=>Ve(s,e.labels.copied,"copy",e.labels.copy)).finally(()=>s.removeAttribute("data-md-copy-pending")));return}if(a==="toggle-code-wrap"){i.preventDefault(),e.onToggleCodeBlockLineWrap?.();return}if(a==="table-copy-toggle"||a==="table-download-toggle"){i.preventDefault();const l=s.parentElement?.querySelector("[data-md-menu]")??null,c=l?.classList.contains("hidden")??!1;pe(t),l&&c&&l.classList.remove("hidden");return}if(a.startsWith("table-copy-")){const l=a.replace("table-copy-",""),c=s.closest('[data-markdown="table-wrapper"]')?.querySelector("table");if(c instanceof HTMLTableElement){const u=Ke(c),g=l==="csv"?je(u):l==="tsv"?Un(u):Ue(u);be(g)}pe(t);return}if(a.startsWith("table-download-")){const l=a.replace("table-download-",""),c=s.closest('[data-markdown="table-wrapper"]')?.querySelector("table");if(c instanceof HTMLTableElement){const u=Ke(c),g=l==="csv"?je(u):Ue(u);Xe(l==="csv"?"table.csv":"table.md",g,l==="csv"?"text/csv":"text/markdown")}pe(t);return}if(a==="mermaid-copy"){const l=s.getAttribute("data-md-source")??"";l&&be(l).then(()=>Ve(s,e.labels.copied,"copy",e.labels.copyDiagram));return}if(a==="mermaid-zoom-in"||a==="mermaid-zoom-out"||a==="mermaid-fit"){i.preventDefault();const l=s.closest('[data-markdown="mermaid-block"]'),c=zn(l);a==="mermaid-zoom-in"?c?.zoomIn():a==="mermaid-zoom-out"?c?.zoomOut():c?.fit();return}if(a==="mermaid-download"){const l=s.closest('[data-markdown="mermaid-block"]')?.querySelector('[data-markdown="mermaid"]'),c=l?.getAttribute("data-md-original-svg")??l?.innerHTML??"";c&&Xe("diagram.svg",c,"image/svg+xml;charset=utf-8");return}if(a==="preview-loopback"){i.preventDefault();const l=s.getAttribute("data-md-url")??"";l&&e.onPreviewLoopback?.(l);return}};return t.addEventListener("click",r),()=>{n(),t.removeEventListener("click",r)}},Ye=(t,e,n)=>{let r=0;for(const o of t){const s=r+o.data.length;if(e<s||e===s&&n==="left")return{node:o,offset:Math.max(0,e-r)};r=s}const i=t.at(-1);return i?{node:i,offset:i.data.length}:null},er=new Set(["dockerfile","makefile","readme","license",".env",".gitignore",".npmrc"]),Je=Array.from(er).map(t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),Ct=t=>Zt(t),tr=t=>Xt(t),nr=t=>{let e;try{e=new URL(t.trim())}catch{return null}if(e.protocol!=="file:"||e.hostname&&e.hostname!=="localhost")return null;try{const n=decodeURIComponent(e.pathname);return/^\/[A-Za-z]:\//.test(n)?n.slice(1):n.startsWith("/")?n:null}catch{return null}},ye=t=>{let e=(t||"").trim();return e?((e.startsWith("`")&&e.endsWith("`")||e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1).trim()),e=e.replace(/[.,;!?]+$/g,""),e.endsWith(")")&&!e.includes("(")&&(e=e.slice(0,-1)),e.endsWith("]")&&!e.includes("[")&&(e=e.slice(0,-1)),e):""},he=t=>{let e=ye(t);if(!e)return"";const n=e.indexOf(";");n>=0&&(e=e.slice(0,n)),e=e.replace(/#.*$/,"");const r=e.match(/^(.*\.[A-Za-z0-9_-]{1,16}):.*$/);r&&(e=r[1]??e);const i=Je.length>0?e.match(new RegExp(`^(.*(?:/|^)(${Je})):.*$`,"i")):null;return i&&(e=i[1]??e),ye(e)},St=t=>{const e=ye(t);if(!e)return null;const n=e.indexOf(";"),r=n>=0?ye(e.slice(0,n)):e;if(!r)return null;const i=r.match(/^(.*?):(\d+)-(\d+)$/);if(i){const l=he(i[1]??""),c=Number.parseInt(i[2]??"",10),u=Number.parseInt(i[3]??"",10);return!l||!Number.isFinite(c)||!Number.isFinite(u)||u<c?null:{path:l,line:c,endLine:u}}const o=r.match(/^(.*)#L(\d+)(?:C(\d+))?$/i);if(o){const l=he(o[1]??""),c=Number.parseInt(o[2]??"",10),u=o[3]?Number.parseInt(o[3],10):void 0;return!l||!Number.isFinite(c)?null:{path:l,line:c,column:Number.isFinite(u??Number.NaN)?u:void 0}}const s=r.match(/^(.*?):(\d+)(?::(\d+))?$/);if(s){const l=he(s[1]??""),c=Number.parseInt(s[2]??"",10),u=s[3]?Number.parseInt(s[3],10):void 0;return!l||!Number.isFinite(c)?null:{path:l,line:c,column:Number.isFinite(u??Number.NaN)?u:void 0}}const a=he(r);return a?{path:a}:null},Ne=/(?:[A-Za-z]:[\\/])?[\w.\-/@+]*[\w\-/@+]\.[A-Za-z0-9]{1,8}(?::\d+(?:-\d+)?(?::\d+)?)?/g,rr=4,or=1e3,ir=200,z=new Map;let ge=0;const Qe=[],sr=()=>ut()?ir:or,ar=(t,e)=>`${t}\0${e}`,lr=(t,e)=>{const n=Ct(t);if(!n)return Promise.resolve(!1);const r=ar(e,n),i=z.get(r);if(i)return z.delete(r),z.set(r,i),i;const o=new Promise(a=>{const l=()=>{ge+=1,on(`/api/fs/stat?path=${encodeURIComponent(n)}&optional=true`,{method:"GET",cache:"no-store",headers:e?{"x-opencode-directory":e}:void 0}).then(async c=>{if(!c.ok){a(!1);return}const u=await c.json().catch(()=>null);a(u?.exists!==!1)}).catch(()=>a(!1)).finally(()=>{ge=Math.max(0,ge-1),Qe.shift()?.()})};if(ge<rr){l();return}Qe.push(l)}),s=sr();for(;z.size>=s;){const a=z.keys().next().value;if(typeof a!="string")break;z.delete(a)}return z.set(r,o),o},cr={maxSessions:8,maxEntriesPerSession:4};class dr{maxSessions;maxEntriesPerSession;sessions=new Map;constructor(e=cr){this.maxSessions=Math.max(1,e.maxSessions),this.maxEntriesPerSession=Math.max(1,e.maxEntriesPerSession)}store(e){const n=e.scope,r=e.id;let i=this.sessions.get(n);for(i===void 0?(i=new Map,this.sessions.set(n,i)):this.refreshSession(n,i),i.delete(r),i.set(r,e);i.size>this.maxEntriesPerSession;)this.removeOldestEntry(i);for(;this.sessions.size>this.maxSessions;)this.removeOldestSession()}take(e){const n=e.scope,r=this.sessions.get(n);if(!r)return null;const i=e.id;this.refreshSession(n,r);const o=r.get(i);return o===void 0||o.locale!==e.locale||o.directory!==e.directory?null:(r.delete(i),r.size===0&&this.sessions.delete(n),o.fragment)}clear(){this.sessions.clear()}stats(){let e=0;for(const n of this.sessions.values())e+=n.size;return{sessions:this.sessions.size,entries:e}}refreshSession(e,n){this.sessions.delete(e),this.sessions.set(e,n)}removeOldestEntry(e){const n=e.keys().next().value;n!==void 0&&e.delete(n)}removeOldestSession(){const e=this.sessions.keys().next().value;e!==void 0&&this.sessions.delete(e)}}const et=new dr,Lt=()=>{const t=ie.c(4),e=Gt();let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n=Oe(!1),t[0]=n):n=t[0];const r=n;let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=Oe(!0),t[1]=i):i=t[1];const o=i;let s;return t[2]!==e?.currentTheme?(s=e?.currentTheme??(typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?o:r),t[2]=e?.currentTheme,t[3]=s):s=t[3],s},Mt=t=>{const e=ie.c(4),{containerRef:n,enabled:r}=t;let i,o;e[0]!==n||e[1]!==r?(i=()=>{const s=n.current;if(s)return hn(s,{allowExternalHttp:r!==!1,openAppLink:_r,openExternalHttp:Tr})},o=[n,r],e[0]=n,e[1]=r,e[2]=i,e[3]=o):(i=e[2],o=e[3]),E.useEffect(i,o)},J={download:!0,copy:!0,showPanZoomControls:!0},Nt=!0,ur=t=>{const e=t.match(/^(?:\uFEFF)?(---|\+\+\+)[^\S\r\n]*\r?\n[\s\S]*?\r?\n\1[^\S\r\n]*(?:\r?\n|$)/);return e?t.slice(e[0].length):t},tt='[data-openchamber-file-link="true"]',Rt="data-openchamber-block-path-token",_t=`[${Rt}]`,G="data-openchamber-block-paths-scanned",mr=2e5,pr=80,fr=40,nt=160,hr=()=>ut()?fr:pr,gr=new Set(["dockerfile","makefile","readme","license",".env",".gitignore",".npmrc"]),Tt=t=>Ct(t),br=t=>tr(t),wr=(t,e)=>en(t,e),yr=t=>{const e=t.split("/").filter(Boolean).pop()??"";return!e||e.endsWith(".")?!1:/\.[A-Za-z0-9_-]{1,16}$/.test(e)},xt=t=>{if(!t||t.startsWith("--")||t.includes("://")||/[<>]/.test(t)||/\s{2,}/.test(t))return!1;const e=Tt(t),n=e.split("/").filter(Boolean).pop()??e;if(!n||n==="."||n==="..")return!1;const r=n.toLowerCase();return gr.has(r)||r.startsWith(".")&&r.length>1?!0:yr(e)},Pt=t=>{const e=St(t);return e?xt(e.path):!1},Ar=t=>{const e=t.querySelectorAll(_t);for(const r of Array.from(e))r.replaceWith(t.ownerDocument.createTextNode(r.textContent??""));const n=t.querySelectorAll(`code[${G}]`);for(const r of Array.from(n))r.removeAttribute(G),r.normalize()},Re=t=>{if(t.tagName.toLowerCase()==="a"){const e=t.getAttribute("href")?.trim(),n=e?nr(e):null;if(n)return n;if(e&&Pt(e))return e}return(t.textContent||"").trim()},vr=t=>{const e=t.querySelectorAll("pre code");if(e.length===0)return;const n=t.ownerDocument;if(n)for(const r of Array.from(e)){if(r.getAttribute(G)==="true")continue;if((r.textContent??"").length>mr){r.setAttribute(G,"true");continue}const i=n.createTreeWalker(r,NodeFilter.SHOW_TEXT),o=[];let s=i.nextNode();for(;s;){const u=s;u.parentElement?.closest("[data-md-code-line-number]")||o.push(u),s=i.nextNode()}const a=Et(r);if(!a.includes(".")){r.setAttribute(G,"true");continue}Ne.lastIndex=0;const l=[];let c=Ne.exec(a);for(;c;){const u=c[0];u&&Pt(u)&&l.push({start:c.index,end:c.index+u.length,raw:u}),c=Ne.exec(a)}for(const{start:u,end:g,raw:p}of l.reverse()){const h=Ye(o,u,"right"),m=Ye(o,g,"left");if(!h||!m)continue;const f=n.createRange();f.setStart(h.node,h.offset),f.setEnd(m.node,m.offset);const A=n.createElement("span");A.setAttribute(Rt,"true"),A.textContent=p,f.deleteContents(),f.insertNode(A)}r.setAttribute(G,"true")}},_e=(t,e)=>{const n=St(t);if(!n||!xt(n.path))return null;const r=br(n.path)?Tt(n.path):wr(e,n.path);return r?{...n,resolvedPath:r}:null},kr=(t,e)=>t||Qt(t,e),It=({containerRef:t,effectiveDirectory:e,editor:n,preferRuntimeEditor:r,enabled:i})=>{const o=E.useRef(null);E.useEffect(()=>{const s=t.current;if(!s||i&&!e)return;let a=!1;const l=hr(),c=i&&!dn(),u=d=>{d.removeAttribute("data-openchamber-file-link"),d.removeAttribute("data-openchamber-file-ref"),d.removeAttribute("data-openchamber-file-path"),d.getAttribute("title")==="Open file"&&d.removeAttribute("title"),d.tagName.toLowerCase()!=="a"&&(d.removeAttribute("role"),d.removeAttribute("tabindex"))},g=()=>{const d=s.querySelectorAll(tt);for(const y of Array.from(d))u(y);Ar(s)};if(!c){g();return}const p=(d=0)=>{if(o.current!==null&&typeof window<"u"&&window.clearTimeout(o.current),typeof window>"u"){h();return}o.current=window.setTimeout(()=>{o.current=null,window.requestAnimationFrame(()=>{a||h()})},d)},h=()=>{w+=1;try{m()}finally{queueMicrotask(()=>{w-=1})}},m=()=>{c&&vr(s);const d=s.querySelectorAll(`[data-markdown="inline-code"], a, ${_t}`);let y=0;for(const b of Array.from(d)){const L=Re(b),C=_e(L,e);if(u(b),!C||y>=l)continue;y+=1,(ln()&&cn()&&!De(C.resolvedPath,e)?Promise.resolve(!0):lr(C.resolvedPath,e)).then(x=>{if(a||!x||!s.contains(b))return;const _=Re(b),P=_e(_,e);!P||P.resolvedPath!==C.resolvedPath||(b.setAttribute("data-openchamber-file-link","true"),b.setAttribute("data-openchamber-file-ref",_),b.setAttribute("data-openchamber-file-path",P.resolvedPath),b.setAttribute("title","Open file"),b.tagName.toLowerCase()!=="a"&&(b.setAttribute("role","button"),b.setAttribute("tabindex","0")))})}},f=async d=>{const y=d.getAttribute("data-openchamber-file-ref")||Re(d),b=_e(y,e);if(!b)return;const L=kr(e,b.resolvedPath);if(r&&n){n.openFile(b.resolvedPath,Number.isFinite(b.line??Number.NaN)?Math.max(1,Math.trunc(b.line)):void 0,Number.isFinite(b.column??Number.NaN)?Math.max(1,Math.trunc(b.column)):void 0);return}De(b.resolvedPath,e)||await Jt(b.resolvedPath,e);const C=X.getState();Number.isFinite(b.line??Number.NaN)?C.openContextFileAtLine(L,b.resolvedPath,Math.max(1,Math.trunc(b.line)),Number.isFinite(b.column??Number.NaN)?Math.max(1,Math.trunc(b.column)):1):C.openContextFile(L,b.resolvedPath)},A=d=>{const y=d.target;if(!(y instanceof Element))return;const b=y.closest(tt);b instanceof HTMLElement&&(d.preventDefault(),d.stopPropagation(),f(b))},v=d=>{if(d.key!=="Enter"&&d.key!==" ")return;const y=d.target;!(y instanceof HTMLElement)||y.getAttribute("data-openchamber-file-link")!=="true"||(d.preventDefault(),d.stopPropagation(),f(y))};p(nt);let w=0;const k=new MutationObserver(()=>{w>0||p(nt)});return k.observe(s,{childList:!0,subtree:!0}),s.addEventListener("click",A),s.addEventListener("keydown",v),()=>{a=!0,o.current!==null&&typeof window<"u"&&window.clearTimeout(o.current),o.current=null,k.disconnect(),s.removeEventListener("click",A),s.removeEventListener("keydown",v)}},[t,n,e,r,i])},Ft=t=>{const e=ie.c(7),{containerRef:n,onShowPopup:r,enableFullscreen:i,enablePanZoom:o,allowMermaidWheelEvents:s}=t;let a,l;e[0]!==s||e[1]!==n||e[2]!==i||e[3]!==o||e[4]!==r?(a=()=>{const c=n.current;if(!c)return;const u=p=>{if(!i||!r)return;const h=p.target;if(!(h instanceof Element)||h.closest('button, a, [role="button"]'))return;const m=h.closest(ne);if(!m)return;if(m instanceof HTMLElement&&m.hasAttribute("data-mermaid-suppress-click")){m.removeAttribute("data-mermaid-suppress-click");return}const A=Array.from(c.querySelectorAll(ne)).indexOf(m);if(A<0)return;const v=m instanceof HTMLElement?m.getAttribute("data-md-source"):null;if(!v||v.trim().length===0)return;const w=`Diagram ${A+1}`;r({open:!0,title:w,content:"",metadata:{tool:"mermaid-preview",filename:w},mermaid:{url:`data:text/plain;charset=utf-8,${encodeURIComponent(v)}`,source:v,filename:w}})},g=p=>{if(s||(p.ctrlKey||p.metaKey)&&o)return;const h=p.target;!(h instanceof Element)||!h.closest(ne)||p.stopPropagation()};return c.addEventListener("click",u),c.addEventListener("wheel",g,{capture:!0,passive:!0}),()=>{c.removeEventListener("click",u),c.removeEventListener("wheel",g,!0)}},l=[s,n,i,o,r],e[0]=s,e[1]=n,e[2]=i,e[3]=o,e[4]=r,e[5]=a,e[6]=l):(a=e[5],l=e[6]),E.useEffect(a,l)},B=new Map,Er=100,$="data-md-decoration-id",Cr=(t,e,n)=>{const r=t.children;if(r.length!==e.length)return!1;for(let i=0;i<e.length;i+=1){const o=r[i];if(!o||o.getAttribute("data-md-id")!==e[i]?.id||o.getAttribute($)!==n)return!1}return!0},rt=new WeakMap;let ot=0;const Sr=2e5,Te=t=>{const e=rt.get(t);if(e)return e;const n=`decoration-${ot}`;return ot+=1,rt.set(t,n),n},Lr=(t,e)=>{const n=B.get(t);if(n)return B.delete(t),B.set(t,n),n;const r=e();if(B.set(t,r),B.size>Er){const i=B.keys().next().value;i&&B.delete(i)}return r},Mr=t=>({bg:t.colors.surface.elevated,fg:t.colors.surface.foreground,line:t.colors.interactive.border,accent:t.colors.primary.base,muted:t.colors.surface.mutedForeground,surface:t.colors.surface.muted,border:t.colors.interactive.border,transparent:!0,font:"system-ui, sans-serif"}),Dt=(t,e,n,r=J)=>{const{t:i}=ct(),o=E.useMemo(()=>({copy:i("markdownRenderer.code.actions.copyTitle"),copied:i("markdownRenderer.code.actions.copiedTitle"),enableCodeWrap:i("markdownRenderer.code.actions.enableWrapTitle"),disableCodeWrap:i("markdownRenderer.code.actions.disableWrapTitle"),copyTable:i("markdownRenderer.table.actions.copyTitle"),downloadTable:i("markdownRenderer.table.actions.downloadTitle"),copyDiagram:i("markdownRenderer.mermaid.actions.copySourceTitle"),downloadDiagram:i("markdownRenderer.mermaid.actions.downloadSvgTitle"),zoomInDiagram:i("markdownRenderer.mermaid.actions.zoomInTitle"),zoomOutDiagram:i("markdownRenderer.mermaid.actions.zoomOutTitle"),resetDiagramView:i("markdownRenderer.mermaid.actions.resetViewTitle"),previewLabel:i("terminalView.preview.open"),previewTitle:i("terminalView.preview.openTitle")}),[i]),s=X(c=>c.codeBlockLineWrap),a=X(c=>c.setCodeBlockLineWrap),l=E.useCallback(()=>{a(!X.getState().codeBlockLineWrap)},[a]);return E.useMemo(()=>{const c=Mr(t),u=X.getState().mermaidRenderingMode,g=t.metadata?.id??"theme";return{labels:o,mermaidControls:r,codeBlockLineWrap:s,deferCodeLineNumberSync:e,onToggleCodeBlockLineWrap:l,renderMermaid:h=>Lr(`${g}:${u}:${h}`,()=>{try{return u==="ascii"?{ascii:Bt(h)}:{svg:$t(h,c)}}catch{return{}}}),onPreviewLoopback:n}},[t,o,r,s,e,l,n])},Ot=({containerRef:t,text:e,streaming:n,imageMode:r="inline",syntaxVars:i,ctx:o,domCacheKey:s})=>{E.useEffect(()=>{bn()},[]);const a=E.useRef(null),l=E.useRef(0),c=E.useContext(Yt),u=E.useRef(null),g=E.useCallback(()=>{u.current?.(),u.current=null},[]);E.useEffect(()=>g,[g]);const p=E.useRef(null),h=E.useCallback(()=>{const m=t.current;if(m){if(!a.current){if(!I(m))return;a.current=Bn(m);return}a.current.refresh()}},[t]);E.useLayoutEffect(()=>{l.current+=1,p.current=null},[o,r,n,e]),E.useLayoutEffect(()=>{if(!s)return;const m=t.current,f=m?.querySelector("[data-markdown-content]")??m;if(!f||f.childNodes.length>0)return;const A=et.take(s);if(A){f.appendChild(A);const v=Te(o);for(const w of Array.from(f.children))w.setAttribute($,v);for(const[w,k]of Object.entries(i))f.style.setProperty(w,k);He(f,o.codeBlockLineWrap,o.labels),p.current={key:s,copiedLabel:o.labels.copied},te("ui.markdown_renderer.dom_cache.hit")}},[t,o,s,i,e.length]),E.useLayoutEffect(()=>{const m=t.current,f=m?.querySelector("[data-markdown-content]")??m;if(f)return()=>{const A=p.current;if(!A||f.childNodes.length===0||I(f)||Array.from(f.children).some(y=>!y.hasAttribute("data-md-id"))||f.querySelector("[data-md-copy-pending]"))return;const v=window.getSelection();if(v?.rangeCount&&!v.isCollapsed&&v.getRangeAt(0).intersectsNode(f))return;const w=f.querySelector("[data-md-menu]:not(.hidden)"),k=Array.from(f.querySelectorAll("[data-md-action]")).some(y=>y.getAttribute("title")===A.copiedLabel);if(w||k)return;const d=document.createDocumentFragment();d.append(...Array.from(f.childNodes)),et.store({...A.key,fragment:d}),te("ui.markdown_renderer.dom_cache.capture")}},[t]),E.useLayoutEffect(()=>{const m=t.current,f=m?.querySelector("[data-markdown-content]")??m;if(!f)return;const A=Te(o);if(e&&f.childNodes.length===0){const v=n?null:We(e,r);if(v){let w=!1;for(const k of v){const d=document.createElement("div");d.setAttribute("data-md-block",""),d.style.display="contents",d.innerHTML=k.html,me(d,o),d.setAttribute("data-md-id",k.id),d.setAttribute($,A),w||=I(d),f.appendChild(d)}w&&h()}else{!n&&!u.current&&(u.current=c?.hold()??null);const w=document.createElement("div");w.setAttribute("data-md-block",""),w.style.display="contents",w.innerHTML=un(e,r),me(w,o),w.setAttribute($,A),f.appendChild(w),I(w)&&h()}}else!a.current&&I(f)&&h()},[t,e,n,r,o,h,c]),E.useEffect(()=>()=>{a.current?.cleanup(),a.current=null},[]),E.useEffect(()=>{const m=t.current;if(!m)return;const f=m.querySelector("[data-markdown-content]")??m;let A=!0;const v=l.current,w=Te(o);if(!n){const k=We(e,r);if(k&&Cr(f,k,w)){p.current=s?{key:s,copiedLabel:o.labels.copied}:null,te("ui.markdown_renderer.settled_paint.reused"),g();return}}return mn(e,n,r).then(k=>{if(!A||l.current!==v)return;const d=Array.from(f.children);let y=0;k.forEach((C,T)=>{let M=d[T],x=!1;if(M||(M=document.createElement("div"),M.setAttribute("data-md-block",""),M.style.display="contents",f.appendChild(M),x=!0),M.getAttribute("data-md-id")===C.id){if(M.getAttribute($)!==w){const N=I(M);N&&(a.current?.cleanup(),a.current=null);const S=document.createElement("div");S.setAttribute("data-md-block",""),S.style.display="contents",S.innerHTML=C.html,me(S,o),S.setAttribute("data-md-id",C.id),S.setAttribute($,w),M.replaceWith(S),(N||I(S))&&h()}!a.current&&I(M)&&h();return}const _=document.createElement("div");if(_.innerHTML=C.html,me(_,o),x&&n&&T>0){const N=Math.min(y,4)*55;y+=1;for(const S of Array.from(_.children))S.classList.add("oc-md-block-enter"),N>0&&S instanceof HTMLElement&&S.style.setProperty("--oc-md-enter-delay",`${N}ms`)}const P=I(M),F=I(_);zt(M,_,{childrenOnly:!0,onBeforeElUpdated:(N,S)=>!N.isEqualNode(S)}),M.setAttribute("data-md-id",C.id),M.setAttribute($,w),(P||F||I(M))&&h()});const b=I(f);let L=!1;for(let C=d.length-1;C>=k.length;C-=1){const T=d[C];T&&I(T)&&(L=!0),T?.remove()}(L||d.length>k.length&&b)&&h(),p.current=s?{key:s,copiedLabel:o.labels.copied}:null,g()}),()=>{A=!1}},[t,o,s,r,h,g,n,e]),E.useEffect(()=>{const m=t.current;if(m)return Qn(m,o)},[t,o]),E.useEffect(()=>{const m=t.current,f=m?.querySelector("[data-markdown-content]")??m;if(f)for(const[A,v]of Object.entries(i))f.style.setProperty(A,v)},[t,i]),E.useEffect(()=>{const m=t.current,f=m?.querySelector("[data-markdown-content]")??m;f&&(o.deferCodeLineNumberSync||He(f,o.codeBlockLineWrap,o.labels))},[t,o.codeBlockLineWrap,o.deferCodeLineNumberSync,o.labels])},Wt=t=>t==="tool"?"markdown-content markdown-tool":t==="reasoning"?"markdown-content markdown-reasoning":"markdown-content leading-relaxed",Nr=t=>{const e=ie.c(39),{content:n,part:r,messageId:i,isAnimated:o,skipFadeIn:s,className:a,isStreaming:l,disableStreamAnimation:c,variant:u,onShowPopup:g,enableFileReferences:p}=t,h=o===void 0?!0:o,m=s===void 0?!1:s,f=l===void 0?!1:l,A=c===void 0?!1:c,v=u===void 0?"assistant":u,w=p===void 0?!0:p;te("ui.markdown_renderer.render"),f&&te("ui.markdown_renderer.render.streaming"),sn("ui.markdown_renderer.content_len",n.length);const k=Lt(),{editor:d,runtime:y}=st(),b=E.useRef(null),L=at()??"",C=X(xr);let T;e[0]!==L||e[1]!==C?(T=O=>{L&&C(L,O)},e[0]=L,e[1]=C,e[2]=T):T=e[2];const M=T,x=f&&!A;let _;e[3]!==g?(_={containerRef:b,onShowPopup:g,enableFullscreen:Nt,enablePanZoom:J.showPanZoomControls},e[3]=g,e[4]=_):_=e[4],Ft(_);const P=w&&!f;let F;e[5]!==d||e[6]!==L||e[7]!==y.isVSCode||e[8]!==P?(F={containerRef:b,effectiveDirectory:L,editor:d,preferRuntimeEditor:y.isVSCode,enabled:P},e[5]=d,e[6]=L,e[7]=y.isVSCode,e[8]=P,e[9]=F):F=e[9],It(F);let N;e[10]===Symbol.for("react.memo_cache_sentinel")?(N={containerRef:b},e[10]=N):N=e[10],Mt(N);let S;e[11]!==k?(S=lt(k),e[11]=k,e[12]=S):S=e[12];const D=S,q=Dt(k,x,L?M:void 0,J),{locale:Ae}=ct(),se=v==="assistant"?"label":"inline",ve=r&&(r.type==="text"||r.type==="reasoning")&&r.time?.end!==void 0?r:null;let ae;e[13]===Symbol.for("react.memo_cache_sentinel")?(ae=an(),e[13]=ae):ae=e[13];const qt=ae,Pe=ve?.sessionID,Ie=ve?.messageID,Fe=ve?.id;let ke;e:{if(f||!Pe||!Ie||!Fe||n.length===0||n.length>Sr){ke=null;break e}const O=`${qt}\0${Pe}`,Se=`${Ie}\0${Fe}\0${se}\0${n.length}`;let ue;e[14]!==L||e[15]!==Ae||e[16]!==O||e[17]!==Se?(ue={scope:O,id:Se,locale:Ae,directory:L},e[14]=L,e[15]=Ae,e[16]=O,e[17]=Se,e[18]=ue):ue=e[18],ke=ue}const Ee=ke,Ce=`markdown-${r?.id?`part-${r.id}`:`message-${i}`}`;let le;e[19]!==n||e[20]!==q||e[21]!==Ee||e[22]!==se||e[23]!==x||e[24]!==D?(le={containerRef:b,text:n,streaming:x,imageMode:se,syntaxVars:D,ctx:q,domCacheKey:Ee},e[19]=n,e[20]=q,e[21]=Ee,e[22]=se,e[23]=x,e[24]=D,e[25]=le):le=e[25],Ot(le);let K;e[26]!==a?(K=dt("break-words w-full min-w-0",a),e[26]=a,e[27]=K):K=e[27];let j;e[28]!==v?(j=Wt(v),e[28]=v,e[29]=j):j=e[29];let U;e[30]!==j?(U=ee.jsx("div",{className:j,"data-markdown-content":!0}),e[30]=j,e[31]=U):U=e[31];let ce;e[32]!==K||e[33]!==U?(ce=ee.jsx("div",{className:K,ref:b,children:U}),e[32]=K,e[33]=U,e[34]=ce):ce=e[34];const de=ce;if(h){let O;return e[35]!==Ce||e[36]!==de||e[37]!==m?(O=ee.jsx(tn,{skipAnimation:m,children:de},Ce),e[35]=Ce,e[36]=de,e[37]=m,e[38]=O):O=e[38],O}return de},Di=E.memo(Nr,(t,e)=>t.content===e.content&&t.isStreaming===e.isStreaming&&t.disableStreamAnimation===e.disableStreamAnimation&&t.variant===e.variant&&t.isAnimated===e.isAnimated&&t.skipFadeIn===e.skipFadeIn&&t.className===e.className&&t.messageId===e.messageId&&t.onShowPopup===e.onShowPopup&&t.enableFileReferences===e.enableFileReferences&&t.part?.id===e.part?.id),Rr=t=>{const e=ie.c(29),{content:n,className:r,variant:i,disableLinkSafety:o,stripFrontmatter:s,onShowPopup:a,mermaidControls:l,allowMermaidWheelEvents:c,enableFileReferences:u}=t,g=i===void 0?"assistant":i,p=s===void 0?!1:s,h=l===void 0?J:l,m=c===void 0?!1:c,f=u===void 0?!0:u,{editor:A,runtime:v}=st(),w=Lt(),k=E.useRef(null),d=at()??"";let y;e[0]!==n||e[1]!==p?(y=p?ur(n):n,e[0]=n,e[1]=p,e[2]=y):y=e[2];const b=y;let L;e[3]!==m||e[4]!==h.showPanZoomControls||e[5]!==a?(L={containerRef:k,onShowPopup:a,enableFullscreen:Nt,enablePanZoom:h.showPanZoomControls,allowMermaidWheelEvents:m},e[3]=m,e[4]=h.showPanZoomControls,e[5]=a,e[6]=L):L=e[6],Ft(L);let C;e[7]!==A||e[8]!==d||e[9]!==f||e[10]!==v.isVSCode?(C={containerRef:k,effectiveDirectory:d,editor:A,preferRuntimeEditor:v.isVSCode,enabled:f},e[7]=A,e[8]=d,e[9]=f,e[10]=v.isVSCode,e[11]=C):C=e[11],It(C);const T=!o;let M;e[12]!==T?(M={containerRef:k,enabled:T},e[12]=T,e[13]=M):M=e[13],Mt(M);let x;e[14]!==w?(x=lt(w),e[14]=w,e[15]=x):x=e[15];const _=x,P=Dt(w,!1,void 0,h);let F;e[16]!==P||e[17]!==b||e[18]!==_?(F={containerRef:k,text:b,streaming:!1,syntaxVars:_,ctx:P},e[16]=P,e[17]=b,e[18]=_,e[19]=F):F=e[19],Ot(F);let N;e[20]!==r?(N=dt("break-words w-full min-w-0",r),e[20]=r,e[21]=N):N=e[21];let S;e[22]!==g?(S=Wt(g),e[22]=g,e[23]=S):S=e[23];let D;e[24]!==S?(D=ee.jsx("div",{className:S,"data-markdown-content":!0}),e[24]=S,e[25]=D):D=e[25];let q;return e[26]!==N||e[27]!==D?(q=ee.jsx("div",{className:N,ref:k,children:D}),e[26]=N,e[27]=D,e[28]=q):q=e[28],q},Oi=E.memo(Rr,(t,e)=>{const n=t.mermaidControls??J,r=e.mermaidControls??J;return t.content===e.content&&t.variant===e.variant&&t.className===e.className&&t.disableLinkSafety===e.disableLinkSafety&&t.stripFrontmatter===e.stripFrontmatter&&t.onShowPopup===e.onShowPopup&&n.download===r.download&&n.copy===r.copy&&n.showPanZoomControls===r.showPanZoomControls&&t.allowMermaidWheelEvents===e.allowMermaidWheelEvents&&t.enableFileReferences===e.enableFileReferences});function _r(t){nn(t)}function Tr(t){rn(t)}function xr(t){return t.openContextPreview}export{Di as MarkdownRenderer,Oi as SimpleMarkdownRenderer};
@@ -1,5 +0,0 @@
1
- import{R as t,j as n}from"./vendor-react-BUCujlKS.js";import{m as bt,u as qe,a as he,o as Xe,r as Ze,v as jt}from"./index-DW_E3rnL.js";import{c as Ct,s as Rt,P as Pt,C as kt}from"./shikiHighlight-DYOWuY65.js";import{f as Mt,y as H,ca as Tt,av as Nt,b as et,ag as Et,ab as It,V as Dt,b5 as Vt,L as Ft,f4 as Lt,Y as At,g_ as Wt,l as tt,f3 as $t,am as nt,gd as Kt,f1 as zt,cU as rt,f6 as Ot,f7 as _t,m as Bt,g$ as Gt,b4 as st,a6 as ge,a7 as we,b1 as it,B as ne,I as z,a8 as ve,b3 as ot,b0 as re,g as Jt,c2 as Ut,ao as Ht,b_ as Yt,h0 as Qt}from"./useAppFontEffects-CjrntdL0.js";import{u as qt,n as Xt}from"./useInlineCommentController-CDEuSlPH.js";import{b as Zt}from"./CodeMirrorCommentWidgets-B3u7UIcE.js";import{getResolvedShikiTheme as en}from"./appThemeRegistry-BK0dHKa6.js";import{E as tn}from"./vendor-codemirror-view-CiLROUVV.js";import{_ as nn}from"./runtimeEndpointReset-CjhvxLH0.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-zod-BLfBSgBh.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-codemirror-search-BmS-GmcX.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-replit-codemirror-vim-B2DJlAhT.js";import"./vendor-replit-codemirror-vim-core-FHzKdNUS.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-base-ui-BeMD8X_w.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./contextPanelEmbeddedChat-C3fjDbdg.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-livSKyyV.js";import"./vendor-motion-dom-D_o3BTI3.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-g05Cx3z9.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-DFZik9R2.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-legendapp-list-gg7YLRW7.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./registerCustomTheme-BBXUCRnG.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";const rn=()=>{const l=new Map,c=new Map;return{schedule:(o,s,f)=>{if(s<=(c.get(o)??Number.NEGATIVE_INFINITY))return l.get(o)??Promise.resolve();c.set(o,s);const g=(l.get(o)??Promise.resolve()).then(f,f);return l.set(o,g.catch(()=>{c.get(o)===s&&c.delete(o)})),g},pendingFor:async o=>{await l.get(o)},reset:o=>{c.delete(o)}}},x=l=>{if(!l)return"";const c=l.replace(/\\/g,"/");return c==="/"?"/":c.replace(/\/+$/,"")},Se=(l,c)=>{const o=x(l),s=c.replace(/\\/g,"/").replace(/^\/+/,"").replace(/\/+$/,"");return!o||o==="/"?`/${s}`:`${o}/${s}`},sn=(l,c,o)=>Se(Se(Se(l,".opencode"),"plans"),`${c}-${o}.md`),on=(l,c)=>`~/.opencode/plans/${l}-${c}.md`,an=(l,c)=>{const o=l.trim();return o.startsWith("~")?o==="~"?c||o:(o.startsWith("~/")||o.startsWith("~\\"))&&c?`${c}${o.slice(1)}`:o:o},ln=(l,c)=>{const o=x(c.currentDirectory),s=x(c.homeDirectory),f=x(l);return o&&f.startsWith(o+"/")?f.slice(o.length+1):s&&f===s?"~":s&&f.startsWith(s+"/")?`~${f.slice(s.length)}`:f},cn=(l,c,o)=>{const s=x(l.trim());if(!s)return null;const f=o?c.find(g=>g.id===o)??null:null;if(f?.path){const g=x(f.path);if(s===g||s.startsWith(`${g}/`))return{id:f.id,path:f.path}}const N=c.filter(g=>{const E=x(g.path);return s===E||s.startsWith(`${E}/`)}).sort((g,E)=>x(E.path).length-x(g.path).length)[0];return N?{id:N.id,path:N.path}:null},un=l=>jt(()=>l()),cs=({targetPath:l=null,savedProjectPlan:c=null,onNavigatedToChat:o})=>{const{t:s}=Mt(),f=H(e=>e.currentSessionId),N=H(e=>e.createSession),g=H(e=>e.initializeNewAiWorkerSession),E=H(e=>e.sendMessage),ye=H(e=>e.setCurrentSession),xe=Tt(),O=bt(e=>e.homeDirectory),be=Nt(e=>e.planModeEnabled),je=et(e=>e.projects),Ce=et(e=>e.activeProjectId),Re=Et(e=>e.directories),Pe=It()??"",ke=qe(e=>e.setSessionSwitcherOpen),_=Dt(),I=t.useSyncExternalStore(un,he,he),{isMobile:Me}=Vt(),{currentTheme:Y}=Ft(),S=t.useMemo(()=>f?xe.find(e=>e.id===f)??null:null,[f,xe]),R=t.useMemo(()=>{const e=typeof S?.directory=="string"?S.directory:"";return x(e||"")},[S?.directory]),Te=t.useMemo(()=>x(Pe||R),[Pe,R]),B=t.useMemo(()=>cn(Te,je,Ce),[Ce,Te,je]),se=c?.projectRef.id??null,ie=c?.projectRef.path??null,v=t.useMemo(()=>se&&ie?{id:se,path:ie}:null,[se,ie]),P=c?.planId??null,G=v&&P?JSON.stringify(["saved-plan",I,Lt(v),P]):null,L=v?.id===At,Q=t.useMemo(()=>{const e=v??B;return e?Re.get(e.path)?.isGitRepo===!0:!1},[B,Re,v]),[D,A]=t.useState(null),[Ne,Ee]=t.useState(!1),[p,k]=t.useState(null),[oe,ae]=t.useState(null),at=!!p||!!oe,le=t.useMemo(()=>!p||!R||!O?p:ln(p,{currentDirectory:R,homeDirectory:O}),[p,R,O]),[h,b]=t.useState(""),{isPlaying:q,play:lt,stop:ct}=Wt(),ut=tt(e=>e.showMessageTTSButtons),[Ie,ce]=t.useState(null),[De,ue]=t.useState(null),de=t.useMemo(()=>le&&le.split("/").pop()||s("planView.file.defaultName"),[le,s]),me=t.useMemo(()=>h.trim()?$t(h,s("planView.title.default")).title:s("planView.title.default"),[h,s]),X=t.useMemo(()=>me.trim()||s("planView.title.default"),[me,s]),[dt,V]=t.useState(!1),[mt,Ve]=t.useState(!1),[Z,Fe]=t.useState("edit"),J=t.useRef(null),[u,y]=t.useState(null),Le=t.useRef(null),pt=t.useRef(null),Ae="aiworker:plan:md-viewer-mode";t.useEffect(()=>{try{const e=localStorage.getItem(Ae);if(!e)return;const i=JSON.parse(e);(i==="preview"||i==="edit")&&Fe(i)}catch{}},[]);const ft=t.useCallback(e=>{Fe(e);try{localStorage.setItem(Ae,JSON.stringify(e))}catch{}},[]),W=t.useRef(!1),M=t.useRef(null),[We,$]=t.useState(!1);t.useEffect(()=>{const e=()=>{W.current=!1,M.current=null,$(!1)};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[]);const ht=t.useCallback((e,i)=>{const a=e.split(`
2
- `),r=Math.max(1,i.start),d=Math.min(a.length,i.end);return r>d?"":a.slice(r-1,d).join(`
3
- `)},[]),gt=qt({source:"plan",fileLabel:de,language:p&&nt(p)||"markdown",getCodeForRange:e=>ht(h,Xt(e)),toStoreRange:e=>({startLine:e.start,endLine:e.end}),fromDraftRange:e=>({start:e.startLine,end:e.endLine})}),{drafts:$e,commentText:ee,setCommentText:Ke,editingDraftId:pe,setSelection:ze,saveComment:Oe,cancel:U,reset:_e,startEdit:Be,deleteDraft:Ge}=gt;t.useEffect(()=>{y(null),_e()},[h,_e]),t.useEffect(()=>{ze(u)},[u,ze]);const Je=t.useCallback(()=>{y(null),U()},[U]),Ue=t.useCallback((e,i)=>{i&&y(i),Oe(e,i??u??void 0),y(null)},[u,Oe]);t.useEffect(()=>{if(!u)return;const e=a=>{const r=a.target;r.closest('[data-comment-card="true"]')||r.closest('[data-comment-input="true"]')||r.closest(".oc-block-widget")||r.closest(".cm-gutterElement")||r.closest("[data-sonner-toast]")||r.closest("[data-sonner-toaster]")||ee.trim()||(y(null),U())},i=window.setTimeout(()=>{document.addEventListener("click",e)},100);return()=>{window.clearTimeout(i),document.removeEventListener("click",e)}},[U,ee,pe,Me,u]);const fe=qe(e=>e.editorFontSize),wt=t.useMemo(()=>{const e=p?nt(p):null,i=!!e&&e!=="markdown",a=[Ct(Y,i?{syntaxColors:!1,fontSize:fe}:{fontSize:fe})],r=Kt(p||"plan.md");return r&&a.push(r),i&&e&&a.push(Rt({language:e,themeName:Y.metadata.id,theme:en(Y)})),a.push(tn.lineWrapping),a},[Y,p,fe]),j=t.useRef({key:null,target:null,content:"",editRevision:0,savedRevision:0,runtimeKey:""}),C=t.useState(rn)[0],He=t.useCallback(async(e,i)=>{if("filePath"in e){const r=_.files??Xe()?.files;if(r?.writeFile){if(!(await r.writeFile(e.filePath,i))?.success)throw new Error("Plan file write failed");return}const d=await Ze("/api/fs/write",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e.filePath,content:i})});if(!d.ok)throw new Error(`Failed to write plan file (${d.status})`);return}if(!await zt.getState().savePlan(e.projectRef,e.planId,i))throw new Error("Plan save rejected: the plan no longer exists")},[_.files]),Ye=t.useRef(He);Ye.current=He;const F=t.useCallback(()=>{const e=j.current;if(!e.key||!e.target||e.editRevision<=e.savedRevision)return;const i={key:e.key,target:e.target,content:e.content,revision:e.editRevision,runtimeKey:e.runtimeKey,write:Ye.current};C.schedule(i.key,i.revision,async()=>{if(he()!==i.runtimeKey)return;await i.write(i.target,i.content);const a=j.current;a.key===i.key&&(a.savedRevision=Math.max(a.savedRevision,i.revision),ce(null))}).catch(a=>{j.current.key===i.key&&ce(a instanceof Error?a.message:"Plan save failed")})},[C]);t.useEffect(()=>{if(!be&&!l&&!P){F(),j.current={key:null,target:null,content:"",editRevision:0,savedRevision:0,runtimeKey:""},k(null),ae(null),b(""),V(!1);return}let e=!1;const i=async r=>{if(_.files?.readFile)return(await _.files.readFile(r))?.content??"";const d=Xe()?.files;if(d?.readFile)return(await d.readFile(r,{optional:!0}))?.content??"";const m=await Ze(`/api/fs/read?path=${encodeURIComponent(r)}&optional=true`,{cache:"no-store"});if(!m.ok)throw new Error(`Failed to read plan file (${m.status})`);return m.text()};return(async()=>{if(F(),j.current={key:null,target:null,content:"",editRevision:0,savedRevision:0,runtimeKey:""},k(null),ae(null),b(""),ce(null),ue(null),P&&v&&G){if(await C.pendingFor(G),e)return;C.reset(G),V(!0);try{const r=await Qt(v,P);if(e)return;if(!r){ue("Plan not found");return}j.current={key:G,target:{projectRef:v,planId:P},content:r.raw,editRevision:0,savedRevision:0,runtimeKey:I},b(r.raw),ae(P)}catch(r){if(e)return;ue(r instanceof Error?r.message:"Plan load failed")}finally{e||V(!1)}return}if(l){const r=JSON.stringify(["plan-file",I,l]);if(await C.pendingFor(r),e)return;C.reset(r),V(!0);try{const d=await i(l);if(e)return;j.current={key:r,target:{filePath:l},content:d,editRevision:0,savedRevision:0,runtimeKey:I},k(l),b(d)}catch{if(e)return;k(null),b("")}finally{e||V(!1)}return}if(!S?.slug||!S?.time?.created||!R){k(null),b("");return}V(!0);try{const r=sn(R,S.time.created,S.slug),d=an(on(S.time.created,S.slug),O||null);let m=null;try{await i(r),m=r}catch{}if(!m)try{await i(d),m=d}catch{}if(e)return;if(!m){k(null),b("");return}const w=JSON.stringify(["plan-file",I,m]);if(await C.pendingFor(w),e)return;const K=await i(m);if(e)return;C.reset(w),j.current={key:w,target:{filePath:m},content:K,editRevision:0,savedRevision:0,runtimeKey:I},k(m),b(K)}catch{if(e)return;k(null),b("")}finally{e||V(!1)}})(),()=>{e=!0}},[I,O,be,_.files,P,G,v,C,F,S?.slug,S?.time?.created,R,l]);const vt=t.useCallback(e=>{j.current.content=e,j.current.editRevision+=1,b(e)},[]);t.useEffect(()=>{if(!p&&!oe)return;const e=window.setTimeout(()=>{F()},350);return()=>{window.clearTimeout(e)}},[h,oe,p,F]),t.useEffect(()=>()=>{F()},[F]),t.useEffect(()=>()=>{J.current!==null&&window.clearTimeout(J.current)},[]);const Qe=t.useCallback(()=>{ke(!1),o?.()},[o,ke]),St=t.useCallback(async e=>{const i=v??B;if(!i||!D||L)return;const a=await rt(D.action==="improve"?"plan.improve.visible":"plan.implement.visible",{plan_title:X}),r=await rt(D.action==="improve"?"plan.improve.instructions":"plan.implement.instructions",{plan_title:X,plan_path:p??""}),m=[{synthetic:!0,text:p?r:[r,"","The plan is not stored as a file in the repository and has no file path. Its full current contents follow below this note and are the source of truth for the plan. Where the instructions above refer to the plan file, treat the plan as stored in AiWorker project knowledge (it is edited through the AiWorker UI): propose plan revisions as plan text in the chat rather than editing a file.","",h].join(`
4
- `)}];Ee(!0);try{Qe();let w=null,K=i.path;if(D.target==="worktree"){if(!Q)return;const T=await Ot(i.path,_t());if(!T?.id)return;w=T.id,K=T.path}else{const T=await N(void 0,i.path,null);if(!T?.id)return;w=T.id,K=T.directory??i.path,g(T.id,tt.getState().agents??[])}if(!w)return;const te=Bt.getState();te.saveSessionModelSelection(w,e.providerID,e.modelID),e.agent.trim()&&(te.saveSessionAgentSelection(w,e.agent),te.saveAgentModelForSession(w,e.agent,e.providerID,e.modelID),te.saveAgentModelVariantForSession(w,e.agent,e.providerID,e.modelID,e.variant||void 0)),ye(w,K);const xt=e.runAsGoal===!0?[`Implement the plan "${X}" end-to-end${p?` (plan file: ${p})`:" (the full plan follows)"}.`,p?"Re-read that file for full details — it is the source of truth.":"The full plan follows in this message and is the source of truth.","",h].join(`
5
- `):null;Gt.getState().setArmed(e.runAsGoal===!0,xt),await E(a,e.providerID,e.modelID,e.agent.trim()||void 0,void 0,void 0,m,e.variant||void 0),A(null)}finally{Ee(!1)}},[Q,h,N,B,g,L,D,p,Qe,v,E,X,ye]),yt=t.useMemo(()=>Zt({drafts:$e,editingDraftId:pe,commentText:ee,onTextChange:Ke,selection:u,isDragging:We,fileLabel:de,newWidgetId:"plan-new-comment-input",mapDraftToRange:e=>({start:e.startLine,end:e.endLine}),onSave:Ue,onCancel:Je,onEdit:e=>{Be(e),y({start:e.startLine,end:e.endLine})},onDelete:Ge}),[ee,Ge,pe,Je,Ue,We,u,$e,de,Ke,Be]);return n.jsxs("div",{className:"relative flex h-full min-h-0 min-w-0 w-full flex-col overflow-hidden bg-background",children:[n.jsxs("div",{className:"flex min-w-0 items-center gap-2 border-b border-border/40 px-3 py-1.5 flex-shrink-0",children:[n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("div",{className:"typography-ui-label font-medium truncate",children:me}),De?n.jsx("div",{className:"typography-micro text-[color:var(--status-error)] truncate",title:De,children:s("planView.error.loadFailed")}):null,Ie?n.jsx("div",{className:"typography-micro text-[color:var(--status-error)] truncate",title:Ie,children:s("planView.error.saveFailed")}):null]}),at?n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsxs(st,{children:[n.jsxs(ge,{children:[n.jsx(we,{asChild:!0,children:n.jsx(it,{asChild:!0,children:n.jsx(ne,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0","aria-label":s("planView.actions.improvePlanAria"),disabled:!h.trim()||L,children:n.jsx(z,{name:"loop-right-ai",className:"size-4"})})})}),n.jsx(ve,{sideOffset:8,children:s("planView.actions.improve")})]}),n.jsxs(ot,{align:"end",children:[n.jsx(re,{onClick:()=>A({action:"improve",target:"session"}),disabled:L,children:s("planView.actions.sendToNewSession")}),n.jsx(re,{onClick:()=>A({action:"improve",target:"worktree"}),disabled:!Q,children:s("planView.actions.sendToNewWorktreeSession")})]})]}),n.jsxs(st,{children:[n.jsxs(ge,{children:[n.jsx(we,{asChild:!0,children:n.jsx(it,{asChild:!0,children:n.jsx(ne,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0","aria-label":s("planView.actions.implementPlanAria"),disabled:!h.trim()||L,children:n.jsx(z,{name:"code-ai",className:"size-4"})})})}),n.jsx(ve,{sideOffset:8,children:s("planView.actions.implement")})]}),n.jsxs(ot,{align:"end",children:[n.jsx(re,{onClick:()=>A({action:"implement",target:"session"}),disabled:L,children:s("planView.actions.sendToNewSession")}),n.jsx(re,{onClick:()=>A({action:"implement",target:"worktree"}),disabled:!Q,children:s("planView.actions.sendToNewWorktreeSession")})]})]}),n.jsx(Pt,{currentMode:Z,onToggle:()=>ft(Z==="preview"?"edit":"preview")}),Z==="preview"&&ut&&n.jsxs(ge,{children:[n.jsx(we,{asChild:!0,children:n.jsx(ne,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0","aria-label":s(q?"planView.tts.stopSpeaking":"planView.tts.readAloud"),onClick:()=>{q?ct():h.trim()&&lt(h)},children:q?n.jsx(z,{name:"stop",className:"h-4 w-4 text-[color:var(--status-success)]"}):n.jsx(z,{name:"volume-up",className:"h-4 w-4"})})}),n.jsx(ve,{sideOffset:8,children:s(q?"planView.tts.stopSpeaking":"planView.tts.readAloud")})]}),n.jsx(ne,{variant:"ghost",size:"sm",onClick:async()=>{(await Jt(h)).ok&&(Ve(!0),J.current!==null&&window.clearTimeout(J.current),J.current=window.setTimeout(()=>{Ve(!1)},1200))},className:"h-5 w-5 p-0",title:s("planView.actions.copyPlanContents"),"aria-label":s("planView.actions.copyPlanContents"),children:mt?n.jsx(z,{name:"check",className:"h-4 w-4 text-[color:var(--status-success)]"}):n.jsx(z,{name:"clipboard",className:"h-4 w-4"})})]}):null]}),n.jsx(nn,{open:D!==null,onOpenChange:e=>{!e&&!Ne&&A(null)},target:D?.target??"session",projectDirectory:v?.path??B?.path??null,submitting:Ne,allowRunAsGoal:!0,onConfirm:St}),n.jsx("div",{className:"flex-1 min-h-0 min-w-0 relative",children:n.jsx(Ut,{outerClassName:"h-full min-w-0",className:"h-full min-w-0",children:dt?n.jsx("div",{className:"p-3 typography-ui text-muted-foreground",children:s("planView.state.loading")}):n.jsx("div",{className:"relative h-full",children:n.jsx("div",{className:"h-full",children:Z==="preview"?n.jsx("div",{className:"h-full overflow-auto p-3",children:n.jsx(Ht,{fallback:n.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[n.jsx("div",{className:"mb-1 font-medium text-destructive",children:s("planView.error.previewUnavailable")}),n.jsx("div",{className:"text-sm text-muted-foreground",children:s("planView.error.switchToEditMode")})]}),children:n.jsx(Yt,{content:h,className:"typography-markdown-body",enableFileReferences:!1})})}):n.jsx("div",{className:"relative h-full",ref:pt,children:n.jsx(kt,{value:h,onChange:vt,readOnly:!1,className:"h-full",extensions:wt,onViewReady:e=>{Le.current=e},onViewDestroy:()=>{Le.current=null},blockWidgets:yt,highlightLines:u?{start:Math.min(u.start,u.end),end:Math.max(u.start,u.end)}:void 0,lineNumbersConfig:{domEventHandlers:{mousedown:(e,i,a)=>{if(!(a instanceof MouseEvent)||a.button!==0)return!1;a.preventDefault();const r=e.state.doc.lineAt(i.from).number;if(u&&!a.shiftKey&&Math.min(u.start,u.end)===r&&Math.max(u.start,u.end)===r)return y(null),U(),W.current=!1,M.current=null,$(!1),!0;if(Me&&u&&!a.shiftKey){const d=Math.min(u.start,u.end,r),m=Math.max(u.start,u.end,r);return y({start:d,end:m}),W.current=!1,M.current=null,$(!1),!0}if(W.current=!0,M.current=r,$(!0),u&&a.shiftKey){const d=Math.min(u.start,r),m=Math.max(u.end,r);y({start:d,end:m})}else y({start:r,end:r});return!0},mouseover:(e,i,a)=>{if(!(a instanceof MouseEvent)||a.buttons!==1||!W.current||M.current===null)return!1;const r=e.state.doc.lineAt(i.from).number,d=Math.min(M.current,r),m=Math.max(M.current,r);return y({start:d,end:m}),$(!0),!1},mouseup:()=>(W.current=!1,M.current=null,$(!1),!1)}}})})})})})})]})};export{cs as PlanView};