cli-jaw 2.2.20 → 2.2.22

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 (377) hide show
  1. package/README.md +35 -5
  2. package/dist/bin/commands/dispatch.js +62 -16
  3. package/dist/bin/commands/dispatch.js.map +1 -1
  4. package/dist/bin/commands/doctor.js +35 -7
  5. package/dist/bin/commands/doctor.js.map +1 -1
  6. package/dist/server.js +3 -0
  7. package/dist/server.js.map +1 -1
  8. package/dist/src/cli/cli-status-worker.js +22 -3
  9. package/dist/src/cli/cli-status-worker.js.map +1 -1
  10. package/dist/src/cli/cli-status.js +7 -1
  11. package/dist/src/cli/cli-status.js.map +1 -1
  12. package/dist/src/cli/handlers.js +1 -0
  13. package/dist/src/cli/handlers.js.map +1 -1
  14. package/dist/src/core/config.js +9 -0
  15. package/dist/src/core/config.js.map +1 -1
  16. package/dist/src/core/dispatch-approval-ingress.js +59 -0
  17. package/dist/src/core/dispatch-approval-ingress.js.map +1 -0
  18. package/dist/src/core/dispatch-approval.js +135 -0
  19. package/dist/src/core/dispatch-approval.js.map +1 -0
  20. package/dist/src/core/install-integrity.js +36 -3
  21. package/dist/src/core/install-integrity.js.map +1 -1
  22. package/dist/src/core/runtime-settings.js +27 -0
  23. package/dist/src/core/runtime-settings.js.map +1 -1
  24. package/dist/src/core/serve-log.js +66 -0
  25. package/dist/src/core/serve-log.js.map +1 -0
  26. package/dist/src/core/settings-merge.js +10 -1
  27. package/dist/src/core/settings-merge.js.map +1 -1
  28. package/dist/src/discord/bot.js +17 -2
  29. package/dist/src/discord/bot.js.map +1 -1
  30. package/dist/src/discord/send-only-client.js +31 -0
  31. package/dist/src/discord/send-only-client.js.map +1 -1
  32. package/dist/src/routes/orchestrate.js +83 -0
  33. package/dist/src/routes/orchestrate.js.map +1 -1
  34. package/dist/src/security/path-guards.js +33 -0
  35. package/dist/src/security/path-guards.js.map +1 -1
  36. package/dist/src/slack/bot.js +42 -14
  37. package/dist/src/slack/bot.js.map +1 -1
  38. package/dist/src/slack/ingress.js +13 -1
  39. package/dist/src/slack/ingress.js.map +1 -1
  40. package/dist/src/slack/thread-tracker.js +21 -11
  41. package/dist/src/slack/thread-tracker.js.map +1 -1
  42. package/dist/src/telegram/bot.js +22 -0
  43. package/dist/src/telegram/bot.js.map +1 -1
  44. package/package.json +1 -1
  45. package/public/dist/assets/{AdvancedExport-c41zCkwB.js → AdvancedExport-IOkupLFE.js} +1 -1
  46. package/public/dist/assets/Agent-DtgCvkB_.js +1 -0
  47. package/public/dist/assets/{Browser-B52Bdaeu.js → Browser-J4TPo4bX.js} +1 -1
  48. package/public/dist/assets/{BrowserPanel-Bh3JpkZO.js → BrowserPanel-C0aa2gja.js} +1 -1
  49. package/public/dist/assets/{ChannelsDiscord-D9FLnZso.js → ChannelsDiscord-D4fD-9hP.js} +1 -1
  50. package/public/dist/assets/{ChannelsSlack-CVNKtoo4.js → ChannelsSlack-_KBwRonM.js} +1 -1
  51. package/public/dist/assets/{ChannelsTelegram-BOCOPrBc.js → ChannelsTelegram-tihzSWVE.js} +1 -1
  52. package/public/dist/assets/{CodeCanvas-CbfPP7Ad.js → CodeCanvas-CaeLVtZi.js} +2 -2
  53. package/public/dist/assets/{DashboardEmbeddingSection-DMgHZQnn.js → DashboardEmbeddingSection-DiqlLiLj.js} +1 -1
  54. package/public/dist/assets/{DashboardMeta-DennaaA_.js → DashboardMeta-Dsj8kEuW.js} +1 -1
  55. package/public/dist/assets/{DesignPanel-DcL369nB.js → DesignPanel-B8CAf6sH.js} +1 -1
  56. package/public/dist/assets/{DiffPanel-B_ljObDk.js → DiffPanel-BTZRq6eG.js} +1 -1
  57. package/public/dist/assets/{Display-hGuSn_W5.js → Display-nkXitDjD.js} +1 -1
  58. package/public/dist/assets/{DocPanel-K8A2pm_1.js → DocPanel-ogNttSee.js} +1 -1
  59. package/public/dist/assets/{Employees-B5YXk5ma.js → Employees-CU_1YnrA.js} +1 -1
  60. package/public/dist/assets/{FolderPanel-CV52EzwG.js → FolderPanel-D0w_zD66.js} +1 -1
  61. package/public/dist/assets/{HealthBadge-megTlF4n.js → HealthBadge-CUaJ1PQH.js} +1 -1
  62. package/public/dist/assets/{Heartbeat-DDmZARWw.js → Heartbeat-BeAP2bMO.js} +1 -1
  63. package/public/dist/assets/{InlineWarn-DDzeHxQw.js → InlineWarn-D-fmcQXD.js} +1 -1
  64. package/public/dist/assets/MarkdownRenderer-B6HbiZ6i.js +1 -0
  65. package/public/dist/assets/{MarkdownRenderer-CXrilOsG.js → MarkdownRenderer-Cd3kkg_s.js} +2 -2
  66. package/public/dist/assets/{Mcp-BHWnJ6SP.js → Mcp-2HD1qR7F.js} +1 -1
  67. package/public/dist/assets/{Memory-CUbviW7N.js → Memory-frrIhLly.js} +1 -1
  68. package/public/dist/assets/{MilkdownWysiwygEditor-BKOCDI4Z.js → MilkdownWysiwygEditor-BkEzO5cz.js} +1 -1
  69. package/public/dist/assets/{ModelProvider-ngg8xTuB.js → ModelProvider-DqUvwyZ6.js} +1 -1
  70. package/public/dist/assets/{Network-AWpSkALD.js → Network-DfzqHi9q.js} +1 -1
  71. package/public/dist/assets/{NotesGraphWorkspace-Dm1xUFl8.js → NotesGraphWorkspace-BRIiraP9.js} +1 -1
  72. package/public/dist/assets/{PanelLayoutProvider-XpTo-i_s.js → PanelLayoutProvider-B9fYsunp.js} +1 -1
  73. package/public/dist/assets/Permissions-ByUy_5DT.js +1 -0
  74. package/public/dist/assets/{Permissions-CnKt44dN.js → Permissions-RgyF1O6q.js} +1 -1
  75. package/public/dist/assets/{Profile-DnIE2ios.js → Profile-DXKtAzfg.js} +1 -1
  76. package/public/dist/assets/{Prompts-B9aKLall.js → Prompts-C7njPWCu.js} +1 -1
  77. package/public/dist/assets/{SpeechKeys-K4Be_o7z.js → SpeechKeys-B7SDWzo9.js} +1 -1
  78. package/public/dist/assets/{TelegramHub-CFwSkzHP.js → TelegramHub-C61X3f-H.js} +1 -1
  79. package/public/dist/assets/{TerminalPanel-CdlFZHAK.js → TerminalPanel-DlUFPyzc.js} +1 -1
  80. package/public/dist/assets/{TransportStatusChips-CjEySMis.js → TransportStatusChips-B0NR0ljO.js} +1 -1
  81. package/public/dist/assets/{app-is76CHGZ.js → app-DUbf-v7B.js} +4 -4
  82. package/public/dist/assets/architecture-7EHR7CIX-Byg-B8Sh.js +1 -0
  83. package/public/dist/assets/{architectureDiagram-3BPJPVTR-q8idz3H3.js → architectureDiagram-3BPJPVTR-DA7niVYs.js} +1 -1
  84. package/public/dist/assets/bgtask-badge-B8KhuBa7.js +1 -0
  85. package/public/dist/assets/{bgtask-badge-B0B1nXUs.js → bgtask-badge-jIH69Dp3.js} +1 -1
  86. package/public/dist/assets/{blockDiagram-GPEHLZMM-DGB0dsia.js → blockDiagram-GPEHLZMM-czRsW1WP.js} +1 -1
  87. package/public/dist/assets/{bounded-set-CFlZiEF4.js → bounded-set-DXkYOGnQ.js} +1 -1
  88. package/public/dist/assets/{c4Diagram-AAUBKEIU-ChP5YfVt.js → c4Diagram-AAUBKEIU-zoRyRo1y.js} +1 -1
  89. package/public/dist/assets/channel-Cr7Dmg2t.js +1 -0
  90. package/public/dist/assets/{chunk-2J33WTMH-D3OPoEHg.js → chunk-2J33WTMH-DMaZjiDe.js} +1 -1
  91. package/public/dist/assets/{chunk-3OPIFGDE-CULJ8ZHF.js → chunk-3OPIFGDE-fm0Uteda.js} +1 -1
  92. package/public/dist/assets/{chunk-4BX2VUAB-DGgktZYr.js → chunk-4BX2VUAB-DU36Vmpr.js} +1 -1
  93. package/public/dist/assets/{chunk-4EGX6M5U-BD3v8KR4.js → chunk-4EGX6M5U-CYPeQu4F.js} +1 -1
  94. package/public/dist/assets/chunk-55IACEB6-Dkm6BnqN.js +1 -0
  95. package/public/dist/assets/{chunk-5DO6E6H7-B-FbGqHn.js → chunk-5DO6E6H7-CIcLA1n6.js} +1 -1
  96. package/public/dist/assets/{chunk-5ZQYHXKU-DVpWOoGS.js → chunk-5ZQYHXKU-NjOvV6Nd.js} +1 -1
  97. package/public/dist/assets/{chunk-727SXJPM-CZjR7q6H.js → chunk-727SXJPM-CUOujQg0.js} +1 -1
  98. package/public/dist/assets/{chunk-AQP2D5EJ-BlGjnlsV.js → chunk-AQP2D5EJ-2nFXTQ0W.js} +1 -1
  99. package/public/dist/assets/{chunk-BR22UD5L-MK8KuB9X.js → chunk-BR22UD5L-BoyFFQuR.js} +1 -1
  100. package/public/dist/assets/{chunk-BSJP7CBP-ypXC4wBv.js → chunk-BSJP7CBP-B1MMwNrU.js} +1 -1
  101. package/public/dist/assets/{chunk-CSCIHK7Q-CmvetykJ.js → chunk-CSCIHK7Q-C0MOgWVt.js} +1 -1
  102. package/public/dist/assets/{chunk-FHYWG6QK-Do5csWDm.js → chunk-FHYWG6QK-CmUWtJPn.js} +1 -1
  103. package/public/dist/assets/{chunk-FMBD7UC4-BXpT25MP.js → chunk-FMBD7UC4-BEz4FhFn.js} +1 -1
  104. package/public/dist/assets/{chunk-KSCS5N6A-DtlfLqto.js → chunk-KSCS5N6A-B2XGqWQY.js} +1 -1
  105. package/public/dist/assets/{chunk-L5ZTLDWV-Czv9NkHn.js → chunk-L5ZTLDWV-CfZ2hrJ2.js} +1 -1
  106. package/public/dist/assets/{chunk-LZXEDZCA-vD7oFdiq.js → chunk-LZXEDZCA-BXuFCBsZ.js} +1 -1
  107. package/public/dist/assets/{chunk-MPE355IW-2ei0PVn0.js → chunk-MPE355IW-BdSiU-oV.js} +1 -1
  108. package/public/dist/assets/{chunk-MZUSXYTE-JO_qTk4K.js → chunk-MZUSXYTE-VYfI8Uwx.js} +1 -1
  109. package/public/dist/assets/{chunk-N66VUXT2-BXL-FniY.js → chunk-N66VUXT2-DJVNyglo.js} +1 -1
  110. package/public/dist/assets/{chunk-ND2GUHAM-B9SIO-4a.js → chunk-ND2GUHAM-1k8TCCsJ.js} +1 -1
  111. package/public/dist/assets/{chunk-NZK2D7GU-CqOo06-Z.js → chunk-NZK2D7GU-CkYWftT8.js} +1 -1
  112. package/public/dist/assets/{chunk-O5CBEL6O-BWbe_grt.js → chunk-O5CBEL6O-B5g0NbhD.js} +1 -1
  113. package/public/dist/assets/{chunk-PUPMXCY4-aFTMGBaR.js → chunk-PUPMXCY4-DJKmByz8.js} +1 -1
  114. package/public/dist/assets/chunk-QZHKN3VN-C6ktI6EQ.js +1 -0
  115. package/public/dist/assets/{chunk-UIBZB4QT-S8EH0jZR.js → chunk-UIBZB4QT-DgLbPJ3_.js} +1 -1
  116. package/public/dist/assets/{chunk-WCWK7LTN-EgrNk7Dj.js → chunk-WCWK7LTN-DWxi0w0a.js} +1 -1
  117. package/public/dist/assets/chunk-WU5MYG2G-Cwe6QZ3_.js +1 -0
  118. package/public/dist/assets/{chunk-XPW4576I-8oydVjY6.js → chunk-XPW4576I-CaTDAC52.js} +1 -1
  119. package/public/dist/assets/classDiagram-4FO5ZUOK-BzLBk9sv.js +1 -0
  120. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-9K8wUz3g.js +1 -0
  121. package/public/dist/assets/{copy-text-BDs2wKjA.js → copy-text-Dy0kfmb9.js} +1 -1
  122. package/public/dist/assets/{cose-bilkent-S5V4N54A-PNmvcq_6.js → cose-bilkent-S5V4N54A-B9Tcz6qW.js} +1 -1
  123. package/public/dist/assets/{dagre-BM42HDAG-BP_m3uo9.js → dagre-BM42HDAG-OH37BMnf.js} +1 -1
  124. package/public/dist/assets/{dagre-Ct2n78X9.js → dagre-BsKKQnyU.js} +1 -1
  125. package/public/dist/assets/{diagram-2AECGRRQ-DhgfR-ol.js → diagram-2AECGRRQ-B1t73Wn1.js} +1 -1
  126. package/public/dist/assets/{diagram-5GNKFQAL-BRLvmdeK.js → diagram-5GNKFQAL-DBGIcSxH.js} +1 -1
  127. package/public/dist/assets/{diagram-KO2AKTUF-Co3C18-Q.js → diagram-KO2AKTUF-uRuKS97A.js} +1 -1
  128. package/public/dist/assets/{diagram-LMA3HP47-3SwoWQij.js → diagram-LMA3HP47-XMEHnr3B.js} +1 -1
  129. package/public/dist/assets/{diagram-OG6HWLK6-bjEryAd3.js → diagram-OG6HWLK6-B_vRUJSJ.js} +1 -1
  130. package/public/dist/assets/{dist-BvQlb9-o.js → dist-BCCaGGDY.js} +1 -1
  131. package/public/dist/assets/{dist-CvzAXxlb.js → dist-BPE4W9iX.js} +1 -1
  132. package/public/dist/assets/{dist-CFU9RsAu.js → dist-BQMBTYXL.js} +1 -1
  133. package/public/dist/assets/{dist-BlMOeJym.js → dist-BaPGPaX4.js} +1 -1
  134. package/public/dist/assets/{dist-B6T-R4xY.js → dist-Bg80xGMJ.js} +1 -1
  135. package/public/dist/assets/{dist-CS1XLdz3.js → dist-BspKh_Zg.js} +1 -1
  136. package/public/dist/assets/{dist-qUky5WRy.js → dist-CBnlLSQZ.js} +1 -1
  137. package/public/dist/assets/{dist-BMC_dTfR.js → dist-CD7tjeNO.js} +1 -1
  138. package/public/dist/assets/{dist-w2YzIhc5.js → dist-CINTuhik.js} +1 -1
  139. package/public/dist/assets/{dist-cBBDKBli.js → dist-CTpw6PFT.js} +1 -1
  140. package/public/dist/assets/{dist-BqzMcuh8.js → dist-CczLsP0o.js} +1 -1
  141. package/public/dist/assets/{dist-ph7PUr0c.js → dist-CdfDDy4r.js} +1 -1
  142. package/public/dist/assets/{dist-D8SW_REQ.js → dist-CgIOBybm.js} +1 -1
  143. package/public/dist/assets/dist-Cl_pRobr.js +1 -0
  144. package/public/dist/assets/{dist-DTcoHNXr.js → dist-CruwQXwE.js} +1 -1
  145. package/public/dist/assets/{dist-BDPUxeoi.js → dist-CuL30i1H.js} +1 -1
  146. package/public/dist/assets/{dist-DMZVNaIe.js → dist-CvE8Qa9r.js} +1 -1
  147. package/public/dist/assets/{dist-B8V2LYzt.js → dist-Cy3mcP1e.js} +1 -1
  148. package/public/dist/assets/{dist-C7pD0dEn.js → dist-CzCFEnHw.js} +1 -1
  149. package/public/dist/assets/{dist-DStWZVZ0.js → dist-D2h9T4I9.js} +1 -1
  150. package/public/dist/assets/{dist-DmjSXJAP.js → dist-D3ShDeDU.js} +1 -1
  151. package/public/dist/assets/{dist-CC2vK_6S.js → dist-D8Zky4R1.js} +1 -1
  152. package/public/dist/assets/{dist-DN-hkAIC.js → dist-DKd_hdkE.js} +1 -1
  153. package/public/dist/assets/{dist-CjzfPsGt.js → dist-DLOg6n0b.js} +1 -1
  154. package/public/dist/assets/{dist-DdJuxxG7.js → dist-DS7cuuIk.js} +1 -1
  155. package/public/dist/assets/dist-DW0I56_o.js +1 -0
  156. package/public/dist/assets/{dist-BSf40pae.js → dist-JnCmAxGR.js} +1 -1
  157. package/public/dist/assets/{dist-DhgwoIqj.js → dist-TombgBki.js} +1 -1
  158. package/public/dist/assets/dist-hBRIxDzG.js +1 -0
  159. package/public/dist/assets/dist-z5Z70wW8.js +1 -0
  160. package/public/dist/assets/{dockerfile-C0jniLkw.js → dockerfile-DkX5AHzr.js} +1 -1
  161. package/public/dist/assets/{employees-eiW0cC8z.js → employees-BNy8a6XX.js} +1 -1
  162. package/public/dist/assets/{erDiagram-TEJ5UH35-DQBxHU1q.js → erDiagram-TEJ5UH35-CTHxg4ER.js} +1 -1
  163. package/public/dist/assets/{error-normalize-BzeO0SXE.js → error-normalize-CLRJh19F.js} +1 -1
  164. package/public/dist/assets/eventmodeling-FCH6USID-LckY84Wp.js +1 -0
  165. package/public/dist/assets/{factor-nzjoQ9cK.js → factor-Xro2mWdw.js} +1 -1
  166. package/public/dist/assets/{fields-zkeByFQW.js → fields-BwOMlwS0.js} +1 -1
  167. package/public/dist/assets/{flowDiagram-I6XJVG4X-BN90fCt5.js → flowDiagram-I6XJVG4X-DgCs6PPU.js} +1 -1
  168. package/public/dist/assets/{ganttDiagram-6RSMTGT7-B-JAlIhh.js → ganttDiagram-6RSMTGT7-DGjdFJRc.js} +1 -1
  169. package/public/dist/assets/gitGraph-WXDBUCRP-DXhEIZXY.js +1 -0
  170. package/public/dist/assets/{gitGraphDiagram-PVQCEYII-CLL2G5U-.js → gitGraphDiagram-PVQCEYII-DvCWiClL.js} +1 -1
  171. package/public/dist/assets/{graphlib-B6dRm8vZ.js → graphlib-B06FTUqA.js} +1 -1
  172. package/public/dist/assets/{iframe-renderer-C7qQJX4c.js → iframe-renderer-C6Zwg9w4.js} +2 -2
  173. package/public/dist/assets/iframe-renderer-DBmV8gCQ.js +1 -0
  174. package/public/dist/assets/info-J43DQDTF-iXM3vzuR.js +1 -0
  175. package/public/dist/assets/{infoDiagram-5YYISTIA-CftYDPfc.js → infoDiagram-5YYISTIA-DxkbyTf_.js} +1 -1
  176. package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-BVa5AJbz.js → ishikawaDiagram-YF4QCWOH-fyJrRZTW.js} +1 -1
  177. package/public/dist/assets/javascript-DZFdG8BN.js +1 -0
  178. package/public/dist/assets/{journeyDiagram-JHISSGLW-BeUKm6ME.js → journeyDiagram-JHISSGLW-Dd6CvR-c.js} +1 -1
  179. package/public/dist/assets/{kanban-definition-UN3LZRKU-K5DYNY4p.js → kanban-definition-UN3LZRKU-C2ZH4LXA.js} +1 -1
  180. package/public/dist/assets/{manager-CP-Au860.js → manager-DzCR6Pam.js} +4 -4
  181. package/public/dist/assets/{memory--Q8Tb5SZ.js → memory-C4O44HMr.js} +1 -1
  182. package/public/dist/assets/memory-Dt_Ji6aP.js +1 -0
  183. package/public/dist/assets/mermaid-loader-CylkLQP5.js +1 -0
  184. package/public/dist/assets/{mermaid-parser.core-Cz70RgAa.js → mermaid-parser.core-C-9KB617.js} +1 -1
  185. package/public/dist/assets/{mermaid.core-Dj5GOPe1.js → mermaid.core-8XY13b72.js} +2 -2
  186. package/public/dist/assets/mermaid.core-BEuf6y5_.js +1 -0
  187. package/public/dist/assets/{message-history-CfAHmCDW.js → message-history-DCxD21J1.js} +1 -1
  188. package/public/dist/assets/message-history-DyISauiv.js +1 -0
  189. package/public/dist/assets/{mindmap-definition-RKZ34NQL-PsH0E_3e.js → mindmap-definition-RKZ34NQL-DUQBUbUA.js} +1 -1
  190. package/public/dist/assets/{nsis-BI3I3OhH.js → nsis-iX94j4T9.js} +1 -1
  191. package/public/dist/assets/packet-YPE3B663-SclsNpNx.js +1 -0
  192. package/public/dist/assets/{page-shell-LF7vVVfG.js → page-shell-GpE8A-FA.js} +1 -1
  193. package/public/dist/assets/pie-LRSECV5Y-CF43gDO6.js +1 -0
  194. package/public/dist/assets/{pieDiagram-4H26LBE5-Dtwtlr0z.js → pieDiagram-4H26LBE5-ChOXpmZ5.js} +1 -1
  195. package/public/dist/assets/{pug-DHfNwv1w.js → pug-C8nPBT90.js} +1 -1
  196. package/public/dist/assets/{quadrantDiagram-W4KKPZXB-CAFUbaV6.js → quadrantDiagram-W4KKPZXB-lbpz07e4.js} +1 -1
  197. package/public/dist/assets/radar-GUYGQ44K-BsylzLX_.js +1 -0
  198. package/public/dist/assets/{render-BDso7Yb5.js → render-A--hkukv.js} +2 -2
  199. package/public/dist/assets/{requirementDiagram-4Y6WPE33-CvBM4AjK.js → requirementDiagram-4Y6WPE33-CrApoE_l.js} +1 -1
  200. package/public/dist/assets/{sankeyDiagram-5OEKKPKP-cordQgRs.js → sankeyDiagram-5OEKKPKP-Df1lU-mT.js} +1 -1
  201. package/public/dist/assets/{sequenceDiagram-3UESZ5HK-DDAqRdga.js → sequenceDiagram-3UESZ5HK-CelQN5jY.js} +1 -1
  202. package/public/dist/assets/settings-3ZdoKHIf.js +56 -0
  203. package/public/dist/assets/settings-C6Pku2GC.js +1 -0
  204. package/public/dist/assets/{settings-core-BxuFkt4a.js → settings-core-CQe1uP6x.js} +17 -17
  205. package/public/dist/assets/settings-core-DqwLJkgP.js +1 -0
  206. package/public/dist/assets/settings-types-DPhhM-cj.js +1 -0
  207. package/public/dist/assets/{sidebar-BNT58qR0.js → sidebar-DxFp_449.js} +3 -3
  208. package/public/dist/assets/{skills-CwRBcm3m.js → skills-BU4q8Q8n.js} +1 -1
  209. package/public/dist/assets/skills-x2gH-1Ry.js +1 -0
  210. package/public/dist/assets/{slash-commands-cm0U58n7.js → slash-commands-BiXOgZ5B.js} +1 -1
  211. package/public/dist/assets/slash-commands-s8eR7Kd1.js +1 -0
  212. package/public/dist/assets/{stateDiagram-AJRCARHV-DUaoSRgZ.js → stateDiagram-AJRCARHV-CeyXWXrg.js} +1 -1
  213. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-Bhb8zTjh.js +1 -0
  214. package/public/dist/assets/{timeline-definition-PNZ67QCA-D85QNy9b.js → timeline-definition-PNZ67QCA-DP0lPzQ_.js} +1 -1
  215. package/public/dist/assets/{trace-drawer-BuwO4m2P.js → trace-drawer-2BTQCor6.js} +1 -1
  216. package/public/dist/assets/treeView-BLDUP644-DHq0vQpf.js +1 -0
  217. package/public/dist/assets/treemap-LRROVOQU-vKngXIla.js +1 -0
  218. package/public/dist/assets/ui-CB0L33o0.js +1 -0
  219. package/public/dist/assets/{ui-C-LHMki1.js → ui-Csy42uNW.js} +1 -1
  220. package/public/dist/assets/{vennDiagram-CIIHVFJN-CQSILdx8.js → vennDiagram-CIIHVFJN-WB9mzv1f.js} +1 -1
  221. package/public/dist/assets/wardley-L42UT6IY-B1jQOSA5.js +1 -0
  222. package/public/dist/assets/{wardleyDiagram-YWT4CUSO-BZEVMlJ4.js → wardleyDiagram-YWT4CUSO-CapVnCz5.js} +1 -1
  223. package/public/dist/assets/{wiki-link-suggestions-Dp6kBQVu.js → wiki-link-suggestions-cvpqJp6c.js} +1 -1
  224. package/public/dist/assets/{xychartDiagram-2RQKCTM6-C8573Tgs.js → xychartDiagram-2RQKCTM6-DduDB3Cd.js} +1 -1
  225. package/public/dist/index.html +1 -1
  226. package/public/dist/manager/index.html +1 -1
  227. package/public/js/features/settings-cli-status.ts +11 -5
  228. package/public/js/features/settings-types.ts +35 -3
  229. package/public/manager/src/settings/cli-status-polling.ts +1 -1
  230. package/public/manager/src/settings/pages/Agent.tsx +36 -20
  231. package/scripts/postinstall-guard.cjs +13 -0
  232. package/scripts/staging-cleanup.cjs +177 -0
  233. package/public/dist/assets/Agent-C5EvX-_v.js +0 -1
  234. package/public/dist/assets/MarkdownRenderer-DZVh_xX2.js +0 -1
  235. package/public/dist/assets/Permissions-DNT0TxYL.js +0 -1
  236. package/public/dist/assets/architecture-7EHR7CIX-D-6Nx315.js +0 -1
  237. package/public/dist/assets/bgtask-badge-B2jUZ5mC.js +0 -1
  238. package/public/dist/assets/channel-ByNDsZsH.js +0 -1
  239. package/public/dist/assets/chunk-55IACEB6-CQFLXxVc.js +0 -1
  240. package/public/dist/assets/chunk-QZHKN3VN-Becu19mF.js +0 -1
  241. package/public/dist/assets/chunk-WU5MYG2G-CkoHFn0F.js +0 -1
  242. package/public/dist/assets/classDiagram-4FO5ZUOK-DVGoKviY.js +0 -1
  243. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BIZeptY-.js +0 -1
  244. package/public/dist/assets/dist-BmXnOAlo.js +0 -1
  245. package/public/dist/assets/dist-DLY5I6dK.js +0 -1
  246. package/public/dist/assets/dist-DPHcMCqI.js +0 -1
  247. package/public/dist/assets/dist-xHOEvyuU.js +0 -1
  248. package/public/dist/assets/eventmodeling-FCH6USID-BB1OVDLb.js +0 -1
  249. package/public/dist/assets/gitGraph-WXDBUCRP-DAWTa5Fn.js +0 -1
  250. package/public/dist/assets/iframe-renderer-D7PB_yrC.js +0 -1
  251. package/public/dist/assets/info-J43DQDTF-C530y5-j.js +0 -1
  252. package/public/dist/assets/javascript-DbM-pSY-.js +0 -1
  253. package/public/dist/assets/memory-rsKN0aa2.js +0 -1
  254. package/public/dist/assets/mermaid-loader-Bd9rYyxD.js +0 -1
  255. package/public/dist/assets/mermaid.core-TSG49mwm.js +0 -1
  256. package/public/dist/assets/message-history-BttkY77h.js +0 -1
  257. package/public/dist/assets/packet-YPE3B663-BHcxn4sy.js +0 -1
  258. package/public/dist/assets/pie-LRSECV5Y-DjigSia_.js +0 -1
  259. package/public/dist/assets/radar-GUYGQ44K-DPCrmsHJ.js +0 -1
  260. package/public/dist/assets/settings-CqnIqxkG.js +0 -56
  261. package/public/dist/assets/settings-core-CdZ7oKhM.js +0 -1
  262. package/public/dist/assets/settings-pPMHNs0G.js +0 -1
  263. package/public/dist/assets/skills-DiVoaVdS.js +0 -1
  264. package/public/dist/assets/slash-commands-Bx4saHwR.js +0 -1
  265. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-BAesfdhr.js +0 -1
  266. package/public/dist/assets/treeView-BLDUP644-DmufUMul.js +0 -1
  267. package/public/dist/assets/treemap-LRROVOQU-Cg48uw_D.js +0 -1
  268. package/public/dist/assets/ui-XPQDPe-5.js +0 -1
  269. package/public/dist/assets/wardley-L42UT6IY-QZOEXU7f.js +0 -1
  270. /package/public/dist/assets/{agent-meta-Y3DE6sxh.js → agent-meta-Bl-Q0EgC.js} +0 -0
  271. /package/public/dist/assets/{api-B25zNNFJ.js → api-FOqKQ9fm.js} +0 -0
  272. /package/public/dist/assets/{apl-2tE96F_Y.js → apl-CYLd9I-9.js} +0 -0
  273. /package/public/dist/assets/{asciiarmor-ynSKiC17.js → asciiarmor-7YwhfGDq.js} +0 -0
  274. /package/public/dist/assets/{asn1-CfqO1VY8.js → asn1-BlhHp3qx.js} +0 -0
  275. /package/public/dist/assets/{asterisk-DSiRJoqT.js → asterisk-Q0-IBwUt.js} +0 -0
  276. /package/public/dist/assets/{brainfuck-DTcanv-8.js → brainfuck-CM8jf4Gu.js} +0 -0
  277. /package/public/dist/assets/{chunk-AGHRB4JF-BXLzSehp.js → chunk-AGHRB4JF-Cdp9MZGh.js} +0 -0
  278. /package/public/dist/assets/{chunk-NNHCCRGN-D69GtSOc.js → chunk-NNHCCRGN-ChI2WAS0.js} +0 -0
  279. /package/public/dist/assets/{clike-qn72CMAj.js → clike-BcV5UqGE.js} +0 -0
  280. /package/public/dist/assets/{clojure-m8yDiYVc.js → clojure-XHu9GAjV.js} +0 -0
  281. /package/public/dist/assets/{cmake-4AHAWHiF.js → cmake-DhPsEu0W.js} +0 -0
  282. /package/public/dist/assets/{cobol-CxxJP5eX.js → cobol-BEekiT-v.js} +0 -0
  283. /package/public/dist/assets/{coffeescript-BAB3zi48.js → coffeescript-Bgk4ZVWF.js} +0 -0
  284. /package/public/dist/assets/{commonlisp-BPbWuAds.js → commonlisp-Dw4PRJwx.js} +0 -0
  285. /package/public/dist/assets/{crystal-CGuSsWYR.js → crystal-CJ-iCD_G.js} +0 -0
  286. /package/public/dist/assets/{css-DszbR74r.js → css-BDUaiSMY.js} +0 -0
  287. /package/public/dist/assets/{cypher-GUnmv522.js → cypher-CJ05ZgAu.js} +0 -0
  288. /package/public/dist/assets/{cytoscape.esm-D_XyYSBG.js → cytoscape.esm-PBXWcYR1.js} +0 -0
  289. /package/public/dist/assets/{d-Cfm0cznj.js → d-BfHF1VVF.js} +0 -0
  290. /package/public/dist/assets/{desktop-bridge-CvdhnJQo.js → desktop-bridge-DtydAvqu.js} +0 -0
  291. /package/public/dist/assets/{diff-C6rPA7NX.js → diff-BVcHwfdB.js} +0 -0
  292. /package/public/dist/assets/{dist-AgQwqBLq.js → dist-BbhtVnRz.js} +0 -0
  293. /package/public/dist/assets/{dtd-Dxh5tS6M.js → dtd-Bg0TgBY9.js} +0 -0
  294. /package/public/dist/assets/{dylan-BdIVFR1j.js → dylan-BQ0i5j3T.js} +0 -0
  295. /package/public/dist/assets/{ebnf-iU-8xYFu.js → ebnf-QSFUkOiT.js} +0 -0
  296. /package/public/dist/assets/{ecl-DjbzOHI6.js → ecl-oXh4vhiy.js} +0 -0
  297. /package/public/dist/assets/{eiffel-B2ID8LZ3.js → eiffel-S15DDWzw.js} +0 -0
  298. /package/public/dist/assets/{elm-B6vPcfMj.js → elm-B746ZFPi.js} +0 -0
  299. /package/public/dist/assets/{erlang-nDQwRdZV.js → erlang-GRIYhTbY.js} +0 -0
  300. /package/public/dist/assets/{fcl-Bf86o55I.js → fcl-DjQMeb0v.js} +0 -0
  301. /package/public/dist/assets/{folder-drag-payload-Bhln9Mk2.js → folder-drag-payload-CJ0dxhZa.js} +0 -0
  302. /package/public/dist/assets/{forth-CeQJji0n.js → forth-DNnBFTm6.js} +0 -0
  303. /package/public/dist/assets/{fortran-Dm_CqDsH.js → fortran-yg6K9z9n.js} +0 -0
  304. /package/public/dist/assets/{gas-e3EfgE3p.js → gas-fbsH19hy.js} +0 -0
  305. /package/public/dist/assets/{gherkin-Dn_7tSzg.js → gherkin-BCy9haeT.js} +0 -0
  306. /package/public/dist/assets/{groovy-LaKuGRkK.js → groovy-Cm4gdIYU.js} +0 -0
  307. /package/public/dist/assets/{haskell-D9nNX9Mr.js → haskell-Dq28dVw2.js} +0 -0
  308. /package/public/dist/assets/{haxe-Rp176QXJ.js → haxe-BrZpr4Ca.js} +0 -0
  309. /package/public/dist/assets/{http-BOeYLbuM.js → http-B3zr0y0o.js} +0 -0
  310. /package/public/dist/assets/{idl-DHv3vdme.js → idl-C9CL9hdG.js} +0 -0
  311. /package/public/dist/assets/{javascript-Dk2fbl1a.js → javascript-DD7UxIxH.js} +0 -0
  312. /package/public/dist/assets/{jsx-runtime-gFMgZ0TQ.js → jsx-runtime-CYoNlHAD.js} +0 -0
  313. /package/public/dist/assets/{julia-D7CKCk5I.js → julia-CjwfSXBk.js} +0 -0
  314. /package/public/dist/assets/{livescript-gRbr9rhj.js → livescript-vRjI6jFU.js} +0 -0
  315. /package/public/dist/assets/{lua-CgZ_7bxf.js → lua-CxVmDfKg.js} +0 -0
  316. /package/public/dist/assets/{mathematica-B6bTyoab.js → mathematica-DJZPFt8k.js} +0 -0
  317. /package/public/dist/assets/{mbox-C8oQj1cJ.js → mbox-CxBBnlIA.js} +0 -0
  318. /package/public/dist/assets/{mirc-v6L6kZuh.js → mirc-CBWc0vcU.js} +0 -0
  319. /package/public/dist/assets/{mllike-CWu4RdWO.js → mllike-DYddHpeS.js} +0 -0
  320. /package/public/dist/assets/{modelica-B3NBpX1d.js → modelica-B94rrYMn.js} +0 -0
  321. /package/public/dist/assets/{mscgen-C8u7qRYw.js → mscgen-D0PO0iPT.js} +0 -0
  322. /package/public/dist/assets/{mumps-DHjVG4PS.js → mumps-BdPrWvs5.js} +0 -0
  323. /package/public/dist/assets/{nginx-BMt87X3t.js → nginx-C7cLiM4x.js} +0 -0
  324. /package/public/dist/assets/{notes-graph-settings-BgNrT_58.js → notes-graph-settings-Cl4lMj-A.js} +0 -0
  325. /package/public/dist/assets/{ntriples-C8U-Jud2.js → ntriples-DLMpvgb1.js} +0 -0
  326. /package/public/dist/assets/{octave-Bq37AoFm.js → octave-DeJPElAr.js} +0 -0
  327. /package/public/dist/assets/{oz-D6HxSRn3.js → oz-4dtXWqwe.js} +0 -0
  328. /package/public/dist/assets/{pascal-BBqiAVg6.js → pascal-TdeXcL-o.js} +0 -0
  329. /package/public/dist/assets/{path-utils-LsJeDCKF.js → path-utils-CHwADH-r.js} +0 -0
  330. /package/public/dist/assets/{perl-sHANlXjx.js → perl-DfpfXWOH.js} +0 -0
  331. /package/public/dist/assets/{pig-Cufgew--.js → pig-xQ4essgV.js} +0 -0
  332. /package/public/dist/assets/{powershell--Q4mDip6.js → powershell-Dfw2t4-B.js} +0 -0
  333. /package/public/dist/assets/{properties-DoVpJ-kT.js → properties-CrJLOvU2.js} +0 -0
  334. /package/public/dist/assets/{protobuf-B5OiV2Zv.js → protobuf-BYv78GYU.js} +0 -0
  335. /package/public/dist/assets/{provider-icons-VDfahiUp.js → provider-icons-CXA2mnPO.js} +0 -0
  336. /package/public/dist/assets/{puppet-Ce_CFfqW.js → puppet-DnsvBfcg.js} +0 -0
  337. /package/public/dist/assets/{python-pK7Wt6QH.js → python-mfoZJSDM.js} +0 -0
  338. /package/public/dist/assets/{q-Dd3Ltku0.js → q-BrTIu4PU.js} +0 -0
  339. /package/public/dist/assets/{r-CsX__2f0.js → r-FO7GgXB8.js} +0 -0
  340. /package/public/dist/assets/{rough.esm--LLpAgPj.js → rough.esm-DeGVhNS9.js} +0 -0
  341. /package/public/dist/assets/{rpm-D78AjDAl.js → rpm-D8Wbdep5.js} +0 -0
  342. /package/public/dist/assets/{ruby-D_-KI498.js → ruby-Cg1fwXaw.js} +0 -0
  343. /package/public/dist/assets/{sas-D-GUPiy4.js → sas-Ch1GEx-n.js} +0 -0
  344. /package/public/dist/assets/{scheme-DF9WwQDv.js → scheme-DGFmPoR2.js} +0 -0
  345. /package/public/dist/assets/{settings-client-CjbBShxm.js → settings-client-D9KY2Ufl.js} +0 -0
  346. /package/public/dist/assets/{shell-BTUwbV-w.js → shell-BBoIO9l0.js} +0 -0
  347. /package/public/dist/assets/{sieve--Z-EbGZo.js → sieve-8oEe6gDx.js} +0 -0
  348. /package/public/dist/assets/{simple-mode-BUow4bpn.js → simple-mode-BNw0K2rL.js} +0 -0
  349. /package/public/dist/assets/{smalltalk-C2YIwVx3.js → smalltalk-ChbxX23N.js} +0 -0
  350. /package/public/dist/assets/{solr-CYVq4fbf.js → solr-BwGyzi2H.js} +0 -0
  351. /package/public/dist/assets/{sparql-Ccd4fsFv.js → sparql-D9wgprRx.js} +0 -0
  352. /package/public/dist/assets/{spreadsheet-DW0WgMrS.js → spreadsheet-BySehl32.js} +0 -0
  353. /package/public/dist/assets/{sql-C71Zp6qn.js → sql-B6Phvk1R.js} +0 -0
  354. /package/public/dist/assets/{stex-CKuX0g_6.js → stex-32iK7T_9.js} +0 -0
  355. /package/public/dist/assets/{stylus-CBH8s0NO.js → stylus-C689wDNM.js} +0 -0
  356. /package/public/dist/assets/{swift-CfZoxKRA.js → swift-DZwxTp-L.js} +0 -0
  357. /package/public/dist/assets/{tcl-D5MGbeQu.js → tcl-BSOjIY_8.js} +0 -0
  358. /package/public/dist/assets/{textile-DJ3U30FW.js → textile-xOWO1SH7.js} +0 -0
  359. /package/public/dist/assets/{tiddlywiki-_fe1dHUq.js → tiddlywiki-B8jhOxrf.js} +0 -0
  360. /package/public/dist/assets/{tiki-Dd1udTrQ.js → tiki-OG7n6UAo.js} +0 -0
  361. /package/public/dist/assets/{toml-xpw8pqjz.js → toml-DkxT-aUR.js} +0 -0
  362. /package/public/dist/assets/{troff-CgWiec8m.js → troff-vE5gOX7Y.js} +0 -0
  363. /package/public/dist/assets/{ttcn-CSwmFrer.js → ttcn-CPOduycD.js} +0 -0
  364. /package/public/dist/assets/{ttcn-cfg-B5HVIC6z.js → ttcn-cfg-DmA__-R_.js} +0 -0
  365. /package/public/dist/assets/{turtle-Cl_SuWQk.js → turtle-CEzrJHdY.js} +0 -0
  366. /package/public/dist/assets/{vb-BT131bSf.js → vb-Cii5IQTv.js} +0 -0
  367. /package/public/dist/assets/{vbscript-D6S8_XkU.js → vbscript-DcZWGZ_S.js} +0 -0
  368. /package/public/dist/assets/{velocity-9HkI645n.js → velocity-BEag7EnK.js} +0 -0
  369. /package/public/dist/assets/{vendor-utils-DJY0EWnQ.js → vendor-utils-BK07iQND.js} +0 -0
  370. /package/public/dist/assets/{verilog-BzMguKeI.js → verilog-DMw8DKoT.js} +0 -0
  371. /package/public/dist/assets/{vhdl-bHScWzT1.js → vhdl-M4wLPuJt.js} +0 -0
  372. /package/public/dist/assets/{w3c-keyname-a_sRwNLm.js → w3c-keyname-hgmz1BF7.js} +0 -0
  373. /package/public/dist/assets/{webidl-CbgaVHNS.js → webidl-CjehKbx5.js} +0 -0
  374. /package/public/dist/assets/{wiki-link-resolver-DyFzBTIQ.js → wiki-link-resolver-N9fDy5zP.js} +0 -0
  375. /package/public/dist/assets/{xquery-DWZPmAiC.js → xquery-CYbd_YmJ.js} +0 -0
  376. /package/public/dist/assets/{yacas-CEdW4z4K.js → yacas-ClBNsli2.js} +0 -0
  377. /package/public/dist/assets/{z80-CMH3qxNg.js → z80-nGsPT_fm.js} +0 -0
@@ -1,16 +1,16 @@
1
- import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O as s,R as c,x as l}from"./render-BDso7Yb5.js";import{n as u}from"./locale-DC-ZsWOf.js";import{a as d,i as f,n as p,o as m,t as h}from"./constants-Df7-7Rky.js";import{a as ee,c as te,l as ne,u as re}from"./pi-settings-DEuKgvIj.js";import{n as ie,r as ae}from"./provider-icons-VDfahiUp.js";function oe(e){if(e.precision===`binary`)return{percent:null,text:e.status===`exhausted`?`Exhausted`:`Available`};let t=Math.max(0,Math.min(100,Math.round(e.percent)));return{percent:t,text:`${t}%`}}function se(e){return e.probeState===`checking`?`checking`:e.probeState===`failing`?`probe-failing`:e.binaryInstalled===!0&&e.capabilityReady===!1?`capability-failed`:e.probeState===`stale`?`stale`:e.available===!0&&e.capabilityReady!==!1?`ready`:`unavailable`}function ce(e){return e>=200&&e<300||e===409}function le(e){let n=document.getElementById(`sttEngine`),r=document.getElementById(`sttGeminiKey`),i=document.getElementById(`sttGeminiModel`),a=document.getElementById(`sttGeminiModelCustom`),o=document.getElementById(`sttWhisperModel`),s=document.getElementById(`sttOpenaiBaseUrl`),c=document.getElementById(`sttOpenaiKey`),l=document.getElementById(`sttOpenaiModel`),u=document.getElementById(`sttVertexJson`);if(n&&(n.value=e.engine||`auto`),r&&(r.placeholder=e.geminiKeySet?g(e.geminiKeyLast4):`AIza...`),i){let t=e.geminiModel||`gemini-2.5-flash-lite`;Array.from(i.options).some(e=>e.value===t)?i.value=t:(i.value=`__custom__`,a&&(a.value=t,a.style.display=``))}o&&(o.value=e.whisperModel||`mlx-community/whisper-large-v3-turbo`),s&&(s.value=e.openaiBaseUrl||``),c&&(c.placeholder=e.openaiKeySet?g(e.openaiKeyLast4):`sk-...`),l&&(l.value=e.openaiModel||``),u&&(u.value=e.vertexConfig||``);function d(){let e=n?.value||`auto`,t=e===`auto`||e===`gemini`,r=e===`openai`,i=e===`vertex`,a=e===`auto`||e===`whisper`;document.querySelectorAll(`.stt-gemini`).forEach(e=>e.style.display=t?``:`none`),document.querySelectorAll(`.stt-openai`).forEach(e=>e.style.display=r?``:`none`),document.querySelectorAll(`.stt-vertex`).forEach(e=>e.style.display=i?``:`none`),document.querySelectorAll(`.stt-whisper`).forEach(e=>e.style.display=a?``:`none`)}d();async function f(){let e={stt:{engine:n?.value||`auto`,geminiModel:(i?.value===`__custom__`?a?.value:i?.value)||`gemini-2.5-flash-lite`,whisperModel:o?.value||``,openaiBaseUrl:s?.value||``,openaiModel:l?.value||``,vertexConfig:u?.value||``}};r?.value&&(e.stt.geminiApiKey=r.value),c?.value&&(e.stt.openaiApiKey=c.value),console.log(`[stt] saving:`,{engine:e.stt.engine,hasGeminiKey:!!e.stt.geminiApiKey,hasOpenaiKey:!!e.stt.openaiApiKey});try{if(await t(`/api/settings`,`PUT`,e),r?.value){let e=r.value.slice(-4);r.value=``,r.placeholder=g(e)}if(c?.value){let e=c.value.slice(-4);c.value=``,c.placeholder=g(e)}}catch(e){console.error(`[stt] save failed:`,e)}}n?.addEventListener(`change`,()=>{d(),f()}),i?.addEventListener(`change`,()=>{a&&(a.style.display=i.value===`__custom__`?``:`none`),i.value!==`__custom__`&&f()}),a?.addEventListener(`blur`,f),r?.addEventListener(`blur`,()=>{r.value&&f()}),c?.addEventListener(`blur`,()=>{c.value&&f()}),s?.addEventListener(`blur`,f),l?.addEventListener(`blur`,f),o?.addEventListener(`blur`,f),u?.addEventListener(`blur`,f)}function g(e){return c(`stt.key.savedPlaceholder`,{last4:e||``})}function ue(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.configured==`boolean`&&typeof t.activeInbound==`boolean`&&typeof t.sendCapable==`boolean`}function de(e){if(!e||typeof e!=`object`)return null;let t=e.channels;if(!t||typeof t!=`object`)return null;let n=t,r=n.activeInbound;if(r!==`telegram`&&r!==`discord`&&r!==`slack`||!ue(n.telegram)||!ue(n.discord))return null;let i=ue(n.slack)?n.slack:{configured:!1,activeInbound:!1,sendCapable:!1,reason:`unavailable`};return{activeInbound:r,telegram:n.telegram,discord:n.discord,slack:i}}function fe(e){let t=[];return t.push(e.configured?c(`settings.channel.configured`):c(`settings.channel.notConfigured`)),e.sendCapable&&t.push(c(`settings.channel.sendCapable`)),e.activeInbound&&t.push(c(`settings.channel.activeInbound`)),t}function pe(e,t,n){let r=fe(t).map(e=>`<span class="transport-status-chip">${o(e)}</span>`).join(``),i=t.reason===`not_attach_instance`?`<p class="transport-status-hint">${o(c(`settings.channel.notAttachInstanceHint`))}</p>`:n&&t.configured&&t.sendCapable&&!t.activeInbound?`<p class="transport-status-hint">${o(c(`settings.channel.sendOnlyHint`))}</p>`:``;return`
1
+ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O as s,R as c,x as l}from"./render-A--hkukv.js";import{n as u}from"./locale-DC-ZsWOf.js";import{a as d,i as f,n as p,o as m,t as h}from"./constants-Df7-7Rky.js";import{i as ee}from"./settings-types-DPhhM-cj.js";import{a as te,c as ne,l as re,u as ie}from"./pi-settings-DEuKgvIj.js";import{n as ae,r as oe}from"./provider-icons-CXA2mnPO.js";function se(e){let n=document.getElementById(`sttEngine`),r=document.getElementById(`sttGeminiKey`),i=document.getElementById(`sttGeminiModel`),a=document.getElementById(`sttGeminiModelCustom`),o=document.getElementById(`sttWhisperModel`),s=document.getElementById(`sttOpenaiBaseUrl`),c=document.getElementById(`sttOpenaiKey`),l=document.getElementById(`sttOpenaiModel`),u=document.getElementById(`sttVertexJson`);if(n&&(n.value=e.engine||`auto`),r&&(r.placeholder=e.geminiKeySet?g(e.geminiKeyLast4):`AIza...`),i){let t=e.geminiModel||`gemini-2.5-flash-lite`;Array.from(i.options).some(e=>e.value===t)?i.value=t:(i.value=`__custom__`,a&&(a.value=t,a.style.display=``))}o&&(o.value=e.whisperModel||`mlx-community/whisper-large-v3-turbo`),s&&(s.value=e.openaiBaseUrl||``),c&&(c.placeholder=e.openaiKeySet?g(e.openaiKeyLast4):`sk-...`),l&&(l.value=e.openaiModel||``),u&&(u.value=e.vertexConfig||``);function d(){let e=n?.value||`auto`,t=e===`auto`||e===`gemini`,r=e===`openai`,i=e===`vertex`,a=e===`auto`||e===`whisper`;document.querySelectorAll(`.stt-gemini`).forEach(e=>e.style.display=t?``:`none`),document.querySelectorAll(`.stt-openai`).forEach(e=>e.style.display=r?``:`none`),document.querySelectorAll(`.stt-vertex`).forEach(e=>e.style.display=i?``:`none`),document.querySelectorAll(`.stt-whisper`).forEach(e=>e.style.display=a?``:`none`)}d();async function f(){let e={stt:{engine:n?.value||`auto`,geminiModel:(i?.value===`__custom__`?a?.value:i?.value)||`gemini-2.5-flash-lite`,whisperModel:o?.value||``,openaiBaseUrl:s?.value||``,openaiModel:l?.value||``,vertexConfig:u?.value||``}};r?.value&&(e.stt.geminiApiKey=r.value),c?.value&&(e.stt.openaiApiKey=c.value),console.log(`[stt] saving:`,{engine:e.stt.engine,hasGeminiKey:!!e.stt.geminiApiKey,hasOpenaiKey:!!e.stt.openaiApiKey});try{if(await t(`/api/settings`,`PUT`,e),r?.value){let e=r.value.slice(-4);r.value=``,r.placeholder=g(e)}if(c?.value){let e=c.value.slice(-4);c.value=``,c.placeholder=g(e)}}catch(e){console.error(`[stt] save failed:`,e)}}n?.addEventListener(`change`,()=>{d(),f()}),i?.addEventListener(`change`,()=>{a&&(a.style.display=i.value===`__custom__`?``:`none`),i.value!==`__custom__`&&f()}),a?.addEventListener(`blur`,f),r?.addEventListener(`blur`,()=>{r.value&&f()}),c?.addEventListener(`blur`,()=>{c.value&&f()}),s?.addEventListener(`blur`,f),l?.addEventListener(`blur`,f),o?.addEventListener(`blur`,f),u?.addEventListener(`blur`,f)}function g(e){return c(`stt.key.savedPlaceholder`,{last4:e||``})}function ce(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.configured==`boolean`&&typeof t.activeInbound==`boolean`&&typeof t.sendCapable==`boolean`}function le(e){if(!e||typeof e!=`object`)return null;let t=e.channels;if(!t||typeof t!=`object`)return null;let n=t,r=n.activeInbound;if(r!==`telegram`&&r!==`discord`&&r!==`slack`||!ce(n.telegram)||!ce(n.discord))return null;let i=ce(n.slack)?n.slack:{configured:!1,activeInbound:!1,sendCapable:!1,reason:`unavailable`};return{activeInbound:r,telegram:n.telegram,discord:n.discord,slack:i}}function ue(e){let t=[];return t.push(e.configured?c(`settings.channel.configured`):c(`settings.channel.notConfigured`)),e.sendCapable&&t.push(c(`settings.channel.sendCapable`)),e.activeInbound&&t.push(c(`settings.channel.activeInbound`)),t}function de(e,t,n){let r=ue(t).map(e=>`<span class="transport-status-chip">${o(e)}</span>`).join(``),i=t.reason===`not_attach_instance`?`<p class="transport-status-hint">${o(c(`settings.channel.notAttachInstanceHint`))}</p>`:n&&t.configured&&t.sendCapable&&!t.activeInbound?`<p class="transport-status-hint">${o(c(`settings.channel.sendOnlyHint`))}</p>`:``;return`
2
2
  <div class="transport-status-block">
3
3
  <div class="transport-status-label">${o(e)}</div>
4
4
  <div class="transport-status-chips">${r}</div>
5
5
  ${i}
6
- </div>`}function me(e,t){e.innerHTML=`
6
+ </div>`}function fe(e,t){e.innerHTML=`
7
7
  <h4 class="section-title-row">
8
8
  <span><span data-icon="radio"></span> ${o(c(`settings.channel.statusTitle`))}</span>
9
9
  </h4>
10
- ${pe(`Telegram`,t.telegram,!0)}
11
- ${pe(`Discord`,t.discord,!0)}
12
- ${pe(`Slack`,t.slack,!0)}
13
- `}async function _(){let e=document.getElementById(`channelTransportStatus`);if(e)try{let t=de(await n(`/api/health`));if(!t){e.innerHTML=``,e.style.display=`none`;return}me(e,t),e.style.display=``}catch{e.innerHTML=``,e.style.display=`none`}}var he={telegram:[{key:`botToken`,settingsId:`tgToken`,secret:!0,example:`8123456789:AAH...`}],discord:[{key:`botToken`,settingsId:`dcToken`,secret:!0,example:`MTIzNDU2Nzg5...`},{key:`guildId`,settingsId:`dcGuildId`,secret:!1,example:`123456789012345678`}],slack:[{key:`botToken`,settingsId:`slBotToken`,secret:!0,prefix:`xoxb-`,example:`xoxb-1234-5678-abcd...`},{key:`appToken`,settingsId:`slAppToken`,secret:!0,optional:!0,prefix:`xapp-`,example:`xapp-1-A01...`}]},ge={telegram:`https://t.me/BotFather`,discord:`https://discord.com/developers/applications`,slack:`https://api.slack.com/apps?new_app=1`};function _e(e,t={}){return{channel:e,step:1,draft:{...t},slackSetupStage:`manifest`,validatedIdentity:null,validatedTeamId:``,error:null,missingScopes:[],missingCapabilities:[],saved:!1}}function v(e){return he[e]}function ve(e,t){for(let n of v(e)){let e=(t[n.key]||``).trim();if(!e){if(n.optional)continue;return n.key===`guildId`?`guild_required`:`token_required`}if(n.prefix&&!e.startsWith(n.prefix))return n.key===`appToken`?`app_prefix`:`bot_prefix`}return null}function ye(e){return e.step===1?e.channel===`slack`&&e.slackSetupStage!==`ready`?`slack_setup_required`:null:e.step===2?ve(e.channel,e.draft):e.step===3?e.validatedIdentity?null:`validation_required`:null}function be(e){return e.step<4&&ye(e)===null}function xe(e){if(e.step>=4)return e;let t=ye(e);return t?{...e,error:t}:{...e,step:e.step+1,error:null}}function Se(e){return e.step<=1?e:{...e,step:e.step-1,error:null}}function Ce(e){return e.channel===`slack`?{...e,slackSetupStage:`issuer`,error:null}:e}function we(e){return e.channel!==`slack`||e.slackSetupStage===`manifest`?e:{...e,slackSetupStage:`ready`,error:null}}function Te(e){return e.channel===`slack`?{...e,slackSetupStage:`manifest`,error:null}:e}function Ee(e,t,n){return(e.draft[t]??``)===n?e:{...e,draft:{...e.draft,[t]:n},validatedIdentity:null,validatedTeamId:``,error:null,missingScopes:[],missingCapabilities:[]}}function De(e,t){return t?.ok?{...e,validatedIdentity:t.identity||`ok`,validatedTeamId:t.teamId||``,error:null,missingScopes:[],missingCapabilities:Array.isArray(t.missingCapabilities)?t.missingCapabilities:[]}:{...e,validatedIdentity:null,validatedTeamId:``,error:t?.error||`network`,missingScopes:Array.isArray(t?.missing)?t.missing:[],missingCapabilities:[]}}function Oe(e){return{...e,saved:!0,step:4,error:null}}function ke(e){let t={channel:e.channel};for(let n of v(e.channel))t[n.key]=(e.draft[n.key]||``).trim();return t}function Ae(e){let t=t=>(e.draft[t]||``).trim();return e.channel===`telegram`?{telegram:{enabled:!0,token:t(`botToken`)}}:e.channel===`discord`?{discord:{enabled:!0,token:t(`botToken`),guildId:t(`guildId`)}}:{slack:{enabled:!0,botToken:t(`botToken`),appToken:t(`appToken`),...e.validatedTeamId?{teamId:e.validatedTeamId}:{}}}}var je=`jaw:notificationsAsked`;function Me(){try{return localStorage.getItem(je)===`1`}catch{return!0}}function Ne(){try{localStorage.setItem(je,`1`)}catch{}}async function Pe(){if(typeof Notification>`u`)return null;if(Notification.permission!==`default`)return Notification.permission;if(Me())return null;Ne();try{return await Notification.requestPermission()}catch{return null}}var y=null,b=null,x=!1,S=!1,C=`cli-jaw`,w=0;function Fe(){document.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-onboard-channel]`);t&&(e.preventDefault(),Ie(t.getAttribute(`data-onboard-channel`)))}),document.addEventListener(`keydown`,e=>{e.key!==`Escape`||!b||(e.preventDefault(),e.stopImmediatePropagation(),Le())},!0),document.addEventListener(`keydown`,e=>{if(e.key!==`Tab`||!b||!y)return;let t=[...y.querySelectorAll(`button:not([disabled]), input:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])`)];if(!t.length)return;let n=t[0],r=t[t.length-1],i=document.activeElement;e.shiftKey&&(i===n||!y.contains(i))?(e.preventDefault(),r.focus()):!e.shiftKey&&i===r&&(e.preventDefault(),n.focus())},!0)}function Ie(e){if(e!==`telegram`&&e!==`discord`&&e!==`slack`)return;let t={};for(let n of v(e))t[n.key]=Re(n.settingsId);b=_e(e,t),e===`slack`&&(C=`cli-jaw`),x=!1,S=!1,w+=1,Be(),T(),y?.classList.add(`open`)}function Le(){y?.classList.remove(`open`),b=null}function Re(e){return document.getElementById(e)?.value.trim()||``}function ze(e,t){let n=document.getElementById(e);n&&(n.value=t)}function Be(){y||(y=document.createElement(`div`),y.className=`modal-overlay onboarding-overlay`,y.addEventListener(`click`,e=>{e.target===y&&Le()}),document.body.appendChild(y))}function Ve(e){if(e.step===1){let t=e.slackSetupStage;return`
10
+ ${de(`Telegram`,t.telegram,!0)}
11
+ ${de(`Discord`,t.discord,!0)}
12
+ ${de(`Slack`,t.slack,!0)}
13
+ `}async function _(){let e=document.getElementById(`channelTransportStatus`);if(e)try{let t=le(await n(`/api/health`));if(!t){e.innerHTML=``,e.style.display=`none`;return}fe(e,t),e.style.display=``}catch{e.innerHTML=``,e.style.display=`none`}}var pe={telegram:[{key:`botToken`,settingsId:`tgToken`,secret:!0,example:`8123456789:AAH...`}],discord:[{key:`botToken`,settingsId:`dcToken`,secret:!0,example:`MTIzNDU2Nzg5...`},{key:`guildId`,settingsId:`dcGuildId`,secret:!1,example:`123456789012345678`}],slack:[{key:`botToken`,settingsId:`slBotToken`,secret:!0,prefix:`xoxb-`,example:`xoxb-1234-5678-abcd...`},{key:`appToken`,settingsId:`slAppToken`,secret:!0,optional:!0,prefix:`xapp-`,example:`xapp-1-A01...`}]},me={telegram:`https://t.me/BotFather`,discord:`https://discord.com/developers/applications`,slack:`https://api.slack.com/apps?new_app=1`};function he(e,t={}){return{channel:e,step:1,draft:{...t},slackSetupStage:`manifest`,validatedIdentity:null,validatedTeamId:``,error:null,missingScopes:[],missingCapabilities:[],saved:!1}}function v(e){return pe[e]}function ge(e,t){for(let n of v(e)){let e=(t[n.key]||``).trim();if(!e){if(n.optional)continue;return n.key===`guildId`?`guild_required`:`token_required`}if(n.prefix&&!e.startsWith(n.prefix))return n.key===`appToken`?`app_prefix`:`bot_prefix`}return null}function _e(e){return e.step===1?e.channel===`slack`&&e.slackSetupStage!==`ready`?`slack_setup_required`:null:e.step===2?ge(e.channel,e.draft):e.step===3?e.validatedIdentity?null:`validation_required`:null}function ve(e){return e.step<4&&_e(e)===null}function ye(e){if(e.step>=4)return e;let t=_e(e);return t?{...e,error:t}:{...e,step:e.step+1,error:null}}function be(e){return e.step<=1?e:{...e,step:e.step-1,error:null}}function xe(e){return e.channel===`slack`?{...e,slackSetupStage:`issuer`,error:null}:e}function Se(e){return e.channel!==`slack`||e.slackSetupStage===`manifest`?e:{...e,slackSetupStage:`ready`,error:null}}function Ce(e){return e.channel===`slack`?{...e,slackSetupStage:`manifest`,error:null}:e}function we(e,t,n){return(e.draft[t]??``)===n?e:{...e,draft:{...e.draft,[t]:n},validatedIdentity:null,validatedTeamId:``,error:null,missingScopes:[],missingCapabilities:[]}}function Te(e,t){return t?.ok?{...e,validatedIdentity:t.identity||`ok`,validatedTeamId:t.teamId||``,error:null,missingScopes:[],missingCapabilities:Array.isArray(t.missingCapabilities)?t.missingCapabilities:[]}:{...e,validatedIdentity:null,validatedTeamId:``,error:t?.error||`network`,missingScopes:Array.isArray(t?.missing)?t.missing:[],missingCapabilities:[]}}function Ee(e){return{...e,saved:!0,step:4,error:null}}function De(e){let t={channel:e.channel};for(let n of v(e.channel))t[n.key]=(e.draft[n.key]||``).trim();return t}function Oe(e){let t=t=>(e.draft[t]||``).trim();return e.channel===`telegram`?{telegram:{enabled:!0,token:t(`botToken`)}}:e.channel===`discord`?{discord:{enabled:!0,token:t(`botToken`),guildId:t(`guildId`)}}:{slack:{enabled:!0,botToken:t(`botToken`),appToken:t(`appToken`),...e.validatedTeamId?{teamId:e.validatedTeamId}:{}}}}var ke=`jaw:notificationsAsked`;function Ae(){try{return localStorage.getItem(ke)===`1`}catch{return!0}}function je(){try{localStorage.setItem(ke,`1`)}catch{}}async function Me(){if(typeof Notification>`u`)return null;if(Notification.permission!==`default`)return Notification.permission;if(Ae())return null;je();try{return await Notification.requestPermission()}catch{return null}}var y=null,b=null,x=!1,S=!1,C=`cli-jaw`,w=0;function Ne(){document.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-onboard-channel]`);t&&(e.preventDefault(),Pe(t.getAttribute(`data-onboard-channel`)))}),document.addEventListener(`keydown`,e=>{e.key!==`Escape`||!b||(e.preventDefault(),e.stopImmediatePropagation(),Fe())},!0),document.addEventListener(`keydown`,e=>{if(e.key!==`Tab`||!b||!y)return;let t=[...y.querySelectorAll(`button:not([disabled]), input:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])`)];if(!t.length)return;let n=t[0],r=t[t.length-1],i=document.activeElement;e.shiftKey&&(i===n||!y.contains(i))?(e.preventDefault(),r.focus()):!e.shiftKey&&i===r&&(e.preventDefault(),n.focus())},!0)}function Pe(e){if(e!==`telegram`&&e!==`discord`&&e!==`slack`)return;let t={};for(let n of v(e))t[n.key]=Ie(n.settingsId);b=he(e,t),e===`slack`&&(C=`cli-jaw`),x=!1,S=!1,w+=1,Re(),T(),y?.classList.add(`open`)}function Fe(){y?.classList.remove(`open`),b=null}function Ie(e){return document.getElementById(e)?.value.trim()||``}function Le(e,t){let n=document.getElementById(e);n&&(n.value=t)}function Re(){y||(y=document.createElement(`div`),y.className=`modal-overlay onboarding-overlay`,y.addEventListener(`click`,e=>{e.target===y&&Fe()}),document.body.appendChild(y))}function ze(e){if(e.step===1){let t=e.slackSetupStage;return`
14
14
  ${e.channel===`slack`?`
15
15
  <div class="onboarding-field">
16
16
  <label for="onboard-slack-app-name">${o(c(`onboarding.slackAppName`))}</label>
@@ -48,8 +48,8 @@ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O a
48
48
  <button type="button" class="perm-btn" data-onboard-validate="1" ${x?`disabled`:``}>
49
49
  ${o(c(`onboarding.validate`))}
50
50
  </button>
51
- </div>`:`<p class="onboarding-next">${o(c(e.saved?`onboarding.next.${e.channel}`:`onboarding.saveHint`))}</p>`}function He(e){return e.step===4&&e.saved?`<button type="button" class="perm-btn active" data-onboard-close="1">${o(c(`onboarding.close`))}</button>`:`${e.step>1?`<button type="button" class="perm-btn" data-onboard-back="1">${o(c(`onboarding.back`))}</button>`:``}${e.step===4?`<button type="button" class="perm-btn active" data-onboard-save="1">${o(c(`onboarding.save`))}</button>`:`<button type="button" class="perm-btn ${be(e)?`active`:``}" data-onboard-next="1"
52
- ${e.channel===`slack`&&e.step===1&&!be(e)?`disabled`:``}>${o(c(`onboarding.next`))}</button>`}`}function T(){if(!y||!b)return;let e=b;y.innerHTML=`
51
+ </div>`:`<p class="onboarding-next">${o(c(e.saved?`onboarding.next.${e.channel}`:`onboarding.saveHint`))}</p>`}function Be(e){return e.step===4&&e.saved?`<button type="button" class="perm-btn active" data-onboard-close="1">${o(c(`onboarding.close`))}</button>`:`${e.step>1?`<button type="button" class="perm-btn" data-onboard-back="1">${o(c(`onboarding.back`))}</button>`:``}${e.step===4?`<button type="button" class="perm-btn active" data-onboard-save="1">${o(c(`onboarding.save`))}</button>`:`<button type="button" class="perm-btn ${ve(e)?`active`:``}" data-onboard-next="1"
52
+ ${e.channel===`slack`&&e.step===1&&!ve(e)?`disabled`:``}>${o(c(`onboarding.next`))}</button>`}`}function T(){if(!y||!b)return;let e=b;y.innerHTML=`
53
53
  <div class="modal-box onboarding-box" role="dialog" aria-modal="true"
54
54
  aria-labelledby="onboarding-title" aria-describedby="onboarding-step-title">
55
55
  <div class="onboarding-head">
@@ -63,7 +63,7 @@ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O a
63
63
  ${Array.from({length:4},(t,n)=>`<span class="onboarding-dot${n+1===e.step?` is-active`:``}${n+1<e.step?` is-done`:``}"></span>`).join(``)}
64
64
  </div>
65
65
  <div class="onboarding-step-title" id="onboarding-step-title">${o(c(`onboarding.step.${e.step}`))}</div>
66
- ${Ve(e)}
66
+ ${ze(e)}
67
67
  <div class="onboarding-error" role="alert" style="display:${e.error?``:`none`}">
68
68
  ${e.error?o(c(`onboarding.error.${e.error}`)):``}
69
69
  ${e.missingScopes.length?`<span class="onboarding-scopes">${o(e.missingScopes.join(`, `))}</span>`:``}
@@ -71,8 +71,8 @@ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O a
71
71
  <div class="onboarding-capability-warning" role="status" style="display:${e.missingCapabilities.length?``:`none`}">
72
72
  ${e.missingCapabilities.length?o(c(`onboarding.warning.missingCapabilities`,{capabilities:e.missingCapabilities.join(`, `)})):``}
73
73
  </div>
74
- <div class="onboarding-actions onboarding-footer">${He(e)}</div>
75
- </div>`,y.querySelectorAll(`[data-onboard-close]`).forEach(e=>e.addEventListener(`click`,Le)),y.querySelector(`[data-onboard-issuer]`)?.addEventListener(`click`,()=>{b&&(window.open(ge[b.channel],`_blank`,`noopener`),b.channel===`slack`&&(b=we(b),E()))}),y.querySelector(`[data-onboard-generate-manifest]`)?.addEventListener(`click`,()=>{Ge()}),y.querySelector(`[data-onboard-app-name]`)?.addEventListener(`input`,e=>{C=e.currentTarget.value,b?.channel===`slack`&&(b=Te(b));let t=y?.querySelector(`[data-onboard-manifest-status]`);t?.classList.remove(`is-error`),t&&(t.textContent=``),E()}),y.querySelector(`[data-onboard-app-name]`)?.addEventListener(`keydown`,e=>{let t=e;t.key!==`Enter`||t.shiftKey||t.isComposing||(t.preventDefault(),Ge())}),y.querySelector(`[data-onboard-back]`)?.addEventListener(`click`,()=>{b&&(b=Se(b),T())}),y.querySelector(`[data-onboard-next]`)?.addEventListener(`click`,()=>{b&&(Ke(),b=xe(b),T())}),y.querySelector(`[data-onboard-validate]`)?.addEventListener(`click`,()=>{qe()}),y.querySelector(`[data-onboard-save]`)?.addEventListener(`click`,()=>{Je()}),y.querySelectorAll(`[data-onboard-field]`).forEach(e=>{e.addEventListener(`input`,()=>{if(!b)return;let t=e.getAttribute(`data-onboard-field`)||``;b=Ee(b,t,e.value)}),e.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||(e.preventDefault(),Ue())})}),We()}function E(){if(!y||b?.channel!==`slack`||b.step!==1)return;let e=b.slackSetupStage,t=y.querySelector(`[data-onboard-generate-manifest]`),n=y.querySelector(`[data-onboard-issuer]`),r=y.querySelector(`[data-onboard-next]`);t?.classList.toggle(`active`,e===`manifest`),n?.classList.toggle(`active`,e===`issuer`),n&&(n.disabled=e===`manifest`),r?.classList.toggle(`active`,e===`ready`),r&&(r.disabled=e!==`ready`)}function Ue(){if(b){if(b.step===3){qe();return}if(b.step===4){b.saved||Je();return}Ke(),b=xe(b),T()}}function We(){let e=[...y?.querySelectorAll(`[data-onboard-app-name], [data-onboard-field]`)??[]];if(!e.length)return;let t=e.find(e=>!e.value.trim())??e[0];t?.focus();let n=t?.value.length??0;t?.setSelectionRange?.(n,n)}async function Ge(){if(!y||b?.channel!==`slack`)return;let e=w,t=y.querySelector(`[data-onboard-app-name]`),r=y.querySelector(`[data-onboard-generate-manifest]`),i=y.querySelector(`[data-onboard-manifest-status]`);if(!t||!r||!i)return;let o=t.value.trim();if(C=o,!o||Array.from(o).length>35){i.classList.add(`is-error`),i.textContent=c(`onboarding.slackAppNameError`),t.focus();return}i.classList.remove(`is-error`),i.textContent=``,r.disabled=!0,r.textContent=c(`onboarding.slackManifestGenerating`);try{let t=await n(`/api/slack/manifest?name=${encodeURIComponent(o)}`);if(e!==w||b?.channel!==`slack`||C.trim()!==o)return;let r=t?.json||``;if(!r)throw Error(`empty manifest`);let s=await a(r);if(!s.ok)throw Error(s.error||`copy failed`);if(e!==w||b?.channel!==`slack`||C.trim()!==o)return;b=Ce(b);let l=t?.botDisplayName;i.textContent=l&&l!==o?c(`onboarding.slackManifestCopiedWithBot`,{bot:l}):c(`onboarding.slackManifestReady`),E()}catch{i.classList.add(`is-error`),i.textContent=c(`onboarding.slackManifestError`)}finally{r.disabled=!1,r.textContent=c(`onboarding.slackGenerateManifest`),E()}}function Ke(){if(b)for(let e of y?.querySelectorAll(`[data-onboard-field]`)??[]){let t=e.getAttribute(`data-onboard-field`)||``;b=Ee(b,t,e.value)}}async function qe(){if(!b||x)return;let e=w;x=!0,T();let t=await n(`/api/channels/validate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ke(b))});e===w&&(x=!1,b&&(b=De(b,t||{ok:!1,error:`network`}),T()))}async function Je(){if(!b||S)return;let e=ye({...b,step:3});if(e){b={...b,step:3,error:e},T();return}for(let e of v(b.channel))ze(e.settingsId,(b.draft[e.key]||``).trim());let n=w;S=!0;try{await t(`/api/settings`,`PUT`,Ae(b))}finally{S=!1}n!==w||!b||(b=Oe(b),T(),_(),Pe())}function Ye(e){return e.trim().length>0}function Xe(e,t){return e.trim().length>0&&t.trim().length>0}function Ze(e){return e.trim().length>0}function Qe(e){return e.trim().startsWith(`xoxb-`)}function $e(e){return e.trim().startsWith(`xapp-`)}function D(e){return document.getElementById(e)?.value??``}function O(e){(e===`telegram`?Ye(D(`tgToken`)):e===`discord`?Xe(D(`dcToken`),D(`dcGuildId`)):Ze(D(`slBotToken`)))||Ie(e)}async function et(){let e=document.getElementById(`tgToken`)?.value.trim()||``,n=document.getElementById(`tgChatIds`)?.value.trim()||``;await t(`/api/settings`,`PUT`,{telegram:{token:e,allowedChatIds:n?n.split(`,`).map(e=>parseInt(e.trim(),10)).filter(e=>!isNaN(e)):[]}})}async function tt(e){document.getElementById(`tgOn`)?.classList.toggle(`active`,e),document.getElementById(`tgOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{enabled:e}}),e&&O(`telegram`)}async function nt(e){document.getElementById(`tgForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`tgForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{forwardAll:e}})}async function rt(e){document.getElementById(`tgMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`tgMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{mentionOnly:e}})}function it(e){if(!e.telegram)return;let t=e.telegram;document.getElementById(`tgOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`tgOff`)?.classList.toggle(`active`,!t.enabled);let n=document.getElementById(`tgToken`);t.token&&n&&(n.value=t.token);let r=document.getElementById(`tgChatIds`);t.allowedChatIds?.length&&r&&(r.value=t.allowedChatIds.join(`, `));let i=t.forwardAll!==!1;document.getElementById(`tgForwardOn`)?.classList.toggle(`active`,i),document.getElementById(`tgForwardOff`)?.classList.toggle(`active`,!i);let a=t.mentionOnly!==!1;document.getElementById(`tgMentionOn`)?.classList.toggle(`active`,a),document.getElementById(`tgMentionOff`)?.classList.toggle(`active`,!a)}async function at(){let e=document.getElementById(`dcToken`)?.value.trim()||``,n=document.getElementById(`dcGuildId`)?.value.trim()||``,r=document.getElementById(`dcChannelIds`)?.value.trim()||``;await t(`/api/settings`,`PUT`,{discord:{token:e,guildId:n,channelIds:r?r.split(`,`).map(e=>e.trim()).filter(Boolean):[]}})}async function ot(e){document.getElementById(`dcOn`)?.classList.toggle(`active`,e),document.getElementById(`dcOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{enabled:e}}),e&&O(`discord`)}async function st(e){document.getElementById(`dcForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`dcForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{forwardAll:e}})}async function ct(e){document.getElementById(`dcAllowBotsOn`)?.classList.toggle(`active`,e),document.getElementById(`dcAllowBotsOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{allowBots:e}})}async function lt(e){document.getElementById(`dcMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`dcMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{mentionOnly:e}})}function ut(e){if(!e.discord)return;let t=e.discord;document.getElementById(`dcOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`dcOff`)?.classList.toggle(`active`,!t.enabled);let n=document.getElementById(`dcToken`);t.token&&n&&(n.value=t.token);let r=document.getElementById(`dcGuildId`);t.guildId&&r&&(r.value=t.guildId);let i=document.getElementById(`dcChannelIds`);t.channelIds?.length&&i&&(i.value=t.channelIds.join(`, `));let a=t.forwardAll!==!1;document.getElementById(`dcForwardOn`)?.classList.toggle(`active`,a),document.getElementById(`dcForwardOff`)?.classList.toggle(`active`,!a);let o=!!t.allowBots;document.getElementById(`dcAllowBotsOn`)?.classList.toggle(`active`,o),document.getElementById(`dcAllowBotsOff`)?.classList.toggle(`active`,!o);let s=!!t.mentionOnly;document.getElementById(`dcMentionOn`)?.classList.toggle(`active`,s),document.getElementById(`dcMentionOff`)?.classList.toggle(`active`,!s)}var dt=!1,ft=!1,k=[];async function pt(){try{let t=await e();return await(await fetch(`${i}/api/settings/slack/reset`,{method:`POST`,headers:t?{Authorization:`Bearer ${t}`}:{}})).json().catch(()=>null)}catch{return null}}function mt(e){let t=e?.slack;return!t?.enabled&&!t?.botToken&&!t?.appToken&&!t?.teamId&&!t?.channelIds?.length&&!t?.attachPort}function ht(){return c(`settings.slack.resetManagedByEnvironment`,{variables:k.join(`, `)||`SLACK_*`})}function gt(){dt||(dt=!0,vt(`slBotToken`,`slack-bot-token-error`,Qe),vt(`slAppToken`,`slack-app-token-error`,$e),document.getElementById(`slack-reset-connection`)?.addEventListener(`click`,()=>{_t()}))}async function _t(){if(ft)return;if(k.length>0){window.alert(ht());return}let e=document.getElementById(`slBotToken`),t=document.getElementById(`slAppToken`);if(!e?.value.trim()&&!t?.value.trim()){window.alert(c(`settings.slack.resetEmpty`));return}if(!window.confirm(c(`settings.slack.resetConfirm`)))return;let r=document.getElementById(`slack-reset-connection`);ft=!0,r&&(r.disabled=!0);try{let e=await pt(),t=await n(`/api/settings`);if(t&&Tt(t),await _(),e?.error===`slack_connection_managed_by_environment`){let t=Array.isArray(e.environmentVariables)?e.environmentVariables.join(`, `):`SLACK_*`;window.alert(c(`settings.slack.resetManagedByEnvironment`,{variables:t}));return}if(!mt(t)){window.alert(c(`settings.slack.resetFailed`));return}for(let e of[`slBotToken`,`slAppToken`,`slTeamId`,`slChannelIds`,`slAttachPort`])document.getElementById(e)?.classList.remove(`input-error`);for(let e of[`slack-bot-token-error`,`slack-app-token-error`]){let t=document.getElementById(e);t&&(t.style.display=`none`)}document.getElementById(`slOff`)?.classList.add(`active`),document.getElementById(`slOn`)?.classList.remove(`active`)}finally{ft=!1,r&&(r.disabled=k.length>0)}}function vt(e,t,n){let r=document.getElementById(e),i=document.getElementById(t);if(!r||!i)return;let a=()=>{let e=r.value.trim().length>0&&!n(r.value);i.style.display=e?``:`none`,r.classList.toggle(`input-error`,e)};r.addEventListener(`blur`,a),r.addEventListener(`input`,()=>{i.style.display!==`none`&&a()})}async function yt(){if(k.length>0){window.alert(ht());return}let e=document.getElementById(`slBotToken`)?.value.trim()||``,n=document.getElementById(`slAppToken`)?.value.trim()||``,r=document.getElementById(`slTeamId`)?.value.trim()||``,i=document.getElementById(`slChannelIds`)?.value.trim()||``,a=document.getElementById(`slAttachPort`)?.value.trim()||``;await t(`/api/settings`,`PUT`,{slack:{botToken:e,appToken:n,teamId:r,channelIds:i?i.split(`,`).map(e=>e.trim()).filter(Boolean):[],attachPort:a}})}async function bt(e){if(k.length>0){window.alert(ht());return}document.getElementById(`slOn`)?.classList.toggle(`active`,e),document.getElementById(`slOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{enabled:e}}),e&&O(`slack`)}async function xt(e){document.getElementById(`slForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`slForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{forwardAll:e}})}async function St(e){document.getElementById(`slAllowBotsOn`)?.classList.toggle(`active`,e),document.getElementById(`slAllowBotsOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{allowBots:e}})}async function Ct(e){document.getElementById(`slMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`slMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{mentionOnly:e}})}async function wt(e){document.getElementById(`slThreadOn`)?.classList.toggle(`active`,e),document.getElementById(`slThreadOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{replyInThread:e}})}function Tt(e){if(!e.slack)return;let t=e.slack;k=Array.isArray(e.slackEnvironmentVariables)?e.slackEnvironmentVariables:[];let n=k.length>0,r=document.getElementById(`slack-environment-managed`);r&&(r.style.display=n?``:`none`,r.textContent=n?c(`settings.slack.managedByEnvironment`,{variables:k.join(`, `)}):``);for(let e of[`slBotToken`,`slAppToken`,`slTeamId`,`slChannelIds`,`slAttachPort`]){let t=document.getElementById(e);t&&(t.disabled=n)}for(let e of[`slOff`,`slOn`,`slack-reset-connection`,`slack-onboarding-trigger`]){let t=document.getElementById(e);t&&(t.disabled=n)}document.getElementById(`slOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`slOff`)?.classList.toggle(`active`,!t.enabled);let i=document.getElementById(`slBotToken`);i&&(i.value=n?``:t.botToken||``);let a=document.getElementById(`slAppToken`);a&&(a.value=n?``:t.appToken||``);let o=document.getElementById(`slTeamId`);o&&(o.value=n?``:t.teamId||``);let s=document.getElementById(`slChannelIds`);s&&(s.value=n?``:t.channelIds?.join(`, `)||``);let l=document.getElementById(`slAttachPort`);l&&(l.value=n?``:t.attachPort||``);let u=t.forwardAll!==!1;document.getElementById(`slForwardOn`)?.classList.toggle(`active`,u),document.getElementById(`slForwardOff`)?.classList.toggle(`active`,!u);let d=!!t.allowBots;document.getElementById(`slAllowBotsOn`)?.classList.toggle(`active`,d),document.getElementById(`slAllowBotsOff`)?.classList.toggle(`active`,!d);let f=t.mentionOnly!==!1;document.getElementById(`slMentionOn`)?.classList.toggle(`active`,f),document.getElementById(`slMentionOff`)?.classList.toggle(`active`,!f);let p=t.replyInThread!==!1;document.getElementById(`slThreadOn`)?.classList.toggle(`active`,p),document.getElementById(`slThreadOff`)?.classList.toggle(`active`,!p)}async function Et(e){document.getElementById(`chTelegram`)?.classList.toggle(`active`,e===`telegram`),document.getElementById(`chDiscord`)?.classList.toggle(`active`,e===`discord`),document.getElementById(`chSlack`)?.classList.toggle(`active`,e===`slack`),document.getElementById(`channelTelegramSettings`)?.style.setProperty(`display`,e===`telegram`?``:`none`),document.getElementById(`channelDiscordSettings`)?.style.setProperty(`display`,e===`discord`?``:`none`),document.getElementById(`channelSlackSettings`)?.style.setProperty(`display`,e===`slack`?``:`none`),await t(`/api/settings`,`PUT`,{channel:e}),await _(),O(e)}function Dt(e){let t=e.channel||`telegram`;document.getElementById(`chTelegram`)?.classList.toggle(`active`,t===`telegram`),document.getElementById(`chDiscord`)?.classList.toggle(`active`,t===`discord`),document.getElementById(`chSlack`)?.classList.toggle(`active`,t===`slack`),document.getElementById(`channelTelegramSettings`)?.style.setProperty(`display`,t===`telegram`?``:`none`),document.getElementById(`channelDiscordSettings`)?.style.setProperty(`display`,t===`discord`?``:`none`),document.getElementById(`channelSlackSettings`)?.style.setProperty(`display`,t===`slack`?``:`none`),_()}function Ot(e){let t=document.getElementById(`fallbackOrderList`);if(!t)return;let n=Object.keys(e.perCli||{}),r=e.fallbackOrder||[],i=Math.min(n.length-1,3),a=``;for(let e=0;e<i;e++){let t=r[e]||``,i=n.map(e=>`<option value="${o(e)}" ${e===t?`selected`:``}>${o(d(e)?.label||ae(e))}</option>`).join(``);a+=`
74
+ <div class="onboarding-actions onboarding-footer">${Be(e)}</div>
75
+ </div>`,y.querySelectorAll(`[data-onboard-close]`).forEach(e=>e.addEventListener(`click`,Fe)),y.querySelector(`[data-onboard-issuer]`)?.addEventListener(`click`,()=>{b&&(window.open(me[b.channel],`_blank`,`noopener`),b.channel===`slack`&&(b=Se(b),E()))}),y.querySelector(`[data-onboard-generate-manifest]`)?.addEventListener(`click`,()=>{Ue()}),y.querySelector(`[data-onboard-app-name]`)?.addEventListener(`input`,e=>{C=e.currentTarget.value,b?.channel===`slack`&&(b=Ce(b));let t=y?.querySelector(`[data-onboard-manifest-status]`);t?.classList.remove(`is-error`),t&&(t.textContent=``),E()}),y.querySelector(`[data-onboard-app-name]`)?.addEventListener(`keydown`,e=>{let t=e;t.key!==`Enter`||t.shiftKey||t.isComposing||(t.preventDefault(),Ue())}),y.querySelector(`[data-onboard-back]`)?.addEventListener(`click`,()=>{b&&(b=be(b),T())}),y.querySelector(`[data-onboard-next]`)?.addEventListener(`click`,()=>{b&&(We(),b=ye(b),T())}),y.querySelector(`[data-onboard-validate]`)?.addEventListener(`click`,()=>{Ge()}),y.querySelector(`[data-onboard-save]`)?.addEventListener(`click`,()=>{Ke()}),y.querySelectorAll(`[data-onboard-field]`).forEach(e=>{e.addEventListener(`input`,()=>{if(!b)return;let t=e.getAttribute(`data-onboard-field`)||``;b=we(b,t,e.value)}),e.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||(e.preventDefault(),Ve())})}),He()}function E(){if(!y||b?.channel!==`slack`||b.step!==1)return;let e=b.slackSetupStage,t=y.querySelector(`[data-onboard-generate-manifest]`),n=y.querySelector(`[data-onboard-issuer]`),r=y.querySelector(`[data-onboard-next]`);t?.classList.toggle(`active`,e===`manifest`),n?.classList.toggle(`active`,e===`issuer`),n&&(n.disabled=e===`manifest`),r?.classList.toggle(`active`,e===`ready`),r&&(r.disabled=e!==`ready`)}function Ve(){if(b){if(b.step===3){Ge();return}if(b.step===4){b.saved||Ke();return}We(),b=ye(b),T()}}function He(){let e=[...y?.querySelectorAll(`[data-onboard-app-name], [data-onboard-field]`)??[]];if(!e.length)return;let t=e.find(e=>!e.value.trim())??e[0];t?.focus();let n=t?.value.length??0;t?.setSelectionRange?.(n,n)}async function Ue(){if(!y||b?.channel!==`slack`)return;let e=w,t=y.querySelector(`[data-onboard-app-name]`),r=y.querySelector(`[data-onboard-generate-manifest]`),i=y.querySelector(`[data-onboard-manifest-status]`);if(!t||!r||!i)return;let o=t.value.trim();if(C=o,!o||Array.from(o).length>35){i.classList.add(`is-error`),i.textContent=c(`onboarding.slackAppNameError`),t.focus();return}i.classList.remove(`is-error`),i.textContent=``,r.disabled=!0,r.textContent=c(`onboarding.slackManifestGenerating`);try{let t=await n(`/api/slack/manifest?name=${encodeURIComponent(o)}`);if(e!==w||b?.channel!==`slack`||C.trim()!==o)return;let r=t?.json||``;if(!r)throw Error(`empty manifest`);let s=await a(r);if(!s.ok)throw Error(s.error||`copy failed`);if(e!==w||b?.channel!==`slack`||C.trim()!==o)return;b=xe(b);let l=t?.botDisplayName;i.textContent=l&&l!==o?c(`onboarding.slackManifestCopiedWithBot`,{bot:l}):c(`onboarding.slackManifestReady`),E()}catch{i.classList.add(`is-error`),i.textContent=c(`onboarding.slackManifestError`)}finally{r.disabled=!1,r.textContent=c(`onboarding.slackGenerateManifest`),E()}}function We(){if(b)for(let e of y?.querySelectorAll(`[data-onboard-field]`)??[]){let t=e.getAttribute(`data-onboard-field`)||``;b=we(b,t,e.value)}}async function Ge(){if(!b||x)return;let e=w;x=!0,T();let t=await n(`/api/channels/validate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(De(b))});e===w&&(x=!1,b&&(b=Te(b,t||{ok:!1,error:`network`}),T()))}async function Ke(){if(!b||S)return;let e=_e({...b,step:3});if(e){b={...b,step:3,error:e},T();return}for(let e of v(b.channel))Le(e.settingsId,(b.draft[e.key]||``).trim());let n=w;S=!0;try{await t(`/api/settings`,`PUT`,Oe(b))}finally{S=!1}n!==w||!b||(b=Ee(b),T(),_(),Me())}function qe(e){return e.trim().length>0}function Je(e,t){return e.trim().length>0&&t.trim().length>0}function Ye(e){return e.trim().length>0}function Xe(e){return e.trim().startsWith(`xoxb-`)}function Ze(e){return e.trim().startsWith(`xapp-`)}function D(e){return document.getElementById(e)?.value??``}function O(e){(e===`telegram`?qe(D(`tgToken`)):e===`discord`?Je(D(`dcToken`),D(`dcGuildId`)):Ye(D(`slBotToken`)))||Pe(e)}async function Qe(){let e=document.getElementById(`tgToken`)?.value.trim()||``,n=document.getElementById(`tgChatIds`)?.value.trim()||``;await t(`/api/settings`,`PUT`,{telegram:{token:e,allowedChatIds:n?n.split(`,`).map(e=>parseInt(e.trim(),10)).filter(e=>!isNaN(e)):[]}})}async function $e(e){document.getElementById(`tgOn`)?.classList.toggle(`active`,e),document.getElementById(`tgOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{enabled:e}}),e&&O(`telegram`)}async function et(e){document.getElementById(`tgForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`tgForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{forwardAll:e}})}async function tt(e){document.getElementById(`tgMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`tgMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{mentionOnly:e}})}function nt(e){if(!e.telegram)return;let t=e.telegram;document.getElementById(`tgOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`tgOff`)?.classList.toggle(`active`,!t.enabled);let n=document.getElementById(`tgToken`);t.token&&n&&(n.value=t.token);let r=document.getElementById(`tgChatIds`);t.allowedChatIds?.length&&r&&(r.value=t.allowedChatIds.join(`, `));let i=t.forwardAll!==!1;document.getElementById(`tgForwardOn`)?.classList.toggle(`active`,i),document.getElementById(`tgForwardOff`)?.classList.toggle(`active`,!i);let a=t.mentionOnly!==!1;document.getElementById(`tgMentionOn`)?.classList.toggle(`active`,a),document.getElementById(`tgMentionOff`)?.classList.toggle(`active`,!a)}async function rt(){let e=document.getElementById(`dcToken`)?.value.trim()||``,n=document.getElementById(`dcGuildId`)?.value.trim()||``,r=document.getElementById(`dcChannelIds`)?.value.trim()||``;await t(`/api/settings`,`PUT`,{discord:{token:e,guildId:n,channelIds:r?r.split(`,`).map(e=>e.trim()).filter(Boolean):[]}})}async function it(e){document.getElementById(`dcOn`)?.classList.toggle(`active`,e),document.getElementById(`dcOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{enabled:e}}),e&&O(`discord`)}async function at(e){document.getElementById(`dcForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`dcForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{forwardAll:e}})}async function ot(e){document.getElementById(`dcAllowBotsOn`)?.classList.toggle(`active`,e),document.getElementById(`dcAllowBotsOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{allowBots:e}})}async function st(e){document.getElementById(`dcMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`dcMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{mentionOnly:e}})}function ct(e){if(!e.discord)return;let t=e.discord;document.getElementById(`dcOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`dcOff`)?.classList.toggle(`active`,!t.enabled);let n=document.getElementById(`dcToken`);t.token&&n&&(n.value=t.token);let r=document.getElementById(`dcGuildId`);t.guildId&&r&&(r.value=t.guildId);let i=document.getElementById(`dcChannelIds`);t.channelIds?.length&&i&&(i.value=t.channelIds.join(`, `));let a=t.forwardAll!==!1;document.getElementById(`dcForwardOn`)?.classList.toggle(`active`,a),document.getElementById(`dcForwardOff`)?.classList.toggle(`active`,!a);let o=!!t.allowBots;document.getElementById(`dcAllowBotsOn`)?.classList.toggle(`active`,o),document.getElementById(`dcAllowBotsOff`)?.classList.toggle(`active`,!o);let s=!!t.mentionOnly;document.getElementById(`dcMentionOn`)?.classList.toggle(`active`,s),document.getElementById(`dcMentionOff`)?.classList.toggle(`active`,!s)}var lt=!1,ut=!1,k=[];async function dt(){try{let t=await e();return await(await fetch(`${i}/api/settings/slack/reset`,{method:`POST`,headers:t?{Authorization:`Bearer ${t}`}:{}})).json().catch(()=>null)}catch{return null}}function ft(e){let t=e?.slack;return!t?.enabled&&!t?.botToken&&!t?.appToken&&!t?.teamId&&!t?.channelIds?.length&&!t?.attachPort}function pt(){return c(`settings.slack.resetManagedByEnvironment`,{variables:k.join(`, `)||`SLACK_*`})}function mt(){lt||(lt=!0,gt(`slBotToken`,`slack-bot-token-error`,Xe),gt(`slAppToken`,`slack-app-token-error`,Ze),document.getElementById(`slack-reset-connection`)?.addEventListener(`click`,()=>{ht()}))}async function ht(){if(ut)return;if(k.length>0){window.alert(pt());return}let e=document.getElementById(`slBotToken`),t=document.getElementById(`slAppToken`);if(!e?.value.trim()&&!t?.value.trim()){window.alert(c(`settings.slack.resetEmpty`));return}if(!window.confirm(c(`settings.slack.resetConfirm`)))return;let r=document.getElementById(`slack-reset-connection`);ut=!0,r&&(r.disabled=!0);try{let e=await dt(),t=await n(`/api/settings`);if(t&&Ct(t),await _(),e?.error===`slack_connection_managed_by_environment`){let t=Array.isArray(e.environmentVariables)?e.environmentVariables.join(`, `):`SLACK_*`;window.alert(c(`settings.slack.resetManagedByEnvironment`,{variables:t}));return}if(!ft(t)){window.alert(c(`settings.slack.resetFailed`));return}for(let e of[`slBotToken`,`slAppToken`,`slTeamId`,`slChannelIds`,`slAttachPort`])document.getElementById(e)?.classList.remove(`input-error`);for(let e of[`slack-bot-token-error`,`slack-app-token-error`]){let t=document.getElementById(e);t&&(t.style.display=`none`)}document.getElementById(`slOff`)?.classList.add(`active`),document.getElementById(`slOn`)?.classList.remove(`active`)}finally{ut=!1,r&&(r.disabled=k.length>0)}}function gt(e,t,n){let r=document.getElementById(e),i=document.getElementById(t);if(!r||!i)return;let a=()=>{let e=r.value.trim().length>0&&!n(r.value);i.style.display=e?``:`none`,r.classList.toggle(`input-error`,e)};r.addEventListener(`blur`,a),r.addEventListener(`input`,()=>{i.style.display!==`none`&&a()})}async function _t(){if(k.length>0){window.alert(pt());return}let e=document.getElementById(`slBotToken`)?.value.trim()||``,n=document.getElementById(`slAppToken`)?.value.trim()||``,r=document.getElementById(`slTeamId`)?.value.trim()||``,i=document.getElementById(`slChannelIds`)?.value.trim()||``,a=document.getElementById(`slAttachPort`)?.value.trim()||``;await t(`/api/settings`,`PUT`,{slack:{botToken:e,appToken:n,teamId:r,channelIds:i?i.split(`,`).map(e=>e.trim()).filter(Boolean):[],attachPort:a}})}async function vt(e){if(k.length>0){window.alert(pt());return}document.getElementById(`slOn`)?.classList.toggle(`active`,e),document.getElementById(`slOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{enabled:e}}),e&&O(`slack`)}async function yt(e){document.getElementById(`slForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`slForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{forwardAll:e}})}async function bt(e){document.getElementById(`slAllowBotsOn`)?.classList.toggle(`active`,e),document.getElementById(`slAllowBotsOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{allowBots:e}})}async function xt(e){document.getElementById(`slMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`slMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{mentionOnly:e}})}async function St(e){document.getElementById(`slThreadOn`)?.classList.toggle(`active`,e),document.getElementById(`slThreadOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{replyInThread:e}})}function Ct(e){if(!e.slack)return;let t=e.slack;k=Array.isArray(e.slackEnvironmentVariables)?e.slackEnvironmentVariables:[];let n=k.length>0,r=document.getElementById(`slack-environment-managed`);r&&(r.style.display=n?``:`none`,r.textContent=n?c(`settings.slack.managedByEnvironment`,{variables:k.join(`, `)}):``);for(let e of[`slBotToken`,`slAppToken`,`slTeamId`,`slChannelIds`,`slAttachPort`]){let t=document.getElementById(e);t&&(t.disabled=n)}for(let e of[`slOff`,`slOn`,`slack-reset-connection`,`slack-onboarding-trigger`]){let t=document.getElementById(e);t&&(t.disabled=n)}document.getElementById(`slOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`slOff`)?.classList.toggle(`active`,!t.enabled);let i=document.getElementById(`slBotToken`);i&&(i.value=n?``:t.botToken||``);let a=document.getElementById(`slAppToken`);a&&(a.value=n?``:t.appToken||``);let o=document.getElementById(`slTeamId`);o&&(o.value=n?``:t.teamId||``);let s=document.getElementById(`slChannelIds`);s&&(s.value=n?``:t.channelIds?.join(`, `)||``);let l=document.getElementById(`slAttachPort`);l&&(l.value=n?``:t.attachPort||``);let u=t.forwardAll!==!1;document.getElementById(`slForwardOn`)?.classList.toggle(`active`,u),document.getElementById(`slForwardOff`)?.classList.toggle(`active`,!u);let d=!!t.allowBots;document.getElementById(`slAllowBotsOn`)?.classList.toggle(`active`,d),document.getElementById(`slAllowBotsOff`)?.classList.toggle(`active`,!d);let f=t.mentionOnly!==!1;document.getElementById(`slMentionOn`)?.classList.toggle(`active`,f),document.getElementById(`slMentionOff`)?.classList.toggle(`active`,!f);let p=t.replyInThread!==!1;document.getElementById(`slThreadOn`)?.classList.toggle(`active`,p),document.getElementById(`slThreadOff`)?.classList.toggle(`active`,!p)}async function wt(e){document.getElementById(`chTelegram`)?.classList.toggle(`active`,e===`telegram`),document.getElementById(`chDiscord`)?.classList.toggle(`active`,e===`discord`),document.getElementById(`chSlack`)?.classList.toggle(`active`,e===`slack`),document.getElementById(`channelTelegramSettings`)?.style.setProperty(`display`,e===`telegram`?``:`none`),document.getElementById(`channelDiscordSettings`)?.style.setProperty(`display`,e===`discord`?``:`none`),document.getElementById(`channelSlackSettings`)?.style.setProperty(`display`,e===`slack`?``:`none`),await t(`/api/settings`,`PUT`,{channel:e}),await _(),O(e)}function Tt(e){let t=e.channel||`telegram`;document.getElementById(`chTelegram`)?.classList.toggle(`active`,t===`telegram`),document.getElementById(`chDiscord`)?.classList.toggle(`active`,t===`discord`),document.getElementById(`chSlack`)?.classList.toggle(`active`,t===`slack`),document.getElementById(`channelTelegramSettings`)?.style.setProperty(`display`,t===`telegram`?``:`none`),document.getElementById(`channelDiscordSettings`)?.style.setProperty(`display`,t===`discord`?``:`none`),document.getElementById(`channelSlackSettings`)?.style.setProperty(`display`,t===`slack`?``:`none`),_()}function Et(e){let t=document.getElementById(`fallbackOrderList`);if(!t)return;let n=Object.keys(e.perCli||{}),r=e.fallbackOrder||[],i=Math.min(n.length-1,3),a=``;for(let e=0;e<i;e++){let t=r[e]||``,i=n.map(e=>`<option value="${o(e)}" ${e===t?`selected`:``}>${o(d(e)?.label||oe(e))}</option>`).join(``);a+=`
76
76
  <div class="settings-row sub-row">
77
77
  <label style="min-width:60px">Fallback ${e+1}</label>
78
78
  <select id="fallback${e}"
@@ -80,7 +80,7 @@ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O a
80
80
  <option value="">${c(`settings.none`)}</option>
81
81
  ${i}
82
82
  </select>
83
- </div>`}t.innerHTML=a}async function kt(){await t(`/api/settings`,`PUT`,{fallbackOrder:[...document.querySelectorAll(`#fallbackOrderList select`)].map(e=>e.value).filter(Boolean)})}function At(e){if(e.url)return`remote`;if(!e.command)return null;let t=e.command;return t===`npx`||t.endsWith(`/npx`)?`npx`:t===`uvx`||t===`uv`||t.endsWith(`/uvx`)?`uvx`:t===`docker`||t.endsWith(`/docker`)?`docker`:null}function jt(e){return Object.values(e).filter(e=>e.command===`npx`||e.command===`uv`||e.command===`uvx`).length}var A=null;async function j(){try{let e=await n(`/api/mcp`);if(!e)return;A=e;let t=document.getElementById(`mcpServerList`);if(!t)return;let r=Object.entries(e.servers||{});if(!r.length){t.textContent=c(`mcp.noServers`),Mt(0);return}t.innerHTML=r.map(([e,t])=>{let n=At(t),r=t.url||[t.command,...(t.args||[]).slice(0,2)].filter(Boolean).map(e=>o(e)).join(` `),i=n?` <span style="opacity:.5;font-size:0.85em">[${o(n)}]</span>`:``;return`<div style="padding:2px 0">• <b>${o(e)}</b> <span style="opacity:.6">${r}</span>${i}</div>`}).join(``),Mt(jt(e.servers))}catch{}}function Mt(e){let t=document.getElementById(`installBundleLabel`);t&&(t.textContent=`Install bundle (${e})`);let n=t?.closest(`button`);n&&(n.disabled=e===0)}async function Nt(){let e=document.getElementById(`mcpSyncResult`);if(e){e.style.display=`block`,e.textContent=c(`mcp.syncing`);try{let n=await t(`/api/mcp/sync`,`POST`,{});if(!n){e.innerHTML=`${s.error} sync failed`;return}let r=n.results||{};e.innerHTML=Object.entries(r).map(([e,t])=>`${t?s.check:s.skip} ${o(e)}`).join(` &nbsp; `)}catch(t){e.innerHTML=`${s.error} ${o(t.message)}`}}}async function Pt(){let e=document.getElementById(`mcpSyncResult`);if(e){e.style.display=`block`,e.textContent=c(`mcp.installing`);try{let n=await t(`/api/mcp/install`,`POST`,{});if(!n){e.innerHTML=`${s.error} install failed`;return}e.innerHTML=Object.entries(n.results||{}).map(([e,t])=>`${t.status===`installed`?s.check:t.status===`skip`?s.skip:s.error} <b>${o(e)}</b>: ${o(t.status)}${t.bin?` ${s.arrowRight} `+o(t.bin):``}`).join(`<br>`),j()}catch(t){e.innerHTML=`${s.error} ${o(t.message)}`}}}var M=null,N=null,P=null,F=null,I=null,L=null,R=`local`,z=!1,Ft=[];function It(){if(M)return;M=document.createElement(`div`),M.id=`mcpModal`,M.className=`modal-overlay mcp-modal-overlay`,M.setAttribute(`role`,`presentation`),M.setAttribute(`aria-hidden`,`true`),M.addEventListener(`click`,e=>{e.target===M&&U()});let e=document.createElement(`div`);e.className=`modal-box mcp-modal-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-label`,`MCP Server Management`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header`;let n=document.createElement(`span`);n.textContent=`MCP Server Management`;let r=document.createElement(`button`);r.type=`button`,r.className=`help-trigger`,r.textContent=`?`,r.setAttribute(`aria-label`,`MCP help`),r.addEventListener(`click`,()=>Kt());let i=document.createElement(`button`);i.type=`button`,i.className=`btn-modal-close`,i.setAttribute(`aria-label`,`Close`),i.textContent=`x`,i.addEventListener(`click`,()=>U());let a=document.createElement(`div`);a.style.cssText=`display:flex;align-items:center;gap:6px`,a.append(n,r),t.append(a,i),N=document.createElement(`div`),N.style.cssText=`padding:16px;overflow-y:auto;flex:1`;let o=document.createElement(`div`);o.style.cssText=`display:flex;gap:4px;margin-bottom:12px`;let s=Lt(`Active Servers`,!0),c=Lt(`Add New`,!1),l=Lt(`Browse`,!1);Ft=[s,c,l],s.addEventListener(`click`,()=>B(`active`)),c.addEventListener(`click`,()=>B(`add`)),l.addEventListener(`click`,()=>B(`browse`)),o.append(s,c,l),P=document.createElement(`div`),L=document.createElement(`div`),L.style.display=`none`,L.innerHTML=`<p style="opacity:.5">Loading registry...</p>`,F=document.createElement(`div`),F.style.display=`none`,F.innerHTML=Rt(),F.querySelectorAll(`[data-mcp-subtab]`).forEach(e=>{e.addEventListener(`click`,()=>{R=e.dataset.mcpSubtab,zt()})}),I=F.querySelector(`#mcpAddError`);let u=F.querySelector(`[data-action="mcpAddAndSync"]`);u&&u.addEventListener(`click`,()=>void Gt());let d=F.querySelector(`[data-action="closeMcpModal"]`);d&&d.addEventListener(`click`,()=>U()),N.append(o,P,L,F);let f=document.createElement(`div`);f.className=`modal-footer`;let p=document.createElement(`button`);p.type=`button`,p.className=`btn-save`,p.textContent=`Close`,p.addEventListener(`click`,()=>U()),f.append(p),e.append(t,N,f),M.append(e),document.body.append(M)}function Lt(e,t){let n=document.createElement(`button`);return n.type=`button`,n.className=`btn-clear btn-tab${t?` is-active`:``}`,n.textContent=e,n}function Rt(){return`
83
+ </div>`}t.innerHTML=a}async function Dt(){await t(`/api/settings`,`PUT`,{fallbackOrder:[...document.querySelectorAll(`#fallbackOrderList select`)].map(e=>e.value).filter(Boolean)})}function Ot(e){if(e.url)return`remote`;if(!e.command)return null;let t=e.command;return t===`npx`||t.endsWith(`/npx`)?`npx`:t===`uvx`||t===`uv`||t.endsWith(`/uvx`)?`uvx`:t===`docker`||t.endsWith(`/docker`)?`docker`:null}function kt(e){return Object.values(e).filter(e=>e.command===`npx`||e.command===`uv`||e.command===`uvx`).length}var A=null;async function j(){try{let e=await n(`/api/mcp`);if(!e)return;A=e;let t=document.getElementById(`mcpServerList`);if(!t)return;let r=Object.entries(e.servers||{});if(!r.length){t.textContent=c(`mcp.noServers`),At(0);return}t.innerHTML=r.map(([e,t])=>{let n=Ot(t),r=t.url||[t.command,...(t.args||[]).slice(0,2)].filter(Boolean).map(e=>o(e)).join(` `),i=n?` <span style="opacity:.5;font-size:0.85em">[${o(n)}]</span>`:``;return`<div style="padding:2px 0">• <b>${o(e)}</b> <span style="opacity:.6">${r}</span>${i}</div>`}).join(``),At(kt(e.servers))}catch{}}function At(e){let t=document.getElementById(`installBundleLabel`);t&&(t.textContent=`Install bundle (${e})`);let n=t?.closest(`button`);n&&(n.disabled=e===0)}async function jt(){let e=document.getElementById(`mcpSyncResult`);if(e){e.style.display=`block`,e.textContent=c(`mcp.syncing`);try{let n=await t(`/api/mcp/sync`,`POST`,{});if(!n){e.innerHTML=`${s.error} sync failed`;return}let r=n.results||{};e.innerHTML=Object.entries(r).map(([e,t])=>`${t?s.check:s.skip} ${o(e)}`).join(` &nbsp; `)}catch(t){e.innerHTML=`${s.error} ${o(t.message)}`}}}async function Mt(){let e=document.getElementById(`mcpSyncResult`);if(e){e.style.display=`block`,e.textContent=c(`mcp.installing`);try{let n=await t(`/api/mcp/install`,`POST`,{});if(!n){e.innerHTML=`${s.error} install failed`;return}e.innerHTML=Object.entries(n.results||{}).map(([e,t])=>`${t.status===`installed`?s.check:t.status===`skip`?s.skip:s.error} <b>${o(e)}</b>: ${o(t.status)}${t.bin?` ${s.arrowRight} `+o(t.bin):``}`).join(`<br>`),j()}catch(t){e.innerHTML=`${s.error} ${o(t.message)}`}}}var M=null,N=null,P=null,F=null,I=null,L=null,R=`local`,z=!1,Nt=[];function Pt(){if(M)return;M=document.createElement(`div`),M.id=`mcpModal`,M.className=`modal-overlay mcp-modal-overlay`,M.setAttribute(`role`,`presentation`),M.setAttribute(`aria-hidden`,`true`),M.addEventListener(`click`,e=>{e.target===M&&U()});let e=document.createElement(`div`);e.className=`modal-box mcp-modal-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-label`,`MCP Server Management`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header`;let n=document.createElement(`span`);n.textContent=`MCP Server Management`;let r=document.createElement(`button`);r.type=`button`,r.className=`help-trigger`,r.textContent=`?`,r.setAttribute(`aria-label`,`MCP help`),r.addEventListener(`click`,()=>Wt());let i=document.createElement(`button`);i.type=`button`,i.className=`btn-modal-close`,i.setAttribute(`aria-label`,`Close`),i.textContent=`x`,i.addEventListener(`click`,()=>U());let a=document.createElement(`div`);a.style.cssText=`display:flex;align-items:center;gap:6px`,a.append(n,r),t.append(a,i),N=document.createElement(`div`),N.style.cssText=`padding:16px;overflow-y:auto;flex:1`;let o=document.createElement(`div`);o.style.cssText=`display:flex;gap:4px;margin-bottom:12px`;let s=Ft(`Active Servers`,!0),c=Ft(`Add New`,!1),l=Ft(`Browse`,!1);Nt=[s,c,l],s.addEventListener(`click`,()=>B(`active`)),c.addEventListener(`click`,()=>B(`add`)),l.addEventListener(`click`,()=>B(`browse`)),o.append(s,c,l),P=document.createElement(`div`),L=document.createElement(`div`),L.style.display=`none`,L.innerHTML=`<p style="opacity:.5">Loading registry...</p>`,F=document.createElement(`div`),F.style.display=`none`,F.innerHTML=It(),F.querySelectorAll(`[data-mcp-subtab]`).forEach(e=>{e.addEventListener(`click`,()=>{R=e.dataset.mcpSubtab,Lt()})}),I=F.querySelector(`#mcpAddError`);let u=F.querySelector(`[data-action="mcpAddAndSync"]`);u&&u.addEventListener(`click`,()=>void Ut());let d=F.querySelector(`[data-action="closeMcpModal"]`);d&&d.addEventListener(`click`,()=>U()),N.append(o,P,L,F);let f=document.createElement(`div`);f.className=`modal-footer`;let p=document.createElement(`button`);p.type=`button`,p.className=`btn-save`,p.textContent=`Close`,p.addEventListener(`click`,()=>U()),f.append(p),e.append(t,N,f),M.append(e),document.body.append(M)}function Ft(e,t){let n=document.createElement(`button`);return n.type=`button`,n.className=`btn-clear btn-tab${t?` is-active`:``}`,n.textContent=e,n}function It(){return`
84
84
  <div style="display:flex;gap:4px;margin-bottom:8px">
85
85
  <button type="button" class="btn-clear btn-tab is-active" data-mcp-subtab="local">Local</button>
86
86
  <button type="button" class="btn-clear btn-tab" data-mcp-subtab="remote">Remote</button>
@@ -100,7 +100,7 @@ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O a
100
100
  <div style="display:flex;gap:8px;margin-top:12px;justify-content:flex-end">
101
101
  <button type="button" class="btn-clear" data-action="closeMcpModal">Cancel</button>
102
102
  <button type="button" class="btn-clear btn-save" data-action="mcpAddAndSync">Add & Sync</button>
103
- </div>`}function B(e){P&&(P.style.display=e===`active`?``:`none`),F&&(F.style.display=e===`add`?``:`none`),L&&(L.style.display=e===`browse`?``:`none`),Ft.forEach((t,n)=>{let r=[`active`,`add`,`browse`][n];t.classList.toggle(`is-active`,r===e)}),e===`active`&&Bt(),e===`add`&&Ht(),e===`browse`&&qt()}function zt(){let e=F?.querySelector(`#mcpAddLocal`),t=F?.querySelector(`#mcpAddRemote`);e&&(e.style.display=R===`local`?``:`none`),t&&(t.style.display=R===`remote`?``:`none`),F?.querySelectorAll(`[data-mcp-subtab]`).forEach(e=>{e.classList.toggle(`is-active`,e.dataset.mcpSubtab===R)})}function Bt(){if(!P||!A)return;let e=Object.entries(A.servers||{});if(!e.length){P.innerHTML=`<p style="opacity:.5">No active MCP servers.</p>`;return}P.innerHTML=e.map(([e,t])=>{let n=At(t),r=n?`<span class="mcp-active-tag">[${o(n)}]</span>`:``,i=t.command?o(t.command)+(t.args?.length?` `+t.args.map(e=>o(e)).join(` `):``):``,a=t.url?o(t.url):``,s=t.env?Object.keys(t.env):[],c=t.headers?Object.keys(t.headers):[],l=``;return a&&(l+=`<div class="mcp-active-detail">URL: ${a}</div>`),i&&(l+=`<div class="mcp-active-detail">Command: ${i}</div>`),s.length&&(l+=`<div class="mcp-active-detail">Env: ${s.map(e=>o(e)).join(`, `)}</div>`),c.length&&(l+=`<div class="mcp-active-detail">Headers: ${c.map(e=>o(e)).join(`, `)}</div>`),`<div class="mcp-active-row">
103
+ </div>`}function B(e){P&&(P.style.display=e===`active`?``:`none`),F&&(F.style.display=e===`add`?``:`none`),L&&(L.style.display=e===`browse`?``:`none`),Nt.forEach((t,n)=>{let r=[`active`,`add`,`browse`][n];t.classList.toggle(`is-active`,r===e)}),e===`active`&&Rt(),e===`add`&&Bt(),e===`browse`&&Gt()}function Lt(){let e=F?.querySelector(`#mcpAddLocal`),t=F?.querySelector(`#mcpAddRemote`);e&&(e.style.display=R===`local`?``:`none`),t&&(t.style.display=R===`remote`?``:`none`),F?.querySelectorAll(`[data-mcp-subtab]`).forEach(e=>{e.classList.toggle(`is-active`,e.dataset.mcpSubtab===R)})}function Rt(){if(!P||!A)return;let e=Object.entries(A.servers||{});if(!e.length){P.innerHTML=`<p style="opacity:.5">No active MCP servers.</p>`;return}P.innerHTML=e.map(([e,t])=>{let n=Ot(t),r=n?`<span class="mcp-active-tag">[${o(n)}]</span>`:``,i=t.command?o(t.command)+(t.args?.length?` `+t.args.map(e=>o(e)).join(` `):``):``,a=t.url?o(t.url):``,s=t.env?Object.keys(t.env):[],c=t.headers?Object.keys(t.headers):[],l=``;return a&&(l+=`<div class="mcp-active-detail">URL: ${a}</div>`),i&&(l+=`<div class="mcp-active-detail">Command: ${i}</div>`),s.length&&(l+=`<div class="mcp-active-detail">Env: ${s.map(e=>o(e)).join(`, `)}</div>`),c.length&&(l+=`<div class="mcp-active-detail">Headers: ${c.map(e=>o(e)).join(`, `)}</div>`),`<div class="mcp-active-row">
104
104
  <div style="flex:1">
105
105
  <div style="display:flex;align-items:center;gap:6px">
106
106
  <span class="mcp-active-name">${o(e)}</span>
@@ -109,7 +109,7 @@ import{a as e,i as t,n,r,t as i}from"./api-tVoG39dL.js";import{D as a,M as o,O a
109
109
  ${l}
110
110
  </div>
111
111
  <button type="button" class="btn-clear mcp-active-remove" data-mcp-remove="${o(e)}">Remove</button>
112
- </div>`}).join(``),P.querySelectorAll(`[data-mcp-remove]`).forEach(e=>{e.addEventListener(`click`,()=>{let t=e.dataset.mcpRemove;t&&Vt(t)})})}async function Vt(e){if(!A)return;let n={...A.servers};delete n[e];try{await t(`/api/mcp`,`PUT`,{...A,servers:n}),await t(`/api/mcp/sync`,`POST`,{}),await j(),Bt()}catch(e){V(e.message)}}function Ht(){for(let e of[`mcpAddName`,`mcpAddCommand`,`mcpAddArgs`,`mcpAddEnv`,`mcpAddRemoteName`,`mcpAddUrl`,`mcpAddHeaders`]){let t=(F??document).querySelector(`#${e}`);t&&(t.value=``)}Ut()}function V(e){I&&(I.style.display=`block`,I.textContent=e)}function Ut(){I&&(I.style.display=`none`)}function Wt(e){let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r).trim()]=e.slice(r+1))}return t}function H(e){return(F??document).querySelector(`#${e}`)?.value?.trim()??``}async function Gt(){if(!A)return;let e=R===`remote`,n,r;if(e){n=H(`mcpAddRemoteName`);let e=H(`mcpAddUrl`),t=H(`mcpAddHeaders`);if(!n){V(`Name is required.`);return}if(!e){V(`URL is required.`);return}r={url:e};let i=Wt(t);Object.keys(i).length>0&&(r.headers=i)}else{n=H(`mcpAddName`);let e=H(`mcpAddCommand`),t=H(`mcpAddArgs`),i=H(`mcpAddEnv`);if(!n){V(`Name is required.`);return}if(!e){V(`Command is required.`);return}r={command:e};let a=t.split(/,|\n/).map(e=>e.trim()).filter(Boolean);a.length>0&&(r.args=a);let o=Wt(i);Object.keys(o).length>0&&(r.env=o)}if(A.servers[n]){V(`Server "${n}" already exists.`);return}try{await t(`/api/mcp`,`PUT`,{...A,servers:{...A.servers,[n]:r}}),await t(`/api/mcp/sync`,`POST`,{}),await j(),U()}catch(e){V(e.message)}}function Kt(){let e=document.getElementById(`mcpHelpOverlay`);if(e){e.remove();return}let t=document.createElement(`div`);t.id=`mcpHelpOverlay`,t.className=`mcp-help-overlay`,t.addEventListener(`click`,e=>{e.target===t&&t.remove()});let n=document.createElement(`div`);n.className=`mcp-help-inner`,n.innerHTML=`
112
+ </div>`}).join(``),P.querySelectorAll(`[data-mcp-remove]`).forEach(e=>{e.addEventListener(`click`,()=>{let t=e.dataset.mcpRemove;t&&zt(t)})})}async function zt(e){if(!A)return;let n={...A.servers};delete n[e];try{await t(`/api/mcp`,`PUT`,{...A,servers:n}),await t(`/api/mcp/sync`,`POST`,{}),await j(),Rt()}catch(e){V(e.message)}}function Bt(){for(let e of[`mcpAddName`,`mcpAddCommand`,`mcpAddArgs`,`mcpAddEnv`,`mcpAddRemoteName`,`mcpAddUrl`,`mcpAddHeaders`]){let t=(F??document).querySelector(`#${e}`);t&&(t.value=``)}Vt()}function V(e){I&&(I.style.display=`block`,I.textContent=e)}function Vt(){I&&(I.style.display=`none`)}function Ht(e){let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r).trim()]=e.slice(r+1))}return t}function H(e){return(F??document).querySelector(`#${e}`)?.value?.trim()??``}async function Ut(){if(!A)return;let e=R===`remote`,n,r;if(e){n=H(`mcpAddRemoteName`);let e=H(`mcpAddUrl`),t=H(`mcpAddHeaders`);if(!n){V(`Name is required.`);return}if(!e){V(`URL is required.`);return}r={url:e};let i=Ht(t);Object.keys(i).length>0&&(r.headers=i)}else{n=H(`mcpAddName`);let e=H(`mcpAddCommand`),t=H(`mcpAddArgs`),i=H(`mcpAddEnv`);if(!n){V(`Name is required.`);return}if(!e){V(`Command is required.`);return}r={command:e};let a=t.split(/,|\n/).map(e=>e.trim()).filter(Boolean);a.length>0&&(r.args=a);let o=Ht(i);Object.keys(o).length>0&&(r.env=o)}if(A.servers[n]){V(`Server "${n}" already exists.`);return}try{await t(`/api/mcp`,`PUT`,{...A,servers:{...A.servers,[n]:r}}),await t(`/api/mcp/sync`,`POST`,{}),await j(),U()}catch(e){V(e.message)}}function Wt(){let e=document.getElementById(`mcpHelpOverlay`);if(e){e.remove();return}let t=document.createElement(`div`);t.id=`mcpHelpOverlay`,t.className=`mcp-help-overlay`,t.addEventListener(`click`,e=>{e.target===t&&t.remove()});let n=document.createElement(`div`);n.className=`mcp-help-inner`,n.innerHTML=`
113
113
  <h4>MCP Server</h4>
114
114
  <p>MCP (Model Context Protocol) adds capabilities to AI agents — like installing apps on a phone.</p>
115
115
 
@@ -137,7 +137,7 @@ URL: https://mcp.example.com/sse</pre>
137
137
  <div style="text-align:right;margin-top:12px">
138
138
  <button type="button" class="btn-save" id="mcpHelpClose">OK</button>
139
139
  </div>
140
- `,t.append(n),document.body.append(t),n.querySelector(`#mcpHelpClose`)?.addEventListener(`click`,()=>t.remove())}async function qt(){if(L){L.innerHTML=`<p style="opacity:.5">Loading registry...</p>`,A||await j();try{let e=await n(`/api/mcp/registry`);if(!e?.entries?.length&&!e?.builtins?.length){L.innerHTML=`<p style="opacity:.5">No MCP servers in registry.</p>`;return}let t=A?Object.keys(A.servers):[],r=``;r+=e.entries.map(e=>{let n=t.includes(e.id),r=e.tags?.slice(0,3).map(e=>`<span style="background:var(--border);padding:1px 4px;border-radius:3px;font-size:10px">${o(e)}</span>`).join(` `)||``;return`<div style="padding:10px 0;border-bottom:1px solid var(--border)">
140
+ `,t.append(n),document.body.append(t),n.querySelector(`#mcpHelpClose`)?.addEventListener(`click`,()=>t.remove())}async function Gt(){if(L){L.innerHTML=`<p style="opacity:.5">Loading registry...</p>`,A||await j();try{let e=await n(`/api/mcp/registry`);if(!e?.entries?.length&&!e?.builtins?.length){L.innerHTML=`<p style="opacity:.5">No MCP servers in registry.</p>`;return}let t=A?Object.keys(A.servers):[],r=``;r+=e.entries.map(e=>{let n=t.includes(e.id),r=e.tags?.slice(0,3).map(e=>`<span style="background:var(--border);padding:1px 4px;border-radius:3px;font-size:10px">${o(e)}</span>`).join(` `)||``;return`<div style="padding:10px 0;border-bottom:1px solid var(--border)">
141
141
  <div style="display:flex;align-items:center;gap:8px">
142
142
  <b>${o(e.name)}</b>
143
143
  <span style="opacity:.5;font-size:0.85em">[${o(e.type)}]</span>
@@ -158,5 +158,5 @@ URL: https://mcp.example.com/sse</pre>
158
158
  ${t?`<button type="button" class="btn-clear text-xs" style="color:var(--accent)" data-builtin-install="${o(e.id)}">+ Install standalone</button>`:``}
159
159
  </div>
160
160
  <p style="margin:2px 0;font-size:11px;opacity:.65">${o(e.description)}</p>
161
- </div>`}).join(``),r+=`</div>`),L.innerHTML=r,L.querySelectorAll(`[data-registry-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.registryInstall,r=e.entries.find(e=>e.id===n);r&&Jt(r,t)})}),L.querySelectorAll(`[data-builtin-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.builtinInstall,r=e.builtins?.find(e=>e.id===n);r?.standalone_config&&Jt({id:r.id,name:r.name,description:r.description,category:`harness`,type:`remote`,config:r.standalone_config,tags:[],url:r.source},t)})})}catch(e){L.innerHTML=`<p style="color:var(--color-error)">${o(e.message)}</p>`}}}async function Jt(e,n){if(A){n.disabled=!0,n.textContent=`Installing...`;try{let r=e.config;await t(`/api/mcp`,`PUT`,{...A,servers:{...A.servers,[e.id]:r}}),await t(`/api/mcp/sync`,`POST`,{}),await j(),n.textContent=`Installed`,n.style.color=`var(--success)`}catch(e){n.textContent=`Error`,n.disabled=!1,console.error(`[mcp-registry] install failed:`,e.message)}}}function Yt(){It(),M?.classList.add(`open`),M?.setAttribute(`aria-hidden`,`false`),z=!0,B(`active`)}function U(){z&&(M?.classList.remove(`open`),M?.setAttribute(`aria-hidden`,`true`),z=!1,Ht(),document.getElementById(`mcpHelpOverlay`)?.remove())}var Xt=!1;function Zt(){Xt||(Xt=!0,document.addEventListener(`keydown`,e=>{if(document.getElementById(`mcpHelpOverlay`)&&e.key===`Escape`){e.preventDefault(),document.getElementById(`mcpHelpOverlay`)?.remove();return}z&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),U())},!0))}var Qt=/^\/(?:Users|home)\/[^/]+/,$t=32;function en(e){return e.replace(Qt,`~`)}function tn(e){if(e.length<=$t)return e;let t=e.split(`/`);return t.length<=3?e:`${t.slice(0,2).join(`/`)}/…/${t[t.length-1]}`}function nn(e){let t=(e||[]).filter(e=>typeof e==`string`&&e.trim());return t.length===0?null:{text:`${tn(en(t[0]))}${t.length>1?` +${t.length-1}`:``}`,title:t.join(`
162
- `)}}function rn(){return document.getElementById(`headerGitStatus`)}function an(){let e=rn();e&&(e.hidden=!0,e.textContent=``,e.removeAttribute(`title`),e.removeAttribute(`aria-label`))}function on(e){if(!e?.available)return null;let t=e.branch||e.head;if(!t)return null;let n=[`/`,`⑂ ${t}`];e.trackedChangedCount>0&&n.push(`*${e.trackedChangedCount}`),e.untrackedCount>0&&n.push(`?${e.untrackedCount}`);let r=[`Git: ${e.branch?`branch ${e.branch}`:`detached ${e.head}`}`];return e.trackedChangedCount>0&&r.push(`${e.trackedChangedCount} tracked changes`),e.untrackedCount>0&&r.push(`${e.untrackedCount} untracked files`),{text:n.join(` `),title:r.join(`, `)}}function sn(e){let t=rn();if(!t)return;let n=on(e);if(!n){an();return}t.hidden=!1,t.textContent=n.text,t.title=n.title,t.setAttribute(`aria-label`,n.title)}async function cn(){sn(await n(`/api/project/git-summary`))}function ln(e){(Array.isArray(e.changedKeys)?e.changedKeys:[]).includes(`projectDirs`)&&cn()}var W=null;function un(e){return!e||typeof e!=`object`?null:`settings`in e&&e.settings?e.settings:`data`in e&&e.data?e.data:e}async function dn(t){if(t.runtimeDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`신규 설치의 기본 런타임이 Codex App으로 변경되었습니다. 지금 Codex App을 사용하시겠습니까?`)?`accept`:`keep`;try{let r=await e(),a=await fetch(`${i}/api/settings/runtime-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(ce(a.status))return un(o)??t;window.alert(`런타임 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`런타임 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}async function fn(t){if(t.multiSessionDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`이제 대화 세션을 여러 개 열 수 있습니다. 켜면 동시 실행도 2로 올라가서, 두 번째 세션이 첫 번째가 끝나기를 기다리지 않습니다. 지금 켤까요?`)?`accept`:`keep`;try{let r=await e(),a=await fetch(`${i}/api/settings/multi-session-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(ce(a.status))return un(o)??t;window.alert(`세션 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`세션 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}function pn(e){let t=document.getElementById(`headerCli`);if(!t)return;let n=ie(e),r=G(e);t.innerHTML=n?`${n} ${o(r)}`:o(r)}function mn(e){let t=document.getElementById(`headerProject`);if(!t)return;hn(t),t.hidden=!1;let n=nn(e);if(!n){t.classList.add(`is-empty`),t.textContent=`Project: not set`,t.title=`Click to choose the project root folder`;return}t.classList.remove(`is-empty`),t.textContent=`Project ${n.text}`,t.title=`${n.title}\n(click to change)`}function hn(e){if(e.dataset.pickerBound)return;e.dataset.pickerBound=`1`,e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`);let n=async()=>{if(e.classList.contains(`is-picking`))return;e.classList.add(`is-picking`);let n=e.textContent;e.textContent=`Choosing folder…`;try{let n=await t(`/api/project/pick`,`POST`,{});if(n&&!n.cancelled&&`projectDirs`in n){e.classList.remove(`is-picking`),mn(n.projectDirs);return}}catch{}e.classList.remove(`is-picking`),e.textContent=n};e.addEventListener(`click`,()=>{n()}),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())})}function gn(e){typeof e.cli==`string`&&e.cli&&pn(e.cli),`projectDirs`in e&&mn(e.projectDirs),ln(e)}function G(e){return d(e)?.label||ae(e)||e}function _n(e){let t=e.finally(()=>{W===t&&(W=null)});return W=t,t}async function vn(){let e=W;e&&await e}function yn(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function K(e){return document.getElementById(`model`+yn(e))}function bn(e){return document.getElementById(`customModel`+yn(e))}function q(e){return document.getElementById(`effort`+yn(e))}function J(e,t,{includeCustom:n=!1,includeDefault:r=!1,selected:i=``}={}){if(!e)return;let a=r?`<option value="default">default</option>`:``,s=n?`<option value="__custom__">${c(`model.customOption`)}</option>`:``;e.innerHTML=a+(t||[]).map(e=>`<option value="${o(e)}">${o(e)}</option>`).join(``)+s,i&&Array.from(e.options).some(e=>e.value===i)&&(e.value=i)}function Y(e,t){if(!e||!t||Array.from(e.options).some(e=>e.value===t))return;let n=document.createElement(`option`);n.value=t,n.textContent=t;let r=e.querySelector(`option[value="__custom__"]`);r?e.insertBefore(n,r):e.appendChild(n)}function xn(e=null){let t=f(),n=document.getElementById(`selCli`);if(n){let r=e?.cli||n.value||t[0]||`claude`,i=e=>p.includes(e),a=!i(r)&&t.includes(r),s=n.dataset.expanded===`1`,l=t.filter(i),u=t.filter(e=>!i(e)),f=l.length===0||a||s,m=l.map(e=>{let t=d(e)?.label||e;return`<option value="${o(e)}">${o(t)}</option>`}).join(``);u.length>0&&(f?(m+=`<option disabled>──────</option>`,m+=u.map(e=>{let t=d(e)?.label||e;return`<option value="${o(e)}">${o(t)}</option>`}).join(``)):m+=`<option value="__show_more__">${c(`cli.showMore`)}</option>`),n.innerHTML=m,Array.from(n.options).some(e=>e.value===r)&&(n.value=r)}let r=document.getElementById(`flushCli`);if(r){let n=e?.memory?.cli||r.value||``;r.innerHTML=`<option value="">(active CLI)</option>`+t.map(e=>`<option value="${o(e)}">${o(G(e))}</option>`).join(``),Array.from(r.options).some(e=>e.value===n)&&(r.value=n)}}function X(e,t){return(t||``).trim()}function Sn(e,t,n,r){let i=(t||``).trim();if(r){let t=e?.effortsByModelByProvider?.[r]?.[i];if(t)return t}return e?.effortsByModel?.[i]||n||e?.efforts||[]}function Cn(e,t,n){let r=(t||``).trim();return(n?e?.defaultEffortByModelByProvider?.[n]?.[r]:void 0)??e?.defaultEffortByModel?.[r]??``}function wn(e=null){for(let t of f()){let n=d(t),r=t!==`pi`&&n?.providers?.length?Q(t):``,i=K(t);if(i)if(n?.modelNote)i.innerHTML=`<option value="">${o(n.modelNote)}</option>`,i.title=n.modelNote,i.disabled=!0;else{let a=X(t,e?.perCli?.[t]?.model||i.value||``),o=t===`pi`&&e?.perCli?.pi?.provider||``,s=t===`pi`&&o?ee(e?.pi,o):[];J(i,t===`pi`&&s.length?s:r?n?.modelsByProvider?.[r]||h[t]||[]:h[t]||[],{includeCustom:!0,selected:a}),a&&!Array.from(i.options).some(e=>e.value===a)&&(Y(i,a),i.value=a),i.disabled=!1}let a=q(t);if(a){let i=r?n?.effortsByProvider?.[r]||[]:null,s=X(t,e?.perCli?.[t]?.model||K(t)?.value||``),c=Sn(n,s,i,r||void 0),l=[``].concat(c),u=e?.perCli?.[t]?.effort??a.value??``,d=!u||c.includes(u)?u:Cn(n,s,r||void 0),f=[...new Set(l)],p=f.length===1&&!f[0]&&n?.effortNote?n.effortNote:`— none`;a.innerHTML=f.map(e=>e?`<option value="${o(e)}">${o(e)}</option>`:`<option value="">${o(p)}</option>`).join(``),n?.effortNote&&(a.title=n.effortNote),a.disabled=f.length===1&&!f[0],Array.from(a.options).some(e=>e.value===d)&&(a.value=d)}}}function Tn(){return document.getElementById(`selEffort`)?.value||``}function Z(e,t=``,n){let r=document.getElementById(`selEffort`);if(!r)return;let i=d(e),a=e!==`pi`&&i?.providers?.length?Q(e):``,s=a?i?.effortsByProvider?.[a]||[]:null,c=X(e,n??document.getElementById(`selModel`)?.value??``),l=Sn(i,c,s,a||void 0);if(l.length===0){let e=i?.effortNote||`— none`;r.innerHTML=`<option value="">${o(e)}</option>`,r.title=e,r.disabled=!0;return}let u=[``].concat(l);r.innerHTML=[...new Set(u)].map(e=>e?`<option value="${o(e)}">${o(e)}</option>`:`<option value="">— none</option>`).join(``),r.disabled=!1,r.title=i?.effortNote||``;let f=!t||l.includes(t)?t:Cn(i,c,a||void 0);Array.from(r.options).some(e=>e.value===f)&&(r.value=f)}function En(e,t,n){return e?(e.innerHTML=n.map(e=>`<option value="${o(e)}">${o(ae(e)||e)}</option>`).join(``),Array.from(e.options).some(e=>e.value===t)?e.value=t:e.options.length>0&&(e.value=e.options[0]?.value||t),e.value||t):t}function Q(e){let t=document.getElementById(`selCliProvider`),n=document.getElementById(`provider${e.charAt(0).toUpperCase()+e.slice(1).replace(/-./g,e=>e[1].toUpperCase())}`),r=d(e);return t?.value||n?.value||r?.defaultProvider||``}function Dn(e,t){let n=document.getElementById(`cliProviderWrap`),r=document.getElementById(`selCliProvider`),i=document.getElementById(`cliProviderLabel`),a=d(t);if(!(t!==`pi`&&(a?.providers?.length??0)>0))return n&&(n.style.display=`none`),a?.defaultProvider||``;i&&(i.textContent=`Provider`);let o=En(r,e?.perCli?.[t]?.provider||r?.value||a?.defaultProvider||``,a.providers);return n&&(n.style.display=``),o}async function On(){await m();let e=await n(`/api/settings`);if(!e)return;e=await dn(e),e=await fn(e),u(e.locale??``),xn(e),te(e.pi),re(e.pi,e.perCli?.pi?.provider),e.perCli?.pi?.provider&&ne(e.perCli.pi.provider,e.pi),Dn(e,e.cli||``),wn(e);let t=document.getElementById(`selCli`);t&&Array.from(t.options).some(t=>t.value===e.cli)&&(t.value=e.cli,t.dataset.prev=e.cli);let r=document.getElementById(`inpCwd`);r&&(r.textContent=e.workingDir);let i=document.getElementById(`headerCli`);if(i){let t=ie(e.cli),n=G(e.cli);i.innerHTML=t?`${t} ${o(n)}`:o(n)}if(mn(e.projectDirs),await cn(),An(e.permissions,!1),e.perCli)for(let[t,n]of Object.entries(e.perCli)){let e=K(t),r=q(t);if(e&&n.model){let r=X(t,n.model);Y(e,r),e.value=r}if(r&&(r.value=n.effort||``),t===`codex`&&n.fastMode!==void 0&&(document.getElementById(`codexFastOn`)?.classList.toggle(`active`,n.fastMode),document.getElementById(`codexFastOff`)?.classList.toggle(`active`,!n.fastMode)),t===`codex`){let e=!!n.contextWindow;document.getElementById(`codexCtxOn`)?.classList.toggle(`active`,e),document.getElementById(`codexCtxOff`)?.classList.toggle(`active`,!e);let t=document.getElementById(`codexCtxValues`);t&&(t.style.display=e?``:`none`);let r=document.getElementById(`codexCtxWindow`),i=document.getElementById(`codexCtxCompact`);r&&n.contextWindowSize&&(r.value=String(n.contextWindowSize)),i&&n.contextCompactLimit&&(i.value=String(n.contextCompactLimit))}if(t===`claude`){let e=!!(n.model&&String(n.model).endsWith(`[1m]`));document.getElementById(`claude1mOn`)?.classList.toggle(`active`,e),document.getElementById(`claude1mOff`)?.classList.toggle(`active`,!e)}}In(!1);let a=e.activeOverrides?.[e.cli]||{},s=e.perCli?.[e.cli]||{},c=a.model||s.model,l=a.effort??s.effort??``,d=document.getElementById(`selModel`);if(c&&d){let t=X(e.cli,c);t&&!Array.from(d.options).some(e=>e.value===t)&&Y(d,t),d.value=t}Z(e.cli,l),it(e),ut(e),Tt(e),Dt(e),Ot(e),j(),le(e.stt||{})}async function kn(){let e=document.getElementById(`selCli`)?.value||`claude`,n={cli:e},r=d(e);return e!==`pi`&&r?.providers?.length&&(n.perCli={[e]:{provider:Q(e)}}),_n((async()=>{let r=await t(`/api/settings`,`PUT`,n);if(!r){await On();return}let i=r.cli||e,a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===i)&&(a.value=i,a.dataset.prev=i),pn(i),l([`instances`],`active-cli-changed`)})())}function An(e,t=!0){t&&r(`/api/settings`,`PUT`,{permissions:`auto`})}function jn(e){let t=K(e);return t?t.value===`__custom__`?bn(e)?.value?.trim()||t.options[0]?.value||`default`:t.value:`default`}function Mn(e,t){let n=bn(e);n&&(t.value===`__custom__`?(n.style.display=`block`,n.focus()):(n.style.display=`none`,e===`claude`&&Nn(t.value),$()))}function Nn(e){let t=!!(e&&e.endsWith(`[1m]`));document.getElementById(`claude1mOn`)?.classList.toggle(`active`,t),document.getElementById(`claude1mOff`)?.classList.toggle(`active`,!t)}function Pn(e,t){let n=t.value.trim();if(!n)return;let r=K(e);r&&(Y(r,n),r.value=n,t.style.display=`none`,e===`claude`&&Nn(n),$())}function Fn(){let e=document.getElementById(`selCli`)?.value||``,t=Q(e),n=document.getElementById(`selCliProvider`);n&&Array.from(n.options).some(e=>e.value===t)&&(n.value=t),wn(null),d(e)?.providers?.length&&In(!1),$()}async function $(){let e={};for(let t of f()){if(!K(t))continue;let n=q(t),r={model:jn(t),effort:n?n.value:``},i=d(t);if(t!==`pi`&&i?.providers?.length&&(r.provider=Q(t)),t===`pi`){let e=document.getElementById(`providerPi`);e?.value&&(r.provider=e.value)}if(t===`codex`){r.fastMode=document.getElementById(`codexFastOn`)?.classList.contains(`active`)??!1,r.contextWindow=document.getElementById(`codexCtxOn`)?.classList.contains(`active`)??!1;let e=document.getElementById(`codexCtxWindow`),t=document.getElementById(`codexCtxCompact`);r.contextWindowSize=parseInt(e?.value||`1000000`,10),r.contextCompactLimit=parseInt(t?.value||`900000`,10)}e[t]=r}await t(`/api/settings`,`PUT`,{perCli:e})}function In(e=!0){let t=document.getElementById(`selCli`);if(!t)return;if(t.value===`__show_more__`){let e=t.dataset.prev||f()[0]||`claude`;t.dataset.expanded=`1`,xn(null),Array.from(t.options).some(t=>t.value===e)&&(t.value=e);try{t.showPicker()}catch{}return}t.dataset.prev=t.value;let r=t.value||`claude`,i=Dn(null,r),a=d(r),s=i&&a?.modelsByProvider?.[i]?a.modelsByProvider[i]:h[r]||[],l=document.getElementById(`selModel`);a?.modelNote&&l?(l.innerHTML=`<option value="">${o(a.modelNote)}</option>`,l.title=a.modelNote,l.disabled=!0):(J(l,s,{includeCustom:!0,includeDefault:!0}),l&&(l.disabled=!1,l.title=``)),pn(r),Z(r);let u=document.getElementById(`selModelCustom`);u&&u.remove();let p=document.createElement(`input`);if(p.type=`text`,p.id=`selModelCustom`,p.className=`custom-model-input`,p.placeholder=c(`model.placeholder`),p.style.display=`none`,p.onchange=function(){let e=this.value.trim();!e||!l||(Y(l,e),l.value=e,this.style.display=`none`,Z(r,Tn(),e),Ln())},!l){e&&kn();return}l.parentElement?.appendChild(p),l.onchange=function(){this.value===`__custom__`?(p.style.display=`block`,p.focus()):(p.style.display=`none`,Z(r,Tn(),this.value),Ln())},n(`/api/settings`).then(e=>{if(!e)return;let t=e.activeOverrides?.[r]||{},n=e.perCli?.[r]||{},i=t.model||n.model,a=t.effort??n.effort??``;if(i&&l){let t=d(r);if(r!==`pi`&&t?.providers?.length&&(e.perCli?.[r]?.provider||t.defaultProvider||``)!==Q(r)){Z(r,a);return}let n=X(r,i);Y(l,n),l.value=n}Z(r,a)}),e&&kn()}async function Ln(){let e=document.getElementById(`selCli`)?.value||`claude`,n=document.getElementById(`selModel`)?.value||`default`;n===`__custom__`&&(n=document.getElementById(`selModelCustom`)?.value?.trim()||`default`);let r=document.getElementById(`selEffort`),i={};i[e]={model:n},r&&!r.disabled&&(i[e].effort=r.value||``);let a={activeOverrides:i},o=d(e);e!==`pi`&&o?.providers?.length&&(a.perCli={[e]:{provider:Q(e)}}),await t(`/api/settings`,`PUT`,a)&&l([`instances`],`active-cli-changed`)}function Rn(){let e=h[document.getElementById(`flushCli`)?.value||document.getElementById(`selCli`)?.value||`claude`]||[];J(document.getElementById(`flushModel`),e,{includeDefault:!0}),Vn(),Bn()}async function zn(){let e=await n(`/api/memory-files`);if(!e)return;let t=document.getElementById(`flushCli`),r=document.getElementById(`flushModel`);t&&e.cli&&(t.value=e.cli),J(r,h[e.cli||document.getElementById(`selCli`)?.value||`claude`]||[],{includeDefault:!0}),r&&e.model&&(Y(r,e.model),r.value=e.model),Vn()}async function Bn(){await t(`/api/memory-files/settings`,`PUT`,{cli:document.getElementById(`flushCli`)?.value||``,model:document.getElementById(`flushModel`)?.value||``})}function Vn(){let e=document.getElementById(`flushAgentBadge`);if(!e)return;let t=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``,r=t||document.getElementById(`selCli`)?.value||``,i=[];r&&i.push(t?G(r):`${G(r)}*`),n&&n!==`default`&&i.push(n),e.textContent=i.length?`(${i.join(` / `)})`:``}export{at as A,le as B,gt as C,xt as D,St as E,et as F,oe as H,nt as I,tt as L,ct as M,st as N,Ct as O,lt as P,rt as R,Et as S,bt as T,se as V,j as _,On as a,Ot as b,Fn as c,$ as d,An as f,Pt as g,Zt as h,zn as i,ot as j,wt as k,gn as l,vn as m,jn as n,In as o,kn as p,Mn as r,Rn as s,Pn as t,Ln as u,Yt as v,yt as w,kt as x,Nt as y,Fe as z};
161
+ </div>`}).join(``),r+=`</div>`),L.innerHTML=r,L.querySelectorAll(`[data-registry-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.registryInstall,r=e.entries.find(e=>e.id===n);r&&Kt(r,t)})}),L.querySelectorAll(`[data-builtin-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.builtinInstall,r=e.builtins?.find(e=>e.id===n);r?.standalone_config&&Kt({id:r.id,name:r.name,description:r.description,category:`harness`,type:`remote`,config:r.standalone_config,tags:[],url:r.source},t)})})}catch(e){L.innerHTML=`<p style="color:var(--color-error)">${o(e.message)}</p>`}}}async function Kt(e,n){if(A){n.disabled=!0,n.textContent=`Installing...`;try{let r=e.config;await t(`/api/mcp`,`PUT`,{...A,servers:{...A.servers,[e.id]:r}}),await t(`/api/mcp/sync`,`POST`,{}),await j(),n.textContent=`Installed`,n.style.color=`var(--success)`}catch(e){n.textContent=`Error`,n.disabled=!1,console.error(`[mcp-registry] install failed:`,e.message)}}}function qt(){Pt(),M?.classList.add(`open`),M?.setAttribute(`aria-hidden`,`false`),z=!0,B(`active`)}function U(){z&&(M?.classList.remove(`open`),M?.setAttribute(`aria-hidden`,`true`),z=!1,Bt(),document.getElementById(`mcpHelpOverlay`)?.remove())}var Jt=!1;function Yt(){Jt||(Jt=!0,document.addEventListener(`keydown`,e=>{if(document.getElementById(`mcpHelpOverlay`)&&e.key===`Escape`){e.preventDefault(),document.getElementById(`mcpHelpOverlay`)?.remove();return}z&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),U())},!0))}var Xt=/^\/(?:Users|home)\/[^/]+/,Zt=32;function Qt(e){return e.replace(Xt,`~`)}function $t(e){if(e.length<=Zt)return e;let t=e.split(`/`);return t.length<=3?e:`${t.slice(0,2).join(`/`)}/…/${t[t.length-1]}`}function en(e){let t=(e||[]).filter(e=>typeof e==`string`&&e.trim());return t.length===0?null:{text:`${$t(Qt(t[0]))}${t.length>1?` +${t.length-1}`:``}`,title:t.join(`
162
+ `)}}function tn(){return document.getElementById(`headerGitStatus`)}function nn(){let e=tn();e&&(e.hidden=!0,e.textContent=``,e.removeAttribute(`title`),e.removeAttribute(`aria-label`))}function rn(e){if(!e?.available)return null;let t=e.branch||e.head;if(!t)return null;let n=[`/`,`⑂ ${t}`];e.trackedChangedCount>0&&n.push(`*${e.trackedChangedCount}`),e.untrackedCount>0&&n.push(`?${e.untrackedCount}`);let r=[`Git: ${e.branch?`branch ${e.branch}`:`detached ${e.head}`}`];return e.trackedChangedCount>0&&r.push(`${e.trackedChangedCount} tracked changes`),e.untrackedCount>0&&r.push(`${e.untrackedCount} untracked files`),{text:n.join(` `),title:r.join(`, `)}}function an(e){let t=tn();if(!t)return;let n=rn(e);if(!n){nn();return}t.hidden=!1,t.textContent=n.text,t.title=n.title,t.setAttribute(`aria-label`,n.title)}async function on(){an(await n(`/api/project/git-summary`))}function sn(e){(Array.isArray(e.changedKeys)?e.changedKeys:[]).includes(`projectDirs`)&&on()}var W=null;function cn(e){return!e||typeof e!=`object`?null:`settings`in e&&e.settings?e.settings:`data`in e&&e.data?e.data:e}async function ln(t){if(t.runtimeDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`신규 설치의 기본 런타임이 Codex App으로 변경되었습니다. 지금 Codex App을 사용하시겠습니까?`)?`accept`:`keep`;try{let r=await e(),a=await fetch(`${i}/api/settings/runtime-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(ee(a.status))return cn(o)??t;window.alert(`런타임 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`런타임 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}async function un(t){if(t.multiSessionDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`이제 대화 세션을 여러 개 열 수 있습니다. 켜면 동시 실행도 2로 올라가서, 두 번째 세션이 첫 번째가 끝나기를 기다리지 않습니다. 지금 켤까요?`)?`accept`:`keep`;try{let r=await e(),a=await fetch(`${i}/api/settings/multi-session-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(ee(a.status))return cn(o)??t;window.alert(`세션 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`세션 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}function dn(e){let t=document.getElementById(`headerCli`);if(!t)return;let n=ae(e),r=G(e);t.innerHTML=n?`${n} ${o(r)}`:o(r)}function fn(e){let t=document.getElementById(`headerProject`);if(!t)return;pn(t),t.hidden=!1;let n=en(e);if(!n){t.classList.add(`is-empty`),t.textContent=`Project: not set`,t.title=`Click to choose the project root folder`;return}t.classList.remove(`is-empty`),t.textContent=`Project ${n.text}`,t.title=`${n.title}\n(click to change)`}function pn(e){if(e.dataset.pickerBound)return;e.dataset.pickerBound=`1`,e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`);let n=async()=>{if(e.classList.contains(`is-picking`))return;e.classList.add(`is-picking`);let n=e.textContent;e.textContent=`Choosing folder…`;try{let n=await t(`/api/project/pick`,`POST`,{});if(n&&!n.cancelled&&`projectDirs`in n){e.classList.remove(`is-picking`),fn(n.projectDirs);return}}catch{}e.classList.remove(`is-picking`),e.textContent=n};e.addEventListener(`click`,()=>{n()}),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())})}function mn(e){typeof e.cli==`string`&&e.cli&&dn(e.cli),`projectDirs`in e&&fn(e.projectDirs),sn(e)}function G(e){return d(e)?.label||oe(e)||e}function hn(e){let t=e.finally(()=>{W===t&&(W=null)});return W=t,t}async function gn(){let e=W;e&&await e}function _n(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function K(e){return document.getElementById(`model`+_n(e))}function vn(e){return document.getElementById(`customModel`+_n(e))}function yn(e){return document.getElementById(`effort`+_n(e))}function q(e,t,{includeCustom:n=!1,includeDefault:r=!1,selected:i=``}={}){if(!e)return;let a=r?`<option value="default">default</option>`:``,s=n?`<option value="__custom__">${c(`model.customOption`)}</option>`:``;e.innerHTML=a+(t||[]).map(e=>`<option value="${o(e)}">${o(e)}</option>`).join(``)+s,i&&Array.from(e.options).some(e=>e.value===i)&&(e.value=i)}function J(e,t){if(!e||!t||Array.from(e.options).some(e=>e.value===t))return;let n=document.createElement(`option`);n.value=t,n.textContent=t;let r=e.querySelector(`option[value="__custom__"]`);r?e.insertBefore(n,r):e.appendChild(n)}function bn(e=null){let t=f(),n=document.getElementById(`selCli`);if(n){let r=e?.cli||n.value||t[0]||`claude`,i=e=>p.includes(e),a=!i(r)&&t.includes(r),s=n.dataset.expanded===`1`,l=t.filter(i),u=t.filter(e=>!i(e)),f=l.length===0||a||s,m=l.map(e=>{let t=d(e)?.label||e;return`<option value="${o(e)}">${o(t)}</option>`}).join(``);u.length>0&&(f?(m+=`<option disabled>──────</option>`,m+=u.map(e=>{let t=d(e)?.label||e;return`<option value="${o(e)}">${o(t)}</option>`}).join(``)):m+=`<option value="__show_more__">${c(`cli.showMore`)}</option>`),n.innerHTML=m,Array.from(n.options).some(e=>e.value===r)&&(n.value=r)}let r=document.getElementById(`flushCli`);if(r){let n=e?.memory?.cli||r.value||``;r.innerHTML=`<option value="">(active CLI)</option>`+t.map(e=>`<option value="${o(e)}">${o(G(e))}</option>`).join(``),Array.from(r.options).some(e=>e.value===n)&&(r.value=n)}}function Y(e,t){return(t||``).trim()}function xn(e,t,n,r){let i=(t||``).trim();if(r){let t=e?.effortsByModelByProvider?.[r]?.[i];if(t)return t}return e?.effortsByModel?.[i]||n||e?.efforts||[]}function Sn(e,t,n){let r=(t||``).trim();return(n?e?.defaultEffortByModelByProvider?.[n]?.[r]:void 0)??e?.defaultEffortByModel?.[r]??``}function Cn(e=null){for(let t of f()){let n=d(t),r=t!==`pi`&&n?.providers?.length?Z(t):``,i=K(t);if(i)if(n?.modelNote)i.innerHTML=`<option value="">${o(n.modelNote)}</option>`,i.title=n.modelNote,i.disabled=!0;else{let a=Y(t,e?.perCli?.[t]?.model||i.value||``),o=t===`pi`&&e?.perCli?.pi?.provider||``,s=t===`pi`&&o?te(e?.pi,o):[];q(i,t===`pi`&&s.length?s:r?n?.modelsByProvider?.[r]||h[t]||[]:h[t]||[],{includeCustom:!0,selected:a}),a&&!Array.from(i.options).some(e=>e.value===a)&&(J(i,a),i.value=a),i.disabled=!1}let a=yn(t);if(a){let i=r?n?.effortsByProvider?.[r]||[]:null,s=Y(t,e?.perCli?.[t]?.model||K(t)?.value||``),c=xn(n,s,i,r||void 0),l=[``].concat(c),u=e?.perCli?.[t]?.effort??a.value??``,d=!u||c.includes(u)?u:Sn(n,s,r||void 0),f=[...new Set(l)],p=f.length===1&&!f[0]&&n?.effortNote?n.effortNote:`— none`;a.innerHTML=f.map(e=>e?`<option value="${o(e)}">${o(e)}</option>`:`<option value="">${o(p)}</option>`).join(``),n?.effortNote&&(a.title=n.effortNote),a.disabled=f.length===1&&!f[0],Array.from(a.options).some(e=>e.value===d)&&(a.value=d)}}}function wn(){return document.getElementById(`selEffort`)?.value||``}function X(e,t=``,n){let r=document.getElementById(`selEffort`);if(!r)return;let i=d(e),a=e!==`pi`&&i?.providers?.length?Z(e):``,s=a?i?.effortsByProvider?.[a]||[]:null,c=Y(e,n??document.getElementById(`selModel`)?.value??``),l=xn(i,c,s,a||void 0);if(l.length===0){let e=i?.effortNote||`— none`;r.innerHTML=`<option value="">${o(e)}</option>`,r.title=e,r.disabled=!0;return}let u=[``].concat(l);r.innerHTML=[...new Set(u)].map(e=>e?`<option value="${o(e)}">${o(e)}</option>`:`<option value="">— none</option>`).join(``),r.disabled=!1,r.title=i?.effortNote||``;let f=!t||l.includes(t)?t:Sn(i,c,a||void 0);Array.from(r.options).some(e=>e.value===f)&&(r.value=f)}function Tn(e,t,n){return e?(e.innerHTML=n.map(e=>`<option value="${o(e)}">${o(oe(e)||e)}</option>`).join(``),Array.from(e.options).some(e=>e.value===t)?e.value=t:e.options.length>0&&(e.value=e.options[0]?.value||t),e.value||t):t}function Z(e){let t=document.getElementById(`selCliProvider`),n=document.getElementById(`provider${e.charAt(0).toUpperCase()+e.slice(1).replace(/-./g,e=>e[1].toUpperCase())}`),r=d(e);return t?.value||n?.value||r?.defaultProvider||``}function En(e,t){let n=document.getElementById(`cliProviderWrap`),r=document.getElementById(`selCliProvider`),i=document.getElementById(`cliProviderLabel`),a=d(t);if(!(t!==`pi`&&(a?.providers?.length??0)>0))return n&&(n.style.display=`none`),a?.defaultProvider||``;i&&(i.textContent=`Provider`);let o=Tn(r,e?.perCli?.[t]?.provider||r?.value||a?.defaultProvider||``,a.providers);return n&&(n.style.display=``),o}async function Dn(){await m();let e=await n(`/api/settings`);if(!e)return;e=await ln(e),e=await un(e),u(e.locale??``),bn(e),ne(e.pi),ie(e.pi,e.perCli?.pi?.provider),e.perCli?.pi?.provider&&re(e.perCli.pi.provider,e.pi),En(e,e.cli||``),Cn(e);let t=document.getElementById(`selCli`);t&&Array.from(t.options).some(t=>t.value===e.cli)&&(t.value=e.cli,t.dataset.prev=e.cli);let r=document.getElementById(`inpCwd`);r&&(r.textContent=e.workingDir);let i=document.getElementById(`headerCli`);if(i){let t=ae(e.cli),n=G(e.cli);i.innerHTML=t?`${t} ${o(n)}`:o(n)}if(fn(e.projectDirs),await on(),kn(e.permissions,!1),e.perCli)for(let[t,n]of Object.entries(e.perCli)){let e=K(t),r=yn(t);if(e&&n.model){let r=Y(t,n.model);J(e,r),e.value=r}if(r&&(r.value=n.effort||``),t===`codex`&&n.fastMode!==void 0&&(document.getElementById(`codexFastOn`)?.classList.toggle(`active`,n.fastMode),document.getElementById(`codexFastOff`)?.classList.toggle(`active`,!n.fastMode)),t===`codex`){let e=!!n.contextWindow;document.getElementById(`codexCtxOn`)?.classList.toggle(`active`,e),document.getElementById(`codexCtxOff`)?.classList.toggle(`active`,!e);let t=document.getElementById(`codexCtxValues`);t&&(t.style.display=e?``:`none`);let r=document.getElementById(`codexCtxWindow`),i=document.getElementById(`codexCtxCompact`);r&&n.contextWindowSize&&(r.value=String(n.contextWindowSize)),i&&n.contextCompactLimit&&(i.value=String(n.contextCompactLimit))}if(t===`claude`){let e=!!(n.model&&String(n.model).endsWith(`[1m]`));document.getElementById(`claude1mOn`)?.classList.toggle(`active`,e),document.getElementById(`claude1mOff`)?.classList.toggle(`active`,!e)}}Fn(!1);let a=e.activeOverrides?.[e.cli]||{},s=e.perCli?.[e.cli]||{},c=a.model||s.model,l=a.effort??s.effort??``,d=document.getElementById(`selModel`);if(c&&d){let t=Y(e.cli,c);t&&!Array.from(d.options).some(e=>e.value===t)&&J(d,t),d.value=t}X(e.cli,l),nt(e),ct(e),Ct(e),Tt(e),Et(e),j(),se(e.stt||{})}async function On(){let e=document.getElementById(`selCli`)?.value||`claude`,n={cli:e},r=d(e);return e!==`pi`&&r?.providers?.length&&(n.perCli={[e]:{provider:Z(e)}}),hn((async()=>{let r=await t(`/api/settings`,`PUT`,n);if(!r){await Dn();return}let i=r.cli||e,a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===i)&&(a.value=i,a.dataset.prev=i),dn(i),l([`instances`],`active-cli-changed`)})())}function kn(e,t=!0){t&&r(`/api/settings`,`PUT`,{permissions:`auto`})}function An(e){let t=K(e);return t?t.value===`__custom__`?vn(e)?.value?.trim()||t.options[0]?.value||`default`:t.value:`default`}function jn(e,t){let n=vn(e);n&&(t.value===`__custom__`?(n.style.display=`block`,n.focus()):(n.style.display=`none`,e===`claude`&&Mn(t.value),Q()))}function Mn(e){let t=!!(e&&e.endsWith(`[1m]`));document.getElementById(`claude1mOn`)?.classList.toggle(`active`,t),document.getElementById(`claude1mOff`)?.classList.toggle(`active`,!t)}function Nn(e,t){let n=t.value.trim();if(!n)return;let r=K(e);r&&(J(r,n),r.value=n,t.style.display=`none`,e===`claude`&&Mn(n),Q())}function Pn(){let e=document.getElementById(`selCli`)?.value||``,t=Z(e),n=document.getElementById(`selCliProvider`);n&&Array.from(n.options).some(e=>e.value===t)&&(n.value=t),Cn(null),d(e)?.providers?.length&&Fn(!1),Q()}async function Q(){let e={};for(let t of f()){if(!K(t))continue;let n=yn(t),r={model:An(t),effort:n?n.value:``},i=d(t);if(t!==`pi`&&i?.providers?.length&&(r.provider=Z(t)),t===`pi`){let e=document.getElementById(`providerPi`);e?.value&&(r.provider=e.value)}if(t===`codex`){r.fastMode=document.getElementById(`codexFastOn`)?.classList.contains(`active`)??!1,r.contextWindow=document.getElementById(`codexCtxOn`)?.classList.contains(`active`)??!1;let e=document.getElementById(`codexCtxWindow`),t=document.getElementById(`codexCtxCompact`);r.contextWindowSize=parseInt(e?.value||`1000000`,10),r.contextCompactLimit=parseInt(t?.value||`900000`,10)}e[t]=r}await t(`/api/settings`,`PUT`,{perCli:e})}function Fn(e=!0){let t=document.getElementById(`selCli`);if(!t)return;if(t.value===`__show_more__`){let e=t.dataset.prev||f()[0]||`claude`;t.dataset.expanded=`1`,bn(null),Array.from(t.options).some(t=>t.value===e)&&(t.value=e);try{t.showPicker()}catch{}return}t.dataset.prev=t.value;let r=t.value||`claude`,i=En(null,r),a=d(r),s=i&&a?.modelsByProvider?.[i]?a.modelsByProvider[i]:h[r]||[],l=document.getElementById(`selModel`);a?.modelNote&&l?(l.innerHTML=`<option value="">${o(a.modelNote)}</option>`,l.title=a.modelNote,l.disabled=!0):(q(l,s,{includeCustom:!0,includeDefault:!0}),l&&(l.disabled=!1,l.title=``)),dn(r),X(r);let u=document.getElementById(`selModelCustom`);u&&u.remove();let p=document.createElement(`input`);if(p.type=`text`,p.id=`selModelCustom`,p.className=`custom-model-input`,p.placeholder=c(`model.placeholder`),p.style.display=`none`,p.onchange=function(){let e=this.value.trim();!e||!l||(J(l,e),l.value=e,this.style.display=`none`,X(r,wn(),e),$())},!l){e&&On();return}l.parentElement?.appendChild(p),l.onchange=function(){this.value===`__custom__`?(p.style.display=`block`,p.focus()):(p.style.display=`none`,X(r,wn(),this.value),$())},n(`/api/settings`).then(e=>{if(!e)return;let t=e.activeOverrides?.[r]||{},n=e.perCli?.[r]||{},i=t.model||n.model,a=t.effort??n.effort??``;if(i&&l){let t=d(r);if(r!==`pi`&&t?.providers?.length&&(e.perCli?.[r]?.provider||t.defaultProvider||``)!==Z(r)){X(r,a);return}let n=Y(r,i);J(l,n),l.value=n}X(r,a)}),e&&On()}async function $(){let e=document.getElementById(`selCli`)?.value||`claude`,n=document.getElementById(`selModel`)?.value||`default`;n===`__custom__`&&(n=document.getElementById(`selModelCustom`)?.value?.trim()||`default`);let r=document.getElementById(`selEffort`),i={};i[e]={model:n},r&&!r.disabled&&(i[e].effort=r.value||``);let a={activeOverrides:i},o=d(e);e!==`pi`&&o?.providers?.length&&(a.perCli={[e]:{provider:Z(e)}}),await t(`/api/settings`,`PUT`,a)&&l([`instances`],`active-cli-changed`)}function In(){let e=h[document.getElementById(`flushCli`)?.value||document.getElementById(`selCli`)?.value||`claude`]||[];q(document.getElementById(`flushModel`),e,{includeDefault:!0}),zn(),Rn()}async function Ln(){let e=await n(`/api/memory-files`);if(!e)return;let t=document.getElementById(`flushCli`),r=document.getElementById(`flushModel`);t&&e.cli&&(t.value=e.cli),q(r,h[e.cli||document.getElementById(`selCli`)?.value||`claude`]||[],{includeDefault:!0}),r&&e.model&&(J(r,e.model),r.value=e.model),zn()}async function Rn(){await t(`/api/memory-files/settings`,`PUT`,{cli:document.getElementById(`flushCli`)?.value||``,model:document.getElementById(`flushModel`)?.value||``})}function zn(){let e=document.getElementById(`flushAgentBadge`);if(!e)return;let t=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``,r=t||document.getElementById(`selCli`)?.value||``,i=[];r&&i.push(t?G(r):`${G(r)}*`),n&&n!==`default`&&i.push(n),e.textContent=i.length?`(${i.join(` / `)})`:``}export{rt as A,se as B,mt as C,yt as D,bt as E,Qe as F,et as I,$e as L,ot as M,at as N,xt as O,st as P,tt as R,wt as S,vt as T,j as _,Dn as a,Et as b,Pn as c,Q as d,kn as f,Mt as g,Yt as h,Ln as i,it as j,St as k,mn as l,gn as m,An as n,Fn as o,On as p,jn as r,In as s,Nn as t,$ as u,qt as v,_t as w,Dt as x,jt as y,Ne as z};
@@ -0,0 +1 @@
1
+ import{d as e,l as t}from"./settings-core-CQe1uP6x.js";export{t as refreshHeaderFromSettingsChange,e as savePerCli};
@@ -0,0 +1 @@
1
+ function e(e){if(e.precision===`binary`)return{percent:null,text:e.status===`exhausted`?`Exhausted`:`Available`};let t=Math.max(0,Math.min(100,Math.round(e.percent)));return{percent:t,text:`${t}%`}}function t(e){return e.probeState===`checking`?`checking`:e.probeState===`unknown`?`unknown`:e.probeState===`failing`?`probe-failing`:e.binaryInstalled===!0&&e.capabilityReady===!1?`capability-failed`:e.probeState===`stale`?`stale`:e.available===!0&&e.capabilityReady!==!1?`ready`:`unavailable`}function n(e){return e.probeState===`checking`?{kind:`checking`,message:`Checking status`,allowRemediation:!1}:e.probeState===`unknown`?{kind:`unknown`,message:`Probe unavailable${e.probeError?`: ${e.probeError}`:``}`,allowRemediation:!1}:e.probeState===`failing`?{kind:`failing`,message:`Status check failed (retrying)${e.probeError?`: ${e.probeError}`:``}`,allowRemediation:!1}:{kind:`none`,message:null,allowRemediation:!0}}function r(e){return e>=200&&e<300||e===409}export{r as i,n,e as r,t};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-Bjnw0wQ6.css"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./state-DxpgDKMO.js";import{i as t,t as n}from"./api-tVoG39dL.js";import{t as r}from"./preload-helper-DFYRRz9w.js";import{D as i,F as a,M as o,O as s,R as c,d as ee,n as te}from"./render-BDso7Yb5.js";import{_ as ne,g as re,p as ie}from"./iframe-renderer-C7qQJX4c.js";import{_ as ae,d as oe,u as l,v as u}from"./message-history-CfAHmCDW.js";import{a as d,d as se,i as ce,l as f,n as le,r as ue,s as de,t as fe,u as pe}from"./ui-C-LHMki1.js";var p=null,m=0,h=[],g=2e3,me=3e4,he=1.5,_=null,ge=4e4,_e=1e4,ve=0,ye=!1,be=null,xe=null;function Se(e){xe=e}function Ce(){let e=null;try{e=xe?.()??null}catch{e=null}return e?`&scope=${encodeURIComponent(e)}`:``}function we(){be||=setInterval(()=>{!p||!v||!ye||Date.now()-ve<=ge||(console.warn(`[sse] stalled channel (no ping in`,ge,`ms) — forcing reconnect`),p.close(),p=null,v=!1,x?.(),C(Te))},_e)}var Te=``,v=!1,Ee=!1,De=!1,y=!1,b=!1,Oe=null,x=null,S=null;function ke(e){Oe=e}function Ae(e){x=e}function je(e){S=e}function Me(e,t,n){let r={topic:e,event:t,handler:n};return h.push(r),()=>{let e=h.indexOf(r);e>=0&&h.splice(e,1)}}function Ne(e,t,n){for(let r of h)if((r.topic===`*`||r.topic===e)&&(r.event===null||r.event===t))try{r.handler(n)}catch(e){console.warn(`[sse] handler error:`,e.message)}}function Pe(){Ee||_||(_=setTimeout(()=>{_=null,C(Te)},g),g=Math.min(g*he,me))}function C(e){Te=e,Ee=!1,_&&=(clearTimeout(_),null),p&&p.close();let t=`${n}/api/events?lang=${encodeURIComponent(e)}`+Ce()+(m?`&lastEventId=${m}`:``);y=!1,b=!1,p=new EventSource(t),we(),p.onopen=()=>{g=2e3,v=!0,De=!0,y=!0,ve=Date.now(),Oe?.()},p.onerror=()=>{if(p?.close(),p=null,!y&&!De&&S){b||(b=!0,S());return}v&&(v=!1,x?.()),Pe()},p.onmessage=e=>{m=parseInt(e.lastEventId||`0`,10)||m;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[sse] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.topic!=`string`||typeof t.event!=`string`){console.warn(`[sse] invalid message shape:`,t);return}if(ve=Date.now(),t.topic===`system`&&t.event===`ping`){ye=!0;return}Ne(t.topic,t.event,t)}}var Fe=3e3,w=new Map,T=[],E=(e,t)=>`${e}:${t}`;function D(e=[]){let t=document.getElementById(`pendingQueue`);if(t){if(T=e.slice(),!e.length){Be(new Set),t.classList.remove(`visible`),t.innerHTML=``;return}t.classList.add(`visible`),t.innerHTML=`
2
+ import{t as e}from"./state-DxpgDKMO.js";import{i as t,t as n}from"./api-tVoG39dL.js";import{t as r}from"./preload-helper-DFYRRz9w.js";import{D as i,F as a,M as o,O as s,R as c,d as ee,n as te}from"./render-A--hkukv.js";import{_ as ne,g as re,p as ie}from"./iframe-renderer-C6Zwg9w4.js";import{_ as ae,d as oe,u as l,v as u}from"./message-history-DCxD21J1.js";import{a as d,d as se,i as ce,l as f,n as le,r as ue,s as de,t as fe,u as pe}from"./ui-Csy42uNW.js";var p=null,m=0,h=[],g=2e3,me=3e4,he=1.5,_=null,ge=4e4,_e=1e4,ve=0,ye=!1,be=null,xe=null;function Se(e){xe=e}function Ce(){let e=null;try{e=xe?.()??null}catch{e=null}return e?`&scope=${encodeURIComponent(e)}`:``}function we(){be||=setInterval(()=>{!p||!v||!ye||Date.now()-ve<=ge||(console.warn(`[sse] stalled channel (no ping in`,ge,`ms) — forcing reconnect`),p.close(),p=null,v=!1,x?.(),C(Te))},_e)}var Te=``,v=!1,Ee=!1,De=!1,y=!1,b=!1,Oe=null,x=null,S=null;function ke(e){Oe=e}function Ae(e){x=e}function je(e){S=e}function Me(e,t,n){let r={topic:e,event:t,handler:n};return h.push(r),()=>{let e=h.indexOf(r);e>=0&&h.splice(e,1)}}function Ne(e,t,n){for(let r of h)if((r.topic===`*`||r.topic===e)&&(r.event===null||r.event===t))try{r.handler(n)}catch(e){console.warn(`[sse] handler error:`,e.message)}}function Pe(){Ee||_||(_=setTimeout(()=>{_=null,C(Te)},g),g=Math.min(g*he,me))}function C(e){Te=e,Ee=!1,_&&=(clearTimeout(_),null),p&&p.close();let t=`${n}/api/events?lang=${encodeURIComponent(e)}`+Ce()+(m?`&lastEventId=${m}`:``);y=!1,b=!1,p=new EventSource(t),we(),p.onopen=()=>{g=2e3,v=!0,De=!0,y=!0,ve=Date.now(),Oe?.()},p.onerror=()=>{if(p?.close(),p=null,!y&&!De&&S){b||(b=!0,S());return}v&&(v=!1,x?.()),Pe()},p.onmessage=e=>{m=parseInt(e.lastEventId||`0`,10)||m;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[sse] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.topic!=`string`||typeof t.event!=`string`){console.warn(`[sse] invalid message shape:`,t);return}if(ve=Date.now(),t.topic===`system`&&t.event===`ping`){ye=!0;return}Ne(t.topic,t.event,t)}}var Fe=3e3,w=new Map,T=[],E=(e,t)=>`${e}:${t}`;function D(e=[]){let t=document.getElementById(`pendingQueue`);if(t){if(T=e.slice(),!e.length){Be(new Set),t.classList.remove(`visible`),t.innerHTML=``;return}t.classList.add(`visible`),t.innerHTML=`
3
3
  <div class="pending-queue-header">
4
4
  <span class="pending-queue-title">${s.hourglass} <span data-i18n="queue.pendingTitle">${o(c(`queue.pendingTitle`))}</span> <span class="pending-queue-count">${e.length}</span></span>
5
5
  </div>
@@ -12,7 +12,7 @@ import{t as e}from"./state-DxpgDKMO.js";import{i as t,t as n}from"./api-tVoG39dL
12
12
  <button class="pending-row-btn pending-row-copy" data-pending-action="copy" title="${i}" aria-label="${i}"><span class="pending-btn-content">${s.copy}</span></button>
13
13
  <button class="pending-row-btn pending-row-steer" data-pending-action="steer" data-i18n-title="queue.steer" title="${a}" aria-label="${a}"><span class="pending-arm-fill" aria-hidden="true"></span><span class="pending-btn-content"><span class="pending-steer-arrow" aria-hidden="true">↳</span><span class="pending-steer-label">${a}</span></span></button>
14
14
  <button class="pending-row-btn pending-row-delete" data-pending-action="delete" data-i18n-title="queue.delete" title="${ee}" aria-label="${ee}"><span class="pending-arm-fill" aria-hidden="true"></span><span class="pending-btn-content">${s.trash}</span></button>
15
- </div>`}function O(e,t){let n=document.querySelector(`.pending-row[data-pending-id="${CSS.escape(e)}"]`);return n?n.querySelector(`[data-pending-action="${t}"]`):null}function Le(e,t){let n=O(e,t);if(!n)return;n.classList.add(`armed`),n.setAttribute(`title`,c(`queue.cancelArm`));let r=n.querySelector(`.pending-arm-fill`);r&&(r.style.animation=`none`,r.offsetWidth,r.style.animation=``)}function Re(e,t){let n=O(e,t);n&&(n.classList.remove(`armed`),n.setAttribute(`title`,c(t===`steer`?`queue.steer`:`queue.delete`)))}function ze(){for(let e of w.values()){let t=O(e.id,e.action);t&&(t.classList.add(`armed`),t.setAttribute(`title`,c(`queue.cancelArm`)))}}function Be(e){for(let[t,n]of w)e.has(n.id)||(clearTimeout(n.timerId),w.delete(t))}function Ve(e,n){let r=E(e,n),i=setTimeout(()=>Ue(e,n),Fe);w.set(r,{id:e,action:n,timerId:i}),Le(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`POST`,{}).catch(()=>{})}function He(e,n){let r=E(e,n),i=w.get(r);i&&(clearTimeout(i.timerId),w.delete(r),Re(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`DELETE`,{}).catch(()=>{}))}async function Ue(e,n){w.delete(E(e,n));let r=n===`steer`?`/api/orchestrate/queue/${encodeURIComponent(e)}/steer`:`/api/orchestrate/queue/${encodeURIComponent(e)}`,i=n===`steer`?`POST`:`DELETE`;if(n===`steer`&&l(`running`),await t(r,i,{})==null){T=T.filter(t=>t.id!==e),D(T),n===`steer`&&U(`steer-fire-miss`).catch(()=>{});return}T=T.filter(t=>t.id!==e),D(T)}function We(e,t){if(w.has(E(e,t))){He(e,t);return}Ve(e,t)}function Ge(){let e=document.getElementById(`pendingQueue`);e&&e.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-pending-action]`);if(!t)return;let n=t.closest(`.pending-row`)?.dataset.pendingId;if(!n)return;let r=t.dataset.pendingAction;if(r===`copy`){let e=T.find(e=>e.id===n);if(e?.prompt&&(await i(e.prompt)).ok){let e=t.querySelector(`.pending-btn-content`);e&&(e.innerHTML=s.checkSimple,setTimeout(()=>{e.innerHTML=s.copy},600))}return}We(n,r===`steer`?`steer`:`delete`)})}var Ke=800,k=64,qe=`CLI-JAW`,A=!1,j=0,M=qe,N=null,Je=``,Ye=!1,Xe=0;function Ze(){return navigator}function Qe(){return document.visibilityState!==`visible`||!document.hasFocus()}function $e(e){return e-Xe<Ke}function et(){if(N)return N;let e=document.querySelector(`link[rel~="icon"]`);if(e)return N=e,Je=e.href||e.getAttribute(`href`)||``,e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),N=t,Ye=!0,t}function tt(e){let t=document.createElement(`canvas`);t.width=k,t.height=k;let n=t.getContext(`2d`);return n?(n.clearRect(0,0,k,k),n.font=`44px "Apple Color Emoji", "Segoe UI Emoji", sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(`🦈`,28,36),n.beginPath(),n.arc(50,15,e>1?12:9,0,Math.PI*2),n.fillStyle=`#ff335f`,n.fill(),n.lineWidth=4,n.strokeStyle=`#ffffff`,n.stroke(),e>1&&(n.fillStyle=`#ffffff`,n.font=`bold 15px sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(String(Math.min(e,9)),50,16)),t.toDataURL(`image/png`)):Je}async function nt(e){let t=Ze();if(typeof t.setAppBadge==`function`)try{await t.setAppBadge(e)}catch{}}async function rt(){let e=Ze();if(typeof e.clearAppBadge==`function`)try{await e.clearAppBadge()}catch{}}function it(){document.title=`(${j}) ${M}`;let e=et();e&&(e.href=tt(j)),nt(j)}function at(){document.title=M}function ot(){if(N){if(Ye){N.remove(),N=null,Ye=!1;return}N.href=Je}}function st(){A||(A=!0,M=document.title||qe,et(),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&lt()}),window.addEventListener(`focus`,()=>lt()))}function ct(){if(!A||!Qe())return;let e=Date.now();$e(e)||(Xe=e,j+=1,it())}function lt(){!A||j===0||(j=0,Xe=0,at(),ot(),rt())}function ut(e,t){return!e||!t?!0:e===`all`||e===t}var P=[`I`,`P`,`A`,`B`,`C`],F=null;function dt(e,t,n){let r=P.indexOf(n);if(r<0)return;let i=e.getBoundingClientRect(),a=t.offsetWidth||36,o=document.getElementById(`dot-${n}`);if(!o)return;let s=P[r+1],c=s?document.getElementById(`dot-${s}`):null;if(c){let e=o.getBoundingClientRect(),n=c.getBoundingClientRect(),r=(e.right+n.left)/2;t.style.transform=`translateX(${r-i.left-a/2}px)`}else{let e=o.getBoundingClientRect();t.style.transform=`translateX(${e.left-i.left+e.width/2-a/2}px)`}}var I={},ft=8,pt=64,L=null,R=0,z=[],B=new Map;function mt(e){return e!==null&&z.includes(e)}function ht(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.floor(t):null}function gt(e,t){if(!(!e||t==null))for(t>(B.get(e)||0)&&B.set(e,t);B.size>pt;){let e=null;for(let t of B.keys())if(t!==L){e=t;break}if(!e)break;B.delete(e)}}function _t(e){let t=new Map;for(let n of e?.toolLog||[]){let e=typeof n?.traceRunId==`string`&&n.traceRunId?n.traceRunId:null,r=ht(n?.traceSeq);!e||r==null||r>(t.get(e)||0)&&t.set(e,r)}return t}function vt(e,t,n){return!n||!e||t==null?!1:t<=(B.get(e)||0)}function yt(e){let t=e??L;L=null,R=0,t&&!z.includes(t)&&(z.push(t),z.length>ft&&z.shift())}function bt(e){!e||e===L||(L=e,R=0)}function xt(e){if(e?.running){typeof e.traceRunId==`string`&&e.traceRunId&&(L=e.traceRunId),R=typeof e.textLen==`number`?e.textLen:(e.text||``).length;for(let[t,n]of _t(e))gt(t,n)}}var St=``,V=0,H=null,Ct=0,wt=!1,Tt=0,Et=750,Dt=750;async function Ot(e={}){let t=await(await fetch(`${n}/api/orchestrate/snapshot`)).json();St=String(t.orc.scope||``),Ht(t.orc.state),Ft(t.orc.ctx||null),Pt(t.heartbeat||{pending:0,deferredPending:0}),Nt(t.workers),oe(t.runtime.queuePending),le(t.queued||[]),D(t.queued||[]),e.hydrateRun&&(de(t.activeRun),xt(t.activeRun)),Bt(),t.runtime.busy?l(`running`):f()||l(`idle`),r(()=>import(`./employees-eiW0cC8z.js`).then(e=>{typeof e.renderEmployees==`function`&&e.renderEmployees()}),__vite__mapDeps([0]))}function U(e=`manual`,t={}){let n=Date.now();return t.hydrateRun?Ot(t):H||(n-Ct<Et?Promise.resolve():(Ct=n,H=Ot(t).catch(t=>{throw console.warn(`[ws] orchestrate snapshot sync failed (${e})`,t),t}).finally(()=>{H=null}),H))}function kt(e){return e===`iframe-visible`||e===`pageshow`||e===`discard`||e===`visibilitychange`}function At(e){re(e),r(()=>import(`./ui-XPQDPe-5.js`).then(async t=>{if(kt(e)&&V>0)try{await t.loadMessages(),V=Date.now()}catch(t){console.warn(`[ws] restore loadMessages failed (${e})`,t)}await U(e,{hydrateRun:!0})}),__vite__mapDeps([0])).catch(()=>{}).finally(()=>{ie(e)})}function W(e){let t=Date.now();!kt(e)&&t-Tt<Dt||(Tt=t,At(e))}function jt(e){let t=Array.isArray(e.changedKeys)?e.changedKeys:[];if(t.includes(`multiSession`)){window.location.reload();return}t.includes(`workingDir`)||t.includes(`projectDirs`)?r(()=>import(`./ui-XPQDPe-5.js`).then(async e=>{try{await e.loadMessages(),V=Date.now()}catch(e){console.warn(`[ws] settings scope loadMessages failed`,e)}await U(`settings_change`).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`settings_change`))}),__vite__mapDeps([0])):U(`settings_change`).catch(()=>{}),r(()=>import(`./settings-core-CdZ7oKhM.js`).then(t=>t.refreshHeaderFromSettingsChange(e)),__vite__mapDeps([0])).catch(()=>{})}function Mt(){wt||(wt=!0,window.addEventListener(`focus`,()=>{W(`focus`)}),window.addEventListener(`pageshow`,e=>{e.persisted&&W(`pageshow`)}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&W(`visibilitychange`)}),document.addEventListener(`resume`,()=>{W(`resume`)}),`wasDiscarded`in document&&document.wasDiscarded&&W(`discard`),window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-visibility`&&e.data.visible&&W(`iframe-visible`)}))}function Nt(e){for(let e of Object.keys(I))delete I[e];for(let t of e)t.state===`running`&&t.phase&&(I[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``})}function Pt(t){let n={pending:Number(t?.pending||0),deferredPending:Number(t?.deferredPending||0),...t?.reason?{reason:t.reason}:{},...t?.policy?{policy:t.policy}:{},...t?.jobId?{jobId:t.jobId}:{},...t?.jobName?{jobName:t.jobName}:{}};e.heartbeatRuntime=n;let r=document.getElementById(`pabcHeartbeatStatus`);if(r)if(n.reason===`pabcd_active`&&n.deferredPending>0){let e=n.jobName?`: ${n.jobName}`:``;r.textContent=`heartbeat deferred (${n.deferredPending})${e}`,r.hidden=!1}else r.textContent=``,r.hidden=!0}function Ft(t){e.orcTaskAnchor=String(t?.taskAnchor||``).trim(),e.orcResolvedSelection=t?.resolvedSelection||null;let n=document.getElementById(`pabcTaskAnchor`);n&&(e.orcTaskAnchor?(n.textContent=`anchor: ${e.orcResolvedSelection?.index?`${e.orcResolvedSelection.index}. `:``}${e.orcTaskAnchor}`,n.hidden=!1):(n.textContent=``,n.hidden=!0),Rt(t?.interview||null))}var G=(()=>{try{return localStorage.getItem(`jaw:interviewCollapsed`)===`1`}catch{return!1}})();function It(e){G=e;try{localStorage.setItem(`jaw:interviewCollapsed`,e?`1`:`0`)}catch{}let t=document.getElementById(`interviewPanel`);if(!t)return;t.classList.toggle(`collapsed`,e);let n=t.querySelector(`.iv-toggle`);n&&n.setAttribute(`aria-expanded`,String(!e))}function Lt(e){let t=e=>{switch(e){case`max`:return 1;case`xhigh`:return .8;case`high`:return .6;case`medium`:return .4;default:return .2}},n=e=>{switch(e){case`max`:return`#2196f3`;case`xhigh`:return`#4caf50`;case`high`:return`#8bc34a`;case`medium`:return`#ff9800`;default:return`#f44336`}},r=[t(e.goal),t(e.constraint),t(e.success),t(e.ontology)],i=1-r.reduce((e,t)=>e+t,0)/r.length,a=Object.values(e).every(e=>e===`max`)||i<=.2?`🟢 Ready`:i<=.4?`🟡 Almost`:`🔴 Needs work`,o=(e,r)=>{let i=t(r);return`<div style="display:flex;align-items:center;gap:6px;font-size:12px">
15
+ </div>`}function O(e,t){let n=document.querySelector(`.pending-row[data-pending-id="${CSS.escape(e)}"]`);return n?n.querySelector(`[data-pending-action="${t}"]`):null}function Le(e,t){let n=O(e,t);if(!n)return;n.classList.add(`armed`),n.setAttribute(`title`,c(`queue.cancelArm`));let r=n.querySelector(`.pending-arm-fill`);r&&(r.style.animation=`none`,r.offsetWidth,r.style.animation=``)}function Re(e,t){let n=O(e,t);n&&(n.classList.remove(`armed`),n.setAttribute(`title`,c(t===`steer`?`queue.steer`:`queue.delete`)))}function ze(){for(let e of w.values()){let t=O(e.id,e.action);t&&(t.classList.add(`armed`),t.setAttribute(`title`,c(`queue.cancelArm`)))}}function Be(e){for(let[t,n]of w)e.has(n.id)||(clearTimeout(n.timerId),w.delete(t))}function Ve(e,n){let r=E(e,n),i=setTimeout(()=>Ue(e,n),Fe);w.set(r,{id:e,action:n,timerId:i}),Le(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`POST`,{}).catch(()=>{})}function He(e,n){let r=E(e,n),i=w.get(r);i&&(clearTimeout(i.timerId),w.delete(r),Re(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`DELETE`,{}).catch(()=>{}))}async function Ue(e,n){w.delete(E(e,n));let r=n===`steer`?`/api/orchestrate/queue/${encodeURIComponent(e)}/steer`:`/api/orchestrate/queue/${encodeURIComponent(e)}`,i=n===`steer`?`POST`:`DELETE`;if(n===`steer`&&l(`running`),await t(r,i,{})==null){T=T.filter(t=>t.id!==e),D(T),n===`steer`&&U(`steer-fire-miss`).catch(()=>{});return}T=T.filter(t=>t.id!==e),D(T)}function We(e,t){if(w.has(E(e,t))){He(e,t);return}Ve(e,t)}function Ge(){let e=document.getElementById(`pendingQueue`);e&&e.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-pending-action]`);if(!t)return;let n=t.closest(`.pending-row`)?.dataset.pendingId;if(!n)return;let r=t.dataset.pendingAction;if(r===`copy`){let e=T.find(e=>e.id===n);if(e?.prompt&&(await i(e.prompt)).ok){let e=t.querySelector(`.pending-btn-content`);e&&(e.innerHTML=s.checkSimple,setTimeout(()=>{e.innerHTML=s.copy},600))}return}We(n,r===`steer`?`steer`:`delete`)})}var Ke=800,k=64,qe=`CLI-JAW`,A=!1,j=0,M=qe,N=null,Je=``,Ye=!1,Xe=0;function Ze(){return navigator}function Qe(){return document.visibilityState!==`visible`||!document.hasFocus()}function $e(e){return e-Xe<Ke}function et(){if(N)return N;let e=document.querySelector(`link[rel~="icon"]`);if(e)return N=e,Je=e.href||e.getAttribute(`href`)||``,e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),N=t,Ye=!0,t}function tt(e){let t=document.createElement(`canvas`);t.width=k,t.height=k;let n=t.getContext(`2d`);return n?(n.clearRect(0,0,k,k),n.font=`44px "Apple Color Emoji", "Segoe UI Emoji", sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(`🦈`,28,36),n.beginPath(),n.arc(50,15,e>1?12:9,0,Math.PI*2),n.fillStyle=`#ff335f`,n.fill(),n.lineWidth=4,n.strokeStyle=`#ffffff`,n.stroke(),e>1&&(n.fillStyle=`#ffffff`,n.font=`bold 15px sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(String(Math.min(e,9)),50,16)),t.toDataURL(`image/png`)):Je}async function nt(e){let t=Ze();if(typeof t.setAppBadge==`function`)try{await t.setAppBadge(e)}catch{}}async function rt(){let e=Ze();if(typeof e.clearAppBadge==`function`)try{await e.clearAppBadge()}catch{}}function it(){document.title=`(${j}) ${M}`;let e=et();e&&(e.href=tt(j)),nt(j)}function at(){document.title=M}function ot(){if(N){if(Ye){N.remove(),N=null,Ye=!1;return}N.href=Je}}function st(){A||(A=!0,M=document.title||qe,et(),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&lt()}),window.addEventListener(`focus`,()=>lt()))}function ct(){if(!A||!Qe())return;let e=Date.now();$e(e)||(Xe=e,j+=1,it())}function lt(){!A||j===0||(j=0,Xe=0,at(),ot(),rt())}function ut(e,t){return!e||!t?!0:e===`all`||e===t}var P=[`I`,`P`,`A`,`B`,`C`],F=null;function dt(e,t,n){let r=P.indexOf(n);if(r<0)return;let i=e.getBoundingClientRect(),a=t.offsetWidth||36,o=document.getElementById(`dot-${n}`);if(!o)return;let s=P[r+1],c=s?document.getElementById(`dot-${s}`):null;if(c){let e=o.getBoundingClientRect(),n=c.getBoundingClientRect(),r=(e.right+n.left)/2;t.style.transform=`translateX(${r-i.left-a/2}px)`}else{let e=o.getBoundingClientRect();t.style.transform=`translateX(${e.left-i.left+e.width/2-a/2}px)`}}var I={},ft=8,pt=64,L=null,R=0,z=[],B=new Map;function mt(e){return e!==null&&z.includes(e)}function ht(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.floor(t):null}function gt(e,t){if(!(!e||t==null))for(t>(B.get(e)||0)&&B.set(e,t);B.size>pt;){let e=null;for(let t of B.keys())if(t!==L){e=t;break}if(!e)break;B.delete(e)}}function _t(e){let t=new Map;for(let n of e?.toolLog||[]){let e=typeof n?.traceRunId==`string`&&n.traceRunId?n.traceRunId:null,r=ht(n?.traceSeq);!e||r==null||r>(t.get(e)||0)&&t.set(e,r)}return t}function vt(e,t,n){return!n||!e||t==null?!1:t<=(B.get(e)||0)}function yt(e){let t=e??L;L=null,R=0,t&&!z.includes(t)&&(z.push(t),z.length>ft&&z.shift())}function bt(e){!e||e===L||(L=e,R=0)}function xt(e){if(e?.running){typeof e.traceRunId==`string`&&e.traceRunId&&(L=e.traceRunId),R=typeof e.textLen==`number`?e.textLen:(e.text||``).length;for(let[t,n]of _t(e))gt(t,n)}}var St=``,V=0,H=null,Ct=0,wt=!1,Tt=0,Et=750,Dt=750;async function Ot(e={}){let t=await(await fetch(`${n}/api/orchestrate/snapshot`)).json();St=String(t.orc.scope||``),Ht(t.orc.state),Ft(t.orc.ctx||null),Pt(t.heartbeat||{pending:0,deferredPending:0}),Nt(t.workers),oe(t.runtime.queuePending),le(t.queued||[]),D(t.queued||[]),e.hydrateRun&&(de(t.activeRun),xt(t.activeRun)),Bt(),t.runtime.busy?l(`running`):f()||l(`idle`),r(()=>import(`./employees-BNy8a6XX.js`).then(e=>{typeof e.renderEmployees==`function`&&e.renderEmployees()}),__vite__mapDeps([0]))}function U(e=`manual`,t={}){let n=Date.now();return t.hydrateRun?Ot(t):H||(n-Ct<Et?Promise.resolve():(Ct=n,H=Ot(t).catch(t=>{throw console.warn(`[ws] orchestrate snapshot sync failed (${e})`,t),t}).finally(()=>{H=null}),H))}function kt(e){return e===`iframe-visible`||e===`pageshow`||e===`discard`||e===`visibilitychange`}function At(e){re(e),r(()=>import(`./ui-CB0L33o0.js`).then(async t=>{if(kt(e)&&V>0)try{await t.loadMessages(),V=Date.now()}catch(t){console.warn(`[ws] restore loadMessages failed (${e})`,t)}await U(e,{hydrateRun:!0})}),__vite__mapDeps([0])).catch(()=>{}).finally(()=>{ie(e)})}function W(e){let t=Date.now();!kt(e)&&t-Tt<Dt||(Tt=t,At(e))}function jt(e){let t=Array.isArray(e.changedKeys)?e.changedKeys:[];if(t.includes(`multiSession`)){window.location.reload();return}t.includes(`workingDir`)||t.includes(`projectDirs`)?r(()=>import(`./ui-CB0L33o0.js`).then(async e=>{try{await e.loadMessages(),V=Date.now()}catch(e){console.warn(`[ws] settings scope loadMessages failed`,e)}await U(`settings_change`).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`settings_change`))}),__vite__mapDeps([0])):U(`settings_change`).catch(()=>{}),r(()=>import(`./settings-core-DqwLJkgP.js`).then(t=>t.refreshHeaderFromSettingsChange(e)),__vite__mapDeps([0])).catch(()=>{})}function Mt(){wt||(wt=!0,window.addEventListener(`focus`,()=>{W(`focus`)}),window.addEventListener(`pageshow`,e=>{e.persisted&&W(`pageshow`)}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&W(`visibilitychange`)}),document.addEventListener(`resume`,()=>{W(`resume`)}),`wasDiscarded`in document&&document.wasDiscarded&&W(`discard`),window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-visibility`&&e.data.visible&&W(`iframe-visible`)}))}function Nt(e){for(let e of Object.keys(I))delete I[e];for(let t of e)t.state===`running`&&t.phase&&(I[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``})}function Pt(t){let n={pending:Number(t?.pending||0),deferredPending:Number(t?.deferredPending||0),...t?.reason?{reason:t.reason}:{},...t?.policy?{policy:t.policy}:{},...t?.jobId?{jobId:t.jobId}:{},...t?.jobName?{jobName:t.jobName}:{}};e.heartbeatRuntime=n;let r=document.getElementById(`pabcHeartbeatStatus`);if(r)if(n.reason===`pabcd_active`&&n.deferredPending>0){let e=n.jobName?`: ${n.jobName}`:``;r.textContent=`heartbeat deferred (${n.deferredPending})${e}`,r.hidden=!1}else r.textContent=``,r.hidden=!0}function Ft(t){e.orcTaskAnchor=String(t?.taskAnchor||``).trim(),e.orcResolvedSelection=t?.resolvedSelection||null;let n=document.getElementById(`pabcTaskAnchor`);n&&(e.orcTaskAnchor?(n.textContent=`anchor: ${e.orcResolvedSelection?.index?`${e.orcResolvedSelection.index}. `:``}${e.orcTaskAnchor}`,n.hidden=!1):(n.textContent=``,n.hidden=!0),Rt(t?.interview||null))}var G=(()=>{try{return localStorage.getItem(`jaw:interviewCollapsed`)===`1`}catch{return!1}})();function It(e){G=e;try{localStorage.setItem(`jaw:interviewCollapsed`,e?`1`:`0`)}catch{}let t=document.getElementById(`interviewPanel`);if(!t)return;t.classList.toggle(`collapsed`,e);let n=t.querySelector(`.iv-toggle`);n&&n.setAttribute(`aria-expanded`,String(!e))}function Lt(e){let t=e=>{switch(e){case`max`:return 1;case`xhigh`:return .8;case`high`:return .6;case`medium`:return .4;default:return .2}},n=e=>{switch(e){case`max`:return`#2196f3`;case`xhigh`:return`#4caf50`;case`high`:return`#8bc34a`;case`medium`:return`#ff9800`;default:return`#f44336`}},r=[t(e.goal),t(e.constraint),t(e.success),t(e.ontology)],i=1-r.reduce((e,t)=>e+t,0)/r.length,a=Object.values(e).every(e=>e===`max`)||i<=.2?`🟢 Ready`:i<=.4?`🟡 Almost`:`🔴 Needs work`,o=(e,r)=>{let i=t(r);return`<div style="display:flex;align-items:center;gap:6px;font-size:12px">
16
16
  <span style="width:70px;color:var(--text-secondary)">${e}</span>
17
17
  <div style="flex:1;height:5px;background:var(--bg-tertiary);border-radius:3px">
18
18
  <div style="width:${i*100}%;height:100%;background:${n(r)};border-radius:3px;transition:width .3s"></div>
@@ -46,4 +46,4 @@ import{t as e}from"./state-DxpgDKMO.js";import{i as t,t as n}from"./api-tVoG39dL
46
46
  </div>`};n.innerHTML=`<div style="font-size:11px;font-weight:600;margin-bottom:4px;color:var(--text-secondary)">Build Budget</div>
47
47
  ${r(`Workers`,e.spent.workerDispatches,e.maxWorkerDispatches)}
48
48
  ${r(`Self-heal`,e.spent.selfHealRetries,e.maxSelfHealRetries)}
49
- ${r(`Verify`,e.spent.verificationRounds,e.maxVerificationRounds)}`}async function Bt(){try{let t=await fetch(`${n}/api/goal`);if(!t.ok)return;let r=await t.json();r.goal?e.activeGoal={id:r.goal.id,objective:r.goal.objective,status:r.goal.status,createdAt:r.goal.createdAt,updatedAt:r.goal.updatedAt,lastCheckpointSummary:r.goal.lastCheckpoint?.summary,nextAction:r.goal.lastCheckpoint?.nextAction}:e.activeGoal=null,Vt()}catch{}}function Vt(){let t=document.getElementById(`goalCockpit`);if(!t)return;let n=e.activeGoal;if(!n||n.status===`complete`||n.status===`cancelled`){t.hidden=!0,t.innerHTML=``;return}t.hidden=!1,t.replaceChildren();let r=n.status===`paused`?`paused`:n.status===`blocked`?`blocked`:`active`,i=document.createElement(`span`);i.className=`goal-objective`,i.title=n.objective,i.textContent=n.objective;let a=document.createElement(`span`);if(a.className=`goal-status goal-status--${r}`,a.textContent=n.status,t.append(i,a),n.nextAction){let e=document.createElement(`span`);e.className=`goal-next`,e.textContent=n.nextAction,t.append(e)}}function Ht(t,n){let r=new Set([`IDLE`,`I`,`P`,`A`,`B`,`C`,`D`]).has(t)?t:`IDLE`;if(e.orcState=r,r===`IDLE`||r===`D`)document.body.removeAttribute(`data-orc-state`),document.body.style.removeProperty(`--orc-glow`);else{document.body.setAttribute(`data-orc-state`,r);let e=`--orc-glow-${r}`,t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();document.body.style.setProperty(`--orc-glow`,t)}document.body.classList.add(`orc-pulse`),setTimeout(()=>document.body.classList.remove(`orc-pulse`),700);let i=document.getElementById(`orcStateBadge`);i&&(i.textContent={IDLE:``,I:`INTERVIEW`,P:`PLAN`,A:`AUDIT`,B:`BUILD`,C:`CHECK`,D:`DONE`}[r],i.style.display=r===`IDLE`?`none`:`inline-block`);let a=document.getElementById(`pabcRoadmap`),o=document.getElementById(`sharkRunner`),s=document.getElementById(`pabcBrand`);if(a&&o){if(!a.dataset.resizeObserved){a.dataset.resizeObserved=`1`,new ResizeObserver(()=>{F&&o.classList.contains(`running`)&&dt(a,o,F)}).observe(a);let e=0;window.addEventListener(`resize`,()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{F&&o.classList.contains(`running`)&&dt(a,o,F)})})}if(r===`IDLE`)a.classList.remove(`visible`,`shimmer-out`),o.classList.remove(`running`),F=null;else if(r===`D`){P.forEach(e=>{let t=document.getElementById(`dot-${e}`);t&&(t.className=`pabc-dot done`,t.setAttribute(`data-phase`,e))});for(let e=0;e<P.length;e++){let t=document.getElementById(`pabc-conn-${e}`);t&&(t.className=`pabc-connector done`)}o.classList.remove(`running`),F=null,a.classList.add(`shimmer-out`),setTimeout(()=>a.classList.remove(`visible`,`shimmer-out`),1e3)}else{a.classList.remove(`shimmer-out`),a.classList.add(`visible`),o.classList.add(`running`);let e=P.indexOf(r);P.forEach((t,n)=>{let r=document.getElementById(`dot-${t}`);r&&(r.className=`pabc-dot ${n<e?`done`:n===e?`active`:`future`}`,r.setAttribute(`data-phase`,t))});for(let t=0;t<P.length;t++){let n=document.getElementById(`pabc-conn-${t}`);n&&(n.className=`pabc-connector ${t<e?`done`:``}`)}F=r,requestAnimationFrame(()=>dt(a,o,r))}s&&n&&(s.textContent=n)}}var Ut=!1,Wt=Promise.resolve(),Gt=0;function K(){Mt(),Ut||(Ut=!0,tn()),$t(),C(a())}var Kt=K;function qt(e){console.log(`[${e}] connected`),X=2e3,Xt();let t=Date.now()-V<1e4;Wt=r(()=>import(`./ui-XPQDPe-5.js`).then(async n=>{if(n.cleanupToolActivity(),!t)try{await n.loadMessages(),V=Date.now()}catch(t){console.error(`[${e}] loadMessages failed`,t)}await U(`reconnect`,{hydrateRun:!0}).catch(()=>{}).finally(()=>n.reconcileChatBottomAfterRestore(`reconnect`)),r(()=>import(`./memory-rsKN0aa2.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0])).catch(()=>{}),r(()=>import(`./bgtask-badge-B2jUZ5mC.js`).then(e=>e.refreshBgtaskBadge()),__vite__mapDeps([0])).catch(()=>{})}),void 0)}function Jt(){re(`replay_gap`),Wt=r(()=>import(`./ui-XPQDPe-5.js`).then(async e=>{try{await e.loadMessages(),V=Date.now()}catch(e){console.error(`[sse] replay gap loadMessages failed`,e)}await U(`replay_gap`,{hydrateRun:!0}).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`replay_gap`))}),__vite__mapDeps([0]))}var Yt=8e3,q=null;function Xt(){q!==null&&(window.clearTimeout(q),q=null)}function Zt(){console.log(`[channel] disconnected`),r(()=>import(`./ui-XPQDPe-5.js`).then(e=>e.cleanupToolActivity()),__vite__mapDeps([0])),q===null&&(q=window.setTimeout(()=>{q=null,l(`idle`),u(`${s.exec} ${c(`ws.disconnected`)}`,`tool-activity`)},Yt))}var J=null,Y=!1,X=2e3,Qt=3e4;function $t(){if(J){Y=!0;try{J.close()}catch{}J=null}}function en(){if(J)return;console.warn(`[channel] /api/events unavailable — falling back to legacy WebSocket`);let e=`ws://${location.host}`,t=new WebSocket(`${e}${n}/?lang=${a()}`);J=t,Y=!1,t.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[ws] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.type!=`string`){console.warn(`[ws] invalid message shape:`,t);return}nn(t)};let r=!1;t.onopen=()=>{r=!0,X=2e3,qt(`ws`)},t.onclose=()=>{if(J===t&&(J=null),Y){Y=!1;return}if(r){Zt(),setTimeout(K,2e3);return}X=Math.min(X*2,Qt),setTimeout(K,X)}}function tn(){Me(`widget`,`widget_updated`,e=>{let t=e.chatId,n=e.widgetId;typeof t!=`string`||typeof n!=`string`||r(()=>import(`./iframe-renderer-D7PB_yrC.js`).then(e=>e.refreshFileWidget(t,n)),__vite__mapDeps([0])).catch(e=>console.warn(`[widget] refresh failed:`,e.message))}),Me(`*`,null,e=>{nn({...e,type:e.event})}),ke(()=>qt(`sse`)),Ae(()=>Zt()),je(()=>en())}function nn(t){if(t.type===`agent_tool`){if(f())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,n=ht(t.traceSeq);if(mt(e)||vt(e,n,t.sseReplay===!0))return;t.isEmployee!==!0&&bt(e);let r=t.toolType===`thinking`?`thinking`:t.toolType===`search`?`search`:t.toolType===`subagent`?`subagent`:`tool`;se({id:`step-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:r,icon:t.icon||s.tool,rawIcon:t.rawIcon||t.icon||``,label:t.label||``,isEmployee:t.isEmployee===!0,detail:t.detail||``,stepRef:t.stepRef||``,traceRunId:t.traceRunId||``,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status||`running`,startTime:typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:Date.now()},typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:void 0),gt(e,n)}else if(t.type===`agent_output`||t.type===`agent_chunk`){if(f())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(mt(e))return;bt(e);let n=t.text||``;if(e&&typeof t.textLen==`number`){if(t.textLen<=R){t.sseReplay!==!0&&t.textLen<R&&(console.warn(`[ws] live agent_output behind applied cursor — resync (${t.textLen} < ${R})`),R=t.textLen);return}let e=t.textLen-R;e<n.length&&(n=n.slice(-e)),R=t.textLen}fe(n)}else if(t.type===`agent_status`){if(!t.running&&f())return;t.running&&f()&&ce(),t.running===void 0?l(t.status||`idle`):l(t.running?`running`:`idle`),t.agentId&&t.phase&&(I[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``},r(()=>import(`./employees-eiW0cC8z.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])))}else if(t.type===`bgtask_update`)r(()=>import(`./bgtask-badge-B2jUZ5mC.js`).then(e=>e.applyBgtaskUpdate(t)),__vite__mapDeps([0])).catch(()=>{});else if(t.type===`queue_update`)oe(t.pending||0),Array.isArray(t.queued)&&D(t.queued),U(`queue_update`).catch(()=>{});else if(t.type===`agent_retry`){let e=Number(t.delay??0),n=t.reason,r=o(String(n||`429`));u(c(e>0?`ws.retry`:`ws.retryNow`,{cli:o(t.cli||``),reason:r,delay:e}),`tool-activity`)}else if(t.type===`agent_fallback`)u(c(`ws.fallback`,{from:o(t.from||``),to:o(t.to||``)}),`tool-activity`);else if(t.type===`agent_smoke`)u(`${s.warning} ${o(t.cli||`agent`)}: smoke response detected — auto-continuing`,`tool-activity`);else if(t.type===`goal_done`)e.activeGoal=null,Vt(),u(`🎯 Goal completed${t.source===`ai_output`?` (detected from AI output)`:``}`,`tool-activity`);else if(t.type===`goal_cancel`)e.activeGoal=null,Vt(),u(`🎯 Goal cancelled`,`tool-activity`);else if(t.type===`schedule_wakeup`)u(`⏰ Wakeup scheduled in ${t.delaySeconds}s — ${o(String(t.reason||``))}`,`tool-activity`);else if(t.type===`goal_continuation_limit`)u(`⚠️ Goal continuation limit reached (${t.attempts} attempts)`,`tool-activity`);else if(t.type===`goal_continuation`)u(`🎯 Active goal — auto-continuing`,`tool-activity`);else if(t.type===`agent_done`){if(!(t.steered||f())){let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(mt(e)||e&&L&&e!==L)return;yt(e),d(t.text||``,t.toolLog),ct()}}else if(t.type===`orchestrate_done`)yt(null),d(t.text||``),ct();else if(t.type===`clear`){te(),ue(),ne().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``),r(()=>import(`./idb-cache-B5PX63p7.js`).then(e=>e.clearScopedCache()),[]).catch(()=>{})}else if(t.type===`session_reset`)u(`${s.refresh} Session reset — history preserved`,`tool-activity`);else if(t.type===`agent_added`||t.type===`agent_updated`||t.type===`agent_deleted`)r(()=>import(`./employees-eiW0cC8z.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0]));else if(t.type===`heartbeat_pending`){let e={pending:t.pending||0,deferredPending:t.deferredPending||0};t.reason!==void 0&&(e.reason=t.reason),t.policy!==void 0&&(e.policy=t.policy),t.jobId!==void 0&&(e.jobId=t.jobId),t.jobName!==void 0&&(e.jobName=t.jobName),Pt(e)}else if(t.type===`orc_state`)rn(t);else if(t.type===`memory_status`)r(()=>import(`./memory-rsKN0aa2.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0]));else if(t.type===`steer_started`)pe(),yt(null),d(``),l(`steering`);else if(t.type===`new_message`&&(t.source===`telegram`||t.source===`discord`||t.source===`slack`||t.source===`bgtask`||t.source===`cli`||t.source===`goal`||t.external===!0||t.fromQueue===!0)){let e=t.role===`assistant`?`agent`:t.role||`user`,n=t.content||``,i=t.cli;r(()=>import(`./message-history-BttkY77h.js`).then(t=>{if(t.historyReloadInFlight()){t.loadMessages().then(()=>t.loadMessages()).catch(e=>console.warn(`[ws] new_message reload after in-flight failed`,e));return}ae(e,n,i)}),__vite__mapDeps([0]))}else t.type===`system_notice`?u(`ℹ️ ${o(t.text||``)}`,`tool-activity`):t.type===`replay_gap`?Jt():t.type===`worker_stalled`?u(`⚠️ Worker stalled: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`worker_disconnected`?u(`🔌 Worker disconnected: ${o(t.agentId||``)} (exit ${o(String(t.exitCode??`?`))})`,`tool-activity`):t.type===`worker_timeout`?u(`⏱️ Worker timed out: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`alert_escalation`?u(o(t.message||``),`tool-activity`):t.type===`schedule_wakeup_failed`?u(`⚠️ Wakeup failed — ${o(String(t.reason||``))}: ${o(t.error||``)}`,`tool-activity`):t.type===`goal_continuation_failed`?u(`⚠️ Goal continuation failed: ${o(t.error||``)}`,`tool-activity`):t.type===`settings_change`?jt(t):t.type===`session_list`?ee(t):(t.type===`session_switched`||t.type===`session_created`)&&window.location.reload()}function rn(e){let t=++Gt;Wt.then(()=>{t===Gt&&ut(e.scope,St)&&(Ht(typeof e.state==`string`?e.state:`IDLE`,e.title),Ft({taskAnchor:e.taskAnchor||null,resolvedSelection:e.resolvedSelection||null,interview:e.interview||null}),zt(e.buildBudget||null,typeof e.state==`string`?e.state:`IDLE`))})}function an(e){return I[e]||null}var on=`sidebarState`,sn=900,cn=768;function ln(){return window.innerWidth<=cn}function Z(){document.body.classList.remove(`left-expanded`,`right-expanded`)}function un(e){let t=`${e}-expanded`,n=e===`left`?`right-expanded`:`left-expanded`,r=!document.body.classList.contains(t);document.body.classList.remove(n),document.body.classList.toggle(t,r)}function dn(){let e={};try{e=JSON.parse(localStorage.getItem(on)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`);let t=ln();document.getElementById(`toggleLeft`)?.addEventListener(`click`,fn),document.getElementById(`toggleRight`)?.addEventListener(`click`,pn),window.addEventListener(`resize`,()=>{let e=ln();if(window.innerWidth>sn){Z();let e={};try{e=JSON.parse(localStorage.getItem(on)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`),e!==t&&Z();t=e,$()}),window.innerWidth<=sn&&(document.body.classList.remove(`left-collapsed`,`right-collapsed`),ln()&&Z()),$()}function Q(){return window.innerWidth<=sn}function fn(){Q()?un(`left`):document.body.classList.toggle(`left-collapsed`),gn(),$()}function pn(){Q()?un(`right`):document.body.classList.toggle(`right-collapsed`),hn()&&document.getElementById(`tabAgents`)?.classList.contains(`active`)&&r(()=>import(`./employees-eiW0cC8z.js`).then(e=>e.loadEmployees(!0)),__vite__mapDeps([0])),gn(),$()}function mn(){return Q()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function hn(){return Q()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function $(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.innerHTML=mn()?s.chevronLeft:s.chevronRight),t&&(t.innerHTML=hn()?s.chevronRight:s.chevronLeft)}function gn(){localStorage.setItem(on,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}export{K as a,U as c,Ge as d,Se as f,pn as i,lt as l,hn as n,an as o,fn as r,Kt as s,dn as t,st as u};
49
+ ${r(`Verify`,e.spent.verificationRounds,e.maxVerificationRounds)}`}async function Bt(){try{let t=await fetch(`${n}/api/goal`);if(!t.ok)return;let r=await t.json();r.goal?e.activeGoal={id:r.goal.id,objective:r.goal.objective,status:r.goal.status,createdAt:r.goal.createdAt,updatedAt:r.goal.updatedAt,lastCheckpointSummary:r.goal.lastCheckpoint?.summary,nextAction:r.goal.lastCheckpoint?.nextAction}:e.activeGoal=null,Vt()}catch{}}function Vt(){let t=document.getElementById(`goalCockpit`);if(!t)return;let n=e.activeGoal;if(!n||n.status===`complete`||n.status===`cancelled`){t.hidden=!0,t.innerHTML=``;return}t.hidden=!1,t.replaceChildren();let r=n.status===`paused`?`paused`:n.status===`blocked`?`blocked`:`active`,i=document.createElement(`span`);i.className=`goal-objective`,i.title=n.objective,i.textContent=n.objective;let a=document.createElement(`span`);if(a.className=`goal-status goal-status--${r}`,a.textContent=n.status,t.append(i,a),n.nextAction){let e=document.createElement(`span`);e.className=`goal-next`,e.textContent=n.nextAction,t.append(e)}}function Ht(t,n){let r=new Set([`IDLE`,`I`,`P`,`A`,`B`,`C`,`D`]).has(t)?t:`IDLE`;if(e.orcState=r,r===`IDLE`||r===`D`)document.body.removeAttribute(`data-orc-state`),document.body.style.removeProperty(`--orc-glow`);else{document.body.setAttribute(`data-orc-state`,r);let e=`--orc-glow-${r}`,t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();document.body.style.setProperty(`--orc-glow`,t)}document.body.classList.add(`orc-pulse`),setTimeout(()=>document.body.classList.remove(`orc-pulse`),700);let i=document.getElementById(`orcStateBadge`);i&&(i.textContent={IDLE:``,I:`INTERVIEW`,P:`PLAN`,A:`AUDIT`,B:`BUILD`,C:`CHECK`,D:`DONE`}[r],i.style.display=r===`IDLE`?`none`:`inline-block`);let a=document.getElementById(`pabcRoadmap`),o=document.getElementById(`sharkRunner`),s=document.getElementById(`pabcBrand`);if(a&&o){if(!a.dataset.resizeObserved){a.dataset.resizeObserved=`1`,new ResizeObserver(()=>{F&&o.classList.contains(`running`)&&dt(a,o,F)}).observe(a);let e=0;window.addEventListener(`resize`,()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{F&&o.classList.contains(`running`)&&dt(a,o,F)})})}if(r===`IDLE`)a.classList.remove(`visible`,`shimmer-out`),o.classList.remove(`running`),F=null;else if(r===`D`){P.forEach(e=>{let t=document.getElementById(`dot-${e}`);t&&(t.className=`pabc-dot done`,t.setAttribute(`data-phase`,e))});for(let e=0;e<P.length;e++){let t=document.getElementById(`pabc-conn-${e}`);t&&(t.className=`pabc-connector done`)}o.classList.remove(`running`),F=null,a.classList.add(`shimmer-out`),setTimeout(()=>a.classList.remove(`visible`,`shimmer-out`),1e3)}else{a.classList.remove(`shimmer-out`),a.classList.add(`visible`),o.classList.add(`running`);let e=P.indexOf(r);P.forEach((t,n)=>{let r=document.getElementById(`dot-${t}`);r&&(r.className=`pabc-dot ${n<e?`done`:n===e?`active`:`future`}`,r.setAttribute(`data-phase`,t))});for(let t=0;t<P.length;t++){let n=document.getElementById(`pabc-conn-${t}`);n&&(n.className=`pabc-connector ${t<e?`done`:``}`)}F=r,requestAnimationFrame(()=>dt(a,o,r))}s&&n&&(s.textContent=n)}}var Ut=!1,Wt=Promise.resolve(),Gt=0;function K(){Mt(),Ut||(Ut=!0,tn()),$t(),C(a())}var Kt=K;function qt(e){console.log(`[${e}] connected`),X=2e3,Xt();let t=Date.now()-V<1e4;Wt=r(()=>import(`./ui-CB0L33o0.js`).then(async n=>{if(n.cleanupToolActivity(),!t)try{await n.loadMessages(),V=Date.now()}catch(t){console.error(`[${e}] loadMessages failed`,t)}await U(`reconnect`,{hydrateRun:!0}).catch(()=>{}).finally(()=>n.reconcileChatBottomAfterRestore(`reconnect`)),r(()=>import(`./memory-Dt_Ji6aP.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0])).catch(()=>{}),r(()=>import(`./bgtask-badge-B8KhuBa7.js`).then(e=>e.refreshBgtaskBadge()),__vite__mapDeps([0])).catch(()=>{})}),void 0)}function Jt(){re(`replay_gap`),Wt=r(()=>import(`./ui-CB0L33o0.js`).then(async e=>{try{await e.loadMessages(),V=Date.now()}catch(e){console.error(`[sse] replay gap loadMessages failed`,e)}await U(`replay_gap`,{hydrateRun:!0}).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`replay_gap`))}),__vite__mapDeps([0]))}var Yt=8e3,q=null;function Xt(){q!==null&&(window.clearTimeout(q),q=null)}function Zt(){console.log(`[channel] disconnected`),r(()=>import(`./ui-CB0L33o0.js`).then(e=>e.cleanupToolActivity()),__vite__mapDeps([0])),q===null&&(q=window.setTimeout(()=>{q=null,l(`idle`),u(`${s.exec} ${c(`ws.disconnected`)}`,`tool-activity`)},Yt))}var J=null,Y=!1,X=2e3,Qt=3e4;function $t(){if(J){Y=!0;try{J.close()}catch{}J=null}}function en(){if(J)return;console.warn(`[channel] /api/events unavailable — falling back to legacy WebSocket`);let e=`ws://${location.host}`,t=new WebSocket(`${e}${n}/?lang=${a()}`);J=t,Y=!1,t.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[ws] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.type!=`string`){console.warn(`[ws] invalid message shape:`,t);return}nn(t)};let r=!1;t.onopen=()=>{r=!0,X=2e3,qt(`ws`)},t.onclose=()=>{if(J===t&&(J=null),Y){Y=!1;return}if(r){Zt(),setTimeout(K,2e3);return}X=Math.min(X*2,Qt),setTimeout(K,X)}}function tn(){Me(`widget`,`widget_updated`,e=>{let t=e.chatId,n=e.widgetId;typeof t!=`string`||typeof n!=`string`||r(()=>import(`./iframe-renderer-DBmV8gCQ.js`).then(e=>e.refreshFileWidget(t,n)),__vite__mapDeps([0])).catch(e=>console.warn(`[widget] refresh failed:`,e.message))}),Me(`*`,null,e=>{nn({...e,type:e.event})}),ke(()=>qt(`sse`)),Ae(()=>Zt()),je(()=>en())}function nn(t){if(t.type===`agent_tool`){if(f())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,n=ht(t.traceSeq);if(mt(e)||vt(e,n,t.sseReplay===!0))return;t.isEmployee!==!0&&bt(e);let r=t.toolType===`thinking`?`thinking`:t.toolType===`search`?`search`:t.toolType===`subagent`?`subagent`:`tool`;se({id:`step-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:r,icon:t.icon||s.tool,rawIcon:t.rawIcon||t.icon||``,label:t.label||``,isEmployee:t.isEmployee===!0,detail:t.detail||``,stepRef:t.stepRef||``,traceRunId:t.traceRunId||``,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status||`running`,startTime:typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:Date.now()},typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:void 0),gt(e,n)}else if(t.type===`agent_output`||t.type===`agent_chunk`){if(f())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(mt(e))return;bt(e);let n=t.text||``;if(e&&typeof t.textLen==`number`){if(t.textLen<=R){t.sseReplay!==!0&&t.textLen<R&&(console.warn(`[ws] live agent_output behind applied cursor — resync (${t.textLen} < ${R})`),R=t.textLen);return}let e=t.textLen-R;e<n.length&&(n=n.slice(-e)),R=t.textLen}fe(n)}else if(t.type===`agent_status`){if(!t.running&&f())return;t.running&&f()&&ce(),t.running===void 0?l(t.status||`idle`):l(t.running?`running`:`idle`),t.agentId&&t.phase&&(I[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``},r(()=>import(`./employees-BNy8a6XX.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])))}else if(t.type===`bgtask_update`)r(()=>import(`./bgtask-badge-B8KhuBa7.js`).then(e=>e.applyBgtaskUpdate(t)),__vite__mapDeps([0])).catch(()=>{});else if(t.type===`queue_update`)oe(t.pending||0),Array.isArray(t.queued)&&D(t.queued),U(`queue_update`).catch(()=>{});else if(t.type===`agent_retry`){let e=Number(t.delay??0),n=t.reason,r=o(String(n||`429`));u(c(e>0?`ws.retry`:`ws.retryNow`,{cli:o(t.cli||``),reason:r,delay:e}),`tool-activity`)}else if(t.type===`agent_fallback`)u(c(`ws.fallback`,{from:o(t.from||``),to:o(t.to||``)}),`tool-activity`);else if(t.type===`agent_smoke`)u(`${s.warning} ${o(t.cli||`agent`)}: smoke response detected — auto-continuing`,`tool-activity`);else if(t.type===`goal_done`)e.activeGoal=null,Vt(),u(`🎯 Goal completed${t.source===`ai_output`?` (detected from AI output)`:``}`,`tool-activity`);else if(t.type===`goal_cancel`)e.activeGoal=null,Vt(),u(`🎯 Goal cancelled`,`tool-activity`);else if(t.type===`schedule_wakeup`)u(`⏰ Wakeup scheduled in ${t.delaySeconds}s — ${o(String(t.reason||``))}`,`tool-activity`);else if(t.type===`goal_continuation_limit`)u(`⚠️ Goal continuation limit reached (${t.attempts} attempts)`,`tool-activity`);else if(t.type===`goal_continuation`)u(`🎯 Active goal — auto-continuing`,`tool-activity`);else if(t.type===`agent_done`){if(!(t.steered||f())){let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(mt(e)||e&&L&&e!==L)return;yt(e),d(t.text||``,t.toolLog),ct()}}else if(t.type===`orchestrate_done`)yt(null),d(t.text||``),ct();else if(t.type===`clear`){te(),ue(),ne().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``),r(()=>import(`./idb-cache-B5PX63p7.js`).then(e=>e.clearScopedCache()),[]).catch(()=>{})}else if(t.type===`session_reset`)u(`${s.refresh} Session reset — history preserved`,`tool-activity`);else if(t.type===`agent_added`||t.type===`agent_updated`||t.type===`agent_deleted`)r(()=>import(`./employees-BNy8a6XX.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0]));else if(t.type===`heartbeat_pending`){let e={pending:t.pending||0,deferredPending:t.deferredPending||0};t.reason!==void 0&&(e.reason=t.reason),t.policy!==void 0&&(e.policy=t.policy),t.jobId!==void 0&&(e.jobId=t.jobId),t.jobName!==void 0&&(e.jobName=t.jobName),Pt(e)}else if(t.type===`orc_state`)rn(t);else if(t.type===`memory_status`)r(()=>import(`./memory-Dt_Ji6aP.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0]));else if(t.type===`steer_started`)pe(),yt(null),d(``),l(`steering`);else if(t.type===`new_message`&&(t.source===`telegram`||t.source===`discord`||t.source===`slack`||t.source===`bgtask`||t.source===`cli`||t.source===`goal`||t.external===!0||t.fromQueue===!0)){let e=t.role===`assistant`?`agent`:t.role||`user`,n=t.content||``,i=t.cli;r(()=>import(`./message-history-DyISauiv.js`).then(t=>{if(t.historyReloadInFlight()){t.loadMessages().then(()=>t.loadMessages()).catch(e=>console.warn(`[ws] new_message reload after in-flight failed`,e));return}ae(e,n,i)}),__vite__mapDeps([0]))}else t.type===`system_notice`?u(`ℹ️ ${o(t.text||``)}`,`tool-activity`):t.type===`replay_gap`?Jt():t.type===`worker_stalled`?u(`⚠️ Worker stalled: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`worker_disconnected`?u(`🔌 Worker disconnected: ${o(t.agentId||``)} (exit ${o(String(t.exitCode??`?`))})`,`tool-activity`):t.type===`worker_timeout`?u(`⏱️ Worker timed out: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`alert_escalation`?u(o(t.message||``),`tool-activity`):t.type===`schedule_wakeup_failed`?u(`⚠️ Wakeup failed — ${o(String(t.reason||``))}: ${o(t.error||``)}`,`tool-activity`):t.type===`goal_continuation_failed`?u(`⚠️ Goal continuation failed: ${o(t.error||``)}`,`tool-activity`):t.type===`settings_change`?jt(t):t.type===`session_list`?ee(t):(t.type===`session_switched`||t.type===`session_created`)&&window.location.reload()}function rn(e){let t=++Gt;Wt.then(()=>{t===Gt&&ut(e.scope,St)&&(Ht(typeof e.state==`string`?e.state:`IDLE`,e.title),Ft({taskAnchor:e.taskAnchor||null,resolvedSelection:e.resolvedSelection||null,interview:e.interview||null}),zt(e.buildBudget||null,typeof e.state==`string`?e.state:`IDLE`))})}function an(e){return I[e]||null}var on=`sidebarState`,sn=900,cn=768;function ln(){return window.innerWidth<=cn}function Z(){document.body.classList.remove(`left-expanded`,`right-expanded`)}function un(e){let t=`${e}-expanded`,n=e===`left`?`right-expanded`:`left-expanded`,r=!document.body.classList.contains(t);document.body.classList.remove(n),document.body.classList.toggle(t,r)}function dn(){let e={};try{e=JSON.parse(localStorage.getItem(on)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`);let t=ln();document.getElementById(`toggleLeft`)?.addEventListener(`click`,fn),document.getElementById(`toggleRight`)?.addEventListener(`click`,pn),window.addEventListener(`resize`,()=>{let e=ln();if(window.innerWidth>sn){Z();let e={};try{e=JSON.parse(localStorage.getItem(on)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`),e!==t&&Z();t=e,$()}),window.innerWidth<=sn&&(document.body.classList.remove(`left-collapsed`,`right-collapsed`),ln()&&Z()),$()}function Q(){return window.innerWidth<=sn}function fn(){Q()?un(`left`):document.body.classList.toggle(`left-collapsed`),gn(),$()}function pn(){Q()?un(`right`):document.body.classList.toggle(`right-collapsed`),hn()&&document.getElementById(`tabAgents`)?.classList.contains(`active`)&&r(()=>import(`./employees-BNy8a6XX.js`).then(e=>e.loadEmployees(!0)),__vite__mapDeps([0])),gn(),$()}function mn(){return Q()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function hn(){return Q()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function $(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.innerHTML=mn()?s.chevronLeft:s.chevronRight),t&&(t.innerHTML=hn()?s.chevronRight:s.chevronLeft)}function gn(){localStorage.setItem(on,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}export{K as a,U as c,Ge as d,Se as f,pn as i,lt as l,hn as n,an as o,fn as r,Kt as s,dn as t,st as u};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./state-DxpgDKMO.js";import{i as t}from"./api-tVoG39dL.js";import{M as n,O as r,P as i,R as a,j as o}from"./render-BDso7Yb5.js";var s=[`productivity`,`communication`,`devtools`,`ai-media`,`utility`,`smarthome`,`automation`];function c(e,t){return t?[e.id,e.name,e.description,e.category,e.requires?.env?.join(` `),e.requires?.bins?.join(` `),e.install].filter(Boolean).join(` `).toLowerCase().includes(t):!0}async function l(){try{e.allSkills=await(await i(`/api/skills`)).json(),u()}catch{let e=document.getElementById(`skillsList`);e&&(e.innerHTML=`<div style="color:var(--text-dim);font-size:11px">${a(`skill.loadFail`)}</div>`)}}function u(){let t=document.getElementById(`skillsList`),i=document.getElementById(`skillsCount`);if(!t||!i)return;let l=e.allSkills,u=l;e.currentSkillFilter===`installed`?u=l.filter(e=>e.enabled):e.currentSkillFilter===`other`?u=l.filter(e=>!s.includes(e.category||``)):e.currentSkillFilter!==`all`&&(u=l.filter(t=>t.category===e.currentSkillFilter));let d=e.currentSkillSearch.trim().toLowerCase();u=u.filter(e=>c(e,d));let f=l.filter(e=>e.enabled).length;if(i.textContent=d?a(`skill.countFiltered`,{shown:u.length,active:f,total:l.length}):a(`skill.count`,{active:f,total:l.length}),!u.length){t.innerHTML=`<div class="skill-empty">${n(a(`skill.search.empty`))}</div>`;return}t.innerHTML=u.map(e=>{let t=[];return e.requires?.env&&t.push(`${r.key} `+e.requires.env.map(e=>n(e)).join(`, `)),e.requires?.bins&&t.push(`${r.settings} `+e.requires.bins.map(e=>n(e)).join(`, `)),e.install&&t.push(n(e.install)),`
1
+ import{t as e}from"./state-DxpgDKMO.js";import{i as t}from"./api-tVoG39dL.js";import{M as n,O as r,P as i,R as a,j as o}from"./render-A--hkukv.js";var s=[`productivity`,`communication`,`devtools`,`ai-media`,`utility`,`smarthome`,`automation`];function c(e,t){return t?[e.id,e.name,e.description,e.category,e.requires?.env?.join(` `),e.requires?.bins?.join(` `),e.install].filter(Boolean).join(` `).toLowerCase().includes(t):!0}async function l(){try{e.allSkills=await(await i(`/api/skills`)).json(),u()}catch{let e=document.getElementById(`skillsList`);e&&(e.innerHTML=`<div style="color:var(--text-dim);font-size:11px">${a(`skill.loadFail`)}</div>`)}}function u(){let t=document.getElementById(`skillsList`),i=document.getElementById(`skillsCount`);if(!t||!i)return;let l=e.allSkills,u=l;e.currentSkillFilter===`installed`?u=l.filter(e=>e.enabled):e.currentSkillFilter===`other`?u=l.filter(e=>!s.includes(e.category||``)):e.currentSkillFilter!==`all`&&(u=l.filter(t=>t.category===e.currentSkillFilter));let d=e.currentSkillSearch.trim().toLowerCase();u=u.filter(e=>c(e,d));let f=l.filter(e=>e.enabled).length;if(i.textContent=d?a(`skill.countFiltered`,{shown:u.length,active:f,total:l.length}):a(`skill.count`,{active:f,total:l.length}),!u.length){t.innerHTML=`<div class="skill-empty">${n(a(`skill.search.empty`))}</div>`;return}t.innerHTML=u.map(e=>{let t=[];return e.requires?.env&&t.push(`${r.key} `+e.requires.env.map(e=>n(e)).join(`, `)),e.requires?.bins&&t.push(`${r.settings} `+e.requires.bins.map(e=>n(e)).join(`, `)),e.install&&t.push(n(e.install)),`
2
2
  <div class="skill-card ${e.enabled?`enabled`:``}">
3
3
  <div class="skill-card-header">
4
4
  <span class="skill-emoji">${e.emoji?o(e.emoji):r.tool}</span>
@@ -0,0 +1 @@
1
+ import{n as e}from"./skills-BU4q8Q8n.js";export{e as loadSkills};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./api-tVoG39dL.js";import{M as t,R as n}from"./render-BDso7Yb5.js";import{t as r}from"./locale-DC-ZsWOf.js";var i={activeCli:o(`activeCli`,2,1,2,2,1,3),model:o(`model`,2,1,1,2,1,2),effort:o(`effort`,2,1,1),permissions:o(`permissions`,2,1,1),flushAgent:o(`flushAgent`,2,1,1,2,1,3),employees:o(`employees`,3,3,2,4,1,2),skills:o(`skills`,2,1,1,4,1,3),activeChannel:o(`activeChannel`,2,1,1),telegram:{...o(`telegram`,2,1,2,8),docLinks:[{url:`https://t.me/BotFather`,labelKey:`help.telegram.link.botfather`},{url:`https://core.telegram.org/bots/tutorial`,labelKey:`help.telegram.link.docs`}]},discord:{...o(`discord`,2,1,2,9),docLinks:[{url:`https://discord.com/developers/applications`,labelKey:`help.discord.link.portal`},{url:`https://discord.com/developers/docs/getting-started`,labelKey:`help.discord.link.docs`}]},slack:{...o(`slack`,2,1,2,9),docLinks:[{url:`https://api.slack.com/apps`,labelKey:`help.slack.link.portal`},{url:`https://docs.slack.dev/apis/events-api/using-socket-mode/`,labelKey:`help.slack.link.docs`}]},fallbackOrder:o(`fallbackOrder`,2,1,1,2,1,3),mcp:o(`mcp`,2,1,1,4,1,5),memory:o(`memory`,2,1,2,4,1,2),stt:o(`stt`,2,1,1),promptTemplates:o(`promptTemplates`,2,1,1),chatInput:o(`chatInput`,3,2,2),orchestration:o(`orchestration`,3,2,2,8,1,8),attachments:o(`attachments`,3,2,2),diagrams:o(`diagrams`,3,2,2),keyboardShortcuts:o(`keyboardShortcuts`,3,2,2,3,2,3),session:o(`session`,3,1,2,8,1,9),cliTools:o(`cliTools`,3,1,2,6,1,9),agentControl:o(`agentControl`,3,1,2,6,1,6),goals:o(`goals`,3,1,2,10,1,25)};function a(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(i,e)}function o(e,t,n,r,i=2,a=1,o=0){return{titleKey:`help.${e}.title`,introKey:`help.${e}.intro`,effectKey:`help.${e}.effect`,useWhenKeys:s(`help.${e}.use`,t),howToKeys:s(`help.${e}.howTo`,i),exampleKeys:s(`help.${e}.example`,a),avoidWhenKeys:s(`help.${e}.avoid`,n),relatedKeys:s(`help.${e}.related`,r),...o>0?{subcmdKeys:s(`help.${e}.subcmd`,o)}:{}}}function s(e,t){return Array.from({length:t},(t,n)=>`${e}.${n+1}`)}var c=!1,l=null,u=null,d=null,f=null,p=null,m=!1;function h(){c||(c=!0,document.addEventListener(`click`,v),document.addEventListener(`keydown`,y,!0))}function g(e,t=null,n=[e]){if(!i[e]){console.warn(`[help-dialog] unknown topic:`,e);return}b(),p=t,x(e,T(n,e)),l?.classList.add(`open`),l?.setAttribute(`aria-hidden`,`false`),m=!0,requestAnimationFrame(()=>f?.focus())}function _(){if(!m)return;l?.classList.remove(`open`),l?.setAttribute(`aria-hidden`,`true`),m=!1;let e=p;p=null,e?.focus()}function v(e){let t=e.target?.closest(`[data-help-topic]`);if(!t)return;let n=t.getAttribute(`data-help-topic`);if(!a(n)){console.warn(`[help-dialog] invalid topic:`,n);return}e.preventDefault(),g(n,t,w(t.getAttribute(`data-help-topics`),n))}function y(e){!m||e.key!==`Escape`||(e.preventDefault(),e.stopImmediatePropagation(),_())}function b(){if(l&&u&&d&&f)return;l=document.createElement(`div`),l.id=`helpDialog`,l.className=`modal-overlay help-dialog-overlay`,l.setAttribute(`role`,`presentation`),l.setAttribute(`aria-hidden`,`true`),l.addEventListener(`click`,e=>{e.target===l&&_()});let e=document.createElement(`div`);e.className=`modal-box help-dialog-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,`helpDialogTitle`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header help-dialog-header`,u=document.createElement(`span`),u.id=`helpDialogTitle`,f=document.createElement(`button`),f.type=`button`,f.className=`btn-modal-close help-dialog-close`,f.setAttribute(`aria-label`,n(`help.close`)),f.textContent=`x`,f.addEventListener(`click`,()=>_()),d=document.createElement(`div`),d.className=`help-dialog-body`;let r=document.createElement(`div`);r.className=`modal-footer help-dialog-footer`;let i=document.createElement(`button`);i.type=`button`,i.className=`btn-save help-dialog-done`,i.textContent=n(`help.close`),i.addEventListener(`click`,()=>_()),t.append(u,f),r.append(i),e.append(t,d,r),l.append(e),document.body.append(l)}function x(e,t=[e]){if(!u||!d||!f)return;let r=i[e];u.textContent=n(r.titleKey),f.setAttribute(`aria-label`,n(`help.close`)),d.replaceChildren();let a=document.createElement(`div`);if(a.className=`help-dialog-content`,S(a,r),t.length<=1){d.append(a);return}let o=document.createElement(`div`);o.className=`help-dialog-layout`,o.append(C(t,e),a),d.append(o)}function S(e,t){t.docLinks?.length&&E(e,t.docLinks),D(e,n(`help.section.what`),n(t.introKey)),D(e,n(`help.section.effect`),n(t.effectKey),`help-effect-text`),O(e,n(`help.section.useWhen`),t.useWhenKeys),A(e,n(`help.section.howTo`),t.howToKeys),O(e,n(`help.section.example`),t.exampleKeys,!1,`help-example-list`),t.avoidWhenKeys?.length&&O(e,n(`help.section.avoidWhen`),t.avoidWhenKeys),t.subcmdKeys?.length&&j(e,n(`help.section.commands`),t.subcmdKeys),t.relatedKeys?.length&&O(e,n(`help.section.related`),t.relatedKeys,!0)}function C(e,t){let r=document.createElement(`nav`);r.className=`help-dialog-nav`,r.setAttribute(`aria-label`,n(`help.section.related`));for(let a of e){let o=i[a],s=document.createElement(`button`);s.type=`button`,s.className=`help-dialog-nav-item`,s.textContent=n(o.titleKey),a===t&&(s.classList.add(`active`),s.setAttribute(`aria-current`,`page`)),s.addEventListener(`click`,()=>x(a,e)),r.append(s)}return r}function w(e,t){return T(e?.split(/[\s,]+/).filter(Boolean)??[],t)}function T(e,t){let n=[];for(let t of e)a(t)&&!n.includes(t)&&n.push(t);return n.includes(t)||n.unshift(t),n}function E(e,t){let r=document.createElement(`section`);r.className=`help-dialog-section help-doc-links`;let i=document.createElement(`nav`);i.className=`help-doc-links-nav`;for(let e of t){let t=document.createElement(`a`);t.href=e.url,t.target=`_blank`,t.rel=`noopener noreferrer`,t.className=`help-doc-link`,t.textContent=n(e.labelKey);let r=document.createElement(`span`);r.className=`help-doc-link-icon`,r.textContent=`↗`,t.append(r),i.append(t)}r.append(i),e.append(r)}function D(e,t,n,r){let i=k(t),a=document.createElement(`p`);r&&(a.className=r),a.textContent=n,i.append(a),e.append(i)}function O(e,t,r,i=!1,a){let o=k(t),s=document.createElement(`ul`);s.className=a??(i?`help-related-list`:`help-dialog-list`);for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),s.append(t)}o.append(s),e.append(o)}function k(e){let t=document.createElement(`section`);t.className=`help-dialog-section`;let n=document.createElement(`h3`);return n.textContent=e,t.append(n),t}function A(e,t,r){let i=k(t),a=document.createElement(`ol`);a.className=`help-dialog-list help-howto-list`;for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),a.append(t)}i.append(a),e.append(i)}function j(e,t,r){let i=k(t),a=document.createElement(`dl`);a.className=`help-subcmd-list`;for(let e of r){let t=n(e),r=t.indexOf(` — `),i=r>=0?t.slice(0,r):t,o=r>=0?t.slice(r+3):``,s=document.createElement(`dt`);s.className=`help-subcmd-cmd`;let c=document.createElement(`code`);c.textContent=i,s.append(c);let l=document.createElement(`dd`);l.className=`help-subcmd-desc`,l.textContent=o,a.append(s,l)}i.append(a),e.append(i)}var M={mcp:`mcp`,memory:`memory`,model:`model`,effort:`effort`,cli:`activeCli`,skill:`skills`,employee:`employees`,orchestrate:`orchestration`,pabcd:`orchestration`,flush:`flushAgent`,fallback:`fallbackOrder`,prompt:`promptTemplates`,browser:`mcp`,status:`activeCli`,steer:`chatInput`,clear:`session`,compact:`session`,reset:`session`,purge:`session`,new:`session`,switch:`session`,sw:`session`,sessions:`session`,ss:`session`,version:`cliTools`,project:`cliTools`,proj:`cliTools`,ide:`cliTools`,file:`cliTools`,forward:`agentControl`,thought:`agentControl`,goal:`goals`,goalplan:`goals`,gd:`goals`,plan:`goals`,interview:`goals`,deliberate:`goals`,planaudit:`goals`,review:`goals`,search:`mcp`,team:`goals`,task:`goals`,help:`keyboardShortcuts`,h:`keyboardShortcuts`,commands:`keyboardShortcuts`,cmd:`keyboardShortcuts`,fork:`session`,quit:`session`,q:`session`,exit:`session`,telegram:`telegram`,discord:`discord`,slack:`slack`,stt:`stt`,attachments:`attachments`,diagrams:`diagrams`};function N(e){let t=e.replace(/^\//,``).trim().split(/\s+/);if(t.length<2||t[t.length-1].toLowerCase()!==`info`)return!1;let n=M[t[0].toLowerCase()];return n?(g(n),!0):!1}var P=[],F=[],I=-1,L=!1,R=null;function z(e){let t=String(e||``).slice(1).trim().split(/\s+/)[0]||``;return t.includes(`/`)||t.includes(`\\`)}var B=()=>document.getElementById(`cmdDropdown`),V=()=>document.getElementById(`chatInput`);function H(e){let t=String(e||``).toLowerCase();return P.filter(e=>`/${e.name}`.startsWith(t))}function U(e){let t=e.workflow?.workflowArgs||[];return t.length?t.map(e=>e.required?`<${e.name}>`:`[${e.name}]`).join(` `):e.args||``}function W(e){let n=e.workflow;return n?`<span class="cmd-meta">
1
+ import{n as e}from"./api-tVoG39dL.js";import{M as t,R as n}from"./render-A--hkukv.js";import{t as r}from"./locale-DC-ZsWOf.js";var i={activeCli:o(`activeCli`,2,1,2,2,1,3),model:o(`model`,2,1,1,2,1,2),effort:o(`effort`,2,1,1),permissions:o(`permissions`,2,1,1),flushAgent:o(`flushAgent`,2,1,1,2,1,3),employees:o(`employees`,3,3,2,4,1,2),skills:o(`skills`,2,1,1,4,1,3),activeChannel:o(`activeChannel`,2,1,1),telegram:{...o(`telegram`,2,1,2,8),docLinks:[{url:`https://t.me/BotFather`,labelKey:`help.telegram.link.botfather`},{url:`https://core.telegram.org/bots/tutorial`,labelKey:`help.telegram.link.docs`}]},discord:{...o(`discord`,2,1,2,9),docLinks:[{url:`https://discord.com/developers/applications`,labelKey:`help.discord.link.portal`},{url:`https://discord.com/developers/docs/getting-started`,labelKey:`help.discord.link.docs`}]},slack:{...o(`slack`,2,1,2,9),docLinks:[{url:`https://api.slack.com/apps`,labelKey:`help.slack.link.portal`},{url:`https://docs.slack.dev/apis/events-api/using-socket-mode/`,labelKey:`help.slack.link.docs`}]},fallbackOrder:o(`fallbackOrder`,2,1,1,2,1,3),mcp:o(`mcp`,2,1,1,4,1,5),memory:o(`memory`,2,1,2,4,1,2),stt:o(`stt`,2,1,1),promptTemplates:o(`promptTemplates`,2,1,1),chatInput:o(`chatInput`,3,2,2),orchestration:o(`orchestration`,3,2,2,8,1,8),attachments:o(`attachments`,3,2,2),diagrams:o(`diagrams`,3,2,2),keyboardShortcuts:o(`keyboardShortcuts`,3,2,2,3,2,3),session:o(`session`,3,1,2,8,1,9),cliTools:o(`cliTools`,3,1,2,6,1,9),agentControl:o(`agentControl`,3,1,2,6,1,6),goals:o(`goals`,3,1,2,10,1,25)};function a(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(i,e)}function o(e,t,n,r,i=2,a=1,o=0){return{titleKey:`help.${e}.title`,introKey:`help.${e}.intro`,effectKey:`help.${e}.effect`,useWhenKeys:s(`help.${e}.use`,t),howToKeys:s(`help.${e}.howTo`,i),exampleKeys:s(`help.${e}.example`,a),avoidWhenKeys:s(`help.${e}.avoid`,n),relatedKeys:s(`help.${e}.related`,r),...o>0?{subcmdKeys:s(`help.${e}.subcmd`,o)}:{}}}function s(e,t){return Array.from({length:t},(t,n)=>`${e}.${n+1}`)}var c=!1,l=null,u=null,d=null,f=null,p=null,m=!1;function h(){c||(c=!0,document.addEventListener(`click`,v),document.addEventListener(`keydown`,y,!0))}function g(e,t=null,n=[e]){if(!i[e]){console.warn(`[help-dialog] unknown topic:`,e);return}b(),p=t,x(e,T(n,e)),l?.classList.add(`open`),l?.setAttribute(`aria-hidden`,`false`),m=!0,requestAnimationFrame(()=>f?.focus())}function _(){if(!m)return;l?.classList.remove(`open`),l?.setAttribute(`aria-hidden`,`true`),m=!1;let e=p;p=null,e?.focus()}function v(e){let t=e.target?.closest(`[data-help-topic]`);if(!t)return;let n=t.getAttribute(`data-help-topic`);if(!a(n)){console.warn(`[help-dialog] invalid topic:`,n);return}e.preventDefault(),g(n,t,w(t.getAttribute(`data-help-topics`),n))}function y(e){!m||e.key!==`Escape`||(e.preventDefault(),e.stopImmediatePropagation(),_())}function b(){if(l&&u&&d&&f)return;l=document.createElement(`div`),l.id=`helpDialog`,l.className=`modal-overlay help-dialog-overlay`,l.setAttribute(`role`,`presentation`),l.setAttribute(`aria-hidden`,`true`),l.addEventListener(`click`,e=>{e.target===l&&_()});let e=document.createElement(`div`);e.className=`modal-box help-dialog-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,`helpDialogTitle`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header help-dialog-header`,u=document.createElement(`span`),u.id=`helpDialogTitle`,f=document.createElement(`button`),f.type=`button`,f.className=`btn-modal-close help-dialog-close`,f.setAttribute(`aria-label`,n(`help.close`)),f.textContent=`x`,f.addEventListener(`click`,()=>_()),d=document.createElement(`div`),d.className=`help-dialog-body`;let r=document.createElement(`div`);r.className=`modal-footer help-dialog-footer`;let i=document.createElement(`button`);i.type=`button`,i.className=`btn-save help-dialog-done`,i.textContent=n(`help.close`),i.addEventListener(`click`,()=>_()),t.append(u,f),r.append(i),e.append(t,d,r),l.append(e),document.body.append(l)}function x(e,t=[e]){if(!u||!d||!f)return;let r=i[e];u.textContent=n(r.titleKey),f.setAttribute(`aria-label`,n(`help.close`)),d.replaceChildren();let a=document.createElement(`div`);if(a.className=`help-dialog-content`,S(a,r),t.length<=1){d.append(a);return}let o=document.createElement(`div`);o.className=`help-dialog-layout`,o.append(C(t,e),a),d.append(o)}function S(e,t){t.docLinks?.length&&E(e,t.docLinks),D(e,n(`help.section.what`),n(t.introKey)),D(e,n(`help.section.effect`),n(t.effectKey),`help-effect-text`),O(e,n(`help.section.useWhen`),t.useWhenKeys),A(e,n(`help.section.howTo`),t.howToKeys),O(e,n(`help.section.example`),t.exampleKeys,!1,`help-example-list`),t.avoidWhenKeys?.length&&O(e,n(`help.section.avoidWhen`),t.avoidWhenKeys),t.subcmdKeys?.length&&j(e,n(`help.section.commands`),t.subcmdKeys),t.relatedKeys?.length&&O(e,n(`help.section.related`),t.relatedKeys,!0)}function C(e,t){let r=document.createElement(`nav`);r.className=`help-dialog-nav`,r.setAttribute(`aria-label`,n(`help.section.related`));for(let a of e){let o=i[a],s=document.createElement(`button`);s.type=`button`,s.className=`help-dialog-nav-item`,s.textContent=n(o.titleKey),a===t&&(s.classList.add(`active`),s.setAttribute(`aria-current`,`page`)),s.addEventListener(`click`,()=>x(a,e)),r.append(s)}return r}function w(e,t){return T(e?.split(/[\s,]+/).filter(Boolean)??[],t)}function T(e,t){let n=[];for(let t of e)a(t)&&!n.includes(t)&&n.push(t);return n.includes(t)||n.unshift(t),n}function E(e,t){let r=document.createElement(`section`);r.className=`help-dialog-section help-doc-links`;let i=document.createElement(`nav`);i.className=`help-doc-links-nav`;for(let e of t){let t=document.createElement(`a`);t.href=e.url,t.target=`_blank`,t.rel=`noopener noreferrer`,t.className=`help-doc-link`,t.textContent=n(e.labelKey);let r=document.createElement(`span`);r.className=`help-doc-link-icon`,r.textContent=`↗`,t.append(r),i.append(t)}r.append(i),e.append(r)}function D(e,t,n,r){let i=k(t),a=document.createElement(`p`);r&&(a.className=r),a.textContent=n,i.append(a),e.append(i)}function O(e,t,r,i=!1,a){let o=k(t),s=document.createElement(`ul`);s.className=a??(i?`help-related-list`:`help-dialog-list`);for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),s.append(t)}o.append(s),e.append(o)}function k(e){let t=document.createElement(`section`);t.className=`help-dialog-section`;let n=document.createElement(`h3`);return n.textContent=e,t.append(n),t}function A(e,t,r){let i=k(t),a=document.createElement(`ol`);a.className=`help-dialog-list help-howto-list`;for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),a.append(t)}i.append(a),e.append(i)}function j(e,t,r){let i=k(t),a=document.createElement(`dl`);a.className=`help-subcmd-list`;for(let e of r){let t=n(e),r=t.indexOf(` — `),i=r>=0?t.slice(0,r):t,o=r>=0?t.slice(r+3):``,s=document.createElement(`dt`);s.className=`help-subcmd-cmd`;let c=document.createElement(`code`);c.textContent=i,s.append(c);let l=document.createElement(`dd`);l.className=`help-subcmd-desc`,l.textContent=o,a.append(s,l)}i.append(a),e.append(i)}var M={mcp:`mcp`,memory:`memory`,model:`model`,effort:`effort`,cli:`activeCli`,skill:`skills`,employee:`employees`,orchestrate:`orchestration`,pabcd:`orchestration`,flush:`flushAgent`,fallback:`fallbackOrder`,prompt:`promptTemplates`,browser:`mcp`,status:`activeCli`,steer:`chatInput`,clear:`session`,compact:`session`,reset:`session`,purge:`session`,new:`session`,switch:`session`,sw:`session`,sessions:`session`,ss:`session`,version:`cliTools`,project:`cliTools`,proj:`cliTools`,ide:`cliTools`,file:`cliTools`,forward:`agentControl`,thought:`agentControl`,goal:`goals`,goalplan:`goals`,gd:`goals`,plan:`goals`,interview:`goals`,deliberate:`goals`,planaudit:`goals`,review:`goals`,search:`mcp`,team:`goals`,task:`goals`,help:`keyboardShortcuts`,h:`keyboardShortcuts`,commands:`keyboardShortcuts`,cmd:`keyboardShortcuts`,fork:`session`,quit:`session`,q:`session`,exit:`session`,telegram:`telegram`,discord:`discord`,slack:`slack`,stt:`stt`,attachments:`attachments`,diagrams:`diagrams`};function N(e){let t=e.replace(/^\//,``).trim().split(/\s+/);if(t.length<2||t[t.length-1].toLowerCase()!==`info`)return!1;let n=M[t[0].toLowerCase()];return n?(g(n),!0):!1}var P=[],F=[],I=-1,L=!1,R=null;function z(e){let t=String(e||``).slice(1).trim().split(/\s+/)[0]||``;return t.includes(`/`)||t.includes(`\\`)}var B=()=>document.getElementById(`cmdDropdown`),V=()=>document.getElementById(`chatInput`);function H(e){let t=String(e||``).toLowerCase();return P.filter(e=>`/${e.name}`.startsWith(t))}function U(e){let t=e.workflow?.workflowArgs||[];return t.length?t.map(e=>e.required?`<${e.name}>`:`[${e.name}]`).join(` `):e.args||``}function W(e){let n=e.workflow;return n?`<span class="cmd-meta">
2
2
  <span class="cmd-chip">${t(n.phase)}</span>
3
3
  <span class="cmd-chip cmd-risk-${t(n.risk)}">${t(n.risk)}</span>
4
4
  <span class="cmd-chip">${t(n.output)}</span>
@@ -0,0 +1 @@
1
+ import{a as e}from"./slash-commands-BiXOgZ5B.js";export{e as loadCommands};