agent-tower 0.6.0-beta.0 → 0.6.0-beta.1

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 (192) hide show
  1. package/README.md +2 -0
  2. package/dist/executors/__tests__/providers-availability.test.js +18 -1
  3. package/dist/executors/__tests__/providers-availability.test.js.map +1 -1
  4. package/dist/executors/index.js +2 -2
  5. package/dist/executors/index.js.map +1 -1
  6. package/dist/routes/__tests__/providers.test.js +16 -0
  7. package/dist/routes/__tests__/providers.test.js.map +1 -1
  8. package/dist/routes/providers.d.ts.map +1 -1
  9. package/dist/routes/providers.js +12 -5
  10. package/dist/routes/providers.js.map +1 -1
  11. package/dist/routes/system.d.ts.map +1 -1
  12. package/dist/routes/system.js +1 -7
  13. package/dist/routes/system.js.map +1 -1
  14. package/dist/runtime/__tests__/acp-agent-definitions.test.js +7 -0
  15. package/dist/runtime/__tests__/acp-agent-definitions.test.js.map +1 -1
  16. package/dist/runtime/__tests__/acp-driver-cleanup.test.js +3 -1
  17. package/dist/runtime/__tests__/acp-driver-cleanup.test.js.map +1 -1
  18. package/dist/runtime/__tests__/acp-driver-lifecycle.test.d.ts +2 -0
  19. package/dist/runtime/__tests__/acp-driver-lifecycle.test.d.ts.map +1 -0
  20. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +241 -0
  21. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -0
  22. package/dist/runtime/__tests__/acp-history-reconciler.test.d.ts +2 -0
  23. package/dist/runtime/__tests__/acp-history-reconciler.test.d.ts.map +1 -0
  24. package/dist/runtime/__tests__/acp-history-reconciler.test.js +69 -0
  25. package/dist/runtime/__tests__/acp-history-reconciler.test.js.map +1 -0
  26. package/dist/runtime/__tests__/runtime-coordinator.test.js +41 -0
  27. package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -1
  28. package/dist/runtime/acp/acp-driver.d.ts.map +1 -1
  29. package/dist/runtime/acp/acp-driver.js +61 -26
  30. package/dist/runtime/acp/acp-driver.js.map +1 -1
  31. package/dist/runtime/acp/agents/codex.d.ts.map +1 -1
  32. package/dist/runtime/acp/agents/codex.js +2 -0
  33. package/dist/runtime/acp/agents/codex.js.map +1 -1
  34. package/dist/runtime/acp/agents/pi-coding-agent.d.ts.map +1 -1
  35. package/dist/runtime/acp/agents/pi-coding-agent.js +6 -4
  36. package/dist/runtime/acp/agents/pi-coding-agent.js.map +1 -1
  37. package/dist/runtime/acp/history-reconciler.d.ts +8 -0
  38. package/dist/runtime/acp/history-reconciler.d.ts.map +1 -0
  39. package/dist/runtime/acp/history-reconciler.js +82 -0
  40. package/dist/runtime/acp/history-reconciler.js.map +1 -0
  41. package/dist/runtime/contracts.d.ts +4 -0
  42. package/dist/runtime/contracts.d.ts.map +1 -1
  43. package/dist/runtime/runtime-coordinator.d.ts +2 -1
  44. package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
  45. package/dist/runtime/runtime-coordinator.js +27 -7
  46. package/dist/runtime/runtime-coordinator.js.map +1 -1
  47. package/dist/services/__tests__/session-manager.lifecycle.test.js +4 -2
  48. package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
  49. package/dist/services/__tests__/session-manager.team-run.test.js +6 -0
  50. package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
  51. package/dist/services/mcp-config.integration.test.d.ts +2 -0
  52. package/dist/services/mcp-config.integration.test.d.ts.map +1 -0
  53. package/dist/services/mcp-config.integration.test.js +75 -0
  54. package/dist/services/mcp-config.integration.test.js.map +1 -0
  55. package/dist/services/mcp-config.service.d.ts +10 -3
  56. package/dist/services/mcp-config.service.d.ts.map +1 -1
  57. package/dist/services/mcp-config.service.js +70 -18
  58. package/dist/services/mcp-config.service.js.map +1 -1
  59. package/dist/services/mcp-config.service.test.js +44 -13
  60. package/dist/services/mcp-config.service.test.js.map +1 -1
  61. package/dist/services/session-manager.d.ts.map +1 -1
  62. package/dist/services/session-manager.js +27 -9
  63. package/dist/services/session-manager.js.map +1 -1
  64. package/dist/utils/process-launch.d.ts.map +1 -1
  65. package/dist/utils/process-launch.js +1 -3
  66. package/dist/utils/process-launch.js.map +1 -1
  67. package/dist/utils/process-launch.test.js +2 -17
  68. package/dist/utils/process-launch.test.js.map +1 -1
  69. package/dist/web/agent-icons/codex.svg +4 -1
  70. package/dist/web/agent-icons/grok-build.svg +5 -0
  71. package/dist/web/agent-icons/kiro-cli.svg +6 -0
  72. package/dist/web/agent-icons/opencode.svg +5 -0
  73. package/dist/web/agent-icons/pi-coding-agent.svg +5 -0
  74. package/dist/web/agent-icons/qwen-code.svg +13 -0
  75. package/dist/web/assets/{AgentDemoPage-BpUO2gR6.js → AgentDemoPage-XrttOpQW.js} +1 -1
  76. package/dist/web/assets/{AgentEnvironmentSettingsPage-CSBMaAvL.js → AgentEnvironmentSettingsPage-CAo0bCpZ.js} +1 -1
  77. package/dist/web/assets/{AgentLogo-C190Z6bw.js → AgentLogo-BCwbooTN.js} +1 -1
  78. package/dist/web/assets/{ConversationPage-Cer_WtdC.js → ConversationPage-kyHuICil.js} +1 -1
  79. package/dist/web/assets/{CreateTaskInput-ByeWDjc8.js → CreateTaskInput-B67vzMJD.js} +1 -1
  80. package/dist/web/assets/{DemoPage-Dpb9aAKX.js → DemoPage-DHMh9-zU.js} +1 -1
  81. package/dist/web/assets/{GeneralSettingsPage-TqbAsCZM.js → GeneralSettingsPage-DvWaqR9O.js} +1 -1
  82. package/dist/web/assets/{Icons-CyNNz4Z5.js → Icons-DADUmnB1.js} +1 -1
  83. package/dist/web/assets/{LoadingPreviewPage-DmH1TGln.js → LoadingPreviewPage-Dk91Ua1W.js} +1 -1
  84. package/dist/web/assets/{McpSettingsPage-z1_NcsMR.js → McpSettingsPage-CH8jFyxp.js} +1 -1
  85. package/dist/web/assets/{MemberAvatar-BPoYS6Il.js → MemberAvatar-l-WCdlLA.js} +1 -1
  86. package/dist/web/assets/{NotificationSettingsPage-CNsRJ6nN.js → NotificationSettingsPage-Byu8b9X3.js} +1 -1
  87. package/dist/web/assets/{ProfileSettingsPage-g1RKcEbo.js → ProfileSettingsPage-BdylqWUj.js} +1 -1
  88. package/dist/web/assets/{ProjectKanbanPage-j2v5fLfg.js → ProjectKanbanPage--cx6wNDR.js} +3 -3
  89. package/dist/web/assets/{ProjectSettingsPage-Cp89NvwE.js → ProjectSettingsPage-6psG0Vfc.js} +1 -1
  90. package/dist/web/assets/ProviderSettingsPage-BPEEkhtA.js +93 -0
  91. package/dist/web/assets/{SettingsMasterDetail-BYB-1oyf.js → SettingsMasterDetail-DTGIIGdI.js} +1 -1
  92. package/dist/web/assets/{TeamSettingsPage-Y2zCVbVD.js → TeamSettingsPage-BXuG4Bou.js} +1 -1
  93. package/dist/web/assets/{arc-BmDnqN7Q.js → arc-DrcjdWTE.js} +1 -1
  94. package/dist/web/assets/{architectureDiagram-3BPJPVTR-BIG4K9gT.js → architectureDiagram-3BPJPVTR-CAoBhXSL.js} +1 -1
  95. package/dist/web/assets/{arrow-left-CB4qTjQs.js → arrow-left-CCWDjOmp.js} +1 -1
  96. package/dist/web/assets/{blockDiagram-GPEHLZMM-CowveYw0.js → blockDiagram-GPEHLZMM-CcTSBbUq.js} +1 -1
  97. package/dist/web/assets/{c4Diagram-AAUBKEIU-CLjbYgNG.js → c4Diagram-AAUBKEIU-BuUKdgUg.js} +1 -1
  98. package/dist/web/assets/channel-Bh_PCZNP.js +1 -0
  99. package/dist/web/assets/check-BN_PVKzE.js +1 -0
  100. package/dist/web/assets/{chevron-down-BXYCSpWd.js → chevron-down-BQcW9sFf.js} +1 -1
  101. package/dist/web/assets/{chevron-right-CkcSaX8x.js → chevron-right-pH923eYp.js} +1 -1
  102. package/dist/web/assets/{chevron-up-Y8L6pbzc.js → chevron-up-DyQW115F.js} +1 -1
  103. package/dist/web/assets/{chunk-2J33WTMH-DRf_miP4.js → chunk-2J33WTMH-BWNSmQa8.js} +1 -1
  104. package/dist/web/assets/{chunk-4BX2VUAB-C6Ne_vwR.js → chunk-4BX2VUAB-Blldhw0k.js} +1 -1
  105. package/dist/web/assets/{chunk-55IACEB6-DejCglMr.js → chunk-55IACEB6-hTffyPXL.js} +1 -1
  106. package/dist/web/assets/{chunk-727SXJPM-B0MC9Ojc.js → chunk-727SXJPM-Cd48r7c-.js} +1 -1
  107. package/dist/web/assets/{chunk-AQP2D5EJ-D9f4hbMX.js → chunk-AQP2D5EJ-BdDrOIL7.js} +1 -1
  108. package/dist/web/assets/{chunk-FMBD7UC4-k90hkOQq.js → chunk-FMBD7UC4-6XIvQYVJ.js} +1 -1
  109. package/dist/web/assets/{chunk-ND2GUHAM-CX2-qxPx.js → chunk-ND2GUHAM-BJlcb_pB.js} +1 -1
  110. package/dist/web/assets/{chunk-QZHKN3VN-CpFs7UD0.js → chunk-QZHKN3VN-3TZzFkxK.js} +1 -1
  111. package/dist/web/assets/{circle-alert-ClX4sQ2K.js → circle-alert-oa-BQ5e7.js} +1 -1
  112. package/dist/web/assets/classDiagram-4FO5ZUOK-B0lQFDoP.js +1 -0
  113. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-B0lQFDoP.js +1 -0
  114. package/dist/web/assets/{code-block-OCS4YCEC-_lkU1VUC.js → code-block-OCS4YCEC-xJQWFyR7.js} +1 -1
  115. package/dist/web/assets/{confirm-dialog-BJwzwwOk.js → confirm-dialog-CRiC3xBd.js} +1 -1
  116. package/dist/web/assets/{copy-jQAntc98.js → copy-DaoAUKTO.js} +1 -1
  117. package/dist/web/assets/{cose-bilkent-S5V4N54A-CLWAfEVg.js → cose-bilkent-S5V4N54A-Cjcm-rW_.js} +1 -1
  118. package/dist/web/assets/{cssMode-q0rL0Hjc.js → cssMode-_D6u4YDd.js} +1 -1
  119. package/dist/web/assets/{dagre-BM42HDAG-DKviWU-X.js → dagre-BM42HDAG-YqubcAJi.js} +1 -1
  120. package/dist/web/assets/{diagram-2AECGRRQ-L6emXRJ1.js → diagram-2AECGRRQ-Dk4ayFqg.js} +1 -1
  121. package/dist/web/assets/{diagram-5GNKFQAL-CXGUerks.js → diagram-5GNKFQAL-CQ0joYfB.js} +1 -1
  122. package/dist/web/assets/{diagram-KO2AKTUF-C8FHXqeH.js → diagram-KO2AKTUF-DmuZzIdW.js} +1 -1
  123. package/dist/web/assets/{diagram-LMA3HP47-Cng_aa5j.js → diagram-LMA3HP47-YTPEfEZy.js} +1 -1
  124. package/dist/web/assets/{diagram-OG6HWLK6-BEC6IDf4.js → diagram-OG6HWLK6-DmwRuz8-.js} +1 -1
  125. package/dist/web/assets/{erDiagram-TEJ5UH35-BWMCTdYK.js → erDiagram-TEJ5UH35-LRL_DMXa.js} +1 -1
  126. package/dist/web/assets/{flowDiagram-I6XJVG4X-aAEYIyx2.js → flowDiagram-I6XJVG4X-ELBDyOvk.js} +1 -1
  127. package/dist/web/assets/{folder-picker-CioQjSzV.js → folder-picker-WUhXxIM5.js} +1 -1
  128. package/dist/web/assets/{freemarker2-DZgAIr6s.js → freemarker2-DxJFkRz5.js} +1 -1
  129. package/dist/web/assets/{ganttDiagram-6RSMTGT7-DVqWnwcH.js → ganttDiagram-6RSMTGT7-D0e9ILuF.js} +1 -1
  130. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-BVWrTXBv.js → gitGraphDiagram-PVQCEYII-Ck6OXXw0.js} +1 -1
  131. package/dist/web/assets/{handlebars-9RRQrLUb.js → handlebars-djdO6ZKR.js} +1 -1
  132. package/dist/web/assets/{html-BVI4F9TT.js → html-CHeBxmFi.js} +1 -1
  133. package/dist/web/assets/{htmlMode-t0djrjSv.js → htmlMode-SZh8FaPi.js} +1 -1
  134. package/dist/web/assets/{index-Da9mzleR.js → index-CjdqAcbu.js} +4 -4
  135. package/dist/web/assets/{index-RYlllU6n.js → index-D9kBRMR0.js} +3 -3
  136. package/dist/web/assets/{infoDiagram-5YYISTIA-DYG1ew4x.js → infoDiagram-5YYISTIA-Cx8be-MV.js} +1 -1
  137. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-COBW1j3-.js → ishikawaDiagram-YF4QCWOH-Dlc7akl7.js} +1 -1
  138. package/dist/web/assets/javascript-l6fV6hf7.js +1 -0
  139. package/dist/web/assets/{journeyDiagram-JHISSGLW-BI_FlncW.js → journeyDiagram-JHISSGLW-BVDSbS9-.js} +1 -1
  140. package/dist/web/assets/{jsonMode-A5wuW-PC.js → jsonMode-B5CJhoWd.js} +1 -1
  141. package/dist/web/assets/{kanban-definition-UN3LZRKU-BKrHEd7r.js → kanban-definition-UN3LZRKU-nFR0zB7B.js} +1 -1
  142. package/dist/web/assets/{layers-BZMh9pqm.js → layers-Bo4aml98.js} +1 -1
  143. package/dist/web/assets/{linear-DyoMQJGq.js → linear-BCWZjcpP.js} +1 -1
  144. package/dist/web/assets/{liquid-HXqG_RIQ.js → liquid-DkFOeJ6J.js} +1 -1
  145. package/dist/web/assets/{lspLanguageFeatures-s3xWnrXc.js → lspLanguageFeatures-Cbk7wEkj.js} +1 -1
  146. package/dist/web/assets/{mdx-k_7JTYp2.js → mdx-BOPNdexu.js} +1 -1
  147. package/dist/web/assets/{mermaid-NOHMQCX5-orMHhlAj.js → mermaid-NOHMQCX5-DWQaYVL0.js} +45 -45
  148. package/dist/web/assets/{message-square-CStQg7sr.js → message-square-DxbkpGqF.js} +1 -1
  149. package/dist/web/assets/{mindmap-definition-RKZ34NQL-CKOIIjUJ.js → mindmap-definition-RKZ34NQL-LI7W1FIX.js} +1 -1
  150. package/dist/web/assets/{modal-ZYdX5Krr.js → modal-Cymk-6Df.js} +1 -1
  151. package/dist/web/assets/{monaco-DX9iObLO.js → monaco-Bc-Z2u8N.js} +3 -3
  152. package/dist/web/assets/{pencil-DoB4p30x.js → pencil-DOL2nlgg.js} +1 -1
  153. package/dist/web/assets/{pieDiagram-4H26LBE5-BW18kL8l.js → pieDiagram-4H26LBE5-mgUzAFkk.js} +1 -1
  154. package/dist/web/assets/{python-abx8p9WS.js → python-D_wlYLCL.js} +1 -1
  155. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-Df_F1INR.js → quadrantDiagram-W4KKPZXB-CaDF2kqA.js} +1 -1
  156. package/dist/web/assets/{razor-DGdDlX86.js → razor-DBFVg4JU.js} +1 -1
  157. package/dist/web/assets/{requirementDiagram-4Y6WPE33-De6R8t8O.js → requirementDiagram-4Y6WPE33-DhmHdr_0.js} +1 -1
  158. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-ChlLeN5m.js → sankeyDiagram-5OEKKPKP-B7qnGfue.js} +1 -1
  159. package/dist/web/assets/{select-B9kjO67b.js → select-BpKQyMvD.js} +1 -1
  160. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-CPVnbcvz.js → sequenceDiagram-3UESZ5HK-D2LhPgpM.js} +1 -1
  161. package/dist/web/assets/{stateDiagram-AJRCARHV-BFS1G-aJ.js → stateDiagram-AJRCARHV-ClkO4Gu5.js} +1 -1
  162. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-YnSeSD_N.js +1 -0
  163. package/dist/web/assets/{switch-C2r5pofB.js → switch-BJ4Ar_OA.js} +1 -1
  164. package/dist/web/assets/{textarea-BB3UoYxg.js → textarea-DjwjAAG8.js} +1 -1
  165. package/dist/web/assets/{timeline-definition-PNZ67QCA-C1Rgs32y.js → timeline-definition-PNZ67QCA-DhGIG-GC.js} +1 -1
  166. package/dist/web/assets/{trash-2-BNiAEW-6.js → trash-2-R46i6Uus.js} +1 -1
  167. package/dist/web/assets/{tsMode-DHruHjGh.js → tsMode-CKaqpIrz.js} +1 -1
  168. package/dist/web/assets/{typescript-SLYiKRhJ.js → typescript-DsixnGVt.js} +1 -1
  169. package/dist/web/assets/{upload-BLLmywZY.js → upload-CgWqsmdI.js} +1 -1
  170. package/dist/web/assets/{use-profiles-OJaV4lOv.js → use-profiles-BlGgvdYm.js} +1 -1
  171. package/dist/web/assets/{use-projects-D_Sq7ahS.js → use-projects-Cuv0A0RC.js} +1 -1
  172. package/dist/web/assets/{use-providers-SSHcslI-.js → use-providers-DLcAY6E1.js} +1 -1
  173. package/dist/web/assets/{useNormalizedLogs-DeA-fso_.js → useNormalizedLogs-tfxFAJOF.js} +1 -1
  174. package/dist/web/assets/{vennDiagram-CIIHVFJN-DLGPZTKg.js → vennDiagram-CIIHVFJN-BngQhsYJ.js} +1 -1
  175. package/dist/web/assets/{wardley-L42UT6IY-BVMPWfq9.js → wardley-L42UT6IY-BEY6sftT.js} +1 -1
  176. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-_KXuEg6G.js → wardleyDiagram-YWT4CUSO-IH_Yh-cw.js} +1 -1
  177. package/dist/web/assets/{xml-BmreQojr.js → xml-dEcQ1gzo.js} +1 -1
  178. package/dist/web/assets/{xychartDiagram-2RQKCTM6-a-Do3v5G.js → xychartDiagram-2RQKCTM6-BdrGFDsr.js} +1 -1
  179. package/dist/web/assets/{yaml-CJoLHuqv.js → yaml-BfGVqGj4.js} +1 -1
  180. package/dist/web/index.html +1 -1
  181. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.d.ts +2 -0
  182. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.d.ts.map +1 -1
  183. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.js +5 -0
  184. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.js.map +1 -1
  185. package/package.json +1 -1
  186. package/dist/web/assets/ProviderSettingsPage-B-bBs2qN.js +0 -93
  187. package/dist/web/assets/channel-BsOpjSZw.js +0 -1
  188. package/dist/web/assets/check-BVOtZt28.js +0 -1
  189. package/dist/web/assets/classDiagram-4FO5ZUOK-KkLqUSdB.js +0 -1
  190. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-KkLqUSdB.js +0 -1
  191. package/dist/web/assets/javascript-DaUCpDvL.js +0 -1
  192. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-DSxC8AfE.js +0 -1
@@ -1,4 +1,4 @@
1
- import{s as gi,g as xi,q as Xt,p as di,a as fi,b as pi,_ as a,l as Yt,I as mi,e as yi,z as bi,D as _t,i as Ai,F as Nt,G as wi,K as Ci,am as Si,R as Wt}from"./index-Da9mzleR.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-DyoMQJGq.js";import"./index-RYlllU6n.js";import"./defaultLocale-DX6XiGOO.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var I=Ri(y).map(function(m){return v+o*m});return i(E?I.reverse():I)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=(function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],I=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],V={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,It=0,hi=2,Mt=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||Mt,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var M,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((M===null||typeof M>"u")&&(M=Vt()),z=rt[q]&&rt[q][M]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&&gt.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
1
+ import{s as gi,g as xi,q as Xt,p as di,a as fi,b as pi,_ as a,l as Yt,I as mi,e as yi,z as bi,D as _t,i as Ai,F as Nt,G as wi,K as Ci,am as Si,R as Wt}from"./index-CjdqAcbu.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-BCWZjcpP.js";import"./index-D9kBRMR0.js";import"./defaultLocale-DX6XiGOO.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var I=Ri(y).map(function(m){return v+o*m});return i(E?I.reverse():I)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=(function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],I=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],V={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,It=0,hi=2,Mt=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||Mt,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var M,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((M===null||typeof M>"u")&&(M=Vt()),z=rt[q]&&rt[q][M]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&&gt.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
2
2
  `+D.showPosition()+`
3
3
  Expecting `+gt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":yt="Parse error on line "+(ct+1)+": Unexpected "+(M==Mt?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(yt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:pt,expected:gt})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+M);switch(z[0]){case 1:g.push(M),C.push(D.yytext),r.push(D.yylloc),g.push(z[1]),M=null,It=D.yyleng,d=D.yytext,ct=D.yylineno,pt=D.yylloc;break;case 2:if(N=this.productions_[z[1]][1],G.$=C[C.length-N],G._$={first_line:r[r.length-(N||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(N||1)].first_column,last_column:r[r.length-1].last_column},ci&&(G._$.range=[r[r.length-(N||1)].range[0],r[r.length-1].range[1]]),mt=this.performAction.apply(G,[d,It,ct,$.yy,z[1],C,r].concat(li)),typeof mt<"u")return mt;N&&(g=g.slice(0,-1*N*2),C=C.slice(0,-1*N),r=r.slice(0,-1*N)),g.push(this.productions_[z[1]][0]),C.push(G.$),r.push(G._$),Bt=rt[g[g.length-2]][g[g.length-1]],g.push(Bt);break;case 3:return!0}}return!0},"parse")},k=(function(){var F={EOF:1,parseError:a(function(c,g){if(this.yy.parser)this.yy.parser.parseError(c,g);else throw new Error(c)},"parseError"),setInput:a(function(h,c){return this.yy=c||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:a(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var c=h.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:a(function(h){var c=h.length,g=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(h){this.unput(this.match.slice(h))},"less"),pastInput:a(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var h=this.pastInput(),c=new Array(h.length+1).join("-");return h+this.upcomingInput()+`
@@ -1 +1 @@
1
- import{l as e}from"./monaco-DX9iObLO.js";import"./ProjectKanbanPage-j2v5fLfg.js";import"./index-RYlllU6n.js";import"./mermaid-NOHMQCX5-orMHhlAj.js";import"./chevron-right-CkcSaX8x.js";import"./chevron-down-BXYCSpWd.js";import"./confirm-dialog-BJwzwwOk.js";import"./modal-ZYdX5Krr.js";import"./Icons-CyNNz4Z5.js";import"./CreateTaskInput-ByeWDjc8.js";import"./AgentLogo-C190Z6bw.js";import"./check-BVOtZt28.js";import"./use-projects-D_Sq7ahS.js";import"./MemberAvatar-BPoYS6Il.js";import"./use-providers-SSHcslI-.js";import"./trash-2-BNiAEW-6.js";import"./useNormalizedLogs-DeA-fso_.js";import"./folder-picker-CioQjSzV.js";import"./circle-alert-ClX4sQ2K.js";import"./message-square-CStQg7sr.js";import"./layers-BZMh9pqm.js";import"./chevron-up-Y8L6pbzc.js";import"./select-B9kjO67b.js";import"./textarea-BB3UoYxg.js";import"./upload-BLLmywZY.js";import"./arrow-left-CB4qTjQs.js";import"./copy-jQAntc98.js";const H={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},v={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{H as conf,v as language};
1
+ import{l as e}from"./monaco-Bc-Z2u8N.js";import"./ProjectKanbanPage--cx6wNDR.js";import"./index-D9kBRMR0.js";import"./mermaid-NOHMQCX5-DWQaYVL0.js";import"./chevron-right-pH923eYp.js";import"./chevron-down-BQcW9sFf.js";import"./confirm-dialog-CRiC3xBd.js";import"./modal-Cymk-6Df.js";import"./Icons-DADUmnB1.js";import"./CreateTaskInput-B67vzMJD.js";import"./AgentLogo-BCwbooTN.js";import"./check-BN_PVKzE.js";import"./use-projects-Cuv0A0RC.js";import"./MemberAvatar-l-WCdlLA.js";import"./use-providers-DLcAY6E1.js";import"./trash-2-R46i6Uus.js";import"./useNormalizedLogs-tfxFAJOF.js";import"./folder-picker-WUhXxIM5.js";import"./circle-alert-oa-BQ5e7.js";import"./message-square-DxbkpGqF.js";import"./layers-Bo4aml98.js";import"./chevron-up-DyQW115F.js";import"./select-BpKQyMvD.js";import"./textarea-DjwjAAG8.js";import"./upload-CgWqsmdI.js";import"./arrow-left-CCWDjOmp.js";import"./copy-DaoAUKTO.js";const H={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},v={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{H as conf,v as language};
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/x-icon" href="/favicon.ico" sizes="any" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
7
7
  <title>Agent Tower</title>
8
- <script type="module" crossorigin src="/assets/index-RYlllU6n.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-D9kBRMR0.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-CjAJoGg5.css">
10
10
  </head>
11
11
  <body>
@@ -5,5 +5,7 @@ export type AgentRuntimeSupportMatrix = Record<AgentType, readonly RuntimeType[]
5
5
  * independent even when an Agent currently supports only one Runtime.
6
6
  */
7
7
  export declare const AGENT_RUNTIME_SUPPORT: AgentRuntimeSupportMatrix;
8
+ export declare const USER_VISIBLE_AGENT_TYPES: readonly AgentType[];
9
+ export declare function isUserVisibleAgentType(agentType: AgentType | string): boolean;
8
10
  export declare function supportsAgentRuntime(agentType: AgentType | string, runtimeType: RuntimeType | string): boolean;
9
11
  //# sourceMappingURL=agent-runtime-support.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtime-support.d.ts","sourceRoot":"","sources":["../src/agent-runtime-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC,CAAA;AAEjF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,yBAWnC,CAAA;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,WAAW,EAAE,WAAW,GAAG,MAAM,GAChC,OAAO,CAET"}
1
+ {"version":3,"file":"agent-runtime-support.d.ts","sourceRoot":"","sources":["../src/agent-runtime-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC,CAAA;AAEjF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,yBAWnC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,SAAS,EAExD,CAAA;AAID,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAE7E;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,WAAW,EAAE,WAAW,GAAG,MAAM,GAChC,OAAO,CAET"}
@@ -15,6 +15,11 @@ export const AGENT_RUNTIME_SUPPORT = {
15
15
  [AgentType.GROK_BUILD]: [RuntimeType.ACP],
16
16
  [AgentType.MINION_CODE]: [RuntimeType.ACP],
17
17
  };
18
+ export const USER_VISIBLE_AGENT_TYPES = Object.freeze(Object.values(AgentType).filter(agentType => agentType !== AgentType.MINION_CODE));
19
+ const USER_VISIBLE_AGENT_TYPE_SET = new Set(USER_VISIBLE_AGENT_TYPES);
20
+ export function isUserVisibleAgentType(agentType) {
21
+ return USER_VISIBLE_AGENT_TYPE_SET.has(agentType);
22
+ }
18
23
  export function supportsAgentRuntime(agentType, runtimeType) {
19
24
  return AGENT_RUNTIME_SUPPORT[agentType]?.includes(runtimeType) ?? false;
20
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtime-support.js","sourceRoot":"","sources":["../src/agent-runtime-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAInD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IAC3D,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IAC1D,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IAC5D,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IACrD,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACxC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACvC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACvC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IAC9C,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACzC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;CAC3C,CAAA;AAED,MAAM,UAAU,oBAAoB,CAClC,SAA6B,EAC7B,WAAiC;IAEjC,OAAO,qBAAqB,CAAC,SAAsB,CAAC,EAAE,QAAQ,CAAC,WAA0B,CAAC,IAAI,KAAK,CAAA;AACrG,CAAC"}
1
+ {"version":3,"file":"agent-runtime-support.js","sourceRoot":"","sources":["../src/agent-runtime-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAInD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IAC3D,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IAC1D,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IAC5D,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IACrD,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACxC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACvC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACvC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IAC9C,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACzC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;CAC3C,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAyB,MAAM,CAAC,MAAM,CACzE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,WAAW,CAAC,CAClF,CAAA;AAED,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAA;AAE7E,MAAM,UAAU,sBAAsB,CAAC,SAA6B;IAClE,OAAO,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAA6B,EAC7B,WAAiC;IAEjC,OAAO,qBAAqB,CAAC,SAAsB,CAAC,EAAE,QAAQ,CAAC,WAA0B,CAAC,IAAI,KAAK,CAAA;AACrG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-tower",
3
- "version": "0.6.0-beta.0",
3
+ "version": "0.6.0-beta.1",
4
4
  "description": "AI Agent Task Management Dashboard",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,93 +0,0 @@
1
- import{k as Ye,m as bt,q as yt,p as jt,u as Y,r as E,j as n,l as M,a4 as Ze,T as Oe,I as le,B as T,a3 as wt,S as Me,_ as Nt,g as Et,ac as Pt,s as Ct,C as St,t as L,a0 as kt,i as Pe,ad as At,a9 as Ce}from"./index-RYlllU6n.js";import{a as _t,b as Ot,u as Tt,c as It,d as Dt,e as Rt,f as Ut,g as Kt,h as Lt}from"./use-providers-SSHcslI-.js";import{C as Bt}from"./confirm-dialog-BJwzwwOk.js";import{M as Te}from"./modal-ZYdX5Krr.js";import{S as ze}from"./select-B9kjO67b.js";import{T as $e}from"./textarea-BB3UoYxg.js";import{S as He}from"./switch-C2r5pofB.js";import{i as Ie,R as B,h as k,P as be,j as Mt,k as zt}from"./mermaid-NOHMQCX5-orMHhlAj.js";import{A as pe}from"./AgentLogo-C190Z6bw.js";import{C as Qe}from"./chevron-down-BXYCSpWd.js";import{S as $t}from"./SettingsMasterDetail-BYB-1oyf.js";import{T as et,P as Se}from"./trash-2-BNiAEW-6.js";import{U as Ft}from"./upload-BLLmywZY.js";import{P as Jt}from"./pencil-DoB4p30x.js";import"./check-BVOtZt28.js";import"./chevron-right-CkcSaX8x.js";import"./arrow-left-CB4qTjQs.js";const Wt=[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]],qt=Ye("flask-conical",Wt);const Vt=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Xt=Ye("key-round",Vt);function Gt(e,t){let r=e.slice(0,t).split(/\r\n|\n|\r/g);return[r.length,r.pop().length+1]}function Yt(e,t,r){let s=e.split(/\r\n|\n|\r/g),o="",a=(Math.log10(t+1)|0)+1;for(let i=t-1;i<=t+1;i++){let c=s[i-1];c&&(o+=i.toString().padEnd(a," "),o+=": ",o+=c,o+=`
2
- `,i===t&&(o+=" ".repeat(a+r+2),o+=`^
3
- `))}return o}class w extends Error{line;column;codeblock;constructor(t,r){const[s,o]=Gt(r.toml,r.ptr),a=Yt(r.toml,s,o);super(`Invalid TOML document: ${t}
4
-
5
- ${a}`,r),this.line=s,this.column=o,this.codeblock=a}}function Zt(e,t){let r=0;for(;e[t-++r]==="\\";);return--r&&r%2}function ke(e,t=0,r=e.length){let s=e.indexOf(`
6
- `,t);return e[s-1]==="\r"&&s--,s<=r?s:-1}function je(e,t){for(let r=t;r<e.length;r++){let s=e[r];if(s===`
7
- `)return r;if(s==="\r"&&e[r+1]===`
8
- `)return r+1;if(s<" "&&s!==" "||s==="")throw new w("control characters are not allowed in comments",{toml:e,ptr:t})}return e.length}function q(e,t,r,s){let o;for(;(o=e[t])===" "||o===" "||!r&&(o===`
9
- `||o==="\r"&&e[t+1]===`
10
- `);)t++;return s||o!=="#"?t:q(e,je(e,t),r)}function Ht(e,t,r,s,o=!1){if(!s)return t=ke(e,t),t<0?e.length:t;for(let a=t;a<e.length;a++){let i=e[a];if(i==="#")a=ke(e,a);else{if(i===r)return a+1;if(i===s||o&&(i===`
11
- `||i==="\r"&&e[a+1]===`
12
- `))return a}}throw new w("cannot find end of structure",{toml:e,ptr:t})}function tt(e,t){let r=e[t],s=r===e[t+1]&&e[t+1]===e[t+2]?e.slice(t,t+3):r;t+=s.length-1;do t=e.indexOf(s,++t);while(t>-1&&r!=="'"&&Zt(e,t));return t>-1&&(t+=s.length,s.length>1&&(e[t]===r&&t++,e[t]===r&&t++)),t}let Qt=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class ce extends Date{#t=!1;#n=!1;#e=null;constructor(t){let r=!0,s=!0,o="Z";if(typeof t=="string"){let a=t.match(Qt);a?(a[1]||(r=!1,t=`0000-01-01T${t}`),s=!!a[2],s&&t[10]===" "&&(t=t.replace(" ","T")),a[2]&&+a[2]>23?t="":(o=a[3]||null,t=t.toUpperCase(),!o&&s&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=r,this.#n=s,this.#e=o)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z")return t;let r=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return r=this.#e[0]==="-"?r:-r,new Date(this.getTime()-r*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,r="Z"){let s=new ce(t);return s.#e=r,s}static wrapAsLocalDateTime(t){let r=new ce(t);return r.#e=null,r}static wrapAsLocalDate(t){let r=new ce(t);return r.#n=!1,r.#e=null,r}static wrapAsLocalTime(t){let r=new ce(t);return r.#t=!1,r.#e=null,r}}let en=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,tn=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,nn=/^[+-]?0[0-9_]/,rn=/^[0-9a-f]{2,8}$/i,Fe={b:"\b",t:" ",n:`
13
- `,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function nt(e,t=0,r=e.length){let s=e[t]==="'",o=e[t++]===e[t]&&e[t]===e[t+1];o&&(r-=2,e[t+=2]==="\r"&&t++,e[t]===`
14
- `&&t++);let a=0,i,c="",d=t;for(;t<r-1;){let l=e[t++];if(l===`
15
- `||l==="\r"&&e[t]===`
16
- `){if(!o)throw new w("newlines are not allowed in strings",{toml:e,ptr:t-1})}else if(l<" "&&l!==" "||l==="")throw new w("control characters are not allowed in strings",{toml:e,ptr:t-1});if(i){if(i=!1,l==="x"||l==="u"||l==="U"){let m=e.slice(t,t+=l==="x"?2:l==="u"?4:8);if(!rn.test(m))throw new w("invalid unicode escape",{toml:e,ptr:a});try{c+=String.fromCodePoint(parseInt(m,16))}catch{throw new w("invalid unicode escape",{toml:e,ptr:a})}}else if(o&&(l===`
17
- `||l===" "||l===" "||l==="\r")){if(t=q(e,t-1,!0),e[t]!==`
18
- `&&e[t]!=="\r")throw new w("invalid escape: only line-ending whitespace may be escaped",{toml:e,ptr:a});t=q(e,t)}else if(l in Fe)c+=Fe[l];else throw new w("unrecognized escape sequence",{toml:e,ptr:a});d=t}else!s&&l==="\\"&&(a=t-1,i=!0,c+=e.slice(d,a))}return c+e.slice(d,r-1)}function sn(e,t,r,s){if(e==="true")return!0;if(e==="false")return!1;if(e==="-inf")return-1/0;if(e==="inf"||e==="+inf")return 1/0;if(e==="nan"||e==="+nan"||e==="-nan")return NaN;if(e==="-0")return s?0n:0;let o=en.test(e);if(o||tn.test(e)){if(nn.test(e))throw new w("leading zeroes are not allowed",{toml:t,ptr:r});e=e.replace(/_/g,"");let i=+e;if(isNaN(i))throw new w("invalid number",{toml:t,ptr:r});if(o){if((o=!Number.isSafeInteger(i))&&!s)throw new w("integer value cannot be represented losslessly",{toml:t,ptr:r});(o||s===!0)&&(i=BigInt(e))}return i}const a=new ce(e);if(!a.isValid())throw new w("invalid value",{toml:t,ptr:r});return a}function on(e,t,r){let s=e.slice(t,r),o=s.indexOf("#");return o>-1&&(je(e,o),s=s.slice(0,o)),[s.trimEnd(),o]}function De(e,t,r,s,o){if(s===0)throw new w("document contains excessively nested structures. aborting.",{toml:e,ptr:t});let a=e[t];if(a==="["||a==="{"){let[d,l]=a==="["?cn(e,t,s,o):ln(e,t,s,o);if(r){if(l=q(e,l),e[l]===",")l++;else if(e[l]!==r)throw new w("expected comma or end of structure",{toml:e,ptr:l})}return[d,l]}let i;if(a==='"'||a==="'"){i=tt(e,t);let d=nt(e,t,i);if(r){if(i=q(e,i),e[i]&&e[i]!==","&&e[i]!==r&&e[i]!==`
19
- `&&e[i]!=="\r")throw new w("unexpected character encountered",{toml:e,ptr:i});i+=+(e[i]===",")}return[d,i]}i=Ht(e,t,",",r);let c=on(e,t,i-+(e[i-1]===","));if(!c[0])throw new w("incomplete key-value declaration: no value specified",{toml:e,ptr:t});return r&&c[1]>-1&&(i=q(e,t+c[1]),i+=+(e[i]===",")),[sn(c[0],e,t,o),i]}let an=/^[a-zA-Z0-9-_]+[ \t]*$/;function Ae(e,t,r="="){let s=t-1,o=[],a=e.indexOf(r,t);if(a<0)throw new w("incomplete key-value: cannot find end of key",{toml:e,ptr:t});do{let i=e[t=++s];if(i!==" "&&i!==" ")if(i==='"'||i==="'"){if(i===e[t+1]&&i===e[t+2])throw new w("multiline strings are not allowed in keys",{toml:e,ptr:t});let c=tt(e,t);if(c<0)throw new w("unfinished string encountered",{toml:e,ptr:t});s=e.indexOf(".",c);let d=e.slice(c,s<0||s>a?a:s),l=ke(d);if(l>-1)throw new w("newlines are not allowed in keys",{toml:e,ptr:t+s+l});if(d.trimStart())throw new w("found extra tokens after the string part",{toml:e,ptr:c});if(a<c&&(a=e.indexOf(r,c),a<0))throw new w("incomplete key-value: cannot find end of key",{toml:e,ptr:t});o.push(nt(e,t,c))}else{s=e.indexOf(".",t);let c=e.slice(t,s<0||s>a?a:s);if(!an.test(c))throw new w("only letter, numbers, dashes and underscores are allowed in keys",{toml:e,ptr:t});o.push(c.trimEnd())}}while(s+1&&s<a);return[o,q(e,a+1,!0,!0)]}function ln(e,t,r,s){let o={},a=new Set,i;for(t++;(i=e[t++])!=="}"&&i;){if(i===",")throw new w("expected value, found comma",{toml:e,ptr:t-1});if(i==="#")t=je(e,t);else if(i!==" "&&i!==" "&&i!==`
20
- `&&i!=="\r"){let c,d=o,l=!1,[m,f]=Ae(e,t-1);for(let P=0;P<m.length;P++){if(P&&(d=l?d[c]:d[c]={}),c=m[P],(l=Object.hasOwn(d,c))&&(typeof d[c]!="object"||a.has(d[c])))throw new w("trying to redefine an already defined value",{toml:e,ptr:t});!l&&c==="__proto__"&&Object.defineProperty(d,c,{enumerable:!0,configurable:!0,writable:!0})}if(l)throw new w("trying to redefine an already defined value",{toml:e,ptr:t});let[v,y]=De(e,f,"}",r-1,s);a.add(v),d[c]=v,t=y}}if(!i)throw new w("unfinished table encountered",{toml:e,ptr:t});return[o,t]}function cn(e,t,r,s){let o=[],a;for(t++;(a=e[t++])!=="]"&&a;){if(a===",")throw new w("expected value, found comma",{toml:e,ptr:t-1});if(a==="#")t=je(e,t);else if(a!==" "&&a!==" "&&a!==`
21
- `&&a!=="\r"){let i=De(e,t-1,"]",r-1,s);o.push(i[0]),t=i[1]}}if(!a)throw new w("unfinished array encountered",{toml:e,ptr:t});return[o,t]}function Je(e,t,r,s){let o=t,a=r,i,c=!1,d;for(let l=0;l<e.length;l++){if(l){if(o=c?o[i]:o[i]={},a=(d=a[i]).c,s===0&&(d.t===1||d.t===2))return null;if(d.t===2){let m=o.length-1;o=o[m],a=a[m].c}}if(i=e[l],(c=Object.hasOwn(o,i))&&a[i]?.t===0&&a[i]?.d)return null;c||(i==="__proto__"&&(Object.defineProperty(o,i,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(a,i,{enumerable:!0,configurable:!0,writable:!0})),a[i]={t:l<e.length-1&&s===2?3:s,d:!1,i:0,c:{}})}if(d=a[i],d.t!==s&&!(s===1&&d.t===3)||(s===2&&(d.d||(d.d=!0,o[i]=[]),o[i].push(o={}),d.c[d.i++]=d={t:1,d:!1,i:0,c:{}}),d.d))return null;if(d.d=!0,s===1)o=c?o[i]:o[i]={};else if(s===0&&c)return null;return[i,o,d.c]}function de(e,{maxDepth:t=1e3,integersAsBigInt:r}={}){let s={},o={},a=s,i=o;for(let c=q(e,0);c<e.length;){if(e[c]==="["){let d=e[++c]==="[",l=Ae(e,c+=+d,"]");if(d){if(e[l[1]-1]!=="]")throw new w("expected end of table declaration",{toml:e,ptr:l[1]-1});l[1]++}let m=Je(l[0],s,o,d?2:1);if(!m)throw new w("trying to redefine an already defined table or value",{toml:e,ptr:c});i=m[2],a=m[1],c=l[1]}else{let d=Ae(e,c),l=Je(d[0],a,i,0);if(!l)throw new w("trying to redefine an already defined table or value",{toml:e,ptr:c});let m=De(e,d[1],void 0,t,r);l[1][l[0]]=m[0],c=m[1]}if(c=q(e,c,!0),e[c]&&e[c]!==`
22
- `&&e[c]!=="\r")throw new w("each key-value declaration must be followed by an end-of-line",{toml:e,ptr:c});c=q(e,c)}return s}function dn(){return bt({queryKey:yt.system.cursorAgentModels,queryFn:()=>jt.get("/system/cursor-agent-models"),staleTime:1e3*60*10})}function un({value:e,onChange:t}){const{t:r}=Y(),{data:s,isLoading:o,isError:a}=dn(),i=s?.models??[],[c,d]=E.useState(!1),[l,m]=E.useState(""),f=E.useMemo(()=>{const v=l.trim().toLowerCase();return v?i.filter(y=>y.id.toLowerCase().includes(v)||y.label.toLowerCase().includes(v)):i},[i,l]);return n.jsxs("div",{className:"flex flex-col gap-2 flex-1 min-w-0",children:[n.jsx("input",{type:"text",value:e,onChange:v=>{const y=v.target.value;t(y===""?void 0:y)},placeholder:r("留空为 auto;或直接输入模型 ID(与 cursor-agent --model 一致)"),className:"w-full px-3 py-1.5 text-sm border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900 font-mono"}),n.jsxs("button",{type:"button",onClick:()=>d(v=>!v),disabled:o,className:"flex items-center gap-1 text-xs text-neutral-600 hover:text-neutral-900 disabled:opacity-50 w-fit",children:[n.jsx(Qe,{size:14,className:M("transition-transform",c&&"rotate-180")}),o?r("正在加载 cursor-agent 模型列表…"):c?r("收起列表"):r("从本机 cursor-agent 选择({count} 个)",{count:i.length})]}),c&&!o&&n.jsxs("div",{className:"rounded-lg border border-neutral-200 bg-white shadow-sm overflow-hidden",children:[n.jsx("input",{type:"text",value:l,onChange:v=>m(v.target.value),placeholder:r("筛选模型…"),className:"w-full px-3 py-2 text-sm border-b border-neutral-100 focus:outline-none focus:ring-1 focus:ring-inset focus:ring-neutral-300"}),n.jsxs("div",{className:"max-h-[min(50vh,22rem)] overflow-y-auto py-1",children:[n.jsx("button",{type:"button",onClick:()=>{t(void 0),d(!1),m("")},className:M("w-full px-3 py-2 text-left text-sm hover:bg-neutral-50",e?"text-neutral-700":"bg-neutral-50 font-medium"),children:r("默认 (auto)")}),f.map(v=>n.jsxs("button",{type:"button",onClick:()=>{t(v.id),d(!1),m("")},className:M("w-full px-3 py-2 text-left text-sm hover:bg-neutral-50 border-t border-neutral-100",e===v.id?"bg-blue-50/80":""),children:[n.jsx("div",{className:"font-mono text-xs text-neutral-900 break-all",children:v.id}),n.jsx("div",{className:"text-xs text-neutral-500 mt-0.5 break-words",children:v.label})]},v.id)),f.length===0&&n.jsx("div",{className:"px-3 py-4 text-xs text-neutral-400 text-center",children:r("无匹配项")})]})]}),(a||s?.error)&&n.jsxs("p",{className:"text-xs text-amber-700",children:[r("无法从本机加载模型列表({error})。仍可手动输入;或在安装 cursor-agent 的机器上运行",{error:s?.error??r("请求失败")}),n.jsx("code",{className:"mx-0.5 bg-neutral-100 px-1 rounded text-[11px]",children:"cursor-agent --list-models"}),r("查看 ID。")]})]})}function mn(e){if(!e)return null;try{const t=new URL(e);return t.protocol!=="http:"&&t.protocol!=="https:"?null:`${t.origin}${t.pathname}`}catch{return null}}function fn(e,t){if(!e)return null;const r=new Date(e);return Number.isNaN(r.getTime())?null:new Intl.DateTimeFormat(t,{dateStyle:"medium",timeStyle:"medium"}).format(r)}function pn({result:e}){const{locale:t,t:r}=Y(),s=mn(e.target?.endpoint),o=fn(e.testedAt,t);return n.jsx("div",{"data-provider-test-result":!0,className:M("rounded-lg border px-4 py-3 text-sm",e.ok?"border-success/30 bg-success/10 text-success":"border-warning/30 bg-warning/10 text-foreground"),children:n.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[e.ok?n.jsx(Ze,{size:16,className:"shrink-0"}):n.jsx(Oe,{size:16,className:"shrink-0 text-warning"}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("div",{className:"font-medium",children:e.ok?e.stage==="connection"?r("连接测试通过"):r("本机可用性检查通过"):r("配置检查未通过")}),n.jsx("div",{className:"mt-0.5 break-words text-xs opacity-80",children:e.summary}),(s||o)&&n.jsxs("dl",{className:"mt-2 grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-2 gap-y-1 text-xs opacity-80",children:[s&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{className:"font-medium",children:r("测试对象")}),n.jsx("dd",{className:"min-w-0",children:n.jsx("code",{className:"break-all",children:s})})]}),o&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{className:"font-medium",children:r("测试时间")}),n.jsx("dd",{className:"min-w-0 break-words",children:n.jsx("time",{dateTime:e.testedAt,children:o})})]})]}),!e.ok&&n.jsx("div",{className:"mt-1 text-xs opacity-80",children:r("测试失败不会阻止保存。")})]})]})})}function xn({options:e,value:t,onChange:r,label:s,efficiencyLabel:o,intelligenceLabel:a,followCliLabel:i,currentLabel:c,disabled:d=!1,error:l}){const m=e.findIndex(b=>b.value===t),f=t==="",v=E.useRef(m>=0?t:void 0),y=E.useRef(null),P=E.useRef(null),[_,I]=E.useState(!1);E.useEffect(()=>{m>=0&&(v.current=t)},[m,t]);const D=b=>{if(d||f||e.length===0)return;const A=e[Math.max(0,Math.min(e.length-1,b))];A&&A.value!==t&&r(A.value)},V=b=>{const A=P.current?.getBoundingClientRect();if(!A||A.width<=0)return;const ne=Math.max(0,Math.min(1,(b-A.left)/A.width));D(Math.round(ne*(e.length-1)))},K=m>=0?e[m]:void 0,z=m<0||e.length<2?0:m/(e.length-1)*100,$=E.useId(),X=`${$}-label`,F=`${$}-current`,R=`${$}-error`;return n.jsxs("div",{className:"space-y-2.5",children:[n.jsxs("div",{className:"flex min-h-8 items-center justify-between gap-3",children:[n.jsx("label",{id:X,className:"text-xs font-medium text-foreground",children:s}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"text-xs text-muted-foreground",children:i}),n.jsx(He,{checked:f,disabled:d,onCheckedChange:b=>{r(b?"":v.current??e.find(A=>A.value==="medium")?.value??e[0]?.value??"")},"aria-label":i})]})]}),n.jsxs("div",{className:"flex items-center justify-between text-[11px] text-muted-foreground","aria-hidden":"true",children:[n.jsx("span",{children:o}),n.jsx("span",{children:a})]}),n.jsxs("div",{id:$,ref:P,role:"slider",tabIndex:f||d?-1:0,"aria-labelledby":X,"aria-disabled":f||d,"aria-valuemin":0,"aria-valuemax":Math.max(0,e.length-1),"aria-valuenow":m>=0?m:void 0,"aria-valuetext":K?`${K.label}, ${K.value}`:i,"aria-describedby":l?`${F} ${R}`:F,onKeyDown:b=>{if(f||d||m<0)return;let A=m;if(b.key==="ArrowLeft"||b.key==="ArrowDown")A-=1;else if(b.key==="ArrowRight"||b.key==="ArrowUp")A+=1;else if(b.key==="Home")A=0;else if(b.key==="End")A=e.length-1;else return;b.preventDefault(),D(A)},onPointerDown:b=>{f||d||(y.current=b.pointerId,I(!0),b.currentTarget.setPointerCapture?.(b.pointerId),V(b.clientX))},onPointerMove:b=>{y.current===b.pointerId&&V(b.clientX)},onPointerUp:b=>{y.current===b.pointerId&&(y.current=null,I(!1),b.currentTarget.releasePointerCapture?.(b.pointerId))},onPointerCancel:()=>{y.current=null,I(!1)},className:M("relative mx-2.5 flex h-11 touch-pan-y items-center outline-none select-none",f||d?"cursor-not-allowed opacity-55":"cursor-pointer","focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-2"),children:[n.jsx("div",{className:"absolute inset-x-0 h-1 rounded-full bg-border"}),!f&&n.jsx("div",{className:"absolute left-0 h-1 rounded-full bg-primary transition-[width] duration-150 motion-reduce:transition-none",style:{width:`${z}%`}}),e.map((b,A)=>n.jsx("span",{"aria-hidden":"true",className:M("absolute size-3 -translate-x-1/2 rounded-full border-2 transition-colors motion-reduce:transition-none",!f&&A<=m?"border-primary bg-primary":"border-border bg-background"),style:{left:`${e.length<2?0:A/(e.length-1)*100}%`}},b.value)),!f&&K&&n.jsx("span",{"aria-hidden":"true",className:M("absolute size-5 -translate-x-1/2 rounded-full border-[5px] border-primary bg-background shadow-sm transition-[left,transform] duration-150 motion-reduce:transition-none",_&&"scale-110"),style:{left:`${z}%`}})]}),n.jsx("div",{id:F,className:"min-h-5 text-center text-xs text-muted-foreground",children:f?i:`${c}: ${K?.label??t} (${K?.value??t})`}),l&&n.jsx("p",{id:R,role:"alert",className:"text-xs text-destructive",children:l})]})}function gn(e){if(!e)return null;const t=e.trim();if(!t.startsWith("http://")&&!t.startsWith("https://"))return"API URL must be a complete http:// or https:// URL";try{if(new URL(t).host)return null}catch{}return"API URL must be a complete http:// or https:// URL"}function hn(e,t,r){return r==="advanced"?"advanced":e?.write.action==="clear"?"unconfigured":e?.write.action==="replace"?e.value?"configured":"unconfigured":e?.configured||t?"configured":"unconfigured"}function vn(e,t,r,s){let o=e.config,a=e.settings;const i=c=>{o={...o},r?o[c]=r:delete o[c]};return t==="apiBaseUrl"&&s.apiBaseUrl?s.apiBaseUrl.kind==="config"?i(s.apiBaseUrl.path):s.apiBaseUrl.kind==="settings"&&(a=e.agentType==="CODEX"?wn(a,r):fe(a,s.apiBaseUrl.path,r||void 0)):t==="model"?(s.model.kind==="config"?i(s.model.path):s.model.kind==="settings"&&(a=fe(a,s.model.path,r||void 0)),e.agentType==="CODEX"&&(a=fe(a,"model",void 0))):t==="reasoningEffort"&&s.reasoningEffort&&(s.reasoningEffort.kind==="config"?i(s.reasoningEffort.path):s.reasoningEffort.kind==="settings"&&(a=fe(a,s.reasoningEffort.path,r||void 0))),{...e,config:o,settings:a,simplified:{...e.simplified,[t]:r}}}function ve(e){let t="",r=!1;for(let s=0;s<e.length;s+=1){const o=e[s];if(r){r=!1;continue}if(t==='"'&&o==="\\"){r=!0;continue}if((o==='"'||o==="'")&&!t)t=o;else if(o===t)t="";else if(o==="#"&&!t)return{value:e.slice(0,s).trimEnd(),comment:e.slice(s)}}return{value:e.trimEnd(),comment:""}}function We(e){const t=[];let r=0,s="",o=!1;for(let a=0;a<=e.length;a+=1){const i=e[a]??".";if(o){o=!1;continue}if(s==='"'&&i==="\\"){o=!0;continue}if((i==='"'||i==="'")&&!s)s=i;else if(i===s)s="";else if(i==="."&&!s){const c=e.slice(r,a).trim();if(c.startsWith('"')&&c.endsWith('"'))try{t.push(JSON.parse(c))}catch{t.push(c.slice(1,-1))}else c.startsWith("'")&&c.endsWith("'")?t.push(c.slice(1,-1)):c&&t.push(c);r=a+1}}return t}function bn(e){let t="",r=!1;for(let s=0;s<e.length;s+=1){const o=e[s];if(r){r=!1;continue}if(t==='"'&&o==="\\"){r=!0;continue}if((o==='"'||o==="'")&&!t)t=o;else if(o===t)t="";else{if(o==="="&&!t)return s;if(o==="#"&&!t)return-1}}return-1}function qe(e,t){return e.length===t.length&&e.every((r,s)=>r===t[s])}function yn(e,t){let r=t,s,o;for(let a=0;a<e.length;a+=1){const i=e[a];if(r){if(r==='"""'&&i==="\\"){a+=1;continue}const d=r[0];if(i===d){let l=a+1;for(;e[l]===d;)l+=1;if(l-a<r.length)continue;o??=l,r=void 0,a=l-1}continue}if(s){s==='"'&&i==="\\"?a+=1:i===s&&(s=void 0);continue}if(i==="#")break;const c=e.startsWith('"""',a)?'"""':e.startsWith("'''",a)?"'''":void 0;c?(r=c,a+=2):(i==='"'||i==="'")&&(s=i)}return{multiline:r,closingDelimiterEnd:o}}function jn(e){const t=[],r=new Map;let s,o;for(let a=0;a<e.length;a+=1){t[a]=s===void 0;const{multiline:i,closingDelimiterEnd:c}=yn(e[a],s);s===void 0&&i!==void 0&&(o=a),s!==void 0&&c!==void 0&&o!==void 0&&(r.set(o,{end:a,suffix:e[a].slice(c)}),o=void 0),s=i}return{structural:t,multilineSpanByStart:r}}function it(e,t,r){try{de(e)}catch{return e}const s=e.split(`
23
- `),{structural:o,multilineSpanByStart:a}=jn(s);let i=[],c=t.length===1?-1:void 0;const d=[];for(let f=0;f<s.length;f+=1){if(!o[f])continue;const v=ve(s[f]).value.trim(),y=v.match(/^\[\[(.+)\]\]$/),P=y??v.match(/^\[(.+)\]$/);if(P){i=We(P[1]),!y&&qe(i,t.slice(0,-1))&&(c=f);continue}const _=bn(s[f]);if(_<0)continue;const I=[...i,...We(s[f].slice(0,_))];if(qe(I,t)){const D=a.get(f);d.push({index:f,equals:_,end:D?.end??f,closingSuffix:D?.suffix})}}if(d.length>1)return e;if(d.length===1){const f=d[0],v=s[f.index],y=v.slice(0,f.equals+1),P=v.slice(f.equals+1),_=P.match(/^\s*/)?.[0]??" ",{comment:I}=ve(P),D=f.end-f.index+1,V=f.closingSuffix??(I?` ${I}`:"");return r?s.splice(f.index,D,`${y}${_}${JSON.stringify(r)}${V}`):f.closingSuffix&&ve(f.closingSuffix).comment?s.splice(f.index,D,`${v.match(/^\s*/)?.[0]??""}${f.closingSuffix}`):I?s.splice(f.index,D,`${v.match(/^\s*/)?.[0]??""}${I}`):s.splice(f.index,D),s.join(`
24
- `)}if(!r)return e;const l=`${t.at(-1)} = ${JSON.stringify(r)}`;if(t.length>1)return c===void 0?e:(s.splice(c+1,0,l),s.join(`
25
- `));const m=s.findIndex((f,v)=>{if(!o[v])return!1;const y=ve(f).value.trim();return/^\[\[?.+\]\]?$/.test(y)});return m>=0?(s.splice(m,0,l),s.join(`
26
- `)):e?e.endsWith(`
27
- `)?`${e}${l}
28
- `:`${e}
29
- ${l}`:l}function fe(e,t,r){return it(e,[t],r)}function wn(e,t){let r;try{r=de(e)}catch{return e}const s=typeof r.model_provider=="string"&&r.model_provider.trim()?r.model_provider.trim():"openai",o=t.trim()||void 0;return s==="openai"?fe(e,"openai_base_url",o):Ie(s)?e:it(e,["model_providers",s,"base_url"],o)}function Nn(e,t){return rt(e,t.executionPermission)}function rt(e,t){const r=e[t.path];return r===void 0||r===!1?{enabled:!1,error:null}:r===!0?{enabled:!0,error:null}:{enabled:!1,error:`${t.path} must be true or false`}}function En(e,t,r){return{...e,config:{...e.config,[t.path]:r}}}function te(e,t){const r=t?.trim();return!!r&&e.trim()===r}function Pn(e,t){return te(e,t.apiKey?.envKey)}function ye(e,t){return e.sensitive||/key|token|secret|password|auth/i.test(e.key)||Pn(e.key,t)}function Cn(e,t){const r=e.simplified??{};return Object.entries(e.redactedEnv??{}).map(([s,o])=>({key:s,value:t.apiBaseUrl?.kind==="env"&&s===t.apiBaseUrl.path?r.apiBaseUrl??"":"",write:{action:"keep"},configured:o.configured,sensitive:ye({key:s,sensitive:o.sensitive},r)}))}function Sn(e,t){return e.map(r=>ye(r,t)&&!r.sensitive?{...r,sensitive:!0}:r)}function kn(){let e=0;return{begin:()=>(e+=1,e),invalidate:()=>{e+=1},isCurrent:t=>t===e}}function An(e){const t=new Map;for(const o of e){const a=o.key.trim();if(!a)continue;const i=t.get(a)??[];i.push(o),t.set(a,i)}const r=(o,a)=>o<a?-1:o>a?1:0,s=(o,a)=>{const i=a.filter(m=>m.write.action!=="keep");if(i.length===0)return{action:"keep"};const c=i.filter(m=>m.key===o),d=c.length>0?c:i,l=d.find(m=>m.write.action==="clear");return l?l.write:[...d].sort((m,f)=>r(m.key,f.key)||r(m.write.action==="replace"?m.write.value:"",f.write.action==="replace"?f.write.value:""))[0].write};return Object.fromEntries([...t.entries()].sort(([o],[a])=>r(o,a)).map(([o,a])=>[o,s(o,a)]))}function _n(e,t,r){return{...e,model:typeof t[r.model.path]=="string"?t[r.model.path]:"",reasoningEffort:r.reasoningEffort?.kind==="config"?typeof t[r.reasoningEffort.path]=="string"?t[r.reasoningEffort.path]:"":e.reasoningEffort}}function Ve(e,t,r,s=new Set){if(r!=="CODEX")return e;const o=de(t),a=typeof o.model_provider=="string"&&o.model_provider.trim()?o.model_provider.trim():"openai",i=typeof o.model_reasoning_effort=="string"?o.model_reasoning_effort:"",c=v=>[...s].some(y=>te(y,v));if(a==="openai")return{...e,apiBaseUrl:typeof o.openai_base_url=="string"?o.openai_base_url:"",apiKey:{configured:te(e.apiKey?.envKey??"","OPENAI_API_KEY")?e.apiKey?.configured??!1:c("OPENAI_API_KEY"),envKey:"OPENAI_API_KEY"},reasoningEffort:i};if(Ie(a))return{...e,apiBaseUrl:void 0,apiKey:void 0,reasoningEffort:i};const d=o.model_providers,l=d&&typeof d=="object"&&!Array.isArray(d)?d[a]:void 0,m=l&&typeof l=="object"&&!Array.isArray(l)?l:{},f=typeof m.env_key=="string"&&m.env_key.trim()?m.env_key.trim():void 0;return{...e,apiBaseUrl:typeof m.base_url=="string"?m.base_url:"",apiKey:f?{configured:te(e.apiKey?.envKey??"",f)?e.apiKey?.configured??!1:c(f),envKey:f}:void 0,reasoningEffort:i}}function On(e){try{const t=de(e);return typeof t.model_provider=="string"&&Ie(t.model_provider.trim())}catch{return!1}}function Tn(e,t,r){try{if(e.agentType==="CLAUDE_CODE"&&(t==="apiBaseUrl"||t==="apiKey")){const s=JSON.parse(e.settings),o=t==="apiBaseUrl"?r.apiBaseUrl?.path:r.apiKey?.path,a=o?s.env?.[o]:void 0;return typeof a=="string"?a:void 0}if(e.agentType==="CODEX"&&(t==="model"||t==="reasoningEffort")){const s=de(e.settings),o=t==="model"?"model":r.reasoningEffort?.path,a=o?s[o]:void 0;return typeof a=="string"?a:void 0}}catch{return}}function In(e,t,r,s){if(r==="simple")return e;const o=Tn(e,t,s),a={...e.config},i={...e.simplified};let c=e.env;return t==="apiBaseUrl"&&s.apiBaseUrl?(o!==void 0&&(i.apiBaseUrl=o),c=c.map(d=>d.key===s.apiBaseUrl.path?{...d,value:"",write:{action:"clear"}}:d)):t==="apiKey"&&s.apiKey?(i.apiKey={configured:o!==void 0,envKey:s.apiKey.path},c=c.map(d=>d.key===s.apiKey.path?{...d,value:"",write:{action:"clear"}}:d)):t==="model"?(o!==void 0&&(i.model=o),delete a[s.model.path]):t==="reasoningEffort"&&o!==void 0&&(i.reasoningEffort=o),{...e,config:a,env:c,simplified:i}}const W={key:"appendPrompt",label:"追加 Prompt",type:"textarea",rows:3,placeholder:"追加到每次 prompt 末尾的文本"},st={[k.CLAUDE_CODE]:[{key:"dangerouslySkipPermissions",label:"跳过权限确认",type:"switch"},W],[k.GEMINI_CLI]:[{key:"yolo",label:"自动批准操作(YOLO)",type:"switch"},W],[k.CURSOR_AGENT]:[{key:"force",label:"强制执行",type:"switch"},W],[k.CODEX]:[{key:"dangerouslyBypassApprovalsAndSandbox",label:"跳过所有确认和沙盒",type:"switch"},{key:"disableResponsesWebsocket",label:"禁用 WebSocket",type:"switch"},{key:"profile",label:"Profile",type:"input",placeholder:"~/.codex/config.toml 中的 profile 名称"},W],[k.QWEN_CODE]:[W],[k.KIRO_CLI]:[{key:"trustAllTools",label:"信任所有工具",type:"switch"},W],[k.OPENCODE]:[{key:"autoApprove",label:"自动批准操作",type:"switch"},W],[k.PI_CODING_AGENT]:[{key:"autoApprove",label:"自动批准操作",type:"switch"},W],[k.GROK_BUILD]:[{key:"alwaysApprove",label:"始终批准操作",type:"switch"},W],[k.MINION_CODE]:[{key:"dangerouslySkipPermissions",label:"跳过权限确认",type:"switch"},W]};function Xe(){return{}}function ot(e,t){return{...t}}const Dn=JSON.stringify({env:{ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:""}},null,2),Rn=`# Codex config.toml 配置片段 — 通过 -c 参数注入,不会修改 ~/.codex/config.toml
30
- # 参考: https://developers.openai.com/codex/config-sample
31
-
32
- # ─── 模型与推理 ─────────────────────────────────────────────
33
- # model_reasoning_effort = "medium" # minimal | low | medium | high | xhigh
34
- # model_reasoning_summary = "auto" # auto | concise | detailed | none
35
- # model_verbosity = "medium" # low | medium | high
36
- # service_tier = "flex" # fast | flex
37
-
38
- # ─── 自定义 Model Provider ──────────────────────────────────
39
- # model_provider = "azure"
40
- #
41
- # [model_providers.azure]
42
- # name = "Azure OpenAI"
43
- # base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
44
- # env_key = "AZURE_OPENAI_API_KEY"
45
- # env_key_instructions = "Set AZURE_OPENAI_API_KEY in Provider env"
46
- # wire_api = "responses"
47
- # query_params = { api-version = "2025-04-01-preview" }
48
-
49
- # ─── OpenAI 数据驻留 ────────────────────────────────────────
50
- # [model_providers.openai-us]
51
- # name = "OpenAI US"
52
- # base_url = "https://us.api.openai.com/v1"
53
- # wire_api = "responses"
54
- # requires_openai_auth = true
55
-
56
- # ─── 本地 OSS (Ollama) ──────────────────────────────────────
57
- # [model_providers.ollama]
58
- # name = "Ollama"
59
- # base_url = "http://localhost:11434/v1"
60
- # wire_api = "responses"
61
- `,Un=`# Codex config.toml snippet — injected through -c; ~/.codex/config.toml is not modified.
62
- # Reference: https://developers.openai.com/codex/config-sample
63
-
64
- # ─── Model and reasoning ────────────────────────────────────
65
- # model_reasoning_effort = "medium" # minimal | low | medium | high | xhigh
66
- # model_reasoning_summary = "auto" # auto | concise | detailed | none
67
- # model_verbosity = "medium" # low | medium | high
68
- # service_tier = "flex" # fast | flex
69
-
70
- # ─── Custom Model Provider ──────────────────────────────────
71
- # model_provider = "azure"
72
- #
73
- # [model_providers.azure]
74
- # name = "Azure OpenAI"
75
- # base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
76
- # env_key = "AZURE_OPENAI_API_KEY"
77
- # env_key_instructions = "Set AZURE_OPENAI_API_KEY in Provider env"
78
- # wire_api = "responses"
79
- # query_params = { api-version = "2025-04-01-preview" }
80
-
81
- # ─── OpenAI data residency ──────────────────────────────────
82
- # [model_providers.openai-us]
83
- # name = "OpenAI US"
84
- # base_url = "https://us.api.openai.com/v1"
85
- # wire_api = "responses"
86
- # requires_openai_auth = true
87
-
88
- # ─── Local OSS (Ollama) ─────────────────────────────────────
89
- # [model_providers.ollama]
90
- # name = "Ollama"
91
- # base_url = "http://localhost:11434/v1"
92
- # wire_api = "responses"
93
- `;function Kn(e,t){return e===k.CLAUDE_CODE?Dn:e===k.CODEX?t==="zh-CN"?Rn:Un:""}function Ln(e){return e===k.CLAUDE_CODE||e===k.CODEX}const _e="::ACP";function Ge(e,t){return t===B.ACP?`${e}${_e}`:String(e)}function xe(e,t){const r=zt(e);return t===B.ACP?`${r} (ACP)`:r}function Bn(e){return e.endsWith(_e)?{agentType:e.slice(0,-_e.length),runtimeType:B.ACP}:{agentType:e,runtimeType:B.CLI}}function Mn(e,t){if(!e.trim())return e;try{const r=JSON.parse(e);if(!r.env||typeof r.env!="object"||Array.isArray(r.env))return e;const s=r.env;return t in s?(delete s[t],JSON.stringify(r,null,2)):e}catch{return e}}const at=Object.values(st).flat().reduce((e,t)=>(e[t.key]||(e[t.key]=t.label),e),{});at.permissionMode="权限策略";const lt=Object.values(st).flat().reduce((e,t)=>(t.options&&(e[t.key]=Object.fromEntries(t.options.map(r=>[r.value,r.label]))),e),{});lt.permissionMode={ASK:"每次询问",AUTO_APPROVE:"自动批准"};function zn(e,t){if(typeof t=="boolean")return t?Ce("是"):Ce("否");if(typeof t=="string"&&t){const r=lt[e]?.[t];return r?Ce(r):t}return String(t)}function ee(e,t){return e instanceof Error?e.message:t}function $n(e){return e==="apiBaseUrl"?"API 地址":e==="apiKey"?"API Key":e==="reasoningEffort"?"思考强度":e==="model"?"模型":e==="executionPermission"?"执行权限":e==="disableResponsesWebsocket"?"禁用 WebSocket":e}function Fn(e){return{minimal:"最低",low:"低",medium:"中",high:"高",xhigh:"超高",max:"最高"}[e]??e}function Jn(e){return`agent-tower-provider-backup-${e.replace(/[:.]/g,"-")}.json`}function Wn(e,t){const r=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),s=URL.createObjectURL(r),o=document.createElement("a");o.href=s,o.download=e,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(s)}function qn(e){switch(e){case"CREATE":return{label:"新增",className:"bg-success/10 text-success"};case"OVERWRITE":return{label:"覆盖",className:"bg-warning/10 text-warning"};case"SKIP":return{label:"跳过",className:"bg-muted text-muted-foreground"}}}function Vn({type:e}){const t=e==="LOGIN_DETECTED"||e==="INSTALLATION_FOUND";return n.jsx("span",{className:M("inline-block h-2 w-2 rounded-full shrink-0",t?"bg-success":"bg-border"),title:t?"Available":"Unavailable",children:n.jsx("span",{className:"sr-only",children:t?"Available":"Unavailable"})})}function Xn({type:e}){const{t}=Y();return e==="LOGIN_DETECTED"||e==="INSTALLATION_FOUND"?n.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-success/10 px-2 py-0.5 text-[11px] font-medium text-success",children:[n.jsx(Ze,{size:11,"aria-hidden":"true"}),t("可用")]}):n.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground",children:[n.jsx(At,{size:11,"aria-hidden":"true"}),t("不可用")]})}function Gn({title:e,status:t,defaultOpen:r=!1,children:s}){const[o,a]=E.useState(r);return n.jsxs("div",{className:"rounded-lg border border-border",children:[n.jsxs("button",{type:"button",onClick:()=>a(i=>!i),"aria-expanded":o,className:"w-full flex items-center justify-between rounded-lg px-4 py-2.5 text-sm font-medium text-foreground transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-inset",children:[n.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[n.jsx("span",{children:e}),t]}),n.jsx(Qe,{size:14,"aria-hidden":"true",className:M("text-muted-foreground transition-transform motion-reduce:transition-none",o&&"rotate-180")})]}),o&&n.jsx("div",{className:"px-4 pb-4 space-y-3",children:s})]})}function Yn({isOpen:e,onClose:t,providerId:r,initialData:s,onSave:o}){const{locale:a,t:i}=Y(),{data:c}=_t(),d=Ot(),[l,m]=E.useState(s??{name:"",agentType:k.CLAUDE_CODE,runtimeType:B.CLI,config:Xe(),settings:"",env:[],simplified:{apiKey:{configured:!1,envKey:"ANTHROPIC_API_KEY"}},diagnostics:[],isDefault:!1}),[f,v]=E.useState(()=>JSON.stringify(l.config,null,2)),[y,P]=E.useState(""),[_,I]=E.useState(()=>l.diagnostics?.find(u=>u.field==="settings")?.message??""),[D,V]=E.useState(!1),[K,z]=E.useState(!1),[$,X]=E.useState(null),[F,R]=E.useState(()=>new Set),[b,A]=E.useState(()=>l.diagnostics?.filter(u=>u.code==="CONFLICT")??[]),[ne,ie]=E.useState({}),re=E.useRef(kn()),C=c?.[l.agentType]??be[l.agentType],J=C.apiBaseUrl?gn(l.simplified.apiBaseUrl):null,Z=Nn(l.config,C),se=l.config.permissionMode??l.config.acpPermissionMode,we=se==="AUTO_APPROVE"?"AUTO_APPROVE":"ASK",H=l.runtimeType===B.ACP&&se!==void 0&&se!=="ASK"&&se!=="AUTO_APPROVE"?i("ACP 权限策略必须为 ASK 或 AUTO_APPROVE"):null,Q=C.disableResponsesWebsocket,h=Q?rt(l.config,Q):null,N=l.simplified.reasoningEffort??"",O=N&&!C.reasoningEffort?.options?.includes(N)?i("请选择当前 Agent 支持的思考强度档位"):null,G=u=>{re.current.invalidate(),u&&m(u),z(!0),X(null)},U=u=>{G(u)},Re=()=>{K&&!window.confirm(i("存在未保存的修改,确定放弃吗?"))||t()},ct=u=>l.env.find(p=>te(p.key,u)),ue=(u,p,g="")=>{if(p.action!=="keep"){const x=u===C.apiBaseUrl?.path?"apiBaseUrl":u===C.apiKey?.path?"apiKey":null;x&&ie(j=>{const S={...j};return delete S[x],S})}U(x=>{const j=x.env.findIndex(vt=>te(vt.key,u)),S=[...x.env],ae=j>=0?S[j]:null,me={key:ae?.key??u,value:g,write:p,configured:ae?.configured??!1,sensitive:te(u,x.simplified.apiKey?.envKey)||!!ae?.sensitive||/key|token|secret|password|auth/i.test(u)};j>=0?S[j]=me:S.push(me);const ht=x.agentType===k.CLAUDE_CODE&&p.action!=="keep"&&(u===C.apiBaseUrl?.path||u===C.apiKey?.path);return{...x,env:S,settings:ht?Mn(x.settings,u):x.settings}})},ge=(u,p)=>{ie(g=>{if(!(u in g))return g;const x={...g};return delete x[u],x}),R(g=>new Set(g).add(u)),u==="apiBaseUrl"&&C.apiBaseUrl?.kind==="env"&&ue(C.apiBaseUrl.path,p?{action:"replace",value:p}:{action:"clear"},p),U(g=>{const x=vn(g,u,p,C);return x.config!==g.config&&v(JSON.stringify(x.config,null,2)),x})},dt=u=>{Q&&U(p=>{const g=En(p,Q,u);return v(JSON.stringify(g.config,null,2)),g})},ut=u=>{if(K&&!window.confirm(i("切换 Agent 类型会清空当前类型的配置,是否继续?")))return;const{agentType:p,runtimeType:g}=Bn(u),x=be[p],j=g===B.ACP?{permissionMode:"ASK"}:Xe(),S={...l,agentType:p,runtimeType:g,config:j,settings:"",env:[],simplified:{apiKey:x.apiKey?{configured:!1,envKey:x.apiKey.path}:void 0}};G(()=>S),v(JSON.stringify(j,null,2)),P(""),I(""),V(!1),R(new Set),A([]),ie({})},Ue=(u=!1)=>{let p=!y&&!Z.error&&!H&&!h?.error&&!O;const g=l.settings.trim();if(g&&(D||u))try{if(l.agentType===k.CODEX)de(g);else if(l.agentType===k.CLAUDE_CODE){const x=JSON.parse(g);if(!x||typeof x!="object"||Array.isArray(x))throw new Error(i("JSON 顶层必须是对象"))}I("")}catch(x){I(i("{format} 语法错误: {message}",{format:l.agentType===k.CODEX?"TOML":"JSON",message:x instanceof Error?x.message:String(x)})),p=!1}return p},Ke=()=>{const u=An(l.env),p=Object.fromEntries([...F].map(g=>[g,l.simplified[g]]));return{providerId:r,name:l.name,agentType:l.agentType,runtimeType:l.runtimeType,env:u,config:l.config,settings:l.settings,simplified:F.size>0?p:void 0,conflictResolutions:ne,isDefault:l.isDefault}},mt=()=>{if(J||!Ue(!1))return;const p={...Ke()};delete p.providerId,r&&delete p.runtimeType,o(p)},ft=()=>{if(J||b.length>0||!Ue(!0))return;const u=re.current.begin();X(null),d.mutate(Ke(),{onSuccess:p=>{re.current.isCurrent(u)&&X(p)},onError:p=>{re.current.isCurrent(u)&&X({ok:!1,stage:"connection",errorKind:"unknown",summary:ee(p,i("测试配置失败"))})}})};if(!e)return null;const pt=Ln(l.agentType),he=l.agentType===k.CODEX,Ne=he&&On(l.settings),oe=l.simplified.apiKey?.envKey??C.apiKey?.path,Ee=oe?ct(oe):void 0,Le=hn(Ee,!!l.simplified.apiKey?.configured,ne.apiKey),xt=Le==="advanced",Be=Le!=="unconfigured",gt=!l.name.trim()||!!J||!!y||!!Z.error||!!H||!!h?.error||!!O||!!_&&D||b.length>0;return n.jsx(n.Fragment,{children:n.jsx(Te,{isOpen:e,onClose:Re,title:i(s?"编辑 Provider":"新建 Provider"),className:"max-w-3xl",action:n.jsxs("div",{className:"flex w-full flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs(T,{variant:"outline",onClick:ft,disabled:d.isPending||!!J||!!y||!!Z.error||!!H||!!h?.error||!!O||!!_&&D||b.length>0,children:[d.isPending?n.jsx(wt,{className:"animate-spin"}):n.jsx(qt,{}),d.isPending?i("测试中..."):i("测试配置")]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(T,{variant:"outline",onClick:Re,children:i("取消")}),n.jsx(T,{onClick:mt,disabled:gt,children:i("保存 Provider")})]})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[n.jsxs("div",{children:[n.jsx("label",{htmlFor:"provider-name",className:"mb-1 block text-xs font-medium text-foreground",children:i("名称")}),n.jsx(le,{id:"provider-name",value:l.name,onChange:u=>U(p=>({...p,name:u.target.value})),placeholder:i("例如: Claude Code (官方)")})]}),!s&&n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("Agent 类型")}),n.jsx(ze,{value:Ge(l.agentType,l.runtimeType),onChange:ut,options:Object.values(k).flatMap(u=>Mt[u].map(p=>({value:Ge(u,p),label:xe(u,p),icon:n.jsx(pe,{agentType:u,className:"size-4"})}))),placeholder:i("选择 Agent 类型")})]}),s&&n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("Agent 类型")}),n.jsxs("div",{className:"flex h-9 items-center gap-2 rounded-lg border border-neutral-200 bg-muted/30 px-3 text-sm text-muted-foreground",children:[n.jsx(pe,{agentType:l.agentType,className:"size-4"}),n.jsx("span",{className:"min-w-0 truncate",children:xe(l.agentType,l.runtimeType)})]})]})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("input",{type:"checkbox",id:"isDefault",checked:l.isDefault,onChange:u=>U(p=>({...p,isDefault:u.target.checked})),className:"h-4 w-4 rounded border-border accent-primary"}),n.jsx("label",{htmlFor:"isDefault",className:"text-sm text-foreground",children:i("设为该类型的默认 Provider")})]}),n.jsxs("div",{className:"space-y-3 rounded-lg border border-border bg-muted/20 p-4",children:[n.jsx("div",{className:"text-sm font-medium text-foreground",children:i("基本配置")}),l.runtimeType===B.ACP&&n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("权限策略")}),n.jsx(ze,{value:we,onChange:u=>U(p=>{const g={...p.config,permissionMode:u};delete g.acpPermissionMode;const x={...p,config:g};return v(JSON.stringify(x.config,null,2)),x}),options:[{value:"ASK",label:i("每次询问")},{value:"AUTO_APPROVE",label:i("自动批准")}]}),H&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:H})]}),C.apiBaseUrl&&!Ne&&n.jsxs("div",{children:[n.jsx("label",{htmlFor:"provider-api-url",className:"mb-1 block text-xs font-medium text-foreground",children:i("API 地址")}),n.jsx(le,{id:"provider-api-url",type:"url",value:l.simplified.apiBaseUrl??"",onChange:u=>ge("apiBaseUrl",u.target.value),placeholder:C.apiBaseUrl.placeholder,"aria-invalid":!!J,"aria-describedby":J?"provider-api-url-error":void 0}),J&&n.jsx("p",{id:"provider-api-url-error",role:"alert",className:"mt-1 text-xs text-destructive",children:i("请输入以 http:// 或 https:// 开头的完整 API 地址")})]}),C.apiKey&&!Ne&&(l.agentType!==k.CODEX||!!l.simplified.apiKey)&&n.jsxs("div",{children:[n.jsxs("div",{className:"mb-1 flex items-center justify-between gap-3",children:[n.jsx("label",{htmlFor:"provider-api-key",className:"text-xs font-medium text-foreground",children:"API Key"}),n.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",children:[n.jsx(Xt,{size:12}),i(xt?"由高级配置管理":Be?"已配置":"未配置")]})]}),Ee?.write.action==="replace"||!Be?n.jsxs("div",{className:"flex gap-2",children:[n.jsx(le,{id:"provider-api-key",type:"password",autoComplete:"new-password",value:Ee?.value??"",onChange:u=>ue(oe,{action:"replace",value:u.target.value},u.target.value),placeholder:i("输入 API Key")}),l.simplified.apiKey?.configured&&n.jsx(T,{variant:"outline",size:"sm",onClick:()=>ue(oe,{action:"keep"}),children:i("取消替换")})]}):n.jsxs("div",{className:"flex gap-2",children:[n.jsx(T,{variant:"outline",size:"sm",onClick:()=>ue(oe,{action:"replace",value:""}),children:i("替换")}),n.jsx(T,{variant:"outline",size:"sm",onClick:()=>{window.confirm(i("确定清除此 API Key?"))&&ue(oe,{action:"clear"})},children:i("清除")})]})]}),n.jsxs("div",{children:[n.jsx("label",{htmlFor:"provider-model",className:"mb-1 block text-xs font-medium text-foreground",children:i("模型")}),l.agentType===k.CURSOR_AGENT?n.jsx(un,{value:l.simplified.model??"",onChange:u=>ge("model",u??"")}):n.jsx(le,{id:"provider-model",value:l.simplified.model??"",onChange:u=>ge("model",u.target.value),placeholder:C.model.placeholder})]}),C.reasoningEffort&&n.jsx(xn,{options:(C.reasoningEffort.options??[]).map(u=>({value:u,label:i(Fn(u))})),value:N,onChange:u=>ge("reasoningEffort",u),label:i("思考强度"),efficiencyLabel:i("更高效"),intelligenceLabel:i("更智能"),followCliLabel:i("跟随 CLI"),currentLabel:i("当前"),error:O}),Q&&h&&n.jsxs("section",{className:"border-t border-border pt-3",children:[n.jsxs("div",{className:"flex items-center justify-between gap-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("div",{className:"text-xs font-medium text-foreground",children:i("禁用 WebSocket")}),n.jsx("div",{className:"mt-0.5 text-xs text-muted-foreground",children:i(Ne?"当前原生 Provider 已使用非 WebSocket 传输;此开关不会添加额外运行时覆盖。":"仅禁用 Codex Responses API 的 WebSocket 传输;新启动和后续继续的请求将使用 HTTP。")})]}),n.jsx(He,{checked:h.enabled,disabled:!!h.error,onCheckedChange:dt,"aria-label":i("禁用 WebSocket")})]}),h.error&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:i("禁用 WebSocket 字段必须为 true 或 false,请在运行配置 JSON 中修正。")})]})]}),$&&n.jsx(pn,{result:$}),b.length>0&&n.jsxs("div",{className:"space-y-3 rounded-lg border border-warning/30 bg-warning/10 p-4",children:[n.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[n.jsx(Oe,{size:16,className:"text-warning"}),i("需要解决配置冲突")]}),b.map(u=>n.jsxs("div",{className:"flex flex-col gap-2 rounded-md border border-warning/20 bg-background/70 p-3 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"text-xs text-muted-foreground",children:[n.jsx("span",{className:"font-medium text-foreground",children:i($n(u.field))})," · ",i("简化字段与高级配置值不同")]}),n.jsx("div",{className:"flex flex-wrap gap-2",children:["simple","advanced"].map(p=>n.jsx(T,{variant:"outline",size:"sm",onClick:()=>{const g=u.field,x=In(l,g,p,C);U(()=>x),v(JSON.stringify(x.config,null,2)),ie(j=>({...j,[g]:p})),p==="advanced"&&(g==="apiBaseUrl"||g==="model"||g==="reasoningEffort")&&R(j=>{const S=new Set(j);return S.delete(g),S}),A(j=>j.filter(S=>S.field!==g))},children:i(p==="simple"?"采用简化值":"保留高级值")},p))})]},u.field))]}),n.jsxs(Gn,{title:i("高级配置"),defaultOpen:!!y||!!_||!!Z.error||b.length>0,children:[n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("运行配置 (JSON)")}),n.jsx($e,{value:f,onChange:u=>{const p=u.target.value;v(p);try{const g=JSON.parse(p);if(!g||typeof g!="object"||Array.isArray(g))throw new Error(i("JSON 顶层必须是对象"));const x=g;P(""),R(j=>{const S=new Set(j).add("model");return C.reasoningEffort?.kind==="config"&&S.add("reasoningEffort"),S}),U(j=>({...j,config:x,simplified:_n(j.simplified,x,C)}))}catch(g){G(),P(g instanceof Error?g.message:i("JSON 语法错误"))}},rows:7,className:"font-mono","aria-invalid":!!y}),y&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:y}),Z.error&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:i("执行权限字段必须为 true 或 false,请在运行配置 JSON 中修正。")})]}),n.jsxs("div",{className:"border-t border-border pt-3",children:[n.jsx("label",{className:"mb-2 block text-xs font-medium text-foreground",children:i("环境变量")}),n.jsxs("p",{className:"text-xs text-muted-foreground mb-2",children:[i("注入到 Agent 进程的环境变量。Codex 的")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"env_key"})," ",i("指定的是变量名,实际值需在此处设置。")]}),n.jsxs("div",{className:"space-y-2",children:[l.env.map((u,p)=>u.write.action!=="clear"&&n.jsxs("div",{className:"flex gap-2 items-center",children:[n.jsx(le,{value:u.key,disabled:u.configured,onChange:g=>{const x=g.target.value;U(j=>{const S=[...j.env],ae=S[p];if(!ae)return j;const me={...ae,key:x};return S[p]={...me,sensitive:ye(me,j.simplified)},{...j,env:S}})},placeholder:i("变量名,如 AZURE_OPENAI_API_KEY"),className:"flex-1 py-1.5 font-mono"}),n.jsx(le,{value:u.value,type:ye(u,l.simplified)?"password":"text",onChange:g=>{const x=[...l.env];x[p]={...x[p],value:g.target.value,write:{action:"replace",value:g.target.value}},U(j=>({...j,env:x,simplified:u.key===C.apiBaseUrl?.path?{...j.simplified,apiBaseUrl:g.target.value}:j.simplified})),u.key===C.apiBaseUrl?.path&&R(j=>new Set(j).add("apiBaseUrl"))},placeholder:u.configured&&u.write.action==="keep"?i("已配置,输入新值以替换"):i("值"),className:"flex-1 py-1.5 font-mono"}),n.jsx("button",{type:"button",onClick:()=>{const g=[...l.env];u.configured?g[p]={...u,value:"",write:{action:"clear"}}:g.splice(p,1),U(x=>({...x,env:g,simplified:u.key===C.apiBaseUrl?.path?{...x.simplified,apiBaseUrl:""}:x.simplified})),u.key===C.apiBaseUrl?.path&&R(x=>new Set(x).add("apiBaseUrl"))},"aria-label":i("删除"),className:"rounded-md p-1.5 text-muted-foreground transition-colors hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:n.jsx(et,{size:14})})]},p)),n.jsxs(T,{variant:"outline",size:"sm",onClick:()=>U(u=>({...u,env:[...u.env,{key:"",value:"",write:{action:"replace",value:""},configured:!1,sensitive:!1}]})),children:[n.jsx(Se,{size:12,className:"mr-1"}),i("添加变量")]})]})]}),pt&&n.jsxs("div",{className:"border-t border-border pt-3",children:[n.jsx("label",{className:"mb-2 block text-xs font-medium text-foreground",children:i(he?"Agent 原生配置 (config.toml)":"Agent 原生配置 (settings.json)")}),n.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:he?n.jsxs(n.Fragment,{children:[i("直接填写 Codex")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"config.toml"})," ",i("格式的配置片段,由当前 Runtime 注入。不会修改你的")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"~/.codex/config.toml"})," ",i("文件。")]}):n.jsxs(n.Fragment,{children:[i("对应 Claude Code 的")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"~/.claude/settings.json"}),",",i("由当前 Runtime 注入。在")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"env"})," ",i("中设置 ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL 等。")]})}),n.jsx($e,{value:l.settings,onChange:u=>{const p=u.target.value;V(!0),I("");let g;if(he)try{g=Ve(l.simplified,p,k.CODEX),R(x=>new Set(x).add("reasoningEffort"))}catch{}U(x=>{const j=g===void 0?x.simplified:Ve(x.simplified,p,k.CODEX,new Set(x.env.flatMap(S=>S.write.action==="clear"?[]:S.write.action==="replace"?S.value?[S.key]:[]:S.configured?[S.key]:[])));return{...x,settings:p,env:Sn(x.env,j),simplified:j}})},rows:10,className:"font-mono",placeholder:Kn(l.agentType,a),"aria-invalid":!!_}),_&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:_})]})]})]})})})}function Zn({isOpen:e,onClose:t,onConfirm:r,acknowledged:s,onAcknowledgedChange:o,isLoading:a}){const{t:i}=Y();return n.jsx(Te,{isOpen:e,onClose:t,title:i("导出 Provider 备份"),className:"max-w-xl",action:n.jsxs(n.Fragment,{children:[n.jsx(T,{variant:"outline",onClick:t,disabled:a,children:i("取消")}),n.jsx(T,{onClick:r,disabled:!s||a,children:i(a?"导出中...":"导出备份")})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-start gap-2.5 rounded-lg border border-warning/30 bg-warning/10 px-4 py-3 text-sm text-foreground",children:[n.jsx(Oe,{size:15,className:"mt-0.5 shrink-0 text-warning","aria-hidden":"true"}),n.jsx("span",{children:i("导出的备份文件将包含完整的 Provider 配置,包括环境变量、CLI settings 等敏感信息。任何拿到文件的人都可能直接使用这些 Provider。")})]}),n.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[n.jsx("p",{children:i("这个功能用于备份和迁移,不用于分享配置。")}),n.jsx("p",{children:i("导出内容只包含用户层配置:自定义 Provider,以及对内置 Provider 的覆盖。")})]}),n.jsxs("label",{className:"flex items-start gap-3 rounded-lg border border-border px-4 py-3 text-sm text-foreground",children:[n.jsx("input",{type:"checkbox",checked:s,onChange:c=>o(c.target.checked),className:"mt-0.5 h-4 w-4 rounded border-border accent-primary"}),n.jsx("span",{children:i("我已知晓该备份文件包含敏感信息,只会保存在安全位置。")})]})]})})}function Hn({isOpen:e,onClose:t,preview:r,backup:s,onConfirm:o,isLoading:a}){const{t:i}=Y();if(!r||!s)return null;const c=r.summary.create+r.summary.overwrite,d=[...r.items].sort((l,m)=>{const f={CREATE:0,OVERWRITE:1,SKIP:2};return f[l.action]-f[m.action]});return n.jsx(Te,{isOpen:e,onClose:t,title:i("导入 Provider 备份"),className:"max-w-3xl",action:n.jsxs(n.Fragment,{children:[n.jsx(T,{variant:"outline",onClick:t,disabled:a,children:i("取消")}),n.jsx(T,{onClick:o,disabled:c===0||a,children:a?i("导入中..."):i("确认导入 {count} 项",{count:c})})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"rounded-lg border border-border bg-muted/40 px-4 py-3 text-sm text-muted-foreground",children:[n.jsx("div",{children:i("导出时间:{value}",{value:new Date(s.exportedAt).toLocaleString()})}),n.jsx("div",{children:i("模式:完整备份(含敏感信息)")}),n.jsx("div",{children:i("文件内 Provider 数量:{count}",{count:s.providers.length})})]}),n.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[n.jsxs("div",{className:"rounded-lg border border-success/25 bg-success/10 px-4 py-3",children:[n.jsx("div",{className:"text-xs font-medium text-success",children:i("新增")}),n.jsx("div",{className:"text-lg font-semibold text-foreground",children:r.summary.create})]}),n.jsxs("div",{className:"rounded-lg border border-warning/25 bg-warning/10 px-4 py-3",children:[n.jsx("div",{className:"text-xs font-medium text-warning",children:i("覆盖")}),n.jsx("div",{className:"text-lg font-semibold text-foreground",children:r.summary.overwrite})]}),n.jsxs("div",{className:"rounded-lg border border-border bg-muted/40 px-4 py-3",children:[n.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:i("跳过")}),n.jsx("div",{className:"text-lg font-semibold text-foreground",children:r.summary.skip})]})]}),n.jsx("div",{className:"max-h-[420px] overflow-y-auto space-y-3 pr-1",children:d.map(l=>{const m=qn(l.action);return n.jsxs("div",{className:"rounded-lg border border-border px-4 py-3",children:[n.jsx("div",{className:"flex items-center justify-between gap-3",children:n.jsxs("div",{className:"min-w-0",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h4",{className:"truncate text-sm font-medium text-foreground",children:l.incoming.name}),n.jsx("span",{className:`inline-flex rounded-full px-2 py-0.5 text-[11px] font-medium ${m.className}`,children:i(m.label)})]}),n.jsxs("div",{className:"mt-1 flex min-w-0 items-center gap-1.5 text-xs text-muted-foreground",children:[n.jsx(pe,{agentType:l.incoming.agentType,className:"size-3.5"}),n.jsx("span",{className:"min-w-0 truncate",children:xe(l.incoming.agentType,l.incoming.runtimeType)})," · ",n.jsx("code",{className:"rounded bg-muted px-1 py-0.5",children:l.incoming.id})]})]})}),l.action==="OVERWRITE"&&l.existing&&n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:i("将覆盖当前已有的 Provider:{name}",{name:l.existing.name})}),l.action==="SKIP"&&n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:i("当前同 ID Provider 配置一致,本次不会重复写入。")}),l.action==="CREATE"&&n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:i("当前不存在同 ID Provider,将直接新增。")})]},l.incoming.id)})})]})})}function Qn({item:e,onEdit:t,onDelete:r}){const{t:s}=Y(),o=e.provider,a=e.availability,i=ot(o.agentType,o.config),c=be[o.agentType],d=Object.entries(i).filter(([m])=>m!=="cmd"&&m!==c.executionPermission.path),l=Object.keys(o.redactedEnv||{});return n.jsxs("div",{className:"min-w-0 space-y-6",children:[n.jsxs("div",{className:"flex min-w-0 flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[n.jsx("h3",{className:"min-w-0 truncate text-base font-semibold text-foreground",children:o.name}),n.jsx(Xn,{type:a.type})]}),n.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[n.jsxs("span",{className:"inline-flex min-w-0 items-center gap-1.5",children:[n.jsx(pe,{agentType:o.agentType,className:"size-3.5"}),n.jsx("span",{className:"truncate",children:xe(o.agentType,o.runtimeType)})]}),o.isDefault&&n.jsx("span",{className:"rounded-full bg-primary/[0.06] px-2 py-0.5 text-[11px] font-medium text-primary",children:s("默认")}),o.builtIn&&n.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground",children:s("内置")})]})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 sm:shrink-0",children:[n.jsxs(T,{size:"sm",variant:"outline",onClick:t,children:[n.jsx(Jt,{size:13}),s("编辑")]}),n.jsxs(T,{size:"sm",variant:o.builtIn?"outline":"destructive",onClick:r,disabled:o.deletable===!1,children:[o.builtIn?n.jsx(kt,{size:13}):n.jsx(et,{size:13}),o.builtIn?s("恢复默认"):s("删除")]})]})]}),d.length>0&&n.jsxs("div",{children:[n.jsx(Pe,{className:"mb-3",children:s("运行配置")}),n.jsx("div",{className:"grid gap-px overflow-hidden rounded-lg border border-border bg-border/60",children:d.map(([m,f])=>n.jsxs("div",{className:"flex min-w-0 flex-col items-start gap-1 bg-background px-4 py-2.5 sm:flex-row sm:items-center sm:gap-4",children:[n.jsx("span",{className:"min-w-0 break-words text-[13px] text-muted-foreground sm:w-32 sm:shrink-0",children:s(at[m]??m)}),n.jsx("span",{className:"min-w-0 max-w-full break-all font-mono text-[13px] text-foreground",children:zn(m,f)})]},m))})]}),l.length>0&&n.jsxs("div",{children:[n.jsx(Pe,{className:"mb-3",children:s("环境变量")}),n.jsx("div",{className:"grid gap-px overflow-hidden rounded-lg border border-border bg-border/60",children:l.map(m=>n.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2 bg-background px-4 py-2.5 sm:gap-4",children:[n.jsx("span",{className:"min-w-0 max-w-full break-all font-mono text-[13px] text-foreground",children:m}),n.jsx("span",{className:"text-[13px] text-muted-foreground","aria-label":"hidden",children:"•••••"})]},m))})]}),o.settings?.trim()&&n.jsxs("div",{children:[n.jsx(Pe,{className:"mb-3",children:s("Agent 原生配置")}),n.jsx("div",{className:"rounded-lg border border-border bg-muted/40 p-4",children:n.jsx("pre",{className:"max-h-[200px] overflow-y-auto whitespace-pre-wrap break-all font-mono text-xs text-muted-foreground",children:o.settings})})]}),d.length===0&&l.length===0&&!o.settings?.trim()&&n.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:s('该 Provider 未配置额外参数。点击"编辑"添加运行配置、环境变量或 Agent 原生配置。')})]})}function hi(){const{t:e}=Y(),{data:t,isLoading:r}=Tt(),s=It(),o=Dt(),a=Rt(),i=Ut(),c=Kt(),d=Lt(),l=E.useRef(null),[m,f]=E.useState(null),[v,y]=E.useState(null),[P,_]=E.useState(null),[I,D]=E.useState(!1),[V,K]=E.useState(!1),[z,$]=E.useState(null),[X,F]=E.useState(!1),R=t??[],b=m??R[0]?.provider.id??null,A=h=>{s.mutate(h,{onSuccess:()=>y(null),onError:N=>L.error(ee(N,e("创建 Provider 失败")))})},ne=(h,N)=>{o.mutate({id:h,data:N},{onSuccess:()=>y(null),onError:O=>L.error(ee(O,e("更新 Provider 失败")))})},ie=h=>{if(!(h.deletable??!h.builtIn)){L.error(e("系统内置 Provider 不可删除"));return}_({id:h.id,name:h.name,builtIn:h.builtIn})},re=()=>{P&&a.mutate(P.id,{onSuccess:()=>{L.success(P.builtIn?e("已恢复默认 Provider 配置"):e("Provider 已删除")),b===P.id&&f(null),_(null),F(!1)},onError:h=>L.error(ee(h,e("删除 Provider 失败")))})},C=()=>{D(!1),K(!1)},J=()=>$(null),Z=()=>{i.mutate(void 0,{onSuccess:h=>{Wn(Jn(h.exportedAt),h),L.success(e("Provider 备份已导出")),C()},onError:h=>L.error(ee(h,e("导出 Provider 备份失败")))})},se=()=>{l.current&&(l.current.value="",l.current.click())},we=async h=>{const N=h.target.files?.[0];if(h.target.value="",!N)return;let O;try{O=JSON.parse(await N.text())}catch{L.error(e("备份文件不是有效的 JSON"));return}c.mutate(O,{onSuccess:G=>$({backup:O,preview:G}),onError:G=>L.error(ee(G,e("导入预览失败")))})},H=()=>{z&&d.mutate(z.backup,{onSuccess:h=>{const N=h.summary.create+h.summary.overwrite;L.success(N===0?e("导入完成,当前配置无需变更"):e("导入完成:新增 {create},覆盖 {overwrite},跳过 {skip}",{create:h.summary.create,overwrite:h.summary.overwrite,skip:h.summary.skip})),J()},onError:h=>L.error(ee(h,e("导入 Provider 备份失败")))})},Q=h=>{const N=h.provider,O=be[N.agentType],G=Cn(N,O);y({id:N.id,data:{name:N.name,agentType:N.agentType,runtimeType:N.runtimeType===B.ACP?B.ACP:B.CLI,config:ot(N.agentType,N.config),settings:N.settings??"",env:G,simplified:N.simplified??{},diagnostics:N.diagnostics,isDefault:N.isDefault}})};return r?n.jsx(Me,{className:"max-w-5xl",children:n.jsx(Nt,{})}):n.jsxs(Me,{className:"max-w-5xl",children:[n.jsx("input",{ref:l,type:"file",accept:".json,application/json",className:"hidden",onChange:we}),n.jsx(Et,{title:e("Agent 配置"),actions:n.jsxs(n.Fragment,{children:[n.jsxs(T,{variant:"outline",size:"sm",onClick:se,disabled:c.isPending||d.isPending,children:[n.jsx(Ft,{size:13}),e("导入")]}),n.jsxs(T,{variant:"outline",size:"sm",onClick:()=>D(!0),disabled:i.isPending,children:[n.jsx(Pt,{size:13}),e("导出")]}),n.jsxs(T,{size:"sm",onClick:()=>y({}),children:[n.jsx(Se,{size:13,className:"mr-1"}),e("新建")]})]})}),R.length===0?n.jsx(Ct,{icon:St,message:e("暂无 Agent 配置"),action:n.jsxs(T,{size:"sm",onClick:()=>y({}),children:[n.jsx(Se,{size:13,className:"mr-1"}),e("新建配置")]})}):n.jsx($t,{items:R,selectedId:b,onSelectItem:h=>{f(h),F(!0)},getItemId:h=>h.provider.id,mobileShowDetail:X,onMobileBack:()=>F(!1),renderListItem:(h,N)=>{const O=h.provider;return n.jsxs(n.Fragment,{children:[n.jsx(Vn,{type:h.availability.type}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("div",{className:"truncate text-[13px] font-medium",children:O.name}),n.jsxs("div",{className:M("flex min-w-0 items-center gap-1.5 text-[11px]",N?"text-primary-foreground/60":"text-muted-foreground"),children:[n.jsx(pe,{agentType:O.agentType,className:"size-3.5",fallbackClassName:N?"text-primary-foreground/70":"text-muted-foreground"}),n.jsx("span",{className:"min-w-0 truncate",children:xe(O.agentType,O.runtimeType)})]})]}),O.isDefault&&n.jsx("span",{className:M("shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium",N?"bg-white/20 text-primary-foreground":"bg-primary/[0.06] text-primary"),children:e("默认")})]})},renderDetail:h=>h?n.jsx("div",{className:"min-w-0 p-5",children:n.jsx(Qn,{item:h,onEdit:()=>Q(h),onDelete:()=>ie(h.provider)})}):n.jsx("div",{className:"py-16 text-center text-sm text-muted-foreground",children:e("选择一个 Provider 查看详情")})}),v&&n.jsx(Yn,{isOpen:!0,onClose:()=>y(null),providerId:v.id,initialData:v.data,onSave:h=>{v.id?ne(v.id,h):A(h)}}),n.jsx(Bt,{isOpen:P!==null,onClose:()=>{a.isPending||_(null)},onConfirm:re,title:P?.builtIn?e("恢复默认 Provider"):e("删除 Provider"),description:P?.builtIn?e('确定删除 "{name}" 的自定义覆盖,并恢复系统默认配置?',{name:P?.name}):e('确定删除 "{name}"?此操作不可撤销。',{name:P?.name}),confirmText:P?.builtIn?e("恢复默认"):e("删除"),cancelText:e("取消"),variant:"danger",isLoading:a.isPending}),n.jsx(Zn,{isOpen:I,onClose:C,onConfirm:Z,acknowledged:V,onAcknowledgedChange:K,isLoading:i.isPending}),n.jsx(Hn,{isOpen:!!z,onClose:J,preview:z?.preview??null,backup:z?.backup??null,onConfirm:H,isLoading:d.isPending})]})}export{Yn as ProviderFormModal,hi as ProviderSettingsPage};
@@ -1 +0,0 @@
1
- import{U as a,V as n}from"./index-Da9mzleR.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{k as c}from"./index-RYlllU6n.js";const e=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],t=c("check",e);export{t as C};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-B0MC9Ojc.js";import{_ as i}from"./index-Da9mzleR.js";import"./chunk-FMBD7UC4-k90hkOQq.js";import"./chunk-ND2GUHAM-CX2-qxPx.js";import"./chunk-55IACEB6-DejCglMr.js";import"./chunk-2J33WTMH-DRf_miP4.js";import"./index-RYlllU6n.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-B0MC9Ojc.js";import{_ as i}from"./index-Da9mzleR.js";import"./chunk-FMBD7UC4-k90hkOQq.js";import"./chunk-ND2GUHAM-CX2-qxPx.js";import"./chunk-55IACEB6-DejCglMr.js";import"./chunk-2J33WTMH-DRf_miP4.js";import"./index-RYlllU6n.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{conf as i,language as t}from"./typescript-SLYiKRhJ.js";import"./monaco-DX9iObLO.js";import"./ProjectKanbanPage-j2v5fLfg.js";import"./index-RYlllU6n.js";import"./mermaid-NOHMQCX5-orMHhlAj.js";import"./chevron-right-CkcSaX8x.js";import"./chevron-down-BXYCSpWd.js";import"./confirm-dialog-BJwzwwOk.js";import"./modal-ZYdX5Krr.js";import"./Icons-CyNNz4Z5.js";import"./CreateTaskInput-ByeWDjc8.js";import"./AgentLogo-C190Z6bw.js";import"./check-BVOtZt28.js";import"./use-projects-D_Sq7ahS.js";import"./MemberAvatar-BPoYS6Il.js";import"./use-providers-SSHcslI-.js";import"./trash-2-BNiAEW-6.js";import"./useNormalizedLogs-DeA-fso_.js";import"./folder-picker-CioQjSzV.js";import"./circle-alert-ClX4sQ2K.js";import"./message-square-CStQg7sr.js";import"./layers-BZMh9pqm.js";import"./chevron-up-Y8L6pbzc.js";import"./select-B9kjO67b.js";import"./textarea-BB3UoYxg.js";import"./upload-BLLmywZY.js";import"./arrow-left-CB4qTjQs.js";import"./copy-jQAntc98.js";const A=i,B={defaultToken:"invalid",tokenPostfix:".js",keywords:["break","case","catch","class","continue","const","constructor","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","get","if","import","in","instanceof","let","new","null","return","set","static","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"],typeKeywords:[],operators:t.operators,symbols:t.symbols,escapes:t.escapes,digits:t.digits,octaldigits:t.octaldigits,binarydigits:t.binarydigits,hexdigits:t.hexdigits,regexpctl:t.regexpctl,regexpesc:t.regexpesc,tokenizer:t.tokenizer};export{A as conf,B as language};
@@ -1 +0,0 @@
1
- import{s as e,b as r,a,S as s}from"./chunk-AQP2D5EJ-D9f4hbMX.js";import{_ as i}from"./index-Da9mzleR.js";import"./chunk-55IACEB6-DejCglMr.js";import"./chunk-2J33WTMH-DRf_miP4.js";import"./index-RYlllU6n.js";var p={parser:a,get db(){return new s(2)},renderer:r,styles:e,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{p as diagram};